diff --git a/twake/backend/core/.gitignore b/twake/backend/core/.gitignore deleted file mode 100755 index 086e1239..00000000 --- a/twake/backend/core/.gitignore +++ /dev/null @@ -1,138 +0,0 @@ -### PhpStorm ### -# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm -# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 - -*.DS_Store - -# User-specific stuff: -.idea/**/workspace.xml -.idea/**/tasks.xml -.idea/dictionaries - -# Sensitive or high-churn files: -.idea/**/dataSources/ -.idea/**/dataSources.ids -.idea/**/dataSources.xml -.idea/**/dataSources.local.xml -.idea/**/sqlDataSources.xml -.idea/**/dynamic.xml -.idea/**/uiDesigner.xml - -# Gradle: -.idea/**/gradle.xml -.idea/**/libraries - -.idea/ - -# CMake -cmake-build-debug/ - -# Mongo Explorer plugin: -.idea/**/mongoSettings.xml - -## File-based project format: -*.iws - -## Plugin-specific files: - -# IntelliJ -/out/ - -# mpeltonen/sbt-idea plugin -.idea_modules/ - -# JIRA plugin -atlassian-ide-plugin.xml - -# Cursive Clojure plugin -.idea/replstate.xml - -# Ruby plugin and RubyMine -/.rakeTasks - -# Crashlytics plugin (for Android Studio and IntelliJ) -com_crashlytics_export_strings.xml -crashlytics.properties -crashlytics-build.properties -fabric.properties - -### PhpStorm Patch ### -# Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721 - -# *.iml -# modules.xml -# .idea/misc.xml -# *.ipr - -# Sonarlint plugin -.idea/sonarlint - -### Symfony ### -# Cache and logs (Symfony2) -/app/cache/* -/app/logs/* -!app/cache/.gitkeep -!app/logs/.gitkeep - -# Email spool folder -/app/spool/* - -# Cache, session files and logs (Symfony3) -/var/cache/* -/var/logs/* -/var/sessions/* -!var/cache/.gitkeep -!var/logs/.gitkeep -!var/sessions/.gitkeep - -# Parameters -/app/config/parameters.yml -/app/config/parameters.ini - -# Managed by Composer -/app/bootstrap.php.cache -/var/bootstrap.php.cache -/bin/* -!bin/console -!bin/symfony_requirements - -# Assets and user uploads -/web/bundles/ -/web/uploads/ -/web/upload/ -/web/public/ - -# PHPUnit -/app/phpunit.xml -/phpunit.xml - -# Build data -/build/ - -# Backup entities generated with doctrine:generate:entities command -**/Entity/*~ - -### Symfony Patch ### -/web/css/ -/web/js/ -docker-compose.yml - -### Twake specific ### -/build/ -/vendor/ - -### AWS ### -/app/config/aws_config.yml - -### Test ### -/tests/code_coverage/ -/web/detached/* -/drive/* -/web/medias/public/uploads/* -/app/Configuration/Parameters.php -/app/Configuration/certs/apns_prod.pem -/app/Configuration/certs/apns_dev.pem -/cache/ -/backend/core/vendor/ - -cassandra.log diff --git a/twake/backend/core/app.php b/twake/backend/core/app.php deleted file mode 100755 index 397c6bff..00000000 --- a/twake/backend/core/app.php +++ /dev/null @@ -1,148 +0,0 @@ -getBundles(); - $bundles_instances = []; - - $this->app_root_dir = realpath(__DIR__ . "/../"); - $this->routing_service = new Routing($this); - $this->container_service = new Container($this); - $this->services_service = new Services($this); - $this->providers_service = new Providers($this, new \Configuration\Providers()); - - // Import configuration - $this->container_service->import(new Configuration($this), "configuration"); - $this->container_service->import(new Parameters($this), "parameters"); - - $this->counter = new Counter($this); - - // Require and instanciate all defined bundles - foreach ($bundles as $bundle) { - - if (file_exists(__DIR__ . "/../src/" . $bundle . "/Bundle.php")) { - require_once __DIR__ . "/../src/" . $bundle . "/Bundle.php"; - $class_name = str_replace("/", "\\", $bundle) . "\\Bundle"; - $bundles_instances[] = new $class_name($this); - } else { - error_log("No such bundle " . $bundle); - } - - } - - // Init routing for all bundles - foreach ($bundles_instances as $bundle_instance) { - $bundle_instance->init(); - } - - } - - public function getRouting() - { - return $this->routing_service; - } - - public function getContainer() - { - return $this->container_service; - } - - public function getServices() - { - return $this->services_service; - } - - public function getProviders() - { - return $this->providers_service; - } - - public function getAppRootDir() - { - return $this->app_root_dir; - } - - public function getCommands() - { - return $this->commands; - } - - public function getCounter() - { - return $this->counter; - } - - public function runCli() - { - if (php_sapi_name() == "cli") { - $this->commands = new CommandsManager($this, (new Commands())->commands); - ($this->commands)->run(); - } - } - - public function run() - { - try{ - SimpleRouter::start(); - }catch(\Exception $err){ - error_log($err); - http_response_code(500); - echo '{"error": "'.$err->getMessage().'"}'; - } - } -} diff --git a/twake/backend/core/app/App.php b/twake/backend/core/app/App.php deleted file mode 100755 index 398f79d9..00000000 --- a/twake/backend/core/app/App.php +++ /dev/null @@ -1,160 +0,0 @@ -getBundles(); - $bundles_instances = []; - - $this->app_root_dir = realpath(__DIR__ . "/../"); - $this->routing_service = new Routing($this); - $this->container_service = new Container($this); - $this->services_service = new Services($this); - $this->providers_service = new Providers($this, new \Configuration\Providers()); - - // Import configuration - $this->container_service->import(new Configuration($this), "configuration"); - $this->container_service->import(new Parameters($this), "parameters"); - - $dsn = $this->getContainer()->getParameter("env.sentry"); - if($dsn){ - \Sentry\init(['dsn' => $dsn, 'error_types' => (E_ERROR | E_WARNING | E_PARSE)]); - } - - $segment = $this->getContainer()->getParameter("env.segment"); - $GLOBALS["segment_enabled"] = false; - if($segment){ - $GLOBALS["segment_enabled"] = true; - \Segment::init($segment); - } - - $this->counter = new Counter($this); - - // Require and instanciate all defined bundles - foreach ($bundles as $bundle) { - - if (file_exists(__DIR__ . "/../src/" . $bundle . "/Bundle.php")) { - require_once __DIR__ . "/../src/" . $bundle . "/Bundle.php"; - $class_name = str_replace("/", "\\", $bundle) . "\\Bundle"; - $bundles_instances[] = new $class_name($this); - } else { - error_log("No such bundle " . $bundle); - } - - } - - // Init routing for all bundles - foreach ($bundles_instances as $bundle_instance) { - $bundle_instance->init(); - } - - } - - public function getRouting() - { - return $this->routing_service; - } - - public function getContainer() - { - return $this->container_service; - } - - public function getServices() - { - return $this->services_service; - } - - public function getProviders() - { - return $this->providers_service; - } - - public function getAppRootDir() - { - return $this->app_root_dir; - } - - public function getCommands() - { - return $this->commands; - } - - public function getCounter() - { - return $this->counter; - } - - public function runCli() - { - if (php_sapi_name() == "cli") { - $this->commands = new CommandsManager($this, (new Commands())->commands); - ($this->commands)->run(); - } - } - - public function run() - { - try{ - SimpleRouter::start(); - }catch(\Exception $err){ - error_log($err); - http_response_code(500); - echo '{"error": "'.$err->getMessage().'"}'; - } - } -} diff --git a/twake/backend/core/app/Common/BaseBundle.php b/twake/backend/core/app/Common/BaseBundle.php deleted file mode 100755 index 0810f9e8..00000000 --- a/twake/backend/core/app/Common/BaseBundle.php +++ /dev/null @@ -1,132 +0,0 @@ -app = $app; - } - - public function init() - { - } - - /** - * Load routes from Bundle php configuration - */ - protected function initRoutes() - { - - // For all defined route, create routing + connect lasy controller loader - $routing_service = $this->app->getRouting(); - foreach ($this->routes as $route => $data) { - - $final_route = preg_replace("/\\/+/", "/", $this->routing_prefix . "/" . $route); - $handler = null; - $methods = ["POST"]; - - if (is_string($data)) { - $handler = $data; - } else { - $handler = $data["handler"]; - if (isset($data["methods"])) $methods = $data["methods"]; - } - - $security = []; - if (isset($data["security"])) $security = $data["security"]; - - $controller = explode(":", $handler); - $handler = $controller[1]; - $controller = $controller[0]; - - foreach ($methods as $method) { - - $method = strtolower($method); - if (!in_array($method, ["get", "post", "delete", "put"])) { - continue; - } - - $that = $this; - $routing_service->addRoute($method, $final_route, function (Request $request = null) use ($that, $controller, $handler, $security) { - - if (count($security) > 0) { - foreach ($security as $security_service) { - $service = $this->app->getServices()->get($security_service); - if ($service) { - $response = $service->applySecurity($request); - if ($response && $response !== true) { - return $response; - } - } else { - error_log("Missing security service " . $service); - } - } - } - - $controller = $that->loadController($controller); - if (!$controller) { - return new Response("No controller " . $handler . " found", 500); - } - if (!method_exists($controller, $handler)) { - return new Response("No controller handler " . $handler . "->" . $handler . " found", 500); - } - return $controller->$handler($request ?: new Request()); - }); - } - } - - } - - /** - * Lasy load controller to handle request - * $controller : string - **/ - private function loadController($controller) - { - $controller_file = $this->bundle_root . "/Controller/" . $controller . ".php"; - if (file_exists($controller_file)) { - require_once $controller_file; - $class_name = $this->bundle_namespace . "\\Controller\\" . str_replace("/", "\\", $controller); - return new $class_name($this->app); - } else { - return null; - } - } - - /** - * Load services to service manager - */ - protected function initServices() - { - $services_service = $this->app->getServices(); - foreach ($this->services as $service_name => $service_relative_path) { - $service_path = preg_replace("/\\/+/", "/", $this->bundle_root . "/Services/" . $service_relative_path . ".php"); - $service_class_name = preg_replace("/\\\\+/", "\\", $this->bundle_namespace . "\\Services\\" . str_replace("/", "\\", $service_relative_path)); - - $services_service->set($service_name, $service_path, $service_class_name); - } - - } - -} \ No newline at end of file diff --git a/twake/backend/core/app/Common/BaseBundles.php b/twake/backend/core/app/Common/BaseBundles.php deleted file mode 100755 index 7388808f..00000000 --- a/twake/backend/core/app/Common/BaseBundles.php +++ /dev/null @@ -1,18 +0,0 @@ -bundles; - } - -} \ No newline at end of file diff --git a/twake/backend/core/app/Common/BaseController.php b/twake/backend/core/app/Common/BaseController.php deleted file mode 100755 index dd349e5b..00000000 --- a/twake/backend/core/app/Common/BaseController.php +++ /dev/null @@ -1,59 +0,0 @@ -app = $app; - $this->container = $app->getContainer(); - } - - /* Get service */ - public function get($key) - { - return $this->app->getServices()->get($key); - } - - public function isConnected() - { - return $this->getUser() && !is_string($this->getUser()); - } - - public function getUser() - { - - $request = $this->app->getRouting()->getCurrentRequest(); - $user = $this->app->getServices()->get("app.session_handler")->getUser($request); - - return $user ?: "anonymous"; //null is reserved to user == system - } - - public function getParameter($key, $fallback = null) - { - return $this->app->getContainer()->getParameter($key) ?: $fallback; - } - - public function redirect($url) - { - $response = new Response(""); - $response->setHeader("Location: " . $url, true); - $response->sendHeaders(); - exit(); - } - -} diff --git a/twake/backend/core/app/Common/BaseRouting.php b/twake/backend/core/app/Common/BaseRouting.php deleted file mode 100755 index 43f49be5..00000000 --- a/twake/backend/core/app/Common/BaseRouting.php +++ /dev/null @@ -1,22 +0,0 @@ -routes; - } - - public function getRoutesPrefix() - { - return $this->routing_prefix; - } - -} \ No newline at end of file diff --git a/twake/backend/core/app/Common/BaseServices.php b/twake/backend/core/app/Common/BaseServices.php deleted file mode 100755 index e99bceba..00000000 --- a/twake/backend/core/app/Common/BaseServices.php +++ /dev/null @@ -1,15 +0,0 @@ -services; - } - -} \ No newline at end of file diff --git a/twake/backend/core/app/Common/Commands/ContainerAwareCommand.php b/twake/backend/core/app/Common/Commands/ContainerAwareCommand.php deleted file mode 100755 index 651dab34..00000000 --- a/twake/backend/core/app/Common/Commands/ContainerAwareCommand.php +++ /dev/null @@ -1,63 +0,0 @@ -configure(); - $this->app = $app; - } - - public function executeFromManager() - { - return $this->execute(); - } - - protected function getApp() - { - return $this->app; - } - - protected function getContainer() - { - - } - - protected function setName() - { - return $this; - } - - protected function setDescription() - { - return $this; - } - - protected function addOption() - { - return $this; - } - - protected function configure() - { - } - - protected function execute() - { - } - -} \ No newline at end of file diff --git a/twake/backend/core/app/Common/CommandsManager.php b/twake/backend/core/app/Common/CommandsManager.php deleted file mode 100755 index 1afcd4cb..00000000 --- a/twake/backend/core/app/Common/CommandsManager.php +++ /dev/null @@ -1,61 +0,0 @@ -app = $app; - $this->commands = $commands; - } - - public function run() - { - array_shift($_SERVER["argv"]); - $command = array_shift($_SERVER["argv"]); - $arguments = $_SERVER["argv"]; - - if ($command && $this->commands[$command]) { - - $this->execute($command, $arguments); - - } else { - if ($command) { - error_log("Command \e[0;31;42m'" . $command . "'\e[0m was not found."); - } - $this->help(); - } - - } - - public function execute($command, $arguments) - { - if (!isset($this->commands[$command])) { - return; - } - - $command = new $this->commands[$command]($this->app); - - $command->executeFromManager(); - - } - - private function help() - { - - error_log("\nAll commands:"); - foreach ($this->commands as $name => $command) { - error_log("\e[0;31;42m" . $name . "\e[0m"); - } - error_log("\n"); - - } - -} diff --git a/twake/backend/core/app/Common/Configuration.php b/twake/backend/core/app/Common/Configuration.php deleted file mode 100755 index c7baff50..00000000 --- a/twake/backend/core/app/Common/Configuration.php +++ /dev/null @@ -1,11 +0,0 @@ -app = $app; - } - - public function import(Configuration $configuration, $name) - { - $this->configuration[$name] = $configuration->configuration; - } - - public function getParameter($key) - { - return $this->get("parameters", $key); - } - - public function hasParameter($key) - { - return !!$this->get("parameters", $key); - } - - public function get($namespace, $key) - { - $key = explode(".", $key); - $obj = $this->configuration[$namespace]; - $i = 0; - while (is_array($obj) && $i < count($key)) { - $obj = @$obj[$key[$i]]; - - if (is_object($obj) && is_subclass_of($obj, "Common\Configuration") && isset($obj->configuration)) { - $obj = $obj->configuration; - } - - $i++; - } - return $obj; - } - -} diff --git a/twake/backend/core/app/Common/Counter.php b/twake/backend/core/app/Common/Counter.php deleted file mode 100755 index 01b9293c..00000000 --- a/twake/backend/core/app/Common/Counter.php +++ /dev/null @@ -1,60 +0,0 @@ -dev_mode = $app->getContainer()->getParameter("env.timer") == true; - } - - public function incrementCounter($key) - { - if (!isset($this->counters["counter_" . $key])) { - $this->counters["counter_" . $key] = 0; - } - $this->counters["counter_" . $key]++; - } - - public function readCounter($key) - { - return isset($this->counters["counter_" . $key]) ? $this->counters["counter_" . $key] : 0; - } - - public function startTimer($key) - { - $this->timers_started[$key] = microtime(true); - } - - public function stopTimer($key) - { - if (!isset($this->timers_values[$key])) { - $this->timers_values[$key] = 0; - } - $this->timers_values[$key] += microtime(true) - $this->timers_started[$key]; - $this->counters["timer_" . $key] = $this->timers_values[$key]; - } - - public function readTimer($key) - { - return isset($this->counters["timer_" . $key]) ? $this->counters["timer_" . $key] : -1; - } - - public function showResults() - { - if ($this->dev_mode) { - error_log(json_encode($this->counters, JSON_PRETTY_PRINT)); - } - } - -} diff --git a/twake/backend/core/app/Common/Http/Cookie.php b/twake/backend/core/app/Common/Http/Cookie.php deleted file mode 100755 index fdc2483b..00000000 --- a/twake/backend/core/app/Common/Http/Cookie.php +++ /dev/null @@ -1,70 +0,0 @@ -name = $name; - $this->value = $value; - $this->expire = 0 < $expire ? (int)$expire : 0; - $this->path = empty($path) ? '/' : $path; - } - - - public function __toString() - { - $str = str_replace(self::$reservedCharsFrom, self::$reservedCharsTo, $this->name); - $str .= '='; - - if ('' === (string)$this->value) { - $str .= 'deleted; expires=' . gmdate('D, d-M-Y H:i:s T', time() - 31536001) . '; Max-Age=0; SameSite=Lax; Secure'; - } else { - $str .= rawurlencode($this->value); - - if (0 !== $this->expire) { - $str .= '; expires=' . gmdate('D, d-M-Y H:i:s T', $this->expire) . '; Max-Age=' . $this->getMaxAge() . "; SameSite=Lax; Secure"; - } - } - - if ($this->path) { - $str .= '; path=' . $this->path; - } - - return $str; - } - - public function asArray() - { - return [str_replace(self::$reservedCharsFrom, self::$reservedCharsTo, $this->name), (string)$this->value, $this->expire]; - } - - public function getMaxAge() - { - $maxAge = $this->expire - time(); - - return 0 >= $maxAge ? 0 : $maxAge; - } - - public function getName() - { - return $this->name; - } - - public function getValue() - { - return $this->value; - } - -} diff --git a/twake/backend/core/app/Common/Http/ParamBag.php b/twake/backend/core/app/Common/Http/ParamBag.php deleted file mode 100755 index 59b34cf5..00000000 --- a/twake/backend/core/app/Common/Http/ParamBag.php +++ /dev/null @@ -1,44 +0,0 @@ -array = $array; - } - - public function all() - { - return $this->array; - } - - public function get($key, $default = null) - { - return isset($this->array[$key]) ? $this->array[$key] : $default; - } - - public function has($key) - { - return isset($this->array[$key]); - } - - public function getBoolean($key, $default = false) - { - return isset($this->array[$key]) ? !!$this->array[$key] : $default; - } - - public function getInt($key, $default = false) - { - return isset($this->array[$key]) ? intval($this->array[$key]) : $default; - } - - public function reset($array) - { - $this->array = $array; - } -} diff --git a/twake/backend/core/app/Common/Http/Request.php b/twake/backend/core/app/Common/Http/Request.php deleted file mode 100755 index b4c2f2ca..00000000 --- a/twake/backend/core/app/Common/Http/Request.php +++ /dev/null @@ -1,58 +0,0 @@ -headers = new ParamBag(getallheaders()); - $this->content = file_get_contents('php://input'); - $this->query = new ParamBag($_GET); - $this->request = new ParamBag($_POST); - $this->files = new ParamBag($_FILES); - - //Get all cookies - $cookies = $_COOKIE; - $header_cookies = []; - try { - $all_cookies = isset(getallheaders()["All-Cookies"]) ? getallheaders()["All-Cookies"] : "[]"; - $header_cookies = json_decode($all_cookies, 1); - } catch (\Exception $err) { - $header_cookies = []; - } - foreach ($header_cookies as $cookie) { - $cookies[$cookie[0]] = $cookie[1]; - } - $this->cookies = new ParamBag($cookies); - - if (count($this->request->all()) === 0 || 0 === strpos($this->headers->get('Content-Type'), 'application/json')) { - try{ - $data = json_decode($this->getContent(), true); - $this->request = new ParamBag(is_array($data) ? $data : array()); - }catch(\Exception $err){ - //Nop - } - } - - } - - public function getContent() - { - return $this->content; - } -} diff --git a/twake/backend/core/app/Common/Http/Response.php b/twake/backend/core/app/Common/Http/Response.php deleted file mode 100755 index 4886e2c7..00000000 --- a/twake/backend/core/app/Common/Http/Response.php +++ /dev/null @@ -1,106 +0,0 @@ -setContent($content); - $this->httpStatus($status); - $this->headers = new ParamBag([]); - } - - public function setHeader($header, $replace = true) - { - $headers = $this->headers->all(); - $header = explode(":", $header); - $header_name = array_shift($header); - $header_value = join(":", $header); - $headers[$header_name] = $header_value; - $this->headers->reset($headers); - } - - public function setCookie(Cookie $cookie) - { - $this->cookies[$cookie->getName()] = $cookie; - } - - public function getCookiesValues() - { - $key_value = []; - foreach ($this->cookies as $name => $cookie) { - $key_value[$name] = $cookie->getValue(); - } - return $key_value; - } - - public function clearCookie($name) - { - $this->cookies[$name] = new Cookie($name, null, 1, "/"); - } - - public function getContent() - { - if (is_array($this->content)) { - $this->content["_cookies"] = $this->getCookiesValues(); - return json_encode($this->content); - } - return $this->content; - } - - public function setContent($content) - { - $this->content = $content; - } - - public function httpStatus($code) - { - $this->status = $code; - } - - public function getHttpStatus() - { - return $this->status; - } - - public function sendHeaders() - { - if(headers_sent()){ - return; - } - if (defined("TESTENV") && TESTENV) { - return; - } - $all_cookies = []; - foreach ($this->cookies as $cookie) { - header("Set-Cookie: " . $cookie, false); - $all_cookies[] = $cookie->asArray(); - } - header("All-Cookies: " . json_encode($all_cookies), true); - foreach ($this->headers->all() as $name => $value) { - header($name . ": " . $value, true); - } - header("Access-Control-Expose-Headers: All-Cookies"); - } - - public function send() - { - $this->sendHeaders(); - http_response_code($this->status); - if (is_array($this->content) && !headers_sent()) { - header('Content-Type: application/json; charset=utf-8'); - } - echo $this->getContent(); - } - -} diff --git a/twake/backend/core/app/Common/Providers.php b/twake/backend/core/app/Common/Providers.php deleted file mode 100755 index 500429d8..00000000 --- a/twake/backend/core/app/Common/Providers.php +++ /dev/null @@ -1,95 +0,0 @@ -app = $app; - $this->configuration = $configuration; - - foreach ($configuration->providers as $name => $provider_config) { - - //Each provider expose multiple services - foreach ($provider_config["services"] as $service) { - $this->services[$service] = $provider_config; - } - - } - - $this->provider_config = new \Pimple\Container(); - - } - - public function get($key) - { - - if (isset($this->service_instances[$key])) { - return $this->service_instances[$key]; - } - - if (!isset($this->services[$key])) { - error_log($key . " service was not found"); - return null; - } - - $service_register_name = $this->services[$key]["register"]; - if (empty($this->registered_services[$service_register_name])) { - - if (isset($services[$key]["parameters"])) { - $parameters_key = $services[$key]["parameters"]; - $parameters = $this->app->getContainer()->get("parameters", $parameters_key); - foreach ($parameters as $key => $parameter) { - $this->providers_options[$key] = $parameter; - } - } - - if (isset($services[$key]["configuration"])) { - $parameters_key = $services[$key]["configuration"]; - $parameters = $this->app->getContainer()->get("configuration", $parameters_key); - foreach ($parameters as $key => $parameter) { - $this->providers_options[$key] = $parameter; - } - } - - $service = new $service_register_name(); - $service->register($this->provider_config); - $this->registered_services[$service_register_name] = $service; - - } - - try { - $this->service_instances[$key] = $this->provider_config[$key]; - } catch (\Exception $e) { - error_log($e); - } - - return $this->service_instances[$key]; - - } - - public function getContainer() - { - return $this->provider_config; - } - - -} diff --git a/twake/backend/core/app/Common/Routing.php b/twake/backend/core/app/Common/Routing.php deleted file mode 100755 index 81b4f1dc..00000000 --- a/twake/backend/core/app/Common/Routing.php +++ /dev/null @@ -1,146 +0,0 @@ -app = $app; - $this->request = new Request(); - } - - public function addRoute($method, $route, $callback) - { - $route = preg_replace("/^\//", "", $route); - $route = preg_replace("/\/$/", "", $route); - - if (isset($this->routes[$route . ":" . $method])) { - error_log("Route " . $route . " was already defined."); - return; - } - $this->routes[$route . ":" . $method] = true; - $this->routesToController[$route . ":" . $method] = $callback; - - if ($method == "get") { - $this->get($route, $callback); - } else if ($method == "post") { - $this->post($route, $callback); - } else if ($method == "put") { - $this->put($route, $callback); - } else if ($method == "delete") { - $this->delete($route, $callback); - } else { - error_log("Unable to register route " . $route . ": method " . $method . " is not implemented."); - } - } - - public function get($route, $callback) - { - SimpleRouter::get($route, function () use ($callback) { - error_log("[Router] - GET " . $_SERVER["REQUEST_URI"]); - try { - $response = $this->beforeRender($callback($this->request)); - $response->send(); - } catch (\Exception $e) { - error_log($e); - } - }); - } - - public function post($route, $callback) - { - SimpleRouter::post($route, function () use ($callback) { - error_log("[Router] - POST " . $_SERVER["REQUEST_URI"]); - try { - $response = $this->beforeRender($callback($this->request)); - $response->send(); - } catch (\Exception $e) { - error_log($e); - } - }); - } - - public function put($route, $callback) - { - SimpleRouter::put($route, function () use ($callback) { - error_log("[Router] - PUT " . $_SERVER["REQUEST_URI"]); - try { - $response = $this->beforeRender($callback($this->request)); - $response->send(); - } catch (\Exception $e) { - error_log($e); - } - }); - } - - public function delete($route, $callback) - { - SimpleRouter::delete($route, function () use ($callback) { - error_log("[Router] - DELETE " . $_SERVER["REQUEST_URI"]); - try { - $response = $this->beforeRender($callback($this->request)); - $response->send(); - } catch (\Exception $e) { - error_log($e); - } - }); - } - - //Allow any origin - private function beforeRender(Response $response) - { - if (isset($_SERVER['HTTP_ORIGIN']) && strpos("http://localhost", $_SERVER['HTTP_ORIGIN']) == 0) { - $response->setHeader('Access-Control-Allow-Origin: ' . $_SERVER['HTTP_ORIGIN'], true); - } - $response->setHeader('Access-Control-Allow-Headers: ' . 'authorization, Content-Type, *', true); - $response->setHeader('Access-Control-Allow-Credentials: ' . 'true', true); - $response->setHeader('Access-Control-Allow-Methods: ' . 'GET, POST', true); - $response->setHeader('Access-Control-Max-Age: ' . '600', true); - $length = strlen($response->getContent()); - $response->setHeader('x-decompressed-content-length: ' . $length, true); - - $content = $response->getContent(); - - return $response; - } - - public function execute($method, $route, Request $request) - { - $this->request = $request; - - $route = preg_replace("/^\//", "", $route); - $route = preg_replace("/\/$/", "", $route); - - if (isset($this->routesToController[$route . ":" . strtolower($method)])) { - $response = $this->routesToController[$route . ":" . strtolower($method)]($request); - } else { - error_log(json_encode($route . ":" . strtolower($method)) . " does not exists."); - $response = new Response(); - } - return $this->beforeRender($response); - } - - public function getRoutes() - { - return array_keys($this->routes); - } - - public function getCurrentRequest() - { - return $this->request; - } - -} diff --git a/twake/backend/core/app/Common/Services.php b/twake/backend/core/app/Common/Services.php deleted file mode 100755 index 43068985..00000000 --- a/twake/backend/core/app/Common/Services.php +++ /dev/null @@ -1,58 +0,0 @@ -app = $app; - } - - public function set($key, $class_src_path, $class_name) - { - if (isset($this->services[$key])) { - error_log("The service " . $key . " is already defined."); - return; - } - $this->services[$key] = [ - "src_path" => $class_src_path, - "name" => $class_name - ]; - } - - /** Lasy instanciate service */ - public function get($key) - { - - if (!isset($this->services[$key])) { - error_log("The requested service " . $key . " is not defined."); - return null; - } - - if (isset($this->services_instances[$key])) { - return $this->services_instances[$key]; - } - - require_once $this->services[$key]["src_path"]; - $name = $this->services[$key]["name"]; - $this->services_instances[$key] = new $name($this->app); - - return $this->services_instances[$key]; - } - - public function isLoaded($key) - { - return isset($this->services[$key]); - } - -} diff --git a/twake/backend/core/app/Configuration/Bundles.php b/twake/backend/core/app/Configuration/Bundles.php deleted file mode 100755 index 783ddf87..00000000 --- a/twake/backend/core/app/Configuration/Bundles.php +++ /dev/null @@ -1,43 +0,0 @@ - "Twake\Core\Command\TwakeSchemaUpdateCommand", - "twake:init" => "Twake\Core\Command\InitCommand", - "twake:init_connector" => "BuiltInConnectors\Common\Command\InitConnector", - "twake:update_services_status" => "Twake\Core\Command\UpdateServicesStatusCommand", - "twake:routes" => "Twake\Core\Command\GetRoutesCommand", - "twake:tasks_check_reminders" => "Twake\Tasks\Command\TaskReminderCheckerCommand", - "twake:reindex" => "Twake\Core\Command\ReindexCommand", - "twake:mapping" => "Twake\Core\Command\MappingCommand", - "twake:calendar_check" => "Twake\Calendar\Command\ReminderCheckerCommand", - "twake:mails_queue" => "Twake\Core\Command\MailsQueueCommand", - "twake:notifications_mail" => "Twake\Notifications\Command\NotificationMailCommand", - "twake:preview_worker" => "Twake\Drive\Command\DrivePreviewCommand", - "twake:scheduled_notifications_consume_timetable" => "Twake\Core\Command\ScheduledNotificationsConsumeTimetable", - "twake:scheduled_notifications_consume_shard" => "Twake\Core\Command\ScheduledNotificationsConsumeShard", - ]; - -} diff --git a/twake/backend/core/app/Configuration/Configuration.php b/twake/backend/core/app/Configuration/Configuration.php deleted file mode 100755 index ed30019f..00000000 --- a/twake/backend/core/app/Configuration/Configuration.php +++ /dev/null @@ -1,22 +0,0 @@ -configuration = [ - "twig" => [ - 'cache' => '/cache/twig' - ] - ]; - } - -} \ No newline at end of file diff --git a/twake/backend/core/app/Configuration/Parameters.php.dist b/twake/backend/core/app/Configuration/Parameters.php.dist deleted file mode 100755 index 165886d3..00000000 --- a/twake/backend/core/app/Configuration/Parameters.php.dist +++ /dev/null @@ -1,221 +0,0 @@ -configuration = [ - "env" => [ - "type" => "prod", - "timer" => false, - "admin_api_token" => "", - "licence_key" => "", - "standalone" => true, - //"frontend_server_name" => "http://localhost:8000/", // define only if needed - "server_name" => "http://localhost:8000/", - "internal_server_name" => "http://nginx/" - ], - "jwt" => [ - "secret" => "supersecret", - "expiration" => 60*60, //1 hour - "refresh_expiration" => 60*60*24*31 //1 month - ], - "node" => [ - "api" => "http://node:3000/private/", - "secret" => "api_supersecret" - ], - "db" => [ - "driver" => "pdo_cassandra", - "host" => "scylladb", - "port" => 9042, - "dbname" => "twake", - "user" => "root", - "password" => "root", - "encryption_key" => "ab63bb3e90c0271c9a1c06651a7c0967eab8851a7a897766", - "replication" => "{'class': 'SimpleStrategy', 'replication_factor': '1'}", - "is_cassandra" => false - ], - "es" => [ - "host" => "elasticsearch:9200" - ], - "queues" => [ - "rabbitmq" => [ - "use" => true, - "host" => "rabbitmq", - "port" => 5672, - "username" => "admin", - "password" => "admin", - "vhost" => false - ] - ], - "storage" => [ - "drive_previews_tmp_folder" => "/tmp/", - "drive_tmp_folder" => "/tmp/", - "drive_salt" => "SecretPassword", - "providers" => [ - [ - "label" => "someOpenStack", - "type" => "openstack", - "use" => false, - "project_id" => "", - "auth_url" => "https//auth.cloud.ovh.net/v3", - "buckets_prefix" => "", - "disable_encryption" => false, - "buckets" => [ - "fr" => [ - "public" => "", - "private" => "", - "region" => "SBG5" - ] - ], - "user" => [ - "id" => "", - "password" => "", - "domain_name" => "default" - ] - ], - [ - "label" => "someS3", - "type" => "S3", - "base_url" => "http://127.0.0.1:9000", - "use" => false, - "version" => "latest", - "disable_encryption" => false, - "buckets_prefix" => "dev.", - "buckets" => [ - "fr" => "eu-west-3" - ], - "credentials" => [ - "key" => "", - "secret" => "" - ] - ], - [ - "label" => "someLocal", - "type" => "local", - "use" => true, - "disable_encryption" => false, - "location" => "../drive/", - "preview_location" => "../web/medias/", - "preview_public_path" => "/medias/" - ], - ], - ], - "mail" => [ - "sender" => [ - "host" => "", - "port" => "", - "username" => "", - "password" => "", - "auth_mode" => "plain" - ], - "template_dir" => "/src/Twake/Core/Resources/views/", - "twake_domain_url" => "https://twakeapp.com/", - "from" => "noreply@twakeapp.com", - "from_name" => "Twake", - "twake_address" => "Twake, 54000 Nancy, France", - "dkim" => [ - "private_key" => "", - "domain_name" => '', - "selector" => '' - ], - "mailjet"=> [ - "contact_list_subscribe"=> false, - "contact_list_newsletter"=> false - ] - ], - "push_notifications" => [ - "apns_certificate" => __DIR__ . "/certs/apns_prod.pem", - "firebase_api_key" => "KEY", - ], - - //Defaults values for all clients but editable in database - "defaults" => [ - "applications" => [ - "twake_drive" => [ "default" => true ], //False to not install - "twake_calendar" => [ "default" => true ], - "twake_tasks" => [ "default" => true ], - "connectors" => [ - "jitsi" => [ "default" => true ], - ] - ], - "connectors" => [ - ], - "branding" => [ - "name" => "Twake", - "enable_newsletter" => false, - /* - "header" => [ - "logo" => 'https://openpaas.linagora.com/images/white-logo.svg', - "apps" => [ - [ - "name"=> 'Accueil', - "url"=> 'https://openpaas.linagora.com/', - "icon"=> 'https://openpaas.linagora.com/images/application-menu/home-icon.svg', - ], - [ - "name"=> 'Inbox', - "url"=> 'https://openpaas.linagora.com/#/unifiedinbox/inbox', - "icon"=> 'https://openpaas.linagora.com/unifiedinbox/images/inbox-icon.svg', - ], - [ - "name"=> 'Calendrier', - "url"=> 'https://openpaas.linagora.com/#/calendar', - "icon"=> 'https://openpaas.linagora.com/calendar/images/calendar-icon.svg', - ], - [ - "name"=> 'Contacts', - "url"=> 'https://openpaas.linagora.com/#/contact/addressbooks/', - "icon"=> 'https://openpaas.linagora.com/contact/images/contacts-icon.svg', - ], - ], - ], - "style" => [ - "color" => '#2196F3', - "default_border_radius" => '2', - ], - "link" => "https://open-paas.org/", - "logo" => "https://open-paas.org/wp-content/uploads/2019/10/openpaas.png" - */ - ], - "auth" => [ - "internal" => [ - "use" => true, - "disable_account_creation" => false, - "disable_email_verification" => true - ], - "openid" => [ - "use" => false, - "provider_uri" => 'https://auth0.com', - "client_id" => '', - "client_secret" => '', - //"disable_logout_redirect" => false - "provider_config" => [ - //token_endpoint - //token_endpoint_auth_methods_supported - //userinfo_endpoint - //end_session_endpoint - //authorization_endpoint - ] - ], - "cas" => [ - "use" => false, - "base_url" => '', - "email_key" => '', - "lastname_key" => '', - "firstname_key" => '' - ], - "console" => [ - "use" => false - ] - ] - ], - ]; - } - -} diff --git a/twake/backend/core/app/Configuration/Providers.php b/twake/backend/core/app/Configuration/Providers.php deleted file mode 100755 index f39ebfd0..00000000 --- a/twake/backend/core/app/Configuration/Providers.php +++ /dev/null @@ -1,16 +0,0 @@ - [ - "services" => [ - "db" - ], - "register" => "Twake\Core\Services\DoctrineAdapter\DoctrineServiceProvider", - ] - ]; - -} \ No newline at end of file diff --git a/twake/backend/core/app/Configuration/certs/apns_dev.pem.dist b/twake/backend/core/app/Configuration/certs/apns_dev.pem.dist deleted file mode 100755 index e69de29b..00000000 diff --git a/twake/backend/core/app/Configuration/certs/apns_prod.pem.dist b/twake/backend/core/app/Configuration/certs/apns_prod.pem.dist deleted file mode 100755 index e69de29b..00000000 diff --git a/twake/backend/core/bin/console b/twake/backend/core/bin/console deleted file mode 100755 index 479df64b..00000000 --- a/twake/backend/core/bin/console +++ /dev/null @@ -1,9 +0,0 @@ -#!/usr/bin/env php -runCli(); \ No newline at end of file diff --git a/twake/backend/core/composer.json b/twake/backend/core/composer.json deleted file mode 100755 index 5dda9081..00000000 --- a/twake/backend/core/composer.json +++ /dev/null @@ -1,47 +0,0 @@ -{ - "name": "twake/twake-core", - "authors": [ - { - "name": "Romaric Mourgues", - "email": "romaric.mourgues@twakeapp.com" - } - ], - "repositories": [ - { - "type": "vcs", - "url": "https://github.com/Twake/Pusher" - } - ], - "require": { - "php": ">=7.1", - "doctrine/orm": "^2.5", - "doctrine/doctrine-bundle": "^1.6", - "doctrine/doctrine-cache-bundle": "^1.2", - "phpunit/phpunit": "5.7", - "aws/aws-sdk-php-symfony": "~2.0", - "php-opencloud/openstack": "^3.0", - "emojione/emojione": "3.1", - "swiftmailer/swiftmailer": "^6.0", - "twig/twig": "^2.12", - "doctrine/dbal": "~2.2", - "ramsey/uuid-doctrine": "^1.5", - "spatie/pdf-to-text": "*", - "soleon/sc-php": "^1.0", - "pecee/simple-router": "4.2.0.6", - "pimple/pimple": "~3.0", - "mxp100/pusher": "dev-twake-1.0 as 1.0", - "eluceo/ical": "^0.16.0", - "php-amqplib/php-amqplib": "^2.11", - "phpseclib/phpseclib": "^2.0", - "sentry/sdk": "^2.1", - "firebase/php-jwt": "^5.2", - "segmentio/analytics-php": "^1.5" - }, - "autoload": { - "psr-4": { - "": "src/", - "Common\\": "app/Common", - "App\\": "app/" - } - } -} diff --git a/twake/backend/core/composer.lock b/twake/backend/core/composer.lock deleted file mode 100755 index f9cfa613..00000000 --- a/twake/backend/core/composer.lock +++ /dev/null @@ -1,7547 +0,0 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", - "This file is @generated automatically" - ], - "content-hash": "57aa0be7eecf4be955a1e5863f35d700", - "packages": [ - { - "name": "aws/aws-sdk-php", - "version": "3.133.45", - "source": { - "type": "git", - "url": "https://github.com/aws/aws-sdk-php.git", - "reference": "928a23e2ee7e195a66f93d0758895e26958c3b7d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/928a23e2ee7e195a66f93d0758895e26958c3b7d", - "reference": "928a23e2ee7e195a66f93d0758895e26958c3b7d", - "shasum": "" - }, - "require": { - "ext-json": "*", - "ext-pcre": "*", - "ext-simplexml": "*", - "guzzlehttp/guzzle": "^5.3.3|^6.2.1|^7.0", - "guzzlehttp/promises": "^1.0", - "guzzlehttp/psr7": "^1.4.1", - "mtdowling/jmespath.php": "^2.5", - "php": ">=5.5" - }, - "require-dev": { - "andrewsville/php-token-reflection": "^1.4", - "aws/aws-php-sns-message-validator": "~1.0", - "behat/behat": "~3.0", - "doctrine/cache": "~1.4", - "ext-dom": "*", - "ext-openssl": "*", - "ext-pcntl": "*", - "ext-sockets": "*", - "nette/neon": "^2.3", - "phpunit/phpunit": "^4.8.35|^5.4.3", - "psr/cache": "^1.0", - "psr/simple-cache": "^1.0", - "sebastian/comparator": "^1.2.3" - }, - "suggest": { - "aws/aws-php-sns-message-validator": "To validate incoming SNS notifications", - "doctrine/cache": "To use the DoctrineCacheAdapter", - "ext-curl": "To send requests using cURL", - "ext-openssl": "Allows working with CloudFront private distributions and verifying received SNS messages", - "ext-sockets": "To use client-side monitoring" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - } - }, - "autoload": { - "psr-4": { - "Aws\\": "src/" - }, - "files": [ - "src/functions.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "Apache-2.0" - ], - "authors": [ - { - "name": "Amazon Web Services", - "homepage": "http://aws.amazon.com" - } - ], - "description": "AWS SDK for PHP - Use Amazon Web Services in your PHP project", - "homepage": "http://aws.amazon.com/sdkforphp", - "keywords": [ - "amazon", - "aws", - "cloud", - "dynamodb", - "ec2", - "glacier", - "s3", - "sdk" - ], - "time": "2020-03-26T18:12:15+00:00" - }, - { - "name": "aws/aws-sdk-php-symfony", - "version": "2.2.1", - "source": { - "type": "git", - "url": "https://github.com/aws/aws-sdk-php-symfony.git", - "reference": "238f399aaade616bb025e6f62fc309660aa3b087" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/aws/aws-sdk-php-symfony/zipball/238f399aaade616bb025e6f62fc309660aa3b087", - "reference": "238f399aaade616bb025e6f62fc309660aa3b087", - "shasum": "" - }, - "require": { - "aws/aws-sdk-php": "^3.2.6", - "php": ">=5.5", - "symfony/config": "~2.3|~3.0|~4.0|~5.0", - "symfony/dependency-injection": "~2.3|~3.0|~4.0|~5.0", - "symfony/http-kernel": "~2.3|~3.0|~4.0|~5.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35|^5.4.0|^6.0.0", - "symfony/framework-bundle": "~2.3|~3.0|~4.0|~5.0", - "symfony/yaml": "~2.3|~3.0|~4.0|~5.0" - }, - "type": "symfony-bundle", - "autoload": { - "psr-4": { - "Aws\\Symfony\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "Apache-2.0" - ], - "authors": [ - { - "name": "Amazon Web Services", - "homepage": "http://aws.amazon.com" - } - ], - "description": "A Symfony bundle for v3 of the AWS SDK for PHP", - "keywords": [ - "Symfony2", - "amazon", - "aws", - "sdk", - "symfony", - "symfony3" - ], - "time": "2020-03-05T21:48:37+00:00" - }, - { - "name": "clue/stream-filter", - "version": "v1.4.1", - "source": { - "type": "git", - "url": "https://github.com/clue/stream-filter.git", - "reference": "5a58cc30a8bd6a4eb8f856adf61dd3e013f53f71" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/clue/stream-filter/zipball/5a58cc30a8bd6a4eb8f856adf61dd3e013f53f71", - "reference": "5a58cc30a8bd6a4eb8f856adf61dd3e013f53f71", - "shasum": "" - }, - "require": { - "php": ">=5.3" - }, - "require-dev": { - "phpunit/phpunit": "^5.0 || ^4.8" - }, - "type": "library", - "autoload": { - "psr-4": { - "Clue\\StreamFilter\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Christian Lück", - "email": "christian@lueck.tv" - } - ], - "description": "A simple and modern approach to stream filtering in PHP", - "homepage": "https://github.com/clue/php-stream-filter", - "keywords": [ - "bucket brigade", - "callback", - "filter", - "php_user_filter", - "stream", - "stream_filter_append", - "stream_filter_register" - ], - "time": "2019-04-09T12:31:48+00:00" - }, - { - "name": "doctrine/annotations", - "version": "v1.8.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/annotations.git", - "reference": "904dca4eb10715b92569fbcd79e201d5c349b6bc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/annotations/zipball/904dca4eb10715b92569fbcd79e201d5c349b6bc", - "reference": "904dca4eb10715b92569fbcd79e201d5c349b6bc", - "shasum": "" - }, - "require": { - "doctrine/lexer": "1.*", - "php": "^7.1" - }, - "require-dev": { - "doctrine/cache": "1.*", - "phpunit/phpunit": "^7.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.7.x-dev" - } - }, - "autoload": { - "psr-4": { - "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "Docblock Annotations Parser", - "homepage": "http://www.doctrine-project.org", - "keywords": [ - "annotations", - "docblock", - "parser" - ], - "time": "2019-10-01T18:55:10+00:00" - }, - { - "name": "doctrine/cache", - "version": "1.10.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/cache.git", - "reference": "382e7f4db9a12dc6c19431743a2b096041bcdd62" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/cache/zipball/382e7f4db9a12dc6c19431743a2b096041bcdd62", - "reference": "382e7f4db9a12dc6c19431743a2b096041bcdd62", - "shasum": "" - }, - "require": { - "php": "~7.1" - }, - "conflict": { - "doctrine/common": ">2.2,<2.4" - }, - "require-dev": { - "alcaeus/mongo-php-adapter": "^1.1", - "doctrine/coding-standard": "^6.0", - "mongodb/mongodb": "^1.1", - "phpunit/phpunit": "^7.0", - "predis/predis": "~1.0" - }, - "suggest": { - "alcaeus/mongo-php-adapter": "Required to use legacy MongoDB driver" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.9.x-dev" - } - }, - "autoload": { - "psr-4": { - "Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "PHP Doctrine Cache library is a popular cache implementation that supports many different drivers such as redis, memcache, apc, mongodb and others.", - "homepage": "https://www.doctrine-project.org/projects/cache.html", - "keywords": [ - "abstraction", - "apcu", - "cache", - "caching", - "couchdb", - "memcached", - "php", - "redis", - "xcache" - ], - "time": "2019-11-29T15:36:20+00:00" - }, - { - "name": "doctrine/collections", - "version": "1.6.4", - "source": { - "type": "git", - "url": "https://github.com/doctrine/collections.git", - "reference": "6b1e4b2b66f6d6e49983cebfe23a21b7ccc5b0d7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/collections/zipball/6b1e4b2b66f6d6e49983cebfe23a21b7ccc5b0d7", - "reference": "6b1e4b2b66f6d6e49983cebfe23a21b7ccc5b0d7", - "shasum": "" - }, - "require": { - "php": "^7.1.3" - }, - "require-dev": { - "doctrine/coding-standard": "^6.0", - "phpstan/phpstan-shim": "^0.9.2", - "phpunit/phpunit": "^7.0", - "vimeo/psalm": "^3.2.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.6.x-dev" - } - }, - "autoload": { - "psr-4": { - "Doctrine\\Common\\Collections\\": "lib/Doctrine/Common/Collections" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "PHP Doctrine Collections library that adds additional functionality on top of PHP arrays.", - "homepage": "https://www.doctrine-project.org/projects/collections.html", - "keywords": [ - "array", - "collections", - "iterators", - "php" - ], - "time": "2019-11-13T13:07:11+00:00" - }, - { - "name": "doctrine/common", - "version": "2.12.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/common.git", - "reference": "2053eafdf60c2172ee1373d1b9289ba1db7f1fc6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/common/zipball/2053eafdf60c2172ee1373d1b9289ba1db7f1fc6", - "reference": "2053eafdf60c2172ee1373d1b9289ba1db7f1fc6", - "shasum": "" - }, - "require": { - "doctrine/annotations": "^1.0", - "doctrine/cache": "^1.0", - "doctrine/collections": "^1.0", - "doctrine/event-manager": "^1.0", - "doctrine/inflector": "^1.0", - "doctrine/lexer": "^1.0", - "doctrine/persistence": "^1.1", - "doctrine/reflection": "^1.0", - "php": "^7.1" - }, - "require-dev": { - "doctrine/coding-standard": "^1.0", - "phpstan/phpstan": "^0.11", - "phpstan/phpstan-phpunit": "^0.11", - "phpunit/phpunit": "^7.0", - "squizlabs/php_codesniffer": "^3.0", - "symfony/phpunit-bridge": "^4.0.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.11.x-dev" - } - }, - "autoload": { - "psr-4": { - "Doctrine\\Common\\": "lib/Doctrine/Common" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - }, - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com" - } - ], - "description": "PHP Doctrine Common project is a library that provides additional functionality that other Doctrine projects depend on such as better reflection support, persistence interfaces, proxies, event system and much more.", - "homepage": "https://www.doctrine-project.org/projects/common.html", - "keywords": [ - "common", - "doctrine", - "php" - ], - "time": "2020-01-10T15:49:25+00:00" - }, - { - "name": "doctrine/dbal", - "version": "v2.9.3", - "source": { - "type": "git", - "url": "https://github.com/doctrine/dbal.git", - "reference": "7345cd59edfa2036eb0fa4264b77ae2576842035" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/7345cd59edfa2036eb0fa4264b77ae2576842035", - "reference": "7345cd59edfa2036eb0fa4264b77ae2576842035", - "shasum": "" - }, - "require": { - "doctrine/cache": "^1.0", - "doctrine/event-manager": "^1.0", - "ext-pdo": "*", - "php": "^7.1" - }, - "require-dev": { - "doctrine/coding-standard": "^5.0", - "jetbrains/phpstorm-stubs": "^2018.1.2", - "phpstan/phpstan": "^0.10.1", - "phpunit/phpunit": "^7.4", - "symfony/console": "^2.0.5|^3.0|^4.0", - "symfony/phpunit-bridge": "^3.4.5|^4.0.5" - }, - "suggest": { - "symfony/console": "For helpful console commands such as SQL execution and import of files." - }, - "bin": [ - "bin/doctrine-dbal" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.9.x-dev", - "dev-develop": "3.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Doctrine\\DBAL\\": "lib/Doctrine/DBAL" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - } - ], - "description": "Powerful PHP database abstraction layer (DBAL) with many features for database schema introspection and management.", - "homepage": "https://www.doctrine-project.org/projects/dbal.html", - "keywords": [ - "abstraction", - "database", - "dbal", - "mysql", - "persistence", - "pgsql", - "php", - "queryobject" - ], - "time": "2019-11-02T22:19:34+00:00" - }, - { - "name": "doctrine/doctrine-bundle", - "version": "1.12.7", - "source": { - "type": "git", - "url": "https://github.com/doctrine/DoctrineBundle.git", - "reference": "18fb7d271676dcb8e882adb0157ac1445c8fe89c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/18fb7d271676dcb8e882adb0157ac1445c8fe89c", - "reference": "18fb7d271676dcb8e882adb0157ac1445c8fe89c", - "shasum": "" - }, - "require": { - "doctrine/dbal": "^2.5.12", - "doctrine/doctrine-cache-bundle": "~1.2", - "doctrine/persistence": "^1.3.3", - "jdorn/sql-formatter": "^1.2.16", - "php": "^7.1", - "symfony/cache": "^3.4.30|^4.3.3", - "symfony/config": "^3.4.30|^4.3.3", - "symfony/console": "^3.4.30|^4.3.3", - "symfony/dependency-injection": "^3.4.30|^4.3.3", - "symfony/doctrine-bridge": "^3.4.30|^4.3.3", - "symfony/framework-bundle": "^3.4.30|^4.3.3", - "symfony/service-contracts": "^1.1.1|^2.0" - }, - "conflict": { - "doctrine/orm": "<2.6", - "twig/twig": "<1.34|>=2.0,<2.4" - }, - "require-dev": { - "doctrine/coding-standard": "^6.0", - "doctrine/orm": "^2.6", - "ocramius/proxy-manager": "^2.1", - "php-coveralls/php-coveralls": "^2.1", - "phpunit/phpunit": "^7.5", - "symfony/phpunit-bridge": "^4.2", - "symfony/property-info": "^3.4.30|^4.3.3", - "symfony/proxy-manager-bridge": "^3.4|^4|^5", - "symfony/twig-bridge": "^3.4|^4.1", - "symfony/validator": "^3.4.30|^4.3.3", - "symfony/web-profiler-bundle": "^3.4.30|^4.3.3", - "symfony/yaml": "^3.4.30|^4.3.3", - "twig/twig": "^1.34|^2.12" - }, - "suggest": { - "doctrine/orm": "The Doctrine ORM integration is optional in the bundle.", - "symfony/web-profiler-bundle": "To use the data collector." - }, - "type": "symfony-bundle", - "extra": { - "branch-alias": { - "dev-master": "1.12.x-dev" - } - }, - "autoload": { - "psr-4": { - "Doctrine\\Bundle\\DoctrineBundle\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" - }, - { - "name": "Doctrine Project", - "homepage": "http://www.doctrine-project.org/" - } - ], - "description": "Symfony DoctrineBundle", - "homepage": "http://www.doctrine-project.org", - "keywords": [ - "database", - "dbal", - "orm", - "persistence" - ], - "time": "2020-01-10T12:25:22+00:00" - }, - { - "name": "doctrine/doctrine-cache-bundle", - "version": "1.4.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/DoctrineCacheBundle.git", - "reference": "6bee2f9b339847e8a984427353670bad4e7bdccb" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineCacheBundle/zipball/6bee2f9b339847e8a984427353670bad4e7bdccb", - "reference": "6bee2f9b339847e8a984427353670bad4e7bdccb", - "shasum": "" - }, - "require": { - "doctrine/cache": "^1.4.2", - "doctrine/inflector": "^1.0", - "php": "^7.1", - "symfony/doctrine-bridge": "^3.4|^4.0" - }, - "require-dev": { - "instaclick/coding-standard": "~1.1", - "instaclick/object-calisthenics-sniffs": "dev-master", - "instaclick/symfony2-coding-standard": "dev-remaster", - "phpunit/phpunit": "^7.0", - "predis/predis": "~0.8", - "satooshi/php-coveralls": "^1.0", - "squizlabs/php_codesniffer": "~1.5", - "symfony/console": "^3.4|^4.0", - "symfony/finder": "^3.4|^4.0", - "symfony/framework-bundle": "^3.4|^4.0", - "symfony/phpunit-bridge": "^3.4|^4.0", - "symfony/security-acl": "^2.8", - "symfony/validator": "^3.4|^4.0", - "symfony/yaml": "^3.4|^4.0" - }, - "suggest": { - "symfony/security-acl": "For using this bundle to cache ACLs" - }, - "type": "symfony-bundle", - "extra": { - "branch-alias": { - "dev-master": "1.4.x-dev" - } - }, - "autoload": { - "psr-4": { - "Doctrine\\Bundle\\DoctrineCacheBundle\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Fabio B. Silva", - "email": "fabio.bat.silva@gmail.com" - }, - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@hotmail.com" - }, - { - "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" - }, - { - "name": "Doctrine Project", - "homepage": "http://www.doctrine-project.org/" - } - ], - "description": "Symfony Bundle for Doctrine Cache", - "homepage": "https://www.doctrine-project.org", - "keywords": [ - "cache", - "caching" - ], - "abandoned": true, - "time": "2019-11-29T11:22:01+00:00" - }, - { - "name": "doctrine/event-manager", - "version": "1.1.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/event-manager.git", - "reference": "629572819973f13486371cb611386eb17851e85c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/event-manager/zipball/629572819973f13486371cb611386eb17851e85c", - "reference": "629572819973f13486371cb611386eb17851e85c", - "shasum": "" - }, - "require": { - "php": "^7.1" - }, - "conflict": { - "doctrine/common": "<2.9@dev" - }, - "require-dev": { - "doctrine/coding-standard": "^6.0", - "phpunit/phpunit": "^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Doctrine\\Common\\": "lib/Doctrine/Common" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - }, - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com" - } - ], - "description": "The Doctrine Event Manager is a simple PHP event system that was built to be used with the various Doctrine projects.", - "homepage": "https://www.doctrine-project.org/projects/event-manager.html", - "keywords": [ - "event", - "event dispatcher", - "event manager", - "event system", - "events" - ], - "time": "2019-11-10T09:48:07+00:00" - }, - { - "name": "doctrine/inflector", - "version": "1.3.1", - "source": { - "type": "git", - "url": "https://github.com/doctrine/inflector.git", - "reference": "ec3a55242203ffa6a4b27c58176da97ff0a7aec1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/ec3a55242203ffa6a4b27c58176da97ff0a7aec1", - "reference": "ec3a55242203ffa6a4b27c58176da97ff0a7aec1", - "shasum": "" - }, - "require": { - "php": "^7.1" - }, - "require-dev": { - "phpunit/phpunit": "^6.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.3.x-dev" - } - }, - "autoload": { - "psr-4": { - "Doctrine\\Common\\Inflector\\": "lib/Doctrine/Common/Inflector" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "Common String Manipulations with regard to casing and singular/plural rules.", - "homepage": "http://www.doctrine-project.org", - "keywords": [ - "inflection", - "pluralize", - "singularize", - "string" - ], - "time": "2019-10-30T19:59:35+00:00" - }, - { - "name": "doctrine/instantiator", - "version": "1.3.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "ae466f726242e637cebdd526a7d991b9433bacf1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/ae466f726242e637cebdd526a7d991b9433bacf1", - "reference": "ae466f726242e637cebdd526a7d991b9433bacf1", - "shasum": "" - }, - "require": { - "php": "^7.1" - }, - "require-dev": { - "doctrine/coding-standard": "^6.0", - "ext-pdo": "*", - "ext-phar": "*", - "phpbench/phpbench": "^0.13", - "phpstan/phpstan-phpunit": "^0.11", - "phpstan/phpstan-shim": "^0.11", - "phpunit/phpunit": "^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.2.x-dev" - } - }, - "autoload": { - "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "http://ocramius.github.com/" - } - ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://www.doctrine-project.org/projects/instantiator.html", - "keywords": [ - "constructor", - "instantiate" - ], - "time": "2019-10-21T16:45:58+00:00" - }, - { - "name": "doctrine/lexer", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/doctrine/lexer.git", - "reference": "1febd6c3ef84253d7c815bed85fc622ad207a9f8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/1febd6c3ef84253d7c815bed85fc622ad207a9f8", - "reference": "1febd6c3ef84253d7c815bed85fc622ad207a9f8", - "shasum": "" - }, - "require": { - "php": ">=5.3.2" - }, - "require-dev": { - "phpunit/phpunit": "^4.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.", - "homepage": "https://www.doctrine-project.org/projects/lexer.html", - "keywords": [ - "annotations", - "docblock", - "lexer", - "parser", - "php" - ], - "time": "2019-06-08T11:03:04+00:00" - }, - { - "name": "doctrine/orm", - "version": "v2.7.2", - "source": { - "type": "git", - "url": "https://github.com/doctrine/orm.git", - "reference": "dafe298ce5d0b995ebe1746670704c0a35868a6a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/orm/zipball/dafe298ce5d0b995ebe1746670704c0a35868a6a", - "reference": "dafe298ce5d0b995ebe1746670704c0a35868a6a", - "shasum": "" - }, - "require": { - "doctrine/annotations": "^1.8", - "doctrine/cache": "^1.9.1", - "doctrine/collections": "^1.5", - "doctrine/common": "^2.11", - "doctrine/dbal": "^2.9.3", - "doctrine/event-manager": "^1.1", - "doctrine/instantiator": "^1.3", - "doctrine/persistence": "^1.2", - "ext-pdo": "*", - "ocramius/package-versions": "^1.2", - "php": "^7.1", - "symfony/console": "^3.0|^4.0|^5.0" - }, - "require-dev": { - "doctrine/coding-standard": "^5.0", - "phpunit/phpunit": "^7.5", - "symfony/yaml": "^3.4|^4.0|^5.0" - }, - "suggest": { - "symfony/yaml": "If you want to use YAML Metadata Mapping Driver" - }, - "bin": [ - "bin/doctrine" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.7.x-dev" - } - }, - "autoload": { - "psr-4": { - "Doctrine\\ORM\\": "lib/Doctrine/ORM" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com" - } - ], - "description": "Object-Relational-Mapper for PHP", - "homepage": "https://www.doctrine-project.org/projects/orm.html", - "keywords": [ - "database", - "orm" - ], - "time": "2020-03-19T06:41:02+00:00" - }, - { - "name": "doctrine/persistence", - "version": "1.3.7", - "source": { - "type": "git", - "url": "https://github.com/doctrine/persistence.git", - "reference": "0af483f91bada1c9ded6c2cfd26ab7d5ab2094e0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/persistence/zipball/0af483f91bada1c9ded6c2cfd26ab7d5ab2094e0", - "reference": "0af483f91bada1c9ded6c2cfd26ab7d5ab2094e0", - "shasum": "" - }, - "require": { - "doctrine/annotations": "^1.0", - "doctrine/cache": "^1.0", - "doctrine/collections": "^1.0", - "doctrine/event-manager": "^1.0", - "doctrine/reflection": "^1.2", - "php": "^7.1" - }, - "conflict": { - "doctrine/common": "<2.10@dev" - }, - "require-dev": { - "doctrine/coding-standard": "^6.0", - "phpstan/phpstan": "^0.11", - "phpunit/phpunit": "^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.3.x-dev" - } - }, - "autoload": { - "psr-4": { - "Doctrine\\Common\\": "lib/Doctrine/Common", - "Doctrine\\Persistence\\": "lib/Doctrine/Persistence" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - }, - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com" - } - ], - "description": "The Doctrine Persistence project is a set of shared interfaces and functionality that the different Doctrine object mappers share.", - "homepage": "https://doctrine-project.org/projects/persistence.html", - "keywords": [ - "mapper", - "object", - "odm", - "orm", - "persistence" - ], - "time": "2020-03-21T15:13:52+00:00" - }, - { - "name": "doctrine/reflection", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/doctrine/reflection.git", - "reference": "55e71912dfcd824b2fdd16f2d9afe15684cfce79" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/reflection/zipball/55e71912dfcd824b2fdd16f2d9afe15684cfce79", - "reference": "55e71912dfcd824b2fdd16f2d9afe15684cfce79", - "shasum": "" - }, - "require": { - "doctrine/annotations": "^1.0", - "ext-tokenizer": "*", - "php": "^7.1" - }, - "conflict": { - "doctrine/common": "<2.9" - }, - "require-dev": { - "doctrine/coding-standard": "^5.0", - "doctrine/common": "^2.10", - "phpstan/phpstan": "^0.11.0", - "phpstan/phpstan-phpunit": "^0.11.0", - "phpunit/phpunit": "^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.2.x-dev" - } - }, - "autoload": { - "psr-4": { - "Doctrine\\Common\\": "lib/Doctrine/Common" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - }, - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com" - } - ], - "description": "The Doctrine Reflection project is a simple library used by the various Doctrine projects which adds some additional functionality on top of the reflection functionality that comes with PHP. It allows you to get the reflection information about classes, methods and properties statically.", - "homepage": "https://www.doctrine-project.org/projects/reflection.html", - "keywords": [ - "reflection", - "static" - ], - "abandoned": "roave/better-reflection", - "time": "2020-03-27T11:06:43+00:00" - }, - { - "name": "egulias/email-validator", - "version": "2.1.17", - "source": { - "type": "git", - "url": "https://github.com/egulias/EmailValidator.git", - "reference": "ade6887fd9bd74177769645ab5c474824f8a418a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ade6887fd9bd74177769645ab5c474824f8a418a", - "reference": "ade6887fd9bd74177769645ab5c474824f8a418a", - "shasum": "" - }, - "require": { - "doctrine/lexer": "^1.0.1", - "php": ">=5.5", - "symfony/polyfill-intl-idn": "^1.10" - }, - "require-dev": { - "dominicsayers/isemail": "^3.0.7", - "phpunit/phpunit": "^4.8.36|^7.5.15", - "satooshi/php-coveralls": "^1.0.1" - }, - "suggest": { - "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Egulias\\EmailValidator\\": "EmailValidator" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Eduardo Gulias Davis" - } - ], - "description": "A library for validating emails against several RFCs", - "homepage": "https://github.com/egulias/EmailValidator", - "keywords": [ - "email", - "emailvalidation", - "emailvalidator", - "validation", - "validator" - ], - "time": "2020-02-13T22:36:52+00:00" - }, - { - "name": "eluceo/ical", - "version": "0.16.0", - "source": { - "type": "git", - "url": "https://github.com/markuspoerschke/iCal.git", - "reference": "97da0d94c9716e65c141066a2d96aa098379721b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/markuspoerschke/iCal/zipball/97da0d94c9716e65c141066a2d96aa098379721b", - "reference": "97da0d94c9716e65c141066a2d96aa098379721b", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "require-dev": { - "phpunit/phpunit": "^7.0" - }, - "suggest": { - "ext-mbstring": "Massive performance enhancement of line folding" - }, - "type": "library", - "autoload": { - "psr-4": { - "Eluceo\\iCal\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Markus Poerschke", - "email": "markus@eluceo.de", - "role": "Developer" - } - ], - "description": "The eluceo/iCal package offers a abstraction layer for creating iCalendars. You can easily create iCal files by using PHP object instead of typing your *.ics file by hand. The output will follow RFC 5545 as best as possible.", - "homepage": "https://github.com/markuspoerschke/iCal", - "keywords": [ - "calendar", - "iCalendar", - "ical", - "ics", - "php calendar" - ], - "time": "2019-12-29T22:08:56+00:00" - }, - { - "name": "emojione/emojione", - "version": "v3.1.0", - "source": { - "type": "git", - "url": "https://github.com/emojione/emojione.git", - "reference": "4a166f9334809b5044ecf493f7decf47d50e0a8a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/emojione/emojione/zipball/4a166f9334809b5044ecf493f7decf47d50e0a8a", - "reference": "4a166f9334809b5044ecf493f7decf47d50e0a8a", - "shasum": "" - }, - "require": { - "php": ">=5.3" - }, - "require-dev": { - "phpunit/phpunit": "~4.6 || ~5.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Emojione\\": "lib/php/src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "(CC-BY-4.0 and MIT)" - ], - "description": "EmojiOne is a complete set of emojis designed for the web. It includes libraries to easily convert unicode characters to shortnames (:smile:) and shortnames to our custom emoji images. PNG format provided for the emoji images.", - "homepage": "http://www.emojione.com", - "keywords": [ - "emoji", - "emojione", - "emojis", - "emoticons", - "smileys", - "smilies", - "unicode" - ], - "abandoned": true, - "time": "2017-06-30T17:09:19+00:00" - }, - { - "name": "firebase/php-jwt", - "version": "v5.2.0", - "source": { - "type": "git", - "url": "https://github.com/firebase/php-jwt.git", - "reference": "feb0e820b8436873675fd3aca04f3728eb2185cb" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/firebase/php-jwt/zipball/feb0e820b8436873675fd3aca04f3728eb2185cb", - "reference": "feb0e820b8436873675fd3aca04f3728eb2185cb", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "require-dev": { - "phpunit/phpunit": ">=4.8 <=9" - }, - "type": "library", - "autoload": { - "psr-4": { - "Firebase\\JWT\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Neuman Vong", - "email": "neuman+pear@twilio.com", - "role": "Developer" - }, - { - "name": "Anant Narayanan", - "email": "anant@php.net", - "role": "Developer" - } - ], - "description": "A simple library to encode and decode JSON Web Tokens (JWT) in PHP. Should conform to the current spec.", - "homepage": "https://github.com/firebase/php-jwt", - "keywords": [ - "jwt", - "php" - ], - "time": "2020-03-25T18:49:23+00:00" - }, - { - "name": "guzzlehttp/guzzle", - "version": "6.5.2", - "source": { - "type": "git", - "url": "https://github.com/guzzle/guzzle.git", - "reference": "43ece0e75098b7ecd8d13918293029e555a50f82" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/43ece0e75098b7ecd8d13918293029e555a50f82", - "reference": "43ece0e75098b7ecd8d13918293029e555a50f82", - "shasum": "" - }, - "require": { - "ext-json": "*", - "guzzlehttp/promises": "^1.0", - "guzzlehttp/psr7": "^1.6.1", - "php": ">=5.5" - }, - "require-dev": { - "ext-curl": "*", - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0", - "psr/log": "^1.1" - }, - "suggest": { - "ext-intl": "Required for Internationalized Domain Name (IDN) support", - "psr/log": "Required for using the Log middleware" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "6.5-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - } - ], - "description": "Guzzle is a PHP HTTP client library", - "homepage": "http://guzzlephp.org/", - "keywords": [ - "client", - "curl", - "framework", - "http", - "http client", - "rest", - "web service" - ], - "time": "2019-12-23T11:57:10+00:00" - }, - { - "name": "guzzlehttp/promises", - "version": "v1.3.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/promises.git", - "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/a59da6cf61d80060647ff4d3eb2c03a2bc694646", - "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646", - "shasum": "" - }, - "require": { - "php": ">=5.5.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Promise\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - } - ], - "description": "Guzzle promises library", - "keywords": [ - "promise" - ], - "time": "2016-12-20T10:07:11+00:00" - }, - { - "name": "guzzlehttp/psr7", - "version": "1.6.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/psr7.git", - "reference": "239400de7a173fe9901b9ac7c06497751f00727a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/239400de7a173fe9901b9ac7c06497751f00727a", - "reference": "239400de7a173fe9901b9ac7c06497751f00727a", - "shasum": "" - }, - "require": { - "php": ">=5.4.0", - "psr/http-message": "~1.0", - "ralouphie/getallheaders": "^2.0.5 || ^3.0.0" - }, - "provide": { - "psr/http-message-implementation": "1.0" - }, - "require-dev": { - "ext-zlib": "*", - "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.8" - }, - "suggest": { - "zendframework/zend-httphandlerrunner": "Emit PSR-7 responses" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.6-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Psr7\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - }, - { - "name": "Tobias Schultze", - "homepage": "https://github.com/Tobion" - } - ], - "description": "PSR-7 message implementation that also provides common utility methods", - "keywords": [ - "http", - "message", - "psr-7", - "request", - "response", - "stream", - "uri", - "url" - ], - "time": "2019-07-01T23:21:34+00:00" - }, - { - "name": "http-interop/http-factory-guzzle", - "version": "1.0.0", - "source": { - "type": "git", - "url": "https://github.com/http-interop/http-factory-guzzle.git", - "reference": "34861658efb9899a6618cef03de46e2a52c80fc0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/http-interop/http-factory-guzzle/zipball/34861658efb9899a6618cef03de46e2a52c80fc0", - "reference": "34861658efb9899a6618cef03de46e2a52c80fc0", - "shasum": "" - }, - "require": { - "guzzlehttp/psr7": "^1.4.2", - "psr/http-factory": "^1.0" - }, - "provide": { - "psr/http-factory-implementation": "^1.0" - }, - "require-dev": { - "http-interop/http-factory-tests": "^0.5", - "phpunit/phpunit": "^6.5" - }, - "type": "library", - "autoload": { - "psr-4": { - "Http\\Factory\\Guzzle\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "An HTTP Factory using Guzzle PSR7", - "keywords": [ - "factory", - "http", - "psr-17", - "psr-7" - ], - "time": "2018-07-31T19:32:56+00:00" - }, - { - "name": "jdorn/sql-formatter", - "version": "v1.2.17", - "source": { - "type": "git", - "url": "https://github.com/jdorn/sql-formatter.git", - "reference": "64990d96e0959dff8e059dfcdc1af130728d92bc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/jdorn/sql-formatter/zipball/64990d96e0959dff8e059dfcdc1af130728d92bc", - "reference": "64990d96e0959dff8e059dfcdc1af130728d92bc", - "shasum": "" - }, - "require": { - "php": ">=5.2.4" - }, - "require-dev": { - "phpunit/phpunit": "3.7.*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.3.x-dev" - } - }, - "autoload": { - "classmap": [ - "lib" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jeremy Dorn", - "email": "jeremy@jeremydorn.com", - "homepage": "http://jeremydorn.com/" - } - ], - "description": "a PHP SQL highlighting library", - "homepage": "https://github.com/jdorn/sql-formatter/", - "keywords": [ - "highlight", - "sql" - ], - "time": "2014-01-12T16:20:24+00:00" - }, - { - "name": "jean85/pretty-package-versions", - "version": "1.2", - "source": { - "type": "git", - "url": "https://github.com/Jean85/pretty-package-versions.git", - "reference": "75c7effcf3f77501d0e0caa75111aff4daa0dd48" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Jean85/pretty-package-versions/zipball/75c7effcf3f77501d0e0caa75111aff4daa0dd48", - "reference": "75c7effcf3f77501d0e0caa75111aff4daa0dd48", - "shasum": "" - }, - "require": { - "ocramius/package-versions": "^1.2.0", - "php": "^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Jean85\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Alessandro Lai", - "email": "alessandro.lai85@gmail.com" - } - ], - "description": "A wrapper for ocramius/package-versions to get pretty versions strings", - "keywords": [ - "composer", - "package", - "release", - "versions" - ], - "time": "2018-06-13T13:22:40+00:00" - }, - { - "name": "jeremeamia/superclosure", - "version": "2.4.0", - "source": { - "type": "git", - "url": "https://github.com/jeremeamia/super_closure.git", - "reference": "5707d5821b30b9a07acfb4d76949784aaa0e9ce9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/jeremeamia/super_closure/zipball/5707d5821b30b9a07acfb4d76949784aaa0e9ce9", - "reference": "5707d5821b30b9a07acfb4d76949784aaa0e9ce9", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^1.2|^2.0|^3.0|^4.0", - "php": ">=5.4", - "symfony/polyfill-php56": "^1.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.0|^5.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.4-dev" - } - }, - "autoload": { - "psr-4": { - "SuperClosure\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jeremy Lindblom", - "email": "jeremeamia@gmail.com", - "homepage": "https://github.com/jeremeamia", - "role": "Developer" - } - ], - "description": "Serialize Closure objects, including their context and binding", - "homepage": "https://github.com/jeremeamia/super_closure", - "keywords": [ - "closure", - "function", - "lambda", - "parser", - "serializable", - "serialize", - "tokenizer" - ], - "abandoned": "opis/closure", - "time": "2018-03-21T22:21:57+00:00" - }, - { - "name": "justinrainbow/json-schema", - "version": "5.2.9", - "source": { - "type": "git", - "url": "https://github.com/justinrainbow/json-schema.git", - "reference": "44c6787311242a979fa15c704327c20e7221a0e4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/44c6787311242a979fa15c704327c20e7221a0e4", - "reference": "44c6787311242a979fa15c704327c20e7221a0e4", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "~2.2.20||~2.15.1", - "json-schema/json-schema-test-suite": "1.2.0", - "phpunit/phpunit": "^4.8.35" - }, - "bin": [ - "bin/validate-json" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "JsonSchema\\": "src/JsonSchema/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Bruno Prieto Reis", - "email": "bruno.p.reis@gmail.com" - }, - { - "name": "Justin Rainbow", - "email": "justin.rainbow@gmail.com" - }, - { - "name": "Igor Wiedler", - "email": "igor@wiedler.ch" - }, - { - "name": "Robert Schönthal", - "email": "seroscho@googlemail.com" - } - ], - "description": "A library to validate a json schema.", - "homepage": "https://github.com/justinrainbow/json-schema", - "keywords": [ - "json", - "schema" - ], - "time": "2019-09-25T14:49:45+00:00" - }, - { - "name": "mtdowling/jmespath.php", - "version": "2.5.0", - "source": { - "type": "git", - "url": "https://github.com/jmespath/jmespath.php.git", - "reference": "52168cb9472de06979613d365c7f1ab8798be895" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/jmespath/jmespath.php/zipball/52168cb9472de06979613d365c7f1ab8798be895", - "reference": "52168cb9472de06979613d365c7f1ab8798be895", - "shasum": "" - }, - "require": { - "php": ">=5.4.0", - "symfony/polyfill-mbstring": "^1.4" - }, - "require-dev": { - "composer/xdebug-handler": "^1.2", - "phpunit/phpunit": "^4.8.36|^7.5.15" - }, - "bin": [ - "bin/jp.php" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.5-dev" - } - }, - "autoload": { - "psr-4": { - "JmesPath\\": "src/" - }, - "files": [ - "src/JmesPath.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - } - ], - "description": "Declaratively specify how to extract elements from a JSON document", - "keywords": [ - "json", - "jsonpath" - ], - "time": "2019-12-30T18:03:34+00:00" - }, - { - "name": "mxp100/pusher", - "version": "dev-twake-1.0", - "source": { - "type": "git", - "url": "https://github.com/Twake/Pusher.git", - "reference": "7c410b3b0ec491a7e70f57fd4a81f56af30dc7b3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Twake/Pusher/zipball/7c410b3b0ec491a7e70f57fd4a81f56af30dc7b3", - "reference": "7c410b3b0ec491a7e70f57fd4a81f56af30dc7b3", - "shasum": "" - }, - "require": { - "ext-json": ">=1.3.7", - "php": "^7.0" - }, - "suggest": { - "ext-curl": "*" - }, - "type": "library", - "autoload": { - "psr-4": { - "Pusher\\": "src/Pusher/" - } - }, - "license": [ - "Apache-2.0" - ], - "authors": [ - { - "name": "Yuriy Potemkin" - } - ], - "description": "PHP push notifications to APNS, FCM", - "keywords": [ - "apns", - "fcm", - "notifications", - "push" - ], - "support": { - "source": "https://github.com/TwakeApp/Pusher/tree/master" - }, - "time": "2020-03-21T13:52:43+00:00" - }, - { - "name": "myclabs/deep-copy", - "version": "1.9.5", - "source": { - "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "b2c28789e80a97badd14145fda39b545d83ca3ef" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/b2c28789e80a97badd14145fda39b545d83ca3ef", - "reference": "b2c28789e80a97badd14145fda39b545d83ca3ef", - "shasum": "" - }, - "require": { - "php": "^7.1" - }, - "replace": { - "myclabs/deep-copy": "self.version" - }, - "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^7.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "DeepCopy\\": "src/DeepCopy/" - }, - "files": [ - "src/DeepCopy/deep_copy.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Create deep copies (clones) of your objects", - "keywords": [ - "clone", - "copy", - "duplicate", - "object", - "object graph" - ], - "time": "2020-01-17T21:11:47+00:00" - }, - { - "name": "nikic/php-parser", - "version": "v4.3.0", - "source": { - "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "9a9981c347c5c49d6dfe5cf826bb882b824080dc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/9a9981c347c5c49d6dfe5cf826bb882b824080dc", - "reference": "9a9981c347c5c49d6dfe5cf826bb882b824080dc", - "shasum": "" - }, - "require": { - "ext-tokenizer": "*", - "php": ">=7.0" - }, - "require-dev": { - "ircmaxell/php-yacc": "0.0.5", - "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0" - }, - "bin": [ - "bin/php-parse" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.3-dev" - } - }, - "autoload": { - "psr-4": { - "PhpParser\\": "lib/PhpParser" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Nikita Popov" - } - ], - "description": "A PHP parser written in PHP", - "keywords": [ - "parser", - "php" - ], - "time": "2019-11-08T13:50:10+00:00" - }, - { - "name": "ocramius/package-versions", - "version": "1.4.2", - "source": { - "type": "git", - "url": "https://github.com/Ocramius/PackageVersions.git", - "reference": "44af6f3a2e2e04f2af46bcb302ad9600cba41c7d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Ocramius/PackageVersions/zipball/44af6f3a2e2e04f2af46bcb302ad9600cba41c7d", - "reference": "44af6f3a2e2e04f2af46bcb302ad9600cba41c7d", - "shasum": "" - }, - "require": { - "composer-plugin-api": "^1.0.0", - "php": "^7.1.0" - }, - "require-dev": { - "composer/composer": "^1.6.3", - "doctrine/coding-standard": "^5.0.1", - "ext-zip": "*", - "infection/infection": "^0.7.1", - "phpunit/phpunit": "^7.5.17" - }, - "type": "composer-plugin", - "extra": { - "class": "PackageVersions\\Installer", - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "PackageVersions\\": "src/PackageVersions" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com" - } - ], - "description": "Composer plugin that provides efficient querying for installed package versions (no runtime IO)", - "time": "2019-11-15T16:17:10+00:00" - }, - { - "name": "paragonie/random_compat", - "version": "v9.99.99", - "source": { - "type": "git", - "url": "https://github.com/paragonie/random_compat.git", - "reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/paragonie/random_compat/zipball/84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95", - "reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95", - "shasum": "" - }, - "require": { - "php": "^7" - }, - "require-dev": { - "phpunit/phpunit": "4.*|5.*", - "vimeo/psalm": "^1" - }, - "suggest": { - "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." - }, - "type": "library", - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Paragon Initiative Enterprises", - "email": "security@paragonie.com", - "homepage": "https://paragonie.com" - } - ], - "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", - "keywords": [ - "csprng", - "polyfill", - "pseudorandom", - "random" - ], - "time": "2018-07-02T15:55:56+00:00" - }, - { - "name": "pecee/simple-router", - "version": "4.2.0.6", - "source": { - "type": "git", - "url": "https://github.com/skipperbent/simple-php-router.git", - "reference": "b715c48415d5e3660df668350152bba8798a6e33" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/skipperbent/simple-php-router/zipball/b715c48415d5e3660df668350152bba8798a6e33", - "reference": "b715c48415d5e3660df668350152bba8798a6e33", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": ">=7.1", - "php-di/php-di": "^6.0" - }, - "require-dev": { - "mockery/mockery": "^1", - "phpunit/phpunit": "^6.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Pecee\\": "src/Pecee/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Simon Sessingø", - "email": "simon.sessingoe@gmail.com" - } - ], - "description": "Simple, fast PHP router that is easy to get integrated and in almost any project. Heavily inspired by the Laravel router.", - "keywords": [ - "framework", - "input-handler", - "laravel", - "pecee", - "php", - "request-handler", - "route", - "router", - "routing", - "routing-engine", - "simple-php-router", - "url-handling" - ], - "time": "2018-11-24T23:47:02+00:00" - }, - { - "name": "php-amqplib/php-amqplib", - "version": "v2.11.3", - "source": { - "type": "git", - "url": "https://github.com/php-amqplib/php-amqplib.git", - "reference": "6353c5d2d3021a301914bc6566e695c99cfeb742" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-amqplib/php-amqplib/zipball/6353c5d2d3021a301914bc6566e695c99cfeb742", - "reference": "6353c5d2d3021a301914bc6566e695c99cfeb742", - "shasum": "" - }, - "require": { - "ext-mbstring": "*", - "ext-sockets": "*", - "php": ">=5.6.3", - "phpseclib/phpseclib": "^2.0.0" - }, - "conflict": { - "php": "7.4.0 - 7.4.1" - }, - "replace": { - "videlalvaro/php-amqplib": "self.version" - }, - "require-dev": { - "ext-curl": "*", - "nategood/httpful": "^0.2.20", - "phpunit/phpunit": "^5.7|^6.5|^7.0", - "squizlabs/php_codesniffer": "^2.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.11-dev" - } - }, - "autoload": { - "psr-4": { - "PhpAmqpLib\\": "PhpAmqpLib/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "LGPL-2.1-or-later" - ], - "authors": [ - { - "name": "Alvaro Videla", - "role": "Original Maintainer" - }, - { - "name": "Raúl Araya", - "email": "nubeiro@gmail.com", - "role": "Maintainer" - }, - { - "name": "Luke Bakken", - "email": "luke@bakken.io", - "role": "Maintainer" - }, - { - "name": "Ramūnas Dronga", - "email": "github@ramuno.lt", - "role": "Maintainer" - } - ], - "description": "Formerly videlalvaro/php-amqplib. This library is a pure PHP implementation of the AMQP protocol. It's been tested against RabbitMQ.", - "homepage": "https://github.com/php-amqplib/php-amqplib/", - "keywords": [ - "message", - "queue", - "rabbitmq" - ], - "time": "2020-05-13T13:56:11+00:00" - }, - { - "name": "php-di/invoker", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://github.com/PHP-DI/Invoker.git", - "reference": "540c27c86f663e20fe39a24cd72fa76cdb21d41a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/PHP-DI/Invoker/zipball/540c27c86f663e20fe39a24cd72fa76cdb21d41a", - "reference": "540c27c86f663e20fe39a24cd72fa76cdb21d41a", - "shasum": "" - }, - "require": { - "psr/container": "~1.0" - }, - "require-dev": { - "athletic/athletic": "~0.1.8", - "phpunit/phpunit": "~4.5" - }, - "type": "library", - "autoload": { - "psr-4": { - "Invoker\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Generic and extensible callable invoker", - "homepage": "https://github.com/PHP-DI/Invoker", - "keywords": [ - "callable", - "dependency", - "dependency-injection", - "injection", - "invoke", - "invoker" - ], - "time": "2017-03-20T19:28:22+00:00" - }, - { - "name": "php-di/php-di", - "version": "6.0.11", - "source": { - "type": "git", - "url": "https://github.com/PHP-DI/PHP-DI.git", - "reference": "9bdcc2f41f5fb700ddd01bc4fa8d5bd7b3f94620" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/PHP-DI/PHP-DI/zipball/9bdcc2f41f5fb700ddd01bc4fa8d5bd7b3f94620", - "reference": "9bdcc2f41f5fb700ddd01bc4fa8d5bd7b3f94620", - "shasum": "" - }, - "require": { - "jeremeamia/superclosure": "^2.0", - "nikic/php-parser": "^2.0|^3.0|^4.0", - "php": ">=7.0.0", - "php-di/invoker": "^2.0", - "php-di/phpdoc-reader": "^2.0.1", - "psr/container": "^1.0" - }, - "provide": { - "psr/container-implementation": "^1.0" - }, - "require-dev": { - "doctrine/annotations": "~1.2", - "friendsofphp/php-cs-fixer": "^2.4", - "mnapoli/phpunit-easymock": "~1.0", - "ocramius/proxy-manager": "~2.0.2", - "phpstan/phpstan": "^0.9.2", - "phpunit/phpunit": "~6.4" - }, - "suggest": { - "doctrine/annotations": "Install it if you want to use annotations (version ~1.2)", - "ocramius/proxy-manager": "Install it if you want to use lazy injection (version ~2.0)" - }, - "type": "library", - "autoload": { - "psr-4": { - "DI\\": "src/" - }, - "files": [ - "src/functions.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "The dependency injection container for humans", - "homepage": "http://php-di.org/", - "keywords": [ - "PSR-11", - "container", - "container-interop", - "dependency injection", - "di", - "ioc", - "psr11" - ], - "time": "2019-12-12T07:58:02+00:00" - }, - { - "name": "php-di/phpdoc-reader", - "version": "2.1.1", - "source": { - "type": "git", - "url": "https://github.com/PHP-DI/PhpDocReader.git", - "reference": "15678f7451c020226807f520efb867ad26fbbfcf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/PHP-DI/PhpDocReader/zipball/15678f7451c020226807f520efb867ad26fbbfcf", - "reference": "15678f7451c020226807f520efb867ad26fbbfcf", - "shasum": "" - }, - "require": { - "php": ">=5.4.0" - }, - "require-dev": { - "phpunit/phpunit": "~4.6" - }, - "type": "library", - "autoload": { - "psr-4": { - "PhpDocReader\\": "src/PhpDocReader" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "PhpDocReader parses @var and @param values in PHP docblocks (supports namespaced class names with the same resolution rules as PHP)", - "keywords": [ - "phpdoc", - "reflection" - ], - "time": "2019-09-26T11:24:58+00:00" - }, - { - "name": "php-http/client-common", - "version": "2.3.0", - "source": { - "type": "git", - "url": "https://github.com/php-http/client-common.git", - "reference": "e37e46c610c87519753135fb893111798c69076a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-http/client-common/zipball/e37e46c610c87519753135fb893111798c69076a", - "reference": "e37e46c610c87519753135fb893111798c69076a", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0", - "php-http/httplug": "^2.0", - "php-http/message": "^1.6", - "php-http/message-factory": "^1.0", - "psr/http-client": "^1.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.0", - "symfony/options-resolver": "^2.6 || ^3.4.20 || ~4.0.15 || ~4.1.9 || ^4.2.1 || ^5.0", - "symfony/polyfill-php80": "^1.17" - }, - "require-dev": { - "doctrine/instantiator": "^1.1", - "guzzlehttp/psr7": "^1.4", - "nyholm/psr7": "^1.2", - "phpspec/phpspec": "^5.1 || ^6.0", - "phpspec/prophecy": "^1.10.2", - "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.3" - }, - "suggest": { - "ext-json": "To detect JSON responses with the ContentTypePlugin", - "ext-libxml": "To detect XML responses with the ContentTypePlugin", - "php-http/cache-plugin": "PSR-6 Cache plugin", - "php-http/logger-plugin": "PSR-3 Logger plugin", - "php-http/stopwatch-plugin": "Symfony Stopwatch plugin" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3.x-dev" - } - }, - "autoload": { - "psr-4": { - "Http\\Client\\Common\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com" - } - ], - "description": "Common HTTP Client implementations and tools for HTTPlug", - "homepage": "http://httplug.io", - "keywords": [ - "client", - "common", - "http", - "httplug" - ], - "time": "2020-07-21T10:04:13+00:00" - }, - { - "name": "php-http/discovery", - "version": "1.9.1", - "source": { - "type": "git", - "url": "https://github.com/php-http/discovery.git", - "reference": "64a18cc891957e05d91910b3c717d6bd11fbede9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-http/discovery/zipball/64a18cc891957e05d91910b3c717d6bd11fbede9", - "reference": "64a18cc891957e05d91910b3c717d6bd11fbede9", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "conflict": { - "nyholm/psr7": "<1.0" - }, - "require-dev": { - "graham-campbell/phpspec-skip-example-extension": "^5.0", - "php-http/httplug": "^1.0 || ^2.0", - "php-http/message-factory": "^1.0", - "phpspec/phpspec": "^5.1 || ^6.1", - "puli/composer-plugin": "1.0.0-beta10" - }, - "suggest": { - "php-http/message": "Allow to use Guzzle, Diactoros or Slim Framework factories", - "puli/composer-plugin": "Sets up Puli which is recommended for Discovery to work. Check http://docs.php-http.org/en/latest/discovery.html for more details." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.9-dev" - } - }, - "autoload": { - "psr-4": { - "Http\\Discovery\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com" - } - ], - "description": "Finds installed HTTPlug implementations and PSR-7 message factories", - "homepage": "http://php-http.org", - "keywords": [ - "adapter", - "client", - "discovery", - "factory", - "http", - "message", - "psr7" - ], - "time": "2020-07-13T15:44:45+00:00" - }, - { - "name": "php-http/guzzle6-adapter", - "version": "v2.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-http/guzzle6-adapter.git", - "reference": "6074a4b1f4d5c21061b70bab3b8ad484282fe31f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-http/guzzle6-adapter/zipball/6074a4b1f4d5c21061b70bab3b8ad484282fe31f", - "reference": "6074a4b1f4d5c21061b70bab3b8ad484282fe31f", - "shasum": "" - }, - "require": { - "guzzlehttp/guzzle": "^6.0", - "php": "^7.1", - "php-http/httplug": "^2.0", - "psr/http-client": "^1.0" - }, - "provide": { - "php-http/async-client-implementation": "1.0", - "php-http/client-implementation": "1.0", - "psr/http-client-implementation": "1.0" - }, - "require-dev": { - "ext-curl": "*", - "php-http/client-integration-tests": "^2.0", - "phpunit/phpunit": "^7.4" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.x-dev" - } - }, - "autoload": { - "psr-4": { - "Http\\Adapter\\Guzzle6\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com" - }, - { - "name": "David de Boer", - "email": "david@ddeboer.nl" - } - ], - "description": "Guzzle 6 HTTP Adapter", - "homepage": "http://httplug.io", - "keywords": [ - "Guzzle", - "http" - ], - "time": "2018-12-16T14:44:03+00:00" - }, - { - "name": "php-http/httplug", - "version": "2.2.0", - "source": { - "type": "git", - "url": "https://github.com/php-http/httplug.git", - "reference": "191a0a1b41ed026b717421931f8d3bd2514ffbf9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-http/httplug/zipball/191a0a1b41ed026b717421931f8d3bd2514ffbf9", - "reference": "191a0a1b41ed026b717421931f8d3bd2514ffbf9", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0", - "php-http/promise": "^1.1", - "psr/http-client": "^1.0", - "psr/http-message": "^1.0" - }, - "require-dev": { - "friends-of-phpspec/phpspec-code-coverage": "^4.1", - "phpspec/phpspec": "^5.1 || ^6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.x-dev" - } - }, - "autoload": { - "psr-4": { - "Http\\Client\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Eric GELOEN", - "email": "geloen.eric@gmail.com" - }, - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com", - "homepage": "https://sagikazarmark.hu" - } - ], - "description": "HTTPlug, the HTTP client abstraction for PHP", - "homepage": "http://httplug.io", - "keywords": [ - "client", - "http" - ], - "time": "2020-07-13T15:43:23+00:00" - }, - { - "name": "php-http/message", - "version": "1.9.0", - "source": { - "type": "git", - "url": "https://github.com/php-http/message.git", - "reference": "2c7256e3c1aba0bfca70f099810f1c7712e00945" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-http/message/zipball/2c7256e3c1aba0bfca70f099810f1c7712e00945", - "reference": "2c7256e3c1aba0bfca70f099810f1c7712e00945", - "shasum": "" - }, - "require": { - "clue/stream-filter": "^1.4.1", - "php": "^7.1", - "php-http/message-factory": "^1.0.2", - "psr/http-message": "^1.0" - }, - "provide": { - "php-http/message-factory-implementation": "1.0" - }, - "require-dev": { - "akeneo/phpspec-skip-example-extension": "^1.0", - "coduo/phpspec-data-provider-extension": "^1.0", - "ergebnis/composer-normalize": "^2.1", - "ext-zlib": "*", - "guzzlehttp/psr7": "^1.0", - "henrikbjorn/phpspec-code-coverage": "^1.0", - "phpspec/phpspec": "^2.4", - "slim/slim": "^3.0", - "zendframework/zend-diactoros": "^1.0" - }, - "suggest": { - "ext-zlib": "Used with compressor/decompressor streams", - "guzzlehttp/psr7": "Used with Guzzle PSR-7 Factories", - "slim/slim": "Used with Slim Framework PSR-7 implementation", - "zendframework/zend-diactoros": "Used with Diactoros Factories" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.8-dev" - } - }, - "autoload": { - "psr-4": { - "Http\\Message\\": "src/" - }, - "files": [ - "src/filters.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com" - } - ], - "description": "HTTP Message related tools", - "homepage": "http://php-http.org", - "keywords": [ - "http", - "message", - "psr-7" - ], - "time": "2020-08-17T06:33:14+00:00" - }, - { - "name": "php-http/message-factory", - "version": "v1.0.2", - "source": { - "type": "git", - "url": "https://github.com/php-http/message-factory.git", - "reference": "a478cb11f66a6ac48d8954216cfed9aa06a501a1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-http/message-factory/zipball/a478cb11f66a6ac48d8954216cfed9aa06a501a1", - "reference": "a478cb11f66a6ac48d8954216cfed9aa06a501a1", - "shasum": "" - }, - "require": { - "php": ">=5.4", - "psr/http-message": "^1.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "autoload": { - "psr-4": { - "Http\\Message\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com" - } - ], - "description": "Factory interfaces for PSR-7 HTTP Message", - "homepage": "http://php-http.org", - "keywords": [ - "factory", - "http", - "message", - "stream", - "uri" - ], - "time": "2015-12-19T14:08:53+00:00" - }, - { - "name": "php-http/promise", - "version": "1.1.0", - "source": { - "type": "git", - "url": "https://github.com/php-http/promise.git", - "reference": "4c4c1f9b7289a2ec57cde7f1e9762a5789506f88" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-http/promise/zipball/4c4c1f9b7289a2ec57cde7f1e9762a5789506f88", - "reference": "4c4c1f9b7289a2ec57cde7f1e9762a5789506f88", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "friends-of-phpspec/phpspec-code-coverage": "^4.3.2", - "phpspec/phpspec": "^5.1.2 || ^6.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1-dev" - } - }, - "autoload": { - "psr-4": { - "Http\\Promise\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Joel Wurtz", - "email": "joel.wurtz@gmail.com" - }, - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com" - } - ], - "description": "Promise used for asynchronous HTTP requests", - "homepage": "http://httplug.io", - "keywords": [ - "promise" - ], - "time": "2020-07-07T09:29:14+00:00" - }, - { - "name": "php-opencloud/openstack", - "version": "v3.0.7", - "source": { - "type": "git", - "url": "https://github.com/php-opencloud/openstack.git", - "reference": "5d73ff577731fc473448c489acfca9730aa39c88" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-opencloud/openstack/zipball/5d73ff577731fc473448c489acfca9730aa39c88", - "reference": "5d73ff577731fc473448c489acfca9730aa39c88", - "shasum": "" - }, - "require": { - "guzzlehttp/guzzle": "^6.1", - "justinrainbow/json-schema": "^5.2", - "php": "~7.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^2.13", - "jakub-onderka/php-parallel-lint": "^1.0", - "php-coveralls/php-coveralls": "^2.0", - "phpunit/phpunit": "^6.5", - "psr/log": "^1.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - } - }, - "autoload": { - "psr-4": { - "OpenStack\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "Apache-2.0" - ], - "authors": [ - { - "name": "Jamie Hannaford", - "email": "jamie.hannaford@rackspace.com", - "homepage": "https://github.com/jamiehannaford" - }, - { - "name": "Ha Phan", - "email": "thanhha.work@gmail.com", - "homepage": "https://github.com/haphan" - } - ], - "description": "PHP SDK for OpenStack APIs. Supports BlockStorage, Compute, Identity, Images, Networking and Metric Gnocchi", - "homepage": "https://github.com/php-opencloud/openstack", - "keywords": [ - "Openstack", - "api", - "php", - "sdk" - ], - "time": "2020-01-07T08:46:53+00:00" - }, - { - "name": "phpdocumentor/reflection-common", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionCommon.git", - "reference": "63a995caa1ca9e5590304cd845c15ad6d482a62a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/63a995caa1ca9e5590304cd845c15ad6d482a62a", - "reference": "63a995caa1ca9e5590304cd845c15ad6d482a62a", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "require-dev": { - "phpunit/phpunit": "~6" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jaap van Otterdijk", - "email": "opensource@ijaap.nl" - } - ], - "description": "Common reflection classes used by phpdocumentor to reflect the code structure", - "homepage": "http://www.phpdoc.org", - "keywords": [ - "FQSEN", - "phpDocumentor", - "phpdoc", - "reflection", - "static analysis" - ], - "time": "2018-08-07T13:53:10+00:00" - }, - { - "name": "phpdocumentor/reflection-docblock", - "version": "4.3.4", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "da3fd972d6bafd628114f7e7e036f45944b62e9c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/da3fd972d6bafd628114f7e7e036f45944b62e9c", - "reference": "da3fd972d6bafd628114f7e7e036f45944b62e9c", - "shasum": "" - }, - "require": { - "php": "^7.0", - "phpdocumentor/reflection-common": "^1.0.0 || ^2.0.0", - "phpdocumentor/type-resolver": "~0.4 || ^1.0.0", - "webmozart/assert": "^1.0" - }, - "require-dev": { - "doctrine/instantiator": "^1.0.5", - "mockery/mockery": "^1.0", - "phpdocumentor/type-resolver": "0.4.*", - "phpunit/phpunit": "^6.4" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": [ - "src/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" - } - ], - "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", - "time": "2019-12-28T18:55:12+00:00" - }, - { - "name": "phpdocumentor/type-resolver", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "2e32a6d48972b2c1976ed5d8967145b6cec4a4a9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/2e32a6d48972b2c1976ed5d8967145b6cec4a4a9", - "reference": "2e32a6d48972b2c1976ed5d8967145b6cec4a4a9", - "shasum": "" - }, - "require": { - "php": "^7.1", - "phpdocumentor/reflection-common": "^2.0" - }, - "require-dev": { - "ext-tokenizer": "^7.1", - "mockery/mockery": "~1", - "phpunit/phpunit": "^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" - } - ], - "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", - "time": "2019-08-22T18:11:29+00:00" - }, - { - "name": "phpseclib/phpseclib", - "version": "2.0.27", - "source": { - "type": "git", - "url": "https://github.com/phpseclib/phpseclib.git", - "reference": "34620af4df7d1988d8f0d7e91f6c8a3bf931d8dc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/34620af4df7d1988d8f0d7e91f6c8a3bf931d8dc", - "reference": "34620af4df7d1988d8f0d7e91f6c8a3bf931d8dc", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "phing/phing": "~2.7", - "phpunit/phpunit": "^4.8.35|^5.7|^6.0", - "sami/sami": "~2.0", - "squizlabs/php_codesniffer": "~2.0" - }, - "suggest": { - "ext-gmp": "Install the GMP (GNU Multiple Precision) extension in order to speed up arbitrary precision integer arithmetic operations.", - "ext-libsodium": "SSH2/SFTP can make use of some algorithms provided by the libsodium-php extension.", - "ext-mcrypt": "Install the Mcrypt extension in order to speed up a few other cryptographic operations.", - "ext-openssl": "Install the OpenSSL extension in order to speed up a wide variety of cryptographic operations." - }, - "type": "library", - "autoload": { - "files": [ - "phpseclib/bootstrap.php" - ], - "psr-4": { - "phpseclib\\": "phpseclib/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jim Wigginton", - "email": "terrafrost@php.net", - "role": "Lead Developer" - }, - { - "name": "Patrick Monnerat", - "email": "pm@datasphere.ch", - "role": "Developer" - }, - { - "name": "Andreas Fischer", - "email": "bantu@phpbb.com", - "role": "Developer" - }, - { - "name": "Hans-Jürgen Petrich", - "email": "petrich@tronic-media.com", - "role": "Developer" - }, - { - "name": "Graham Campbell", - "email": "graham@alt-three.com", - "role": "Developer" - } - ], - "description": "PHP Secure Communications Library - Pure-PHP implementations of RSA, AES, SSH2, SFTP, X.509 etc.", - "homepage": "http://phpseclib.sourceforge.net", - "keywords": [ - "BigInteger", - "aes", - "asn.1", - "asn1", - "blowfish", - "crypto", - "cryptography", - "encryption", - "rsa", - "security", - "sftp", - "signature", - "signing", - "ssh", - "twofish", - "x.509", - "x509" - ], - "time": "2020-04-04T23:17:33+00:00" - }, - { - "name": "phpspec/prophecy", - "version": "v1.10.3", - "source": { - "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "451c3cd1418cf640de218914901e51b064abb093" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/451c3cd1418cf640de218914901e51b064abb093", - "reference": "451c3cd1418cf640de218914901e51b064abb093", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.0.2", - "php": "^5.3|^7.0", - "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0|^5.0", - "sebastian/comparator": "^1.2.3|^2.0|^3.0|^4.0", - "sebastian/recursion-context": "^1.0|^2.0|^3.0|^4.0" - }, - "require-dev": { - "phpspec/phpspec": "^2.5 || ^3.2", - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.10.x-dev" - } - }, - "autoload": { - "psr-4": { - "Prophecy\\": "src/Prophecy" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - }, - { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" - } - ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", - "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" - ], - "time": "2020-03-05T15:02:03+00:00" - }, - { - "name": "phpunit/php-code-coverage", - "version": "4.0.8", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "ef7b2f56815df854e66ceaee8ebe9393ae36a40d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/ef7b2f56815df854e66ceaee8ebe9393ae36a40d", - "reference": "ef7b2f56815df854e66ceaee8ebe9393ae36a40d", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-xmlwriter": "*", - "php": "^5.6 || ^7.0", - "phpunit/php-file-iterator": "^1.3", - "phpunit/php-text-template": "^1.2", - "phpunit/php-token-stream": "^1.4.2 || ^2.0", - "sebastian/code-unit-reverse-lookup": "^1.0", - "sebastian/environment": "^1.3.2 || ^2.0", - "sebastian/version": "^1.0 || ^2.0" - }, - "require-dev": { - "ext-xdebug": "^2.1.4", - "phpunit/phpunit": "^5.7" - }, - "suggest": { - "ext-xdebug": "^2.5.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" - } - ], - "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", - "homepage": "https://github.com/sebastianbergmann/php-code-coverage", - "keywords": [ - "coverage", - "testing", - "xunit" - ], - "time": "2017-04-02T07:44:40+00:00" - }, - { - "name": "phpunit/php-file-iterator", - "version": "1.4.5", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/730b01bc3e867237eaac355e06a36b85dd93a8b4", - "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" - } - ], - "description": "FilterIterator implementation that filters files based on a list of suffixes.", - "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", - "keywords": [ - "filesystem", - "iterator" - ], - "time": "2017-11-27T13:52:08+00:00" - }, - { - "name": "phpunit/php-text-template", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", - "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", - "keywords": [ - "template" - ], - "time": "2015-06-21T13:50:34+00:00" - }, - { - "name": "phpunit/php-timer", - "version": "1.0.9", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", - "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", - "shasum": "" - }, - "require": { - "php": "^5.3.3 || ^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" - } - ], - "description": "Utility class for timing", - "homepage": "https://github.com/sebastianbergmann/php-timer/", - "keywords": [ - "timer" - ], - "time": "2017-02-26T11:10:40+00:00" - }, - { - "name": "phpunit/php-token-stream", - "version": "2.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-token-stream.git", - "reference": "791198a2c6254db10131eecfe8c06670700904db" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/791198a2c6254db10131eecfe8c06670700904db", - "reference": "791198a2c6254db10131eecfe8c06670700904db", - "shasum": "" - }, - "require": { - "ext-tokenizer": "*", - "php": "^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.2.4" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Wrapper around PHP's tokenizer extension.", - "homepage": "https://github.com/sebastianbergmann/php-token-stream/", - "keywords": [ - "tokenizer" - ], - "abandoned": true, - "time": "2017-11-27T05:48:46+00:00" - }, - { - "name": "phpunit/phpunit", - "version": "5.7.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "00d72b8dbd2bb7d6f02a820e6db5cb70df6ac55c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/00d72b8dbd2bb7d6f02a820e6db5cb70df6ac55c", - "reference": "00d72b8dbd2bb7d6f02a820e6db5cb70df6ac55c", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-json": "*", - "ext-libxml": "*", - "ext-mbstring": "*", - "ext-xml": "*", - "myclabs/deep-copy": "~1.3", - "php": "^5.6 || ^7.0", - "phpspec/prophecy": "^1.3.1", - "phpunit/php-code-coverage": "^4.0.3", - "phpunit/php-file-iterator": "~1.4", - "phpunit/php-text-template": "~1.2", - "phpunit/php-timer": "^1.0.6", - "phpunit/phpunit-mock-objects": "^3.2", - "sebastian/comparator": "~1.2.2", - "sebastian/diff": "~1.2", - "sebastian/environment": "^1.3.4 || ^2.0", - "sebastian/exporter": "~2.0", - "sebastian/global-state": "~1.0", - "sebastian/object-enumerator": "~2.0", - "sebastian/resource-operations": "~1.0", - "sebastian/version": "~1.0|~2.0", - "symfony/yaml": "~2.1|~3.0" - }, - "conflict": { - "phpdocumentor/reflection-docblock": "3.0.2" - }, - "require-dev": { - "ext-pdo": "*" - }, - "suggest": { - "ext-xdebug": "*", - "phpunit/php-invoker": "~1.1" - }, - "bin": [ - "phpunit" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.7.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "The PHP Unit Testing framework.", - "homepage": "https://phpunit.de/", - "keywords": [ - "phpunit", - "testing", - "xunit" - ], - "time": "2016-12-01T17:04:00+00:00" - }, - { - "name": "phpunit/phpunit-mock-objects", - "version": "3.4.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", - "reference": "a23b761686d50a560cc56233b9ecf49597cc9118" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/a23b761686d50a560cc56233b9ecf49597cc9118", - "reference": "a23b761686d50a560cc56233b9ecf49597cc9118", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.0.2", - "php": "^5.6 || ^7.0", - "phpunit/php-text-template": "^1.2", - "sebastian/exporter": "^1.2 || ^2.0" - }, - "conflict": { - "phpunit/phpunit": "<5.4.0" - }, - "require-dev": { - "phpunit/phpunit": "^5.4" - }, - "suggest": { - "ext-soap": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.2.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" - } - ], - "description": "Mock Object library for PHPUnit", - "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/", - "keywords": [ - "mock", - "xunit" - ], - "abandoned": true, - "time": "2017-06-30T09:13:00+00:00" - }, - { - "name": "pimple/pimple", - "version": "v3.2.3", - "source": { - "type": "git", - "url": "https://github.com/silexphp/Pimple.git", - "reference": "9e403941ef9d65d20cba7d54e29fe906db42cf32" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/silexphp/Pimple/zipball/9e403941ef9d65d20cba7d54e29fe906db42cf32", - "reference": "9e403941ef9d65d20cba7d54e29fe906db42cf32", - "shasum": "" - }, - "require": { - "php": ">=5.3.0", - "psr/container": "^1.0" - }, - "require-dev": { - "symfony/phpunit-bridge": "^3.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.2.x-dev" - } - }, - "autoload": { - "psr-0": { - "Pimple": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - } - ], - "description": "Pimple, a simple Dependency Injection Container", - "homepage": "http://pimple.sensiolabs.org", - "keywords": [ - "container", - "dependency injection" - ], - "time": "2018-01-21T07:42:36+00:00" - }, - { - "name": "psr/cache", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/cache.git", - "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8", - "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Cache\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interface for caching libraries", - "keywords": [ - "cache", - "psr", - "psr-6" - ], - "time": "2016-08-06T20:24:11+00:00" - }, - { - "name": "psr/container", - "version": "1.0.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/container.git", - "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f", - "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Container\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common Container Interface (PHP FIG PSR-11)", - "homepage": "https://github.com/php-fig/container", - "keywords": [ - "PSR-11", - "container", - "container-interface", - "container-interop", - "psr" - ], - "time": "2017-02-14T16:28:37+00:00" - }, - { - "name": "psr/http-client", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-client.git", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "psr/http-message": "^1.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Http\\Client\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interface for HTTP clients", - "homepage": "https://github.com/php-fig/http-client", - "keywords": [ - "http", - "http-client", - "psr", - "psr-18" - ], - "time": "2020-06-29T06:28:15+00:00" - }, - { - "name": "psr/http-factory", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-factory.git", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "shasum": "" - }, - "require": { - "php": ">=7.0.0", - "psr/http-message": "^1.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Http\\Message\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interfaces for PSR-7 HTTP message factories", - "keywords": [ - "factory", - "http", - "message", - "psr", - "psr-17", - "psr-7", - "request", - "response" - ], - "time": "2019-04-30T12:38:16+00:00" - }, - { - "name": "psr/http-message", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-message.git", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Http\\Message\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interface for HTTP messages", - "homepage": "https://github.com/php-fig/http-message", - "keywords": [ - "http", - "http-message", - "psr", - "psr-7", - "request", - "response" - ], - "time": "2016-08-06T14:39:51+00:00" - }, - { - "name": "psr/log", - "version": "1.1.3", - "source": { - "type": "git", - "url": "https://github.com/php-fig/log.git", - "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/0f73288fd15629204f9d42b7055f72dacbe811fc", - "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Log\\": "Psr/Log/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interface for logging libraries", - "homepage": "https://github.com/php-fig/log", - "keywords": [ - "log", - "psr", - "psr-3" - ], - "time": "2020-03-23T09:12:05+00:00" - }, - { - "name": "ralouphie/getallheaders", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/ralouphie/getallheaders.git", - "reference": "120b605dfeb996808c31b6477290a714d356e822" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", - "reference": "120b605dfeb996808c31b6477290a714d356e822", - "shasum": "" - }, - "require": { - "php": ">=5.6" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.1", - "phpunit/phpunit": "^5 || ^6.5" - }, - "type": "library", - "autoload": { - "files": [ - "src/getallheaders.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Ralph Khattar", - "email": "ralph.khattar@gmail.com" - } - ], - "description": "A polyfill for getallheaders.", - "time": "2019-03-08T08:55:37+00:00" - }, - { - "name": "ramsey/uuid", - "version": "3.9.3", - "source": { - "type": "git", - "url": "https://github.com/ramsey/uuid.git", - "reference": "7e1633a6964b48589b142d60542f9ed31bd37a92" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/7e1633a6964b48589b142d60542f9ed31bd37a92", - "reference": "7e1633a6964b48589b142d60542f9ed31bd37a92", - "shasum": "" - }, - "require": { - "ext-json": "*", - "paragonie/random_compat": "^1 | ^2 | 9.99.99", - "php": "^5.4 | ^7 | ^8", - "symfony/polyfill-ctype": "^1.8" - }, - "replace": { - "rhumsaa/uuid": "self.version" - }, - "require-dev": { - "codeception/aspect-mock": "^1 | ^2", - "doctrine/annotations": "^1.2", - "goaop/framework": "1.0.0-alpha.2 | ^1 | ^2.1", - "jakub-onderka/php-parallel-lint": "^1", - "mockery/mockery": "^0.9.11 | ^1", - "moontoast/math": "^1.1", - "paragonie/random-lib": "^2", - "php-mock/php-mock-phpunit": "^0.3 | ^1.1", - "phpunit/phpunit": "^4.8 | ^5.4 | ^6.5", - "squizlabs/php_codesniffer": "^3.5" - }, - "suggest": { - "ext-ctype": "Provides support for PHP Ctype functions", - "ext-libsodium": "Provides the PECL libsodium extension for use with the SodiumRandomGenerator", - "ext-openssl": "Provides the OpenSSL extension for use with the OpenSslGenerator", - "ext-uuid": "Provides the PECL UUID extension for use with the PeclUuidTimeGenerator and PeclUuidRandomGenerator", - "moontoast/math": "Provides support for converting UUID to 128-bit integer (in string form).", - "paragonie/random-lib": "Provides RandomLib for use with the RandomLibAdapter", - "ramsey/uuid-console": "A console application for generating UUIDs with ramsey/uuid", - "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.x-dev" - } - }, - "autoload": { - "psr-4": { - "Ramsey\\Uuid\\": "src/" - }, - "files": [ - "src/functions.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Ben Ramsey", - "email": "ben@benramsey.com", - "homepage": "https://benramsey.com" - }, - { - "name": "Marijn Huizendveld", - "email": "marijn.huizendveld@gmail.com" - }, - { - "name": "Thibaud Fabre", - "email": "thibaud@aztech.io" - } - ], - "description": "Formerly rhumsaa/uuid. A PHP 5.4+ library for generating RFC 4122 version 1, 3, 4, and 5 universally unique identifiers (UUID).", - "homepage": "https://github.com/ramsey/uuid", - "keywords": [ - "guid", - "identifier", - "uuid" - ], - "time": "2020-02-21T04:36:14+00:00" - }, - { - "name": "ramsey/uuid-doctrine", - "version": "1.6.0", - "source": { - "type": "git", - "url": "https://github.com/ramsey/uuid-doctrine.git", - "reference": "9facc4689547e72e03c1e18df4a0ee162b2778b0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid-doctrine/zipball/9facc4689547e72e03c1e18df4a0ee162b2778b0", - "reference": "9facc4689547e72e03c1e18df4a0ee162b2778b0", - "shasum": "" - }, - "require": { - "doctrine/orm": "^2.5", - "php": "^5.4 | ^7 | ^8", - "ramsey/uuid": "^3.5 | ^4" - }, - "require-dev": { - "jakub-onderka/php-parallel-lint": "^1", - "mockery/mockery": "^0.9 | ^1", - "phpunit/phpunit": "^4.8.36 | ^5.7 | ^6.5 | ^7", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "autoload": { - "psr-4": { - "Ramsey\\Uuid\\Doctrine\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Allow the use of ramsey/uuid as a Doctrine field type.", - "homepage": "https://github.com/ramsey/uuid-doctrine", - "keywords": [ - "database", - "doctrine", - "guid", - "identifier", - "uuid" - ], - "time": "2020-01-27T05:09:17+00:00" - }, - { - "name": "sebastian/code-unit-reverse-lookup", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", - "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", - "shasum": "" - }, - "require": { - "php": "^5.6 || ^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^5.7 || ^6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Looks up which function or method a line of code belongs to", - "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", - "time": "2017-03-04T06:30:41+00:00" - }, - { - "name": "sebastian/comparator", - "version": "1.2.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2b7424b55f5047b47ac6e5ccb20b2aea4011d9be", - "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be", - "shasum": "" - }, - "require": { - "php": ">=5.3.3", - "sebastian/diff": "~1.2", - "sebastian/exporter": "~1.2 || ~2.0" - }, - "require-dev": { - "phpunit/phpunit": "~4.4" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.2.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" - }, - { - "name": "Bernhard Schussek", - "email": "bschussek@2bepublished.at" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Provides the functionality to compare PHP values for equality", - "homepage": "http://www.github.com/sebastianbergmann/comparator", - "keywords": [ - "comparator", - "compare", - "equality" - ], - "time": "2017-01-29T09:50:25+00:00" - }, - { - "name": "sebastian/diff", - "version": "1.4.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/7f066a26a962dbe58ddea9f72a4e82874a3975a4", - "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4", - "shasum": "" - }, - "require": { - "php": "^5.3.3 || ^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", - "keywords": [ - "diff" - ], - "time": "2017-05-22T07:24:03+00:00" - }, - { - "name": "sebastian/environment", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "5795ffe5dc5b02460c3e34222fee8cbe245d8fac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/5795ffe5dc5b02460c3e34222fee8cbe245d8fac", - "reference": "5795ffe5dc5b02460c3e34222fee8cbe245d8fac", - "shasum": "" - }, - "require": { - "php": "^5.6 || ^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^5.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Provides functionality to handle HHVM/PHP environments", - "homepage": "http://www.github.com/sebastianbergmann/environment", - "keywords": [ - "Xdebug", - "environment", - "hhvm" - ], - "time": "2016-11-26T07:53:53+00:00" - }, - { - "name": "sebastian/exporter", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4", - "reference": "ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4", - "shasum": "" - }, - "require": { - "php": ">=5.3.3", - "sebastian/recursion-context": "~2.0" - }, - "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "~4.4" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" - }, - { - "name": "Bernhard Schussek", - "email": "bschussek@2bepublished.at" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Adam Harvey", - "email": "aharvey@php.net" - } - ], - "description": "Provides the functionality to export PHP variables for visualization", - "homepage": "http://www.github.com/sebastianbergmann/exporter", - "keywords": [ - "export", - "exporter" - ], - "time": "2016-11-19T08:54:04+00:00" - }, - { - "name": "sebastian/global-state", - "version": "1.1.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bc37d50fea7d017d3d340f230811c9f1d7280af4", - "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "phpunit/phpunit": "~4.2" - }, - "suggest": { - "ext-uopz": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", - "keywords": [ - "global state" - ], - "time": "2015-10-12T03:26:01+00:00" - }, - { - "name": "sebastian/object-enumerator", - "version": "2.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "1311872ac850040a79c3c058bea3e22d0f09cbb7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/1311872ac850040a79c3c058bea3e22d0f09cbb7", - "reference": "1311872ac850040a79c3c058bea3e22d0f09cbb7", - "shasum": "" - }, - "require": { - "php": ">=5.6", - "sebastian/recursion-context": "~2.0" - }, - "require-dev": { - "phpunit/phpunit": "~5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Traverses array structures and object graphs to enumerate all referenced objects", - "homepage": "https://github.com/sebastianbergmann/object-enumerator/", - "time": "2017-02-18T15:18:39+00:00" - }, - { - "name": "sebastian/recursion-context", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "2c3ba150cbec723aa057506e73a8d33bdb286c9a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/2c3ba150cbec723aa057506e73a8d33bdb286c9a", - "reference": "2c3ba150cbec723aa057506e73a8d33bdb286c9a", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "phpunit/phpunit": "~4.4" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Adam Harvey", - "email": "aharvey@php.net" - } - ], - "description": "Provides functionality to recursively process PHP variables", - "homepage": "http://www.github.com/sebastianbergmann/recursion-context", - "time": "2016-11-19T07:33:16+00:00" - }, - { - "name": "sebastian/resource-operations", - "version": "1.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", - "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", - "shasum": "" - }, - "require": { - "php": ">=5.6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "time": "2015-07-28T20:34:47+00:00" - }, - { - "name": "sebastian/version", - "version": "2.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019", - "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019", - "shasum": "" - }, - "require": { - "php": ">=5.6" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library that helps with managing the version number of Git-hosted PHP projects", - "homepage": "https://github.com/sebastianbergmann/version", - "time": "2016-10-03T07:35:21+00:00" - }, - { - "name": "segmentio/analytics-php", - "version": "1.5.2", - "source": { - "type": "git", - "url": "https://github.com/segmentio/analytics-php.git", - "reference": "9513e3762ab24c9abd00078b0fb9e185aec10e07" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/segmentio/analytics-php/zipball/9513e3762ab24c9abd00078b0fb9e185aec10e07", - "reference": "9513e3762ab24c9abd00078b0fb9e185aec10e07", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "phpunit/phpunit": "~4.0" - }, - "bin": [ - "bin/analytics" - ], - "type": "library", - "autoload": { - "files": [ - "lib/Segment.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Segment.io ", - "homepage": "https://segment.com/" - } - ], - "description": "Segment Analytics PHP Library", - "homepage": "https://segment.com/libraries/php", - "keywords": [ - "analytics", - "analytics.js", - "segment", - "segmentio" - ], - "time": "2017-08-18T22:13:00+00:00" - }, - { - "name": "sentry/sdk", - "version": "2.1.0", - "source": { - "type": "git", - "url": "https://github.com/getsentry/sentry-php-sdk.git", - "reference": "18921af9c2777517ef9fb480845c22a98554d6af" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/getsentry/sentry-php-sdk/zipball/18921af9c2777517ef9fb480845c22a98554d6af", - "reference": "18921af9c2777517ef9fb480845c22a98554d6af", - "shasum": "" - }, - "require": { - "http-interop/http-factory-guzzle": "^1.0", - "php-http/guzzle6-adapter": "^1.1|^2.0", - "sentry/sentry": "^2.3" - }, - "type": "metapackage", - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Sentry", - "email": "accounts@sentry.io" - } - ], - "description": "This is a metapackage shipping sentry/sentry with a recommended http client.", - "time": "2020-01-08T19:16:29+00:00" - }, - { - "name": "sentry/sentry", - "version": "2.4.3", - "source": { - "type": "git", - "url": "https://github.com/getsentry/sentry-php.git", - "reference": "89fd1f91657b33ec9139f33f8a201eb086276103" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/getsentry/sentry-php/zipball/89fd1f91657b33ec9139f33f8a201eb086276103", - "reference": "89fd1f91657b33ec9139f33f8a201eb086276103", - "shasum": "" - }, - "require": { - "ext-json": "*", - "ext-mbstring": "*", - "guzzlehttp/promises": "^1.3", - "guzzlehttp/psr7": "^1.6", - "jean85/pretty-package-versions": "^1.2", - "php": "^7.1", - "php-http/async-client-implementation": "^1.0", - "php-http/client-common": "^1.5|^2.0", - "php-http/discovery": "^1.6.1", - "php-http/httplug": "^1.1|^2.0", - "php-http/message": "^1.5", - "psr/http-factory": "^1.0", - "psr/http-message-implementation": "^1.0", - "psr/log": "^1.0", - "symfony/options-resolver": "^2.7|^3.0|^4.0|^5.0", - "symfony/polyfill-uuid": "^1.13.1" - }, - "conflict": { - "php-http/client-common": "1.8.0", - "raven/raven": "*" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^2.16", - "monolog/monolog": "^1.3|^2.0", - "php-http/mock-client": "^1.3", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^7.5.18", - "symfony/phpunit-bridge": "^4.3|^5.0", - "vimeo/psalm": "^3.4" - }, - "suggest": { - "monolog/monolog": "Allow sending log messages to Sentry by using the included Monolog handler." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.4-dev" - } - }, - "autoload": { - "files": [ - "src/functions.php" - ], - "psr-4": { - "Sentry\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sentry", - "email": "accounts@sentry.io" - } - ], - "description": "A PHP SDK for Sentry (http://sentry.io)", - "homepage": "http://sentry.io", - "keywords": [ - "crash-reporting", - "crash-reports", - "error-handler", - "error-monitoring", - "log", - "logging", - "sentry" - ], - "time": "2020-08-13T10:54:32+00:00" - }, - { - "name": "soleon/sc-php", - "version": "v1.0.2", - "source": { - "type": "git", - "url": "https://github.com/soleon-leiloes/sc-php.git", - "reference": "7c8f9169be5cefbe87d87adf2f2dcf59132706b2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/soleon-leiloes/sc-php/zipball/7c8f9169be5cefbe87d87adf2f2dcf59132706b2", - "reference": "7c8f9169be5cefbe87d87adf2f2dcf59132706b2", - "shasum": "" - }, - "require": { - "php": ">=5.5.9", - "textalk/websocket": "1.0.*" - }, - "require-dev": { - "illuminate/broadcasting": "5.2.*", - "mockery/mockery": "0.9.*", - "phpunit/phpunit": "~4.0", - "pimple/pimple": "~3.0" - }, - "suggest": { - "laravel/framework": "Framework Laravel (5.2.*)" - }, - "type": "library", - "autoload": { - "psr-4": { - "SocketCluster\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Renato Moura", - "email": "renato@soleon.com.br" - } - ], - "description": "SocketCluster - PHP library for interacting with the SocketCluster.io", - "homepage": "https://github.com/soleon-leiloes/sc-php", - "keywords": [ - "Broadcasting", - "laravel", - "php", - "realtime", - "socketcluster" - ], - "time": "2016-07-27T15:19:21+00:00" - }, - { - "name": "spatie/pdf-to-text", - "version": "1.2.0", - "source": { - "type": "git", - "url": "https://github.com/spatie/pdf-to-text.git", - "reference": "53b43c592c0a3f2df7bc0ceb48c6ce8bd51bb7e5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/pdf-to-text/zipball/53b43c592c0a3f2df7bc0ceb48c6ce8bd51bb7e5", - "reference": "53b43c592c0a3f2df7bc0ceb48c6ce8bd51bb7e5", - "shasum": "" - }, - "require": { - "php": "^7.0", - "symfony/process": "^3.3|^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.4|^7.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Spatie\\PdfToText\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Freek Van der Herten", - "email": "freek@spatie.be", - "homepage": "https://spatie.be", - "role": "Developer" - } - ], - "description": "Extract text from a pdf", - "homepage": "https://github.com/spatie/pdf-to-text", - "keywords": [ - "pdf-to-text", - "spatie" - ], - "time": "2019-05-15T06:12:04+00:00" - }, - { - "name": "swiftmailer/swiftmailer", - "version": "v6.2.3", - "source": { - "type": "git", - "url": "https://github.com/swiftmailer/swiftmailer.git", - "reference": "149cfdf118b169f7840bbe3ef0d4bc795d1780c9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/149cfdf118b169f7840bbe3ef0d4bc795d1780c9", - "reference": "149cfdf118b169f7840bbe3ef0d4bc795d1780c9", - "shasum": "" - }, - "require": { - "egulias/email-validator": "~2.0", - "php": ">=7.0.0", - "symfony/polyfill-iconv": "^1.0", - "symfony/polyfill-intl-idn": "^1.10", - "symfony/polyfill-mbstring": "^1.0" - }, - "require-dev": { - "mockery/mockery": "~0.9.1", - "symfony/phpunit-bridge": "^3.4.19|^4.1.8" - }, - "suggest": { - "ext-intl": "Needed to support internationalized email addresses", - "true/punycode": "Needed to support internationalized email addresses, if ext-intl is not installed" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "6.2-dev" - } - }, - "autoload": { - "files": [ - "lib/swift_required.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Chris Corbyn" - }, - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - } - ], - "description": "Swiftmailer, free feature-rich PHP mailer", - "homepage": "https://swiftmailer.symfony.com", - "keywords": [ - "email", - "mail", - "mailer" - ], - "time": "2019-11-12T09:31:26+00:00" - }, - { - "name": "symfony/cache", - "version": "v4.4.6", - "source": { - "type": "git", - "url": "https://github.com/symfony/cache.git", - "reference": "f20dcf48ecee66ab5ad7ccf4b3b55392b660c3d9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/f20dcf48ecee66ab5ad7ccf4b3b55392b660c3d9", - "reference": "f20dcf48ecee66ab5ad7ccf4b3b55392b660c3d9", - "shasum": "" - }, - "require": { - "php": "^7.1.3", - "psr/cache": "~1.0", - "psr/log": "~1.0", - "symfony/cache-contracts": "^1.1.7|^2", - "symfony/service-contracts": "^1.1|^2", - "symfony/var-exporter": "^4.2|^5.0" - }, - "conflict": { - "doctrine/dbal": "<2.5", - "symfony/dependency-injection": "<3.4", - "symfony/http-kernel": "<4.4", - "symfony/var-dumper": "<4.4" - }, - "provide": { - "psr/cache-implementation": "1.0", - "psr/simple-cache-implementation": "1.0", - "symfony/cache-implementation": "1.0" - }, - "require-dev": { - "cache/integration-tests": "dev-master", - "doctrine/cache": "~1.6", - "doctrine/dbal": "~2.5", - "predis/predis": "~1.1", - "psr/simple-cache": "^1.0", - "symfony/config": "^4.2|^5.0", - "symfony/dependency-injection": "^3.4|^4.1|^5.0", - "symfony/var-dumper": "^4.4|^5.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Cache\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Cache component with PSR-6, PSR-16, and tags", - "homepage": "https://symfony.com", - "keywords": [ - "caching", - "psr6" - ], - "time": "2020-03-17T19:51:46+00:00" - }, - { - "name": "symfony/cache-contracts", - "version": "v1.1.7", - "source": { - "type": "git", - "url": "https://github.com/symfony/cache-contracts.git", - "reference": "af50d14ada9e4e82cfabfabdc502d144f89be0a1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/af50d14ada9e4e82cfabfabdc502d144f89be0a1", - "reference": "af50d14ada9e4e82cfabfabdc502d144f89be0a1", - "shasum": "" - }, - "require": { - "php": "^7.1.3", - "psr/cache": "^1.0" - }, - "suggest": { - "symfony/cache-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Cache\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Generic abstractions related to caching", - "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], - "time": "2019-10-04T21:43:27+00:00" - }, - { - "name": "symfony/config", - "version": "v4.4.6", - "source": { - "type": "git", - "url": "https://github.com/symfony/config.git", - "reference": "235e5afffd3a1a1b0dd0221973cbf670bc3be1d4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/235e5afffd3a1a1b0dd0221973cbf670bc3be1d4", - "reference": "235e5afffd3a1a1b0dd0221973cbf670bc3be1d4", - "shasum": "" - }, - "require": { - "php": "^7.1.3", - "symfony/filesystem": "^3.4|^4.0|^5.0", - "symfony/polyfill-ctype": "~1.8" - }, - "conflict": { - "symfony/finder": "<3.4" - }, - "require-dev": { - "symfony/event-dispatcher": "^3.4|^4.0|^5.0", - "symfony/finder": "^3.4|^4.0|^5.0", - "symfony/messenger": "^4.1|^5.0", - "symfony/service-contracts": "^1.1|^2", - "symfony/yaml": "^3.4|^4.0|^5.0" - }, - "suggest": { - "symfony/yaml": "To use the yaml reference dumper" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Config\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Config Component", - "homepage": "https://symfony.com", - "time": "2020-03-16T11:24:17+00:00" - }, - { - "name": "symfony/console", - "version": "v4.4.6", - "source": { - "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "20bc0c1068565103075359f5ce9e0639b36f92d1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/20bc0c1068565103075359f5ce9e0639b36f92d1", - "reference": "20bc0c1068565103075359f5ce9e0639b36f92d1", - "shasum": "" - }, - "require": { - "php": "^7.1.3", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php73": "^1.8", - "symfony/service-contracts": "^1.1|^2" - }, - "conflict": { - "symfony/dependency-injection": "<3.4", - "symfony/event-dispatcher": "<4.3|>=5", - "symfony/lock": "<4.4", - "symfony/process": "<3.3" - }, - "provide": { - "psr/log-implementation": "1.0" - }, - "require-dev": { - "psr/log": "~1.0", - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/event-dispatcher": "^4.3", - "symfony/lock": "^4.4|^5.0", - "symfony/process": "^3.4|^4.0|^5.0", - "symfony/var-dumper": "^4.3|^5.0" - }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Console\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Console Component", - "homepage": "https://symfony.com", - "time": "2020-03-16T08:56:54+00:00" - }, - { - "name": "symfony/debug", - "version": "v4.4.13", - "source": { - "type": "git", - "url": "https://github.com/symfony/debug.git", - "reference": "aeb73aca16a8f1fe958230fe44e6cf4c84cbb85e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/debug/zipball/aeb73aca16a8f1fe958230fe44e6cf4c84cbb85e", - "reference": "aeb73aca16a8f1fe958230fe44e6cf4c84cbb85e", - "shasum": "" - }, - "require": { - "php": ">=7.1.3", - "psr/log": "~1.0", - "symfony/polyfill-php80": "^1.15" - }, - "conflict": { - "symfony/http-kernel": "<3.4" - }, - "require-dev": { - "symfony/http-kernel": "^3.4|^4.0|^5.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Debug\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Debug Component", - "homepage": "https://symfony.com", - "time": "2020-08-10T07:47:39+00:00" - }, - { - "name": "symfony/dependency-injection", - "version": "v4.4.6", - "source": { - "type": "git", - "url": "https://github.com/symfony/dependency-injection.git", - "reference": "b4242fc7f18c8bf5427f84d5afe2131c9b323a04" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/b4242fc7f18c8bf5427f84d5afe2131c9b323a04", - "reference": "b4242fc7f18c8bf5427f84d5afe2131c9b323a04", - "shasum": "" - }, - "require": { - "php": "^7.1.3", - "psr/container": "^1.0", - "symfony/service-contracts": "^1.1.6|^2" - }, - "conflict": { - "symfony/config": "<4.3|>=5.0", - "symfony/finder": "<3.4", - "symfony/proxy-manager-bridge": "<3.4", - "symfony/yaml": "<3.4" - }, - "provide": { - "psr/container-implementation": "1.0", - "symfony/service-implementation": "1.0" - }, - "require-dev": { - "symfony/config": "^4.3", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/yaml": "^3.4|^4.0|^5.0" - }, - "suggest": { - "symfony/config": "", - "symfony/expression-language": "For using expressions in service container configuration", - "symfony/finder": "For using double-star glob patterns or when GLOB_BRACE portability is required", - "symfony/proxy-manager-bridge": "Generate service proxies to lazy load them", - "symfony/yaml": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\DependencyInjection\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony DependencyInjection Component", - "homepage": "https://symfony.com", - "time": "2020-03-18T07:51:32+00:00" - }, - { - "name": "symfony/doctrine-bridge", - "version": "v4.4.6", - "source": { - "type": "git", - "url": "https://github.com/symfony/doctrine-bridge.git", - "reference": "57a825089b7a9851fe552b08ed83f7625352c9ab" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/57a825089b7a9851fe552b08ed83f7625352c9ab", - "reference": "57a825089b7a9851fe552b08ed83f7625352c9ab", - "shasum": "" - }, - "require": { - "doctrine/event-manager": "~1.0", - "doctrine/persistence": "^1.3", - "php": "^7.1.3", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-mbstring": "~1.0", - "symfony/service-contracts": "^1.1|^2" - }, - "conflict": { - "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0", - "symfony/dependency-injection": "<3.4", - "symfony/form": "<4.4", - "symfony/http-kernel": "<4.3.7", - "symfony/messenger": "<4.3", - "symfony/security-core": "<4.4", - "symfony/validator": "<4.4.2|<5.0.2,>=5.0" - }, - "require-dev": { - "doctrine/annotations": "~1.7", - "doctrine/cache": "~1.6", - "doctrine/collections": "~1.0", - "doctrine/data-fixtures": "1.0.*", - "doctrine/dbal": "~2.4", - "doctrine/orm": "^2.6.3", - "doctrine/reflection": "~1.0", - "symfony/config": "^4.2|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/form": "^4.4|^5.0", - "symfony/http-kernel": "^4.3.7", - "symfony/messenger": "^4.4|^5.0", - "symfony/property-access": "^3.4|^4.0|^5.0", - "symfony/property-info": "^3.4|^4.0|^5.0", - "symfony/proxy-manager-bridge": "^3.4|^4.0|^5.0", - "symfony/security-core": "^4.4|^5.0", - "symfony/stopwatch": "^3.4|^4.0|^5.0", - "symfony/translation": "^3.4|^4.0|^5.0", - "symfony/validator": "^4.4.2|^5.0.2", - "symfony/var-dumper": "^3.4|^4.0|^5.0" - }, - "suggest": { - "doctrine/data-fixtures": "", - "doctrine/dbal": "", - "doctrine/orm": "", - "symfony/form": "", - "symfony/property-info": "", - "symfony/validator": "" - }, - "type": "symfony-bridge", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Bridge\\Doctrine\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Doctrine Bridge", - "homepage": "https://symfony.com", - "time": "2020-03-16T11:24:17+00:00" - }, - { - "name": "symfony/error-handler", - "version": "v4.4.13", - "source": { - "type": "git", - "url": "https://github.com/symfony/error-handler.git", - "reference": "2434fb32851f252e4f27691eee0b77c16198db62" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/2434fb32851f252e4f27691eee0b77c16198db62", - "reference": "2434fb32851f252e4f27691eee0b77c16198db62", - "shasum": "" - }, - "require": { - "php": ">=7.1.3", - "psr/log": "~1.0", - "symfony/debug": "^4.4.5", - "symfony/polyfill-php80": "^1.15", - "symfony/var-dumper": "^4.4|^5.0" - }, - "require-dev": { - "symfony/http-kernel": "^4.4|^5.0", - "symfony/serializer": "^4.4|^5.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\ErrorHandler\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony ErrorHandler Component", - "homepage": "https://symfony.com", - "time": "2020-08-17T09:56:45+00:00" - }, - { - "name": "symfony/event-dispatcher", - "version": "v4.4.13", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "3e8ea5ccddd00556b86d69d42f99f1061a704030" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/3e8ea5ccddd00556b86d69d42f99f1061a704030", - "reference": "3e8ea5ccddd00556b86d69d42f99f1061a704030", - "shasum": "" - }, - "require": { - "php": ">=7.1.3", - "symfony/event-dispatcher-contracts": "^1.1" - }, - "conflict": { - "symfony/dependency-injection": "<3.4" - }, - "provide": { - "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "1.1" - }, - "require-dev": { - "psr/log": "~1.0", - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/http-foundation": "^3.4|^4.0|^5.0", - "symfony/service-contracts": "^1.1|^2", - "symfony/stopwatch": "^3.4|^4.0|^5.0" - }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony EventDispatcher Component", - "homepage": "https://symfony.com", - "time": "2020-08-13T14:18:44+00:00" - }, - { - "name": "symfony/event-dispatcher-contracts", - "version": "v1.1.9", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "84e23fdcd2517bf37aecbd16967e83f0caee25a7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/84e23fdcd2517bf37aecbd16967e83f0caee25a7", - "reference": "84e23fdcd2517bf37aecbd16967e83f0caee25a7", - "shasum": "" - }, - "require": { - "php": ">=7.1.3" - }, - "suggest": { - "psr/event-dispatcher": "", - "symfony/event-dispatcher-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\EventDispatcher\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Generic abstractions related to dispatching event", - "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], - "time": "2020-07-06T13:19:58+00:00" - }, - { - "name": "symfony/filesystem", - "version": "v4.4.6", - "source": { - "type": "git", - "url": "https://github.com/symfony/filesystem.git", - "reference": "6d4fdf28187250f671c1edc9cf921ebfb7fe3809" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/6d4fdf28187250f671c1edc9cf921ebfb7fe3809", - "reference": "6d4fdf28187250f671c1edc9cf921ebfb7fe3809", - "shasum": "" - }, - "require": { - "php": "^7.1.3", - "symfony/polyfill-ctype": "~1.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Filesystem\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Filesystem Component", - "homepage": "https://symfony.com", - "time": "2020-03-16T08:56:54+00:00" - }, - { - "name": "symfony/finder", - "version": "v4.4.6", - "source": { - "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "ea69c129aed9fdeca781d4b77eb20b62cf5d5357" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/ea69c129aed9fdeca781d4b77eb20b62cf5d5357", - "reference": "ea69c129aed9fdeca781d4b77eb20b62cf5d5357", - "shasum": "" - }, - "require": { - "php": "^7.1.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Finder\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Finder Component", - "homepage": "https://symfony.com", - "time": "2020-02-14T07:42:58+00:00" - }, - { - "name": "symfony/framework-bundle", - "version": "v4.4.6", - "source": { - "type": "git", - "url": "https://github.com/symfony/framework-bundle.git", - "reference": "f0ef822516463bef83625e7d33f8e047093f310e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/f0ef822516463bef83625e7d33f8e047093f310e", - "reference": "f0ef822516463bef83625e7d33f8e047093f310e", - "shasum": "" - }, - "require": { - "ext-xml": "*", - "php": "^7.1.3", - "symfony/cache": "^4.4|^5.0", - "symfony/config": "^4.3.4|^5.0", - "symfony/dependency-injection": "^4.4.1|^5.0.1", - "symfony/error-handler": "^4.4.1|^5.0.1", - "symfony/filesystem": "^3.4|^4.0|^5.0", - "symfony/finder": "^3.4|^4.0|^5.0", - "symfony/http-foundation": "^4.4|^5.0", - "symfony/http-kernel": "^4.4", - "symfony/polyfill-mbstring": "~1.0", - "symfony/routing": "^4.4|^5.0" - }, - "conflict": { - "doctrine/persistence": "<1.3", - "phpdocumentor/reflection-docblock": "<3.0", - "phpdocumentor/type-resolver": "<0.2.1", - "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0", - "symfony/asset": "<3.4", - "symfony/browser-kit": "<4.3", - "symfony/console": "<4.3", - "symfony/dom-crawler": "<4.3", - "symfony/dotenv": "<4.3.6", - "symfony/form": "<4.3.5", - "symfony/http-client": "<4.4", - "symfony/lock": "<4.4", - "symfony/mailer": "<4.4", - "symfony/messenger": "<4.4", - "symfony/mime": "<4.4", - "symfony/property-info": "<3.4", - "symfony/security-bundle": "<4.4", - "symfony/serializer": "<4.4", - "symfony/stopwatch": "<3.4", - "symfony/translation": "<4.4", - "symfony/twig-bridge": "<4.1.1", - "symfony/twig-bundle": "<4.4", - "symfony/validator": "<4.4", - "symfony/web-profiler-bundle": "<4.4", - "symfony/workflow": "<4.3.6" - }, - "require-dev": { - "doctrine/annotations": "~1.7", - "doctrine/cache": "~1.0", - "paragonie/sodium_compat": "^1.8", - "phpdocumentor/reflection-docblock": "^3.0|^4.0", - "symfony/asset": "^3.4|^4.0|^5.0", - "symfony/browser-kit": "^4.3|^5.0", - "symfony/console": "^4.3.4|^5.0", - "symfony/css-selector": "^3.4|^4.0|^5.0", - "symfony/dom-crawler": "^4.3|^5.0", - "symfony/dotenv": "^4.3.6|^5.0", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/form": "^4.3.5|^5.0", - "symfony/http-client": "^4.4|^5.0", - "symfony/lock": "^4.4|^5.0", - "symfony/mailer": "^4.4|^5.0", - "symfony/messenger": "^4.4|^5.0", - "symfony/mime": "^4.4|^5.0", - "symfony/polyfill-intl-icu": "~1.0", - "symfony/process": "^3.4|^4.0|^5.0", - "symfony/property-info": "^3.4|^4.0|^5.0", - "symfony/security-csrf": "^3.4|^4.0|^5.0", - "symfony/security-http": "^3.4|^4.0|^5.0", - "symfony/serializer": "^4.4|^5.0", - "symfony/stopwatch": "^3.4|^4.0|^5.0", - "symfony/templating": "^3.4|^4.0|^5.0", - "symfony/translation": "^4.4|^5.0", - "symfony/twig-bundle": "^4.4|^5.0", - "symfony/validator": "^4.4|^5.0", - "symfony/web-link": "^4.4|^5.0", - "symfony/workflow": "^4.3.6|^5.0", - "symfony/yaml": "^3.4|^4.0|^5.0", - "twig/twig": "^1.41|^2.10|^3.0" - }, - "suggest": { - "ext-apcu": "For best performance of the system caches", - "symfony/console": "For using the console commands", - "symfony/form": "For using forms", - "symfony/property-info": "For using the property_info service", - "symfony/serializer": "For using the serializer service", - "symfony/validator": "For using validation", - "symfony/web-link": "For using web links, features such as preloading, prefetching or prerendering", - "symfony/yaml": "For using the debug:config and lint:yaml commands" - }, - "type": "symfony-bundle", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Bundle\\FrameworkBundle\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony FrameworkBundle", - "homepage": "https://symfony.com", - "time": "2020-03-19T20:46:03+00:00" - }, - { - "name": "symfony/http-foundation", - "version": "v4.4.13", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-foundation.git", - "reference": "e3e5a62a6631a461954d471e7206e3750dbe8ee1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/e3e5a62a6631a461954d471e7206e3750dbe8ee1", - "reference": "e3e5a62a6631a461954d471e7206e3750dbe8ee1", - "shasum": "" - }, - "require": { - "php": ">=7.1.3", - "symfony/mime": "^4.3|^5.0", - "symfony/polyfill-mbstring": "~1.1" - }, - "require-dev": { - "predis/predis": "~1.0", - "symfony/expression-language": "^3.4|^4.0|^5.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\HttpFoundation\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony HttpFoundation Component", - "homepage": "https://symfony.com", - "time": "2020-08-17T07:39:58+00:00" - }, - { - "name": "symfony/http-kernel", - "version": "v4.4.13", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-kernel.git", - "reference": "2bb7b90ecdc79813c0bf237b7ff20e79062b5188" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/2bb7b90ecdc79813c0bf237b7ff20e79062b5188", - "reference": "2bb7b90ecdc79813c0bf237b7ff20e79062b5188", - "shasum": "" - }, - "require": { - "php": ">=7.1.3", - "psr/log": "~1.0", - "symfony/error-handler": "^4.4", - "symfony/event-dispatcher": "^4.4", - "symfony/http-foundation": "^4.4|^5.0", - "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-php73": "^1.9", - "symfony/polyfill-php80": "^1.15" - }, - "conflict": { - "symfony/browser-kit": "<4.3", - "symfony/config": "<3.4", - "symfony/console": ">=5", - "symfony/dependency-injection": "<4.3", - "symfony/translation": "<4.2", - "twig/twig": "<1.34|<2.4,>=2" - }, - "provide": { - "psr/log-implementation": "1.0" - }, - "require-dev": { - "psr/cache": "~1.0", - "symfony/browser-kit": "^4.3|^5.0", - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/console": "^3.4|^4.0", - "symfony/css-selector": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^4.3|^5.0", - "symfony/dom-crawler": "^3.4|^4.0|^5.0", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/finder": "^3.4|^4.0|^5.0", - "symfony/process": "^3.4|^4.0|^5.0", - "symfony/routing": "^3.4|^4.0|^5.0", - "symfony/stopwatch": "^3.4|^4.0|^5.0", - "symfony/templating": "^3.4|^4.0|^5.0", - "symfony/translation": "^4.2|^5.0", - "symfony/translation-contracts": "^1.1|^2", - "twig/twig": "^1.34|^2.4|^3.0" - }, - "suggest": { - "symfony/browser-kit": "", - "symfony/config": "", - "symfony/console": "", - "symfony/dependency-injection": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\HttpKernel\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony HttpKernel Component", - "homepage": "https://symfony.com", - "time": "2020-09-02T08:09:29+00:00" - }, - { - "name": "symfony/mime", - "version": "v4.4.13", - "source": { - "type": "git", - "url": "https://github.com/symfony/mime.git", - "reference": "50ad671306d3d3ffb888d95b4fb1859496831e3a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/50ad671306d3d3ffb888d95b4fb1859496831e3a", - "reference": "50ad671306d3d3ffb888d95b4fb1859496831e3a", - "shasum": "" - }, - "require": { - "php": ">=7.1.3", - "symfony/polyfill-intl-idn": "^1.10", - "symfony/polyfill-mbstring": "^1.0" - }, - "conflict": { - "symfony/mailer": "<4.4" - }, - "require-dev": { - "egulias/email-validator": "^2.1.10", - "symfony/dependency-injection": "^3.4|^4.1|^5.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Mime\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "A library to manipulate MIME messages", - "homepage": "https://symfony.com", - "keywords": [ - "mime", - "mime-type" - ], - "time": "2020-08-17T09:56:45+00:00" - }, - { - "name": "symfony/options-resolver", - "version": "v4.4.13", - "source": { - "type": "git", - "url": "https://github.com/symfony/options-resolver.git", - "reference": "376bd3a02e7946dbf90b01563361b47dde425025" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/376bd3a02e7946dbf90b01563361b47dde425025", - "reference": "376bd3a02e7946dbf90b01563361b47dde425025", - "shasum": "" - }, - "require": { - "php": ">=7.1.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\OptionsResolver\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony OptionsResolver Component", - "homepage": "https://symfony.com", - "keywords": [ - "config", - "configuration", - "options" - ], - "time": "2020-07-10T09:12:14+00:00" - }, - { - "name": "symfony/polyfill-ctype", - "version": "v1.18.1", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "1c302646f6efc070cd46856e600e5e0684d6b454" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/1c302646f6efc070cd46856e600e5e0684d6b454", - "reference": "1c302646f6efc070cd46856e600e5e0684d6b454", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "suggest": { - "ext-ctype": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.18-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Gert de Pagter", - "email": "BackEndTea@gmail.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for ctype functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "ctype", - "polyfill", - "portable" - ], - "time": "2020-07-14T12:35:20+00:00" - }, - { - "name": "symfony/polyfill-iconv", - "version": "v1.15.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-iconv.git", - "reference": "ad6d62792bfbcfc385dd34b424d4fcf9712a32c8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/ad6d62792bfbcfc385dd34b424d4fcf9712a32c8", - "reference": "ad6d62792bfbcfc385dd34b424d4fcf9712a32c8", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "suggest": { - "ext-iconv": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.15-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Iconv\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for the Iconv extension", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "iconv", - "polyfill", - "portable", - "shim" - ], - "time": "2020-03-09T19:04:49+00:00" - }, - { - "name": "symfony/polyfill-intl-idn", - "version": "v1.18.1", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "5dcab1bc7146cf8c1beaa4502a3d9be344334251" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/5dcab1bc7146cf8c1beaa4502a3d9be344334251", - "reference": "5dcab1bc7146cf8c1beaa4502a3d9be344334251", - "shasum": "" - }, - "require": { - "php": ">=5.3.3", - "symfony/polyfill-intl-normalizer": "^1.10", - "symfony/polyfill-php70": "^1.10", - "symfony/polyfill-php72": "^1.10" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.18-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Intl\\Idn\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Laurent Bassin", - "email": "laurent@bassin.info" - }, - { - "name": "Trevor Rowbotham", - "email": "trevor.rowbotham@pm.me" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "idn", - "intl", - "polyfill", - "portable", - "shim" - ], - "time": "2020-08-04T06:02:08+00:00" - }, - { - "name": "symfony/polyfill-intl-normalizer", - "version": "v1.18.1", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "37078a8dd4a2a1e9ab0231af7c6cb671b2ed5a7e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/37078a8dd4a2a1e9ab0231af7c6cb671b2ed5a7e", - "reference": "37078a8dd4a2a1e9ab0231af7c6cb671b2ed5a7e", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.18-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Intl\\Normalizer\\": "" - }, - "files": [ - "bootstrap.php" - ], - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for intl's Normalizer class and related functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "intl", - "normalizer", - "polyfill", - "portable", - "shim" - ], - "time": "2020-07-14T12:35:20+00:00" - }, - { - "name": "symfony/polyfill-mbstring", - "version": "v1.18.1", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "a6977d63bf9a0ad4c65cd352709e230876f9904a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/a6977d63bf9a0ad4c65cd352709e230876f9904a", - "reference": "a6977d63bf9a0ad4c65cd352709e230876f9904a", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.18-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for the Mbstring extension", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "mbstring", - "polyfill", - "portable", - "shim" - ], - "time": "2020-07-14T12:35:20+00:00" - }, - { - "name": "symfony/polyfill-php56", - "version": "v1.15.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php56.git", - "reference": "d51ec491c8ddceae7dca8dd6c7e30428f543f37d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php56/zipball/d51ec491c8ddceae7dca8dd6c7e30428f543f37d", - "reference": "d51ec491c8ddceae7dca8dd6c7e30428f543f37d", - "shasum": "" - }, - "require": { - "php": ">=5.3.3", - "symfony/polyfill-util": "~1.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.15-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php56\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 5.6+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "time": "2020-03-09T19:04:49+00:00" - }, - { - "name": "symfony/polyfill-php70", - "version": "v1.18.1", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php70.git", - "reference": "0dd93f2c578bdc9c72697eaa5f1dd25644e618d3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/0dd93f2c578bdc9c72697eaa5f1dd25644e618d3", - "reference": "0dd93f2c578bdc9c72697eaa5f1dd25644e618d3", - "shasum": "" - }, - "require": { - "paragonie/random_compat": "~1.0|~2.0|~9.99", - "php": ">=5.3.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.18-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php70\\": "" - }, - "files": [ - "bootstrap.php" - ], - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 7.0+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "time": "2020-07-14T12:35:20+00:00" - }, - { - "name": "symfony/polyfill-php72", - "version": "v1.18.1", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "639447d008615574653fb3bc60d1986d7172eaae" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/639447d008615574653fb3bc60d1986d7172eaae", - "reference": "639447d008615574653fb3bc60d1986d7172eaae", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.18-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php72\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "time": "2020-07-14T12:35:20+00:00" - }, - { - "name": "symfony/polyfill-php73", - "version": "v1.18.1", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php73.git", - "reference": "fffa1a52a023e782cdcc221d781fe1ec8f87fcca" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/fffa1a52a023e782cdcc221d781fe1ec8f87fcca", - "reference": "fffa1a52a023e782cdcc221d781fe1ec8f87fcca", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.18-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php73\\": "" - }, - "files": [ - "bootstrap.php" - ], - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "time": "2020-07-14T12:35:20+00:00" - }, - { - "name": "symfony/polyfill-php80", - "version": "v1.18.1", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "d87d5766cbf48d72388a9f6b85f280c8ad51f981" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/d87d5766cbf48d72388a9f6b85f280c8ad51f981", - "reference": "d87d5766cbf48d72388a9f6b85f280c8ad51f981", - "shasum": "" - }, - "require": { - "php": ">=7.0.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.18-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php80\\": "" - }, - "files": [ - "bootstrap.php" - ], - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Ion Bazan", - "email": "ion.bazan@gmail.com" - }, - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "time": "2020-07-14T12:35:20+00:00" - }, - { - "name": "symfony/polyfill-util", - "version": "v1.15.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-util.git", - "reference": "d8e76c104127675d0ea3df3be0f2ae24a8619027" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-util/zipball/d8e76c104127675d0ea3df3be0f2ae24a8619027", - "reference": "d8e76c104127675d0ea3df3be0f2ae24a8619027", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.15-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Util\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony utilities for portability of PHP codes", - "homepage": "https://symfony.com", - "keywords": [ - "compat", - "compatibility", - "polyfill", - "shim" - ], - "time": "2020-03-02T11:55:35+00:00" - }, - { - "name": "symfony/polyfill-uuid", - "version": "v1.18.1", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-uuid.git", - "reference": "da48e2cccd323e48c16c26481bf5800f6ab1c49d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-uuid/zipball/da48e2cccd323e48c16c26481bf5800f6ab1c49d", - "reference": "da48e2cccd323e48c16c26481bf5800f6ab1c49d", - "shasum": "" - }, - "require": { - "paragonie/random_compat": "~1.0|~2.0|~9.99", - "php": ">=5.3.3" - }, - "suggest": { - "ext-uuid": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.18-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Uuid\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Grégoire Pineau", - "email": "lyrixx@lyrixx.info" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for uuid functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "uuid" - ], - "time": "2020-07-14T12:35:20+00:00" - }, - { - "name": "symfony/process", - "version": "v4.4.6", - "source": { - "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "b9863d0f7b684d7c4c13e665325b5ff047de0aee" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/b9863d0f7b684d7c4c13e665325b5ff047de0aee", - "reference": "b9863d0f7b684d7c4c13e665325b5ff047de0aee", - "shasum": "" - }, - "require": { - "php": "^7.1.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Process\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Process Component", - "homepage": "https://symfony.com", - "time": "2020-03-23T12:37:11+00:00" - }, - { - "name": "symfony/routing", - "version": "v4.4.6", - "source": { - "type": "git", - "url": "https://github.com/symfony/routing.git", - "reference": "bd92312650007d29bbabf00795c591b975a0b9a6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/bd92312650007d29bbabf00795c591b975a0b9a6", - "reference": "bd92312650007d29bbabf00795c591b975a0b9a6", - "shasum": "" - }, - "require": { - "php": "^7.1.3" - }, - "conflict": { - "symfony/config": "<4.2", - "symfony/dependency-injection": "<3.4", - "symfony/yaml": "<3.4" - }, - "require-dev": { - "doctrine/annotations": "~1.2", - "psr/log": "~1.0", - "symfony/config": "^4.2|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/http-foundation": "^3.4|^4.0|^5.0", - "symfony/yaml": "^3.4|^4.0|^5.0" - }, - "suggest": { - "doctrine/annotations": "For using the annotation loader", - "symfony/config": "For using the all-in-one router or any loader", - "symfony/expression-language": "For using expression matching", - "symfony/http-foundation": "For using a Symfony Request object", - "symfony/yaml": "For using the YAML loader" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Routing\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Routing Component", - "homepage": "https://symfony.com", - "keywords": [ - "router", - "routing", - "uri", - "url" - ], - "time": "2020-03-16T11:24:17+00:00" - }, - { - "name": "symfony/service-contracts", - "version": "v1.1.8", - "source": { - "type": "git", - "url": "https://github.com/symfony/service-contracts.git", - "reference": "ffc7f5692092df31515df2a5ecf3b7302b3ddacf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/ffc7f5692092df31515df2a5ecf3b7302b3ddacf", - "reference": "ffc7f5692092df31515df2a5ecf3b7302b3ddacf", - "shasum": "" - }, - "require": { - "php": "^7.1.3", - "psr/container": "^1.0" - }, - "suggest": { - "symfony/service-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Service\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Generic abstractions related to writing services", - "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], - "time": "2019-10-14T12:27:06+00:00" - }, - { - "name": "symfony/var-dumper", - "version": "v4.4.13", - "source": { - "type": "git", - "url": "https://github.com/symfony/var-dumper.git", - "reference": "1bef32329f3166486ab7cb88599cae4875632b99" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/1bef32329f3166486ab7cb88599cae4875632b99", - "reference": "1bef32329f3166486ab7cb88599cae4875632b99", - "shasum": "" - }, - "require": { - "php": ">=7.1.3", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php72": "~1.5", - "symfony/polyfill-php80": "^1.15" - }, - "conflict": { - "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0", - "symfony/console": "<3.4" - }, - "require-dev": { - "ext-iconv": "*", - "symfony/console": "^3.4|^4.0|^5.0", - "symfony/process": "^4.4|^5.0", - "twig/twig": "^1.34|^2.4|^3.0" - }, - "suggest": { - "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", - "ext-intl": "To show region name in time zone dump", - "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" - }, - "bin": [ - "Resources/bin/var-dump-server" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, - "autoload": { - "files": [ - "Resources/functions/dump.php" - ], - "psr-4": { - "Symfony\\Component\\VarDumper\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony mechanism for exploring and dumping PHP variables", - "homepage": "https://symfony.com", - "keywords": [ - "debug", - "dump" - ], - "time": "2020-08-17T07:31:35+00:00" - }, - { - "name": "symfony/var-exporter", - "version": "v4.4.6", - "source": { - "type": "git", - "url": "https://github.com/symfony/var-exporter.git", - "reference": "982ddfd0d7aeb2be0227c242399c3f29e0403266" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/var-exporter/zipball/982ddfd0d7aeb2be0227c242399c3f29e0403266", - "reference": "982ddfd0d7aeb2be0227c242399c3f29e0403266", - "shasum": "" - }, - "require": { - "php": "^7.1.3" - }, - "require-dev": { - "symfony/var-dumper": "^4.1.1|^5.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\VarExporter\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "A blend of var_export() + serialize() to turn any serializable data structure to plain PHP code", - "homepage": "https://symfony.com", - "keywords": [ - "clone", - "construct", - "export", - "hydrate", - "instantiate", - "serialize" - ], - "time": "2020-03-16T11:24:17+00:00" - }, - { - "name": "symfony/yaml", - "version": "v3.4.38", - "source": { - "type": "git", - "url": "https://github.com/symfony/yaml.git", - "reference": "bc63e15160866e8730a1f738541b194c401f72bf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/bc63e15160866e8730a1f738541b194c401f72bf", - "reference": "bc63e15160866e8730a1f738541b194c401f72bf", - "shasum": "" - }, - "require": { - "php": "^5.5.9|>=7.0.8", - "symfony/polyfill-ctype": "~1.8" - }, - "conflict": { - "symfony/console": "<3.4" - }, - "require-dev": { - "symfony/console": "~3.4|~4.0" - }, - "suggest": { - "symfony/console": "For validating YAML files using the lint command" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.4-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Yaml\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Yaml Component", - "homepage": "https://symfony.com", - "time": "2020-01-16T19:04:26+00:00" - }, - { - "name": "textalk/websocket", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/Textalk/websocket-php.git", - "reference": "ba2e5f9ef7cf24d536d1c864ae74b2a9599b86eb" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Textalk/websocket-php/zipball/ba2e5f9ef7cf24d536d1c864ae74b2a9599b86eb", - "reference": "ba2e5f9ef7cf24d536d1c864ae74b2a9599b86eb", - "shasum": "" - }, - "require-dev": { - "phpunit/phpunit": "4.1.*", - "phpunit/phpunit-selenium": "1.3.3", - "satooshi/php-coveralls": "dev-master" - }, - "type": "library", - "autoload": { - "psr-4": { - "WebSocket\\": "lib" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fredrik Liljegren", - "email": "fredrik.liljegren@textalk.se" - } - ], - "description": "WebSocket client and server", - "time": "2015-04-11T05:45:54+00:00" - }, - { - "name": "twig/twig", - "version": "v2.12.5", - "source": { - "type": "git", - "url": "https://github.com/twigphp/Twig.git", - "reference": "18772e0190734944277ee97a02a9a6c6555fcd94" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/18772e0190734944277ee97a02a9a6c6555fcd94", - "reference": "18772e0190734944277ee97a02a9a6c6555fcd94", - "shasum": "" - }, - "require": { - "php": "^7.0", - "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-mbstring": "^1.3" - }, - "require-dev": { - "psr/container": "^1.0", - "symfony/phpunit-bridge": "^4.4|^5.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.12-dev" - } - }, - "autoload": { - "psr-0": { - "Twig_": "lib/" - }, - "psr-4": { - "Twig\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com", - "homepage": "http://fabien.potencier.org", - "role": "Lead Developer" - }, - { - "name": "Twig Team", - "role": "Contributors" - }, - { - "name": "Armin Ronacher", - "email": "armin.ronacher@active-4.com", - "role": "Project Founder" - } - ], - "description": "Twig, the flexible, fast, and secure template language for PHP", - "homepage": "https://twig.symfony.com", - "keywords": [ - "templating" - ], - "time": "2020-02-11T15:31:23+00:00" - }, - { - "name": "webmozart/assert", - "version": "1.7.0", - "source": { - "type": "git", - "url": "https://github.com/webmozarts/assert.git", - "reference": "aed98a490f9a8f78468232db345ab9cf606cf598" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/aed98a490f9a8f78468232db345ab9cf606cf598", - "reference": "aed98a490f9a8f78468232db345ab9cf606cf598", - "shasum": "" - }, - "require": { - "php": "^5.3.3 || ^7.0", - "symfony/polyfill-ctype": "^1.8" - }, - "conflict": { - "vimeo/psalm": "<3.6.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.36 || ^7.5.13" - }, - "type": "library", - "autoload": { - "psr-4": { - "Webmozart\\Assert\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" - } - ], - "description": "Assertions to validate method input/output with nice error messages.", - "keywords": [ - "assert", - "check", - "validate" - ], - "time": "2020-02-14T12:15:55+00:00" - } - ], - "packages-dev": [], - "aliases": [ - { - "alias": "1.0", - "alias_normalized": "1.0.0.0", - "version": "dev-twake-1.0", - "package": "mxp100/pusher" - } - ], - "minimum-stability": "stable", - "stability-flags": { - "mxp100/pusher": 20 - }, - "prefer-stable": false, - "prefer-lowest": false, - "platform": { - "php": ">=7.1" - }, - "platform-dev": [] -} diff --git a/twake/backend/core/composer.phar b/twake/backend/core/composer.phar deleted file mode 100755 index 863dc9ad..00000000 Binary files a/twake/backend/core/composer.phar and /dev/null differ diff --git a/twake/backend/core/generate_onpremise_version.php b/twake/backend/core/generate_onpremise_version.php deleted file mode 100755 index 209a1e80..00000000 --- a/twake/backend/core/generate_onpremise_version.php +++ /dev/null @@ -1,198 +0,0 @@ - $value){ - $path = realpath($dir.DIRECTORY_SEPARATOR.$value); - - if(strpos($path."/", "generate_onpremise_version.php") !== false - || strpos($path."/", "/drive/") !== false - || strpos($path."/", "/vendor/") !== false){ - continue; - } - - $removed = false; - foreach ($exludedPathContaining as $filter) { - if(strpos($path."/", $filter) !== false){ - remove($path); - $removed = true; - break; - } - } - - if(!$removed){ - - if(!is_dir($path)) { - - $extension = explode(".", $path); - $extension = end($extension); - - if($extension!="phar") { - - $content = file_get_contents($path); - - $lines = explode("\n", $content); - $exclude = array(); - $removing = false; - foreach ($lines as $line) { - $found = false; - foreach ($exludedLinesContaining as $contain) { - if (strpos($line, $contain) !== false) { - $found = true; - } - } - if (strpos($line, "[REMOVE_ONPREMISE]") !== false) { - $removing = true; - } - - if (!$found && !$removing) { - if ($extension == "php") { - $line = str_replace(", $", ",$", $line); - $line = str_replace(") {", "){", $line); - $line = str_replace("if (", "if(", $line); - $line = str_replace("else {", "else{", $line); - $line = str_replace(" =", "=", $line); - $line = str_replace("= ", "=", $line); - $line = str_replace(" ? ", "?", $line); - $line = str_replace(" : ", ":", $line); - - //Remove one line comments - $line = preg_replace_callback('/\/\/.*|\/\*[\s\S]*?\*\/|("(\\.|[^"])*")/m', - function ($matches) { - if (\is_array($matches) && (\count($matches) > 1)) { - return $matches[1]; - } else { - return ''; - } - }, $line); - - if (strpos($line, "if") !== false || strpos($line, "else") !== false) { - $line .= "[ONPREMISE_LINE_BREAK]"; - } - - if (trim($line) != '') { - $exclude[] = trim($line); - } - } elseif ($extension == "yml") { - $splited = explode("#", $line); - - if (count($splited) > 1 && trim($splited[0]) == "") { - array_pop($splited); - $line = implode("#", $splited); - } - - if (trim($line) != '') { - $exclude[] = $line; - } - } else { - if (trim($line) != '') { - $exclude[] = $line; - } - } - } - - if (strpos($line, "[/REMOVE_ONPREMISE]") !== false) { - $removing = false; - } - } - if ($extension == "php" && strpos($path . "/", "/src/") !== false) { - if (strpos($path . "/", "/Entity/") !== false) { - $content = implode("\n", $exclude); - } else { - $content = implode("", $exclude); - } - $content = str_replace("' . $variable . "([^a-zA-Z0-9_])/"; - $replaceB[] = '$this->v' . md5($variable) . "$1"; - } - } - } - $content = preg_replace($replaceA, $replaceB, $content); - - //Re replace class vars - preg_match_all("/var +\\$[a-zA-Z_][a-zA-Z_0-9]+/", $content, $variables); - $variables = array_unique($variables[0]); - - $replaceA = []; - $replaceB = []; - foreach ($variables as $variable) { - $variable = explode(" ", $variable); - $variable = $variable[1]; - $replaceA[] = '/\\$v' . md5($variable) . "([^a-zA-Z0-9_])/"; - $replaceB[] = $variable . "$1"; - } - $content = preg_replace($replaceA, $replaceB, $content); - - } - - if (strpos($path . "/", "/Entity/") === false) { - $content = preg_replace('!/\*.*?\*/!s', '', $content); - } - - } else { - $content = implode("\n", $exclude); - } - - $content = str_replace("[ONPREMISE_LINE_BREAK]", "\n", $content); - - file_put_contents($path, $content); - - } - - } else if($value != "." && $value != "..") { - getDirContents($path); - } - - } - - } - -} - -getDirContents('./') - -?> diff --git a/twake/backend/core/phpunit.xml.dist b/twake/backend/core/phpunit.xml.dist deleted file mode 100755 index 37399b66..00000000 --- a/twake/backend/core/phpunit.xml.dist +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - tests - - - diff --git a/twake/backend/core/src/AdministrationApi/Apps/Bundle.php b/twake/backend/core/src/AdministrationApi/Apps/Bundle.php deleted file mode 100755 index f584c1e2..00000000 --- a/twake/backend/core/src/AdministrationApi/Apps/Bundle.php +++ /dev/null @@ -1,30 +0,0 @@ -routes = $routing->getRoutes(); - $this->routing_prefix = $routing->getRoutesPrefix(); - $this->initRoutes(); - - $this->services = (new Services())->getServices(); - $this->initServices(); - } -} \ No newline at end of file diff --git a/twake/backend/core/src/AdministrationApi/Apps/Controller/Apps.php b/twake/backend/core/src/AdministrationApi/Apps/Controller/Apps.php deleted file mode 100755 index 7325b5bb..00000000 --- a/twake/backend/core/src/AdministrationApi/Apps/Controller/Apps.php +++ /dev/null @@ -1,107 +0,0 @@ - Array(), - "errors" => Array() - ); - - $validation = $this->get("administration.validation"); - $token = $request->request->get("token"); - $validate_token = $validation->validateAuthentication($token); - - if ($validate_token) { - $offset = $request->request->get("offset"); - $limit = $request->request->get("limit"); - - $validate_struct = $validation->validateStructure(Array(), Array(), $limit, $offset); - - if ($validate_struct) { - $apps = $this->get("administration.apps")->getAllApps($limit, $offset); - - $data["data"] = $apps; - } else { - $data["errors"][] = "invalid_request_structure"; - } - } else { - $data["errors"][] = "invalid_authentication_token"; - } - - return new Response($data); - } - - public function getOneApp(Request $request) - { - - $data = Array( - "data" => Array(), - "errors" => Array() - ); - - $validation = $this->get("administration.validation"); - $token = $request->request->get("token"); - $validate_token = $validation->validateAuthentication($token); - - if ($validate_token) { - $app_id = $request->request->get("id"); - - $app_service = $this->get("administration.apps"); - - $app = $app_service->getOneApp($app_id); - - if ($app) { - $data["data"] = $app->getAsArray(); - } else { - $data["errors"][] = "app_not_found"; - } - } else { - $data["errors"][] = "invalid_authentication_token"; - } - - return new Response($data); - } - - public function toggleValidation(Request $request) - { - - $data = Array( - "data" => Array(), - "errors" => Array() - ); - - $validation = $this->get("administration.validation"); - $token = $request->request->get("token"); - $validate_token = $validation->validateAuthentication($token); - - if ($validate_token) { - $app_id = $request->request->get("id"); - - $app_service = $this->get("administration.apps"); - - $app = $app_service->toggleAppValidation($app_id); - - if ($app) { - $data["data"] = ""; - } else { - $data["errors"][] = "app_not_validated"; - } - } else { - $data["errors"][] = "invalid_authentication_token"; - } - - return new Response($data); - } - -} \ No newline at end of file diff --git a/twake/backend/core/src/AdministrationApi/Apps/Resources/Routing.php b/twake/backend/core/src/AdministrationApi/Apps/Resources/Routing.php deleted file mode 100755 index 694c1cc9..00000000 --- a/twake/backend/core/src/AdministrationApi/Apps/Resources/Routing.php +++ /dev/null @@ -1,18 +0,0 @@ - ["handler" => "Apps:getAllApps", "methods" => ["POST"]], - "getOneApp" => ["handler" => "Apps:getOneApp", "methods" => ["POST"]], - "toggleValidation" => ["handler" => "Apps:toggleValidation", "methods" => ["POST"]], - ]; - -} \ No newline at end of file diff --git a/twake/backend/core/src/AdministrationApi/Apps/Resources/Services.php b/twake/backend/core/src/AdministrationApi/Apps/Resources/Services.php deleted file mode 100755 index 1e7ec1f1..00000000 --- a/twake/backend/core/src/AdministrationApi/Apps/Resources/Services.php +++ /dev/null @@ -1,14 +0,0 @@ - "AdministrationApps", -// arguments: [ "@app.twake_doctrine" ] - ]; - -} \ No newline at end of file diff --git a/twake/backend/core/src/AdministrationApi/Apps/Services/AdministrationApps.php b/twake/backend/core/src/AdministrationApi/Apps/Services/AdministrationApps.php deleted file mode 100755 index 081aaed4..00000000 --- a/twake/backend/core/src/AdministrationApi/Apps/Services/AdministrationApps.php +++ /dev/null @@ -1,72 +0,0 @@ -em = $app->getServices()->get("app.twake_doctrine"); - } - - public function getAllApps($limit, $offset) - { - - $appsRepository = $this->em->getRepository("Twake\Market:Application"); - - $apps_entities = $appsRepository->findBy(array(), array(), $limit, $offset/*, "__TOKEN__id"*/); - - $apps = array(); - - foreach ($apps_entities as $app) { - $apps[] = $app->getAsArray(); - } - - return $apps; - - } - - public function getOneApp($id) - { - $appsRepository = $this->em->getRepository("Twake\Market:Application"); - - $app_tab = $appsRepository->findBy(array("id" => $id)); - - $app = false; - - if (count($app_tab) == 1) { - $app = $app_tab[0]; - } - - return $app; - } - - public function toggleAppValidation($id) - { - $appsRepository = $this->em->getRepository("Twake\Market:Application"); - - $app_tab = $appsRepository->findBy(array("id" => $id)); - - $rep = false; - - if (count($app_tab) == 1) { - if ($app_tab[0]->getPublic()) { - $app_tab[0]->setIsAvailableToPublic(!$app_tab[0]->getIsAvailableToPublic()); - $this->em->persist($app_tab[0]); - $rep = true; - } - } - - $this->em->flush(); - - return $rep; - } - -} \ No newline at end of file diff --git a/twake/backend/core/src/AdministrationApi/Core/Bundle.php b/twake/backend/core/src/AdministrationApi/Core/Bundle.php deleted file mode 100755 index 4356aa68..00000000 --- a/twake/backend/core/src/AdministrationApi/Core/Bundle.php +++ /dev/null @@ -1,24 +0,0 @@ -services = (new Services())->getServices(); - $this->initServices(); - } -} \ No newline at end of file diff --git a/twake/backend/core/src/AdministrationApi/Core/Controller/Base.php b/twake/backend/core/src/AdministrationApi/Core/Controller/Base.php deleted file mode 100755 index d68e1b15..00000000 --- a/twake/backend/core/src/AdministrationApi/Core/Controller/Base.php +++ /dev/null @@ -1,12 +0,0 @@ - "ValidationService", -// arguments: [ %administration_token% ] - ]; - -} \ No newline at end of file diff --git a/twake/backend/core/src/AdministrationApi/Core/Services/ValidationService.php b/twake/backend/core/src/AdministrationApi/Core/Services/ValidationService.php deleted file mode 100755 index 5cc51c89..00000000 --- a/twake/backend/core/src/AdministrationApi/Core/Services/ValidationService.php +++ /dev/null @@ -1,52 +0,0 @@ -token = $app->getContainer()->getParameter('env.admin_api_token'); - } - - /** - * @param $token - * @return bool - */ - public function validateAuthentication($token) - { - return $token == $this->token; - } - - /** - * @return bool - */ - public function validateStructure($filter, $sort, $limit, $page) - { - if ($limit <= 0) { - return false; - } - if ($page < 0) { - return false; - } - return true; - } - -} \ No newline at end of file diff --git a/twake/backend/core/src/AdministrationApi/Counter/Bundle.php b/twake/backend/core/src/AdministrationApi/Counter/Bundle.php deleted file mode 100755 index 3e1f3d7e..00000000 --- a/twake/backend/core/src/AdministrationApi/Counter/Bundle.php +++ /dev/null @@ -1,30 +0,0 @@ -routes = $routing->getRoutes(); - $this->routing_prefix = $routing->getRoutesPrefix(); - $this->initRoutes(); - - $this->services = (new Services())->getServices(); - $this->initServices(); - } -} \ No newline at end of file diff --git a/twake/backend/core/src/AdministrationApi/Counter/Controller/Counter.php b/twake/backend/core/src/AdministrationApi/Counter/Controller/Counter.php deleted file mode 100755 index 648cfd71..00000000 --- a/twake/backend/core/src/AdministrationApi/Counter/Controller/Counter.php +++ /dev/null @@ -1,67 +0,0 @@ - Array(), - "errors" => Array() - ); - - $validation = $this->get("administration.validation"); - $token = $request->request->get("token"); - $validate_token = $validation->validateAuthentication($token); - - if ($validate_token) { - - $keys = $request->request->get("key"); - - $begin_date = $request->request->get("begin"); - - $end_date = $request->request->get("end"); - - $counter_service = $this->get("administration.counter"); - - $counter_data = array(); - - if (is_array($keys)) { - foreach ($keys as $key) { - $counter_tab = $counter_service->getCounter($key, $begin_date, $end_date); - if ($counter_tab) { - $counter_data[$key] = $counter_tab; - } - } - if (count($counter_data) == 0) { - $data['errors'][] = "key_not_found"; - } - } elseif ($keys) { - $counter_tab = $counter_service->getCounter($keys, $begin_date, $end_date); - if ($counter_tab) { - $counter_data[$keys] = $counter_tab; - } else { - $data['errors'][] = "counter_not_found"; - } - } else { - $data['errors'][] = "key_not_found"; - } - - $data['data'] = $counter_data; - - } else { - $data["errors"][] = "invalid_authentication_token"; - } - - return new Response($data); - } - -} \ No newline at end of file diff --git a/twake/backend/core/src/AdministrationApi/Counter/Entity/StatsCounter.php b/twake/backend/core/src/AdministrationApi/Counter/Entity/StatsCounter.php deleted file mode 100755 index 872dc4fb..00000000 --- a/twake/backend/core/src/AdministrationApi/Counter/Entity/StatsCounter.php +++ /dev/null @@ -1,84 +0,0 @@ -counter_key = $counter_key; - $this->date = $date; - $this->value = 0; - } - - /** - * @return mixed - */ - public function getCounterKey() - { - return $this->counter_key; - } - - /** - * @return mixed - */ - public function getDate() - { - return $this->date; - } - - /** - * @return mixed - */ - public function getValue() - { - return $this->value; - } - - /** - * @param mixed $value BE CAREFUL THIS IS A COUNTER ! SO IT WILL BE AN ADD NOT A SET - */ - public function setIncrementValue($value) - { - $this->value = $value; - } - - public function getAsArray() - { - $date = \DateTime::createFromFormat("d-m-Y", "01-01-" . intdiv($this->getDate(), 1000)); - $days = $this->getDate() % 1000; - $date->add(new \DateInterval("P" . $days . "D")); - $date_string = date("d/m/Y", $date->getTimestamp()); - return array( - "date" => $date_string, - "value" => $this->getValue() - ); - } - -} diff --git a/twake/backend/core/src/AdministrationApi/Counter/Resources/Routing.php b/twake/backend/core/src/AdministrationApi/Counter/Resources/Routing.php deleted file mode 100755 index 8057b2af..00000000 --- a/twake/backend/core/src/AdministrationApi/Counter/Resources/Routing.php +++ /dev/null @@ -1,16 +0,0 @@ - ["handler" => "Counter:getCounter", "methods" => ["POST"]], - ]; - -} \ No newline at end of file diff --git a/twake/backend/core/src/AdministrationApi/Counter/Resources/Services.php b/twake/backend/core/src/AdministrationApi/Counter/Resources/Services.php deleted file mode 100755 index 3927a541..00000000 --- a/twake/backend/core/src/AdministrationApi/Counter/Resources/Services.php +++ /dev/null @@ -1,14 +0,0 @@ - "CounterService", -// arguments: [ "@app.twake_doctrine" ] - ]; - -} \ No newline at end of file diff --git a/twake/backend/core/src/AdministrationApi/Counter/Services/CounterService.php b/twake/backend/core/src/AdministrationApi/Counter/Services/CounterService.php deleted file mode 100755 index f7398671..00000000 --- a/twake/backend/core/src/AdministrationApi/Counter/Services/CounterService.php +++ /dev/null @@ -1,79 +0,0 @@ -em = $app->getServices()->get("app.twake_doctrine"); - } - - public function incrementCounter($key, $increment = 1) - { - $counter_repository = $this->em->getRepository("AdministrationApi\Counter:StatsCounter"); - - $counter_tab = $counter_repository->findBy(Array('counter_key' => $key), array(), 1, null, 'date', 'DESC'); - $last_counter = $counter_tab[0]; - - $date_int = intval(date("Y")) * 1000 + intval(date("z")); - - if (!$counter_tab || $last_counter->getDate() != $date_int) { - $counter = new StatsCounter($key, $date_int); - if ($last_counter) { - $increment = $increment + $last_counter->getValue(); - } - } else { - $counter = $last_counter; - } - - if (!$increment) { - return; - } - - $counter->setIncrementValue($increment); - - $this->em->merge($counter); - $this->em->flush(); - } - - public function getCounter($key, $beginDate = null, $endDate = null) - { - $counter_repository = $this->em->getRepository("AdministrationApi\Counter:StatsCounter"); - - $counter_tab = $counter_repository->findBy(Array('counter_key' => $key), array(), 20, null, 'date', 'DESC'); - - $rep = false; - - if ($beginDate) { - $beginValue = strtotime($beginDate); - $begin = intval(date('Y', $beginValue)) * 1000 + intval(date('z', $beginValue)); - } - - if ($endDate) { - $endValue = strtotime($endDate); - $end = intval(date('Y', $endValue)) * 1000 + intval(date('z', $endValue)); - } - - if ($counter_tab) { - $rep = array(); - foreach ($counter_tab as $counter_entity) { - $afterBegin = !isset($begin) || $counter_entity->getDate() >= $begin; - $beforeEnd = !isset($end) || $counter_entity->getDate() <= $end; - if ($afterBegin && $beforeEnd) { - $rep[] = $counter_entity->getAsArray(); - } - } - } - - return $rep; - } - -} diff --git a/twake/backend/core/src/AdministrationApi/Group/Bundle.php b/twake/backend/core/src/AdministrationApi/Group/Bundle.php deleted file mode 100755 index 02d112f9..00000000 --- a/twake/backend/core/src/AdministrationApi/Group/Bundle.php +++ /dev/null @@ -1,30 +0,0 @@ -routes = $routing->getRoutes(); - $this->routing_prefix = $routing->getRoutesPrefix(); - $this->initRoutes(); - - $this->services = (new Services())->getServices(); - $this->initServices(); - } -} \ No newline at end of file diff --git a/twake/backend/core/src/AdministrationApi/Group/Controller/Group.php b/twake/backend/core/src/AdministrationApi/Group/Controller/Group.php deleted file mode 100755 index 8ff0f4e0..00000000 --- a/twake/backend/core/src/AdministrationApi/Group/Controller/Group.php +++ /dev/null @@ -1,248 +0,0 @@ - Array(), -// "errors" => Array() -// ); -// -// $validation = $this->get("administration.validation"); -// $token = $request->request->get("token"); -// $validate_token = $validation->validateAuthentication($token); -// -// if ($validate_token) { -// -// $offset = $request->request->get("offset"); -// $limit = $request->request->get("limit"); -// -// $validate_struct = $validation->validateStructure(Array(), Array(), $limit, $offset); -// -// if ($validate_struct) { -// $users = $this->get("administration.users")->getAllUsers($limit, $offset); -// -// $data["data"] = $users; -// } else { -// $data["errors"][] = "invalid_request_structure"; -// } -// } else { -// $data["errors"][] = "invalid_authentication_token"; -// } -// -// return new Response($data); - - $scroll_id = $request->request->get("scroll_id"); -// $scroll_id = "DnF1ZXJ5VGhlbkZldGNoBQAAAAAAAAezFnhWeWdRZE9FUnF1eFVRczFoclljUVEAAAAAAAAHtBZ4VnlnUWRPRVJxdXhVUXMxaHJZY1FRAAAAAAAAB7UWeFZ5Z1FkT0VScXV4VVFzMWhyWWNRUQAAAAAAAAe2FnhWeWdRZE9FUnF1eFVRczFoclljUVEAAAAAAAAHtxZ4VnlnUWRPRVJxdXhVUXMxaHJZY1FR"; -// $repository = "Twake\Workspaces:Group"; - - if (isset($scroll_id) && isset($repository)) { - $globalresult = $this->get('globalsearch.pagination')->getnextelement($scroll_id, $repository); - } else { - - $globalresult = $this->get('administration.group')->getAllGroups(); - } - - $data = Array("data" => $globalresult); - //return new Response("Hello !"); - return new Response($data); - } - - public function getAllWorkspace(Request $request) - { - - $scroll_id = $request->request->get("scroll_id"); -// $scroll_id = "DnF1ZXJ5VGhlbkZldGNoBQAAAAAAAAezFnhWeWdRZE9FUnF1eFVRczFoclljUVEAAAAAAAAHtBZ4VnlnUWRPRVJxdXhVUXMxaHJZY1FRAAAAAAAAB7UWeFZ5Z1FkT0VScXV4VVFzMWhyWWNRUQAAAAAAAAe2FnhWeWdRZE9FUnF1eFVRczFoclljUVEAAAAAAAAHtxZ4VnlnUWRPRVJxdXhVUXMxaHJZY1FR"; -// $repository = "Twake\Workspaces:Group"; - - if (isset($scroll_id) && isset($repository)) { - $globalresult = $this->get('globalsearch.pagination')->getnextelement($scroll_id, $repository); - } else { - - $globalresult = $this->get('administration.group')->getAllWorkspace(); - } - - $data = Array("data" => $globalresult); - //return new Response("Hello !"); - return new Response($data); - - } - - public function getGroupbyname(Request $request) - { - - $scroll_id = $request->request->get("scroll_id"); -// $scroll_id = "DnF1ZXJ5VGhlbkZldGNoBQAAAAAAAAezFnhWeWdRZE9FUnF1eFVRczFoclljUVEAAAAAAAAHtBZ4VnlnUWRPRVJxdXhVUXMxaHJZY1FRAAAAAAAAB7UWeFZ5Z1FkT0VScXV4VVFzMWhyWWNRUQAAAAAAAAe2FnhWeWdRZE9FUnF1eFVRczFoclljUVEAAAAAAAAHtxZ4VnlnUWRPRVJxdXhVUXMxaHJZY1FR"; -// $repository = "Twake\Workspaces:Group"; - - if (isset($scroll_id) && isset($repository)) { - $globalresult = $this->get('globalsearch.pagination')->getnextelement($scroll_id, $repository); - } else { - $options = Array( - "name" => "test" - ); - $globalresult = $this->get('administration.group')->getGroupbyName($options); - } - - $data = Array("data" => $globalresult); - //return new Response("Hello !"); - return new Response($data); - - } - - public function getWpbyname(Request $request) - { - - - $scroll_id = $request->request->get("scroll_id"); -// $scroll_id = "DnF1ZXJ5VGhlbkZldGNoBQAAAAAAAAezFnhWeWdRZE9FUnF1eFVRczFoclljUVEAAAAAAAAHtBZ4VnlnUWRPRVJxdXhVUXMxaHJZY1FRAAAAAAAAB7UWeFZ5Z1FkT0VScXV4VVFzMWhyWWNRUQAAAAAAAAe2FnhWeWdRZE9FUnF1eFVRczFoclljUVEAAAAAAAAHtxZ4VnlnUWRPRVJxdXhVUXMxaHJZY1FR"; -// $repository = "Twake\Workspaces:Group"; - - if (isset($scroll_id) && isset($repository)) { - $globalresult = $this->get('globalsearch.pagination')->getnextelement($scroll_id, $repository); - } else { - $options = Array( - "name" => "test" - ); - $globalresult = $this->get('administration.group')->getWpbyName($options); - } - - $data = Array("data" => $globalresult); - //return new Response("Hello !"); - return new Response($data); - - } - - public function getUserbyMail(Request $request) - { - - - $scroll_id = $request->request->get("scroll_id"); -// $scroll_id = "DnF1ZXJ5VGhlbkZldGNoBQAAAAAAAAezFnhWeWdRZE9FUnF1eFVRczFoclljUVEAAAAAAAAHtBZ4VnlnUWRPRVJxdXhVUXMxaHJZY1FRAAAAAAAAB7UWeFZ5Z1FkT0VScXV4VVFzMWhyWWNRUQAAAAAAAAe2FnhWeWdRZE9FUnF1eFVRczFoclljUVEAAAAAAAAHtxZ4VnlnUWRPRVJxdXhVUXMxaHJZY1FR"; -// $repository = "Twake\Workspaces:Group"; - - if (isset($scroll_id) && isset($repository)) { - $globalresult = $this->get('globalsearch.pagination')->getnextelement($scroll_id, $repository); - } else { - $options = Array( - "mail" => "romar" - ); - $globalresult = $this->get('administration.group')->getUserbyMail($options); - } - - $data = Array("data" => $globalresult); - //return new Response("Hello !"); - return new Response($data); - - } - - public function getOneGroup(Request $request) - { - -// $data = Array( -// "data" => Array(), -// "errors" => Array() -// ); -// -// $validation = $this->get("administration.validation"); -// $token = $request->request->get("token"); -// $validate_token = $validation->validateAuthentication($token); -// -// if ($validate_token) { -// -// $user_id = $request->request->get("id"); -// -// $user_service = $this->get("administration.users"); -// -// $user = $user_service->getOneUser($user_id); -// -// if ($user) { -// -// if ($user == "Error") { -// $data["errors"][] = "unknown_error"; -// } else { -// -// $devices = $user_service->getUserDevices($user); -// $mails = $user_service->getUserMails($user); -// $workspaces = $user_service->getUserWorkspaces($user); -// $groups = $user_service->getUserGroups($user); -// -// $data["data"]["user"] = $user->getAsArray(); -// $data["data"]["user"]["creation_date"] = $user->getCreationDate(); -// $data["data"]["user"]["last_login"] = $user->getLastLogin(); -// $data["data"]["devices"] = $devices; -// $data["data"]["mails"] = $mails; -// $data["data"]["workspaces"] = $workspaces; -// $data["data"]["groups"] = $groups; -// } -// } else { -// $data["errors"][] = "user_not_found"; -// } -// } else { -// $data["errors"][] = "invalid_authentication_token"; -// } -// -// return new Response($data); - } - - public function findGroup(Request $request) - { - -// $data = array( -// "data" => Array(), -// "errors" => Array() -// ); -// -// $validation = $this->get("administration.validation"); -// $token = $request->request->get("token"); -// $validate_token = $validation->validateAuthentication($token); -// -// if ($validate_token) { -// $search_string = $request->request->get("search"); -// -// $users_service = $this->get("administration.users"); -// -// $users = $users_service->findUserByUsername($search_string); -// -// if (!$users) { -// $users = $users_service->findUserByEmail($search_string); -// } -// -// if (!$users) { -// $users = $users_service->findUserById($search_string); -// } -// -// if (!$users) { -// -// $advanced_search = $this->get("app.users"); -// -// $search_words = explode(" ", $search_string); -// -// $users = $advanced_search->search($search_words, Array("allow_email" => true)); -// -// } -// -// if (count($users) == 0) { -// $data['errors'][] = "user_not_found"; -// } else { -// $data['data'] = $users; -// } -// -// } else { -// $data["errors"][] = "invalid_authentication_token"; -// } -// -// return new Response($data); - } - -} \ No newline at end of file diff --git a/twake/backend/core/src/AdministrationApi/Group/Resources/Routing.php b/twake/backend/core/src/AdministrationApi/Group/Resources/Routing.php deleted file mode 100755 index 0c08fc2a..00000000 --- a/twake/backend/core/src/AdministrationApi/Group/Resources/Routing.php +++ /dev/null @@ -1,21 +0,0 @@ - ["handler" => "Group:getAllGroup", "methods" => ["POST"]], - "getwp" => ["handler" => "Group:getAllWorkspace", "methods" => ["POST"]], - "getgroupbyname" => ["handler" => "Group:getGroupbyname", "methods" => ["POST"]], - "getwpbyname" => ["handler" => "Group:getWpbyname", "methods" => ["POST"]], - "getuserbymail" => ["handler" => "Group:getUserbyMail", "methods" => ["POST"]], - ]; - -} \ No newline at end of file diff --git a/twake/backend/core/src/AdministrationApi/Group/Resources/Services.php b/twake/backend/core/src/AdministrationApi/Group/Resources/Services.php deleted file mode 100755 index ad7a6462..00000000 --- a/twake/backend/core/src/AdministrationApi/Group/Resources/Services.php +++ /dev/null @@ -1,14 +0,0 @@ - "AdministrationGroup", -// arguments: [ "@app.twake_doctrine" ] - ]; - -} \ No newline at end of file diff --git a/twake/backend/core/src/AdministrationApi/Group/Services/AdministrationGroup.php b/twake/backend/core/src/AdministrationApi/Group/Services/AdministrationGroup.php deleted file mode 100755 index aba2033b..00000000 --- a/twake/backend/core/src/AdministrationApi/Group/Services/AdministrationGroup.php +++ /dev/null @@ -1,307 +0,0 @@ - Array(), "scroll_id" => ""); - - public function __construct(App $app) - { - $this->em = $app->getServices()->get("app.twake_doctrine"); - } - - public function getGroupbyName($options) - { - - if (isset($options["name"])) { - $name = $options["name"]; - - $options = Array( - "repository" => "Twake\Workspaces:Group", - "index" => "group", - "size" => 10, - "query" => Array( - "bool" => Array( - "should" => Array( - "bool" => Array( - "filter" => Array( - "regexp" => Array( - "name" => ".*" . $name . ".*" - ) - ) - ) - ) - ) - ), - "sort" => Array( - "creation_date" => Array( - "order" => "desc" - ) - ) - ); - } - // search in ES - $result = $this->em->es_search($options); - - //var_dump(json_encode($options,JSON_PRETTY_PRINT)); - - array_slice($result["result"], 0, 5); - - $scroll_id = $result["scroll_id"]; - - //on traite les données recu d'Elasticsearch - //var_dump(json_encode($options)); - foreach ($result["result"] as $group) { - if($group && $group[0]){ - $this->list_group["group"][] = Array($group[0]->getAsArray(), $group[1][0]); - } - } -// var_dump("nombre de resultat : " . count($this->list_files)); -// var_dump($this->list_group); - $this->list_group["scroll_id"] = $scroll_id; - - return $this->list_group ?: null; - } - - public function getAllUsers() - { - $options = Array( - "repository" => "Twake\Users:User", - "index" => "users", - "size" => 10, - "query" => Array( - "match_all" => (object)[] - ), - "sort" => Array( - "creation_date" => Array( - "order" => "desc" - ) - ) - ); - - // search in ES - $result = $this->em->es_search($options); - - array_slice($result["result"], 0, 5); - - $scroll_id = $result["scroll_id"]; - - //on traite les données recu d'Elasticsearch - //var_dump(json_encode($options)); - foreach ($result["result"] as $user) { - //var_dump($file->getAsArray()); - $this->list_group["users"][] = Array($user[0]->getAsArray(), $user[1][0]);; - } -// var_dump("nombre de resultat : " . count($this->list_files)); -// var_dump($this->list_group); - $this->list_group["scroll_id"] = $scroll_id; - - return $this->list_group ?: null; - } - - public function getWpbyName($options) - { - - if (isset($options["name"])) { - $name = $options["name"]; - - $options = Array( - "repository" => "Twake\Workspaces:Workspace", - "index" => "workspace", - "size" => 10, - "query" => Array( - "bool" => Array( - "should" => Array( - "bool" => Array( - "filter" => Array( - "regexp" => Array( - "name" => ".*" . $name . ".*" - ) - ) - ) - ) - ) - ), - "sort" => Array( - "creation_date" => Array( - "order" => "desc" - ) - ) - ); - } - // search in ES - $result = $this->em->es_search($options); - - - array_slice($result["result"], 0, 5); - - $scroll_id = $result["scroll_id"]; - - //on traite les données recu d'Elasticsearch - //var_dump(json_encode($options)); - foreach ($result["result"] as $group) { - //var_dump($file->getAsArray()); - $this->list_group["group"][] = Array($group[0]->getAsArray(), $group[1][0]);; - } -// var_dump("nombre de resultat : " . count($this->list_files)); -// var_dump($this->list_group); - $this->list_group["scroll_id"] = $scroll_id; - - return $this->list_group ?: null; - } - - public function getAllGroup() - { - -// $group = new Group("group_admin_test_2"); -// $this->em->persist($group); -// $this->em->flush(); - - $options = Array( - "repository" => "Twake\Workspaces:Group", - "index" => "group", - "size" => 10, - "query" => Array( - "match_all" => (object)[] - ), - "sort" => Array( - "creation_date" => Array( - "order" => "desc" - ) - ) - ); - - //var_dump(json_encode($options,JSON_PRETTY_PRINT)); - - // search in ES - $result = $this->em->es_search($options); - - - array_slice($result["result"], 0, 5); - - $scroll_id = $result["scroll_id"]; - - //on traite les données recu d'Elasticsearch - //var_dump(json_encode($options)); - foreach ($result["result"] as $group) { - //var_dump($file->getAsArray()); - $this->list_group["group"][] = Array($group[0]->getAsArray(), $group[1][0]);; - } -// var_dump("nombre de resultat : " . count($this->list_files)); -// var_dump($this->list_group); - $this->list_group["scroll_id"] = $scroll_id; - - return $this->list_group ?: null; - } - - public function getAllWorkspace() - { - -// $group = new Group("group_for_workspace_1"); -// $this->em->persist($group); -// $this->em->flush(); -// -// $wp = new Workspace("workspace_admin_test_1"); -// $wp->setGroup($group); -// $this->em->persist($wp); -// $this->em->flush(); - - $options = Array( - "repository" => "Twake\Workspaces:Workspace", - "index" => "workspace", - "size" => 10, - "query" => Array( - "match_all" => (object)[] - ), - "sort" => Array( - "creation_date" => Array( - "order" => "desc" - ) - ) - ); - - //var_dump(json_encode($options,JSON_PRETTY_PRINT)); - - // search in ES - $result = $this->em->es_search($options); - - - array_slice($result["result"], 0, 5); - - $scroll_id = $result["scroll_id"]; - - //on traite les données recu d'Elasticsearch - //var_dump(json_encode($options)); - foreach ($result["result"] as $wp) { - $this->list_group["group"][] = Array($wp[0]->getAsArray(), $wp[1][0]);; - } -// var_dump("nombre de resultat : " . count($this->list_files)); -// var_dump($this->list_group); - $this->list_group["scroll_id"] = $scroll_id; - - return $this->list_group ?: null; - } - - public function getUserbyMail($options) - { - - if (isset($options["mail"])) { - $mail = $options["mail"]; - - //var_dump("passage"); - - $options = Array( - "repository" => "Twake\Users:Mail", - "index" => "mail", - "size" => 10, - "query" => Array( - "bool" => Array( - "should" => Array( - "bool" => Array( - "filter" => Array( - "regexp" => Array( - "mail" => ".*" . $mail . ".*" - ) - ) - ) - ) - ) - ), - ); - } - -// $mail = new Mail(); -// $mail->setMail("romaric@twakemail.fr"); -// $this->em->persist($mail); -// $this->em->flush(); - - // search in ES - $result = $this->em->es_search($options); - - - array_slice($result["result"], 0, 5); - - $scroll_id = $result["scroll_id"]; - - //on traite les données recu d'Elasticsearch - //var_dump(json_encode($options)); - foreach ($result["result"] as $mail) { - //var_dump($file->getAsArray()); - $this->list_group["group"][] = $mail[0]->getUser() - ->getId() . ""; - } -// var_dump("nombre de resultat : " . count($this->list_files)); -// var_dump($this->list_group); - $this->list_group["scroll_id"] = $scroll_id; - - return $this->list_group ?: null; - } - -} diff --git a/twake/backend/core/src/AdministrationApi/Users/Bundle.php b/twake/backend/core/src/AdministrationApi/Users/Bundle.php deleted file mode 100755 index cae77592..00000000 --- a/twake/backend/core/src/AdministrationApi/Users/Bundle.php +++ /dev/null @@ -1,30 +0,0 @@ -routes = $routing->getRoutes(); - $this->routing_prefix = $routing->getRoutesPrefix(); - $this->initRoutes(); - - $this->services = (new Services())->getServices(); - $this->initServices(); - } -} \ No newline at end of file diff --git a/twake/backend/core/src/AdministrationApi/Users/Controller/Users.php b/twake/backend/core/src/AdministrationApi/Users/Controller/Users.php deleted file mode 100755 index f3fbef30..00000000 --- a/twake/backend/core/src/AdministrationApi/Users/Controller/Users.php +++ /dev/null @@ -1,143 +0,0 @@ - Array(), - "errors" => Array() - ); - - $validation = $this->get("administration.validation"); - $token = $request->request->get("token"); - $validate_token = $validation->validateAuthentication($token); - - if ($validate_token) { - - $repository = "Twake\Users:User"; - - $scroll_id = $request->request->get("scroll_id"); - - $options = Array(); - - if (isset($scroll_id) && isset($repository)) { - $options["scroll_id"] = $scroll_id; - } - - $users = $this->get("administration.users")->getAllUsers($options); - - $data["data"] = $users; - - } else { - $data["errors"][] = "invalid_authentication_token"; - } - - return new Response($data); - } - - public function getOneUser(Request $request) - { - - $data = Array( - "data" => Array(), - "errors" => Array() - ); - - $validation = $this->get("administration.validation"); - $token = $request->request->get("token"); - $validate_token = $validation->validateAuthentication($token); - - if ($validate_token) { - - $user_id = $request->request->get("id"); - - $user_service = $this->get("administration.users"); - - $user = $user_service->getOneUser($user_id); - - if ($user) { - - if ($user == "Error") { - $data["errors"][] = "unknown_error"; - } else { - - $devices = $user_service->getUserDevices($user); - $mails = $user_service->getUserMails($user); - $workspaces = $user_service->getUserWorkspaces($user); - $groups = $user_service->getUserGroups($user); - - $data["data"]["user"] = $user->getAsArray(); - $data["data"]["user"]["creation_date"] = $user->getCreationDate(); - $data["data"]["user"]["last_login"] = $user->getLastLogin(); - $data["data"]["devices"] = $devices; - $data["data"]["mails"] = $mails; - $data["data"]["workspaces"] = $workspaces; - $data["data"]["groups"] = $groups; - } - } else { - $data["errors"][] = "user_not_found"; - } - } else { - $data["errors"][] = "invalid_authentication_token"; - } - - return new Response($data); - } - - public function findUser(Request $request) - { - - $data = array( - "data" => Array(), - "errors" => Array() - ); - - $validation = $this->get("administration.validation"); - $token = $request->request->get("token"); - $validate_token = $validation->validateAuthentication($token); - - if ($validate_token) { - $search_string = $request->request->get("search"); - - $users_service = $this->get("administration.users"); - - $users = $users_service->findUserById($search_string); - - if (count($users["users"]) == 0) { - $options = Array( - "mail" => $search_string - ); - $users = $this->get('administration.users')->getUserbyMail($options); - } - - if (count($users["users"]) == 0) { - - $advanced_search = $this->get("app.users"); - - $options = array( - "name" => $search_string - ); - - $users = $advanced_search->search($options); - - } - - $data['data'] = $users; - } else { - $data["errors"][] = "invalid_authentication_token"; - } - - return new Response($data); - } - -} \ No newline at end of file diff --git a/twake/backend/core/src/AdministrationApi/Users/Resources/Routing.php b/twake/backend/core/src/AdministrationApi/Users/Resources/Routing.php deleted file mode 100755 index fee2d6fc..00000000 --- a/twake/backend/core/src/AdministrationApi/Users/Resources/Routing.php +++ /dev/null @@ -1,18 +0,0 @@ - ["handler" => "Users:getAllUsers", "methods" => ["POST"]], - "getOne" => ["handler" => "Users:getOneUser", "methods" => ["POST"]], - "findUser" => ["handler" => "Users:findUser", "methods" => ["POST"]], - ]; - -} \ No newline at end of file diff --git a/twake/backend/core/src/AdministrationApi/Users/Resources/Services.php b/twake/backend/core/src/AdministrationApi/Users/Resources/Services.php deleted file mode 100755 index 79a0cd96..00000000 --- a/twake/backend/core/src/AdministrationApi/Users/Resources/Services.php +++ /dev/null @@ -1,14 +0,0 @@ - "AdministrationUsers", -// arguments: [ "@app.twake_doctrine" ] - ]; - -} \ No newline at end of file diff --git a/twake/backend/core/src/AdministrationApi/Users/Services/AdministrationUsers.php b/twake/backend/core/src/AdministrationApi/Users/Services/AdministrationUsers.php deleted file mode 100755 index af40564f..00000000 --- a/twake/backend/core/src/AdministrationApi/Users/Services/AdministrationUsers.php +++ /dev/null @@ -1,219 +0,0 @@ - Array(), "scroll_id" => ""); - - public function __construct(App $app) - { - $this->em = $app->getServices()->get("app.twake_doctrine"); - } - - public function getAllUsers($options) - { - - $options = Array( - "repository" => "Twake\Users:User", - "index" => "users", - "scroll_id" => $options["scroll_id"], - "size" => 10, - "query" => Array( - "match_all" => (object)[] - ), - "sort" => Array( - "creation_date" => Array( - "order" => "desc" - ) - ) - ); - - // search in ES - $result = $this->em->es_search($options); - - array_slice($result["result"], 0, 5); - - $scroll_id = $result["scroll_id"]; - - //on traite les données recu d'Elasticsearch - foreach ($result["result"] as $user) { - if($user && $user[0]){ - $user_tab = $user[0]->getAsArray(); - $user_tab['mail'] = $this->getUserMails($user[0])[0]; - $user_tab['phone_number'] = $user[0]->getPhone(); - $user_tab['creation_date'] = $user[0]->getCreationDate(); - - $this->list_user["users"][] = Array($user_tab, $user[1][0]); - } - } - $this->list_user["scroll_id"] = $scroll_id; - - return $this->list_user ?: null; - } - - public function getUserMails($user) - { - if(is_string($user)){ - $usersRepository = $this->em->getRepository("Twake\Users:User"); - $user = $usersRepository->findBy(Array("user_id" => $user)); - } - - $mailsRepository = $this->em->getRepository("Twake\Users:Mail"); - $mails_tab = $mailsRepository->findBy(Array("user_id" => $user)); - - $mails = array(); - - foreach ($mails_tab as $mail) { - $mails[] = $mail->getMail(); - } - - $mails[] = $user->getEmail()." (not verified)"; - - return $mails; - } - - public function getOneUser($user_id) - { - try { - $usersRepository = $this->em->getRepository("Twake\Users:User"); - - $user = $usersRepository->find($user_id); - - return $user; - - } catch (\Exception $e) { - return "Error"; - } - } - - public function getUserDevices($user) - { - $devicesRepository = $this->em->getRepository("Twake\Users:Device"); - - $devices_tab = $devicesRepository->findBy(Array("user_id" => $user)); - - $devices = array(); - - foreach ($devices_tab as $device) { - $devices[] = $device->getAsArray(); - } - - return $devices; - } - - public function getUserWorkspaces($user) - { - $workspacesLinkRepository = $this->em->getRepository("Twake\Workspaces:WorkspaceUser"); - $workspacesRepository = $this->em->getRepository("Twake\Workspaces:Workspace"); - - $workspaces_tab = $workspacesLinkRepository->findBy(Array("user_id" => $user->getId())); - - $workspaces = array(); - - foreach ($workspaces_tab as $workspace) { - $ws = $workspacesRepository->findOneBy(["id"=>$workspace->getWorkspaceId()]); - if($ws){ - $workspaces[] = $ws->getAsArray($this->em); - } - } - - return $workspaces; - } - - public function getUserGroups($user) - { - $groupsRepository = $this->em->getRepository("Twake\Workspaces:GroupUser"); - - $groups_tab = $groupsRepository->findBy(Array("user_id" => $user->getId())); - - $groups = array(); - - foreach ($groups_tab as $group) { - $groups[] = $group->getGroup()->getAsArray(); - } - - return $groups; - } - - public function findUserById($id) - { - - $usersRepository = $this->em->getRepository("Twake\Users:User"); - - $users = $usersRepository->findBy(Array("id" => $id)); - - $rep = array("users" => array(), "scroll_id" => ""); - - if (count($users) >= 1) { - - foreach ($users as $user) { - $user_tab = $user->getAsArray(); - $user_tab['mail'] = $user->getEmail(); - $rep["users"][] = array($user_tab, null); - } - } - - return $rep; - - } - - public function getUserbyMail($options) - { - - if (isset($options["mail"])) { - $mail = $options["mail"]; - - //var_dump("passage"); - - $options = Array( - "repository" => "Twake\Users:Mail", - "index" => "mail", - "size" => 10, - "query" => Array( - "bool" => Array( - "should" => Array( - "bool" => Array( - "filter" => Array( - "regexp" => Array( - "mail" => ".*" . $mail . ".*" - ) - ) - ) - ) - ) - ), - ); - } - - // search in ES - $result = $this->em->es_search($options); - - array_slice($result["result"], 0, 5); - - $scroll_id = $result["scroll_id"]; - - //on traite les données recu d'Elasticsearch - foreach ($result["result"] as $mail) { - $mail = $mail[0]; - $user_id = $mail->getUserId(); - $user_tab = $user->getAsArray(); - $user_tab['mail'] = $this->getUserMails($user_id)[0]; - $user_tab['phone_number'] = $user->getPhone(); - $user_tab['creation_date'] = $user->getCreationDate(); - - $this->list_user["users"][] = array($user_tab, null); - } - $this->list_user["scroll_id"] = $scroll_id; - - return $this->list_user ?: null; - } - -} diff --git a/twake/backend/core/src/AdministrationApi/Workspaces/Bundle.php b/twake/backend/core/src/AdministrationApi/Workspaces/Bundle.php deleted file mode 100755 index 2640d68a..00000000 --- a/twake/backend/core/src/AdministrationApi/Workspaces/Bundle.php +++ /dev/null @@ -1,30 +0,0 @@ -routes = $routing->getRoutes(); - $this->routing_prefix = $routing->getRoutesPrefix(); - $this->initRoutes(); - - $this->services = (new Services())->getServices(); - $this->initServices(); - } -} \ No newline at end of file diff --git a/twake/backend/core/src/AdministrationApi/Workspaces/Controller/Groups.php b/twake/backend/core/src/AdministrationApi/Workspaces/Controller/Groups.php deleted file mode 100755 index 17abfdc5..00000000 --- a/twake/backend/core/src/AdministrationApi/Workspaces/Controller/Groups.php +++ /dev/null @@ -1,190 +0,0 @@ - Array(), - "errors" => Array() - ); - - $validation = $this->get("administration.validation"); - $token = $request->request->get("token"); - $validate_token = $validation->validateAuthentication($token); - - if ($validate_token) { -// $page = $request->request->get("page"); -// $limit = $request->request->get("limit"); -// $offset = $page * $limit; -// -// $validate_struct = $validation->validateStructure(Array(), Array(), $limit, $offset); -// -// if ($validate_struct) { -// $groups = $this->get("administration.groups")->getAllGroups($limit,$offset); -// -// $data["data"] = $groups; -// } else { -// $data["errors"][] = "invalid_request_structure"; -// } - $scroll_id = $request->request->get("scroll_id"); - $repository = "Twake\Workspaces:Group"; - - $options = Array(); - - if (isset($scroll_id) && isset($repository)) { - $options["scroll_id"] = $scroll_id; - } - - $globalresult = $this->get('administration.groups')->getAllGroups($options); - - $data["data"] = $globalresult; - - } else { - $data["errors"][] = "invalid_authentication_token"; - } - - return new Response($data); - } - - public function getOneGroup(Request $request) - { - $data = Array( - "data" => Array(), - "errors" => Array() - ); - - $validation = $this->get("administration.validation"); - $token = $request->request->get("token"); - $validate_token = $validation->validateAuthentication($token); - - if ($validate_token) { - $id = $request->request->get("id"); - - $group_service = $this->get("administration.groups"); - - $group = $group_service->getOneGroup($id); - - if ($group) { - - $workspaces = $group_service->getGroupWorkspaces($group); - $members = $group_service->getGroupMembers($group); - $apps = $group_service->getGroupApps($group); - - //TODO Get group Drive size - - $data["data"]["group"] = $group->getAsArray(); - $data["data"]["group"]["creation_data"] = $group->getOnCreationData(); - $data["data"]["workspaces"] = $workspaces; - $data["data"]["members"] = $members; - $data["data"]["apps"] = $apps; - - } else { - $data["errors"][] = "group_not_found"; - } - } else { - $data["errors"][] = "invalid_authentication_token"; - } - - return new Response($data); - } - - public function findGroups(Request $request) - { - $data = Array( - "data" => Array(), - "errors" => Array() - ); - - $validation = $this->get("administration.validation"); - $token = $request->request->get("token"); - $validate_token = $validation->validateAuthentication($token); - - if ($validate_token) { - - $group_scroll_id = $request->request->get("group_scroll_id"); - - $repository = "Twake\Workspaces:Group"; - - $search_string = $request->request->get("search"); - - $data['data']['group'] = array(); - $data['data']['workspaces'] = array(); - - $options = Array( - "name" => $search_string - ); - - if (isset($group_scroll_id) && isset($repository)) { - $options["scroll_id"] = $group_scroll_id; - } - - $globalresult = $this->get('administration.groups')->getGroupbyName($options); - - $group_service = $this->get("administration.groups"); - - foreach ($globalresult['group'] as $group) { - - $id = $group[0]['id']; - - $workspaces = $group_service->getGroupWorkspaces($id); - - $data['data']['group'][] = $group[0]; - $data['data']['workspaces'] = array_merge($data['data']['workspaces'], $workspaces); - } - - $data['data']['group_scroll_id'] = $globalresult['scroll_id']; - - $group = $group_service->getOneGroup($search_string); - - if ($group) { - $data['data']['group'][] = $group->getAsArray(); - } - - $workspace_scroll_id = $request->request->get("workspace_scroll_id"); - - $repository = "Twake\Workspaces:Group"; - - if (isset($workspace_scroll_id) && isset($repository)) { - $globalresult = $this->get('globalsearch.pagination')->getnextelement($workspace_scroll_id, $repository); - } else { - $options = Array( - "name" => $search_string - ); - $globalresult = $this->get('administration.workspaces')->getWpbyName($options); - } - - foreach ($globalresult['workspace'] as $workspace) { - - $data['data']['workspaces'][] = $workspace[0]; - - } - - $data['data']['workspaces_scroll_id'] = $globalresult['scroll_id']; - - $workspace_service = $this->get("administration.workspaces"); - - $workspace = $workspace_service->getOneWorkspace($search_string); - - if ($workspace) { - $data['data']['workspaces'][] = $workspace->getAsArray($this->get("app.twake_doctrine")); - } - - - } else { - $data["errors"][] = "invalid_authentication_token"; - } - - return new Response($data); - } - -} \ No newline at end of file diff --git a/twake/backend/core/src/AdministrationApi/Workspaces/Controller/Workspaces.php b/twake/backend/core/src/AdministrationApi/Workspaces/Controller/Workspaces.php deleted file mode 100755 index 33800271..00000000 --- a/twake/backend/core/src/AdministrationApi/Workspaces/Controller/Workspaces.php +++ /dev/null @@ -1,83 +0,0 @@ - Array(), - "errors" => Array() - ); - - $validation = $this->get("administration.validation"); - $token = $request->request->get("token"); - $validate_token = $validation->validateAuthentication($token); - - if ($validate_token) { - $id = $request->request->get("id"); - - $workspace_service = $this->get("administration.workspaces"); - - $workspace = $workspace_service->getOneWorkspace($id); - - if ($workspace) { - $members = $workspace_service->getWorkspaceMembers($workspace); - $apps = $workspace_service->getWorkspaceApps($workspace); - $invited_mails = $workspace_service->getInvitedUsers($workspace); - - $data["data"]["workspace"] = $workspace->getAsArray($this->get("app.twake_doctrine")); - $data["data"]["members"] = $members; - $data["data"]["apps"] = $apps; - $data["data"]["invited"] = $invited_mails; - - //TODO Infos du workspace a recuperer : taille du Drive - } else { - $data["errors"][] = "workspace_not_found"; - } - } else { - $data["errors"][] = "invalid_authentication_token"; - } - - return new Response($data); - } - - public function getAllWorkspaces(Request $request) - { - $data = Array( - "data" => Array(), - "errors" => Array() - ); - - $validation = $this->get("administration.validation"); - $token = $request->request->get("token"); - $validate_token = $validation->validateAuthentication($token); - - if ($validate_token) { - $scroll_id = $request->request->get("scroll_id"); - $repository = "Twake\Workspaces:Group"; - - $options = Array(); - - if (isset($scroll_id) && isset($repository)) { - $options["scroll_id"] = $scroll_id; - } - - $globalresult = $this->get('administration.workspaces')->getAllWorkspace($options); - - $data = Array("data" => $globalresult); - } else { - $data["errors"][] = "invalid_authentication_token"; - } - - return new Response($data); - } - -} \ No newline at end of file diff --git a/twake/backend/core/src/AdministrationApi/Workspaces/Resources/Routing.php b/twake/backend/core/src/AdministrationApi/Workspaces/Resources/Routing.php deleted file mode 100755 index 7c5576cf..00000000 --- a/twake/backend/core/src/AdministrationApi/Workspaces/Resources/Routing.php +++ /dev/null @@ -1,20 +0,0 @@ - ["handler" => "Groups:getAllGroups", "methods" => ["POST"]], - "getOneGroup" => ["handler" => "Groups:getOneGroup", "methods" => ["POST"]], - "getAllWorkspaces" => ["handler" => "Workspaces:getAllWorkspaces", "methods" => ["POST"]], - "getWorkspace" => ["handler" => "Workspaces:getOneWorkspace", "methods" => ["POST"]], - "searchGroups" => ["handler" => "Groups:findGroups", "methods" => ["POST"]], - ]; - -} \ No newline at end of file diff --git a/twake/backend/core/src/AdministrationApi/Workspaces/Resources/Services.php b/twake/backend/core/src/AdministrationApi/Workspaces/Resources/Services.php deleted file mode 100755 index a0f09265..00000000 --- a/twake/backend/core/src/AdministrationApi/Workspaces/Resources/Services.php +++ /dev/null @@ -1,16 +0,0 @@ - "AdministrationGroups", -// arguments: [ "@app.twake_doctrine" ] - "administration.workspaces" => "AdministrationWorkspaces", -// arguments: [ "@app.twake_doctrine" ] - ]; - -} \ No newline at end of file diff --git a/twake/backend/core/src/AdministrationApi/Workspaces/Services/AdministrationGroups.php b/twake/backend/core/src/AdministrationApi/Workspaces/Services/AdministrationGroups.php deleted file mode 100755 index 31b7055e..00000000 --- a/twake/backend/core/src/AdministrationApi/Workspaces/Services/AdministrationGroups.php +++ /dev/null @@ -1,194 +0,0 @@ - Array(), "scroll_id" => ""); - - public function __construct(App $app) - { - $this->em = $app->getServices()->get("app.twake_doctrine"); - } - - public function getAllGroups($options) - { - - $options = Array( - "repository" => "Twake\Workspaces:Group", - "index" => "group", - "size" => 10, - "scroll_id" => $options["scroll_id"], - "query" => Array( - "match_all" => (object)[] - ), - "sort" => Array( - "creation_date" => Array( - "order" => "desc" - ) - ) - ); - - //var_dump(json_encode($options,JSON_PRETTY_PRINT)); - - // search in ES - $result = $this->em->es_search($options); - - - array_slice($result["result"], 0, 5); - - $scroll_id = $result["scroll_id"]; - - //on traite les données recu d'Elasticsearch - //var_dump(json_encode($options)); - foreach ($result["result"] as $group) { - //var_dump($file->getAsArray()); - $group_tab = $group[0]->getAsArray(); - $group_tab["nb_workspaces"] = count($group[0]->getWorkspaces()); - $group_tab["nb_members"] = count($this->getGroupMembers($group[0])); - $group_tab["creation_data"] = $group[0]->getOnCreationData(); - $this->list_group["group"][] = Array($group_tab, $group[1][0]); - } - //var_dump("nombre de resultat : " . count($this->list_files)); - //var_dump($this->list_group); - $this->list_group["scroll_id"] = $scroll_id; - - return $this->list_group ?: null; - } - - public function getGroupMembers($group) - { - $membersRepository = $this->em->getRepository("Twake\Workspaces:GroupUser"); - - $members_tab = $membersRepository->findBy(Array("group" => $group)); - - $members = Array(); - - foreach ($members_tab as $member) { - try{ - $members[] = $member->getUser()->getAsArray(); - }catch(\Exception $err){ - - } - } - - return $members; - } - - public function getOneGroup($group_id) - { - - $groupsRepository = $this->em->getRepository("Twake\Workspaces:Group"); - - $group = $groupsRepository->find($group_id); - - return $group; - } - - public function getGroupWorkspaces($group_id) - { - $groupsRepository = $this->em->getRepository("Twake\Workspaces:Group"); - - $group = $groupsRepository->find($group_id); - - $rep = false; - - if ($group) { - $rep = array(); - - $workspaces_tab = $group->getWorkspaces(); - - foreach ($workspaces_tab as $workspace) { - $rep[] = $workspace->getAsArray($this->em); - } - } - return $rep; - } - - public function getGroupApps($group) - { - $groupAppRepository = $this->em->getRepository("Twake\Workspaces:GroupApp"); - - $apps_tab = $groupAppRepository->findBy(array("group" => $group)); - - $apps = array(); - - $appsRepository = $this->em->getRepository("Twake\Market:Application"); - - foreach ($apps_tab as $grpApp) { - $app_id = $grpApp->getAppId(); - - $app = $appsRepository->findby(array('id' => $app_id)); - - if (count($app) == 1) { - $apps[] = $app[0]->getAsArray(); - } - - } - - return $apps; - } - - public function getGroupbyName($options) - { - - if (isset($options["name"])) { - $name = $options["name"]; - - $options = Array( - "repository" => "Twake\Workspaces:Group", - "index" => "group", - "size" => 10, - "query" => Array( - "bool" => Array( - "should" => Array( - "bool" => Array( - "filter" => Array( - "regexp" => Array( - "name" => ".*" . strtolower($name) . ".*" - ) - ) - ) - ) - ) - ), - "sort" => Array( - "creation_date" => Array( - "order" => "desc" - ) - ) - ); - } - // search in ES - $result = $this->em->es_search($options); - - //var_dump(json_encode($options,JSON_PRETTY_PRINT)); - - array_slice($result["result"], 0, 5); - - $scroll_id = $result["scroll_id"]; - - //on traite les données recu d'Elasticsearch - //var_dump(json_encode($options)); - foreach ($result["result"] as $group) { - //var_dump($file->getAsArray()); - $group_tab = $group[0]->getAsArray(); - $group_tab["nb_workspaces"] = count($group[0]->getWorkspaces()); - $group_tab["nb_members"] = count($this->getGroupMembers($group[0])); - $group_tab["creation_data"] = $group[0]->getOnCreationData(); - $this->list_group["group"][] = Array($group_tab, $group[1][0]); - } -// var_dump("nombre de resultat : " . count($this->list_files)); -// var_dump($this->list_group); - $this->list_group["scroll_id"] = $scroll_id; - - return $this->list_group ?: null; - } - -} diff --git a/twake/backend/core/src/AdministrationApi/Workspaces/Services/AdministrationWorkspaces.php b/twake/backend/core/src/AdministrationApi/Workspaces/Services/AdministrationWorkspaces.php deleted file mode 100755 index 7276bc11..00000000 --- a/twake/backend/core/src/AdministrationApi/Workspaces/Services/AdministrationWorkspaces.php +++ /dev/null @@ -1,180 +0,0 @@ - Array(), "scroll_id" => ""); - - public function __construct(App $app) - { - $this->em = $app->getServices()->get("app.twake_doctrine"); - } - - public function getOneWorkspace($workspace_id) - { - $workspacesRepository = $this->em->getRepository("Twake\Workspaces:Workspace"); - - $workspace = $workspacesRepository->findOneBy(["id"=>$workspace_id]); - - return $workspace; - } - - public function getWorkspaceMembers($workspace) - { - $membersRepository = $this->em->getRepository("Twake\Workspaces:WorkspaceUser"); - - $members_tab = $membersRepository->findBy(array("workspace_id" => $workspace->getId())); - - $members = array(); - - foreach ($members_tab as $member) { - $members[] = $member->getUser($this->em)->getAsArray(); - } - - return $members; - } - - public function getWorkspaceApps($workspace) - { - $workspaceAppsRepository = $this->em->getrepository("Twake\Workspaces:WorkspaceApp"); - - $apps_tab = $workspaceAppsRepository->findBy(array("workspace_id" => $workspace)); - - $apps = array(); - - $appsRepository = $this->em->getRepository("Twake\Market:Application"); - - foreach ($apps_tab as $appWksp) { - $app_id = $appWksp->getAppId(); - - $app = $appsRepository->findBy(array('id' => $app_id)); - - if (count($app) == 1) { - $apps[] = $app[0]->getAsArray(); - } - } - - return $apps; - } - - public function getInvitedUsers($workspace) - { - $workspaceMailRepository = $this->em->getrepository("Twake\Workspaces:WorkspaceUserByMail"); - - $mails_tab = $workspaceMailRepository->findBy(array('workspace' => $workspace)); - - $mails = array(); - - foreach ($mails_tab as $ws_mail) { - $mails[] = $ws_mail->getMail(); - } - - return $mails; - } - - public function getWpbyName($options) - { - - if (isset($options["name"])) { - $name = $options["name"]; - - $options = Array( - "repository" => "Twake\Workspaces:Workspace", - "index" => "workspace", - "size" => 10, - "query" => Array( - "bool" => Array( - "should" => Array( - "bool" => Array( - "filter" => Array( - "regexp" => Array( - "name" => ".*" . strtolower($name) . ".*" - ) - ) - ) - ) - ) - ), - "sort" => Array( - "creation_date" => Array( - "order" => "desc" - ) - ) - ); - } - // search in ES - $result = $this->em->es_search($options); - - - array_slice($result["result"], 0, 5); - - $scroll_id = $result["scroll_id"]; - - //on traite les données recu d'Elasticsearch - //var_dump(json_encode($options)); - foreach ($result["result"] as $workspace) { - //var_dump($file->getAsArray()); - $this->list_workspace["workspace"][] = Array($workspace[0]->getAsArray(), $workspace[1][0]);; - } -// var_dump("nombre de resultat : " . count($this->list_files)); -// var_dump($this->list_group); - $this->list_workspace["scroll_id"] = $scroll_id; - - return $this->list_workspace ?: null; - } - - public function getAllWorkspace($options) - { - -// $group = new Group("group_for_workspace_1"); -// $this->em->persist($group); -// $this->em->flush(); -// -// $wp = new Workspace("workspace_admin_test_1"); -// $wp->setGroup($group); -// $this->em->persist($wp); -// $this->em->flush(); - $options = Array( - "repository" => "Twake\Workspaces:Workspace", - "index" => "workspace", - "scroll_id" => $options["scroll_id"], - "size" => 10, - "query" => Array( - "match_all" => (object)[] - ), - "sort" => Array( - "creation_date" => Array( - "order" => "desc" - ) - ) - ); - - //var_dump(json_encode($options,JSON_PRETTY_PRINT)); - - // search in ES - $result = $this->em->es_search($options); - - - array_slice($result["result"], 0, 5); - - $scroll_id = $result["scroll_id"]; - - //on traite les données recu d'Elasticsearch - //var_dump(json_encode($options)); - foreach ($result["result"] as $wp) { - $this->list_group["group"][] = Array($wp[0]->getAsArray(), $wp[1][0]);; - } -// var_dump("nombre de resultat : " . count($this->list_files)); -// var_dump($this->list_group); - $this->list_group["scroll_id"] = $scroll_id; - - return $this->list_group ?: null; - } - -} \ No newline at end of file diff --git a/twake/backend/core/src/BuiltInConnectors/Common/Bundle.php b/twake/backend/core/src/BuiltInConnectors/Common/Bundle.php deleted file mode 100755 index 5fba0724..00000000 --- a/twake/backend/core/src/BuiltInConnectors/Common/Bundle.php +++ /dev/null @@ -1,58 +0,0 @@ -routes = $routing->getRoutes(); - $this->routing_prefix = $routing->getRoutesPrefix(); - $this->initRoutes(); - - $this->services = (new Services())->getServices(); - $this->initServices(); - - $path = __DIR__ . "/../Connectors/"; - $dir = new \DirectoryIterator($path); - $connectors_bundles_instances = []; - // Require and instanciate all defined connectors - foreach ($dir as $fileinfo) { - if ($fileinfo->isDir() && !$fileinfo->isDot()) { - try{ - $bundle = "BuiltInConnectors/Connectors/" . $fileinfo->getFilename(); - if (file_exists(__DIR__ . "/../../" . $bundle . "/Bundle.php")) { - require_once __DIR__ . "/../../" . $bundle . "/Bundle.php"; - $class_name = str_replace("/", "\\", $bundle) . "\\Bundle"; - $connectors_bundles_instances[] = new $class_name($this->app); - } else { - error_log("No such connector bundle " . $bundle); - } - }catch(\Exception $err){ - error_log("No such connector bundle " . $fileinfo->getFilename()); - error_log($err->getMessage()); - } - } - } - - // Init routing for all bundles - foreach ($connectors_bundles_instances as $bundle_instance) { - $bundle_instance->init(); - } - - } -} diff --git a/twake/backend/core/src/BuiltInConnectors/Common/Command/InitConnector.php b/twake/backend/core/src/BuiltInConnectors/Common/Command/InitConnector.php deleted file mode 100755 index a21bf4b4..00000000 --- a/twake/backend/core/src/BuiltInConnectors/Common/Command/InitConnector.php +++ /dev/null @@ -1,143 +0,0 @@ -setName("twake:init_connector"); - } - - protected function execute() - { - - $arg_list = $_SERVER['argv']; - - $connector_name = isset($arg_list[0]) ? $arg_list[0] : false; - if(!$connector_name){ - - error_log("⚙️ Installing default connectors defined in configuration"); - - $connectors = $this->getApp()->getContainer()->getParameter("defaults.applications.connectors"); - if($connectors){ - foreach($connectors as $name => $configuration){ - $this->toggleConnector($name, !!$configuration, isset($configuration["default"]) && $configuration["default"]); - } - } - - die; - } - $action_name = isset($arg_list[1]) ? $arg_list[1] : "enable"; - $enable = $action_name != "disable"; - - $second_action_name = isset($arg_list[2]) ? $arg_list[2] : ""; - $is_default = $second_action_name == "default"; - - $this->toggleConnector($connector_name, $enable, $is_default); - - } - - public function toggleConnector($connector_name, $enable, $is_default){ - - error_log(($enable?"Enabling" : "Disabling") . " " . $connector_name. ($is_default?" and default for future workspaces":"") . "!"); - - $path = __DIR__ . "/../../Connectors/"; - $dir = new \DirectoryIterator($path); - $connectors_bundles_instances = []; - // Require and instanciate all defined connectors - foreach ($dir as $fileinfo) { - if ($fileinfo->isDir() && !$fileinfo->isDot()) { - try{ - $bundle = "BuiltInConnectors/Connectors/" . $fileinfo->getFilename(); - if (file_exists(__DIR__ . "/../../../" . $bundle . "/Bundle.php")) { - $class_name = str_replace("/", "\\", $bundle) . "\\Bundle"; - $connectors_bundles_instances[] = new $class_name($this->app); - } else { - error_log("No such connector bundle " . $bundle); - } - }catch(\Exception $err){ - error_log("No such connector bundle " . $fileinfo->getFilename()); - error_log($err->getMessage()); - } - } - } - - $found = false; - // Init routing for all bundles - foreach ($connectors_bundles_instances as $bundle_instance) { - if(method_exists($bundle_instance, "getDefinition")){ - $definition = $bundle_instance->getDefinition(); - - if($definition["simple_name"] == $connector_name){ - $found = true; - - $server_route = rtrim($this->app->getContainer()->getParameter("env.internal_server_name")?:$this->app->getContainer()->getParameter("env.server_name"), "/"); - - $simple_name = $definition["simple_name"]; - $icon = $definition['icon_url']; - if(!(strpos("http://", $icon) === 0 || strpos("https://", $icon) === 0)){ - $icon = rtrim($this->app->getContainer()->getParameter("env.server_name"), "/") . "/bundle/connectors/" . $definition["simple_name"] . "/icon"; - } - - $app_exists = $this->app->getServices()->get("app.applications")->findAppBySimpleName($simple_name, true); - - $application = [ - 'simple_name' => $simple_name, - 'name' => $definition['name'], - 'description' => $definition['description'], - 'icon_url' => $icon, - 'website' => $definition['website'], - 'categories' => $definition['categories'], - 'privileges' => $definition['privileges'], - 'capabilities' => $definition['capabilities'], - 'hooks' => $definition['hooks'], - 'display' => $definition['display'], - 'api_allowed_ips' => $definition['api_allowed_ips'], - 'api_event_url' => $server_route . "/bundle/connectors/" . $definition["simple_name"] . "/" . ltrim($definition['api_event_url'], "/"), - 'public' => true - ]; - - if($enable){ - //Update database with this app - if(!$app_exists){ - $new_app = $this->app->getServices()->get("app.applications")->createApp(null, $definition["name"], $simple_name, $definition["app_group_name"], null); - $application["id"] = $new_app["id"]; - }else{ - $application["id"] = $app_exists["id"]; - } - - $this->app->getServices()->get("app.applications")->update($application, null); - $this->app->getServices()->get("app.applications")->toggleAppValidation($application["id"], true); - - if($is_default){ - $this->app->getServices()->get("app.applications")->toggleAppDefault($application["id"], true); - } - - error_log("The connector is now available to the public."); - }else{ - //If in database, set to non public - if($app_exists){ - $application["public"] = false; - $application["id"] = $app_exists["id"]; - $this->app->getServices()->get("app.applications")->toggleAppValidation($application["id"], false); - $this->app->getServices()->get("app.applications")->toggleAppDefault($application["id"], false); - } - - error_log("The connector is now unavailable to the public."); - } - - } - - } - } - - if(!$found){ - error_log("This connector was not found."); - } - } - -} diff --git a/twake/backend/core/src/BuiltInConnectors/Common/Controller/Index.php b/twake/backend/core/src/BuiltInConnectors/Common/Controller/Index.php deleted file mode 100755 index cd9dd70e..00000000 --- a/twake/backend/core/src/BuiltInConnectors/Common/Controller/Index.php +++ /dev/null @@ -1,12 +0,0 @@ -connector_id = $connector_id; - $this->document_id = $document_id; - } - - - /** - * @return mixed - */ - public function getConnectorId() - { - return $this->connector_id; - } - - /** - * @return mixed - */ - public function getDocumentId() - { - return $this->document_id; - } - - /** - * @return mixed - */ - public function getValue() - { - return json_decode($this->value, 1); - } - - /** - * @param mixed $value - */ - public function setValue($value): void - { - $this->value = json_encode($value); - } - -} diff --git a/twake/backend/core/src/BuiltInConnectors/Common/Resources/Routing.php b/twake/backend/core/src/BuiltInConnectors/Common/Resources/Routing.php deleted file mode 100755 index 7784d458..00000000 --- a/twake/backend/core/src/BuiltInConnectors/Common/Resources/Routing.php +++ /dev/null @@ -1,16 +0,0 @@ - "MainConnectorService" - ]; - -} diff --git a/twake/backend/core/src/BuiltInConnectors/Common/Services/MainConnectorService.php b/twake/backend/core/src/BuiltInConnectors/Common/Services/MainConnectorService.php deleted file mode 100755 index b854ea05..00000000 --- a/twake/backend/core/src/BuiltInConnectors/Common/Services/MainConnectorService.php +++ /dev/null @@ -1,167 +0,0 @@ -market_service = $app->getServices()->get("app.applications"); - $this->rest_client = $app->getServices()->get("app.restclient"); - $this->api_url = rtrim($app->getContainer()->getParameter("env.internal_server_name")?:$app->getContainer()->getParameter("env.server_name"), "/") . "/api/v1/"; - $this->server_url = rtrim($app->getContainer()->getParameter("env.server_name"), "/") . "/bundle/connectors/"; - $this->emojione_client = new Client(new Ruleset()); - $this->doctrine = $app->getServices()->get("app.twake_doctrine"); - } - - public function setConnector($simple_name){ - $this->app_simple_name = $simple_name; - } - - private function getConnectorKeys(){ - $simple_name = $this->app_simple_name; - if(!isset($this->credentials[$simple_name])){ - $this->credentials[$simple_name] = $this->market_service->getCredentials($simple_name); - } - return $this->credentials[$simple_name]; - } - - public function postApi($route, $data, $timeout = 3, $raw = false){ - - $cred = $this->getConnectorKeys(); - - $custom = array( - CURLOPT_HTTPHEADER => Array( - "Authorization: Basic ".base64_encode($cred["api_id"].":".$cred["api_key"]), - "Content-Type: application/json" - ), - ); - - return $this->post(rtrim($this->api_url, "/") . "/" . ltrim($route, "/"), $data, $raw, $custom, $timeout); - } - - - public function post($route, $data, $raw = false, $custom_options = Array(), $timeout = 1){ - $data_string = json_encode($data); - $restClient = $this->rest_client; - - $custom = array( - CURLOPT_CONNECTTIMEOUT => $timeout, - CURLOPT_SSL_VERIFYPEER => false - ); - - foreach ($custom_options as $key=>$value){ - $custom[$key] = $value; - } - - $resp = $restClient->post($route, $data_string, $custom); - - try { - if(!$raw) { - $data = json_decode($resp->getContent(), 1); - }else{ - $data = $resp->getContent(); - } - return $data; - } catch (\Exception $e) { - return false; - } - } - - - public function get($route, $raw = false, $custom_options = Array(), $timeout = 1){ - $restClient = $this->rest_client; - - $custom = array( - CURLOPT_CONNECTTIMEOUT => $timeout, - CURLOPT_SSL_VERIFYPEER => false - ); - - foreach ($custom_options as $key=>$value){ - $custom[$key] = $value; - } - - $resp = $restClient->get($route, $custom); - - - try { - if(!$raw) { - $data = json_decode($resp->getContent(), 1); - }else{ - $data = $resp->getContent(); - } - return $data; - } catch (\Exception $e) { - return false; - } - } - - public function getServerBaseUrl(){ - return $this->server_url; - } - - public function generateToken($length = 10){ - try { - return bin2hex(random_bytes(intval($length / 2))); - }catch(\Exception $e){ - $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; - $charactersLength = strlen($characters); - $randomString = ''; - for ($i = 0; $i < $length; $i++) { - $randomString .= $characters[rand(0, $charactersLength - 1)]; - } - return $randomString; - } - } - - - /** - * @return string - */ - public function getAppName() - { - return $this->app_simple_name; - } - - /** Save connector document to db */ - public function saveDocument($id, $content){ - $cred = $this->getConnectorKeys(); - if(!$cred["api_id"]){ - return false; - } - $document = new BuiltInConnectorsEntity($cred["api_id"], $id); - if($content === null){ - $this->doctrine->remove($document); - }else{ - $document->setValue($content); - $this->doctrine->persist($document); - } - $this->doctrine->flush(); - return true; - } - - /** Remove connector document from db */ - public function removeDocument($id){ - return $this->saveDocument($id, null); - } - - /** Get connector document from db */ - public function getDocument($id){ - $cred = $this->getConnectorKeys(); - if(!$cred["api_id"]){ - return false; - } - $documentsRepo = $this->doctrine->getRepository("BuiltInConnectors\Common:BuiltInConnectorsEntity"); - $document = $documentsRepo->findOneBy(["connector_id" => $cred["api_id"], "document_id" => $id]); - return $document?$document->getValue():null; - } -} diff --git a/twake/backend/core/src/BuiltInConnectors/Connectors/Jitsi/Bundle.php b/twake/backend/core/src/BuiltInConnectors/Connectors/Jitsi/Bundle.php deleted file mode 100755 index fd7bfa83..00000000 --- a/twake/backend/core/src/BuiltInConnectors/Connectors/Jitsi/Bundle.php +++ /dev/null @@ -1,42 +0,0 @@ -routes = $routing->getRoutes(); - $this->routing_prefix = "bundle/connectors/" . (new ConnectorDefinition())->definition["simple_name"] . $routing->getRoutesPrefix(); - $this->initRoutes(); - - $this->services = (new Services())->getServices(); - $this->initServices(); - - } - - public function getDefinition(){ - return (new ConnectorDefinition())->definition; - } - - public function getConfiguration(){ - return (new ConnectorDefinition())->configuration; - } - -} diff --git a/twake/backend/core/src/BuiltInConnectors/Connectors/Jitsi/ConnectorDefinition.php b/twake/backend/core/src/BuiltInConnectors/Connectors/Jitsi/ConnectorDefinition.php deleted file mode 100755 index b822d95e..00000000 --- a/twake/backend/core/src/BuiltInConnectors/Connectors/Jitsi/ConnectorDefinition.php +++ /dev/null @@ -1,43 +0,0 @@ - 'meet.jit.si' - ]; - - public $definition = [ - 'app_group_name' => 'twake', - 'categories' => [ 'voice_video' ], - 'name' => 'Jitsi', - 'simple_name' => 'jitsi', - 'description' => 'Jitsi allows you to create and join video calls directly from Twake.', - 'icon_url' => 'jitsi.png', - 'website' => 'https://twake.app', - 'privileges' => [], - 'capabilities' => - [ - 'messages_send', - 'display_modal', - 'messages_save', - ], - 'hooks' => [], - 'display' => - [ - 'messages_module' => - [ - 'right_icon' => true, - 'commands' => - [ - [ - 'command' => 'Meeting name', - 'description' => 'Create a Jisti call', - ] - ] - ] - ], - 'api_allowed_ips' => '*', - 'api_event_url' => '/event' - ]; -} diff --git a/twake/backend/core/src/BuiltInConnectors/Connectors/Jitsi/Controller/Index.php b/twake/backend/core/src/BuiltInConnectors/Connectors/Jitsi/Controller/Index.php deleted file mode 100755 index 5516bb51..00000000 --- a/twake/backend/core/src/BuiltInConnectors/Connectors/Jitsi/Controller/Index.php +++ /dev/null @@ -1,71 +0,0 @@ -definition; - $route = realpath(__DIR__."/../Resources/medias/".$configuration["icon_url"]); - - $filename = basename($route); - $file_extension = strtolower(substr(strrchr($filename,"."),1)); - - switch( $file_extension ) { - case "gif": $ctype="image/gif"; break; - case "png": $ctype="image/png"; break; - case "jpeg": - case "jpg": $ctype="image/jpeg"; break; - case "svg": $ctype="image/svg+xml"; break; - default: - } - - header('Content-type: ' . $ctype); - - return new Response(file_get_contents($route)); - } - - public function event(Request $request) - { - $data = $request->request->get("data"); - $event = $request->request->get("event"); - $type = $request->request->get("type"); - - $this->get('connectors.jitsi.event')->proceedEvent($type, $event, $data); - - return new Response([]); - } - - public function call(Request $request){ - $user_id = $request->query->get("twake_user", false); - - $id = explode("__", explode("twake_", array_pop(explode("/", $_SERVER['REQUEST_URI'])))[1]); - - $group_id = str_replace("_", "-", $id[0]); - $id = str_replace("_", "", $id[1]); - $user = $this->get('connectors.jitsi.event')->getUserFromId(str_replace("twake-", "", str_replace("_", "-", $id)), $user_id, $group_id); - - $loader = new \Twig\Loader\FilesystemLoader(realpath(__DIR__.'/../Views/')); - $twig = new \Twig\Environment($loader, [ - 'cache' => $this->app->getAppRootDir() . "/" . $this->app->getContainer()->get("configuration", "twig.cache"), - ]); - $template = $twig->load("Templates/call.html.twig"); - - $configuration = (new ConnectorDefinition())->configuration; - - return new Response($template->render( - Array( - "id" => $id, - "user" => $user, - "jitsi_domain" => $this->getParameter("defaults.connectors.jitsi.jitsi_domain", $configuration["jitsi_domain"]) - ) - )); - } - -} diff --git a/twake/backend/core/src/BuiltInConnectors/Connectors/Jitsi/Resources/Routing.php b/twake/backend/core/src/BuiltInConnectors/Connectors/Jitsi/Resources/Routing.php deleted file mode 100755 index d695ece8..00000000 --- a/twake/backend/core/src/BuiltInConnectors/Connectors/Jitsi/Resources/Routing.php +++ /dev/null @@ -1,18 +0,0 @@ - ["handler" => "Index:icon", "methods" => ["GET"]], - "event" => ["handler" => "Index:event", "methods" => ["POST"]], - "call/{id}" => ["handler" => "Index:call", "methods" => ["GET"]], - ]; - -} diff --git a/twake/backend/core/src/BuiltInConnectors/Connectors/Jitsi/Resources/Services.php b/twake/backend/core/src/BuiltInConnectors/Connectors/Jitsi/Resources/Services.php deleted file mode 100755 index 2da62d6b..00000000 --- a/twake/backend/core/src/BuiltInConnectors/Connectors/Jitsi/Resources/Services.php +++ /dev/null @@ -1,13 +0,0 @@ - "Event" - ]; - -} diff --git a/twake/backend/core/src/BuiltInConnectors/Connectors/Jitsi/Resources/medias/jitsi.png b/twake/backend/core/src/BuiltInConnectors/Connectors/Jitsi/Resources/medias/jitsi.png deleted file mode 100755 index 44df6908..00000000 Binary files a/twake/backend/core/src/BuiltInConnectors/Connectors/Jitsi/Resources/medias/jitsi.png and /dev/null differ diff --git a/twake/backend/core/src/BuiltInConnectors/Connectors/Jitsi/Services/Event.php b/twake/backend/core/src/BuiltInConnectors/Connectors/Jitsi/Services/Event.php deleted file mode 100755 index ca65ee84..00000000 --- a/twake/backend/core/src/BuiltInConnectors/Connectors/Jitsi/Services/Event.php +++ /dev/null @@ -1,137 +0,0 @@ -main_service = $app->getServices()->get("connectors.common.main"); - } - - public function getUserFromId($room_id, $user_id, $group_id = null){ - $this->main_service->setConnector("jitsi"); - - $user_object = $this->main_service->postApi("users/get", Array("user_id" => $user_id, "group_id" => $group_id)); - return $user_object["object"]; - } - - public function proceedEvent($type, $event, $data) - { - $this->main_service->setConnector("jitsi"); - - $group = $data["group"]; - $user = $data["user"]; - $message = $data["message"]; - $channel = $data["channel"]; - $parent_message = $data["parent_message"]; - $creator = $data["user"]; - - if ($type == "action" && ($event == "command" || $event == "open")) { - - $message = [ - "channel_id" => $channel["id"], - "content" => Array( - Array("type"=>"system", "content"=>"Choose a subject for your call"), - Array("type"=>"br"), - Array("type"=>"input", "content" => $data["command"], "placeholder" => "Meeting about ...", "passive_id" => "meeting_name"), - Array("type"=>"br"), - Array("type"=>"button", "style"=>"default", "action_id"=>"cancel", "content"=>"Cancel"), - Array("type"=>"button", "style"=>"primary", "action_id"=>"create", "content"=>"Create") - ), - "hidden_data" => Array( - ), - "parent_message_id" => isset($parent_message["id"])?$parent_message["id"]:"", - "ephemeral_message_recipients" => [$user["id"]], - "_once_ephemeral_message" => true - ]; - - $data_string = Array( - "group_id" => $group["id"], - "workspace_id" => $channel["workspace_id"], - "message" => $message - ); - $message = $this->main_service->postApi("messages/save", $data_string); - - } - - if ($type == "interactive_message_action" && $event == "cancel") { - - $data_string = Array( - "group_id" => $group["id"], - "workspace_id" => $channel["workspace_id"], - "message" => $data["message"] - ); - - $this->main_service->postApi("messages/remove", $data_string); - - } - - if ($type == "interactive_message_action" && $event == "create") { - - $original_message = $message; - - $room_id = $group["id"]."__".$original_message["channel_id"]; - - $url = rtrim($this->main_service->getServerBaseUrl(), "/") . "/jitsi/call/twake_" . str_replace("-", "_", $room_id); - - $message = []; - $message["channel_id"] = $original_message["channel_id"]; - $message["sender"] = $user["id"]; - $message["parent_message_id"] = isset($original_message["parent_message_id"])?$original_message["parent_message_id"]:""; - $message["content"] = Array( - ["type" => "system", "content" => ["@" . $creator["username"] . " invite you to join the call ", ["type" => "bold", "content" => $data["form"]["meeting_name"]],". "]], - ["type" => "system", "content" => ["type" => "button", "inline" => "true", "style"=>"primary", "action_id"=>"show_link", "content" => "Show call link"]], - ["type" => "br"], - ["type" => "url", "user_identifier" => true, "url" => $url, "content" => ["type" => "button", "content" => ["Join call ", ["type" => "bold", "content" => $data["form"]["meeting_name"]]]]]); - $message["hidden_data"] = Array( - "allow_delete" => "everyone", - "room_id" => $room_id - ); - - $data_string = Array( - "group_id" => $group["id"], - "workspace_id" => $channel["workspace_id"], - "message" => $data["message"] - ); - $this->main_service->postApi("messages/remove", $data_string); - - $data_string = Array( - "group_id" => $group["id"], - "workspace_id" => $channel["workspace_id"], - "message" => $message - ); - - $message = $this->main_service->postApi("messages/save", $data_string); - - $message_id = $message["object"]["id"]; - - } - - if ($type == "interactive_message_action" && $event == "show_link") { - - $room_id = $message["hidden_data"]["room_id"]; - - $url = rtrim($this->main_service->getServerBaseUrl(), "/") . "/jitsi/call/twake_" . str_replace("-", "_", $room_id); - - $display = Array( - "type" => "system", "content" => [ - "Partagez ce lien avec les participants de l'appel.", - Array("type" => "br"), - Array("type" => "copiable", "content" => $url) - ] - ); - - $data_string = Array( - "group_id" => $group["id"], - "user_id" => $data["user"]["id"], - "connection_id" => $data["connection_id"], - "form" => $display - ); - $this->main_service->postApi("general/configure", $data_string); - - } - - } - -} diff --git a/twake/backend/core/src/BuiltInConnectors/Connectors/Jitsi/Views/Templates/call.html.twig b/twake/backend/core/src/BuiltInConnectors/Connectors/Jitsi/Views/Templates/call.html.twig deleted file mode 100755 index 0fa3d94f..00000000 --- a/twake/backend/core/src/BuiltInConnectors/Connectors/Jitsi/Views/Templates/call.html.twig +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - - - -
- -
- - - - - diff --git a/twake/backend/core/src/BuiltInConnectors/Connectors/Linshare/Bundle.php b/twake/backend/core/src/BuiltInConnectors/Connectors/Linshare/Bundle.php deleted file mode 100755 index ae7f00c5..00000000 --- a/twake/backend/core/src/BuiltInConnectors/Connectors/Linshare/Bundle.php +++ /dev/null @@ -1,42 +0,0 @@ -routes = $routing->getRoutes(); - $this->routing_prefix = "bundle/connectors/" . (new ConnectorDefinition())->definition["simple_name"] . $routing->getRoutesPrefix(); - $this->initRoutes(); - - $this->services = (new Services())->getServices(); - $this->initServices(); - - } - - public function getDefinition(){ - return (new ConnectorDefinition())->definition; - } - - public function getConfiguration(){ - return (new ConnectorDefinition())->configuration; - } - -} diff --git a/twake/backend/core/src/BuiltInConnectors/Connectors/Linshare/ConnectorDefinition.php b/twake/backend/core/src/BuiltInConnectors/Connectors/Linshare/ConnectorDefinition.php deleted file mode 100755 index 6b208434..00000000 --- a/twake/backend/core/src/BuiltInConnectors/Connectors/Linshare/ConnectorDefinition.php +++ /dev/null @@ -1,62 +0,0 @@ - '', - 'key' => [ - "issuer" => "Twake", - "private" => "-----BEGIN RSA PRIVATE KEY----- -MIICWwIBAAKBgHpJ/MAWh52lMCOt4btMb06LHAXn3BrrQoKrZ5IEPPLKqGwl7MVn -X6r+wEtMX5MmTQ68JHb4ohVVjKiJyySql/GXNcwGmx8jhTpFBzOTRDJBm60Z8wz3 -G4Uy0IPWt1TRz4oiS9V5cC69ZpvxOQd/yaeN9BDkI/Tda4fDOa3PRINRAgMBAAEC -gYA1+uzf2dIZS26ZgUrQQ6gqcot3K+bj1w9v4LuCH+7LeZuoyYDfjocTUwqM8nSJ -3vFK3M/32D6rziydxN1wHQGench+cfR8yun8V9EV7Y5bTIX8DwMvLGvBkZT0u5Ai -J3g6JkWZTQHdthbOyADCgv7OxCjLrq9egE6py2R5cqk4NQJBALayivwy3WizoKNl -hpTdnIngyUbQnRd/3Enx50qaM3qGjyIpENOsNBhJQDtfQf82MRjAhrrsPSDmGvjL -HXFpqNsCQQCrWrIoGx68e//A5GR8dK7XfxBYaTPsXEXQD3uvegFxYxJJj26Qw8lx -i6XKA2lZKuAiyISrk1UWezG/gCzkF5ZDAkBCyDjtv1oXr7GEiNQNDoTuEXEBpbgG -owJPNVGqf3tZyl3/yqsP9N6GEiCck1F4jMKdnaKiKUCfCf3J+9UjY9AJAkA14SPJ -xpVIkPjfLzGFjK75ZaO/GP1RocX14Rh0GbngbFVwud/7NwTdZhqwRZhXiErHxSMq -S/5iPkRrQaNb6Sq/AkEAqQIOghY6T0SPrKfj+utFJMe0YchSU/bjApyE6U3pj1Vf -JZ7e+kO+wtORxj1bDh9nE6YEvW/fOY6/Sw+HoyYW9w== ------END RSA PRIVATE KEY-----", - "public" => "-----BEGIN PUBLIC KEY----- -MIGeMA0GCSqGSIb3DQEBAQUAA4GMADCBiAKBgHpJ/MAWh52lMCOt4btMb06LHAXn -3BrrQoKrZ5IEPPLKqGwl7MVnX6r+wEtMX5MmTQ68JHb4ohVVjKiJyySql/GXNcwG -mx8jhTpFBzOTRDJBm60Z8wz3G4Uy0IPWt1TRz4oiS9V5cC69ZpvxOQd/yaeN9BDk -I/Tda4fDOa3PRINRAgMBAAE= ------END PUBLIC KEY-----" - ] - ]; - - public $definition = [ - 'app_group_name' => 'linshare', - 'categories' => [ 'files' ], - 'name' => 'Linshare', - 'simple_name' => 'linshare', - 'description' => 'Linshare allows you to send Linshare documents into Twake messages.', - 'icon_url' => 'linshare.jpg', - 'website' => 'https://www.linshare.org/', - 'privileges' => [], - 'capabilities' => - [ - "messages_save", - 'display_modal', - ], - 'hooks' => [], - 'display' => [ - "messages_module" => [ - "in_plus" => [ - "should_wait_for_popup" => true - ] - ], - "configuration" => [ - "can_configure_in_workspace" => true - ] - ], - 'api_allowed_ips' => '*', - 'api_event_url' => '/event' - ]; -} diff --git a/twake/backend/core/src/BuiltInConnectors/Connectors/Linshare/Controller/Index.php b/twake/backend/core/src/BuiltInConnectors/Connectors/Linshare/Controller/Index.php deleted file mode 100755 index cc973947..00000000 --- a/twake/backend/core/src/BuiltInConnectors/Connectors/Linshare/Controller/Index.php +++ /dev/null @@ -1,61 +0,0 @@ -definition; - $route = realpath(__DIR__."/../Resources/medias/".$configuration["icon_url"]); - - $filename = basename($route); - $file_extension = strtolower(substr(strrchr($filename,"."),1)); - - switch( $file_extension ) { - case "gif": $ctype="image/gif"; break; - case "png": $ctype="image/png"; break; - case "jpeg": - case "jpg": $ctype="image/jpeg"; break; - case "svg": $ctype="image/svg+xml"; break; - default: - } - - header('Content-type: ' . $ctype); - - return new Response(file_get_contents($route)); - } - - public function event(Request $request) - { - $data = $request->request->get("data"); - $event = $request->request->get("event"); - $type = $request->request->get("type"); - - if($event == "workspace" && $type == "configuration" || $event == "save_configuration_domain"){ - $this->get('connectors.linshare.configure')->proceedEvent($type, $event, $data); - }else{ - $this->get('connectors.linshare.event')->proceedEvent($type, $event, $data); - } - - return new Response([]); - } - - public function download(Request $request) - { - $file_uuid = $request->query->get("file_uuid"); - $group_id = $request->query->get("group_id"); - $owner_id = $request->query->get("owner_id"); - $sign = $request->query->get("sign"); - $twake_user = $request->query->get("twake_user"); - - $this->get('connectors.linshare.event')->download($twake_user, $file_uuid, $group_id, $owner_id, $sign); - return new Response([]); - } - -} diff --git a/twake/backend/core/src/BuiltInConnectors/Connectors/Linshare/Resources/Routing.php b/twake/backend/core/src/BuiltInConnectors/Connectors/Linshare/Resources/Routing.php deleted file mode 100755 index a1366409..00000000 --- a/twake/backend/core/src/BuiltInConnectors/Connectors/Linshare/Resources/Routing.php +++ /dev/null @@ -1,18 +0,0 @@ - ["handler" => "Index:icon", "methods" => ["GET"]], - "event" => ["handler" => "Index:event", "methods" => ["POST"]], - "download" => ["handler" => "Index:download", "methods" => ["GET"]], - ]; - -} diff --git a/twake/backend/core/src/BuiltInConnectors/Connectors/Linshare/Resources/Services.php b/twake/backend/core/src/BuiltInConnectors/Connectors/Linshare/Resources/Services.php deleted file mode 100755 index ebb47698..00000000 --- a/twake/backend/core/src/BuiltInConnectors/Connectors/Linshare/Resources/Services.php +++ /dev/null @@ -1,14 +0,0 @@ - "Configure", - "connectors.linshare.event" => "Event" - ]; - -} diff --git a/twake/backend/core/src/BuiltInConnectors/Connectors/Linshare/Resources/medias/linshare.jpg b/twake/backend/core/src/BuiltInConnectors/Connectors/Linshare/Resources/medias/linshare.jpg deleted file mode 100755 index f407500f..00000000 Binary files a/twake/backend/core/src/BuiltInConnectors/Connectors/Linshare/Resources/medias/linshare.jpg and /dev/null differ diff --git a/twake/backend/core/src/BuiltInConnectors/Connectors/Linshare/Services/Configure.php b/twake/backend/core/src/BuiltInConnectors/Connectors/Linshare/Services/Configure.php deleted file mode 100755 index 4509e88f..00000000 --- a/twake/backend/core/src/BuiltInConnectors/Connectors/Linshare/Services/Configure.php +++ /dev/null @@ -1,77 +0,0 @@ -app = $app; - $this->main_service = $app->getServices()->get("connectors.common.main"); - } - - public function proceedEvent($type, $event, $data) { - $this->main_service->setConnector("linshare"); - $configuration = (new ConnectorDefinition())->configuration; - $linshare_domain = $this->app->getContainer()->getParameter("defaults.connectors.linshare.domain", $configuration["domain"]); - - $group = $data["group"]; - $entity = null; - $user = $data["user"]; - $workspace = $data["workspace"]; - - if($event == "save_configuration_domain"){ - - $document_id = $group["id"]."_domain_conf"; - $document_value = $data["form"]["domain_url"]; - $this->main_service->saveDocument($document_id, $document_value); - - $type = "configuration"; //Reopen/Update configuration - } - - if ($type == "configuration") { - - $document_id = $group["id"]."_domain_conf"; - $document_value = $this->main_service->getDocument($document_id); - if($document_value){ - $linshare_domain = $document_value; - } - - $linshare_publickey = $this->app->getContainer()->getParameter("defaults.connectors.linshare.key.public", $configuration["key"]["public"]); - - $form = Array("type" => "nop", "content" => [ - Array("type" => "nop" , "content" => "• To configure your company with LinShare you must enter your LinShare domain URL first."), - Array("type" => "br"), - Array("type" => "br"), - Array("type" => "bold" , "content" => "Domain url"), - Array("type" => "br"), - Array("type" => "input", "placeholder" => "https://linshare.org", "content" => $linshare_domain, "passive_id" => "domain_url"), - Array("type" => "button", "content" => "Save domain", "action_id" => "save_configuration_domain", "style" => "primary"), - Array("type" => "br"), - Array("type" => "system" , "content" => ["Current domain is ", Array("type" => "bold" , "content" => $linshare_domain)]), - Array("type" => "br"), - Array("type" => "br"), - Array("type" => "nop" , "content" => "• To authorize Twake in LinShare, add this public key to LinShare adminitration."), - Array("type" => "br"), - Array("type" => "br"), - Array("type" => "bold" , "content" => "Public key"), - Array("type" => "br"), - Array("type" => "mcode", "content" => $linshare_publickey) - ]); - - $data_string = Array( - "group_id" => $group["id"], - "user_id" => $user["id"], - "connection_id" => $data["connection_id"], - "form" => $form - ); - - $res = $this->main_service->postApi("general/configure", $data_string); - - } - - } - -} diff --git a/twake/backend/core/src/BuiltInConnectors/Connectors/Linshare/Services/Event.php b/twake/backend/core/src/BuiltInConnectors/Connectors/Linshare/Services/Event.php deleted file mode 100755 index 99e0ce1d..00000000 --- a/twake/backend/core/src/BuiltInConnectors/Connectors/Linshare/Services/Event.php +++ /dev/null @@ -1,245 +0,0 @@ -app = $app; - $this->main_service = $app->getServices()->get("connectors.common.main"); - } - - public function getJWT($user_email){ - $configuration = (new ConnectorDefinition())->configuration; - - $data = []; - $data["sub"] = $user_email; - - $linshare_privatekey = $this->app->getContainer()->getParameter("defaults.connectors.linshare.key.private", $configuration["key"]["private"]); - $data["iss"] = $this->app->getContainer()->getParameter("defaults.connectors.linshare.key.issuer", $configuration["key"]["issuer"]) ?: "Twake"; - - // Create JWT - $header = json_encode(['alg' => 'RS512']); - $data["iat"] = date("U"); - $data["exp"] = date("U") + 5 * 60; - $payload = json_encode($data); - $base64UrlHeader = str_replace(['+', '/', '='], ['-', '_', ''], base64_encode($header)); - $base64UrlPayload = str_replace(['+', '/', '='], ['-', '_', ''], base64_encode($payload)); - openssl_sign( $base64UrlHeader . "." . $base64UrlPayload, $signature, $linshare_privatekey, OPENSSL_ALGO_SHA512); - $base64UrlSignature = str_replace(['+', '/', '='], ['-', '_', ''], base64_encode($signature)); - $jwt = $base64UrlHeader . "." . $base64UrlPayload . "." . $base64UrlSignature; - - return $jwt; - } - - public function proceedEvent($type, $event, $data) { - $this->main_service->setConnector("linshare"); - $definition = (new ConnectorDefinition())->definition; - - $group = $data["group"]; - $entity = null; - $user = $data["user"]; - $workspace = $data["workspace"]; - $channel = $data["channel"]; - $parent_message = $data["parent_message"]; - $interactive_context = $data["interactive_context"]; - - if ($type == "action") { - - $linshare_domain = $this->app->getContainer()->getParameter("defaults.connectors.linshare.domain", $configuration["domain"]); - $document_id = $group["id"]."_domain_conf"; - $document_value = $this->main_service->getDocument($document_id); - if($document_value){ - $linshare_domain = $document_value; - } - - // GET Documents from LinShare - $token = $this->getJWT($user["email"]); - $documents = $this->main_service->get(rtrim($linshare_domain, "/") . "/linshare/webservice/rest/user/documents/", false, [ - CURLOPT_HTTPHEADER => [ - "Accept: application/json", - "Authorization: Bearer " . $token - ] - ]); - - $values = []; - foreach($documents as $document){ - $uuid = $document["uuid"]; - $values[] = [ - "name" => $document["name"], - "value" => json_encode(["uuid"=>$uuid, "name"=>$document["name"]]) - ]; - } - $select = [ - "type" => "select", - "title"=>"Choose file", - "values" => $values, - "passive_id" => "file_select" - ]; - - $form = Array("type" => "nop", "content" => [ - "Choose a file to send from your space", - Array("type" => "br"), - $select, - Array("type" => "br"), - Array("type" => "button", "action_id" => "send_file", "content" => "Envoyer", "interactive_context" => [ - "channel_id" => $channel["id"] - ]), - ]); - - $data_string = Array( - "group_id" => $group["id"], - "user_id" => $user["id"], - "connection_id" => $data["connection_id"], - "form" => $form - ); - - $res = $this->main_service->postApi("general/configure", $data_string); - - } - - if($type == "interactive_configuration_action" && $event == "send_file"){ - - $data_string = Array( - "group_id" => $group["id"], - "user_id" => $user["id"], - "connection_id" =>$data["connection_id"] - ); - $this->main_service->postApi("general/configure_close", $data_string); - - $file = json_decode($data["form"]["file_select"], 1); - $server_route = rtrim($this->app->getContainer()->getParameter("env.server_name"), "/"); - - if(!$file || !$file["name"]){ - return; - } - - $download_parameters = [ - "file_uuid=" . $file["uuid"], - "group_id=" . $group["id"], - "owner_id=" . $user["id"] - ]; - $download_route = $server_route . "/bundle/connectors/" . $definition["simple_name"] . "/download"; - $download_route = $download_route . "?" . join("&", $download_parameters); - $linshare_privatekey = $this->app->getContainer()->getParameter("defaults.connectors.linshare.key.private", $configuration["key"]["private"]); - openssl_sign($file["uuid"] . $user["id"], $signature, $linshare_privatekey, OPENSSL_ALGO_SHA512); - $download_route .= "&sign=" . str_replace(str_split('+/='), str_split('._-'), base64_encode($signature)); - - $message["channel_id"] = $interactive_context["channel_id"]; - $message["sender"] = $user["id"]; - $message["parent_message_id"] = isset($parent_message["id"])?$parent_message["id"]:""; - - $message["content"] = Array( - ["type" => "url", "user_identifier" => true, "url" => $download_route, "content" => ["type" => "button", "content" => "Download " . $file["name"]]] - ); - $message["hidden_data"] = Array( - "allow_delete" => "everyone" - ); - - $data_string = Array( - "group_id" => $group["id"], - "message" => $message - ); - - $message = $this->main_service->postApi("messages/save", $data_string); - - } - - } - - public function download($twake_user, $file_uuid, $group_id, $owner_id, $sign){ - - $this->main_service->setConnector("linshare"); - - $linshare_publickey = $this->app->getContainer()->getParameter("defaults.connectors.linshare.key.public", $configuration["key"]["public"]); - $r = openssl_verify($file_uuid . $owner_id, base64_decode(str_replace(str_split('._-'), str_split('+/='), $sign)), $linshare_publickey, OPENSSL_ALGO_SHA512); - if(!$r){ - echo "This document isn't available."; - die(); - } - - - $linshare_domain = $this->app->getContainer()->getParameter("defaults.connectors.linshare.domain", $configuration["domain"]); - $document_id = $group_id."_domain_conf"; - $document_value = $this->main_service->getDocument($document_id); - if($document_value){ - $linshare_domain = $document_value; - } - - //Get user email - $user_object = $this->main_service->postApi("users/get", Array("user_id" => $twake_user, "group_id" => $group_id)); - $requester_email = $user_object["object"]["email"]; - - //Get owner email - $owner_email = $requester_email; - if($twake_user != $owner_id){ - $user_object = $this->main_service->postApi("users/get", Array("user_id" => $owner_id, "group_id" => $group_id)); - $owner_email = $user_object["object"]["email"]; - } - - //TODO download as the requester and not as the owner - - //Test if user has access to this file - $token = $this->getJWT($owner_email); - $document = $this->main_service->get(rtrim($linshare_domain, "/") . "/linshare/webservice/rest/user/documents/".$file_uuid, false, [ - CURLOPT_HTTPHEADER => [ - "Accept: application/json", - "Authorization: Bearer " . $token - ] - ]); - - if(!$document){ - echo "This document isn't available."; - die(); - } - - $size = $document["size"]; - $quoted = $document["name"]; - - header('Content-Description: File Transfer'); - header('Content-Type: application/octet-stream'); - header('Content-Disposition: attachment; filename=' . $quoted); - header('Content-Transfer-Encoding: binary'); - header('Connection: Keep-Alive'); - header('Expires: 0'); - header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); - header('Pragma: public'); - if($size) header('Content-Length: ' . $size); - - $url = rtrim($linshare_domain, "/") . "/linshare/webservice/rest/user/documents/".$file_uuid."/download"; - - $options = [ - CURLOPT_HTTPHEADER => [ - "Accept: application/json", - "Authorization: Bearer " . $token - ] - ]; - - $options[CURLOPT_RETURNTRANSFER] = true; - $options[CURLOPT_HEADER] = false; - $options[CURLOPT_URL] = $url; - $options[CURLOPT_CUSTOMREQUEST] = "GET"; - - $curl_write_flush = function ($curl_handle, $chunk) - { - echo $chunk; - ob_flush(); // flush output buffer (Output Control configuration specific) - flush(); // flush output body (SAPI specific) - return strlen($chunk); // tell Curl there was output (if any). - }; - - $curl = curl_init(); - curl_setopt_array($curl, $options); - curl_setopt($curl, CURLOPT_BINARYTRANSFER, 1); - curl_setopt($curl, CURLOPT_WRITEFUNCTION, $curl_write_flush); - curl_exec($curl); - curl_close($curl); - - die(); - - } - -} diff --git a/twake/backend/core/src/DevelopersApiV1/Calendar/Bundle.php b/twake/backend/core/src/DevelopersApiV1/Calendar/Bundle.php deleted file mode 100755 index aa5cf98a..00000000 --- a/twake/backend/core/src/DevelopersApiV1/Calendar/Bundle.php +++ /dev/null @@ -1,26 +0,0 @@ -routes = $routing->getRoutes(); - $this->routing_prefix = $routing->getRoutesPrefix(); - $this->initRoutes(); - } -} \ No newline at end of file diff --git a/twake/backend/core/src/DevelopersApiV1/Calendar/Controller/Calendar.php b/twake/backend/core/src/DevelopersApiV1/Calendar/Controller/Calendar.php deleted file mode 100755 index 577535ba..00000000 --- a/twake/backend/core/src/DevelopersApiV1/Calendar/Controller/Calendar.php +++ /dev/null @@ -1,122 +0,0 @@ -get("app.applications_api")->getAppFromRequest($request, $capabilities); - if (is_array($application) && $application["error"]) { - return new Response($application); - } - - $object = $request->request->get("object", null); - $user = null; - $object = $this->get("app.calendar.event")->remove($object, Array(), $user); - - $event = Array( - "client_id" => "system", - "action" => "remove", - "object_type" => "", - "front_id" => $object["front_id"] - ); - $workspace_calendars = $object["workspaces_calendars"] ? $object["workspaces_calendars"] : []; - $workspace_ids = []; - foreach ($workspace_calendars as $wc) { - if (!in_array($wc["workspace_id"], $workspace_ids)) { - $workspace_ids[] = $wc["workspace_id"]; - $this->get("app.websockets")->push("calendar_events/" . $wc["workspace_id"], $event); - } - } - - $this->get("administration.counter")->incrementCounter("total_api_calendar_operation", 1); - - return new Response(Array("result" => $object)); - } - - public function saveEvent(Request $request) - { - $capabilities = ["calendar_event_save"]; - $application = $this->get("app.applications_api")->getAppFromRequest($request, $capabilities); - if (is_array($application) && $application["error"]) { - return new Response($application); - } - - $object = $request->request->get("object", null); - $user = null; - try { - $object = $this->get("app.calendar.event")->save($object, Array(), $user); - } catch (\Exception $e) { - $object = false; - } - if (!$object) { - return new Response(Array("error" => "unknown error or malformed query.")); - } - - if ($object) { - - $event = Array( - "client_id" => "system", - "action" => "save", - "object_type" => "", - "object" => $object - ); - $workspace_calendars = $object["workspaces_calendars"] ? $object["workspaces_calendars"] : []; - $workspace_ids = []; - foreach ($workspace_calendars as $wc) { - if (!in_array($wc["workspace_id"], $workspace_ids)) { - $workspace_ids[] = $wc["workspace_id"]; - $this->get("app.websockets")->push("calendar_events/" . $wc["workspace_id"], $event); - } - } - - } - - $this->get("administration.counter")->incrementCounter("total_api_calendar_operation", 1); - - return new Response(Array("object" => $object)); - - } - - public function getCalendarList(Request $request) - { - $privileges = ["workspace_calendar"]; - - $application = $this->get("app.applications_api")->getAppFromRequest($request, [], $privileges); - if (is_array($application) && $application["error"]) { - return new Response($application); - } - $objects = false; - $user_id = $request->request->get("user_id", ""); - $workspace_id = $request->request->get("workspace_id", ""); - if ($workspace_id) { - if ($user_id) { - $user_entity = $this->get("app.users")->getById($user_id, true); - } - if ($user_entity) { - $objects = $this->get("app.calendar.calendar")->get(Array("workspace_id" => $workspace_id), $user_entity); - } - } - - if ($objects === false) { - return new Response(Array("error" => "payload_error")); - } - - $res = []; - foreach ($objects as $object) { - $res[] = $object; - } - - $this->get("administration.counter")->incrementCounter("total_api_calendar_operation", 1); - - return new Response(Array("data" => $res)); - } -} \ No newline at end of file diff --git a/twake/backend/core/src/DevelopersApiV1/Calendar/Resources/Routing.php b/twake/backend/core/src/DevelopersApiV1/Calendar/Resources/Routing.php deleted file mode 100755 index ef70cfa3..00000000 --- a/twake/backend/core/src/DevelopersApiV1/Calendar/Resources/Routing.php +++ /dev/null @@ -1,19 +0,0 @@ - ["handler" => "Calendar:removeEvent", "methods" => ["POST"]], - "event/save" => ["handler" => "Calendar:saveEvent", "methods" => ["POST"]], - "get_calendars" => ["handler" => "Calendar:getCalendarList", "methods" => ["POST"]], - ]; - -} \ No newline at end of file diff --git a/twake/backend/core/src/DevelopersApiV1/Channels/Bundle.php b/twake/backend/core/src/DevelopersApiV1/Channels/Bundle.php deleted file mode 100755 index 947a29ab..00000000 --- a/twake/backend/core/src/DevelopersApiV1/Channels/Bundle.php +++ /dev/null @@ -1,26 +0,0 @@ -routes = $routing->getRoutes(); - $this->routing_prefix = $routing->getRoutesPrefix(); - $this->initRoutes(); - } -} \ No newline at end of file diff --git a/twake/backend/core/src/DevelopersApiV1/Channels/Controller/Channel.php b/twake/backend/core/src/DevelopersApiV1/Channels/Controller/Channel.php deleted file mode 100755 index 2b88b24d..00000000 --- a/twake/backend/core/src/DevelopersApiV1/Channels/Controller/Channel.php +++ /dev/null @@ -1,80 +0,0 @@ -get("app.applications_api")->getAppFromRequest($request, $capabilities); - if (is_array($application) && $application["error"]) { - return new Response($application); - } - - $user_id = $request->request->get("user_id", ""); - - if ($user_id) { - $user_entity = $this->get("app.users")->getById($user_id, true); - if ($user_entity) { - $object = $this->get("app.channels.direct_messages_system")->save(Array("app_id" => $application->getId(), "group_id" => $request->request->get("group_id", null)), Array(), $user_entity); - } - } - - $this->get("administration.counter")->incrementCounter("total_api_messages_operation", 1); - - return new Response(Array("object" => $object)); - - } - - public function getChannelsByWorkspace(Request $request) - { - $privileges = ["channels"]; - - $application = $this->get("app.applications_api")->getAppFromRequest($request, [], $privileges); - if (is_array($application) && $application["error"]) { - return new Response($application); - } - $objects = false; - $user_id = $request->request->get("user_id", ""); - $workspace_id = $request->request->get("workspace_id", ""); - if ($workspace_id) { - if ($user_id) { - $user_entity = $this->get("app.users")->getById($user_id, true); - } - if ($user_entity) { - $objects = $this->get("app.channels.channels_system")->get(Array("workspace_id" => $workspace_id), $user_entity); - } - } - - if ($objects === false) { - return new Response(Array("error" => "payload_error")); - } - - $res = []; - foreach ($objects as $object) { - if (!$object["direct"] && !$object["application"]) { - $res[] = $object; - } - } - - $this->get("administration.counter")->incrementCounter("total_api_messages_operation", 1); - - return new Response(Array("data" => $res)); - } - -} diff --git a/twake/backend/core/src/DevelopersApiV1/Channels/Resources/Routing.php b/twake/backend/core/src/DevelopersApiV1/Channels/Resources/Routing.php deleted file mode 100755 index 8e1e7a92..00000000 --- a/twake/backend/core/src/DevelopersApiV1/Channels/Resources/Routing.php +++ /dev/null @@ -1,18 +0,0 @@ - ["handler" => "Channel:getDirectChannel", "methods" => ["POST"]], - "get_by_workspace" => ["handler" => "Channel:getChannelsByWorkspace", "methods" => ["POST"]], - ]; - -} \ No newline at end of file diff --git a/twake/backend/core/src/DevelopersApiV1/Core/Bundle.php b/twake/backend/core/src/DevelopersApiV1/Core/Bundle.php deleted file mode 100755 index bc6f683b..00000000 --- a/twake/backend/core/src/DevelopersApiV1/Core/Bundle.php +++ /dev/null @@ -1,30 +0,0 @@ -routes = $routing->getRoutes(); - $this->routing_prefix = $routing->getRoutesPrefix(); - $this->initRoutes(); - - $this->services = (new Services())->getServices(); - $this->initServices(); - } -} \ No newline at end of file diff --git a/twake/backend/core/src/DevelopersApiV1/Core/Controller/Base.php b/twake/backend/core/src/DevelopersApiV1/Core/Controller/Base.php deleted file mode 100755 index dff4fa95..00000000 --- a/twake/backend/core/src/DevelopersApiV1/Core/Controller/Base.php +++ /dev/null @@ -1,32 +0,0 @@ -get("api.v1.check_user_data")->getInfo($request->request->get("token", null)); - if ($info) - return new Response($info->getAsArray()); - else - return new Response(array("error" => "invalid_token")); - } - - public function BadRequest() - { - return new Response(Array("errors" => "0000", "description" => "Bad request")); - } -} \ No newline at end of file diff --git a/twake/backend/core/src/DevelopersApiV1/Core/Entity/AccessLog.php b/twake/backend/core/src/DevelopersApiV1/Core/Entity/AccessLog.php deleted file mode 100755 index 8c5ac1d1..00000000 --- a/twake/backend/core/src/DevelopersApiV1/Core/Entity/AccessLog.php +++ /dev/null @@ -1,178 +0,0 @@ -id = $id; - } - - public function getId() - { - return $this->id; - } - - /** - * @return mixed - */ - public function getAppId() - { - return $this->appid; - } - - /** - * @param mixed $appid - */ - public function setAppId($appid) - { - $this->appid = $appid; - } - - /** - * @return mixed - */ - public function getMinutes() - { - return $this->minutes; - } - - /** - * @param mixed $minutes - */ - public function setMinutes($minutes) - { - $this->minutes = $minutes; - } - - /** - * @return mixed - */ - public function getReadAccessCount() - { - return $this->readaccesscount; - } - - /** - */ - public function readAccessIncrease() - { - $this->readAccessCount++; - } - - /** - * @return mixed - */ - public function getWriteAccessCount() - { - return $this->writeaccesscount; - } - - /** - */ - public function writeAccessIncrease() - { - $this->writeAccessCount++; - } - - /** - * @return mixed - */ - public function getManageAccessCount() - { - return $this->manageaccesscount; - } - - /** - */ - public function manageAccessIncrease() - { - $this->manageAccessCount++; - } - - /** - * @param mixed $readaccesscount - */ - public function setReadAccessCount($readaccesscount) - { - $this->readaccesscount = $readaccesscount; - } - - - /** - * @param mixed $writeaccesscount - */ - public function setWriteAccessCount($writeaccesscount) - { - $this->writeaccesscount = $writeaccesscount; - } - - /** - * @param mixed $manageaccesscount - */ - public function setManageAccessCount($manageaccesscount) - { - $this->manageaccesscount = $manageaccesscount; - } - - public function clear($minutes) - { - $this->setMinutes($minutes); - $this->setReadAccessCount(0); - $this->setWriteAccessCount(0); - $this->setManageAccessCount(0); - } - - public function __construct() - { - $this->setId(0); - $this->setAppId(0); - $this->setMinutes(0); - $this->setReadAccessCount(0); - $this->setWriteAccessCount(0); - $this->setManageAccessCount(0); - } -} diff --git a/twake/backend/core/src/DevelopersApiV1/Core/Resources/Routing.php b/twake/backend/core/src/DevelopersApiV1/Core/Resources/Routing.php deleted file mode 100755 index 297b66c0..00000000 --- a/twake/backend/core/src/DevelopersApiV1/Core/Resources/Routing.php +++ /dev/null @@ -1,16 +0,0 @@ - ["handler" => "Base:getInfoFromToken", "methods" => ["POST"]], - ]; - -} \ No newline at end of file diff --git a/twake/backend/core/src/DevelopersApiV1/Core/Resources/Services.php b/twake/backend/core/src/DevelopersApiV1/Core/Resources/Services.php deleted file mode 100755 index b2321b21..00000000 --- a/twake/backend/core/src/DevelopersApiV1/Core/Resources/Services.php +++ /dev/null @@ -1,20 +0,0 @@ - "CheckService", -// arguments: ["@app.twake_doctrine", "@api.v1.access_log"] - "api.v1.api_status" => "ApiStatus", -// arguments: ["@app.twake_doctrine"] - "api.v1.access_log" => "AccessLogSystem", -// arguments: ["@app.twake_doctrine"] - "api.v1.check_user_data" => "CheckUserInfo", -// arguments: ["@app.twake_doctrine"] - ]; - -} \ No newline at end of file diff --git a/twake/backend/core/src/DevelopersApiV1/Core/Services/AccessLogSystem.php b/twake/backend/core/src/DevelopersApiV1/Core/Services/AccessLogSystem.php deleted file mode 100755 index a91010f1..00000000 --- a/twake/backend/core/src/DevelopersApiV1/Core/Services/AccessLogSystem.php +++ /dev/null @@ -1,51 +0,0 @@ -doctrine = $app->getServices()->get("app.twake_doctrine"); - - } - - public function record($applicationId, $rightLevel) - { - $accessLogger = $this->doctrine->getRepository("DevelopersApiV1\Core:AccessLog")->findOneBy(Array("appid" => $applicationId)); - - if ($accessLogger == null) { - $accessLogger = new AccessLog(); - $accessLogger->setAppId($applicationId); - } - - $minutes = $accessLogger->getMinutes(); - - if ($minutes != date("i")) - $accessLogger->clear(date("i")); - - if ($rightLevel == 1) //read - $accessLogger->readAccessIncrease(); - elseif ($rightLevel == 2) //write - $accessLogger->writeAccessIncrease(); - elseif ($rightLevel == 3) //manage - $accessLogger->manageAccessIncrease(); - - $this->doctrine->persist($accessLogger); - $this->doctrine->flush(); - - return true; - } -} \ No newline at end of file diff --git a/twake/backend/core/src/DevelopersApiV1/Core/Services/ApiStatus.php b/twake/backend/core/src/DevelopersApiV1/Core/Services/ApiStatus.php deleted file mode 100755 index 1d0b2a7f..00000000 --- a/twake/backend/core/src/DevelopersApiV1/Core/Services/ApiStatus.php +++ /dev/null @@ -1,108 +0,0 @@ -map[1] = "Incorrect authentification"; - $this->map[2] = "You have not the rights to perform this action"; - $this->map[3] = "Token not found"; - - //999 < errors from Workspace < 2000 - $this->map[1000] = "The workspace does not exist or is incorrect"; - $this->map[1001] = "Array empty. The workspace is incorrect"; - $this->map[1002] = "No level found"; - - //1999 < errors from Drive < 3000 - $this->map[2000] = "The file have not been created"; - $this->map[2001] = "The file does not exist in this workspace or is not accessible"; - $this->map[2002] = "The file or the folder was not deleted"; - $this->map[2003] = "The file or the folder has not been thrown away"; - $this->map[2004] = "The file or the folder has not been restored"; - $this->map[2005] = "The content of the trash has not been restored"; - $this->map[2006] = "The trash has not been emptied"; - $this->map[2007] = "Failed to get informations"; - $this->map[2008] = "No content and no url has been given"; - $this->map[2009] = "The folder has not been shared"; - $this->map[2010] = "The folder has not been unshared"; - $this->map[2011] = "The file has not been renamed"; - $this->map[2012] = "The array is empty"; - $this->map[2013] = "The search is impossible"; - $this->map[2014] = "Impossible to return the list of files contained into the folder"; - $this->map[2015] = "The file has not been moved"; - $this->map[2016] = "The content of the file has not been set"; - - //2999 < errors from Messages < 4000 - $this->map[3000] = "Stream not found"; - $this->map[3001] = "Message not found"; - $this->map[3002] = "Failed to post message"; - $this->map[3003] = "Failed to get message"; - $this->map[3004] = "Failed to get message children"; - $this->map[3005] = "Failed to edit a message"; - $this->map[3006] = "Failed to delete a message"; - $this->map[3007] = "Failed to get stream content"; - $this->map[3008] = ""; - $this->map[3009] = "Failed to get stream list"; - $this->map[3010] = "Failed to change message in subject"; - $this->map[3011] = "Failed to move a message in a message"; - $this->map[3012] = ""; - $this->map[3013] = "Failed to close a subject"; - $this->map[3014] = "Failed to move message in subject"; - $this->map[3015] = "Failed to delete a stream"; - $this->map[3016] = "Failed to create a stream"; - $this->map[3017] = "Failed to edit a stream"; - $this->map[3018] = ""; - $this->map[3019] = "Failed to add a member"; - $this->map[3020] = "Failed to remove a member"; - $this->map[3021] = "Failed to edit a subject"; - $this->map[3022] = "Failed to get all subjects from a stream"; - - //3999 < errors from Calendar < 5000 - $this->map[4000] = " No content in the request "; - $this->map[4001] = " Fail to create a calendar"; - $this->map[4002] = " Fail to delete a calendar"; - $this->map[4003] = " Fail to edit a calendar"; - $this->map[4004] = " Fail to get a calendar"; - $this->map[4005] = " Fail to share a calendar"; - $this->map[4006] = " Fail to unshare a calendar "; - $this->map[4007] = " Fail to create an event "; - $this->map[4008] = " Fail to delete an event "; - $this->map[4009] = " Fail to edit an event "; - $this->map[4009] = " Fail to get an event "; - $this->map[4011] = " Fail to share an event "; - $this->map[4012] = " Fail to unshare an event "; - $this->map[4013] = " Fail to get all events "; - $this->map[4014] = " Fail to get all calendars "; - $this->map[4015] = " Fail to generate calenda "; - } - - public function getError($code) - { - $message = $this->map[$code]; - $response = Array("status" => "error", "code" => $code, "message" => $message); - return $response; - } - - public function getSuccess() - { - $response = Array("status" => "success"); - return $response; - } - -} \ No newline at end of file diff --git a/twake/backend/core/src/DevelopersApiV1/Core/Services/CheckService.php b/twake/backend/core/src/DevelopersApiV1/Core/Services/CheckService.php deleted file mode 100755 index 168e1d41..00000000 --- a/twake/backend/core/src/DevelopersApiV1/Core/Services/CheckService.php +++ /dev/null @@ -1,102 +0,0 @@ -doctrine = $app->getServices()->get("app.twake_doctrine"); - $this->accessLogService = $app->getServices()->get("api.v1.access_log"); - - } - - public function check(Request $request) - { - - $application = false; - $header = $request->headers->get("Authorization"); - $explode1 = explode(" ", $header); - - if (count($explode1) == 2 && $explode1[0] == "Basic") { - - $exploser2 = explode(":", base64_decode($explode1[1])); - - if (count($exploser2) == 2) { - $publickey = $exploser2[0]; - $privateKey = $exploser2[1]; - - $application = $this->doctrine->getRepository("Twake\Market:Application")->findOneBy(Array("simple_name" => $publickey)); - - if ($application != null) { - $key = $application->getPrivateKey(); - - if ($key == $privateKey) { - return $application; - } - } - } - } - return false; - } - - public function get(Request $request) - { - $request = @json_decode($request->getContent(), true); - if (json_last_error() !== JSON_ERROR_NONE) { - $request = Array(); - } - return $request; - } - - - public function isAllowedTo($application, $action, $workspaceId) - { - - $rights = $application->getApplicationRights(); - - //Compare with action asked - $actions = explode(":", $action); - $object = $actions[0]; - $value = intval(str_replace(Array("none", "read", "write", "manage"), Array(0, 1, 2, 3), $actions[1])); - - $this->accessLogService->record($application->getId(), $value); - - if (!isset($rights[$object]) || intval(str_replace(Array("none", "read", "write", "manage"), Array(0, 1, 2, 3), $rights[$object])) < $value) { - return false; - } - - return $this->containsApp($workspaceId, $application); - } - - - public function containsApp($workspaceId, $application) - { - $workspaceRepository = $this->doctrine->getRepository("Twake\Workspaces:Workspace"); - $workspace = $workspaceRepository->findOneBy(["id"=>$workspaceId]); - - if ($workspace == null) { - return false; - } - - $workspaceapp = null; - - $workspaceappsRepository = $this->doctrine->getRepository("Twake\Workspaces:GroupApp"); - $groupApp = $workspaceappsRepository->findOneBy(Array("group" => $workspace->getGroup(), "app" => $application->getId())); - - if ($groupApp) { - //Group apps - $workspaceappsRepository = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceApp"); - $workspaceapp = $workspaceappsRepository->findOneBy(Array("workspace_id" => $workspace, "groupapp" => $groupApp)); - } - - return $workspaceapp != null; - } - -} diff --git a/twake/backend/core/src/DevelopersApiV1/Core/Services/CheckUserInfo.php b/twake/backend/core/src/DevelopersApiV1/Core/Services/CheckUserInfo.php deleted file mode 100755 index ec3d73f6..00000000 --- a/twake/backend/core/src/DevelopersApiV1/Core/Services/CheckUserInfo.php +++ /dev/null @@ -1,25 +0,0 @@ -doctrine = $app->getServices()->get("app.twake_doctrine"); - - } - - public function getInfo($token) - { - return $this->doctrine->getRepository("Twake\Market:AccessToken")->findOneBy(Array("atoken" => $token)); - } - -} \ No newline at end of file diff --git a/twake/backend/core/src/DevelopersApiV1/Drive/Bundle.php b/twake/backend/core/src/DevelopersApiV1/Drive/Bundle.php deleted file mode 100755 index 2e61f616..00000000 --- a/twake/backend/core/src/DevelopersApiV1/Drive/Bundle.php +++ /dev/null @@ -1,26 +0,0 @@ -routes = $routing->getRoutes(); - $this->routing_prefix = $routing->getRoutesPrefix(); - $this->initRoutes(); - } -} \ No newline at end of file diff --git a/twake/backend/core/src/DevelopersApiV1/Drive/Controller/Drive.php b/twake/backend/core/src/DevelopersApiV1/Drive/Controller/Drive.php deleted file mode 100755 index f3af4154..00000000 --- a/twake/backend/core/src/DevelopersApiV1/Drive/Controller/Drive.php +++ /dev/null @@ -1,181 +0,0 @@ -get("app.applications_api")->getAppFromRequest($request, $capabilities); - if (is_array($application) && $application["error"]) { - return new Response($application); - } - - $object = $request->request->get("object", null); - $file_uploaded = $request->request->get("file_url", null); - - if (!$file_uploaded) { - $file_uploaded = $_FILES["file"]; - } - - $user = null; - if (isset($object["sender"])) { - $user = $this->get("app.users")->getById($object["sender"], true)->getId(); - } - - try { - $options = Array("application_id" => $application->getId()); - if ($file_uploaded) { - //If object[_once_new_version] is set a new version is added - $object = $this->get('driveupload.upload')->uploadDirectly($file_uploaded, $object, $options, $user); - } else { - $object = $this->get("app.drive")->save($object, $options, $user, $upload_data); - } - } catch (\Exception $e) { - $object = false; - } - - if (!$object) { - return new Response(Array("error" => "unknown error or malformed query.")); - } - - if ($object) { - - $event = Array( - "client_id" => "system", - "action" => "save", - "object_type" => "", - "object" => $object - ); - $this->get("app.websockets")->push("drive/" . $object["workspace_id"] . "/" . $object["parent_id"], $event); - - } - - $this->get("administration.counter")->incrementCounter("total_api_drive_operation", 1); - - return new Response(Array("object" => $object)); - - - } - - public function remove(Request $request) - { - $capabilities = ["drive_remove"]; - $application = $this->get("app.applications_api")->getAppFromRequest($request, $capabilities); - if (is_array($application) && $application["error"]) { - return new Response($application); - } - - $options = Array("application_id" => $application->getId()); - $object = $request->request->get("object", null); - - $res = $this->get("app.drive")->remove($object, $options, null); - if (!$res) { - return new Response(Array("error" => "unknown error or malformed query.")); - } else { - - $event = Array( - "client_id" => "system", - "action" => "remove", - "object_type" => "", - "front_id" => $res["front_id"] - ); - $this->get("app.websockets")->push("drive/" . $res["workspace_id"] . "/" . $res["parent_id"], $event); - - } - - $this->get("administration.counter")->incrementCounter("total_api_drive_operation", 1); - - return new Response(Array("object" => $res)); - - - } - - public function find(Request $request) - { - $privileges = ["workspace_drive"]; - $application = $this->get("app.applications_api")->getAppFromRequest($request, [], $privileges); - if (is_array($application) && $application["error"]) { - return new Response($application); - } - - $workspace_id = $request->request->get("workspace_id", null); - $element_id = $request->request->get("element_id", null); - - $user = null; - if (isset($object["user_id"])) { - $user = $this->get("app.users")->getById($object["user_id"], true); - if (!$user) { - return null; - } - } - - if ($workspace_id && $element_id) { - $object = $this->get("app.drive")->find( - Array("workspace_id" => $workspace_id, "element_id" => $element_id), $user); - } else { - return new Response(Array("error" => "unknown error or malformed query.")); - } - - $this->get("administration.counter")->incrementCounter("total_api_drive_operation", 1); - - return new Response(Array("object" => $object)); - } - - public function getList(Request $request) - { - $privileges = ["drive_list"]; - $application = $this->get("app.applications_api")->getAppFromRequest($request, [], $privileges); - if (is_array($application) && $application["error"]) { - return new Response($application); - } - - $user_id = null; - $workspace_id = $request->request->get("workspace_id", null); - $directory_id = $request->request->get("directory_id", null); - - if ($workspace_id && $directory_id) { - $objects = $this->get("app.drive")->get( - Array("workspace_id" => $workspace_id, "directory_id" => $directory_id, "trash" => false), null); - } else { - return new Response(Array("error" => "unknown error or malformed query.")); - } - - $res = []; - foreach ($objects as $object) { - $res[] = $object; - } - - $this->get("administration.counter")->incrementCounter("total_api_drive_operation", 1); - - return new Response(Array("data" => $res)); - } - - public function download(Request $request) - { - - $privileges = ["workspace_drive"]; - $application = $this->get("app.applications_api")->getAppFromRequest($request, [], $privileges); - if (is_array($application) && $application["error"]) { - return new Response($application); - } - - $workspace_id = $request->request->get("workspace_id", null); - $fileId = $request->request->get("file_id", null); - - @$response = $this->get('driveupload.download')->download($workspace_id, $fileId, true, null); - - $this->get("administration.counter")->incrementCounter("total_api_drive_operation", 1); - - return $response; - } - - -} \ No newline at end of file diff --git a/twake/backend/core/src/DevelopersApiV1/Drive/Resources/Routing.php b/twake/backend/core/src/DevelopersApiV1/Drive/Resources/Routing.php deleted file mode 100755 index 671732fb..00000000 --- a/twake/backend/core/src/DevelopersApiV1/Drive/Resources/Routing.php +++ /dev/null @@ -1,21 +0,0 @@ - ["handler" => "Drive:remove", "methods" => ["POST"]], - "save" => ["handler" => "Drive:save", "methods" => ["POST"]], - "list" => ["handler" => "Drive:getList", "methods" => ["POST"]], - "find" => ["handler" => "Drive:find", "methods" => ["POST"]], - "download" => ["handler" => "Drive:download", "methods" => ["POST"]], - ]; - -} \ No newline at end of file diff --git a/twake/backend/core/src/DevelopersApiV1/General/Bundle.php b/twake/backend/core/src/DevelopersApiV1/General/Bundle.php deleted file mode 100755 index 0c35dd6c..00000000 --- a/twake/backend/core/src/DevelopersApiV1/General/Bundle.php +++ /dev/null @@ -1,26 +0,0 @@ -routes = $routing->getRoutes(); - $this->routing_prefix = $routing->getRoutesPrefix(); - $this->initRoutes(); - } -} \ No newline at end of file diff --git a/twake/backend/core/src/DevelopersApiV1/General/Controller/General.php b/twake/backend/core/src/DevelopersApiV1/General/Controller/General.php deleted file mode 100755 index 8c2aaf9d..00000000 --- a/twake/backend/core/src/DevelopersApiV1/General/Controller/General.php +++ /dev/null @@ -1,88 +0,0 @@ -get("app.applications_api")->getAppFromRequest($request, $capabilities); - if (is_array($application) && $application["error"]) { - return new Response($application); - } - - $user_id = $request->request->get("user_id", null); - if (!$user_id) { - return new Response(Array("error" => "missing_user_id")); - } - - $connection_id = $request->request->get("connection_id", false); - if (!$connection_id) { - return new Response(Array("error" => "missing_connection_id")); - } - - $event = Array( - "connection_id" => $connection_id, - "action" => "close_configure", - "application" => $application->getAsArray() - ); - $this->get("app.websockets")->push("updates/" . $user_id, $event); - - return new Response(Array("result" => "success")); - - } - - public function configure(Request $request) - { - - $capabilities = ["display_modal"]; - - $application = $this->get("app.applications_api")->getAppFromRequest($request, $capabilities); - if (is_array($application) && $application["error"]) { - return new Response($application); - } - - //TODO Verify targeted user in in app requested group - - $user_id = $request->request->get("user_id", null); - if (!$user_id) { - return new Response(Array("error" => "missing_user_id")); - } - - $connection_id = $request->request->get("connection_id", false); - if (!$connection_id) { - return new Response(Array("error" => "missing_connection_id")); - } - - $form = $request->request->get("form", Array()); - $hidden_data = $request->request->get("hidden_data", Array()); - - $event = Array( - "connection_id" => $connection_id, - "action" => "configure", - "application" => $application->getAsArray(), - "form" => $form, - "hidden_data" => $hidden_data - ); - $this->get("app.websockets")->push("updates/" . $user_id, $event); - - return new Response(Array("result" => "success")); - - } - -} diff --git a/twake/backend/core/src/DevelopersApiV1/General/Resources/Routing.php b/twake/backend/core/src/DevelopersApiV1/General/Resources/Routing.php deleted file mode 100755 index e7b671a7..00000000 --- a/twake/backend/core/src/DevelopersApiV1/General/Resources/Routing.php +++ /dev/null @@ -1,17 +0,0 @@ - ["handler" => "General:configure", "methods" => ["POST"]], - "configure_close" => ["handler" => "General:closeConfigure", "methods" => ["POST"]], - ]; - -} \ No newline at end of file diff --git a/twake/backend/core/src/DevelopersApiV1/Messages/Bundle.php b/twake/backend/core/src/DevelopersApiV1/Messages/Bundle.php deleted file mode 100755 index 19968d16..00000000 --- a/twake/backend/core/src/DevelopersApiV1/Messages/Bundle.php +++ /dev/null @@ -1,26 +0,0 @@ -routes = $routing->getRoutes(); - $this->routing_prefix = $routing->getRoutesPrefix(); - $this->initRoutes(); - } -} \ No newline at end of file diff --git a/twake/backend/core/src/DevelopersApiV1/Messages/Controller/Message.php b/twake/backend/core/src/DevelopersApiV1/Messages/Controller/Message.php deleted file mode 100755 index e60f0b35..00000000 --- a/twake/backend/core/src/DevelopersApiV1/Messages/Controller/Message.php +++ /dev/null @@ -1,98 +0,0 @@ -request->get("group_id", null); - $workspace_id = $request->request->get("workspace_id", null); - - $application = $this->get("app.applications_api")->getAppFromRequest($request, $capabilities); - if (is_array($application) && $application["error"]) { - return new Response($application); - } - - $options = Array( - "application_id" => $application->getId() - ); - - $object = $request->request->get("message", null); - $chan_id = $object["channel_id"]; - - $object["company_id"] = $group_id; - $object["worskpace_id"] = $workspace_id; - $result = $this->get("app.messages")->remove($object, $options); - $front_id = $result["front_id"]; - - $this->get("administration.counter")->incrementCounter("total_api_messages_operation", 1); - - return new Response(Array("result" => $object)); - - } - - public function saveMessage(Request $request) - { - - $capabilities = ["messages_save"]; - - $group_id = $request->request->get("group_id", null); - $workspace_id = $request->request->get("workspace_id", null); - - $application = $this->get("app.applications_api")->getAppFromRequest($request, $capabilities); - if (is_array($application) && $application["error"]) { - return new Response($application); - } - - $object = $request->request->get("message", null); - $chan_id = $object["channel_id"]; - - $user = null; - if (isset($object["sender"])) { - $user = $this->get("app.users")->getById($object["sender"], true); - } - - try { - $object["company_id"] = $group_id; - $object["worskpace_id"] = $workspace_id; - $object = $this->get("app.messages")->save($object, Array(), $user, $application); - } catch (\Exception $e) { - $object = false; - } - - if (!$object) { - return new Response(Array("error" => "unknown error or malformed query.")); - } - - if (isset($object["message"])) { - if (isset($object["message"]["formatted"])) { - $object["content"]["last_change"] = date("U"); - } else { - $object["content"]["formatted"] = $object["content"]; - $object["content"]["last_change"] = date("U"); - } - } - - $this->get("administration.counter")->incrementCounter("total_api_messages_operation", 1); - - return new Response(Array("object" => $object)); - - } - -} diff --git a/twake/backend/core/src/DevelopersApiV1/Messages/Resources/Routing.php b/twake/backend/core/src/DevelopersApiV1/Messages/Resources/Routing.php deleted file mode 100755 index 5e0f317a..00000000 --- a/twake/backend/core/src/DevelopersApiV1/Messages/Resources/Routing.php +++ /dev/null @@ -1,18 +0,0 @@ - ["handler" => "Message:removeMessage", "methods" => ["POST"]], - "save" => ["handler" => "Message:saveMessage", "methods" => ["POST"]], - ]; - -} \ No newline at end of file diff --git a/twake/backend/core/src/DevelopersApiV1/Tasks/Bundle.php b/twake/backend/core/src/DevelopersApiV1/Tasks/Bundle.php deleted file mode 100755 index d1f13340..00000000 --- a/twake/backend/core/src/DevelopersApiV1/Tasks/Bundle.php +++ /dev/null @@ -1,26 +0,0 @@ -routes = $routing->getRoutes(); - $this->routing_prefix = $routing->getRoutesPrefix(); - $this->initRoutes(); - } -} \ No newline at end of file diff --git a/twake/backend/core/src/DevelopersApiV1/Tasks/Controller/Tasks.php b/twake/backend/core/src/DevelopersApiV1/Tasks/Controller/Tasks.php deleted file mode 100755 index 7d47d1eb..00000000 --- a/twake/backend/core/src/DevelopersApiV1/Tasks/Controller/Tasks.php +++ /dev/null @@ -1,184 +0,0 @@ -get("app.applications_api")->getAppFromRequest($request, $capabilities); - if (is_array($application) && $application["error"]) { - return new Response($application); - } - - $object = $request->request->get("object", null); - $user = null; - $object = $this->get("app.tasks.task")->remove($object, Array(), $user); - - $event = Array( - "client_id" => "system", - "action" => "remove", - "object_type" => "", - "front_id" => $object["front_id"] - ); - $this->get("app.websockets")->push("board_tasks/" . $object["board_id"], $event); - - $this->get("administration.counter")->incrementCounter("total_api_tasks_operation", 1); - - return new Response(Array("result" => $object)); - } - - public function saveTask(Request $request) - { - - $capabilities = ["tasks_task_save"]; - - $application = $this->get("app.applications_api")->getAppFromRequest($request, $capabilities); - if (is_array($application) && $application["error"]) { - return new Response($application); - } - - $object = $request->request->get("object", null); - $user = null; - try { - $object = $this->get("app.tasks.task")->save($object, Array(), $user); - } catch (\Exception $e) { - $object = false; - } - if (!$object) { - return new Response(Array("error" => "unknown error or malformed query.")); - } - - if ($object) { - - $event = Array( - "client_id" => "system", - "action" => "save", - "object_type" => "", - "object" => $object - ); - $this->get("app.websockets")->push("board_tasks/" . $object["board_id"], $event); - - } - - $this->get("administration.counter")->incrementCounter("total_api_tasks_operation", 1); - - return new Response(Array("object" => $object)); - - } - - public function getBoardList(Request $request) - { - $privileges = ["workspace_tasks"]; - - $application = $this->get("app.applications_api")->getAppFromRequest($request, [], $privileges); - if (is_array($application) && $application["error"]) { - return new Response($application); - } - $objects = false; - $user_id = $request->request->get("user_id", ""); - $workspace_id = $request->request->get("workspace_id", ""); - if ($workspace_id) { - $user_entity = null; - if ($user_id) { - $user_entity = $this->get("app.users")->getById($user_id, true); - } - if ($user_entity) { - $objects = $this->get("app.tasks.board")->get(Array("workspace_id" => $workspace_id), $user_entity); - } - } - - if ($objects === false) { - return new Response(Array("error" => "payload_error")); - } - - $res = []; - foreach ($objects as $object) { - $res[] = $object; - } - - $this->get("administration.counter")->incrementCounter("total_api_tasks_operation", 1); - - return new Response(Array("data" => $res)); - } - - public function getListsInBoard(Request $request) - { - $privileges = ["workspace_tasks"]; - - $application = $this->get("app.applications_api")->getAppFromRequest($request, [], $privileges); - if (is_array($application) && $application["error"]) { - return new Response($application); - } - $objects = false; - $user_id = $request->request->get("user_id", ""); - $board_id = $request->request->get("board_id", ""); - $workspace_id = $request->request->get("workspace_id", ""); - if ($workspace_id) { - $user_entity = null; - if ($user_id) { - $user_entity = $this->get("app.users")->getById($user_id, true); - } - if ($user_entity) { - $objects = $this->get("app.tasks.list")->get(Array("board_id" => $board_id, "workspace_id" => $workspace_id), $user_entity); - } - } - - if ($objects === false) { - return new Response(Array("error" => "payload_error")); - } - - $res = []; - foreach ($objects as $object) { - $res[] = $object; - } - - $this->get("administration.counter")->incrementCounter("total_api_tasks_operation", 1); - - return new Response(Array("data" => $res)); - } - - public function getTasksInBoard(Request $request) - { - $privileges = ["workspace_tasks"]; - - $application = $this->get("app.applications_api")->getAppFromRequest($request, [], $privileges); - if (is_array($application) && $application["error"]) { - return new Response($application); - } - $objects = false; - $user_id = $request->request->get("user_id", ""); - $board_id = $request->request->get("board_id", ""); - $workspace_id = $request->request->get("workspace_id", ""); - if ($workspace_id) { - $user_entity = null; - if ($user_id) { - $user_entity = $this->get("app.users")->getById($user_id, true); - } - if ($user_entity) { - $objects = $this->get("app.tasks.task")->get(Array("board_id" => $board_id, "workspace_id" => $workspace_id), $user_entity); - } - } - - if ($objects === false) { - return new Response(Array("error" => "payload_error")); - } - - $res = []; - foreach ($objects as $object) { - $res[] = $object; - } - - $this->get("administration.counter")->incrementCounter("total_api_tasks_operation", 1); - - return new Response(Array("data" => $res)); - } - -} \ No newline at end of file diff --git a/twake/backend/core/src/DevelopersApiV1/Tasks/Resources/Routing.php b/twake/backend/core/src/DevelopersApiV1/Tasks/Resources/Routing.php deleted file mode 100755 index c31e5728..00000000 --- a/twake/backend/core/src/DevelopersApiV1/Tasks/Resources/Routing.php +++ /dev/null @@ -1,21 +0,0 @@ - ["handler" => "Tasks:removeTask", "methods" => ["POST"]], - "task/save" => ["handler" => "Tasks:saveTask", "methods" => ["POST"]], - "get_boards" => ["handler" => "Tasks:getBoardList", "methods" => ["POST"]], - "task/get" => ["handler" => "Tasks:getTasksInBoard", "methods" => ["POST"]], - "task/get_lists" => ["handler" => "Tasks:getListsInBoard", "methods" => ["POST"]], - ]; - -} \ No newline at end of file diff --git a/twake/backend/core/src/DevelopersApiV1/Users/Bundle.php b/twake/backend/core/src/DevelopersApiV1/Users/Bundle.php deleted file mode 100755 index ac01b1c1..00000000 --- a/twake/backend/core/src/DevelopersApiV1/Users/Bundle.php +++ /dev/null @@ -1,26 +0,0 @@ -routes = $routing->getRoutes(); - $this->routing_prefix = $routing->getRoutesPrefix(); - $this->initRoutes(); - } -} \ No newline at end of file diff --git a/twake/backend/core/src/DevelopersApiV1/Users/Controller/Users.php b/twake/backend/core/src/DevelopersApiV1/Users/Controller/Users.php deleted file mode 100755 index c4e39caf..00000000 --- a/twake/backend/core/src/DevelopersApiV1/Users/Controller/Users.php +++ /dev/null @@ -1,128 +0,0 @@ -get("app.applications_api")->getAppFromRequest($request, $capabilities); - if (is_array($application) && $application["error"]) { - return new Response($application); - } - - $user_id = $request->request->get("user_id", false); - - if ($user_id) { - $object_orm = $this->get("app.users")->getById($user_id, true); - $object = $object_orm->getAsArray(); - $object["email"] = $object_orm->getEmail(); - } - - return new Response(Array("object" => $object)); - - } - - public function getNotifications(Request $request) - { - $result = Array("unread" => 0, "notifications" => Array()); - - try{ - $user_id = $request->request->get("user_id"); - $user = null; - if($user_id){ - $user = $this->get("app.users")->getById($user_id, true); - }else{ - $user_email = $request->request->get("user_email"); - $user = $this->get("app.users")->getByEmail($user_email, true); - } - $limit = $request->request->get("limit", 30); - - $notifications = []; - - if($user){ - $workspaces_obj = $this->get("app.workspace_members")->getWorkspaces($user->getId() . ""); - if($workspaces_obj){ - $workspaces = Array(); - foreach ($workspaces_obj as $workspace_obj) { - if($workspace_obj["hasnotifications"]){ - //Add notifications in notification list - $workspace_infos = $workspace_obj["workspace"]->getAsArray(); - - $channels = $this->get("app.channels.channels_system")->get(["workspace_id"=>$workspace_infos["id"]], $user); - - foreach ($channels as $channel) { - $unread = max(0, $channel["messages_increment"] - $channel["_user_last_message_increment"]); - if($unread > 0){ - $notifications[] = [ - "title" => $workspace_infos["name"] . " • " . $channel["name"], - "content" => $unread . " unread message(s)", - "date" => $channel["_user_last_access"] ?: $channel["last_activity"], - "url" => "/notification/-".$workspace_infos["id"]."-".$channel["id"] - ]; - } - } - } - } - }else{ - $notifications = []; - } - - $channels = $this->get("app.channels.direct_messages_system")->get([], $user); - foreach ($channels as $channel) { - $unread = max(0, $channel["messages_increment"] - $channel["_user_last_message_increment"]); - if($unread > 0){ - - $name = []; - foreach($channel["members"] as $member){ - if($member != $user->getId()){ - $member_user = $this->get("app.users")->getById($member, true); - if($member_user){ - $name[] = $member_user->getFullName(); - } - } - } - $name = join(", ", $name); - - $notifications[] = [ - "title" => $name, - "content" => $unread . " unread message(s)", - "date" => $channel["_user_last_access"] ?: $channel["last_activity"], - "url" => "/notification/-".$channel["id"] //For private channels - ]; - } - } - - } - - usort($notifications, function ($a, $b) { - return $b['date'] - $a['date']; - }); - - $result["unread"] = count($notifications); - $result["notifications"] = array_slice($notifications, 0, $limit); - - }catch(\Exception $err){ - $result["unread"] = 0; - $result["notifications"] = []; - $result["error"] = $err->getMessage(); - } - return new Response($result); - } - -} diff --git a/twake/backend/core/src/DevelopersApiV1/Users/Resources/Routing.php b/twake/backend/core/src/DevelopersApiV1/Users/Resources/Routing.php deleted file mode 100755 index f28d800b..00000000 --- a/twake/backend/core/src/DevelopersApiV1/Users/Resources/Routing.php +++ /dev/null @@ -1,18 +0,0 @@ - ["handler" => "Users:getAction", "methods" => ["POST"]], - "notifications" => ["handler" => "Users:getNotifications", "methods" => ["POST"]], - ]; - -} diff --git a/twake/backend/core/src/Twake/Calendar/Bundle.php b/twake/backend/core/src/Twake/Calendar/Bundle.php deleted file mode 100755 index d30dd1a4..00000000 --- a/twake/backend/core/src/Twake/Calendar/Bundle.php +++ /dev/null @@ -1,30 +0,0 @@ -routes = $routing->getRoutes(); - $this->routing_prefix = $routing->getRoutesPrefix(); - $this->initRoutes(); - - $this->services = (new Services())->getServices(); - $this->initServices(); - } -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Calendar/Command/ReminderCheckerCommand.php b/twake/backend/core/src/Twake/Calendar/Command/ReminderCheckerCommand.php deleted file mode 100755 index c0075ef4..00000000 --- a/twake/backend/core/src/Twake/Calendar/Command/ReminderCheckerCommand.php +++ /dev/null @@ -1,32 +0,0 @@ -setName("twake:calendar_check_reminders"); - } - - - protected function execute() - { - $services = $this->getApp()->getServices(); - - $limit = date("U", date("U") + 60); - - while (date("U") < $limit) { - $sent = $services->get("app.calendar.event")->checkReminders(); - if ($sent == 0) { - sleep(30); - } - } - } - - -} diff --git a/twake/backend/core/src/Twake/Calendar/Controller/Calendar.php b/twake/backend/core/src/Twake/Calendar/Controller/Calendar.php deleted file mode 100755 index 0e1f969b..00000000 --- a/twake/backend/core/src/Twake/Calendar/Controller/Calendar.php +++ /dev/null @@ -1,56 +0,0 @@ -request->get("options"); - $object = $request->request->get("object"); - $res = $this->get("app.calendar.calendar")->remove($object, $options, $this->getUser()); - if (!$res) { - return new Response(Array("status" => "error")); - } - return new Response(Array("data" => Array("object" => $res))); - } - - public function save(Request $request) - { - $options = $request->request->get("options"); - $object = $request->request->get("object"); - $res = $this->get("app.calendar.calendar")->save($object, $options, $this->getUser()); - if (!$res) { - return new Response(Array("status" => "error")); - }else{ - if($GLOBALS["segment_enabled"]) \Segment::track([ - "event" => "calendar:".($object["id"] ? "edit" : "create"), - "userId" => $this->getuser()->getIdentityProviderId() ?: $this->getUser()->getId() - ]); - } - return new Response(Array("data" => Array("object" => $res))); - } - - public function getAction(Request $request) - { - $options = $request->request->get("options"); - $objects = $this->get("app.calendar.calendar")->get($options, $this->getUser()); - if ($objects === false) { - return new Response(Array("status" => "error")); - }else{ - if($GLOBALS["segment_enabled"]) \Segment::track([ - "event" => "calendar:open", - "userId" => $this->getuser()->getIdentityProviderId() ?: $this->getUser()->getId() - ]); - } - - return new Response(Array("data" => $objects)); - } - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Calendar/Controller/Event.php b/twake/backend/core/src/Twake/Calendar/Controller/Event.php deleted file mode 100755 index ab207fcc..00000000 --- a/twake/backend/core/src/Twake/Calendar/Controller/Event.php +++ /dev/null @@ -1,57 +0,0 @@ -request->get("options"); - $object = $request->request->get("object"); - $res = $this->get("app.calendar.event")->remove($object, $options, $this->getUser()); - if (!$res) { - return new Response(Array("status" => "error")); - } - if($GLOBALS["segment_enabled"]) \Segment::track([ - "event" => "calendar:event:remove", - "userId" => $this->getuser()->getIdentityProviderId() ?: $this->getUser()->getId() - ]); - return new Response(Array("data" => Array("object" => $res))); - } - - public function save(Request $request) - { - $options = $request->request->get("options"); - $object = $request->request->get("object"); - $res = $this->get("app.calendar.event")->save($object, $options, $this->getUser()); - if (!$res) { - return new Response(Array("status" => "error")); - } else { - if (!$object["id"]) { - $this->get("administration.counter")->incrementCounter("total_events", 1); - } - if($GLOBALS["segment_enabled"]) \Segment::track([ - "event" => "calendar:event:".($object["id"] ? "edit" : "create"), - "userId" => $this->getuser()->getIdentityProviderId() ?: $this->getUser()->getId() - ]); - } - return new Response(Array("data" => Array("object" => $res))); - } - - public function getAction(Request $request) - { - $options = $request->request->get("options"); - $objects = $this->get("app.calendar.event")->get($options, $this->getUser()); - if ($objects === false) { - return new Response(Array("status" => "error")); - } - return new Response(Array("data" => $objects)); - } - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Calendar/Controller/Export.php b/twake/backend/core/src/Twake/Calendar/Controller/Export.php deleted file mode 100755 index 53fa79fd..00000000 --- a/twake/backend/core/src/Twake/Calendar/Controller/Export.php +++ /dev/null @@ -1,27 +0,0 @@ -query->get("token"); - if ($token) { - return $this->get("app.calendar.export")->exportCalendar($token, $this->get("app.calendar.event")); - } else - return new Response("Errors : Token not found"); - } - - - public function generateToken(Request $request) - { - $user = $this->getUser(); - return new Response(Array("token" => $this->get("app.calendar.export")->generateToken($request, $user))); - } -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Calendar/Entity/Calendar.php b/twake/backend/core/src/Twake/Calendar/Entity/Calendar.php deleted file mode 100755 index 2cce7639..00000000 --- a/twake/backend/core/src/Twake/Calendar/Entity/Calendar.php +++ /dev/null @@ -1,170 +0,0 @@ -setWorkspaceId($workspace_id); - $this->setTitle($title); - $this->setColor($color); - $this->setAutoParticipants(Array()); - } - - /** - * @return mixed - */ - public function getId() - { - return $this->id; - } - - /** - * @param mixed $id - */ - public function setId($id) - { - $this->id = $id; - } - - /** - * @return mixed - */ - public function getWorkspaceId() - { - return $this->workspace_id; - } - - /** - * @param mixed $workspace_id - */ - public function setWorkspaceId($workspace_id) - { - $this->workspace_id = $workspace_id; - } - - /** - * @return mixed - */ - public function getTitle() - { - return $this->title; - } - - /** - * @param mixed $title - */ - public function setTitle($title) - { - $this->title = $title; - } - - /** - * @return mixed - */ - public function getColor() - { - return $this->color; - } - - /** - * @param mixed $color - */ - public function setColor($color) - { - $this->color = $color; - } - - /** - * @return mixed - */ - public function getAutoParticipants() - { - return json_decode($this->auto_participants, 1); - } - - /** - * @param mixed $auto_participants - */ - public function setAutoParticipants($auto_participants) - { - $this->auto_participants = json_encode($auto_participants); - } - - /** - * @return mixed - */ - public function getConnectors() - { - return json_decode($this->connectors, 1); - } - - /** - * @param mixed $tabs - */ - public function setConnectors($connectors) - { - $this->connectors = json_encode($connectors); - } - - public function getAsArray() - { - return Array( - "id" => $this->getId(), - "front_id" => $this->getFrontId(), - "title" => $this->getTitle(), - "color" => $this->getColor(), - "connectors" => $this->getConnectors(), - "workspace_id" => $this->getWorkspaceId(), - "auto_participants" => $this->getAutoParticipants() - ); - } - - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Calendar/Entity/Event.php b/twake/backend/core/src/Twake/Calendar/Entity/Event.php deleted file mode 100755 index ca9cf5db..00000000 --- a/twake/backend/core/src/Twake/Calendar/Entity/Event.php +++ /dev/null @@ -1,509 +0,0 @@ -setTitle($title); - $this->setFrom($from); - $this->setTo($to); - $this->setEventLastModified(); - } - - public function getIndexationArray() - { - $participants = []; - foreach ($this->getParticipants() as $p) { - $participants[] = $p["user_id_or_mail"]; - } - - return Array( - "id" => $this->getId() . "", - "title" => $this->getTitle(), - "description" => $this->getDescription(), - "owner" => $this->getOwner(), - "tags" => $this->getTags(), - 'date_from' => ($this->getFrom() ? date('Y-m-d', $this->getFrom()) : null), - 'date_to' => ($this->getTo() ? date('Y-m-d', $this->getTo()) : null), - "date_last_modified" => ($this->getEventLastModified() ? date('Y-m-d', $this->getEventLastModified()) : null), - "workspace_id" => $this->getWorkspaceId(), - "participants" => $participants, - "attachments" => $this->getAttachements() - ); - - } - - /** - * @return mixed - */ - public function getWorkspaceId() - { - $workspace_id = $this->workspace_id; - if (!$workspace_id) { - $list = $this->getWorkspacesCalendars(); - if (count($list) > 0) { - $workspace_id = $list[0]["workspace_id"]; - } - } - return $workspace_id; - } - - /** - * @param mixed $workspace_id - */ - public function setWorkspaceId($workspace_id) - { - $this->workspace_id = $workspace_id; - } - - - /** - * @return string - */ - public function getEsType() - { - return $this->es_type; - } - - /** - * @return mixed - */ - public function getId() - { - return $this->id; - } - - /** - * @param mixed $id - */ - public function setId($id) - { - $this->id = $id; - } - - /** - * @return mixed - */ - public function getFrom() - { - return $this->from; - } - - /** - * @param mixed $from - */ - public function setFrom($from) - { - $this->from = $from; - } - - /** - * @return mixed - */ - public function getTo() - { - return $this->to; - } - - /** - * @param mixed $to - */ - public function setTo($to) - { - $this->to = $to; - } - - /** - * @return mixed - */ - public function getAllDay() - { - return $this->all_day; - } - - /** - * @param mixed $all_day - */ - public function setAllDay($all_day) - { - $this->all_day = $all_day; - } - - /** - * @return mixed - */ - public function getType() - { - return $this->type; - } - - /** - * @param mixed $type - */ - public function setType($type) - { - $this->type = $type; - } - - /** - * @return mixed - */ - public function getRepetitionDefinition() - { - return json_decode($this->repetition_definition, true); - } - - /** - * @param mixed $repetition_definition - */ - public function setRepetitionDefinition($repetition_definition) - { - $this->repetition_definition = json_encode($repetition_definition); - } - - /** - * @return mixed - */ - public function getTitle() - { - return $this->title; - } - - /** - * @param mixed $title - */ - public function setTitle($title) - { - $this->title = $title; - } - - /** - * @return mixed - */ - public function getDescription() - { - return $this->description; - } - - /** - * @param mixed $description - */ - public function setDescription($description) - { - $this->description = $description; - } - - /** - * @return mixed - */ - public function getLocation() - { - return $this->location; - } - - /** - * @param mixed $location - */ - public function setLocation($location) - { - $this->location = $location; - } - - /** - * @return mixed - */ - public function getPrivate() - { - return $this->private; - } - - /** - * @param mixed $private - */ - public function setPrivate($private) - { - $this->private = $private; - } - - /** - * @return mixed - */ - public function getAvailable() - { - return $this->available; - } - - /** - * @param mixed $available - */ - public function setAvailable($available) - { - $this->available = $available; - } - - /** - * @return mixed - */ - public function getOwner() - { - return $this->owner; - } - - /** - * @param mixed $owner - */ - public function setOwner($owner) - { - $this->owner = $owner; - } - - /** - * @return mixed - */ - public function getParticipants() - { - return json_decode($this->participants, true); - } - - /** - * @param mixed $participants - */ - public function setParticipants($participants) - { - $this->participants = json_encode($participants); - } - - /** - * @return mixed - */ - public function getWorkspacesCalendars() - { - return json_decode($this->workspaces_calendars, true); - } - - /** - * @param mixed $workspaces_calendars - */ - public function setWorkspacesCalendars($workspaces_calendars) - { - $this->workspaces_calendars = json_encode($workspaces_calendars); - } - - /** - * @return mixed - */ - public function getNotifications() - { - return json_decode($this->notifications, true); - } - - /** - * @param mixed $notifications - */ - public function setNotifications($notifications) - { - $this->notifications = json_encode($notifications); - } - - /** - * @return mixed - */ - public function getTags() - { - return json_decode($this->tags, true); - } - - /** - * @param mixed $tags - */ - public function setTags($tags) - { - $this->tags = json_encode($tags); - } - - /** - * @return mixed - */ - public function getAttachements() - { - return json_decode($this->attachements, true); - } - - /** - * @param mixed $tags - */ - public function setAttachements($attachements) - { - $this->attachements = json_encode($attachements); - } - - public function getSortKey() - { - $after_sort_date = floor($this->getFrom() / (60 * 60 * 24 * 7)); - $before_sort_date = floor($this->getTo() / (60 * 60 * 24 * 7)); - $sort_key = [$after_sort_date]; - if ($after_sort_date != $before_sort_date) { - $sort_key = [$after_sort_date, $before_sort_date]; - } - return $sort_key; - } - - /** - * @return mixed - */ - public function getEventLastModified() - { - return $this->event_last_modified; - } - - /** - * @param mixed $event_last_modified - */ - public function setEventLastModified() - { - $this->event_last_modified = date("U"); - } - - - public function getAsArray() - { - return Array( - "id" => $this->getId(), - "front_id" => $this->getFrontId(), - "from" => $this->getFrom(), - "to" => $this->getTo(), - "all_day" => $this->getAllDay(), - "repetition_definition" => $this->getRepetitionDefinition(), - "type" => $this->getType(), - "title" => $this->getTitle(), - "description" => $this->getDescription(), - "location" => $this->getLocation(), - "private" => $this->getPrivate(), - "available" => $this->getAvailable(), - "owner" => $this->getOwner(), - "participants" => $this->getParticipants(), - "workspaces_calendars" => $this->getWorkspacesCalendars(), - "notifications" => $this->getNotifications(), - "tags" => $this->getTags(), - "event_last_modified" => $this->getEventLastModified(), - "attachments" => $this->getAttachements() - ); - } - - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Calendar/Entity/EventCalendar.php b/twake/backend/core/src/Twake/Calendar/Entity/EventCalendar.php deleted file mode 100755 index 6fe19f24..00000000 --- a/twake/backend/core/src/Twake/Calendar/Entity/EventCalendar.php +++ /dev/null @@ -1,105 +0,0 @@ -workspace_id = $workspace_id; - $this->calendar_id = $calendar_id; - $this->event_id = $event_id; - $this->sort_date = $sort_date; - } - - /** - * @return mixed - */ - public function getId() - { - return $this->id; - } - - /** - * @param mixed $id - */ - public function setId($id) - { - $this->id = $id; - } - - /** - * @return mixed - */ - public function getWorkspaceId() - { - return $this->workspace_id; - } - - /** - * @return mixed - */ - public function getCalendarId() - { - return $this->calendar_id; - } - - /** - * @return mixed - */ - public function getSortDate() - { - return $this->sort_date; - } - - /** - * @return mixed - */ - public function getEventId() - { - return $this->event_id; - } - - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Calendar/Entity/EventUser.php b/twake/backend/core/src/Twake/Calendar/Entity/EventUser.php deleted file mode 100755 index af8b235d..00000000 --- a/twake/backend/core/src/Twake/Calendar/Entity/EventUser.php +++ /dev/null @@ -1,133 +0,0 @@ -user_id_or_mail = $user_id_or_mail; - $this->event_id = $event_id; - $this->sort_date = $sort_date; - $this->accept_status = $accept_status; - } - - /** - * @return mixed - */ - public function getId() - { - return $this->id; - } - - /** - * @param mixed $id - */ - public function setId($id) - { - $this->id = $id; - } - - /** - * @return mixed - */ - public function getUserIdOrMail() - { - return $this->user_id_or_mail; - } - - /** - * @return mixed - */ - public function getSortDate() - { - return $this->sort_date; - } - - /** - * @return mixed - */ - public function getEventId() - { - return $this->event_id; - } - - /** - * @return mixed - */ - public function getAcceptStatus() - { - return $this->accept_status; - } - - /** - * @param mixed $accept_status - */ - public function setAcceptStatus($accept_status) - { - $this->accept_status = $accept_status; - } - - /** - * @return mixed - */ - public function getEmail() - { - return $this->email; - } - - /** - * @param mixed $email - */ - public function setEmail($email) - { - $this->email = $email; - } - - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Calendar/Entity/ExportToken.php b/twake/backend/core/src/Twake/Calendar/Entity/ExportToken.php deleted file mode 100755 index 3f66bf57..00000000 --- a/twake/backend/core/src/Twake/Calendar/Entity/ExportToken.php +++ /dev/null @@ -1,140 +0,0 @@ -user_id = $user_id; - $this->workspaceid = $workspaceid; - $this->setCalendars($calendars); - $this->user_token = $user_token; - } - - /** - * @return mixed - */ - public function getUserId() - { - return $this->user_id; - } - - /** - * @param mixed $user_id - */ - public function setUserId($user_id) - { - $this->user_id = $user_id; - } - - /** - * @return mixed - */ - public function getId() - { - return $this->id; - } - - /** - * @param mixed $id - */ - public function setId($id) - { - $this->id = $id; - } - - /** - * @return mixed - */ - public function getWorkspaceid() - { - return $this->workspaceid; - } - - /** - * @param mixed $workspaceid - */ - public function setWorkspaceid($workspaceid) - { - $this->workspaceid = $workspaceid; - } - - /** - * @return mixed - */ - public function getCalendars() - { - return json_decode($this->calendars, true); - } - - /** - * @param mixed $calendars - */ - public function setCalendars($calendars) - { - $this->calendars = json_encode($calendars); - } - - /** - * @return mixed - */ - public function getToken() - { - return $this->user_token; - } - - /** - * @param mixed $user_token - */ - public function setToken($token) - { - $this->user_token = $token; - } - - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Calendar/Resources/Routing.php b/twake/backend/core/src/Twake/Calendar/Resources/Routing.php deleted file mode 100755 index cbf025fa..00000000 --- a/twake/backend/core/src/Twake/Calendar/Resources/Routing.php +++ /dev/null @@ -1,26 +0,0 @@ - ["handler" => "Event:getAction", "methods" => ["POST"], "security" => ["user_connected_security"]], - "event/save" => ["handler" => "Event:save", "methods" => ["POST"], "security" => ["user_connected_security"]], - "event/remove" => ["handler" => "Event:remove", "methods" => ["POST"], "security" => ["user_connected_security"]], -#Calendars - "calendar/get" => ["handler" => "Calendar:getAction", "methods" => ["POST"], "security" => ["user_connected_security"]], - "calendar/save" => ["handler" => "Calendar:save", "methods" => ["POST"], "security" => ["user_connected_security"]], - "calendar/remove" => ["handler" => "Calendar:remove", "methods" => ["POST"], "security" => ["user_connected_security"]], -#Export - "export" => ["handler" => "Export:export", "methods" => ["POST", "GET"]], - "token_export" => ["handler" => "Export:generateToken", "methods" => ["POST"], "security" => ["user_connected_security"]], - ]; - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Calendar/Resources/Services.php b/twake/backend/core/src/Twake/Calendar/Resources/Services.php deleted file mode 100755 index e4d5dc32..00000000 --- a/twake/backend/core/src/Twake/Calendar/Resources/Services.php +++ /dev/null @@ -1,18 +0,0 @@ - "CalendarEvent", -// arguments: ["@app.twake_doctrine", "@app.websockets", "@app.applications_api", "@app.notifications", "@app.calendar.export"] - "app.calendar.calendar" => "CalendarCalendar", -// arguments: ["@app.twake_doctrine", "@app.applications_api"] - "app.calendar.export" => "CalendarExport", -// arguments: ["@app.twake_doctrine"] - ]; - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Calendar/Services/CalendarCalendar.php b/twake/backend/core/src/Twake/Calendar/Services/CalendarCalendar.php deleted file mode 100755 index 2772790a..00000000 --- a/twake/backend/core/src/Twake/Calendar/Services/CalendarCalendar.php +++ /dev/null @@ -1,167 +0,0 @@ -doctrine = $app->getServices()->get("app.twake_doctrine"); - $this->applications_api = $app->getServices()->get("app.applications_api"); - } - - /** Called from Collections manager to verify user has access to websockets room, registered in Core/Services/Websockets.php */ - public function init($route, $data, $current_user = null) - { - return $this->hasAccess($data, $current_user); - } - - public function hasAccess($data, $current_user = null) - { - //TODO - return true; - } - - public function get($options, $current_user) - { - $workspace_id = $options["workspace_id"]; - $calendars = $this->doctrine->getRepository("Twake\Calendar:Calendar")->findBy(Array("workspace_id" => $workspace_id)); - - if (!$this->hasAccess($options, $current_user)) { - return false; - } - - if (count($calendars) == 0) { - $cal = $this->save(Array( - "workspace_id" => $workspace_id, - "title" => "General", - "color" => "#33b679", - "auto_participants" => Array() - ), Array(), null); - if ($cal) { - return [$cal]; - } - } - - $ret = []; - foreach ($calendars as $calendar) { - $ret[] = $calendar->getAsArray(); - } - - return $ret; - } - - public function save($object, $options, $current_user) - { - - if (!$this->hasAccess($object, $current_user)) { - return false; - } - - $did_create = false; - if (isset($object["id"])) { - $calendar = $this->doctrine->getRepository("Twake\Calendar:Calendar")->findOneBy(Array("id" => $object["id"])); - if (!$calendar) { - return false; - } - } else { - $did_create = true; - $calendar = new Calendar($object["workspace_id"], "", ""); - $calendar->setFrontId($object["front_id"]); - } - - $calendar->setTitle($object["title"]); - $calendar->setColor($object["color"]); - $calendar->setAutoParticipants($object["auto_participants"]); - $this->doctrine->persist($calendar); - $this->doctrine->flush(); - - $this->updateConnectors($calendar, $object["connectors"], $current_user ? $current_user->getId() : null); - - //Notify connectors - $workspace_id = $calendar->getWorkspaceId(); - $resources = $this->applications_api->getResources($workspace_id, "workspace_calendar", $workspace_id); - $apps_ids = []; - foreach ($resources as $resource) { - if (in_array("calendar", $resource->getApplicationHooks())) { - $apps_ids[] = $resource->getApplicationId(); - } - } - if (count($apps_ids) > 0) { - foreach ($apps_ids as $app_id) { - if ($app_id) { - $data = Array( - "calendar" => $calendar->getAsArray() - ); - if ($did_create) { - $this->applications_api->notifyApp($app_id, "hook", "new_calendar", $data); - } else { - $this->applications_api->notifyApp($app_id, "hook", "edit_calendar", $data); - } - } - } - } - - return $calendar->getAsArray(); - - } - - private function updateConnectors($calendar_entity, $connectors_ids, $current_user_id = null) - { - - if (!$connectors_ids) { - $connectors_ids = []; - } - - $current_connectors = $calendar_entity->getConnectors(); - $current_connectors = $current_connectors ? $current_connectors : []; - - $did_something = false; - - foreach ($connectors_ids as $connector_id) { - if (!in_array($connector_id, $current_connectors)) { - $this->applications_api->addResource($connector_id, $calendar_entity->getWorkspaceId(), "calendar", $calendar_entity->getId(), $current_user_id); - $did_something = true; - } - } - - foreach ($current_connectors as $current_connector_id) { - if (!in_array($current_connector_id, $connectors_ids)) { - $this->applications_api->removeResource($connector_id, $calendar_entity->getWorkspaceId(), "calendar", $calendar_entity->getId(), $current_user_id); - $did_something = true; - } - } - - if ($did_something) { - $calendar_entity->setConnectors($connectors_ids); - $this->doctrine->persist($calendar_entity); - $this->doctrine->flush(); - } - - } - - public function remove($object, $options, $current_user = null) - { - $id = $object["id"]; - - if (!$this->hasAccess($object, $current_user)) { - return false; - } - - $calendar = $this->doctrine->getRepository("Twake\Calendar:Calendar")->findOneBy(Array("id" => $id)); - if (!$calendar) { - return false; - } - - $this->doctrine->remove($calendar); - $this->doctrine->flush(); - - $this->doctrine->getRepository("Twake\Calendar:EventCalendar")->removeBy(Array("workspace_id" => $calendar->getWorkspaceId(), "calendar_id" => $id)); - - return $object; - } -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Calendar/Services/CalendarEvent.php b/twake/backend/core/src/Twake/Calendar/Services/CalendarEvent.php deleted file mode 100755 index f784d59c..00000000 --- a/twake/backend/core/src/Twake/Calendar/Services/CalendarEvent.php +++ /dev/null @@ -1,762 +0,0 @@ -doctrine = $app->getServices()->get("app.twake_doctrine"); - $this->calendarExport = $app->getServices()->get("app.calendar.export"); - $this->enc_pusher = $app->getServices()->get("app.websockets"); - $this->applications_api = $app->getServices()->get("app.applications_api"); - $this->notifications = $app->getServices()->get("app.notifications"); - $this->queues_scheduled = $app->getServices()->get("app.queues_scheduled"); - $this->attachementManager = new AttachementManager($this->doctrine, $this->enc_pusher); - } - - /** Called from Collections manager to verify user has access to websockets room, registered in Core/Services/Websockets.php */ - public function init($route, $data, $current_user = null) - { - return $this->hasAccess($data, $current_user); - } - - public function hasAccess($data, $current_user = null) - { - //TODO - - if ($data["entity"]) { - //Test we have access to this event - } - - return true; - } - - public function get($options, $current_user) - { - - $after_ts = floor(($options["after_ts"] ? $options["after_ts"] : 0) / (60 * 60 * 24 * 7)); - $before_ts = floor(($options["before_ts"] ? $options["before_ts"] : 0) / (60 * 60 * 24 * 7)); - $mode = $options["mode"]; //User or workspace - - if (!$this->hasAccess($options, $current_user)) { - return false; - } - - $events_ids = []; - if ($mode == "workspace" || $mode == "both") { - - - $events_links = []; - foreach (($options["calendar_list"] ? $options["calendar_list"] : []) as $object) { - $workspace_id = $object["workspace_id"]; - $calendar_id = $object["calendar_id"]; - if ($calendar_id && $workspace_id) { - $events_links = array_merge($events_links, $this->doctrine->getRepository("Twake\Calendar:EventCalendar")->findRange(Array("workspace_id" => $workspace_id, "calendar_id" => $calendar_id), false, "sort_date", $after_ts, $before_ts)); - } - } - - foreach ($events_links as $event_link) { - $events_ids[] = $event_link->getEventId(); - } - - } - if ($mode == "mine" || $mode == "both") { - - if (!isset($options["users_ids_or_mails"]) && $current_user) { - $options["users_ids_or_mails"] = [$current_user->getId()]; - } - - $events_links = []; - foreach (($options["users_ids_or_mails"] ? $options["users_ids_or_mails"] : []) as $user_id_or_mail) { - $events_links = array_merge($events_links, $this->doctrine->getRepository("Twake\Calendar:EventUser")->findRange(Array("user_id_or_mail" => $user_id_or_mail), false, "sort_date", $after_ts, $before_ts)); - } - - foreach ($events_links as $event_link) { - $events_ids[] = $event_link->getEventId(); - } - - } - - $events_ids = array_unique($events_ids); - - $ret = []; - foreach ($events_ids as $id) { - $event = $this->doctrine->getRepository("Twake\Calendar:Event")->find($id); - if ($event) { - $ret[] = $event->getAsArray(); - } else { - //Remove innexistant event - $this->removeEventDependancesById($id); - } - } - - return $ret; - } - - private function removeEventDependancesById($id) - { - $event = $this->doctrine->getRepository("Twake\Calendar:Event")->findOneBy(Array("id" => $id)); - if ($event) { - $this->attachementManager->removeAttachementsFromEntity($event); - } - - $entities = $this->doctrine->getRepository("Twake\Calendar:EventCalendar")->findBy(Array("event_id" => $id)); - $entities = array_merge($entities, $this->doctrine->getRepository("Twake\Calendar:EventUser")->findBy(Array("event_id" => $id))); - foreach ($entities as $entity) { - $this->doctrine->remove($entity); - - } - $this->doctrine->flush(); - } - - public function remove($object, $options, $current_user = null) - { - $id = $object["id"]; - - if (!$this->hasAccess($object, $current_user)) { - return false; - } - - $event = $this->doctrine->getRepository("Twake\Calendar:Event")->find($id); - if (!$event) { - return false; - } - - $participants = $event->getParticipants(); - - //Quit event - if ($event->getOwner() && $event->getOwner() != $current_user->getId()) { - $list = []; - foreach ($event->getParticipants() as $part) { - if ($part["user_id_or_mail"] != $current_user->getId()) { - $list[] = $part; - } - } - $this->updateParticipants($event, $list, false); - - $evt = Array( - "client_id" => "system", - "action" => "save", - "object_type" => "", - "object" => $event->getAsArray() - ); - - } //Or delete event - else { - $this->doctrine->remove($event); - $this->doctrine->flush(); - - $this->removeEventDependancesById($id); - - //Notify connectors - $resources = []; - $done = []; - foreach ($event->getWorkspacesCalendars() as $calendar) { - $workspace_id = $calendar["workspace_id"]; - if (!in_array($workspace_id, $done)) { - $done[] = $workspace_id; - $resources = array_merge($resources, $this->applications_api->getResources($workspace_id, "workspace_calendar", $workspace_id)); - } - } - $apps_ids = []; - foreach ($resources as $resource) { - if (in_array("event", $resource->getApplicationHooks())) { - $apps_ids[] = $resource->getApplicationId(); - } - } - if (count($apps_ids) > 0) { - foreach ($apps_ids as $app_id) { - if ($app_id) { - $data = Array( - "event" => $event->getAsArray() - ); - $this->applications_api->notifyApp($app_id, "hook", "remove_event", $data); - } - } - } - - $evt = Array( - "client_id" => "system", - "action" => "remove", - "object_type" => "", - "front_id" => $event->getFrontId() - ); - } - - //Notify modification for participant users - foreach ($participants as $participant) { - if (preg_match('/\w{8}-\w{4}-\w{4}-\w{4}-\w{12}/', $participant["user_id_or_mail"])) { - $this->enc_pusher->push("calendar_events/user/" . $participant["user_id_or_mail"], $evt); - } - } - - return $event->getAsArray(); - } - - public function updateParticipants(Event $event, $participants = Array(), $replace_all = false) - { - $sort_key = $event->getSortKey(); - - $participants = $participants ? $participants : []; - - $updated_participants = $this->formatArrayInput($participants, ["user_id_or_mail"]); - $current_participants = $event->getParticipants(); - $updated_participants_fixed = $current_participants; - - $get_diff = $this->getArrayDiffUsingKeys($updated_participants, $current_participants, ["user_id_or_mail"]); - error_log("get diff" . json_encode($get_diff)); - if (count($get_diff["del"]) > 0 || $replace_all) { - $users_in_event = $this->doctrine->getRepository("Twake\Calendar:EventUser")->findBy(Array("event_id" => $event->getId())); - foreach ($users_in_event as $user) { - if ($this->inArrayUsingKeys($get_diff["del"], Array("user_id_or_mail" => $user->getUserIdOrMail()), ["user_id_or_mail"]) || $replace_all) { - //Remove old participants - $this->doctrine->remove($user); - - //Remove from array fixed - foreach ($updated_participants_fixed as $i => $v) { - if ($v["user_id_or_mail"] == $user->getUserIdOrMail()) { - unset($updated_participants_fixed[$i]); - } - } - - } - } - } - - foreach (($replace_all ? $updated_participants : $get_diff["add"]) as $participant) { - foreach ($sort_key as $sort_date) { - - $fixed_participant = $participant; - - //Remove from array fixed - if (filter_var($participant["user_id_or_mail"], FILTER_VALIDATE_EMAIL)) { - //Mail given - $mail = trim(strtolower($participant["user_id_or_mail"])); - $mail_entity = $this->doctrine->getRepository("Twake\Users:Mail")->findOneBy(Array("mail" => $mail)); - if ($mail_entity) { - $fixed_participant["user_id_or_mail"] = $mail_entity->getUser()->getId(); - } - } else if (preg_match('/\w{8}-\w{4}-\w{4}-\w{4}-\w{12}/', $participant["user_id_or_mail"])) { - //User id given - $user = $this->doctrine->getRepository("Twake\Users:User")->findOneBy(Array("id" => $participant["user_id_or_mail"])); - if (!$user) { - continue; - } - $mail = $user->getEmail(); - } else { - continue; - } - - $fixed_participant["email"] = $mail; - $participant = $fixed_participant; - - $user = new EventUser($participant["user_id_or_mail"], $event->getId(), $sort_date); - $user->setEmail($mail); - $this->doctrine->persist($user); - - $updated_participants_fixed[] = $participant; - - } - } - - $_updated_participants_fixed = []; - foreach ($updated_participants_fixed as $v) { - $_updated_participants_fixed[] = $v; - } - $updated_participants_fixed = $_updated_participants_fixed; - $event->setParticipants($updated_participants_fixed); - $this->doctrine->persist($event); - - $this->doctrine->flush(); - } - - //TODO Not the best to send update email every time, change it to a worker waiting 30 minutes at least - - public function formatArrayInput($array, $id_keys = []) - { - $updated_array = []; - $unicity = []; - foreach ($array as $element) { - - $tmp = false; - - if (is_array($element)) { - $all_ok = true; - foreach ($id_keys as $id_key) { - if (!isset($element[$id_key])) { - $all_ok = false; - } - } - if ($all_ok) { - $tmp = $element; - } - } else { - $tmp = Array(); - $tmp[$id_key] = $element; - } - - if ($tmp !== false) { - $uniq_key = ""; - foreach ($id_keys as $id_key) { - $uniq_key .= "_" . $tmp[$id_key]; - } - if (!in_array($uniq_key, $unicity)) { - $unicity[] = $uniq_key; - $updated_array[] = $tmp; - } - } - - } - return $updated_array; - } - - public function getArrayDiffUsingKeys($new_array, $old_array, $keys) - { - $remove = []; - $add = []; - foreach ($new_array as $new_el) { - if (!$this->inArrayUsingKeys($old_array, $new_el, $keys)) { - $add[] = $new_el; - } - } - foreach ($old_array as $old_el) { - if (!$this->inArrayUsingKeys($new_array, $old_el, $keys)) { - $remove[] = $old_el; - } - } - return Array("del" => $remove, "add" => $add); - } - - public function inArrayUsingKeys($array, $element, $keys) - { - $in = false; - foreach ($array as $el) { - $same = true; - foreach ($keys as $key) { - if ($el[$key] != $element[$key]) { - $same = false; - break; - } - } - if ($same) { - $in = true; - break; - } - } - return $in; - } - - public function save($object, $options, $current_user) - { - - if (!$this->hasAccess($object, $current_user)) { - return false; - } - - if (isset($object["id"]) && $object["id"]) { - $event = $this->doctrine->getRepository("Twake\Calendar:Event")->find($object["id"]); - if (!$event) { - return false; - } - $did_create = false; - } else { - $event = new Event($object["title"], intval($object["from"]), intval($object["to"])); - $event->setFrontId($object["front_id"]); - if (isset($object["workspaces_calendars"]) && is_array($object["workspaces_calendars"])) { - $event->setWorkspaceId($object["workspaces_calendars"][0]["workspace_id"]); - } - $did_create = true; - } - - //Manage infos - $old_event = $event->getAsArray(); - $event->setTitle($object["title"]); - $event->setDescription($object["description"]); - $event->setLocation($object["location"]); - $event->setPrivate($object["private"]); - $event->setAvailable($object["available"]); - - //Manage dates - $object["type"] = in_array($object["type"], ["event", "remind", "move", "deadline"]) ? $object["type"] : "event"; - if (!isset($object["from"]) || !$object["from"]) { - if (isset($object["to"])) { - $object["from"] = $object["to"] - 60 * 60; - } else { - $object["from"] = intval(date("U") / (15 * 60)) * 15 * 60; - } - } - if (!isset($object["to"]) || !$object["to"]) { - $object["to"] = $object["from"] + 60 * 60; - } - $tmp_sort_key = json_encode($event->getSortKey()); - $from_changed = ($object["from"] != $event->getFrom()); - $event->setFrom(intval($object["from"])); - $event->setTo(intval($object["to"])); - $event->setAllDay($object["all_day"]); - $event->setType($object["type"]); - $event->setRepetitionDefinition($object["repetition_definition"]); - $sort_key = json_encode($event->getSortKey()); - if ($sort_key != $tmp_sort_key) { - $sort_key_has_changed = true; - } - - $event->setEventLastModified(); - - if (isset($object["tags"])) { - $event->setTags($object["tags"]); - } - - - $this->doctrine->persist($event); - $this->doctrine->flush(); - - if (isset($object["attachments"]) || $did_create) { - $this->attachementManager->updateAttachements($event, $object["attachments"] ? $object["attachments"] : Array()); - } - - $old_participants = $event->getParticipants(); - if (isset($object["participants"]) || $did_create || $sort_key_has_changed) { - - if (!isset($object["participants"])) { - $object["participants"] = $event->getParticipants(); - } - - if (count($object["workspaces_calendars"]) == 0 && count($object["participants"]) == 0 && !$current_user) { - return false; - } - if (count($object["workspaces_calendars"]) == 0 && $current_user) { - if (!is_array($object["participants"])) { - $object["participants"] = []; - } - $object["participants"] = array_merge([Array("user_id_or_mail" => $current_user->getId())], $object["participants"]); - } - if (count($object["participants"]) > 0 && count($object["workspaces_calendars"]) == 0) { - if (preg_match('/\w{8}-\w{4}-\w{4}-\w{4}-\w{12}/', $object["participants"][0]["user_id_or_mail"])) { - $event->setOwner($current_user ? $current_user->getId() : $object["participants"][0]["user_id_or_mail"]); - } else { - //No user (except mails) and no workspaces - $this->doctrine->remove($event); - $this->doctrine->flush(); - return false; - } - } - - - $this->updateParticipants($event, $object["participants"] ? $object["participants"] : Array(), $sort_key_has_changed || $did_create); - } - if (isset($object["workspaces_calendars"]) || $sort_key_has_changed) { - - if (!isset($object["workspaces_calendars"])) { - $object["workspaces_calendars"] = $event->getWorkspacesCalendars(); - } - - if (count($object["workspaces_calendars"]) > 0) { - $event->setOwner(""); - } - - $this->updateCalendars($event, $object["workspaces_calendars"] ? $object["workspaces_calendars"] : Array(), $sort_key_has_changed || $did_create); - } - - - //After checking user id or mails, we verify event is somewere - if (count($event->getParticipants()) == 0 && count($event->getWorkspacesCalendars()) == 0) { - $this->doctrine->remove($event); - $this->doctrine->flush(); - return false; - } - - if (isset($object["notifications"]) || $sort_key_has_changed || $from_changed) { - - if (!isset($object["notifications"])) { - $object["notifications"] = $event->getNotifications(); - } - - $this->updateNotifications($event, $object["notifications"] ? $object["notifications"] : Array(), ($sort_key_has_changed || $did_create || $from_changed)); - } - - - //Notify modification for participant users - $evt = Array( - "client_id" => "system", - "action" => "save", - "object_type" => "", - "object" => $event->getAsArray() - ); - $done = []; - foreach (array_merge($event->getParticipants(), $old_participants) as $participant) { - if (!in_array($participant["user_id_or_mail"], $done) && preg_match('/\w{8}-\w{4}-\w{4}-\w{4}-\w{12}/', $participant["user_id_or_mail"])) { - $done[] = $participant["user_id_or_mail"]; - $this->enc_pusher->push("calendar_events/user/" . $participant["user_id_or_mail"], $evt); - } - } - - //Send invitation or update mails - foreach ($event->getParticipants() as $participant) { - if (filter_var($participant["user_id_or_mail"], FILTER_VALIDATE_EMAIL)) { - $mail = $participant["user_id_or_mail"]; - } else if (preg_match('/\w{8}-\w{4}-\w{4}-\w{4}-\w{12}/', $participant["user_id_or_mail"])) { - $user = $this->doctrine->getRepository("Twake\Users:User")->findOneBy(Array("id" => $participant["user_id_or_mail"])); - if (!$user || ($current_user && $user->getId() == $current_user->getId())) { - continue; - } - $mail = $user->getEmail(); - } else { - continue; - } - $not_in_previous_participants = true; - foreach ($old_participants as $old_participant) { - if ($old_participant["user_id_or_mail"] == $mail) { - $not_in_previous_participants = false; - break; - } - } - if ($did_create || $not_in_previous_participants) { - $this->notifications->sendCustomMail( - $mail, "event_invitation", Array( - "_language" => $current_user ? $current_user->getLanguage() : "en", - "event" => $event->getAsArray(), - "user_timezone_delay" => $current_user ? (intval($current_user->getTimezone())) : null, - "user_timezone_text" => str_replace("+-", "-", $current_user ? ("GMT+" . ($current_user->getTimezone() / 60)) : "GMT+0"), - "sender_fullname" => $current_user ? ("@" . $current_user->getUsername()) : null, - "sender_email" => $current_user ? $current_user->getEmail() : null - ), - [Array("type" => "raw", "data" => $this->calendarExport->generateIcs([$event->getAsArray()]), "filename" => "event.ics", "mimetype" => "text/calendar")] - ); - } else if ($this->hasRealChange($old_event, $event->getAsArray())) { - $this->notifications->sendCustomMail( - $mail, "event_invitation_updated", Array( - "_language" => $current_user ? $current_user->getLanguage() : "en", - "event" => $event->getAsArray(), - "user_timezone_delay" => $current_user ? (intval($current_user->getTimezone())) : null, - "user_timezone_text" => str_replace("+-", "-", $current_user ? ("GMT+" . ($current_user->getTimezone() / 60)) : "GMT+0"), - "sender_fullname" => $current_user ? ("@" . $current_user->getUsername()) : null, - "sender_email" => $current_user ? $current_user->getEmail() : null - ), - [Array("type" => "raw", "data" => $this->calendarExport->generateIcs([$event->getAsArray()]), "filename" => "event.ics", "mimetype" => "text/calendar")] - - - ); - } - - } - - - //Notify connectors - $resources = []; - $done = []; - foreach ($event->getWorkspacesCalendars() as $calendar) { - $workspace_id = $calendar["workspace_id"]; - if (!in_array($workspace_id, $done)) { - $done[] = $workspace_id; - $resources = array_merge($resources, $this->applications_api->getResources($workspace_id, "workspace_calendar", $workspace_id)); - } - } - $apps_ids = []; - foreach ($resources as $resource) { - if (in_array("event", $resource->getApplicationHooks())) { - $apps_ids[] = $resource->getApplicationId(); - } - } - if (count($apps_ids) > 0) { - foreach ($apps_ids as $app_id) { - if ($app_id) { - $data = Array( - "event" => $event->getAsArray() - ); - if ($did_create) { - $this->applications_api->notifyApp($app_id, "hook", "new_event", $data); - } else { - $this->applications_api->notifyApp($app_id, "hook", "edit_event", $data); - } - } - } - } - - - return $event->getAsArray(); - } - - public function updateCalendars(Event $event, $calendars = Array(), $replace_all = false) - { - $sort_key = $event->getSortKey(); - - $calendars = $calendars ? $calendars : []; - - $updated_calendars = $this->formatArrayInput($calendars, ["calendar_id", "workspace_id"]); - $current_calendars = $event->getWorkspacesCalendars(); - $event->setWorkspacesCalendars($updated_calendars); - $this->doctrine->persist($event); - - $get_diff = $this->getArrayDiffUsingKeys($updated_calendars, $current_calendars, ["calendar_id", "workspace_id"]); - - if (count($get_diff["del"]) > 0 || $replace_all) { - $calendars_in_event = $this->doctrine->getRepository("Twake\Calendar:EventCalendar")->findBy(Array("event_id" => $event->getId())); - foreach ($calendars_in_event as $calendar) { - if (!$this->inArrayUsingKeys($get_diff["del"], ["calendar_id" => $calendar->getCalendarId(), "workspace_id" => $calendar->getWorkspaceId()], ["calendar_id", "workspace_id"]) || $replace_all) { - //Remove old participants - $this->doctrine->remove($calendar); - } - } - } - - foreach (($replace_all ? $updated_calendars : $get_diff["add"]) as $calendar) { - foreach ($sort_key as $sort_date) { - $user = new EventCalendar($calendar["workspace_id"], $calendar["calendar_id"], $event->getId(), $sort_date); - $this->doctrine->persist($user); - } - } - - $this->doctrine->flush(); - - } - - public function updateNotifications(Event $event, $notifications = Array(), $replace_all = false) - { - - $notifications = $notifications ? $notifications : []; - $token = base64_encode(bin2hex(random_bytes(32))); - - foreach ($notifications as $index => $notification) { - $notifications[$index]["token"] = $token; - } - - $updated_notifications = $this->formatArrayInput($notifications, ["delay", "mode"]); - $event->setNotifications($updated_notifications); - $this->doctrine->persist($event); - $this->doctrine->flush(); - - foreach ($updated_notifications as $notification) { - if ($event->getFrom() - $notification["delay"] < date("U")) { - continue; - } - - $this->queues_scheduled->schedule("calendar_events", $event->getFrom() - $notification["delay"], [ - "token" => $token, - "event_id" => $event->getId(), - "delay" => $notification["delay"], - "mode" => $notification["mode"] - ]); - } - - } - - public function hasRealChange($old_event, $new_event) - { - return ($old_event["from"] != $new_event["from"] || $old_event["to"] != $new_event["to"] - || strlen(str_replace(" ", "", $old_event["title"] . "")) - strlen(trim($new_event["title"] . "")) > 10 - || strlen(str_replace(" ", "", $old_event["location"] . "")) - strlen(trim($new_event["location"] . "")) > 10 - || strlen(str_replace(" ", "", $old_event["description"] . "")) - strlen(trim($new_event["description"] . "")) > 10); - } - - public function checkReminders() - { - - $sent = 0; - - $notifications = $this->queues_scheduled->consume("calendar_events", true); - - foreach ($notifications ?: [] as $notification_original) { - - $notification = $this->queues_scheduled->getMessage($notification_original); - - //Send notification - /** @var EventCalendar $event */ - $event = $this->doctrine->getRepository("Twake\Calendar:Event")->findOneBy(Array("id" => $notification["event_id"])); - - if ($event) { - - $existing_notifications = $event->getNotifications(); - $valid_notification = false; - foreach ($existing_notifications as $existing_notification) { - //Verify this received notification exists in calendar event - if ($existing_notification["token"] == $notification["token"]) { - $valid_notification = true; - } - } - - if ($valid_notification) { - - $delay = floor($notification["delay"] / 60) . "min"; - if ($notification["delay"] > 60 * 60) { - $delay = floor($notification["delay"] / (60 * 60)) . "h"; - } - if ($notification["delay"] > 60 * 60 * 24) { - $delay = floor($notification["delay"] / (60 * 60 * 24)) . "j"; - } - if ($notification["delay"] > 60 * 60 * 24 * 7 * 2) { - $delay = floor($notification["delay"] / (60 * 60 * 24 * 7)) . "w"; - } - - $title = "Untitled"; - if ($event->getTitle()) { - $title = $event->getTitle(); - } - $text = $title . " in " . $delay; - - $participants = $event->getParticipants(); - - foreach ($participants as $participant) { - if ($notification["mode"] == "mail" || !$notification["mode"]) { - $mail = $participant["user_id_or_mail"]; - $language = false; - if (preg_match('/\w{8}-\w{4}-\w{4}-\w{4}-\w{12}/', $participant["user_id_or_mail"])) { - $mail = $this->doctrine->getRepository("Twake\Users:User")->findOneBy(Array("id" => $participant["user_id_or_mail"])); - if ($mail) { - $language = $mail->getLanguage(); - $mail = $mail->getEMail(); - } else { - $mail = null; - } - } - //Mail - if ($mail) { - $this->notifications->sendCustomMail( - $mail, "event_notification", Array( - "_language" => $language ? $language : "en", - "text" => $text, - "delay" => $delay, - "event" => $event->getAsArray() - ) - ); - } - } - if ($notification["mode"] == "push" || !$notification["mode"]) { - //Push notification - if (preg_match('/\w{8}-\w{4}-\w{4}-\w{4}-\w{12}/', $participant["user_id_or_mail"])) { - $user = $this->doctrine->getRepository("Twake\Users:User")->findOneBy(Array("id" => $participant["user_id_or_mail"])); - if ($user) { - $this->notifications->pushDevice( - $user, $text, "📅 Calendar notification", null - ); - } - } - } - } - - } - - } - - $sent++; - $this->queues_scheduled->ack("calendar_events", $notification_original); - - } - - return $sent; - - } - -} diff --git a/twake/backend/core/src/Twake/Calendar/Services/CalendarExport.php b/twake/backend/core/src/Twake/Calendar/Services/CalendarExport.php deleted file mode 100755 index 1fe8f5c5..00000000 --- a/twake/backend/core/src/Twake/Calendar/Services/CalendarExport.php +++ /dev/null @@ -1,234 +0,0 @@ -doctrine = $app->getServices()->get("app.twake_doctrine"); - } - - public function generateToken($request, $current_user = null) - { - - $user_id = $current_user->getId(); - $workspace_id = $request->request->get('workspace_id'); - $calendars = $request->request->get('calendars'); - - if ($workspace_id && ($calendars["mode"] == "both" || $calendars["mode"] == "workspace")) { - if (!isset($calendars["calendar_list"]) || !$calendars["calendar_list"] || count($calendars["calendar_list"]) == 0) { - $calendars["calendar_list"] = []; - $calendars_entities = $this->doctrine->getRepository("Twake\Calendar:Calendar")->findBy(Array("workspace_id" => $workspace_id)); - foreach ($calendars_entities as $calendar_entity) { - $calendars["calendar_list"][] = ["workspace_id" => $workspace_id, "calendar_id" => $calendar_entity->getId()]; - } - } - } - - $token = bin2hex(random_bytes(64)); - - $entity = new ExportToken($user_id, $workspace_id, $calendars, $token); - $this->doctrine->persist($entity); - $this->doctrine->flush(); - - return $token; - - } - - - public function exportCalendar($token, $calendarEventService) - { - $entity = $this->doctrine->getRepository("Twake\Calendar:ExportToken")->findOneBy(Array("user_token" => $token)); - if ($entity) { - $calendars = $entity->getCalendars(); - $mode = $calendars["mode"]; - $options = Array("mode" => $mode, - "calendar_list" => isset($calendars["calendar_list"]) ? $calendars["calendar_list"] : "", - "after_ts" => date("U", strtotime("-2 months")), - "before_ts" => date("U", strtotime("+10 months"))); - $user_entity = $this->doctrine->getRepository("Twake\Users:User")->findOneBy(Array("id" => $entity->getUserId())); - - - $events = $calendarEventService->get($options, $user_entity); - - if (is_array($events)) { - $vCalendar = $this->generateIcs($events); - - return new Response( - $vCalendar, 200, array( - 'Content-Type' => 'application/octet-stream', - 'Content-Description' => 'File Transfer', - - 'Content-Disposition' => 'attachment; filename="cal.ics"', - - 'Expires' => '0', - 'Cache-Control' => 'must-revalidate', - 'Pragma' => 'public', - ) - ); - } else { - return new Response("Errors : Events not found in data-base"); - } - } else - return new Response("Errors : Token not found in data-base"); - - - } - - public function generateIcs($events) - { - $time_zone = new \DateTimeZone("Etc/UTC"); - date_default_timezone_set("Etc/UTC"); - - - $vCalendar = new Component\Calendar('twakeapp.com'); - foreach ($events as $evt) { - - if (isset($evt["from"]) && $evt["from"]) { - $dateStart = new \DateTime(date("c", (int)$evt["from"]), $time_zone); - } else { - continue; - } - if (isset($evt["to"]) && $evt["to"]) { - //If allday we need to remove one day because we dont use the normal format - $dateEnd = new \DateTime(date("c", (int)$evt["to"]), $time_zone); - } else { - continue; - } - - $vEvent = new Component\Event(); - - if ($evt["repetition_definition"]) { - try { - $rrule = $evt["repetition_definition"]["rrule"]; - $rrule = explode("nRRULE", $rrule)[1]; - - foreach (explode(";", $rrule) as $parameter) { - $data = explode("=", $parameter); - $properties["key"][] = $data[0]; - $properties["value"][] = $data[1]; - } - - foreach ($properties as $p) { - foreach ($p as $key => $value) { - switch ($value) { - case ":FREQ" : - $freq = $key; - break; - case ":INTERVAL" : - $interval = $key; - break; - case "UNTIL" : - $until = $key; - break; - case "COUNT" : - $count = $key; - break; - Default: - } - - } - } - $freq = $properties["value"][$freq]; - $interval = $properties["value"][$interval]; - $until = $properties["value"][$until]; - if ($count) - $count = $properties["value"][$count]; - $stdRecurrenceRule = new \Eluceo\iCal\Property\Event\RecurrenceRule(); - - switch ($freq) { - case "WEEKLY" : - $stdRecurrenceRule->setFreq(\Eluceo\iCal\Property\Event\RecurrenceRule::FREQ_WEEKLY); - break; - case "YEARLY" : - $stdRecurrenceRule->setFreq(\Eluceo\iCal\Property\Event\RecurrenceRule::FREQ_YEARLY); - break; - case "MONTHLY" : - $stdRecurrenceRule->setFreq(\Eluceo\iCal\Property\Event\RecurrenceRule::FREQ_MONTHLY); - break; - case "DAILY" : - $stdRecurrenceRule->setFreq(\Eluceo\iCal\Property\Event\RecurrenceRule::FREQ_DAILY); - break; - case "HOURLY" : - $stdRecurrenceRule->setFreq(\Eluceo\iCal\Property\Event\RecurrenceRule::FREQ_HOURLY); - break; - case "MINUETELY" : - $stdRecurrenceRule->setFreq(\Eluceo\iCal\Property\Event\RecurrenceRule::FREQ_MINUETELY); - break; - case "SECONDLY" : - $stdRecurrenceRule->setFreq(\Eluceo\iCal\Property\Event\RecurrenceRule::FREQ_SECONDLY); - break; - Default: - } - - - $stdRecurrenceRule->setFreq(\Eluceo\iCal\Property\Event\RecurrenceRule::FREQ_WEEKLY); - $stdRecurrenceRule->setUntil(\DateTime::createFromFormat("Ymd\THis\Z", $until)); - $stdRecurrenceRule->setInterval($interval); - - switch ($properties["key"][3]) { - case "BYDAY" : - $stdRecurrenceRule->setByDay($properties["value"][3]); - break; - case "BYMONTH" : - $stdRecurrenceRule->setByMonth($properties["value"][3]); - break; - case "BYYEARDAY" : - $stdRecurrenceRule->setByYearDay($properties["value"][3]); - break; - case "BYWEEKNO" : - $stdRecurrenceRule->setByWeekNo($properties["value"][3]); - break; - case "BYMONTHDAY" : - $stdRecurrenceRule->setByMonthDay($properties["value"][3]); - break; - case "BYHOUR" : - $stdRecurrenceRule->setByHour($properties["value"][3]); - break; - case "BYMINUTE" : - $stdRecurrenceRule->setByMinute($properties["value"][3]); - break; - case "BYSECOND" : - $stdRecurrenceRule->setBySecond($properties["value"][3]); - break; - default: - } - - $vEvent->setRecurrenceRule($stdRecurrenceRule); - $vEvent->setDuration(isset($evt["repetition_definition"]["duration"]) ? $evt["repetition_definition"]["duration"] : 0); - - } catch (\Exception $e) { - //No recurence ! - } - } - - $vEvent - ->setNoTime(isset($evt["all_day"]) ? $evt["all_day"] : false) - ->setUseUtc(true) - ->setDtStart($dateStart) - ->setDtEnd($dateEnd) - ->setSummary(isset($evt["title"]) ? $evt["title"] : "") - ->setDescription(isset($evt["description"]) ? $evt["description"] : "") - ->setLocation(isset($evt["location"]) ? $evt["location"] : ""); - - if (isset($evt["id"])) { - $vEvent->setUniqueId($evt["id"] . ""); - } - - $vCalendar->addComponent($vEvent); - - } - - return $vCalendar->render(); - } - - -} diff --git a/twake/backend/core/src/Twake/Channels/Bundle.php b/twake/backend/core/src/Twake/Channels/Bundle.php deleted file mode 100755 index 52d1a433..00000000 --- a/twake/backend/core/src/Twake/Channels/Bundle.php +++ /dev/null @@ -1,30 +0,0 @@ -routes = $routing->getRoutes(); - $this->routing_prefix = $routing->getRoutesPrefix(); - $this->initRoutes(); - - $this->services = (new Services())->getServices(); - $this->initServices(); - } -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Channels/Controller/Channels.php b/twake/backend/core/src/Twake/Channels/Controller/Channels.php deleted file mode 100755 index 6a0d50c3..00000000 --- a/twake/backend/core/src/Twake/Channels/Controller/Channels.php +++ /dev/null @@ -1,53 +0,0 @@ -request->get("options"); - - //This is only used now to get old "applications as channels" feature - //$objects = $this->get("app.channels.channels_system")->get($options, $this->getUser()); - $workspace = $this->get("app.workspaces")->get($options["workspace_id"]); - $apps = $this->get("app.group_apps")->getApps($workspace->getGroup()); - - $objects = []; - foreach($apps as $app){ - $objects[] = [ - "app_bot_identifier" =>"", - "app_group_id" =>"", - "app_id" => $app["app_id"], - "application" =>true, - "channel_group_name" =>"", - "connectors" =>[], - "description" =>"", - "direct" =>false, - "ext_members" =>[], - "front_id" => $app["app_id"], - "icon" =>"", - "id" => $app["app_id"], - "last_activity" =>1626706970, - "members" =>[$this->getUser()->getId()], - "members_count" => null, - "messages_increment" =>0, - "name" =>"", - "original_group" => $workspace->getGroup(), - "original_workspace" => $options["workspace_id"], - "private" =>false, - "tabs" =>[] - ]; - } - - if ($objects === false) { - return new Response(Array("status" => "error")); - } - return new Response(Array("data" => $objects)); - } - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Channels/Entity/Channel.php b/twake/backend/core/src/Twake/Channels/Entity/Channel.php deleted file mode 100755 index d7a48ea1..00000000 --- a/twake/backend/core/src/Twake/Channels/Entity/Channel.php +++ /dev/null @@ -1,626 +0,0 @@ -front_id = sha1(random_bytes(40)); - $this->last_activity = new \DateTime(); - } - - public function getIndexationArray() - { - $return = Array( - "id" => $this->getId() . "", - "workspace_id" => $this->getOriginalWorkspaceId(), - "group_id" => ($this->getOriginalGroupId()) ? $this->getOriginalGroupId() : null, - "name" => $this->getName(), - "last_activity" => $this->getLastActivity() ? $this->getLastActivity()->getTimestamp() : null, - "members" => $this->getMembers(), - "ext_members" => $this->getExtMembers() - ); - - return $return; - } - - public function getAsArray() - { - return Array( - "id" => $this->getId(), - "front_id" => $this->getFrontId(), - "icon" => $this->getIcon(), - "name" => $this->getName(), - "description" => $this->getDescription(), - "channel_group_name" => $this->getChannelGroupName(), - "private" => $this->getPrivate(), - "direct" => $this->getDirect(), - "application" => $this->getApplication(), - "app_id" => $this->getAppId(), - "app_group_id" => $this->getAppGroupId(), - "app_bot_identifier" => $this->getAppBotIdentifier(), - "original_workspace" => ($this->getOriginalWorkspaceId()) ? $this->getOriginalWorkspaceId() : null, - "original_group" => ($this->getOriginalGroupId()) ? $this->getOriginalGroupId() : null, - "members_count" => $this->getMembersCount(), - "last_activity" => $this->getLastActivity() ? $this->getLastActivity()->getTimestamp() : null, - "members" => $this->getMembers(), - "ext_members" => $this->getExtMembers(), - "connectors" => $this->getConnectors(), - "tabs" => $this->getTabs(), - "messages_increment" => $this->getMessagesIncrement() - ); - } - - public function getTotalMembers() - { - return array_merge($this->getMembers(), $this->getExtMembers()); - } - - - /** - * @return mixed - */ - public function setId($id) - { - $this->id = $id; - } - - public function getId() - { - return $this->id; - } - - /** - * @return mixed - */ - public function getFrontId() - { - return $this->front_id; - } - - /** - * @param mixed $front_id - */ - public function setFrontId($front_id) - { - if ($front_id) { - $this->front_id = $front_id; - } - } - - /** - * @return mixed - */ - public function getIcon() - { - return $this->icon; - } - - /** - * @param mixed $icon - */ - public function setIcon($icon) - { - $this->icon = $icon; - } - - /** - * @return mixed - */ - public function getName() - { - return $this->name; - } - - /** - * @param mixed $name - */ - public function setName($name) - { - $this->name = $name; - } - - /** - * @return mixed - */ - public function getChannelGroupName() - { - return $this->channel_group_name; - } - - /** - * @param mixed $channel_group_name - */ - public function setChannelGroupName($channel_group_name) - { - $this->channel_group_name = $channel_group_name; - } - - /** - * @return mixed - */ - public function getDescription() - { - return $this->description; - } - - /** - * @param mixed $description - */ - public function setDescription($description) - { - $this->description = $description; - } - - /** - * @return mixed - */ - public function getExternalAccessToken() - { - return $this->external_access_token; - } - - /** - * @param mixed $external_access_token - */ - public function setExternalAccessToken($external_access_token) - { - $this->external_access_token = $external_access_token; - } - - /** - * @return mixed - */ - public function getPrivate() - { - return $this->private; - } - - /** - * @param mixed $private - */ - public function setPrivate($private) - { - $this->private = ($private == true); - } - - /** - * @return mixed - */ - public function getDirect() - { - return $this->direct; - } - - /** - * @param mixed $direct - */ - public function setDirect($direct) - { - $this->direct = ($direct == true); - } - - /** - * @return Boolean (application channel or not) - */ - public function getApplication() - { - return $this->application; - } - - /** - * @return string - */ - public function getEsType() - { - return $this->es_type; - } - - - /** - * @param mixed $direct - */ - public function setApplication($application) - { - $this->application = ($application == true); - } - - /** - * @return mixed - */ - public function getAppId() - { - return $this->app_id; - } - - /** - * @return mixed - */ - public function getAppBotIdentifier() - { - return $this->app_bot_identifier; - } - - /** - * @param mixed $app_bot_identifier - */ - public function setAppBotIdentifier($app_bot_identifier) - { - $this->app_bot_identifier = $app_bot_identifier; - } - - /** - * @param mixed $direct - */ - public function setAppId($app_id) - { - $this->app_id = $app_id; - } - - /** - * @return mixed - */ - public function getAppGroupId() - { - return $this->app_group_id; - } - - /** - * @param mixed $app_group_id - */ - public function setAppGroupId($app_group_id) - { - $this->app_group_id = $app_group_id; - } - - /** - * @return mixed - */ - public function getOriginalWorkspaceId() - { - return $this->original_workspace_id; - } - - /** - * @param mixed $original_workspace - */ - public function setOriginalWorkspaceId($original_workspace_id) - { - $this->original_workspace_id = $original_workspace_id; - } - - /** - * @return mixed - */ - public function getOriginalGroupId() - { - return $this->original_group_id; - } - - /** - * @param mixed $original_group - */ - public function setOriginalGroupId($original_group) - { - $this->original_group_id = $original_group; - } - - /** - * @return mixed - */ - public function getMembersCount() - { - return $this->members_count; - } - - /** - * @param mixed $members_count - */ - public function setMembersCount($members_count) - { - $this->members_count = $members_count; - } - - /** - * @return mixed - */ - public function getLastActivity() - { - return $this->last_activity; - } - - /** - * @param mixed $last_activity - */ - public function setLastActivity($last_activity) - { - $this->last_activity = $last_activity; - } - - /** - * @return mixed - */ - public function getIdentifier() - { - return $this->identifier; - } - - /** - * @param mixed $identifier - */ - public function setIdentifier($identifier) - { - $this->identifier = $identifier; - } - - /** - * @return mixed - */ - public function getMembers() - { - $m = json_decode($this->members, 1); - if ($m) { - return array_values($m); - } - return $m; - } - - /** - * @param mixed $members - */ - public function setMembers($members) - { - $this->members = json_encode($members); - } - - /** - * @return mixed - */ - public function getExtMembers() - { - $m = json_decode($this->ext_members, 1); - if ($m) { - return array_values($m); - } - return $m; - } - - /** - * @param mixed $ext_members - */ - public function setExtMembers($ext_members) - { - $this->ext_members = json_encode($ext_members); - } - - /** - * @return mixed - */ - public function getTabs() - { - $m = json_decode($this->tabs, 1); - if ($m) { - return array_values($m); - } - return $m; - } - - /** - * @param mixed $tabs - */ - public function setTabs($tabs) - { - $this->tabs = json_encode($tabs); - } - - /** - * @return mixed - */ - public function getConnectors() - { - $m = json_decode($this->connectors, 1); - if ($m) { - return array_values($m); - } - return $m; - } - - /** - * @param mixed $tabs - */ - public function setConnectors($connectors) - { - $this->connectors = json_encode($connectors); - } - - - /** - * @return mixed - */ - public function getMessagesCount() - { - return $this->messages_count; - } - - /** - * @param mixed $messages_count - */ - public function setMessagesCount($messages_count) - { - $this->messages_count = $messages_count; - } - - /** - * @return mixed - */ - public function getMessagesIncrement() - { - return $this->messages_increment ? $this->messages_increment : 0; - } - - /** - * @param mixed $messages_increment - */ - public function setMessagesIncrement($messages_increment) - { - $this->messages_increment = $messages_increment; - } - - /** - * @return mixed - */ - public function getAutoMute() - { - return $this->auto_mute; - } - - /** - * @param mixed $auto_mute - */ - public function setAutoMute($auto_mute) - { - $this->auto_mute = $auto_mute; - } - - -} diff --git a/twake/backend/core/src/Twake/Channels/Entity/ChannelMember.php b/twake/backend/core/src/Twake/Channels/Entity/ChannelMember.php deleted file mode 100755 index 579dbfd7..00000000 --- a/twake/backend/core/src/Twake/Channels/Entity/ChannelMember.php +++ /dev/null @@ -1,241 +0,0 @@ -user_id = $user_id; - $this->channel_id = $channel->getId(); - $this->last_activity_least_updated = new \DateTime(); - $this->last_activity = new \DateTime(); - $this->last_access = new \DateTime(); - $this->direct = $channel->getDirect(); - $this->last_messages_increment = $channel->getMessagesIncrement(); - } - - /** - * @return mixed - */ - public function setId($id) - { - $this->id = $id; - } - - public function getId() - { - return $this->id; - } - - /** - * @return mixed - */ - public function getUserId() - { - return $this->user_id; - } - - /** - * @return mixed - */ - public function getChannelId() - { - return $this->channel_id; - } - - /** - * @return mixed - */ - public function getLastActivity() - { - return $this->last_activity; - } - - /** - * @param mixed $last_activity - */ - public function setLastActivity($last_activity) - { - $this->last_activity = $last_activity; - if ($this->last_activity_least_updated->getTimestamp() < $last_activity->getTimestamp() - 60 * 60 * 24) { - $this->last_activity_least_updated = $last_activity; - } - } - - /** - * @return mixed - */ - public function getLastAccess() - { - return $this->last_access; - } - - /** - * @param mixed $last_access - */ - public function setLastAccess($last_access) - { - $this->last_access = $last_access; - } - - /** - * @return mixed - */ - public function getDirect() - { - return $this->direct; - } - - /** - * @param mixed $direct - */ - public function setDirect($direct) - { - $this->direct = $direct; - } - - /** - * @return mixed - */ - public function getExterne() - { - return $this->externe; - } - - /** - * @param mixed $direct - */ - public function setExterne($externe) - { - $this->externe = $externe; - } - - /** - * @return mixed - */ - public function getMuted() - { - return $this->muted; - } - - /** - * @param mixed $muted 0: no, 1: mute default (except @all, @[user]), 2: mute all except user mension, 3: mute everything - */ - public function setMuted($muted) - { - $this->muted = $muted; - } - - /** - * @return mixed - */ - public function getLastMessagesIncrement() - { - return $this->last_messages_increment; - } - - /** - * @param mixed $last_messages_increment - */ - public function setLastMessagesIncrement($last_messages_increment) - { - $this->last_messages_increment = $last_messages_increment; - } - - /** - * @return mixed - */ - public function getLastQuotedMessageId() - { - return $this->last_quoted_message_id; - } - - /** - * @param mixed $last_quoted_message_id - */ - public function setLastQuotedMessageId($last_quoted_message_id) - { - $this->last_quoted_message_id = $last_quoted_message_id; - } - -} diff --git a/twake/backend/core/src/Twake/Channels/Entity/ChannelTab.php b/twake/backend/core/src/Twake/Channels/Entity/ChannelTab.php deleted file mode 100755 index 5615f0eb..00000000 --- a/twake/backend/core/src/Twake/Channels/Entity/ChannelTab.php +++ /dev/null @@ -1,143 +0,0 @@ - $this->getId(), - "front_id" => $this->getFrontId(), - "app_id" => $this->getAppId(), - "channel_id" => $this->getChannelId(), - "name" => $this->getName(), - "configuration" => $this->getConfiguration() - ); - } - - /** - * @return mixed - */ - public function setId($id) - { - $this->id = $id; - } - - public function getId() - { - return $this->id; - } - - /** - * @return mixed - */ - public function getName() - { - return $this->name; - } - - /** - * @param mixed $name - */ - public function setName($name) - { - $this->name = $name; - } - - /** - * @return mixed - */ - public function getAppId() - { - return $this->app_id; - } - - /** - * @param mixed $app_id - */ - public function setAppId($app_id) - { - $this->app_id = $app_id; - } - - /** - * @return mixed - */ - public function getChannelId() - { - return $this->channel_id; - } - - /** - * @param mixed $channel_id - */ - public function setChannelId($channel_id) - { - $this->channel_id = $channel_id; - } - - /** - * @return mixed - */ - public function getConfiguration() - { - return json_decode($this->configuration, true); - } - - /** - * @param mixed $configuration - */ - public function setConfiguration($configuration) - { - $this->configuration = json_encode($configuration); - } - - -} diff --git a/twake/backend/core/src/Twake/Channels/Resources/Routing.php b/twake/backend/core/src/Twake/Channels/Resources/Routing.php deleted file mode 100755 index 811c7588..00000000 --- a/twake/backend/core/src/Twake/Channels/Resources/Routing.php +++ /dev/null @@ -1,16 +0,0 @@ - ["handler" => "Channels:getAction", "methods" => ["POST"], "security" => ["user_connected_security"]], - ]; - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Channels/Resources/Services.php b/twake/backend/core/src/Twake/Channels/Resources/Services.php deleted file mode 100755 index aa9e8140..00000000 --- a/twake/backend/core/src/Twake/Channels/Resources/Services.php +++ /dev/null @@ -1,14 +0,0 @@ - "DirectMessagesSystem", - "app.channels.channels_system" => "ChannelsSystem" - ]; - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Channels/Services/ChannelSystemAbstract.php b/twake/backend/core/src/Twake/Channels/Services/ChannelSystemAbstract.php deleted file mode 100755 index 74cf0a5f..00000000 --- a/twake/backend/core/src/Twake/Channels/Services/ChannelSystemAbstract.php +++ /dev/null @@ -1,387 +0,0 @@ -entity_manager = $app->getServices()->get("app.twake_doctrine"); - $this->applicationsApi = $app->getServices()->get("app.applications_api"); - $this->workspaceUser = $app->getServices()->get("app.workspace_members"); - } - - public function removeGeneralChannel($object) - { - - $object = $this->entity_manager->getRepository("Twake\Channels:Channel")->find(Array("id" => $object["id"], "direct" => $object["direct"], "original_workspace_id" => $object["original_workspace"])); - if ($object) { - $this->entity_manager->remove($object); - - $members = $this->entity_manager->getRepository("Twake\Channels:ChannelMember")->findBy(Array("channel_id" => $object->getId())); - foreach ($members as $member) { - $this->entity_manager->remove($member); - $linkWorkspaceUser = $this->entity_manager->getRepository("Twake\Workspaces:WorkspaceUser")->findOneBy(Array("workspace_id" => $object->getOriginalWorkspaceId(), "user_id" => $member->getUserId())); - if ($linkWorkspaceUser && $linkWorkspaceUser->getExterne() && !$linkWorkspaceUser->getAutoAddExterne()) { - $this->removeExterneIfNotAnymoreInChannel($object->getOriginalWorkspaceId(), $object->getId(), $member->getUserId()); - } - } - - - $this->entity_manager->flush(); - } - - return $object; - - } - - public function removeExterneIfNotAnymoreInChannel($workspaceId, $channelId, $userId) - { - $channel_in_current_workspace = $this->entity_manager->getRepository("Twake\Channels:Channel")->findBy(Array("direct" => false, "original_workspace_id" => $workspaceId)); - $isInChannel = false; - foreach ($channel_in_current_workspace as $chan) { - $link_user_channel = $this->entity_manager->getRepository("Twake\Channels:ChannelMember")->findOneBy(Array("direct" => 0, "user_id" => $userId, "channel_id" => $chan->getId())); - if ($link_user_channel && $link_user_channel->getChannelId() != $channelId) { - $isInChannel = true; - break; - } - } - if (!$isInChannel) { - $linkUserWorkspace = $this->entity_manager->getRepository("Twake\Workspaces:WorkspaceUser")->findOneBy(Array("workspace_id" => $workspaceId, "user_id" => $userId)); - if ($linkUserWorkspace) { - $this->workspaceUser->removeMember($workspaceId, $userId); - } - } - - } - - public function updateConnectors($channel_entity, $connectors_ids, $current_user_id = null) - { - - - $current_connectors = $channel_entity->getConnectors(); - $current_connectors = $current_connectors ? $current_connectors : []; - - $did_something = false; - - foreach ($connectors_ids as $connector_id) { - if (!in_array($connector_id, $current_connectors)) { - $this->applicationsApi->addResource($connector_id, $channel_entity->getOriginalWorkspaceId(), "channel", $channel_entity->getId(), $current_user_id); - $did_something = true; - } - } - - foreach ($current_connectors as $current_connector_id) { - if (!in_array($current_connector_id, $connectors_ids)) { - $this->applicationsApi->removeResource($connector_id, $channel_entity->getOriginalWorkspaceId(), "channel", $channel_entity->getId(), $current_user_id); - $did_something = true; - } - } - - if ($did_something) { - $channel_entity->setConnectors($connectors_ids); - $this->entity_manager->persist($channel_entity); - $this->entity_manager->flush(); - } - - } - - public function updateTabConfiguration($channel_id, $application_id, $tab_id, $configuration) - { - - $tab = $this->entity_manager->getRepository("Twake\Channels:ChannelTab")->findOneBy(Array("channel_id" => $channel_id, "app_id" => $application_id, "id" => $tab_id)); - if (!$tab) { - return; - } - $tab->setConfiguration($configuration); - $this->entity_manager->persist($tab); - $this->entity_manager->flush(); - - $channel = $this->entity_manager->getRepository("Twake\Channels:Channel")->findOneBy(Array("id" => $channel_id)); - $cached_tabs = $channel->getTabs(); - foreach ($cached_tabs as $k => $cached_tab) { - if ($cached_tab["id"] == $tab_id) { - $cached_tabs[$k] = $tab->getAsArray(); - } - } - $channel->setTabs($cached_tabs); - - $this->entity_manager->persist($channel); - $this->entity_manager->flush(); - - } - - public function renameTab($channel_id, $application_id, $tab_id, $name) - { - - $tab = $this->entity_manager->getRepository("Twake\Channels:ChannelTab")->findOneBy(Array("channel_id" => $channel_id, "app_id" => $application_id, "id" => $tab_id)); - if (!$tab) { - return; - } - $tab->setName($name); - $this->entity_manager->persist($tab); - $this->entity_manager->flush(); - - $channel = $this->entity_manager->getRepository("Twake\Channels:Channel")->findOneBy(Array("id" => $channel_id)); - $cached_tabs = $channel->getTabs(); - foreach ($cached_tabs as $k => $cached_tab) { - if ($cached_tab["id"] == $tab_id) { - $cached_tabs[$k] = $tab->getAsArray(); - } - } - $channel->setTabs($cached_tabs); - - $this->entity_manager->persist($channel); - $this->entity_manager->flush(); - - } - - public function removeTab($channel_id, $application_id, $tab_id) - { - - $tab = $this->entity_manager->getRepository("Twake\Channels:ChannelTab")->findOneBy(Array("channel_id" => $channel_id, "app_id" => $application_id, "id" => $tab_id)); - if (!$tab) { - return; - } - $this->entity_manager->remove($tab); - $this->entity_manager->flush(); - - $channel = $this->entity_manager->getRepository("Twake\Channels:Channel")->findOneBy(Array("id" => $channel_id)); - $cached_tabs = $channel->getTabs(); - $cached_tabs_new = []; - foreach ($cached_tabs as $cached_tab) { - if ($cached_tab["id"] != $tab_id) { - $cached_tabs_new[] = $cached_tab; - } - } - $channel->setTabs($cached_tabs_new); - - $this->entity_manager->persist($channel); - $this->entity_manager->flush(); - - } - - public function addTab($channel_id, $application_id, $name) - { - - $tab = new ChannelTab(); - $tab->setAppId($application_id); - $tab->setChannelId($channel_id); - $tab->setName($name); - - $this->entity_manager->persist($tab); - $this->entity_manager->flush(); - - $channel = $this->entity_manager->getRepository("Twake\Channels:Channel")->findOneBy(Array("id" => $channel_id)); - $cached_tabs = $channel->getTabs(); - $cached_tabs[] = $tab->getAsArray(); - $channel->setTabs($cached_tabs); - - $this->entity_manager->persist($channel); - $this->entity_manager->flush(); - - return $tab; - - } - - public function addAllWorkspaceMember($workspace, $channel) - { - if ($workspace && $channel) { - - $wuRepo = $this->entity_manager->getRepository("Twake\Workspaces:WorkspaceUser"); - $members = $wuRepo->findBy(Array("workspace_id" => $workspace->getId())); - $idsMembers = Array(); - $idsExt = Array(); - foreach ($members as $member) { - if($member->getUser($this->entity_manager)){ - if (!$member->getExterne()) { - $idsMembers[] = $member->getUser($this->entity_manager)->getId(); - } elseif ($member->getAutoAddExterne()) { - $idsExt[] = $member->getUser($this->entity_manager)->getId(); - } - } - } - $this->updateChannelMembers($channel, $idsMembers); - $this->updateExtChannelMembers($channel, $idsExt); - - } - } - - public function updateChannelMembers($channel_entity, $members_ids, $current_user_id = null) - { - - if ($current_user_id && !in_array($current_user_id, $members_ids)) { - $members_ids[] = $current_user_id; - } - - $members_ids = array_unique($members_ids); - $final_members_ids = []; - - $current_members = $channel_entity->getMembers(); - - $membersRepo = $this->entity_manager->getRepository("Twake\Channels:ChannelMember"); - $usersRepo = $this->entity_manager->getRepository("Twake\Users:User"); - - foreach ($members_ids as $member_id) { - if (!in_array($member_id, $current_members)) { - //Check if user is in workspace - $canBeAdded = true; - if(!$channel_entity->getDirect()){ - $wuRepo = $this->entity_manager->getRepository("Twake\Workspaces:WorkspaceUser"); - $canBeAdded = !!$wuRepo->findBy(Array("workspace_id" => $channel_entity->getOriginalWorkspaceId()."", "user_id" => $member_id."")); - } - if($canBeAdded){ - $member = new \Twake\Channels\Entity\ChannelMember($member_id . "", $channel_entity); - $member->setLastMessagesIncrement($channel_entity->getMessagesIncrement()); - $this->entity_manager->persist($member); - $final_members_ids[] = $member_id; - } - }else{ - $final_members_ids[] = $member_id; - } - } - - foreach ($current_members as $member_id) { - if (!in_array($member_id, $members_ids)) { - $members = $membersRepo->findBy(Array("direct" => $channel_entity->getDirect(), "channel_id" => $channel_entity->getId(), "user_id" => $usersRepo->find($member_id))); - foreach ($members as $member) { - $this->entity_manager->remove($member); - } - } - } - - $channel_entity->setMembers($final_members_ids); - $this->entity_manager->persist($channel_entity); - $this->entity_manager->flush(); - - } - - public function updateExtChannelMembers($channel_entity, $ext_members, $current_user_id = null) - { - $_ext_members = []; - $members = $channel_entity->getMembers(); - - foreach ($ext_members as $ext_member) { - if (!in_array($ext_member, $members)) { - $_ext_members[] = $ext_member; - } - } - if (!$channel_entity->getPrivate()) { - // si le channel n'est pas privé, on rajoute tous les autoadd - $membersWorkspace = $this->entity_manager->getRepository("Twake\Workspaces:WorkspaceUser")->findBy(Array("workspace_id" => $channel_entity->getOriginalWorkspaceId())); - foreach ($membersWorkspace as $members) { - try{ - if ($members->getAutoAddExterne() && !in_array($members->getUserId(), $_ext_members)) { - $_ext_members[] = $members->getUserId(); - } - }catch(\Exception $err){ - //No user - } - } - - } - - - $current_ext = $channel_entity->getExtMembers(); - $current_ext = $current_ext ? $current_ext : []; - - $membersRepo = $this->entity_manager->getRepository("Twake\Channels:ChannelMember"); - $usersRepo = $this->entity_manager->getRepository("Twake\Users:User"); - - $did_something = false; - - foreach ($_ext_members as $member) { - // dans le cas où c'est un id - if (strrpos($member, "@") <= 0) { - if (!in_array($member, $current_ext)) { - $member_id = $member; - $user = $usersRepo->findOneBy(Array("id" => $member_id)); - if ($user) { - $this->addUserToChannel($user, $channel_entity); - $did_something = true; - } - } - } else { - // dans le cas où c'est une adresse mail - $mail = $member; - if (!in_array($mail, $current_ext)) { - $user = $this->entity_manager->getRepository("Twake\Users:User")->findOneBy(Array("emailcanonical" => $mail)); - if ($user && !in_array($user->getId(), $current_ext)) { - $_ext_members[array_search($mail, $_ext_members)] = $user->getId(); - $this->addUserToChannel($user, $channel_entity); - $did_something = true; - } else { - $secondMail = $this->entity_manager->getRepository("Twake\Users:Mail")->findOneBy(Array("mail" => $mail)); - if ($secondMail && !in_array($secondMail->getUserId(), $current_ext)) { - // c'est un email secondaire - $user_id = $secondMail->getUserId(); - $_ext_members[array_search($mail, $_ext_members)] = $user_id; - $this->addUserToChannel($user, $channel_entity); - $did_something = true; - } else { - $member = new \Twake\Channels\Entity\ChannelMember($mail, $channel_entity); - $member->setLastMessagesIncrement($channel_entity->getMessagesIncrement()); - $member->setExterne(true); - $this->entity_manager->persist($member); - $this->workspaceUser->addMemberByMail($channel_entity->getOriginalWorkspaceId(), $mail, true, $current_user_id); - $did_something = true; - } - } - - } - - } - } - - foreach ($current_ext as $member_id) { - if (!in_array($member_id, $_ext_members)) { - $members = $membersRepo->findBy(Array("direct" => $channel_entity->getDirect(), "channel_id" => $channel_entity->getId(), "user_id" => $member_id)); - foreach ($members as $member) { - $this->entity_manager->remove($member); - $this->removeExterneIfNotAnymoreInChannel($channel_entity->getOriginalWorkspaceId(), $channel_entity->getId(), $member_id); - // vérifier si l'utilisateur est dans un autre channel - } - $did_something = true; - - //TODO Si utilisateur invité dans aucun channel, supprimer des invités - } - } - - if ($did_something) { - $channel_entity->setExtMembers($_ext_members); - - $this->entity_manager->persist($channel_entity); - $this->entity_manager->flush(); - } - } - - public function addUserToChannel($user, $channel) - { - if(!$user || is_string($user) === 'string'){ - return false; - } - $link = $this->entity_manager->getRepository("Twake\Channels:ChannelMember")->findOneBy(Array("direct" => false, "user_id" => $user->getId(), "channel_id" => $channel->getId())); - if (!$link) { - $member = new \Twake\Channels\Entity\ChannelMember($user->getId(), $channel); - $member->setLastMessagesIncrement($channel->getMessagesIncrement()); - $member->setExterne(true); - $this->entity_manager->persist($member); - - $workspace_id = $channel->getOriginalWorkspaceId(); - $link = $this->entity_manager->getRepository("Twake\Workspaces:WorkspaceUser")->findBy(Array("workspace_id" => $workspace_id, "user_id" => $user->getId())); - if (!$link) { - $this->workspaceUser->addMember($workspace_id, $user->getId(), true); - } - } - return true; - } - - -} diff --git a/twake/backend/core/src/Twake/Channels/Services/ChannelsSystem.php b/twake/backend/core/src/Twake/Channels/Services/ChannelsSystem.php deleted file mode 100755 index 58ef50c5..00000000 --- a/twake/backend/core/src/Twake/Channels/Services/ChannelsSystem.php +++ /dev/null @@ -1,423 +0,0 @@ -access_manager = $app->getServices()->get("app.accessmanager"); - $this->messages_service = $app->getServices()->get("app.messages"); - $this->websockets_service = $app->getServices()->get("app.websockets"); - parent::__construct($app); - } - - /** Called from Collections manager to verify user has access to websockets room, registered in Core/Services/Websockets.php */ - public function init($route, $data, $current_user = null) - { - $route = explode("/", $route); - $workspace_id = isset($route[2]) ? $route[2] : null; - - return $this->hasAccess([ - "workspace_id" => $workspace_id - ], $current_user); - } - - public function hasAccess($data, $current_user = null) - { - if ($current_user === null) { - return true; - } - if (!is_string($current_user)) { - $current_user = $current_user->getId(); - } - - if (empty($data["id"])) { - return $this->access_manager->has_access($current_user, [ - "type" => "Workspace", - "edition" => false, - "object_id" => $data["workspace_id"] ?: $data["original_workspace"] - ]); - } - - return $this->access_manager->has_access($current_user, [ - "type" => "Channel", - "edition" => true, - "object_id" => $data["id"] - ]); - } - - public function get($options, $current_user) - { - if (!$this->hasAccess($options, $current_user)) { - return false; - } - - $workspace_id = $options["workspace_id"]; - - $channels = $this->entity_manager->getRepository("Twake\Channels:Channel")->findBy( - Array("original_workspace_id" => $workspace_id, "direct" => false) - ); - - $result = []; - foreach ($channels as $channel) { - if (!$current_user || !$channel) { - continue; - } - $res = $this->entity_manager->getRepository("Twake\Channels:ChannelMember")->findOneBy(Array("direct" => false, "user_id" => $current_user->getId(), "channel_id" => $channel->getId())); - if ($res) { - $tmp = $channel->getAsArray(); - $tmp["_user_last_message_increment"] = $res->getLastMessagesIncrement(); - $tmp["_user_last_quoted_message_id"] = $res->getLastQuotedMessageId(); - $tmp["_user_last_access"] = $res->getLastAccess() ? $res->getLastAccess()->getTimestamp() : null; - $tmp["_user_muted"] = $res->getMuted(); - $result[] = $tmp; - } - }; - - return $result; - } - - public function remove($object, $options, $current_user = null) - { - if (!$this->hasAccess($object, $current_user)) { - return false; - } - - - return $this->removeGeneralChannel($object); - } - - public function save($object, $options, $current_user) - { - if (!$this->hasAccess($object, $current_user)) { - error_log("no access " . $object["id"]); - return false; - } - - $did_create = false; - - $members = isset($object["members"]) ? $object["members"] : []; - $members = array_unique($members); - sort($members); - - - //Create or find channel - if (!isset($object["id"])) { - - if (!$object["original_group"] || !$object["original_workspace"]) { - return false; - } - - $group = $this->entity_manager->getRepository("Twake\Workspaces:Group")->find($object["original_group"]); - $workspace = $this->entity_manager->getRepository("Twake\Workspaces:Workspace")->find($object["original_workspace"]); - - $channel = new \Twake\Channels\Entity\Channel(); - $channel->setDirect(false); - $channel->setFrontId($object["front_id"]); - - $channel->setOriginalGroupId($group->getId()); - $channel->setOriginalWorkspaceId($workspace->getId()); - - $did_create = true; - - } else { - $channel = $this->entity_manager->getRepository("Twake\Channels:Channel")->find(Array("id" => $object["id"], "direct" => $object["direct"], "original_workspace_id" => $object["original_workspace"])); - if (!$channel) { - return false; - } - } - - //It should not be a direct channel - if ($channel->getDirect()) { - return false; - } - - - //Modifiy channel details - $channel->setMembersCount(count($members)); - $channel->setName($object["name"]); - $channel->setIcon($object["icon"]); - $channel->setDescription($object["description"]); - $channel->setChannelGroupName($object["channel_group_name"]); - - - //Manage private or not private status - $add_everybody = false; - if ($channel->getPrivate() && !$object["private"]) { - $add_everybody = true; - } - - $channel->setPrivate($object["private"]); - - $this->entity_manager->persist($channel); - $this->entity_manager->flush($channel); - - - //Private and non private users management - if ($channel->getPrivate()) { - $this->updateChannelMembers($channel, $members, $current_user->getId()); - } - if (($did_create || $add_everybody) && !$channel->getPrivate()) { - if (!$workspace) { - $workspace = $this->entity_manager->getRepository("Twake\Workspaces:Workspace")->find($object["original_workspace"]); - } - $this->addAllWorkspaceMember($workspace, $channel); - } - - - //Add external members - if (isset($object["ext_members"])) { - $ext_members = $object["ext_members"]; - $this->updateExtChannelMembers($channel, $ext_members, $current_user->getId()); - } - - - //Manage connectors - if (!$channel->getAppId() && isset($object["connectors"])) { - $connectors = $object["connectors"]; - $this->updateConnectors($channel, $connectors, $current_user ? $current_user->getId() : null); - } - - - //Tabs - $tab = null; - if (isset($object["_once_save_tab"])) { - if (isset($object["_once_save_tab"]["id"]) && $object["_once_save_tab"]["id"]) { - $this->renameTab($channel->getId(), $object["_once_save_tab"]["app_id"], $object["_once_save_tab"]["id"], $object["_once_save_tab"]["name"]); - } else { - $tab = $this->addTab($channel->getId(), $object["_once_save_tab"]["app_id"], $object["_once_save_tab"]["name"]); - } - } - if (isset($object["_once_remove_tab"])) { - $this->removeTab($channel->getId(), $object["_once_remove_tab"]["app_id"], $object["_once_remove_tab"]["id"]); - } - if (isset($object["_once_save_tab_config"])) { - $tab_id = $object["_once_save_tab_config"]["id"]; - if($tab && !$tab_id){ - $tab_id = $tab->getId(); - } - $this->updateTabConfiguration($channel->getId(), $object["_once_save_tab_config"]["app_id"], $tab_id, $object["_once_save_tab_config"]["configuration"]); - } - - //Send first message if created channel - if ($did_create) { - //Init channel with a first message - $init_message = Array( - "channel_id" => $channel->getId(), - "hidden_data" => Array("type" => "init_channel"), - "content" => "[]" - ); - $this->messages_service->save($init_message, Array()); - } - - return $channel->getAsArray(); - - } - - public function getApplicationChannel($application, $workspace) - { - - $identifier = "app_" . $application->getId() . "+ws_" . $workspace->getId(); - - $channel = $this->entity_manager->getRepository("Twake\Channels:Channel")->findOneBy( - Array("identifier" => $identifier) - ); - - if (!$channel) { - - $channel = new \Twake\Channels\Entity\Channel(); - $channel->setDirect(false); - $channel->setApplication(true); - - $channel->setOriginalGroupId($workspace->getGroup()); - $channel->setOriginalWorkspaceId($workspace->getId()); - - $channel->setAppId($application->getId()); - $channel->setIdentifier($identifier); - - $did_create = true; - - $this->entity_manager->persist($channel); - $this->entity_manager->flush(); - - } - - if ($channel->getPrivate()) { - $this->updateChannelMembers($channel, $members); - } - - if ($did_create && !$channel->getPrivate()) { - $this->addAllWorkspaceMember($workspace, $channel); - } - - $event = Array( - "client_id" => "system", - "action" => "save", - "object_type" => "", - "object" => $channel->getAsArray() - ); - $this->websockets_service->push("channels/workspace/" . $workspace->getId(), $event); - - return $channel; - - } - - public function removeApplicationChannel($application, $workspace) - { - $identifier = "app_" . $application->getId() . "+ws_" . $workspace->getId(); - - $channel = $this->entity_manager->getRepository("Twake\Channels:Channel")->findOneBy( - Array("identifier" => $identifier) - ); - - if ($channel) { - - $event = Array( - "client_id" => "system", - "action" => "remove", - "object_type" => "", - "front_id" => $channel->getFrontId() - ); - $this->websockets_service->push("channels/workspace/" . $workspace->getId(), $event); - - $this->entity_manager->remove($channel); - $this->entity_manager->flush(); - - return true; - } - - return false; - } - - public function search($words, $workspaces, $current_user_id) - { - - $terms = Array(); - $should_workspaces = Array(); - foreach ($words as $word) { - $st = new StringCleaner(); - $word = $st->simplifyInArray($word); - $terms[] = Array( - "bool" => Array( - "filter" => Array( - "regexp" => Array( - "name" => ".*" . $word . ".*" - ) - ) - ) - ); - } - - foreach ($workspaces as $workspace) { - $should_workspaces[] = Array( - "match_phrase" => Array( - "workspace_id" => $workspace["id"] - ) - ); - } - - $options = Array( - "repository" => "Twake\Channels:Channel", - "index" => "channel", - "query" => Array( - "bool" => Array( - "must" => Array( - "bool" => Array( - "filter" => Array( - "match_phrase" => Array( - "members" => $current_user_id - ) - ), - "should" => Array( - $should_workspaces - ), - "minimum_should_match" => 1, - "must" => Array( - "bool" => Array( - "should" => Array( - $terms - ), - "minimum_should_match" => 1 - ) - ) - ) - ) - ) - ), - "sort" => Array( - "last_activity" => Array( - "order" => "desc" - ) - ) - ); - - $channels = $this->entity_manager->es_search($options); - - $result = []; - foreach ($channels["result"] as $channel) { - $result[] = Array($channel[0]->getAsArray(), $channel[1][0]); - } - - return $result; - - } - - public function searchprivate($words, $current_user_id) - { - - $terms = Array(); - foreach ($words as $word) { - $st = new StringCleaner(); - $word = $st->simplifyInArray($word); - $terms[] = Array( - "bool" => Array( - "filter" => Array( - "regexp" => Array( - "name" => ".*" . $word . ".*" - ) - ) - ) - ); - } - - $options = Array( - "repository" => "Twake\Channels:Channel", - "index" => "channel", - "query" => Array( - "bool" => Array( - "filter" => Array( - "match_phrase" => Array( - "members" => $current_user_id - ) - ), - "should" => Array( - $terms - ), - "minimum_should_match" => 2 - ) - ), - "sort" => Array( - "last_activity" => Array( - "order" => "desc" - ) - ) - ); - - $channels = $this->entity_manager->es_search($options); - - $result = []; - foreach ($channels["result"] as $channel) { - $result[] = Array($channel[0]->getAsArray(), $channel[1][0]); - } - - return $result; - - } -} diff --git a/twake/backend/core/src/Twake/Channels/Services/DirectMessagesSystem.php b/twake/backend/core/src/Twake/Channels/Services/DirectMessagesSystem.php deleted file mode 100755 index 9860d0b2..00000000 --- a/twake/backend/core/src/Twake/Channels/Services/DirectMessagesSystem.php +++ /dev/null @@ -1,181 +0,0 @@ -messages_service = $app->getServices()->get("app.messages"); - parent::__construct($app); - } - - /** Called from Collections manager to verify user has access to websockets room, registered in Core/Services/Websockets.php */ - public function init($route, $data, $current_user = null) - { - if(!$current_user || is_string($current_user)){ - return false; - } - if (str_replace("channels/direct_messages/", "", $route) == $current_user->getId()) { - return $this->hasAccess($data, $current_user); - } else { - return false; - } - } - - public function hasAccess($data, $current_user = null) - { - if ($current_user) { - return true; - } else { - return false; - } - } - - public function get($options, $current_user) - { - if (!$this->hasAccess($options, $current_user)) { - return false; - } - - $channelRepo = $this->entity_manager->getRepository("Twake\Channels:Channel"); - - $member = $this->entity_manager->getRepository("Twake\Channels:ChannelMember")->findBy( - Array("user_id" => $current_user->getId(), "direct" => true), - Array(), - isset($options["max"]) ? $options["max"] : 40, - isset($options["offset"]) ? $options["offset"] : 0, - "last_activity_least_updated", - 0, - "last_modified_channels" - ); - - $result = []; - foreach ($member as $link) { - if ($link->getChannelId()) { - $channel = $channelRepo->find(Array("direct" => 1, "original_workspace_id" => "", "id" => $link->getChannelId())); - if ($channel) { - $tmp = $channel->getAsArray(); - $tmp["_user_last_message_increment"] = $link->getLastMessagesIncrement(); - $tmp["_user_last_quoted_message_id"] = $link->getLastQuotedMessageId(); - $tmp["_user_last_access"] = $link->getLastAccess() ? $link->getLastAccess()->getTimestamp() : null; - $tmp["_user_muted"] = $link->getMuted(); - $result[] = $tmp; - } - } - } - - return $result; - } - - public function remove($object, $options, $current_user) - { - //TODO verify this channel is ours - if (!$this->hasAccess($options, $current_user)) { - return false; - } - - return $this->removeGeneralChannel($object); - } - - public function save($object, $options, $current_user) - { - if (!$this->hasAccess($options, $current_user)) { - return false; - } - - if (isset($object["app_id"]) && $object["app_id"]) { - - $object["front_id"] = $object["group_id"] . "_app_" . $object["app_id"] . "_" . $current_user->getId(); - - $members = [$current_user->getId()]; - - if (isset($object["group_id"])) { - $app_bot_identifier = $object["group_id"] . "_app_" . $object["app_id"]; - } else if (isset($object["app_bot_identifier"])) { - $app_bot_identifier = $object["app_bot_identifi er"]; - } else { - return false; - } - $direct_identifier = $app_bot_identifier . "+" . $current_user->getId(); - - } else { - - $members = []; - foreach ($object["members"] as $member) { - if (strlen($member) > 0) { - $members[] = $member; - } - } - $members = array_unique($members); - sort($members); - $direct_identifier = join("+", $members); - - } - - - //No members in direct messages - if (!$direct_identifier) { - return false; - } - - $did_create = false; - if (!isset($object["id"])) { - //Search if channel exists for this group of users - $channel = $this->entity_manager->getRepository("Twake\Channels:Channel")->findOneBy(Array("identifier" => $direct_identifier)); - if (!$channel) { - $did_create = true; - $channel = new \Twake\Channels\Entity\Channel(); - $channel->setDirect(true); - $channel->setFrontId($object["front_id"]); - - if (isset($object["app_id"])) { - $channel->setAppId($object["app_id"]); - $channel->setAppBotIdentifier($app_bot_identifier); - $channel->setAppGroupId($object["group_id"]); - } - } - } else { - $channel = $this->entity_manager->getRepository("Twake\Channels:Channel")->find(Array("id" => $object["id"], "direct" => $object["direct"], "original_workspace_id" => $object["original_workspace"] ? $object["original_workspace"] : "")); - if (!$channel) { - return false; - } - } - - //Not a direct channel - if (!($channel->getDirect() && !$channel->getPrivate())) { - return false; - } - - //Modifiy $channel - $channel->setIdentifier($direct_identifier); - - if (!isset($object["app_id"])) { - $channel->setMembersCount(count($members)); - } - - $this->entity_manager->persist($channel); - $this->entity_manager->flush($channel); - - if ($did_create) { - //Init channel with a first message - $init_message = Array( - "channel_id" => $channel->getId(), - "hidden_data" => Array("type" => "init_channel"), - "content" => "[]" - ); - $this->messages_service->save($init_message, Array()); - } - - $this->updateChannelMembers($channel, $members, $current_user->getId()); - - - return $channel->getAsArray(); - } - -} diff --git a/twake/backend/core/src/Twake/Core/Bundle.php b/twake/backend/core/src/Twake/Core/Bundle.php deleted file mode 100755 index d0880caa..00000000 --- a/twake/backend/core/src/Twake/Core/Bundle.php +++ /dev/null @@ -1,33 +0,0 @@ -routes = $routing->getRoutes(); - $this->routing_prefix = $routing->getRoutesPrefix(); - $this->initRoutes(); - - $this->services = (new Services())->getServices(); - $this->initServices(); - } -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Command/ExportCommand.php b/twake/backend/core/src/Twake/Core/Command/ExportCommand.php deleted file mode 100755 index 18da4a7d..00000000 --- a/twake/backend/core/src/Twake/Core/Command/ExportCommand.php +++ /dev/null @@ -1,385 +0,0 @@ - Array(), 'notall' => Array()); - - protected function configure() - { - $this - ->setName("twake:export_group") - ->setDescription("Command to export a group from Twake") - ->addArgument('name', InputArgument::REQUIRED, 'What group do you want to export?'); - } - - protected function execute() - { - - - $services = $this->getApp()->getServices(); - $doctrine = $this->getApp()->getServices()->get('doctrine'); - $manager = $doctrine->getManager(); - $group_name = $input->getArgument('name'); - $export_user = true; - -// ================================================================================================================================================= -// ================================================================================================================================================= - - //PARTIE CONCERNANT LE GROUP - $upper_path = getcwd(); - - $group = $manager->getRepository("Twake\Workspaces:Group")->findOneBy(Array("name" => $group_name)); - $group_id = $group->getId(); - - //ON CREER LES DIFFERENTS DOSSIER A LA RACINE DU DOSSIER D EXPORTATION - mkdir("Export_Folder"); - chdir("Export_Folder"); - mkdir($group_id . ""); - chdir($group_id . ""); - chmod(getcwd(), 0777); - mkdir("workspaces"); - $workspaces = $group->getWorkspaces(); - - //ON RECUPERE LES DONNEES DU GROUPE - $group_admin = $group->getManagers(); - - $group_members_file = "group_members.json"; - $handle_group_members = fopen($group_members_file, 'w') or die('Cannot open file: ' . $group_members_file); - $group_members = Array(); - foreach ($group_admin as $ga) { - $group_members[] = Array( - "user_id" => $ga->getUser()->getId(), - "level" => $ga->getLevel(), - "externe" => $ga->getExterne() - ); - } - fwrite($handle_group_members, json_encode($group_members, JSON_PRETTY_PRINT)); - fclose($handle_group_members); - $url = $group->getLogo(); - $group = $group->getAsArray(); - if ($group["logo"] != "") { - if (strpos($group["logo"], "://")) { - $group["logo"]; - } else { - $path = $upper_path . $group["logo"]; - } - $type = pathinfo($path, PATHINFO_EXTENSION); - $data = file_get_contents($path); - - $logo64 = Array( - "logo_type" => $type, - "base64_data" => base64_encode($data), - "url" => $url - ); - } else { - $logo64 = ""; - } - - $data = Array( - "name" => $group["unique_name"], - "display_name" => $group["name"], - "logo" => json_encode($logo64, JSON_PRETTY_PRINT) - ); - - //ON MET LES INFO DU GROUP DANS LE FICHIER GROUP.JSON - $group_file = "group.json"; - $handle_group_file = fopen($group_file, 'w') or die('Cannot open file: ' . $group_file); - fwrite($handle_group_file, json_encode($data, JSON_PRETTY_PRINT)); - fclose($handle_group_file); - -// ================================================================================================================================================= -// ================================================================================================================================================= - - //on regarde les user qu'on va devoir creer - if ($export_user) { - mkdir("users"); - chdir("users"); - foreach ($group_admin as $ga) { - if (!$ga->getUser()->getIsRobot()) { - $user = $ga->getUser(); - $url = $user->getThumbnail()->getName(); - $user_array = $user->getAsArray(); - //si le membre du workspace n'est pas référencé comme user on doit le créer - $path = ""; - $data = ""; - $type = ""; - if ($user_array["thumbnail"] != "") { - if (strpos($user_array["thumbnail"], "://")) { - $path = $user_array["thumbnail"]; - } else { - $path = $upper_path . $user_array["thumbnail"]; - } - $type = pathinfo($path, PATHINFO_EXTENSION); - $data = file_get_contents($path); - - $logo64 = Array( - "logo_type" => $type, - "base64_data" => base64_encode($data), - "url" => $url - ); - } else { - $logo64 = ""; - } - - $mails = $manager->getRepository("Twake\Users:Mail")->findBy(Array("user_id" => $user_array["id"])); - $secondarymail = Array(); - foreach ($mails as $mail) { - $secondarymail[] = $mail->getMail(); - } - if (($key = array_search($user->getemailCanonical(), $secondarymail)) !== false) { - unset($secondarymail[$key]); - } - - $users = Array( - "firstname" => $user_array["firstname"], - "lastname" => $user_array["lastname"], - "language" => $user_array["language"], - "username" => $user_array["username"], - "emailcanonical" => $user->getemailCanonical(), - "logo" => json_encode($logo64, JSON_PRETTY_PRINT), - "password" => $user->getPassword(), - "salt" => $user->getSalt(), - "secondary_email" => $secondarymail, - ); - $user_file = "user_" . $user_array["id"] . ".json"; - $handle_user = fopen($user_file, 'w') or die('Cannot open file: ' . $user_file); - fwrite($handle_user, json_encode($users, JSON_PRETTY_PRINT)); - fclose($handle_user); - } - } - chdir(".."); - } - -// ================================================================================================================================================= -// ================================================================================================================================================= - - - chdir("workspaces"); - foreach ($workspaces as $wp) { - //ON CREE LE DOSSIER POUR LE WORKSPACE EN QUESTION ET ON MET LES DONNES DANS UN FICHIER WORKSPACE.JSON - mkdir("ws_" . $wp->getId() . ""); - $workspace_file = "workspace.json"; - $handle_workspace_file = fopen($workspace_file, 'w') or die('Cannot open file: ' . $workspace_file); - $workspaces_user = $wp->getMembers(); - $url = $wp->getLogo()->getName(); - $wp = $wp->getAsArray(); - $path = ""; - $data = ""; - $type = ""; - if ($wp["logo"] != "") { - if (strpos($wp["logo"], "://")) { - $path = $wp["logo"]; - } else { - $path = $upper_path . $wp["logo"]; - } - $type = pathinfo($path, PATHINFO_EXTENSION); - $data = file_get_contents($path); - $logo64 = Array( - "logo_type" => $type, - "base64_data" => base64_encode($data), - "url" => $url - ); - } else { - $logo64 = ""; - } - - $data_ws = Array( - "name" => $wp["name"], - "uniquename" => $wp["uniqueName"], - "color" => $wp["color"], - "logo" => json_encode($logo64, JSON_PRETTY_PRINT) - ); - fwrite($handle_workspace_file, json_encode($data_ws, JSON_PRETTY_PRINT)); - fclose($handle_workspace_file); - rename('workspace.json', "ws_" . $wp["id"] . "" . DIRECTORY_SEPARATOR . "workspace.json"); - -// ================================================================================================================================================= -// ================================================================================================================================================= - - //PARTIE SUR LES MEMBRES D UN WORKSPACE DANS LE FICHIER MEMBERS.JSON - $members = Array(); - foreach ($workspaces_user as $wp_user) { - //on cree la liste des membres du workspace - if (!$wp_user->getUser($this->doctrine)->getIsRobot()) { - $members[] = Array( - "user_id" => $wp_user->getUser($this->doctrine)->getId(), - "level" => $wp_user->getLevelId(), - "externe" => $wp_user->getExterne() - ); - } - } - - //ON ECRIT LES MEMBRES DU WORKSPACE DANS LE FICHIER ET ON DEPLACE LE FICHIER - $workspace_members_file = "members.json"; - $handle_workspace_members = fopen($workspace_members_file, 'w') or die('Cannot open file: ' . $workspace_members_file); - fwrite($handle_workspace_members, json_encode($members, JSON_PRETTY_PRINT)); - fclose($handle_workspace_members); - rename('members.json', "ws_" . $wp["id"] . "" . DIRECTORY_SEPARATOR . "members.json"); - -// ================================================================================================================================================= -// ================================================================================================================================================= - - //PARTIE SUR LES CHANNELS ET LES MESSAGES D UN WORKSPACE DANS LES SOUS DOSSIER CHANNEL ET MESSAGE - $channels = $$manager->getRepository("Twake\Channels:Channel")->findBy(Array("direct" => false, "original_workspace_id" => $wp["id"])); - chdir("ws_" . $wp["id"] . ""); - mkdir("channels"); - chdir("channels"); - foreach ($channels as $channel) { - //ON RECUPERE LES INFORMATIONS DU CHANNEL - $channel = $channel->getAsArray(); - if ($channel["name"] != "") { - if (!file_exists($channel["name"])) { - mkdir(str_replace("/", "_", $channel["name"])); - chdir(str_replace("/", "_", $channel["name"])); - $channel_file = "channel.json"; - $handle_channel_file = fopen($channel_file, 'w') or die('Cannot open file: ' . $channel_file); - - $data_ch = Array( - "name" => $channel["name"], - "description" => $channel["description"], - "members" => $channel["members"], - "ext_members" => $channel["ext_members"], - ); - fwrite($handle_channel_file, json_encode($data_ch, JSON_PRETTY_PRINT)); - fclose($handle_channel_file); - - //ON RECUPERE LES MESSAGES DU CHANNEL - $messages_tmp = $this->doctrine->getRepository("Twake\Discussion:Message")->findBy(Array("channel_id" => $channel["id"])); - $messages = Array(); - foreach ($messages_tmp as $message) { - - //ON RECUPERE LES INFORMATIONS DU MESSAGE - $message = $message->getAsArray(); - - $message_file = "messages.json"; - $handle_message_file = fopen($message_file, 'w') or die('Cannot open file: ' . $message_file); - $messages[] = Array( - "parent_message_id" => $message["parent_message_id"], - "reactions" => $message["reactions"], - "content" => $message["content"], - "hidden_data" => $message["hidden_data"], - "message_type" => $message["message_type"], - "sender" => $message["sender"], - "creation_date" => $message["creation_date"] - ); - } - fwrite($handle_message_file, json_encode($messages, JSON_PRETTY_PRINT)); - fclose($handle_message_file); - chdir(".."); //on remonte dans channels - } - } - } - - -// ================================================================================================================================================= -// ================================================================================================================================================= - - //PARTIE SUR LES DRIVE FILES ET LES CALENDARS - chdir(".."); - mkdir("calendars"); - chdir("calendars"); - $calendars = $manager->getRepository("Twake\Calendar:Calendar")->findBy(Array("workspace_id" => $wp["id"])); - $calendar = Array(); - foreach ($calendars as $c) { - $c = $c->getAsArray(); - $calendar_file = "calendar_" . $c["id"] . ".json"; - $handle_calendar_file = fopen($calendar_file, 'w') or die('Cannot open file: ' . $calendar_file); - $events = Array(); - $eventcalendar = $manager->getRepository("Twake\Calendar:EventCalendar")->findBy(Array("calendar_id" => $c["id"])); - foreach ($eventcalendar as $ec) { - $event = $manager->getRepository("Twake\Calendar:Event")->findOneBy(Array("id" => $ec->getEventId())); - $events[] = Array( - "date" => $ec->getSortDate(), - "event" => Array( - "from" => $event->getFrom(), - "to" => $event->getTo(), - "all_day" => $event->getAllDay(), - "type" => $event->getType(), - "title" => $event->getTitle(), - "description" => $event->getDescription(), - "location" => $event->getLocation(), - "private" => $event->getPrivate(), - "available" => $event->getAvailable(), - "owner" => $event->getOwner()(), - "participants" => $event->getParticipants(), - "notification" => $event->getNotifications(), - ) - ); - $calendar[] = Array( - "color" => $c["color"], - "title" => $c["title"], - "auto_participant" => $c["auto_participant"], - "connectors" => $c["connectors"], - "events" => $events - ); - fwrite($handle_calendar_file, json_encode($calendar, JSON_PRETTY_PRINT)); - fclose($handle_calendar_file); - } - } - - chdir(".."); - mkdir("drive_files"); - chdir("drive_files"); - $files = $manager->getRepository("Twake\Drive:DriveFile")->findBy(Array("workspace_id" => $wp["id"])); - foreach ($files as $file) { - $path = $file->getPath(); - $version_array = Array(); - $file = $file->getAsArray(); - $version = $manager->getRepository("Twake\Drive:DriveFileVersion")->findBy(Array("file_id" => $file["id"])); - foreach ($version as $v) { - $v = $v->getAsArray(); - //ar_dump("file id in version: " . $file["id"]); - $version_array[] = Array( - "creator" => $v["creator"], - "name" => $v["name"], - "date_added" => $v["added"], - "data" => json_encode($v["data"], JSON_PRETTY_PRINT), - ); - - } - $drive_file = "drive_" . $file["id"] . ".json"; - - $handle_drive_file = fopen($drive_file, 'w') or die('Cannot open file: ' . $drive_file); - $drivefile = Array( - "parent_id" => $file["parent_id"], - "detached" => $file["detached"], - "trash" => $file["trash"], - "is_directory" => $file["is_directory"], - "name" => $file["name"], - "description" => $file["description"], - "size" => $file["size"], - "extension" => $file["extension"], - "acces_info" => $file["acces_info"], - "url" => $file["url"], - "path" => $path, - "version" => $version_array - ); - fwrite($handle_drive_file, json_encode($drivefile, JSON_PRETTY_PRINT)); - fclose($handle_drive_file); - } - chdir("../.."); // on remonte dans le workspace en cours de construction - } - -// ================================================================================================================================================= -// ================================================================================================================================================= - - // ON CREE LE FICHIER CONTENANT TOUS LES USER EN DETAIL ET UN QUI REFERENCE CEUX DU GROUP -// chdir(".."); - - } -} diff --git a/twake/backend/core/src/Twake/Core/Command/GetRoutesCommand.php b/twake/backend/core/src/Twake/Core/Command/GetRoutesCommand.php deleted file mode 100755 index 9d047ee0..00000000 --- a/twake/backend/core/src/Twake/Core/Command/GetRoutesCommand.php +++ /dev/null @@ -1,33 +0,0 @@ -setName("twake:routes"); - } - - - protected function execute() - { - foreach ($this->app->getRouting()->getRoutes() as $route) { - error_log($route); - } - } - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Command/ImportCommand.php b/twake/backend/core/src/Twake/Core/Command/ImportCommand.php deleted file mode 100755 index 9f057cb3..00000000 --- a/twake/backend/core/src/Twake/Core/Command/ImportCommand.php +++ /dev/null @@ -1,926 +0,0 @@ - Array(), 'notall' => Array()); - - public static function cmpMessage($a, $b) - { - return $a["creation_date"] - $b["creation_date"]; - } - - protected function configure() - { - $this - ->setName("twake:import_group") - ->setDescription("Command to import a group from old Twake"); - //->addArgument('tarname', InputArgument::REQUIRED, 'Which tar do you want to import'); - } - - protected function execute() - { - -// ================================================================================================================================================= -// ================================================================================================================================================= - - error_log("========================================================================================"); - error_log("========================================================================================"); - error_log("\n"); - error_log("DO NO STOP THIS PROCESS IT COULD TAKE A REALLY LONG TIME !!"); - error_log("\n"); - error_log("========================================================================================"); - error_log("========================================================================================"); - - - $services = $this->getApp()->getServices(); - $manager = $services->get('app.twake_doctrine'); - //$group_name = $input->getArgument('tarname'); - $export_user = true; - chdir('web'); - chmod(getcwd(), 0777); - mkdir("Export"); - $phar = new \PharData('Export.tar'); - $phar->extractTo('Export'); - chdir("Export"); - chdir("Export"); - - $dir = '.'; - - $this->match_file = Array(); - $this->match_table = Array( - "user" => Array(), - "message" => Array(), - "message_bdd" => Array() - ); - - $dh = opendir($dir); - $roor_tar = getcwd(); - - - while (false !== ($filename = readdir($dh))) { - if ($filename[0] == ".") { - continue; - } - - chdir($roor_tar); - - error_log("\n\n -------- NEW GROUP --------\n" . $filename . "\n"); - if (is_dir($filename)) { - chdir($filename); - - //Import this group - $this->importGroup(); - - } else { - error_log(getcwd()); - error_log("error reading folder " . $filename); - } - - } - chdir($roor_tar); - - - error_log("\n\n -------- PRIVATE CHANS --------\n"); - - $dh = opendir($dir); - while (false !== ($filename = readdir($dh))) { - if ($filename[0] == ".") { - continue; - } - chdir($filename); - - //Import this group - $this->importGroupPrivateChannels(); - - chdir(".."); - - } - - } - - private function importGroup() - { - - $services = $this->getApp()->getServices(); - $manager = $services->get('app.twake_doctrine'); - -// ================================================================================================================================================= -// ================================================================================================================================================= - - //PARTIE CONCERNANT LE GROUPE - $group_file = "group.json"; - if (filesize($group_file) > 0) { - $handle_group = fopen($group_file, 'r') or die('Cannot open file: ' . $group_file); - $group_members = Array(); - $contents = json_decode(fread($handle_group, filesize($group_file)), true); - fclose($handle_group); - - $group = $manager->getRepository("Twake\Workspaces:Group")->findOneBy(Array("name" => $contents["name"] . "_itw")); - - if (!$group) { - - $group = new Group($contents["name"] . "_itw"); - $group->setDisplayName($contents["display_name"]); - - $logo = $contents["logo"]; - if ($logo !== '') { - $group->setLogo($contents["logo"]); - } - - $manager->persist($group); - $manager->flush(); - - } - - $group_id = $group->getId(); - - } - - $appRepository = $manager->getRepository("Twake\Market:Application"); - $list_default_apps = $appRepository->findBy(Array("is_default" => true)); - $groupapp_apps = []; - foreach ($list_default_apps as $app) { - $groupapp = new GroupApp($group, $app->getId()); - $groupapp->setWorkspaceDefault(true); - $manager->persist($groupapp); - - $groupapp_apps[] = $groupapp; - } - $manager->flush(); - -// ================================================================================================================================================= -// ================================================================================================================================================= - - //CREATION DES COMPTES UTILISATEURS QU IL FAUT CREER AVANT DE LES AJOUTER A L ENTREPRISE - - chdir('users'); - $user_file = "users.json"; - $handle_user = fopen($user_file, 'r') or die('Cannot open file: ' . $user_file); - $contents = json_decode(fread($handle_user, filesize($user_file)), true); - foreach ($contents as $user) { - $old_id = $user["id"]; - $mail = strtolower(trim($user["emailcanonical"])); - $username = trim($user["username"]); - - // on regarde si le compte du user existe déjà avec son mail - $new_user = $manager->getRepository("Twake\Users:User")->findOneBy(Array("emailcanonical" => $mail)); - if (!$new_user) { - $other_new_users_mails = $manager->getRepository("Twake\Users:Mail")->findOneBy(Array("mail" => $mail)); - if ($other_new_users_mails) { - $new_user = $other_new_users_mails->getUser(); - } - } - if (!$new_user) { - $new_user = $manager->getRepository("Twake\Users:User")->findOneBy(Array("usernamecanonical" => $username)); - } - - if (!isset($new_user)) { - //si le compte de n'existe pas on ne le crée pas a nouveau - $new_user = new User(); - $new_user->setFirstName($user["firstname"]); - $new_user->setLastName($user["lastname"]); - $new_user->setLanguage($user["language"]); - $new_user->setUsername($user["username"]); - $new_user->setPassword($user["password"]); - $new_user->setemailCanonical($mail); - $new_user->setSalt($user["salt"]); - $new_user->setNotificationPreference($user["notification_preference"]); - $logo = $user["logo"]; - if ($logo !== '') { - $logo = new File(); - $logo->setPublicLink($user["logo"]); - $manager->persist($logo); - $manager->flush(); - $new_user->setThumbnail($logo); - } - $manager->persist($new_user); - - //creation des emails secondaire - foreach ($user["secondary_email"] as $mail) { - $mail_to_find = $manager->getRepository("Twake\Users:Mail")->findOneBy(Array("mail" => $mail)); - if (!isset($mail_to_find)) { - $mail_bdd = new Mail(); - $mail_bdd->setMail($mail); - $mail_bdd->setUserId($new_user->getId()); - $manager->persist($mail_bdd); - } - } - $manager->flush(); - } - $this->match_table["user"][$old_id] = $new_user->getId() . ""; - } - fclose($handle_user); - -// chdir(".."); -// return; - -// ================================================================================================================================================= -// ================================================================================================================================================= - - //AJOUT DES MEMBRES DU GROUP DANS LE GROUP AVEC LE LEVEL ET LE IS EXTERNE - - chdir('..'); - $group_members_file = "group_members.json"; - if (filesize($group_members_file) > 0) { - $handle_group_members = fopen($group_members_file, 'r') or die('Cannot open file: ' . $group_members_file); - $group_members = Array(); - $contents = json_decode(fread($handle_group_members, filesize($group_members_file)), true); - if (isset($contents)) { - foreach ($contents as $user) { - if (array_key_exists($user["user_id"], $this->match_table["user"])) { - $new_id = $this->match_table["user"][$user["user_id"]]; - $user_bdd = $manager->getRepository("Twake\Users:User")->findOneBy(Array("id" => $new_id)); - $groupuser = new GroupUser($group, $user_bdd); - $groupuser->setExterne($user["externe"]); - $groupuser->setLevel($user["level"]); - $manager->persist($groupuser); - $manager->flush(); - } - } - } - fclose($handle_group_members); - } - - // PARTIE SUR LA CREATION DES WORKSPACES ET DES WORKSPACES MEMBERS - if (file_exists("workspaces")) { - chdir("workspaces"); - $allworkspace = scandir("./"); - $workspaces = array_values(array_diff($allworkspace, array('.', '..'))); - foreach ($workspaces as $workspace) { - - if ($workspace[0] == ".") { - continue; - } - - chdir($workspace); - $workspace_file = "workspace.json"; - if (filesize($workspace_file) > 0) { - $handle_workspace_file = fopen($workspace_file, 'r') or die('Cannot open file: ' . $workspace_file); - $contents = json_decode(fread($handle_workspace_file, filesize($workspace_file)), true); - if (isset($contents)) { - $old_wp_id = $contents["id"]; - error_log(print_r("DEBUT WP : " . $contents["name"] . " ID : " . $old_wp_id)); - $workspace_bdd = new Workspace($contents["name"]); - $workspace_bdd->setUniqueName($contents["uniquename"]); - $workspace_bdd->setColor($contents["color"]); - $logo = $contents["logo"]; - if ($logo !== '') { - $workspace_bdd->setLogo($contents["logo"]); - } - $workspace_bdd->setGroup($group->getId()); - $manager->persist($workspace_bdd); - $workspace_id = $workspace_bdd->getId(); - $manager->flush(); - } - } - - $workspace_members_file = "members.json"; - if (filesize($workspace_members_file) > 0) { - - $handle_workspace_members = fopen($workspace_members_file, 'r') or die('Cannot open file: ' . $workspace_members_file); - $contents = json_decode(fread($handle_workspace_members, filesize($workspace_members_file)), true); - $level_admin_bdd = new WorkspaceLevel(); - $level_admin_bdd->setIsAdmin(true); - $level_admin_bdd->setWorkspace($workspace_bdd->getId()); - $level_admin_bdd->setLabel("Administrator"); - $manager->persist($level_admin_bdd); - $manager->flush(); - $level_admin_id = $level_admin_bdd->getId(); - - $level_none_bdd = new WorkspaceLevel(); - $level_none_bdd->setWorkspace($workspace_bdd->getId()); - $level_none_bdd->setLabel("Basic user"); - $manager->persist($level_none_bdd); - $manager->flush(); - $level_none_id = $level_none_bdd->getId(); - - if (isset($contents)) { - foreach ($contents as $user) { - if (array_key_exists($user["user_id"], $this->match_table["user"])) { - $new_id = $this->match_table["user"][$user["user_id"]]; - $user_bdd = $manager->getRepository("Twake\Users:User")->findOneBy(Array("id" => $new_id)); - $workspaceuser = new WorkspaceUser($workspace_bdd, $user_bdd, $level_none_id); - if ($user["admin"]) { - $workspaceuser->setLevelId($level_admin_id); - } - $manager->persist($workspaceuser); - } - } - $workspace_bdd->setMemberCount(count($contents)); - $manager->persist($workspace_bdd); - $manager->flush(); - } - } - - - foreach ($groupapp_apps as $groupapp_app) { - $services->get("app.workspaces_apps")->enableApp($workspace_id, $groupapp_app->getAppId()); - } - -// ================================================================================================================================================= -// ================================================================================================================================================= - error_log(">DRIVE"); - //PARTIE SUR LA CREATION DE TOUT LES DRIVE FILES - if (file_exists("drive_files")) { - - $root_directory = $manager->getRepository("Twake\Drive:DriveFile") - ->findOneBy(Array("workspace_id" => $workspace_id . "", "isintrash" => false, "parent_id" => "")); - if (!$root_directory) { - $root_directory = new DriveFile($workspace_id . "", "", true); - $manager->persist($root_directory); - $manager->flush(); - } - - chdir("drive_files"); - $file = "drive_file.json"; - $handle_drive_file = fopen($file, 'r') or die('Cannot open file: ' . $file); - if (filesize($file) > 0) { - $contents = json_decode(fread($handle_drive_file, filesize($file)), true); - if (isset($contents) && $contents != Array()) { - - $all_files_to_sort = $contents; - $all_files_sorted = []; - $known_parents = []; - $i_while = 0; - while (count($all_files_to_sort) > 0 && $i_while < 1000) { - $next_all_files_to_sort = Array(); - foreach ($all_files_to_sort as $file) { - if ($file["parent_id"] > 0) { - if (in_array($file["parent_id"], $known_parents)) { - $all_files_sorted[] = $file; - $known_parents[] = $file["id"]; - } else { - $next_all_files_to_sort[] = $file; - } - } else { - $all_files_sorted[] = $file; - $known_parents[] = $file["id"]; - } - } - $all_files_to_sort = $next_all_files_to_sort; - $i_while++; - } - - - foreach ($all_files_sorted as $file) { - error_log(print_r("NEW DRIVE FILE : " . $file["name"] . " ID : " . $file["id"], true)); - - $drive_file_bdd = new DriveFile($workspace_id . "", "", $file["is_directory"]); - $drive_file_bdd->setDetachedFile($file["detached"]); - //$drive_file_bdd->setIsInTrash($file["trash"]); - $drive_file_bdd->setName($file["name"]); - $drive_file_bdd->setDescription($file["description"]); - $drive_file_bdd->setPreviewLink("https://s3.eu-west-3.amazonaws.com/twake.eu-west-3/public/uploads/previews/" . $file["path"] . ".png"); - $drive_file_bdd->setPreviewHasBeenGenerated(true); - $drive_file_bdd->setHasPreview(true); - $drive_file_bdd->setSize($file["size"]); - $drive_file_bdd->setExtension($file["extension"]); - $drive_file_bdd->setWorkspaceId($workspace_id . ""); - //$drive_file_bdd->setAccesInfo($file["acces_info"]); - $drive_file_bdd->setUrl($file["url"]); - - if ($file["parent_id"] != 0 && array_key_exists($file["parent_id"], $this->match_file)) { - $drive_file_bdd->setParentId($this->match_file[$file["parent_id"]] . ""); - } else { - $drive_file_bdd->setParentId($root_directory->getId() . ""); - } - $manager->persist($drive_file_bdd); - - error_log($drive_file_bdd->getId()); - $this->match_file[$file["id"]] = $drive_file_bdd->getId(); - - $manager->flush(); - - if ($file["version"] != Array() && !$file["is_directory"]) { - $version_bdd = new DriveFileVersion($drive_file_bdd, $file["version"][0]["creator"] ? $file["version"][0]["creator"]["id"] : ""); - $version_bdd->setFileName($file["version"][0]["name"]); - $version_bdd->setDateAdded(new \DateTime("@" . intval($file["version"][0]["date_added"]))); - - $version_bdd->setKey($file["key"]); - $version_bdd->setMode($file["mode"]); - - $manager->persist($version_bdd); - $manager->flush(); - $drive_file_bdd->setLastVersionId($version_bdd->getId()); - $manager->persist($drive_file_bdd); - $manager->flush(); - } - } - } - fclose($handle_drive_file); - } - chdir(".."); - } - -// ================================================================================================================================================= -// ================================================================================================================================================= - error_log(">CHANNELS"); - // PARTIE SUR LA CREATION DE TOUT LES CHANNELS - if (file_exists("channels")) { - chdir("channels"); - $allchannel = scandir("./"); - $channels = array_values(array_diff($allchannel, array('.', '..'))); - - foreach ($channels as $channel) { - - if ($channel[0] == ".") { - continue; - } - - $this->match_table["message"] = Array(); - - $name = $channel; - chdir($channel); - $channel_bdd = new Channel(); - - $name = explode(":", $name); - - if (count($name) > 1) { - $channel_bdd->setName($name[1]); - if (trim($name[0])) { - $channel_bdd->setChannelGroupName($name[0]); - } - } else { - $channel_bdd->setName($name[0]); - } - $name = join($name); - - if (strpos(strtolower($channel_bdd->getName()), "general") !== false || strpos(strtolower($channel_bdd->getName()), "général") !== false) { - $channel_bdd->setIcon(":mailbox:"); - } else if (strpos(strtolower($channel_bdd->getName()), "random") !== false || strpos(strtolower($channel_bdd->getName()), "divers") !== false) { - $channel_bdd->setIcon(":beach_umbrella:"); - } else { - $channel_bdd->setIcon(":small_blue_diamond:"); - } - - $channel_file = "channel.json"; - $handle_channel_file = fopen($channel_file, 'r') or die('Cannot open file: ' . $channel_file); - if (filesize($channel_file) > 0) { - $contents = json_decode(fread($handle_channel_file, filesize($channel_file)), true); - if (isset($contents)) { - error_log(print_r("NEW CHANNEL : " . $name . " ID : " . $contents["id"], true)); - $channel_bdd->setPrivate($contents["is_private"]); - $channel_bdd->setDirect(false); - $channel_bdd->setDescription($contents["description"]); - $channel_bdd->setOriginalWorkspaceId($workspace_id); - $channel_bdd->setOriginalGroupId($group->getId()); - $member_list = Array(); - foreach ($contents["members"] as $channel_member) { - if (array_key_exists($channel_member["id"], $this->match_table["user"])) { - array_push($member_list, $this->match_table["user"][$channel_member["id"]]); - } - } - $channel_bdd->setMembers($member_list); - } - fclose($handle_channel_file); - $manager->persist($channel_bdd); - $manager->flush(); - - $channel_bdd_id = $channel_bdd->getId(); - - - foreach ($member_list as $id) { - $ch_member = new ChannelMember($id . "", $channel_bdd); - $manager->persist($ch_member); - } - $manager->flush(); - - } - - $message_file = "messages.json"; - $handle_message_file = fopen($message_file, 'r') or die('Cannot open file: ' . $message_file); - - $contents = json_decode(fread($handle_message_file, filesize($message_file)), true); - if (isset($contents) && $contents != Array()) { - usort($contents, "self::cmpMessage"); - $no_parent_yet = Array(); - - $messages_to_sort = $contents; - $messages = []; - $known_parents = []; - $i_while = 0; - while (count($messages_to_sort) > 0 && $i_while < 1000) { - $next_messages_to_sort = Array(); - foreach ($messages_to_sort as $message) { - if ($message["parent_message_id"] > 0) { - if (in_array($message["parent_message_id"], $known_parents)) { - $messages[] = $message; - $known_parents[] = $message["id"]; - } else { - $next_messages_to_sort[] = $message; - } - } else { - $messages[] = $message; - $known_parents[] = $message["id"]; - } - } - $messages_to_sort = $next_messages_to_sort; - $i_while++; - } - - foreach ($messages as $message) { - - if (!$message["creation_date"]) { - continue; - } - - $message_bdd = new Message($channel_bdd_id, ""); - $manager->persist($message_bdd); - $message_bdd->setContent(Array("type" => "compile", "content" => $message["content"])); - $res = $this->setMessageContent($message_bdd, $message); - - if (!$res) { - continue; - } - - $this->match_table["message"][$message["id"]] = $message_bdd->getId() . ""; - $this->match_table["message_bdd"][$message["id"]] = $message_bdd; - - if ($message["parent_message_id"] != null) { - if (array_key_exists($message["parent_message_id"], $this->match_table["message"])) { - error_log("add message to parent " . $this->match_table["message"][$message["parent_message_id"]]); - $message_bdd->setParentMessageId($this->match_table["message"][$message["parent_message_id"]]); - - $parent = $this->match_table["message_bdd"][$message["parent_message_id"]]; - $parent->setResponsesCount($parent->getResponsesCount() + 1); - - } else { - // le parent n'existe pas encore on doit creer le message plus tard - $no_parent_yet[$message_bdd->getId() . ""] = Array( - "bdd" => $message_bdd, - "pid" => $message["parent_message_id"] - ); - } - } - if ($message["sender"] != null) { - if (array_key_exists($message["sender"], $this->match_table["user"])) { - $user = $manager->getRepository("Twake\Users:User")->findOneBy(Array("id" => $this->match_table["user"][$message["sender"]])); - $message_bdd->setSender($user); - } - } - $message_bdd->setCreationDate(new DateTime("@" . intval($message["creation_date"] / 1000))); - - $manager->persist($message_bdd); - } - foreach ($no_parent_yet as $key => $message) { - error_log("add message to parent (after) " . $this->match_table["message"][$message["pid"]]); - - $message["bdd"]->setParentMessageId($this->match_table["message"][$message["pid"]]); - $manager->persist($message["bdd"]); - } - } - $manager->flush(); - chdir("..");//on sort du channel en question - - } - chdir(".."); //on sort des channels - } - -// ================================================================================================================================================= -// ================================================================================================================================================= - error_log(">CALENDAR"); - // PARTIE SUR LA CREATION DE TOUT DES CALENDARS - if (file_exists("calendars")) { - chdir("calendars"); - $allcalendar = scandir("./"); - $calendars = array_values(array_diff($allcalendar, array('.', '..'))); - foreach ($calendars as $calendar) { - - if ($calendar[0] == ".") { - continue; - } - - $handle_calendar_file = fopen($calendar, 'r') or die('Cannot open file: ' . $calendar); - if (filesize($calendar) > 0) { - $contents = json_decode(fread($handle_calendar_file, filesize($calendar)), true); - error_log(print_r("NEW CALENDAR : " . $contents[0]["title"] . " ID : " . $contents[0]["id"], true)); - - $color = $contents[0]["color"]; - if ($color[0] != "#") { - $color = "#444444"; - } - - $calendar_bdd = new Calendar($workspace_id, $contents[0]["title"], $color); - if (isset($contents[0]["auto_participant"]) && $contents[0]["auto_participant"] != Array()) { - $participants = Array(); - foreach ($contents[0]["auto_participant"] as $p) { - $participants[] = $this->match_table["user"][$p]; - } - $calendar_bdd->setAutoParticipants($participants); - } - - $manager->persist($calendar_bdd); - $manager->flush(); - $calendar_id = $calendar_bdd->getId(); - //TODO CREER LES EVENTS AVEC LES BONNES INFO ET LES EVENT CALENDAR POUR LIER LES DEUX - - $events = $contents[0]["events"]; - if (isset($events)) { - foreach ($events as $event) { - - $title = ""; - if (isset($event["event"]["event"]["title"]) && is_string(($event["event"]["event"]["title"]))) { - $title = $event["event"]["event"]["title"]; - } - $event_bdd = new Event($title, $event["event"]["from"], $event["event"]["to"]); - - $event_bdd->setType("event"); - if (isset($event["event"]["event"])) { - $event_bdd->setAllDay($event["event"]["event"]["allDay"]); - $event_bdd->setDescription($event["event"]["event"]["description"]); - } - $manager->persist($event_bdd); - $event_id = $event_bdd->getId(); - - $manager->flush(); - - $services->get("app.calendar.event")->updateCalendars($event_bdd, Array(Array("calendar_id" => $calendar_id, "workspace_id" => $workspace_id)), true); - - $participants = Array(); - if (isset($event["event"]["participants"]) && is_array($event["event"]["participants"])) { - foreach ($event["event"]["participants"] as $p) { - if (is_int($p)) { - $participants[] = $this->match_table["user"][$p]; - } else { - $participants[] = $this->match_table["user"][$p["id"]]; - } - } - $services->get("app.calendar.event")->updateParticipants($event_bdd, $participants, true); - - $services->get("app.calendar.event")->updateNotifications($event_bdd, Array(Array("delay" => 30 * 60, "mode" => "")), true); - } - - $manager->flush(); - - } - } - } - } - chdir(".."); - } - -// ================================================================================================================================================= -// ================================================================================================================================================= - - error_log(">TASKS"); - // PARTIE SUR LA CREATION DES TACHES - if (file_exists("tasks")) { - chdir("tasks"); - $allboard = scandir("./"); - $boards = array_values(array_diff($allboard, array('.', '..'))); - foreach ($boards as $board) { - - if ($board[0] == ".") { - continue; - } - - $handle_board_file = fopen($board, 'r') or die('Cannot open file: ' . $board); - if (filesize($board) > 0) { - $contents = json_decode(fread($handle_board_file, filesize($board)), true); - error_log(print_r("NEW TASK : " . $contents["title"] . " ID : " . $contents["id"], true)); - if (isset($contents)) { - $board_bdd = new Board($workspace_id, str_replace(":", " ", $contents["title"])); - $board_bdd->setGroupName($group->getName()); - $manager->persist($board_bdd); - $manager->flush(); - $board_id = $board_bdd->getId(); - $lists = $contents["lists"]; - if (isset($contents["lists"]) && $contents["lists"] != Array()) { - foreach ($lists as $list) { - $board_list = new BoardList($board_id, $list["title"], $list["color"]); - $manager->persist($board_list); - $manager->flush(); - $list_id = $board_list->getId(); - $tasks = $list["tasks"]; - if (isset($list["tasks"]) && $list["tasks"] != Array()) { - foreach ($tasks as $task) { - $task_bdd = new Task($board_id, $list_id, $task["name"]); - $task_bdd->setDescription($task["description"]); - $task_bdd->setOrder($task["order"]); - $task_bdd->setOwner($this->match_table["user"][$task["user"]]); - $task_bdd->setCheckList($task["checklist"]); - if (isset($task["participant"]) && $task["participant"] != Array()) { - $participants = Array(); - foreach ($task["participant"] as $p) { - $participants[] = $this->match_table["user"][$p]; - } - $task_bdd->setParticipants($participants); - } - $manager->persist($task_bdd); - $manager->flush(); - } - } - } - } - } - fclose($handle_board_file); - } - } - chdir(".."); - } - chdir(".."); // on sort du workspace - } -// ================================================================================================================================================= -// ================================================================================================================================================= - - } - - chdir(".."); // on sort du workspace - } - - private function setMessageContent($m_bdd, $m_arr) - { - - if ($m_arr["is_application_message"] && $m_arr["hidden_data"] && $m_arr["hidden_data"]["file"]) { - $file_id = $m_arr["hidden_data"]["file"]; - if ($this->match_file[$file_id]) { - $m_bdd->setContent(Array( - Array( - "type" => "system", - "content" => "This message contain a file." - ), - Array( - "type" => "br" - ), - Array( - "type" => "file", - "content" => $this->match_file[$file_id] - ) - ) - ); - return true; - } - } - - if ($m_arr["is_application_message"] && $m_arr["hidden_data"] && $m_arr["hidden_data"]["iframe"]) { - $url = explode("giphy/view.php?url=", $m_arr["hidden_data"]["iframe"]); - if (count($url) == 2 && trim($url[1])) { - $m_bdd->setContent(Array( - Array("type" => "system", "content" => ["New GIF"]), - Array("type" => "br"), - Array( - "type" => "image", - "src" => urldecode($url[1]) - ) - )); - return true; - } - } - - if (trim($m_arr["content"]) == "") { - return false; - } - - return true; - - } - - - private function importGroupPrivateChannels() - { - $services = $this->getApp()->getServices(); - $manager = $services->get('app.twake_doctrine'); - - //PARTIE SUR LES CHANNEL PRIVES - - //chdir(".."); - if (file_exists("private_channel")) { - chdir("private_channel"); - $channel_file = "channel_private.json"; - $handle_channel_file = fopen($channel_file, 'r') or die('Cannot open file: ' . $channel_file); - if (filesize($channel_file) > 0) { - $contents = json_decode(fread($handle_channel_file, filesize($channel_file)), true); - if (isset($contents)) { - foreach ($contents as $channel) { - error_log(print_r("NEW PRIVATE CHANNEL : " . $channel["id"], true)); - $name = ""; - $member_list_id = Array(); - foreach ($channel["members"] as $channel_member) { - if (array_key_exists($channel_member["id"], $this->match_table["user"])) { - array_push($member_list_id, $this->match_table["user"][$channel_member["id"]]); - $name = $name . $channel_member["username"] . " "; - } - } - error_log(join(", ", $member_list_id)); - if (count($member_list_id) != 2) { - continue; - } - - $false_current_user = new User(); - $false_current_user->setId($member_list_id[0]); - - $res = $services->get("app.channels.direct_messages_system")->save(Array("members" => $member_list_id), Array(), $false_current_user); - $channel_bdd = $manager->getRepository("Twake\Channels:Channel")->findOneBy(Array("id" => $res["id"])); - $channel_bdd_id = $channel_bdd->getId(); - - usort($channel["message"], "self::cmpMessage"); - $no_parent_yet = Array(); - - $messages_to_sort = $channel["message"]; - $messages = []; - $known_parents = []; - $i_while = 0; - while (count($messages_to_sort) > 0 && $i_while < 1000) { - $next_messages_to_sort = Array(); - foreach ($messages_to_sort as $message) { - if ($message["parent_message_id"] > 0) { - if (in_array($message["parent_message_id"], $known_parents)) { - $messages[] = $message; - $known_parents[] = $message["id"]; - } else { - $next_messages_to_sort[] = $message; - } - } else { - $messages[] = $message; - $known_parents[] = $message["id"]; - } - } - $messages_to_sort = $next_messages_to_sort; - $i_while++; - } - - foreach ($messages as $message) { - - if (!$message["creation_date"]) { - continue; - } - - $message_bdd = new Message($channel_bdd_id, ""); - $manager->persist($message_bdd); - $message_bdd->setContent(Array("type" => "compile", "content" => $message["content"])); - $res = $this->setMessageContent($message_bdd, $message); - - if (!$res) { - continue; - } - - $this->match_table["message"][$message["id"]] = $message_bdd->getId() . ""; - $this->match_table["message_bdd"][$message["id"]] = $message_bdd; - - if ($message["parent_message_id"] != null) { - if (array_key_exists($message["parent_message_id"], $this->match_table["message"])) { - error_log("add message to parent " . $this->match_table["message"][$message["parent_message_id"]]); - $message_bdd->setParentMessageId($this->match_table["message"][$message["parent_message_id"]]); - $parent = $this->match_table["message_bdd"][$message["parent_message_id"]]; - $parent->setResponsesCount($parent->getResponsesCount() + 1); - } else { - // le parent n'existe pas encore on doit creer le message plus tard - $no_parent_yet[$message_bdd->getId() . ""] = Array( - "bdd" => $message_bdd, - "pid" => $message["parent_message_id"] - ); - } - } - if ($message["sender"] != null) { - if (array_key_exists($message["sender"], $this->match_table["user"])) { - $user = $manager->getRepository("Twake\Users:User")->findOneBy(Array("id" => $this->match_table["user"][$message["sender"]])); - $message_bdd->setSender($user); - } - } - - - $message_bdd->setCreationDate(new DateTime("@" . intval($message["creation_date"] / 1000))); - - $manager->persist($message_bdd); - } - - } - } - fclose($handle_channel_file); - chdir(".."); - } - } - } -} diff --git a/twake/backend/core/src/Twake/Core/Command/InitCommand.php b/twake/backend/core/src/Twake/Core/Command/InitCommand.php deleted file mode 100755 index ed824c80..00000000 --- a/twake/backend/core/src/Twake/Core/Command/InitCommand.php +++ /dev/null @@ -1,118 +0,0 @@ - Array(), 'notall' => Array()); - - protected function configure() - { - $this - ->setName("twake:init") - ->setDescription("Command to initialize the server, notably filling the database with crucial data"); - } - - - protected function execute() - { - - @file_put_contents("/twake.status.init", "0"); - - $manager = $this->getApp()->getServices()->get('app.twake_doctrine'); - - /** - * Récupération des repository, de Twake et des applis de base - */ - - $services = $this->getApp()->getServices(); - - // Création des applications de base - error_log("> Creating basic apps"); - - $configuration = $this->getApp()->getContainer()->getParameter("defaults.applications.twake_drive"); - $app = null; - $app = $manager->getRepository("Twake\Market:Application")->findOneBy(Array("simple_name" => "twake_drive")); - if (!$app) { - $app = new Application(new FakeCassandraTimeuuid(), "Documents"); - $app->setApiPrivateKey($app->generatePrivateApiKey()); - } - $app->setEsIndexed(false); - $app->setIconUrl("/public/img/twake-emoji/twake-drive.png"); - $app->setWebsite("https://twakeapp.com"); - $app->setDescription("Twake file storage application."); - $app->setSimpleName("twake_drive"); - $app->setAppGroupName("twake"); - $app->setPublic(!!$configuration); - $app->setIsAvailableToPublic(!!$configuration); - $app->setTwakeTeamValidation(!!$configuration); - $app->setDisplayConfiguration(json_decode('{"messages_module":{"in_plus":true},"channel_tab":true,"app":true}', true)); - $app->setDefault(isset($configuration["default"]) && $configuration["default"]); - $manager->persist($app); - $manager->flush(); - - $configuration = $this->getApp()->getContainer()->getParameter("defaults.applications.twake_calendar"); - $app = null; - $app = $manager->getRepository("Twake\Market:Application")->findOneBy(Array("simple_name" => "twake_calendar")); - if (!$app) { - $app = new Application(new FakeCassandraTimeuuid(), "Calendar"); - $app->setApiPrivateKey($app->generatePrivateApiKey()); - } - $app->setEsIndexed(false); - $app->setIconUrl("/public/img/twake-emoji/twake-calendar.png"); - $app->setWebsite("https://twakeapp.com"); - $app->setDescription("Twake's shared calendar app."); - $app->setSimpleName("twake_calendar"); - $app->setAppGroupName("twake"); - $app->setPublic(!!$configuration); - $app->setIsAvailableToPublic(!!$configuration); - $app->setTwakeTeamValidation(!!$configuration); - $app->setDisplayConfiguration(json_decode(/*'{"messages_module":{"in_plus":true},*/ - '{"app":true, "channel_tab": true}', true)); - $app->setDefault(isset($configuration["default"]) && $configuration["default"]); - $manager->persist($app); - $manager->flush(); - - $configuration = $this->getApp()->getContainer()->getParameter("defaults.applications.twake_tasks"); - $app = null; - $app = $manager->getRepository("Twake\Market:Application")->findOneBy(Array("simple_name" => "twake_tasks")); - if (!$app) { - $app = new Application(new FakeCassandraTimeuuid(), "Tasks"); - $app->setApiPrivateKey($app->generatePrivateApiKey()); - } - $app->setEsIndexed(false); - $app->setIconUrl("/public/img/twake-emoji/twake-tasks.png"); - $app->setWebsite("https://twakeapp.com"); - $app->setDescription("Twake task management application."); - $app->setSimpleName("twake_tasks"); - $app->setAppGroupName("twake"); - $app->setPublic(!!$configuration); - $app->setIsAvailableToPublic(!!$configuration); - $app->setTwakeTeamValidation(!!$configuration); - $app->setDisplayConfiguration(json_decode(/*'{"messages_module":{"in_plus":true},*/ - '{"channel_tab":true, "app":true}', true)); - $app->setDefault(isset($configuration["default"]) && $configuration["default"]); - $manager->persist($app); - $manager->flush(); - - @file_put_contents("/twake.status.init", "1"); - - } - -} diff --git a/twake/backend/core/src/Twake/Core/Command/MailsQueueCommand.php b/twake/backend/core/src/Twake/Core/Command/MailsQueueCommand.php deleted file mode 100755 index 1a3e92e4..00000000 --- a/twake/backend/core/src/Twake/Core/Command/MailsQueueCommand.php +++ /dev/null @@ -1,87 +0,0 @@ -setName("twake:mails_queue"); - } - - protected function execute() - { - - $services = $this->getApp()->getServices(); - $em = $services->get('app.twake_doctrine'); - $repo = $em->getRepository("Twake\Core:MailTask"); - /** @var QueueManager $queues */ - $queues = $services->get('app.queues')->getAdapter(); - $mailer = $services->get("app.twake_mailer"); - - $limit = date("U", date("U") + 60); - - while (date("U") < $limit) { - - $messages = $queues->oldConsume("mails", true); - - if (count($messages) == 0) { - sleep(1); - } else { - - - foreach ($messages as $queue_message) { - $push_message = $queues->getMessage($queue_message); - - $data = $push_message; - - if ($data) { - - $id = $data["task_id"]; - - /** @var MailTask $task */ - $task = $repo->find($id); - - //Ack anyway, we do not retry email sending - $queues->ack("mails", $queue_message); - - if ($task) { - $task_data = $task->getData(); - $mailer->sendInternal($task_data["mail"], $task_data["template"], $task_data["data"], $task_data["attachments"], $task_data["templateDirectory"]); - $em->remove($task); - } - - } - - - } - - $em->flush($task); - - } - - } - - - } - -} diff --git a/twake/backend/core/src/Twake/Core/Command/MappingCommand.php b/twake/backend/core/src/Twake/Core/Command/MappingCommand.php deleted file mode 100755 index 5949f22b..00000000 --- a/twake/backend/core/src/Twake/Core/Command/MappingCommand.php +++ /dev/null @@ -1,291 +0,0 @@ -setName("twake:mapping") - ->setDescription("Command add mapping in all index in Elasticsearch"); - } - - protected function execute() - { - @file_put_contents("/twake.status.es_mapping", "0"); - @file_put_contents("/twake.status.no_es", "0"); - - $es_host = $this->getApp()->getContainer()->getParameter('es.host'); - $es_disabled = $es_host === "false" || !$es_host; - - if ($es_disabled) { - error_log("\nℹ️ ElasticSearch is disabled"); - @file_put_contents("/twake.status.no_es", "1"); - return; - } else { - //Wait for es connection - error_log("\n⏳Waiting for ElasticSearch connection"); - $connected = false; - $iteration = 0; - while(!$connected && $iteration < 15){ - try{ - $test = $this->getApp()->getServices()->get("app.restclient")->get("http://" . $es_host); - $connected = $test->getContent(); - }catch(\Exception $e){ - $connected = false; - } - if(!$connected){ - error_log("... not found, retry in 5 seconds (timeout 180s)"); - sleep(5); - } - $iteration++; - } - if(!$connected){ - @file_put_contents("/twake.status.no_es", "1"); - error_log("\n💥 Unable to join ElasticSearch !\n"); - return; - } - } - - $mapping_workspace = Array( - "_source" => Array( - "includes" => Array("id"), - "excludes" => Array( - "name", "group_id", "creation_date" - ) - ), - "properties" => Array( - "id" => Array("type" => "keyword"), - "group_id" => Array("type" => "keyword"), - "name" => Array("type" => "text"), - "creation_date" => Array("type" => "date") - ) - ); - - $mapping_group = Array( - "_source" => Array( - "includes" => Array("id"), - "excludes" => Array( - "name", "creation_date" - ) - ), - "properties" => Array( - "id" => Array("type" => "keyword"), - "name" => Array("type" => "text"), - "creation_date" => Array("type" => "date") - ) - ); - - $mapping_mail = Array( - "_source" => Array( - "includes" => Array("id"), - "excludes" => Array( - "mail" - ) - ), - "properties" => Array( - "id" => Array("type" => "keyword"), - "mail" => Array("type" => "keyword") - ) - ); - - $mapping_message_bloc = Array( - "_source" => Array( - "includes" => Array("id"), - "excludes" => Array( - "workspace_id", "channel_id", "messages" - ) - ), - "properties" => Array( - "id" => Array("type" => "keyword"), - "workspace_id" => Array("type" => "keyword"), - "channel_id" => Array("type" => "keyword"), - "messages" => Array( - "type" => "nested", - "properties" => Array( - "content" => Array("type" => "text"), - "sender" => Array("type" => "keyword"), - "application_id" => Array("type" => "keyword"), - "mentions" => Array("type" => "text"), - "date" => Array("type" => "date"), - "tags" => Array("type" => "keyword"), - "pinned" => Array("type" => "boolean"), - "reactions" => Array("type" => "keyword") - ) - ) - ) - ); - - $mapping_task = Array( - "_source" => Array( - "includes" => Array("id"), - "excludes" => Array( - "title", "description", "owner", "before", "start", "date_created", "tags", "participants", "workspace_id", "date_last_modified" - ) - ), - "properties" => Array( - "id" => Array("type" => "keyword"), - "title" => Array("type" => "text"), - "description" => Array("type" => "text"), - "owner" => Array("type" => "keyword"), - "tags" => Array("type" => "keyword"), - "before" => Array("type" => "date"), - "start" => Array("type" => "date"), - "date_created" => Array("type" => "date"), - "date_last_modified" => Array("type" => "date"), - "workspace_id" => Array("type" => "keyword"), - "participants" => Array("type" => "keyword") - ) - ); - - $mapping_event = Array( - "_source" => Array( - "includes" => Array("id"), - "excludes" => Array( - "title", "description", "owner", "date_from", "date_to", "tags", "participants", "workspace_id", "date_last_modified" - ) - ), - "properties" => Array( - "id" => Array("type" => "keyword"), - "title" => Array("type" => "text"), - "description" => Array("type" => "text"), - "owner" => Array("type" => "keyword"), - "tags" => Array("type" => "keyword"), - "date_from" => Array("type" => "date"), - "date_to" => Array("type" => "date"), - "date_last_modified" => Array("type" => "date"), - "participants" => Array("type" => "keyword"), - "workspace_id" => Array("type" => "keyword") - ) - ); - - - $mapping_channel = Array( - "_source" => Array( - "includes" => Array("id"), - "excludes" => Array( - "workspace_id", "name", "group_id", "last_activity" - ) - ), - "properties" => Array( - "id" => Array("type" => "keyword"), - "workspace_id" => Array("type" => "keyword"), - "group_id" => Array("type" => "keyword"), - "name" => Array("type" => "text"), - "last_activity" => Array("type" => "integer") - ) - ); - - $mapping_file = Array( - "_source" => Array( - "includes" => Array("id"), - "excludes" => Array( - "name", "type", "creation_date", "workspace_id", "keywords", "creator", "date_last_modified", "tags", "size") - ), - "properties" => Array( - "id" => Array("type" => "keyword"), - "name" => Array("type" => "text"), - "type" => Array("type" => "keyword"), - "creation_date" => Array("type" => "date"), - "creator" => Array("type" => "keyword"), - "date_last_modified" => Array("type" => "date"), - "workspace_id" => Array("type" => "keyword"), - "tags" => Array("type" => "keyword"), - "size" => Array("type" => "integer"), - "keywords" => Array( - "type" => "nested", - "properties" => Array( - "keyword" => Array("type" => "text"), - "score" => Array("type" => "float") - ) - ) - ) - ); - - $mapping_users = Array( - "_source" => Array( - "includes" => Array("id"), - "excludes" => Array( - "firstname", "lastname", "username", "email", "language", "creation_date", "groups_id", "workspaces_id" - ) - ), - "properties" => Array( - "id" => Array("type" => "keyword"), - "firstname" => Array("type" => "text"), - "lastname" => Array("type" => "text"), - "username" => Array("type" => "text"), - "email" => Array("type" => "text"), - "language" => Array("type" => "keyword"), - "creation_date" => Array("type" => "date"), - "workspaces_id" => Array("type" => "keyword"), - "groups_id" => Array("type" => "keyword"), - ) - ); - - - $url = $this->getApp()->getContainer()->getParameter('es.host') . "/task"; - $this->updateMapping($url, $mapping_task, "/_mapping/_doc"); - - $url = $this->getApp()->getContainer()->getParameter('es.host') . "/event"; - $this->updateMapping($url, $mapping_event, "/_mapping/_doc"); - - $url = $this->getApp()->getContainer()->getParameter('es.host') . "/channel"; - $this->updateMapping($url, $mapping_channel, "/_mapping/_doc"); - - $url = $this->getApp()->getContainer()->getParameter('es.host') . "/group"; - $this->updateMapping($url, $mapping_group, "/_mapping/_doc"); - - $url = $this->getApp()->getContainer()->getParameter('es.host') . "/mail"; - $this->updateMapping($url, $mapping_mail, "/_mapping/_doc"); - - $url = $this->getApp()->getContainer()->getParameter('es.host') . "/workspace"; - $this->updateMapping($url, $mapping_workspace, "/_mapping/_doc"); - - $url = $this->getApp()->getContainer()->getParameter('es.host') . "/users"; - $this->updateMapping($url, $mapping_users, "/_mapping/_doc"); - - $url = $this->getApp()->getContainer()->getParameter('es.host') . "/drive_file"; - $this->updateMapping($url, $mapping_file, "/_mapping/_doc"); - - $url = $this->getApp()->getContainer()->getParameter('es.host') . "/message_bloc"; - $this->updateMapping($url, $mapping_message_bloc, "/_mapping/_doc"); - - @file_put_contents("/twake.status.es_mapping", "1"); - - } - - private function updateMapping($url, $mapping, $mapping_suffix) - { - - error_log($url . $mapping_suffix); - - try { - $this->getApp()->getServices()->get("app.restclient")->put("http://" . $url, ""); - } catch (\Exception $e) { - error_log("no es"); - error_log($e); - } - - $mapping = json_encode($mapping); - $ch = curl_init(); - curl_setopt($ch, CURLOPT_URL, "http://" . $url . $mapping_suffix); - curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'Content-Length: ' . strlen($mapping))); - curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT'); - curl_setopt($ch, CURLOPT_POSTFIELDS, $mapping); - curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); - curl_setopt($ch, CURLOPT_VERBOSE, 0); - $result = curl_exec($ch); - curl_close($ch); - - error_log($result); - error_log("---------------"); - } -} diff --git a/twake/backend/core/src/Twake/Core/Command/ReindexCommand.php b/twake/backend/core/src/Twake/Core/Command/ReindexCommand.php deleted file mode 100755 index 86dbbcad..00000000 --- a/twake/backend/core/src/Twake/Core/Command/ReindexCommand.php +++ /dev/null @@ -1,108 +0,0 @@ -setName("twake:reindex") - ->setDescription("Command to reindex scylladb date in all index in Elasticsearch"); - } - - protected function execute() - { - $manager = $this->getApp()->getServices()->get('app.twake_doctrine'); - - $arg_list = $_SERVER['argv']; - $arg = isset($arg_list[0]) ? $arg_list[0] : false; - - error_log("REINDEX ".$arg); - - if($arg == "channel"){ - $channels = $manager->getRepository("Twake\Channels:Channel")->findBy(Array("direct" => false)); - foreach ($channels as $i => $channel) { - $c = $this->indexChannel($channel, $manager); - error_log("index " . "Workspaces Channels " . $i . "/" . count($channels) . " " . $c . " messsages"); - } - } - - if($arg == "workspace"){ - $this->indexRepository("Twake\Workspaces:Workspace"); - } - - if($arg == "group"){ - $this->indexRepository("Twake\Workspaces:Group"); - } - - if($arg == "file"){ - $workspaces = $manager->getRepository("Twake\Workspaces:Workspace")->findBy(Array()); - error_log("index " . "Files"); - foreach ($workspaces as $workspace) { - $this->indexRepository("Twake\Drive:DriveFile", Array("workspace_id" => $workspace->getId())); - } - } - - if($arg == "application"){ - $this->indexRepository("Twake\Market:Application"); - } - - if($arg == "message"){ - $this->indexRepository("Twake\GlobalSearch:Bloc"); - } - - if($arg == "mail"){ - $this->indexRepository("Twake\Users:Mail"); - } - - if($arg == "user"){ - $this->indexRepository("Twake\Users:User"); - } - - if($arg == "task"){ - $this->indexRepository("Twake\Tasks:Task"); - } - - if($arg == "event"){ - $this->indexRepository("Twake\Calendar:Event"); - } - - - } - - private function indexChannel($channel, $manager) - { - - $messages = $manager->getRepository("Twake\Discussion:Message")->findBy(Array("channel_id" => $channel->getId())); - foreach ($messages as $message) { - $this->getApp()->getServices()->get('app.messages')->indexMessage($message, $channel->getOriginalWorkspaceId(), $channel->getId()); - } - - return count($messages); - - } - - private function indexRepository($repository, $options = Array()) - { - $manager = $this->getApp()->getServices()->get('app.twake_doctrine'); - - error_log("index " . $repository); - - $items = $manager->getRepository($repository)->findBy($options); - error_log(" -> " . count($items)); - $i = 0; - foreach ($items as $item) { - if(($i++) % 100 == 0) error_log($i); - $manager->es_put($item, $item->getEsType()); - } - - } -} diff --git a/twake/backend/core/src/Twake/Core/Command/ScheduledNotificationsConsumeShard.php b/twake/backend/core/src/Twake/Core/Command/ScheduledNotificationsConsumeShard.php deleted file mode 100755 index 6a5219f7..00000000 --- a/twake/backend/core/src/Twake/Core/Command/ScheduledNotificationsConsumeShard.php +++ /dev/null @@ -1,33 +0,0 @@ -setName("twake:scheduled_notifications_consume_shard"); - } - - - protected function execute() - { - /** @var Scheduled $service */ - $service = $this->app->getServices()->get("app.queues_scheduled"); - - $limit = date("U", date("U") + 60); - - while (date("U") < $limit) { - $done = $service->consumeShardsFromRabbitMQ(); - if ($done == 0) { - break; - } - } - } - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Command/ScheduledNotificationsConsumeTimetable.php b/twake/backend/core/src/Twake/Core/Command/ScheduledNotificationsConsumeTimetable.php deleted file mode 100755 index 008f00fe..00000000 --- a/twake/backend/core/src/Twake/Core/Command/ScheduledNotificationsConsumeTimetable.php +++ /dev/null @@ -1,31 +0,0 @@ -setName("twake:scheduled_notifications_consume_timetable"); - } - - - protected function execute() - { - /** @var Scheduled $service */ - $service = $this->app->getServices()->get("app.queues_scheduled"); - - $limit = date("U", date("U") + 60); - - while (date("U") < $limit) { - $service->consumeShards(60); - usleep(100000); - } - } - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Command/TestQueue.php b/twake/backend/core/src/Twake/Core/Command/TestQueue.php deleted file mode 100755 index 96856673..00000000 --- a/twake/backend/core/src/Twake/Core/Command/TestQueue.php +++ /dev/null @@ -1,45 +0,0 @@ -setName("twake:queue:test"); - } - - - protected function execute() - { - - error_log("test queue"); - - /** @var QueueManager $queues */ - $queues = $this->getApp()->getServices()->get('app.queues')->getAdapter(); - - $queues->push("test", Array("message" => "coucou")); - - sleep(10); - - error_log(json_encode($queues->oldConsume("test"))); - - } - - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Command/TwakeSchemaUpdateCommand.php b/twake/backend/core/src/Twake/Core/Command/TwakeSchemaUpdateCommand.php deleted file mode 100755 index c235ec9c..00000000 --- a/twake/backend/core/src/Twake/Core/Command/TwakeSchemaUpdateCommand.php +++ /dev/null @@ -1,410 +0,0 @@ -setName("twake:schema:update") - ->setDescription("Update table schemas using configured database system (cassandra or mysql") - ->addOption('complete', null, InputOption::VALUE_NONE, 'If defined, all assets of the database which are not relevant to the current metadata will be dropped.') - ->addOption('dump-sql', null, InputOption::VALUE_NONE, 'Dumps the generated SQL statements to the screen (does not execute them).') - ->addOption('force', 'f', InputOption::VALUE_NONE, 'Causes the generated SQL statements to be physically executed against your database.'); - } - - /** - * @param InputInterface $input - * @param OutputInterface $output - * @return int|null|void - */ - protected function execute() - { - - @file_put_contents("/twake.status.db_init", "0"); - - //Wait for scylladb connection - error_log("\n⏳Waiting for ScyllaDB/Cassandra connection"); - $connected = false; - $iteration = 0; - while(!$connected && $iteration < 12 * 6){ - try{ - $doctrine = $this->getApp()->getServices()->get('app.twake_doctrine'); - $em = $doctrine->getManager(); - $connection = $em->getConnection(); - $connection = $connection->getWrappedConnection(); - $connected = true; - }catch(\Exception $e){ - $connected = false; - } - if(!$connected){ - error_log("... not found, retry in 5 seconds (timeout 360s)"); - sleep(5); - } - $iteration++; - } - if(!$connected){ - error_log("\n💥 Unable to join ScyllaDB/Cassandra !\n"); - return; - } - - $doctrine = $this->getApp()->getServices()->get('app.twake_doctrine'); - $em = $doctrine->getManager(); - $connection = $em->getConnection(); - $connection = $connection->getWrappedConnection(); - - $entities = array(); - - $meta = $em->getMetadataFactory()->getAllMetadata(); - foreach ($meta as $m) { - $entities[] = $m; - } - - $schema = $connection->getSchema(); - $keyspace = $schema->keyspace(strtolower($connection->getKeyspace())); - $is_cassandra = $this->getApp()->getContainer()->getParameter("db.is_cassandra", false); - - $ignored_cols = 0; - $viable_indexes = []; - - foreach ($entities as $entity) { - - $table_name = $entity->getTableName(); - error_log($table_name); - $fields = Array(); - $indexed_fields = Array(); - - $custom_keys_names = false; - $custom_keys = false; - $custom_keys_order = false; - $custom_keys_where = false; - if (isset($entity->table["options"]) && isset($entity->table["options"]["scylladb_keys"])) { - if (isset($entity->table["options"]["scylladb_keys"][0]) && count($entity->table["options"]["scylladb_keys"][0]) > 0) { - $_custom_keys = $entity->table["options"]["scylladb_keys"]; - - $custom_keys = Array(); - $custom_keys_names = Array(); - $custom_keys_order = Array(); - $custom_keys_where = Array(); - - $j = 0; - foreach ($_custom_keys as $_custom_key) { - $keys = []; - $i = 0; - $custom_keys_order_tmp = Array(); - $custom_keys_where_tmp = Array(); - $custom_name = null; - foreach ($_custom_key as $key => $order) { - - if ($key == "__name") { - $custom_name = $order; - continue; - } - - $value = false; - if ($order != "ASC" and $order != "DESC") { - $value = $order; - $order = "ASC"; - } - - if (is_array($key)) { - $keys[] = "(" . join(", ", $key) . ")"; - } else { - $keys[] = $key; - } - - $custom_keys_where_tmp[] = $key . (($value === false) ? " IS NOT NULL" : " = " . $value); - if ($i > 0) { - $custom_keys_order_tmp[] = $key . " " . $order; - } - $i++; - - } - $custom_keys[] = join(", ", $keys); - $custom_keys_order[] = join(", ", $custom_keys_order_tmp); - $custom_keys_where[] = join(" AND ", $custom_keys_where_tmp); - $custom_keys_names[] = $custom_name; - } - - } - } - - foreach ($entity->getFieldNames() as $_fieldname) { - - $mapping = Array(); - if (!$entity->hasAssociation($_fieldname)) { - $mapping = $entity->getFieldMapping($_fieldname); - } else { - $mapping["type"] = "timeuuid"; - } - - if (isset($mapping["columnName"])) { - $fieldname = $mapping["columnName"]; - } - - if (isset($mapping["options"]) && isset($mapping["options"]["index"]) && $mapping["options"]["index"]) { - $indexed_fields[$fieldname] = true; - } - - if (strtolower($fieldname) != $fieldname) { - $ignored_cols++; - error_log("INFO (IGNORING COLUMN) ! Column names MUST be snakecase and lowercase ! (" . $fieldname . " in " . $entity->getName() . ")"); - continue; - } - - $type = $this->convertType($mapping["type"]); - if ($type == "ERROR") { - error_log("INFO (IGNORING COLUMN) ! Type " . $mapping["type"] . " is not allowed with Cassandra implementation (in " . $entity->getName() . ")"); - continue; - } - - $fields[$fieldname] = $type; - } - - foreach ($entity->getAssociationNames() as $_fieldname) { - - $fieldname = $_fieldname; - - $mapping = $entity->getAssociationMapping($fieldname); - - if (isset($mapping["columnName"])) { - $fieldname = $mapping["columnName"]; - } - - $fieldname = $fieldname . "_id"; - - if(isset($mapping["joinColumns"][0]["name"])){ - $fieldname = $mapping["joinColumns"][0]["name"]; - } - - if (strtolower($fieldname) != $fieldname) { - $ignored_cols++; - error_log("INFO (IGNORING COLUMN) ! Column names MUST be snakecase and lowercase ! (" . $fieldname . " in " . $entity->getName() . ")"); - continue; - } - - if (!(isset($mapping["id"]) && $mapping["id"])) { //isset($mapping["options"]) && isset($mapping["options"]["index"]) && $mapping["options"]["index"]) { - $indexed_fields[$fieldname] = true; - } - - $fields[$fieldname] = "timeuuid"; - } - - if (strtolower($table_name) != $table_name) { - error_log("INFO (IGNORING TABLE) ! Tables names MUST be snakecase and lowercase ! (" . $entity->getName() . ")"); - continue; - } - - if (!$keyspace->table($table_name)) { - //Create table - $create_table = "CREATE TABLE " . strtolower($connection->getKeyspace()) . ".\"" . $table_name . "\" "; - - //Add Primary key - $identifiers = $entity->getIdentifier(); - if (!$custom_keys && count($identifiers) != 1) { - error_log("INFO (IGNORING TABLE) ! Tables MUST have exactly one identifier for this implementation with Cassandra ! (in " . $entity->getName() . " " . json_encode($identifiers) . ")"); - continue; - } - $identifier = $identifiers[0]; - - $mapping = Array(); - if (!$entity->hasAssociation($identifier)) { - $mapping = $entity->getFieldMapping($identifier); - if (!in_array($mapping["type"], Array("twake_timeuuid", "twake_uuid", "string", "blob", "twake_string", "twake_bigint"))) { - error_log("INFO (IGNORING TABLE) ! Tables index MUST be of type twake_timeuuid or string, or twake_string or blob or twake_bigint ! (in " . $entity->getName() . ")"); - continue; - } - } else { - $mapping["columnName"] = $identifier . "_id"; - $mapping["type"] = "twake_timeuuid"; - } - - $identifier = $mapping["columnName"]; - - $create_table .= "("; - $columns = Array(); - - $columns[] = "\"" . $identifier . "\" " . $this->convertType($mapping["type"]) . ($custom_keys ? "" : " PRIMARY KEY"); - foreach ($fields as $fieldname => $type) { - if ($fieldname != $identifier) { - $columns[] = "\"" . $fieldname . "\" " . $type . ""; - } - } - $columns = join(", ", $columns); - - $create_table .= $columns; - - if ($custom_keys) { - $create_table .= ", PRIMARY KEY (" . $custom_keys[0] . ")"; - } - - $create_table .= ")"; - - if ($custom_keys_order && $custom_keys_order[0]) { - $create_table .= " WITH CLUSTERING ORDER BY (" . $custom_keys_order[0] . ")"; - } - - $connection->exec($create_table); - - $schema = $connection->getSchema(); - $keyspace = $schema->keyspace(strtolower($connection->getKeyspace())); - } - - $cassandra_table = $keyspace->table($table_name); - if (!$cassandra_table) { - continue; - } - - //Add columns - $columns_to_add = Array(); - $alter_command = "ALTER TABLE " . strtolower($connection->getKeyspace()) . ".\"" . $table_name . "\" "; - foreach ($fields as $fieldname => $type) { - - $existing_col = $cassandra_table->column($fieldname); - - if ($existing_col) { - if ($existing_col->type() != $type) { - $command = $alter_command . " ALTER \"" . $fieldname . "\" TYPE " . $type; - $connection->exec($command); - } - } else { - /* MULTIPLE ADD COLUMN NOT SUPORTED FOR CURRENT SCYLLADB VERSION*/ - $add = "\"" . $fieldname . "\" " . $type . ""; - $connection->exec($alter_command . " ADD " . $add); - $columns_to_add[] = $add; - } - - } - - if ($custom_keys) { - - //Cannot update main primary key - array_shift($custom_keys); - array_shift($custom_keys_order); - array_shift($custom_keys_where); - array_shift($custom_keys_names); - - if (count($custom_keys) > 0) { - - foreach ($custom_keys as $i => $key) { - - $index_name = $table_name . "_index_" . str_replace([",", " "], ["_", ""], $key); - - if (strpos($key, ",") !== false) { - if ($custom_keys_names[$i]) { - $index_name = $custom_keys_names[$i] . "_custom_index"; - } else { - $index_name .= "_composite"; - } - - if($is_cassandra){ - $index_name = "index_".md5($index_name); - } - - $command = "CREATE MATERIALIZED VIEW IF NOT EXISTS " . strtolower($connection->getKeyspace()) . ".\""; - $command .= $index_name . "\" AS "; - $command .= " SELECT " . $key; - $command .= " FROM " . strtolower($connection->getKeyspace()) . ".\"" . $table_name . "\" "; - $command .= " WHERE " . $custom_keys_where[$i]; - $command .= " PRIMARY KEY (" . $key . ")"; - $command .= " WITH CLUSTERING ORDER BY (" . $custom_keys_order[$i] . ")"; - } else { - - if ($custom_keys_names[$i]) { - $index_name = $custom_keys_names[$i] . "_custom_index"; - } else { - $index_name .= "_simple"; - } - - if($is_cassandra){ - $index_name = "index_".md5($index_name); - } - - $command = "CREATE INDEX IF NOT EXISTS \""; - $command .= $index_name . "\" ON " . strtolower($connection->getKeyspace()) . ".\"" . $table_name . "\" "; - $command .= "(\"" . $key . "\")"; - } - $connection->exec($command); - $viable_indexes[] = $index_name; - } - - } - - } else { - - if (isset($entity->table["options"]["indexes"])) { - foreach ($entity->table["options"]["indexes"] as $index_name => $data) { - $columns = $data->columns; - if (count($columns) == 1) { - $indexed_fields[$columns[0]] = true; - } - } - } - - foreach ($indexed_fields as $indexed_field => $dummy) { - - $index_name = $table_name . "_index_" . str_replace([",", " "], ["_", ""], $indexed_field) . "_simple_2"; - - $index_base_command = "CREATE INDEX IF NOT EXISTS \"" . $index_name . "\" ON " . strtolower($connection->getKeyspace()) . ".\"" . $table_name . "\" "; - - $command = $index_base_command . "(\"" . $indexed_field . "\")"; - $connection->exec($command); - - $viable_indexes[] = $index_name; - } - - } - - } - - error_log("Indexes = " . count($viable_indexes)); - error_log("Ignored cols = " . $ignored_cols); - - @file_put_contents("/twake.status.db_init", "1"); - - } - - private function convertType($type) - { - $conversionFor = Array( - "string" => "text", - "twake_text" => "text", - "twake_no_salt_text" => "text", - "twake_string" => "text", - "twake_timeuuid" => "timeuuid", - "twake_uuid" => "timeuuid", - "array" => "text", - "twake_boolean" => "tinyint", - "tinyint" => "tinyint", - "boolean" => "tinyint", - "text" => "text", - "twake_float" => "float", - "integer" => "int", - "bigint" => "bigint", - "twake_bigint" => "bigint", - "twake_counter" => "counter", - "decimal" => "decimal", - "twake_datetime" => "timestamp", - "blob" => "blob" - ); - return isset($conversionFor[$type]) ? $conversionFor[$type] : "ERROR"; - } - -} diff --git a/twake/backend/core/src/Twake/Core/CommonObjects/AttachementManager.php b/twake/backend/core/src/Twake/Core/CommonObjects/AttachementManager.php deleted file mode 100755 index 39ae5fcd..00000000 --- a/twake/backend/core/src/Twake/Core/CommonObjects/AttachementManager.php +++ /dev/null @@ -1,183 +0,0 @@ -doctrine = $doctrine; - $this->ws = $ws; - } - - public function updateAttachements($object, $attachements = Array()) - { - $type = $this->getTypeFromClass($object); - $oldAttachements = $object->getAttachements() ? $object->getAttachements() : Array(); - $newAttachement = $oldAttachements; - $get_diff = $this->getArrayDiffUsingKeys($attachements, $oldAttachements, ["id"]); - foreach ($get_diff["del"] as $att) { - foreach ($newAttachement as $index => $attac) { - if ($attac["id"] == $att["id"] && $attac["type"] == $att["type"]) { - $this->removeAttachementFromEntity($object, $attac); - unset($newAttachement[$index]); - } - } - } - foreach ($get_diff["add"] as $att) { - $att["isAttached"] = false; - $newAttachement[] = $att; - $attachedRepo = $this->getAttachementRepository($att["type"]); - if ($attachedRepo) { - $entityAttached = $attachedRepo->findOneBy(Array("id" => $att["id"])); - if ($entityAttached) { - $attachmentInEntityAttached = $entityAttached->getAttachements(); - $attachmentOfAttached = Array( - "type" => $type, - "id" => $object->getId(), - "name" => $this->getAttachmentName($object), - "isAttached" => true - ); - $attachmentInEntityAttached[] = $attachmentOfAttached; - $entityAttached->setAttachements($attachmentInEntityAttached); - $this->doctrine->persist($entityAttached); - $data = Array( - "client_id" => "system", - "action" => "save", - "object_type" => "", - "object" => $entityAttached->getAsArray() - ); - error_log("pushing on " . $this->getRoutePush($entityAttached) . ", " . json_encode($data)); - $this->ws->push($this->getRoutePush($entityAttached), $data); - } - } - } - $object->setAttachements($newAttachement); - $this->doctrine->persist($object); - $this->doctrine->flush(); - } - - private function getTypeFromClass($entity) - { - if (get_class($entity) == "Twake\Tasks\Entity\Task") { - return "task"; - } elseif (get_class($entity) == "Twake\Drive\Entity\DriveFile") { - return "file"; - } elseif (get_class($entity) == "Twake\Calendar\Entity\Event") { - return "event"; - } - return ""; - } - - private function getArrayDiffUsingKeys($new_array, $old_array, $keys) - { - $remove = []; - $add = []; - foreach ($new_array as $new_el) { - if (!$this->inArrayUsingKeys($old_array, $new_el, $keys)) { - $add[] = $new_el; - } - } - foreach ($old_array as $old_el) { - if (!$this->inArrayUsingKeys($new_array, $old_el, $keys)) { - $remove[] = $old_el; - } - } - return Array("del" => $remove, "add" => $add); - } - - private function inArrayUsingKeys($array, $element, $keys) - { - $in = false; - foreach ($array as $el) { - $same = true; - foreach ($keys as $key) { - if ($el[$key] != $element[$key]) { - $same = false; - break; - } - } - if ($same) { - $in = true; - break; - } - } - return $in; - } - - private function removeAttachementFromEntity($object, $attachement) - { - $type = $this->getTypeFromClass($object); - $attachedRepo = $this->getAttachementRepository($attachement["type"]); - $entityAttached = $attachedRepo->findOneBy(Array("id" => $attachement["id"])); - $attachmentInEntityAttached = $entityAttached->getAttachements(); - foreach ($attachmentInEntityAttached as $index => $attac) { - error_log("try " . $attac["id"] . " == " . $object->getId() . ", " . $attac["type"] . " == " . $type); - if ($attac["id"] == $object->getId() && $attac["type"] == $type) { - error_log("remove passive" . json_encode($attac)); - unset($attachmentInEntityAttached[$index]); - $entityAttached->setAttachements($attachmentInEntityAttached); - $this->doctrine->persist($entityAttached); - $data = Array( - "client_id" => "system", - "action" => "save", - "object_type" => "", - "object" => $entityAttached->getAsArray() - ); - $this->ws->push($this->getRoutePush($entityAttached), $data); - break; - } - } - } - - private function getAttachementRepository($type) - { - if ($type == "file") { - return $this->doctrine->getRepository("Twake\Drive:DriveFile"); - } elseif ($type == "task") { - return $this->doctrine->getRepository("Twake\Tasks:Task"); - } elseif ($type == "event") { - return $this->doctrine->getRepository("Twake\Calendar:Event"); - } - return false; - } - - private function getRoutePush($entity) - { - if (get_class($entity) == "Twake\Tasks\Entity\Task") { - return "board_tasks/" . $entity->getBoardId(); - } elseif (get_class($entity) == "Twake\Drive\Entity\DriveFile") { - return "drive/" . $entity->getWorkspaceId() . "/" . $entity->getParentId(); - } elseif (get_class($entity) == "Twake\Calendar\Entity\Event") { - return "calendar_events/" . $entity->getWorkspaceId(); - } - return ""; - } - - private function getAttachmentName($entity) - { - if (get_class($entity) == "Twake\Tasks\Entity\Task") { - return $entity->getTitle(); - } elseif (get_class($entity) == "Twake\Drive\Entity\DriveFile" || get_class($entity) == "Twake\Calendar\Entity\Event") { - return $entity->getName(); - } - return ""; - } - - public function removeAttachementsFromEntity($object) - { - $attachementsToRemove = $object->getAttachements(); - foreach ($attachementsToRemove as $attachement) { - error_log("remove attachement" . json_encode($attachement)); - $this->removeAttachementFromEntity($object, $attachement); - } - } - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Controller/Access.php b/twake/backend/core/src/Twake/Core/Controller/Access.php deleted file mode 100755 index 24e4ddbc..00000000 --- a/twake/backend/core/src/Twake/Core/Controller/Access.php +++ /dev/null @@ -1,37 +0,0 @@ -getUser(); - $data = $request->request->get("data"); - $options = $request->request->get("options"); - $current_user_id = $current_user->getId(); - - $acces = $this->get('app.accessmanager')->has_access($current_user_id, $data, $options); - $data = Array("data" => $acces); - - return new Response($data); - } - - public function user_has_workspace_access(Request $request) - { - $workspace_id = $request->request->get("workspace_id"); - $current_user = $this->getUser(); - $current_user_id = $current_user->getId(); - - $publicaccess = $this->get('app.accessmanager')->user_has_workspace_access($current_user_id, $workspace_id); - $data = Array("data" => $publicaccess); - - return new Response($data); - } -} diff --git a/twake/backend/core/src/Twake/Core/Controller/GroupedQuery.php b/twake/backend/core/src/Twake/Core/Controller/GroupedQuery.php deleted file mode 100755 index 64a0d7c6..00000000 --- a/twake/backend/core/src/Twake/Core/Controller/GroupedQuery.php +++ /dev/null @@ -1,64 +0,0 @@ -request->get("request"); - $response = []; - - foreach ($requests as $_request) { - $route = $_request["route"]; - $data = $_request["data"]; - $request->request->replace($data); - - $controller = $this->routeToControllerName($route); - - if ($controller) { - - $tmp = $this->forward($controller, array('request' => $request)); - $response[] = Array( - "route" => $route, - "data" => json_decode($tmp->getContent(), true) - ); - - } else { - $response[] = Array( - "route" => $route, - "data" => Array("error" => "controller_was_not_found") - ); - } - } - - return new Response(Array("data" => $response)); - - } - - private function routeToControllerName($routename) - { - if ($routename == "/ajax/core/collections/init") { - return "Twake\Core:Websockets:init"; - } - if ($routename == "/ajax/notifications/get") { - return "Twake\Notifications:Default:get"; - } - if ($routename == "/ajax/channels/get") { - return "Twake\Channels:Channels:get"; - } - if ($routename == "/ajax/channels/direct_messages/get") { - return "Twake\Channels:DirectMessages:get"; - } - if ($routename == "/ajax/discussion/get") { - return "Twake\Discussion:Discussion:get"; - } - } - -} diff --git a/twake/backend/core/src/Twake/Core/Controller/Remote.php b/twake/backend/core/src/Twake/Core/Controller/Remote.php deleted file mode 100755 index f0e3d5d2..00000000 --- a/twake/backend/core/src/Twake/Core/Controller/Remote.php +++ /dev/null @@ -1,98 +0,0 @@ -container->getParameter('env.standalone')) { - - $remoteLicenceKey = $request->request->get("licenceKey", ""); - $remoteIp = $request->getClientIp(); - - $licenceServer = "https://licences.twakeapp.com/api"; - $licenceKey = $this->container->getParameter('env.licence_key'); - $data = Array( - "licenceKey" => $licenceKey, - "remoteLicenceKey" => $remoteLicenceKey, - "remoteIp" => $remoteIp - ); - $result = $this->get("app.restclient")->post($licenceServer . "/verifyRemote", json_encode($data), array(CURLOPT_CONNECTTIMEOUT => 60)); - $result = json_decode($result->getContent(), true); - - if (!isset($result["status"]) || $result["status"] != "valid") { - return new Response(Array("status" => "error", "error" => $result)); - } - - $mail = $request->request->get("mail", ""); - $html = $request->request->get("html", ""); - $attachments = $request->request->get("attachments", Array()); - $this->get("app.twake_mailer")->sendHTML($mail, $html, $attachments); - - return new Response(Array("status" => "success")); - - } - //[/REMOVE_ONPREMISE] - return new Response(Array("status" => "error")); - - } - - public function push(Request $request) - { - //[REMOVE_ONPREMISE] - - if ($this->container->getParameter('env.standalone')) { - - $remoteLicenceKey = $request->request->get("licenceKey", ""); - $remoteIp = $request->getClientIp(); - - $licenceServer = "https://licences.twakeapp.com/api"; - $licenceKey = $this->container->getParameter('env.licence_key'); - $data = Array( - "licenceKey" => $licenceKey, - "remoteLicenceKey" => $remoteLicenceKey, - "remoteIp" => $remoteIp - ); - $result = $this->get("app.restclient")->post($licenceServer . "/verifyRemote", json_encode($data), array(CURLOPT_CONNECTTIMEOUT => 60)); - $result = json_decode($result->getContent(), true); - - if (!isset($result["status"]) || $result["status"] != "valid") { - return new Response(Array("status" => "error", "error" => $result)); - } - - $data_array = $request->request->get("data", Array()); - - if (isset($data_array["type"])) { - $data_array = Array($data_array); - } - - foreach ($data_array as $data) { - - $type = $data["type"]; - $deviceId = $data["device_id"]; - $message = $data["message"]; - $title = $data["title"]; - $badge = $data["badge"]; - $more_data = $data["data"]; - - $this->get("app.notifications")->pushDeviceInternal($type, $deviceId, $message, $title, $badge, $more_data); - - } - - return new Response(Array("status" => "success")); - - } - //[/REMOVE_ONPREMISE] - return new Response(Array("status" => "error")); - - } - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Controller/Version.php b/twake/backend/core/src/Twake/Core/Controller/Version.php deleted file mode 100755 index 3fe4c477..00000000 --- a/twake/backend/core/src/Twake/Core/Controller/Version.php +++ /dev/null @@ -1,76 +0,0 @@ -get("app.update_services_status")->execute(); - - $auth = []; - if ($this->getParameter("defaults.auth.internal.use")) { - $auth["internal"] = [ - "disable_account_creation" => $this->getParameter("defaults.auth.internal.disable_account_creation"), - "disable_email_verification" => $this->getParameter("defaults.auth.internal.disable_email_verification"), - "use" => true, - ]; - } - if ($this->getParameter("defaults.auth.cas.use")) { - $auth["cas"] = [ - "use" => true, - ]; - } - if ($this->getParameter("defaults.auth.openid.use")) { - $auth["openid"] = [ - "use" => true, - ]; - } - if ($this->getParameter("defaults.auth.console.use")) { - $auth["console"] = [ - "use" => true, - "max_unverified_days" => intval($this->getParameter("defaults.auth.console.configuration.max_unverified_days", "7")), - "account_management_url" => $this->getParameter("defaults.auth.console.redirections.account_management_url"), - "company_management_url" => $this->getParameter("defaults.auth.console.redirections.company_management_url"), - "collaborators_management_url" => $this->getParameter("defaults.auth.console.redirections.collaborators_management_url"), - ]; - } - - $data = Array( - "ready" => $ready, - "auth_mode" => array_keys($auth), - "auth" => $auth, - "version" => [ - "current" => /* @VERSION_DETAIL */ "2023.Q1.1223", - "minimal" => [ - "web" => /* @MIN_VERSION_WEB */ "2022.Q2.975", - "mobile" => /* @MIN_VERSION_MOBILE */ "2022.Q2.975", - ] - ], - "elastic_search_available" => !!$this->container->getParameter("es.host"), - "help_url" => "https://go.crisp.chat/chat/embed/?website_id=9ef1628b-1730-4044-b779-72ca48893161" - ); - - if ($this->container->hasParameter("defaults.branding")) { - $branding = $this->container->getParameter("defaults.branding"); - if ($branding && $branding["name"]) { - $data["branding"] = $branding; - } - } - - return new Response(Array("data" => - $data - )); - - - } - -} diff --git a/twake/backend/core/src/Twake/Core/Controller/Websockets.php b/twake/backend/core/src/Twake/Core/Controller/Websockets.php deleted file mode 100755 index 0b9abaf0..00000000 --- a/twake/backend/core/src/Twake/Core/Controller/Websockets.php +++ /dev/null @@ -1,63 +0,0 @@ -request->get("multiple", false); - $multiple = $multiple_request; - if (!$multiple_request) { - $multiple = [Array( - "collection_id" => $request->request->get("collection_id", ""), - "options" => $request->request->get("options", "") - )]; - } - - $final_result = []; - - $wss = $this->get("app.websockets"); - - foreach ($multiple as $item) { - $route = $item["collection_id"]; - $data = $item["options"]; - - try { - $result = $wss->init($route, $data, $this); - if ($result) { - $final_result[] = Array( - "data" => Array( - "room_id" => $result["route_id"], - "key" => $result["key"], - "key_version" => $result["key_version"], - "get" => $result["get"] - ) - ); - } else { - $final_result[] = Array("status" => "error_service_not_found_or_not_allowed"); - } - } catch (\Exception $e) { - log_exception($e); - $final_result[] = Array("status" => "error_service_not_found_or_not_allowed"); - } - - } - - if (!$multiple_request) { - $final_result = $final_result[0]; - } else { - $final_result = Array("data" => $final_result); - } - - return new Response($final_result); - - } - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Entity/CachedFromNode.php b/twake/backend/core/src/Twake/Core/Entity/CachedFromNode.php deleted file mode 100755 index 568fd68a..00000000 --- a/twake/backend/core/src/Twake/Core/Entity/CachedFromNode.php +++ /dev/null @@ -1,56 +0,0 @@ -company_id = $company; - $this->type = $type; - $this->key = $key; - $this->data = json_encode($data); - } - - public function getData() - { - return json_decode($this->data, 1); - } - -} diff --git a/twake/backend/core/src/Twake/Core/Entity/FrontObject.php b/twake/backend/core/src/Twake/Core/Entity/FrontObject.php deleted file mode 100755 index 4bb2080a..00000000 --- a/twake/backend/core/src/Twake/Core/Entity/FrontObject.php +++ /dev/null @@ -1,47 +0,0 @@ -front_id = date("U") . bin2hex(random_bytes(20)); - } - - public function getId() - { - return ""; - } - - /** - * @return mixed - */ - public function getFrontId() - { - return $this->front_id ? $this->front_id : $this->getId(); - } - - /** - * @param mixed $front_id - */ - public function setFrontId($front_id) - { - if ($front_id) { - $this->front_id = $front_id; - } - } - -} diff --git a/twake/backend/core/src/Twake/Core/Entity/MailTask.php b/twake/backend/core/src/Twake/Core/Entity/MailTask.php deleted file mode 100755 index b2641b77..00000000 --- a/twake/backend/core/src/Twake/Core/Entity/MailTask.php +++ /dev/null @@ -1,73 +0,0 @@ -setData($data); - } - - /** - * @return mixed - */ - public function getId() - { - return $this->id; - } - - /** - * @param mixed $id - */ - public function setId($id): void - { - $this->id = $id; - } - - /** - * @return mixed - */ - public function getData() - { - return json_decode($this->data, 1); - } - - /** - * @param mixed $data - */ - public function setData($data): void - { - $this->data = json_encode($data); - } - - -} diff --git a/twake/backend/core/src/Twake/Core/Entity/ScheduledCounter.php b/twake/backend/core/src/Twake/Core/Entity/ScheduledCounter.php deleted file mode 100755 index fff6be63..00000000 --- a/twake/backend/core/src/Twake/Core/Entity/ScheduledCounter.php +++ /dev/null @@ -1,71 +0,0 @@ -type = $type; - $this->time = floor(($timestamp / $time_interval)) * $time_interval; - } - - /** - * @return mixed - */ - public function getValue() - { - return $this->value || 0; - } - - /** - * @param mixed $value BE CAREFUL THIS IS A COUNTER ! SO IT WILL BE AN ADD NOT A SET - */ - public function setIncrementValue($value) - { - $this->value = $value; - } - - /** - * @return float|int - */ - public function getTime() - { - return $this->time; - } - - /** - * @return mixed - */ - public function getType() - { - return $this->type; - } - -} diff --git a/twake/backend/core/src/Twake/Core/Entity/ScheduledTask.php b/twake/backend/core/src/Twake/Core/Entity/ScheduledTask.php deleted file mode 100755 index ecf859f5..00000000 --- a/twake/backend/core/src/Twake/Core/Entity/ScheduledTask.php +++ /dev/null @@ -1,115 +0,0 @@ -route = $route; - $this->time = floor(($timestamp / $time_interval)) * $time_interval; - $this->timestamp = $timestamp; - $this->shard = $shard . ""; - $this->setData($data); - } - - /** - * @return mixed - */ - public function getId() - { - return $this->id; - } - - /** - * @param mixed $id - */ - public function setId($id): void - { - $this->id = $id . ""; - } - - /** - * @return mixed - */ - public function getData() - { - return json_decode($this->data, 1); - } - - /** - * @param mixed $data - */ - public function setData($data): void - { - $this->data = json_encode($data); - } - - /** - * @return mixed - */ - public function getTimestamp() - { - return $this->timestamp; - } - - /** - * @return mixed - */ - public function getRoute() - { - return $this->route; - } - - -} diff --git a/twake/backend/core/src/Twake/Core/Entity/SearchableObject.php b/twake/backend/core/src/Twake/Core/Entity/SearchableObject.php deleted file mode 100755 index 5ca5cf96..00000000 --- a/twake/backend/core/src/Twake/Core/Entity/SearchableObject.php +++ /dev/null @@ -1,100 +0,0 @@ -setEsIndexed(false); - } - - /** - * @return mixed - */ - public function getEsIndexed() - { - return $this->es_indexed; - } - - /** - * @param mixed $es_indexed - */ - public function setEsIndexed($es_indexed) - { - $this->es_indexed = $es_indexed; - } - - /** - * @return mixed - */ - public function getEsType() - { - return $this->es_type; - } - - /** - * @param mixed $es_type - */ - public function setEsType($es_type) - { - $this->es_type = $es_type; - } - - /** - * @return mixed - */ - public function getEsIndex() - { - return $this->es_index; - } - - /** - * @param mixed $es_index - */ - public function setEsIndex($es_index) - { - if (!$es_index) { - $this->on_construct_indexation_array = ""; - } - $this->es_index = $es_index; - } - - public function getIndexationArray() - { - return Array(); - } - - public function updatePreviousIndexationArray() - { - $this->on_construct_indexation_array = json_encode($this->getIndexationArray()); - } - - public function changesInIndexationArray() - { - if (json_encode($this->getIndexationArray()) != $this->on_construct_indexation_array) { - return true; - } - return false; - } - -} diff --git a/twake/backend/core/src/Twake/Core/Entity/Sessions.php b/twake/backend/core/src/Twake/Core/Entity/Sessions.php deleted file mode 100755 index 17216635..00000000 --- a/twake/backend/core/src/Twake/Core/Entity/Sessions.php +++ /dev/null @@ -1,111 +0,0 @@ -sess_id; - } - - /** - * @return mixed - */ - public function getSessData() - { - return $this->sess_data; - } - - /** - * @return mixed - */ - public function getSessTime() - { - return $this->sess_time; - } - - /** - * @return mixed - */ - public function getSessLifetime() - { - return $this->sess_lifetime; - } - - /** - * @param mixed $sess_id - */ - public function setSessId($sess_id) - { - $this->sess_id = $sess_id; - } - - /** - * @param mixed $sess_data - */ - public function setSessData($sess_data) - { - $this->sess_data = $sess_data; - } - - /** - * @param mixed $sess_time - */ - public function setSessTime($sess_time) - { - $this->sess_time = $sess_time; - } - - /** - * @param mixed $sess_lifetime - */ - public function setSessLifetime($sess_lifetime) - { - $this->sess_lifetime = $sess_lifetime; - } - - -} diff --git a/twake/backend/core/src/Twake/Core/Entity/WebsocketsRoute.php b/twake/backend/core/src/Twake/Core/Entity/WebsocketsRoute.php deleted file mode 100755 index 904e3105..00000000 --- a/twake/backend/core/src/Twake/Core/Entity/WebsocketsRoute.php +++ /dev/null @@ -1,161 +0,0 @@ -route_random_endpoint = date("U") . "-" . bin2hex(random_bytes(30)); - } - - public function setId($id) - { - $this->id = $id; - } - - public function getId() - { - return $this->id; - } - - /** - * @return mixed - */ - public function getRoute() - { - return $this->route; - } - - /** - * @param mixed $route - */ - public function setRoute($route) - { - $this->route = $route; - } - - /** - * @return mixed - */ - public function getRouteRandomEndpoint() - { - return $this->route_random_endpoint; - } - - /** - * @return mixed - */ - public function getData() - { - return json_decode($this->data, 1); - } - - /** - * @param mixed $data - */ - public function setData($data) - { - $this->data = json_encode($data); - } - - /** - * @return mixed - */ - public function getLastModifiedDate() - { - return $this->last_modified_date; - } - - /** - * @param mixed $last_modified_date - */ - public function setLastModifiedDate() - { - $this->last_modified_date = new \DateTime(); - } - - /** - * @return mixed - */ - public function getKey() - { - return $this->key; - } - - /** - * @param mixed $key - */ - public function setKey($key) - { - $this->key = $key; - } - - /** - * @return mixed - */ - public function getKeyVersion() - { - return $this->key_version; - } - - /** - * @param mixed $key_version - */ - public function setKeyVersion($key_version) - { - $this->key_version = $key_version; - } - - -} diff --git a/twake/backend/core/src/Twake/Core/Resources/Routing.php b/twake/backend/core/src/Twake/Core/Resources/Routing.php deleted file mode 100755 index 9988020c..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/Routing.php +++ /dev/null @@ -1,26 +0,0 @@ - ["handler" => "Version:getVersion", "methods" => ["GET"]], - "ajax/core/grouped_query" => ["handler" => "GroupedQuery:query", "methods" => ["POST"]], - "ajax/core/collections/init" => ["handler" => "Websockets:init", "methods" => ["POST"]], - "ajax/core/access" => ["handler" => "Access:has_access", "methods" => ["POST"]], - "ajax/core/workspaceaccess" => ["handler" => "Access:user_has_workspace_access", "methods" => ["POST"]], - - //Remote routes - "api/remote/mail" => ["handler" => "Remote:mail", "methods" => ["POST"]], - "api/remote/push" => ["handler" => "Remote:push", "methods" => ["POST"]], - "api/remote/recaptcha" => ["handler" => "Remote:verifyReCaptcha", "methods" => ["POST"]] - - ]; - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/Services.php b/twake/backend/core/src/Twake/Core/Resources/Services.php deleted file mode 100755 index 970a8bbc..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/Services.php +++ /dev/null @@ -1,27 +0,0 @@ - "UserConnectedSecurity", - "app.websockets" => "Websockets", - "app.twake_mailer" => "TwakeMailer", - "app.restclient" => "TwakeRestClient", - "app.pusher" => "Pusher", - "app.translate" => "Translate", - "app.twake_doctrine" => "DoctrineAdapter/ManagerAdapter", - "app.queues" => "Queues/Queues", - "app.queues_scheduled" => "Queues/Scheduled", - "app.accessmanager" => "AccessManager", - "app.exportversion" => "ExportManager", - "app.string_cleaner" => "StringCleaner", - "app.session_handler" => "DoctrineAdapter/SessionHandler", - "app.update_services_status" => "UpdateServicesStatus" - ]; - -} diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/all_style.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/all_style.html.twig deleted file mode 100755 index 6b030e61..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/all_style.html.twig +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - {% block title %}Twake{% endblock %} - - - - - - - - - -
- -
- -
- - {% block content %}{% endblock %} - -
-
- - \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/de/addMail.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/de/addMail.html.twig deleted file mode 100755 index b7acaed6..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/de/addMail.html.twig +++ /dev/null @@ -1,20 +0,0 @@ -{% extends "Mail/de/all.html.twig" %} - -{% block title %}Neue E-Mail-Adresse bestätigen{% endblock %} - -{% block secondtitle %}Neue E-Mail-Adresse bestätigen{% endblock %} - -{% block body %} - - Guten Tag {{ username|capitalize }}, -
- Um diese E-Mail-Adresse zu Ihrem Konto hinzuzufügen, verwenden Sie bitte folgenden Code: -
-
-
-
- {{ code }} -
-
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/de/addedToGroupManagersMail.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/de/addedToGroupManagersMail.html.twig deleted file mode 100755 index 61d4d81e..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/de/addedToGroupManagersMail.html.twig +++ /dev/null @@ -1,14 +0,0 @@ -{% extends "Mail/de/all.html.twig" %} - -{% block title %}Sie wurden zu den Managern der Gruppe {{ group }} hinzugefügt{% endblock %} - -{% block secondtitle %}Sie wurden zu den Managern der Gruppe {{ group }} hinzugefügt{% endblock %} - -{% block body %} - - Guten Tag {{ username|capitalize }}, -
- Sie wurden zum Verwalter der Gruppe {{ group }} ernannt. -
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/de/addedToWorkspaceMail.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/de/addedToWorkspaceMail.html.twig deleted file mode 100755 index 920e031e..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/de/addedToWorkspaceMail.html.twig +++ /dev/null @@ -1,14 +0,0 @@ -{% extends "Mail/de/all.html.twig" %} - -{% block title %}Sie wurden zum Arbeitsbereich {{ workspace }} hinzugefügt!{% endblock %} - -{% block secondtitle %}Sie wurden zum Arbeitsbereich {{ workspace }} hinzugefügt!{% endblock %} - -{% block body %} - - Guten Tag {{ username|capitalize }}, -
- Sie wurden zum Arbeitsbereich {{ workspace }} in der Gruppe {{ group }} hinzugefügt. -
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/de/all.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/de/all.html.twig deleted file mode 100755 index 0e10cdb5..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/de/all.html.twig +++ /dev/null @@ -1,53 +0,0 @@ -{% extends "Mail/all_style.html.twig" %} - -{% block content %} - - - - - - - -
- -
{% block secondtitle %}Guten Tag!{% endblock %}
- - {% block body %}{% endblock %} - -

- Bis bald auf Twake, -
- Ihr Twake-Team -
- {{ twakeurl }} - -
- - - -{% endblock %} diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/de/changeLevelWorkspaceMail.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/de/changeLevelWorkspaceMail.html.twig deleted file mode 100755 index c8868d96..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/de/changeLevelWorkspaceMail.html.twig +++ /dev/null @@ -1,14 +0,0 @@ -{% extends "Mail/de/all.html.twig" %} - -{% block title %}Ihr Status in {{ workspace }} hat sich geändert{% endblock %} - -{% block secondtitle %}Ihr Status in {{ workspace }} hat sich geändert{% endblock %} - -{% block body %} - - Guten Tag {{ username|capitalize }}, -
- Ihr Status in {{ workspace }} (Gruppe {{ group }}) wurde geändert. Sie sind jetzt {{ level }} -
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/de/event_notification.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/de/event_notification.html.twig deleted file mode 100755 index b2c2625e..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/de/event_notification.html.twig +++ /dev/null @@ -1,30 +0,0 @@ -{% extends "Mail/en/all.html.twig" %} - -{% block title %}📅 Twake, {{ text }}{% endblock %} - -{% block secondtitle %}Twake, {{ text }}{% endblock %} - -{% block body %} - - Guten Tag 👋, - sie haben bald eine Veranstaltung! -
-
-
- - {% if event.title %} - {{ event.title }}

- {% else %} - Untitled

- {% endif %} - - {% if event.location %} - Where: {{ event.location }}

- {% endif %} - - - When: in {{ delay }}

- -
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/de/inviteToWorkspaceMail.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/de/inviteToWorkspaceMail.html.twig deleted file mode 100755 index b43fd46d..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/de/inviteToWorkspaceMail.html.twig +++ /dev/null @@ -1,34 +0,0 @@ -{% extends "Mail/de/all.html.twig" %} - -{% block title %}Sie wurden in den Arbeitsbereich {{ workspace }}{% endblock %} - -{% block secondtitle %}Sie wurden in den Arbeitsbereich {{ workspace }} der Gruppe {{ group }} eingeladen{% endblock %} - -{% block body %} - - Guten Tag, -
- Sie wurden von {{ sender_user|capitalize }} ({{ sender_user_mail }}) in den Arbeitsbereich - {{ workspace }} der Gruppe {{ group }} eingeladen. -

- -
-
- - Dem Arbeitsbereich beitreten - -
-
{{ twakeappurl|trim('/') }}/login?subscribe&mail={{ mail }} -
-
-
-
- - Richten Sie bitte ein neues Konto ein, denn wir kennen diese E-Mail-Adresse nicht. -
-
- Wenn Sie bereits ein Twake-Konto besitzen, fügen Sie - {{ mail }} in der Liste Ihrer E-Mail-Adressen hinzu; Sie werden dann automtisch zu diesem Arbeitsbereich hinzugefügt. - -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/de/messages_notifications.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/de/messages_notifications.html.twig deleted file mode 100755 index ff38131a..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/de/messages_notifications.html.twig +++ /dev/null @@ -1,30 +0,0 @@ -{% extends "Mail/de/all.html.twig" %} - -{% block title %}Sie haben {{ total_notifications }} ungelesene Nachricht(en) auf Twake{% endblock %} - -{% block secondtitle %}🔔 Sie haben {{ total_notifications }} ungelesene Nachricht(en) auf Twake{% endblock %} - -{% block body %} - - Guten Tag {{ username|capitalize }}, -
- Sie haben {{ total_notifications }} ungelesene Nachricht(en) auf Twake. -

- Letzte Nachricht(en): - - {% for notification in notifications %} -
- Vor {{ notification.delay }} - Stund(en) - {{ notification.title }}
- {{ notification.text }} -
- {% endfor %} - -
- Öffne Twake -
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/de/newMember.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/de/newMember.html.twig deleted file mode 100755 index 9a8fa073..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/de/newMember.html.twig +++ /dev/null @@ -1,14 +0,0 @@ -{% extends "Mail/de/all.html.twig" %} - -{% block title %}Herzlich willkommen auf Twake!{% endblock %} - -{% block secondtitle %}Herzlich willkommen auf Twake!{% endblock %} - -{% block body %} - - Guten Tag {{ username|capitalize }}, -
- Herzlich willkommen auf Twake. Sollten Sie Hilfe benötigen, kontaktieren Sie uns bitte auf contact@twakeapp.com . -
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/de/notification.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/de/notification.html.twig deleted file mode 100755 index 398d593c..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/de/notification.html.twig +++ /dev/null @@ -1,17 +0,0 @@ -{% extends "Mail/de/all.html.twig" %} - -{% block title %}Twake, neue Benachrichtigung von {{ application_name }} in {{ workspace_name }}{% endblock %} - -{% block secondtitle %}Twake, neue Benachrichtigung {{ application_name }} in {{ workspace_name }}{% endblock %} - -{% block body %} - - Guten Tag {{ username|capitalize }}, -
- Sie haben eine neue Benachrichtigung der Anwendung {{ application_name }} im Arbeitsbereich - {{ workspace_name }} -

- {{ text }} -
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/de/removedFromWorkspaceMail.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/de/removedFromWorkspaceMail.html.twig deleted file mode 100755 index 2ffa3e8c..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/de/removedFromWorkspaceMail.html.twig +++ /dev/null @@ -1,14 +0,0 @@ -{% extends "Mail/de/all.html.twig" %} - -{% block title %}Sie wurden aus dem Arbeitsbereich {{ workspace }} entfernt.{% endblock %} - -{% block secondtitle %}Sie wurden aus dem Arbeitsbereich {{ workspace }} entfernt.{% endblock %} - -{% block body %} - - Guten Tag {{ username|capitalize }}, -
- Sie wurden aus dem Arbeitsbereich {{ workspace }} in der Gruppe {{ group }} gelöscht. -
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/de/requestPassword.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/de/requestPassword.html.twig deleted file mode 100755 index f1fa0328..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/de/requestPassword.html.twig +++ /dev/null @@ -1,20 +0,0 @@ -{% extends "Mail/de/all.html.twig" %} - -{% block title %} Ihre Anforderung eines neuen Passwortes {% endblock %} - -{% block secondtitle %} Ihre Anforderung eines neuen Passwortes {% endblock %} - -{% block body %} - - Guten Tag {{ username|capitalize }}, -
- Sie haben ein neues Passwort angefordert; hier ist der erforderliche Aktivierungscode: -
-
-
-
- {{ code }} -
-
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/de/subscribeMail.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/de/subscribeMail.html.twig deleted file mode 100755 index e7600697..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/de/subscribeMail.html.twig +++ /dev/null @@ -1,22 +0,0 @@ -{% extends "Mail/de/all.html.twig" %} - -{% block title %}E-Mail Bestätigung{% endblock %} - -{% block secondtitle %}E-Mail Bestätigung{% endblock %} - -{% block body %} - - Herzlich willkommen auf Twake! -
- Um Ihr Konto einzurichten, sie können auf diesen Link klicken : -
- {{ twakeappurl|trim('/') }}{{ magic_link }} -
-
- Durch Klicken auf diesen Link erklären Sie sich mit den Twake-Nutzungsbedingungen - einverstanden. -

- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/de/task_notification.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/de/task_notification.html.twig deleted file mode 100755 index 84d9eec8..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/de/task_notification.html.twig +++ /dev/null @@ -1,26 +0,0 @@ -{% extends "Mail/en/all.html.twig" %} - -{% block title %}📋 Twake, {{ text }}{% endblock %} - -{% block secondtitle %}Twake, {{ text }}{% endblock %} - -{% block body %} - - Guten Tag 👋, - Sie haben eine Aufgabe zu erinnern! -
-
-
- - {% if task.title %} - {{ task.title }}

- {% else %} - Untitled

- {% endif %} - - - When: in {{ delay }}

- -
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/de/unread_notifications.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/de/unread_notifications.html.twig deleted file mode 100755 index ff4a8135..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/de/unread_notifications.html.twig +++ /dev/null @@ -1,35 +0,0 @@ -{% extends "Mail/de/all.html.twig" %} - -{% block title %}Sie haben ungelesene Benachrichtigung(en) auf Twake{% endblock %} - -{% block secondtitle %}Sie haben ungelesene Benachrichtigung(en) auf Twake{% endblock %} - -{% block body %} - - Guten Tag {{ username|capitalize }}, -
- Sie haben ungelesene Benachrichtigung(en) auf Twake. -

- Letzte Benachrichtigung(en): - - - {% for notification in notifications %} -
- Vor {{ notification.delay }} - Stund(en) - {{ notification.title }}
- {{ notification.text }} -
- {% endfor %} - -
-
- - Öffne Twake - -
-
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/addMail.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/addMail.html.twig deleted file mode 100755 index 26fa242d..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/addMail.html.twig +++ /dev/null @@ -1,20 +0,0 @@ -{% extends "Mail/en/all.html.twig" %} - -{% block title %}Confirm new e-mail{% endblock %} - -{% block secondtitle %}Confirm new e-mail{% endblock %} - -{% block body %} - - Hello {{ username|capitalize }}, -
- To add this e-mail to your account, use this code : -
-
-
-
- {{ code }} -
-
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/addedToGroupManagersMail.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/addedToGroupManagersMail.html.twig deleted file mode 100755 index b048ad2b..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/addedToGroupManagersMail.html.twig +++ /dev/null @@ -1,14 +0,0 @@ -{% extends "Mail/en/all.html.twig" %} - -{% block title %}You have been added to the managers of the group {{ group }}{% endblock %} - -{% block secondtitle %}You have been added to the managers of the group {{ group }}{% endblock %} - -{% block body %} - - Hello {{ username|capitalize }}, -
- You have been granted manager of the group {{ group }}. -
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/addedToWorkspaceMail.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/addedToWorkspaceMail.html.twig deleted file mode 100755 index 48ea760f..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/addedToWorkspaceMail.html.twig +++ /dev/null @@ -1,14 +0,0 @@ -{% extends "Mail/en/all.html.twig" %} - -{% block title %}You have been added to the workspace {{ workspace }} !{% endblock %} - -{% block secondtitle %}You have been added to the workspace {{ workspace }} !{% endblock %} - -{% block body %} - - Hello {{ username|capitalize }}, -
- You have been added to the workspace {{ workspace }} in the group {{ group }}. -
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/all.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/all.html.twig deleted file mode 100755 index 55632bdd..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/all.html.twig +++ /dev/null @@ -1,53 +0,0 @@ -{% extends "Mail/all_style.html.twig" %} - -{% block content %} - - - - - - - -
- -
{% block secondtitle %}Hello !{% endblock %}
- - {% block body %}{% endblock %} - -

- See you soon on Twake, -
- the Twake team -
- {{ twakeurl }} - -
- - - -{% endblock %} - diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/changeLevelWorkspaceMail.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/changeLevelWorkspaceMail.html.twig deleted file mode 100755 index 53bc3ae6..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/changeLevelWorkspaceMail.html.twig +++ /dev/null @@ -1,14 +0,0 @@ -{% extends "Mail/en/all.html.twig" %} - -{% block title %}Your status in {{ workspace }} changed{% endblock %} - -{% block secondtitle %}Your status in {{ workspace }} changed{% endblock %} - -{% block body %} - - Hello {{ username|capitalize }}, -
- Your status in {{ workspace }} (group {{ group }}) was changed to {{ level }} -
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/event_invitation.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/event_invitation.html.twig deleted file mode 100755 index e838c098..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/event_invitation.html.twig +++ /dev/null @@ -1,33 +0,0 @@ -{% extends "Mail/en/all.html.twig" %} - -{% block title %}📅 Twake, you have been invited to the following event.{% endblock %} - -{% block secondtitle %}Twake, you have been invited to the following event.{% endblock %} - -{% block body %} - - You have been invited to the following event. -
-
-
- - {% if event.title %} - {{ event.title }}

- {% else %} - Untitled

- {% endif %} - - {% if event.location %} - Where: {{ event.location }}

- {% endif %} - - - When: {{ (event.from - (user_timezone_delay*60)) | date('F j, Y, g:i a') }} - - {{ (event.to - (user_timezone_delay*60)) | date('F j, Y, g:i a') }} ({{ user_timezone_text }})

- - Invited by: {{ sender_fullname }} {{ sender_email }}

- -
-
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/event_invitation_updated.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/event_invitation_updated.html.twig deleted file mode 100755 index 68e67a9b..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/event_invitation_updated.html.twig +++ /dev/null @@ -1,33 +0,0 @@ -{% extends "Mail/en/all.html.twig" %} - -{% block title %}📅 Twake, an event has been updated.{% endblock %} - -{% block secondtitle %}Twake, an event has been updated.{% endblock %} - -{% block body %} - - An event you participate in has been updated. -
-
-
- - {% if event.title %} - {{ event.title }}

- {% else %} - Untitled

- {% endif %} - - {% if event.location %} - Where: {{ event.location }}

- {% endif %} - - - When: {{ (event.from - (user_timezone_delay*60)) | date('F j, Y, g:i a') }} - - {{ (event.to - (user_timezone_delay*60)) | date('F j, Y, g:i a') }} ({{ user_timezone_text }})

- - Invited by: {{ sender_fullname }} {{ sender_email }}

- -
-
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/event_notification.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/event_notification.html.twig deleted file mode 100755 index b9165267..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/event_notification.html.twig +++ /dev/null @@ -1,30 +0,0 @@ -{% extends "Mail/en/all.html.twig" %} - -{% block title %}📅 Twake, {{ text }}{% endblock %} - -{% block secondtitle %}Twake, {{ text }}{% endblock %} - -{% block body %} - - Hello from Twake 👋,
- you have an event soon ! -
-
-
- - {% if event.title %} - {{ event.title }}

- {% else %} - Untitled

- {% endif %} - - {% if event.location %} - Where: {{ event.location }}

- {% endif %} - - - When: in {{ delay }}

- -
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/inviteToWorkspaceMail.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/inviteToWorkspaceMail.html.twig deleted file mode 100755 index 6c4e9a63..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/inviteToWorkspaceMail.html.twig +++ /dev/null @@ -1,35 +0,0 @@ -{% extends "Mail/en/all.html.twig" %} - -{% block title %}You have been invited in the workspace {{ workspace }} {% endblock %} - -{% block secondtitle %}You have been invited in the workspace {{ workspace }} of the group {{ group }}{% endblock %} - -{% block body %} - - Hello, -
- {{ sender_user|capitalize }} ({{ sender_user_mail }}) just invited you in the workspace - {{ workspace }} from the group {{ group }}. -

- -
-
- - Join workspace now ! - -
-
{{ twakeappurl|trim('/') }}/login?subscribe&mail={{ mail }} -
-
-
-
- - We invite you to create a new account because we do not know this e-mail address. -
-
- If you already have a Twake account, add - {{ mail }} in the list of your e-mail addresses, you will be automatically added to this workspace. - - -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/messages_notifications.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/messages_notifications.html.twig deleted file mode 100755 index 97dc3c96..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/messages_notifications.html.twig +++ /dev/null @@ -1,34 +0,0 @@ -{% extends "Mail/en/all.html.twig" %} - -{% block title %}You have {{ total_notifications }} unread message(s) on Twake{% endblock %} - -{% block secondtitle %}🔔 You have {{ total_notifications }} unread message(s) on Twake{% endblock %} - -{% block body %} - - Hello {{ username|capitalize }}, -
- You have {{ total_notifications }} unread message(s) on Twake. -

- Last messages : - - {% for notification in notifications %} -
- {{ notification.delay }} hour(s) ago - {{ notification.title }}
- {{ notification.text }} -
- {% endfor %} - -
-
- - Ouvrir Twake - -
-
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/newMember.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/newMember.html.twig deleted file mode 100755 index c29243db..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/newMember.html.twig +++ /dev/null @@ -1,14 +0,0 @@ -{% extends "Mail/en/all.html.twig" %} - -{% block title %}Welcome on Twake !{% endblock %} - -{% block secondtitle %}Welcome on Twake !{% endblock %} - -{% block body %} - - Hello {{ username|capitalize }}, -
- Welcome on Twake, if you need any help, please contact support at contact@twakeapp.com . -
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/notification.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/notification.html.twig deleted file mode 100755 index f9e7abb9..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/notification.html.twig +++ /dev/null @@ -1,16 +0,0 @@ -{% extends "Mail/en/all.html.twig" %} - -{% block title %}Twake, new notification from {{ application_name }} in {{ workspace_name }}{% endblock %} - -{% block secondtitle %}Twake, new notification from {{ application_name }} in {{ workspace_name }}{% endblock %} - -{% block body %} - - Hello {{ username|capitalize }}, -
- You have a new notification from {{ application_name }} in the workspace {{ workspace_name }} -

- {{ text }} -
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/removedFromWorkspaceMail.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/removedFromWorkspaceMail.html.twig deleted file mode 100755 index 3152377d..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/removedFromWorkspaceMail.html.twig +++ /dev/null @@ -1,14 +0,0 @@ -{% extends "Mail/en/all.html.twig" %} - -{% block title %}You have been removed from the workspace {{ workspace }}.{% endblock %} - -{% block secondtitle %}You have been removed from the workspace {{ workspace }}.{% endblock %} - -{% block body %} - - Hello {{ username|capitalize }}, -
- You have been removed from the workspace {{ workspace }} in the group {{ group }}. -
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/requestPassword.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/requestPassword.html.twig deleted file mode 100755 index 227054d4..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/requestPassword.html.twig +++ /dev/null @@ -1,20 +0,0 @@ -{% extends "Mail/en/all.html.twig" %} - -{% block title %} Your request for a new password {% endblock %} - -{% block secondtitle %} Your request for a new password {% endblock %} - -{% block body %} - - Hello {{ username|capitalize }}, -
- You requested a new password, there is the activation code you need : -
-
-
-
- {{ code }} -
-
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/subscribeMail.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/subscribeMail.html.twig deleted file mode 100755 index 0e958607..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/subscribeMail.html.twig +++ /dev/null @@ -1,21 +0,0 @@ -{% extends "Mail/en/all.html.twig" %} - -{% block title %}E-mail confirmation{% endblock %} - -{% block secondtitle %}E-mail confirmation{% endblock %} - -{% block body %} - - Welcome to Twake ! -
- In order to create your account, you can click on this link : -
- {{ twakeappurl|trim('/') }}{{ magic_link }} -
-
- By clicking on this link you agree to the terms - of use of twake. -

- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/task_notification.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/task_notification.html.twig deleted file mode 100755 index 5ab0ce4f..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/task_notification.html.twig +++ /dev/null @@ -1,26 +0,0 @@ -{% extends "Mail/en/all.html.twig" %} - -{% block title %}📋 Twake, {{ text }}{% endblock %} - -{% block secondtitle %}Twake, {{ text }}{% endblock %} - -{% block body %} - - Hello from Twake 👋,
- you have a task remind ! -
-
-
- - {% if task.title %} - {{ task.title }}

- {% else %} - Untitled

- {% endif %} - - - When: in {{ delay }}

- -
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/unread_notifications.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/unread_notifications.html.twig deleted file mode 100755 index 2c4924da..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/unread_notifications.html.twig +++ /dev/null @@ -1,33 +0,0 @@ -{% extends "Mail/en/all.html.twig" %} - -{% block title %}You have unread notifications on Twake{% endblock %} - -{% block secondtitle %}You have unread notifications on Twake{% endblock %} - -{% block body %} - - Hello {{ username|capitalize }}, -
- You have unread notifications waiting for you on Twake. -

- Last notifications : - - {% for notification in notifications %} -
- {{ notification.delay }} hour(s) ago - {{ notification.title }}
- {{ notification.text }} -
- {% endfor %} - -
-
- - Open Twake - -
-
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/addMail.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/addMail.html.twig deleted file mode 100755 index b43d74ff..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/addMail.html.twig +++ /dev/null @@ -1,20 +0,0 @@ -{% extends "Mail/fr/all.html.twig" %} - -{% block title %}Confirmer votre nouvelle adresse e-mail{% endblock %} - -{% block secondtitle %}Confirmer votre nouvelle adresse e-mail{% endblock %} - -{% block body %} - - Bonjour {{ username|capitalize }}, -
- Pour ajouter cet e-mail à votre compte, utilisez ce code : -
-
-
-
- {{ code }} -
-
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/addedToGroupManagersMail.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/addedToGroupManagersMail.html.twig deleted file mode 100755 index eec12667..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/addedToGroupManagersMail.html.twig +++ /dev/null @@ -1,14 +0,0 @@ -{% extends "Mail/fr/all.html.twig" %} - -{% block title %}Vous avez été ajouté aux managers du groupe {{ group }}{% endblock %} - -{% block secondtitle %}Vous avez été ajouté aux managers du groupe {{ group }}{% endblock %} - -{% block body %} - - Bonjour {{ username|capitalize }}, -
- Vous avez été nommé gérant du groupe {{ group }}. -
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/addedToWorkspaceMail.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/addedToWorkspaceMail.html.twig deleted file mode 100755 index fcae1c12..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/addedToWorkspaceMail.html.twig +++ /dev/null @@ -1,14 +0,0 @@ -{% extends "Mail/fr/all.html.twig" %} - -{% block title %}Vous avez été ajouté à l'espace de travail {{ workspace }} !{% endblock %} - -{% block secondtitle %}Vous avez été ajouté à l'espace de travail {{ workspace }} !{% endblock %} - -{% block body %} - - Bonjour {{ username|capitalize }}, -
- Vous avez été ajouté à l'espace de travail {{ workspace }} dans le groupe {{ group }}. -
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/all.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/all.html.twig deleted file mode 100755 index e1e839bd..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/all.html.twig +++ /dev/null @@ -1,52 +0,0 @@ -{% extends "Mail/all_style.html.twig" %} - -{% block content %} - - - - - - - -
- -
{% block secondtitle %}Bonjour !{% endblock %}
- - {% block body %}{% endblock %} - -

- A très bientôt sur Twake, -
- L'équipe Twake -
- {{ twakeurl }} - -
- - - -{% endblock %} diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/changeLevelWorkspaceMail.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/changeLevelWorkspaceMail.html.twig deleted file mode 100755 index 77fad844..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/changeLevelWorkspaceMail.html.twig +++ /dev/null @@ -1,14 +0,0 @@ -{% extends "Mail/fr/all.html.twig" %} - -{% block title %}Votre statut dans {{ workspace }} a changé{% endblock %} - -{% block secondtitle %}Votre statut dans {{ workspace }} a changé{% endblock %} - -{% block body %} - - Bonjour {{ username|capitalize }}, -
- Votre statut dans {{ workspace }} (groupe {{ group }}) a été modifié en {{ level }} -
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/event_notification.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/event_notification.html.twig deleted file mode 100755 index 9c528af9..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/event_notification.html.twig +++ /dev/null @@ -1,30 +0,0 @@ -{% extends "Mail/en/all.html.twig" %} - -{% block title %}📅 Twake, {{ text }}{% endblock %} - -{% block secondtitle %}Twake, {{ text }}{% endblock %} - -{% block body %} - - Bonjour depuis Twake 👋, - vous avez bientôt un événement ! -
-
-
- - {% if event.title %} - {{ event.title }}

- {% else %} - Untitled

- {% endif %} - - {% if event.location %} - Où: {{ event.location }}

- {% endif %} - - - Quand: in {{ delay }}

- -
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/inviteToWorkspaceMail.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/inviteToWorkspaceMail.html.twig deleted file mode 100755 index 84b776f6..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/inviteToWorkspaceMail.html.twig +++ /dev/null @@ -1,34 +0,0 @@ -{% extends "Mail/fr/all.html.twig" %} - -{% block title %}Vous avez été invité dans l'espace de travail {{ workspace }} {% endblock %} - -{% block secondtitle %}Vous avez été invité dans l'espace de travail {{ workspace }} du groupe {{ group }}{% endblock %} - -{% block body %} - - Bonjour, -
- Vous avez été invité par {{ sender_user|capitalize }} ({{ sender_user_mail }}) dans l'espace de travail - {{ workspace }} du groupe {{ group }}. -

- -
-
- - Rejoindre l'espace de travail - -
-
{{ twakeappurl|trim('/') }}/login?subscribe&mail={{ mail }} -
-
-
-
- - Nous vous invitons à créer un nouveau compte car nous ne connaissons pas cette adresse e-mail. -
-
- Si vous avez déjà un compte Twake, ajoutez - {{ mail }} dans la liste de vos adresse mails, vous serez alors automatiquement ajouté à cet espace de travail. - -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/messages_notifications.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/messages_notifications.html.twig deleted file mode 100755 index 60ca99ff..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/messages_notifications.html.twig +++ /dev/null @@ -1,35 +0,0 @@ -{% extends "Mail/fr/all.html.twig" %} - -{% block title %}Vous avez {{ total_notifications }} message(s) non lue(s) sur Twake{% endblock %} - -{% block secondtitle %}🔔 Vous avez {{ total_notifications }} message(s) non lue(s) sur Twake{% endblock %} - -{% block body %} - - Bonjour {{ username|capitalize }}, -
- Vous avez reçu {{ total_notifications }} message(s) sur Twake. -

- Vos messages : - - {% for notification in notifications %} -
- il y a {{ notification.delay }} - heure(s) - {{ notification.title }}
- {{ notification.text }} -
- {% endfor %} - -
-
- - Ouvrir Twake - -
-
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/newMember.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/newMember.html.twig deleted file mode 100755 index 6784938b..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/newMember.html.twig +++ /dev/null @@ -1,14 +0,0 @@ -{% extends "Mail/fr/all.html.twig" %} - -{% block title %}Bienvenue sur Twake !{% endblock %} - -{% block secondtitle %}Bienvenue sur Twake !{% endblock %} - -{% block body %} - - Bonjour {{ username|capitalize }}, -
- Bienvenue sur Twake, si vous avez besoin d'aide, n'hésitez pas à contacter le support à contact@twakeapp.com . -
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/notification.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/notification.html.twig deleted file mode 100755 index 9c1988b3..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/notification.html.twig +++ /dev/null @@ -1,17 +0,0 @@ -{% extends "Mail/fr/all.html.twig" %} - -{% block title %}Twake, nouvelle notification de {{ application_name }} dans {{ workspace_name }}{% endblock %} - -{% block secondtitle %}Twake, nouvelle notification {{ application_name }} dans {{ workspace_name }}{% endblock %} - -{% block body %} - - Bonjour {{ username|capitalize }}, -
- Vous avez une nouvelle notification de l'application {{ application_name }} dans l'espace de travail - {{ workspace_name }} -

- {{ text }} -
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/removedFromWorkspaceMail.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/removedFromWorkspaceMail.html.twig deleted file mode 100755 index f327afc5..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/removedFromWorkspaceMail.html.twig +++ /dev/null @@ -1,14 +0,0 @@ -{% extends "Mail/fr/all.html.twig" %} - -{% block title %}Vous avez été retiré de l'espace de travail {{ workspace }}.{% endblock %} - -{% block secondtitle %}Vous avez été retiré de l'espace de travail {{ workspace }}.{% endblock %} - -{% block body %} - - Bonjour {{ username|capitalize }}, -
- Vous avez été supprimé de l'espace de travail {{ workspace }} dans le groupe {{ group }}. -
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/requestPassword.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/requestPassword.html.twig deleted file mode 100755 index 962a85b2..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/requestPassword.html.twig +++ /dev/null @@ -1,20 +0,0 @@ -{% extends "Mail/fr/all.html.twig" %} - -{% block title %} Votre demande de nouveau mot de passe {% endblock %} - -{% block secondtitle %} Votre demande de nouveau mot de passe {% endblock %} - -{% block body %} - - Bonjour {{ username|capitalize }}, -
- Vous avez demandé un nouveau mot de passe, voici le code d'activation dont vous avez besoin : -
-
-
-
- {{ code }} -
-
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/subscribeMail.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/subscribeMail.html.twig deleted file mode 100755 index 81cedb3f..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/subscribeMail.html.twig +++ /dev/null @@ -1,20 +0,0 @@ -{% extends "Mail/fr/all.html.twig" %} - -{% block title %}E-mail confirmation{% endblock %} - -{% block secondtitle %}E-mail confirmation{% endblock %} - -{% block body %} - - Bienvenue sur Twake ! -
- Pour terminer votre inscription, cliquez sur ce lien : -
- {{ twakeappurl|trim('/') }}{{ magic_link }} -

- En cliquant sur ce lien, vous acceptez les - condition d'utilisation de Twake. -

- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/task_notification.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/task_notification.html.twig deleted file mode 100755 index bc0a186b..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/task_notification.html.twig +++ /dev/null @@ -1,26 +0,0 @@ -{% extends "Mail/en/all.html.twig" %} - -{% block title %}📋 Twake, {{ text }}{% endblock %} - -{% block secondtitle %}Twake, {{ text }}{% endblock %} - -{% block body %} - - Bonjour depuis Twake 👋, - vous avez un rappel de tâche ! -
-
-
- - {% if task.title %} - {{ task.title }}

- {% else %} - Untitled

- {% endif %} - - - Quand: in {{ delay }}

- -
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/unread_notifications.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/unread_notifications.html.twig deleted file mode 100755 index 86f89db0..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/unread_notifications.html.twig +++ /dev/null @@ -1,34 +0,0 @@ -{% extends "Mail/fr/all.html.twig" %} - -{% block title %}Vous avez des notifications non lues sur Twake{% endblock %} - -{% block secondtitle %}Vous avez des notifications non lues sur Twake{% endblock %} - -{% block body %} - - Bonjour {{ username|capitalize }}, -
- Vous avez des notifications qui vous attendent sur Twake. -

- Dernières notifications : - - {% for notification in notifications %} -
- il y a {{ notification.delay }} - heure(s) - {{ notification.title }}
- {{ notification.text }} -
- {% endfor %} - -
-
- - Ouvrir Twake - -
-
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/addMail.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/addMail.html.twig deleted file mode 100755 index d3f5b9ed..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/addMail.html.twig +++ /dev/null @@ -1,20 +0,0 @@ -{% extends "Mail/en/all.html.twig" %} - -{% block title %}Подтвердить новую электронную почту{% endblock %} - -{% block secondtitle %}Подтвердить новую электронную почту{% endblock %} - -{% block body %} - - Здравствуйте {{ username|capitalize }}, -
- Чтобы добавить эту электронную почту в свой аккаунт, используйте этот код. : -
-
-
-
- {{ code }} -
-
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/addedToGroupManagersMail.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/addedToGroupManagersMail.html.twig deleted file mode 100755 index e2a8e443..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/addedToGroupManagersMail.html.twig +++ /dev/null @@ -1,14 +0,0 @@ -{% extends "Mail/en/all.html.twig" %} - -{% block title %}Вы были добавлены к менеджерам группы {{ group }}{% endblock %} - -{% block secondtitle %}Вы были добавлены к менеджерам группы {{ group }}{% endblock %} - -{% block body %} - - Здравствуйте {{ username|capitalize }}, -
- Вы были назначены менеджером группы {{ group }}. -
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/addedToWorkspaceMail.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/addedToWorkspaceMail.html.twig deleted file mode 100755 index 046e7814..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/addedToWorkspaceMail.html.twig +++ /dev/null @@ -1,14 +0,0 @@ -{% extends "Mail/en/all.html.twig" %} - -{% block title %}Вы были добавлены в рабочее пространство {{ workspace }} !{% endblock %} - -{% block secondtitle %}Вы были добавлены в рабочее пространство {{ workspace }} !{% endblock %} - -{% block body %} - - Здравствуйте {{ username|capitalize }}, -
- Вы были добавлены в рабочее пространство {{ workspace }} в группе {{ group }}. -
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/all.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/all.html.twig deleted file mode 100755 index 7e47f1b2..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/all.html.twig +++ /dev/null @@ -1,53 +0,0 @@ -{% extends "Mail/all_style.html.twig" %} - -{% block content %} - - - - - - - -
- -
{% block secondtitle %}Hello !{% endblock %}
- - {% block body %}{% endblock %} - -

- До встречи в Twake, -
- команда Twake -
- {{ twakeurl }} - -
- - - -{% endblock %} - diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/changeLevelWorkspaceMail.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/changeLevelWorkspaceMail.html.twig deleted file mode 100755 index a5930ec9..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/changeLevelWorkspaceMail.html.twig +++ /dev/null @@ -1,14 +0,0 @@ -{% extends "Mail/en/all.html.twig" %} - -{% block title %}Ваш статус в {{ workspace }} изменился{% endblock %} - -{% block secondtitle %}Ваш статус в {{ workspace }} изменился{% endblock %} - -{% block body %} - - Здравствуйте {{ username|capitalize }}, -
- Ваш статус в {{ workspace }} (group {{ group }}) был изменён на {{ level }} -
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/event_invitation.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/event_invitation.html.twig deleted file mode 100755 index 28433c1d..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/event_invitation.html.twig +++ /dev/null @@ -1,33 +0,0 @@ -{% extends "Mail/en/all.html.twig" %} - -{% block title %}📅 Twake, вас пригласили на следующее мероприятие.{% endblock %} - -{% block secondtitle %}Twake, вас пригласили на следующее мероприятие.{% endblock %} - -{% block body %} - - Вы были приглашены на следующее мероприятие. -
-
-
- - {% if event.title %} - {{ event.title }}

- {% else %} - Без названия

- {% endif %} - - {% if event.location %} - Где: {{ event.location }}

- {% endif %} - - - Когда: {{ (event.from - (user_timezone_delay*60)) | date('F j, Y, g:i a') }} - - {{ (event.to - (user_timezone_delay*60)) | date('F j, Y, g:i a') }} ({{ user_timezone_text }})

- - Приглашённый: {{ sender_fullname }} {{ sender_email }}

- -
-
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/event_invitation_updated.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/event_invitation_updated.html.twig deleted file mode 100755 index b7ddf439..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/event_invitation_updated.html.twig +++ /dev/null @@ -1,33 +0,0 @@ -{% extends "Mail/en/all.html.twig" %} - -{% block title %}📅 Twake, мероприятие было обновлено.{% endblock %} - -{% block secondtitle %}Twake, мероприятие было обновлено.{% endblock %} - -{% block body %} - - Мероприятие, в котором вы участвуете, было обновлено. -
-
-
- - {% if event.title %} - {{ event.title }}

- {% else %} - Без названия

- {% endif %} - - {% if event.location %} - Где: {{ event.location }}

- {% endif %} - - - Когда: {{ (event.from - (user_timezone_delay*60)) | date('F j, Y, g:i a') }} - - {{ (event.to - (user_timezone_delay*60)) | date('F j, Y, g:i a') }} ({{ user_timezone_text }})

- - Приглашённый: {{ sender_fullname }} {{ sender_email }}

- -
-
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/event_notification.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/event_notification.html.twig deleted file mode 100755 index 6056edb4..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/event_notification.html.twig +++ /dev/null @@ -1,30 +0,0 @@ -{% extends "Mail/en/all.html.twig" %} - -{% block title %}📅 Twake, {{ text }}{% endblock %} - -{% block secondtitle %}Twake, {{ text }}{% endblock %} - -{% block body %} - - Здравствуйте от Twake 👋,
- у вас скоро мероприятие ! -
-
-
- - {% if event.title %} - {{ event.title }}

- {% else %} - Без названия

- {% endif %} - - {% if event.location %} - Где: {{ event.location }}

- {% endif %} - - - Когда: in {{ delay }}

- -
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/inviteToWorkspaceMail.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/inviteToWorkspaceMail.html.twig deleted file mode 100755 index ca169e1e..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/inviteToWorkspaceMail.html.twig +++ /dev/null @@ -1,35 +0,0 @@ -{% extends "Mail/en/all.html.twig" %} - -{% block title %}You have been invited in the workspace {{ workspace }} {% endblock %} - -{% block secondtitle %}You have been invited in the workspace {{ workspace }} of the group {{ group }}{% endblock %} - -{% block body %} - - Здравствуйте, -
- {{ sender_user|capitalize }} ({{ sender_user_mail }}) только что пригласил вас на рабочее пространство - {{ workspace }} в группе {{ group }}. -

- -
-
- - Присоединиться к рабочему пространству сейчас ! - -
-
{{ twakeappurl|trim('/') }}/login?subscribe&mail={{ mail }} -
-
-
-
- - Приглашаем Вас создать новый аккаунт, так как мы не знаем этого адреса электронной почты. -
-
- Если у вас уже есть аккаунт Twake, добавьте - {{ mail }} в списке ваших адресов электронной почты, вы будете автоматически добавлены в это рабочее пространство. - - -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/messages_notifications.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/messages_notifications.html.twig deleted file mode 100755 index 6379e998..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/messages_notifications.html.twig +++ /dev/null @@ -1,34 +0,0 @@ -{% extends "Mail/en/all.html.twig" %} - -{% block title %}У вас {{ total_notifications }} непрочитанный(х) сообщение(я) в Twake{% endblock %} - -{% block secondtitle %}🔔 У вас {{ total_notifications }} непрочитанный(х) сообщение(я) в Twake{% endblock %} - -{% block body %} - - Здравствуйте {{ username|capitalize }}, -
- У вас {{ total_notifications }} непрочитанный(х) сообщение(я) в Twake. -

- Последние сообщения : - - {% for notification in notifications %} -
- {{ notification.delay }} hour(s) ago - {{ notification.title }}
- {{ notification.text }} -
- {% endfor %} - -
-
- - Открыть Twake - -
-
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/newMember.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/newMember.html.twig deleted file mode 100755 index fbf2cd05..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/newMember.html.twig +++ /dev/null @@ -1,14 +0,0 @@ -{% extends "Mail/en/all.html.twig" %} - -{% block title %}Добро пожаловать в Twake !{% endblock %} - -{% block secondtitle %}Добро пожаловать в Twake !{% endblock %} - -{% block body %} - - Здравствуйте {{ username|capitalize }}, -
- Добро пожаловать в Twake, если вам нужна помощь, пожалуйста, свяжитесь со службой поддержки по адресу contact@twakeapp.com . -
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/notification.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/notification.html.twig deleted file mode 100755 index 0320fa4e..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/notification.html.twig +++ /dev/null @@ -1,16 +0,0 @@ -{% extends "Mail/en/all.html.twig" %} - -{% block title %}Twake, новое уведомление от {{ application_name }} в {{ workspace_name }}{% endblock %} - -{% block secondtitle %}Twake, новое уведомление от {{ application_name }} в {{ workspace_name }}{% endblock %} - -{% block body %} - - Здравствуйте {{ username|capitalize }}, -
- У вас есть новое уведомление от {{ application_name }} в рабочем пространстве {{ workspace_name }} -

- {{ text }} -
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/removedFromWorkspaceMail.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/removedFromWorkspaceMail.html.twig deleted file mode 100755 index 998b4e31..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/removedFromWorkspaceMail.html.twig +++ /dev/null @@ -1,14 +0,0 @@ -{% extends "Mail/en/all.html.twig" %} - -{% block title %}Вы были удалены из рабочего пространства {{ workspace }}.{% endblock %} - -{% block secondtitle %}Вы были удалены из рабочего пространства {{ workspace }}.{% endblock %} - -{% block body %} - - Здравствуйте {{ username|capitalize }}, -
- Вы были удалены из рабочего пространства {{ workspace }} в группе {{ group }}. -
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/requestPassword.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/requestPassword.html.twig deleted file mode 100755 index 55afe1a4..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/requestPassword.html.twig +++ /dev/null @@ -1,20 +0,0 @@ -{% extends "Mail/en/all.html.twig" %} - -{% block title %} Ваш запрос нового пароля {% endblock %} - -{% block secondtitle %} Ваш запрос нового пароля {% endblock %} - -{% block body %} - - Здравствуйте {{ username|capitalize }}, -
- Вы запросили новый пароль, вот код активации, который вам нужен : -
-
-
-
- {{ code }} -
-
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/subscribeMail.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/subscribeMail.html.twig deleted file mode 100755 index 7a1792b9..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/subscribeMail.html.twig +++ /dev/null @@ -1,21 +0,0 @@ -{% extends "Mail/en/all.html.twig" %} - -{% block title %}Подтверждение по электронной почте{% endblock %} - -{% block secondtitle %}Подтверждение по электронной почте{% endblock %} - -{% block body %} - - Добро пожаловать в Twake ! -
- Для того, чтобы создать свой аккаунт, вы можете нажать на эту ссылку: -
- {{ twakeappurl|trim('/') }}{{ magic_link }} -
-
- Перейдя по этой ссылке, вы соглашаетесь с условиями - использования twake. -

- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/task_notification.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/task_notification.html.twig deleted file mode 100755 index 007bdb8f..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/task_notification.html.twig +++ /dev/null @@ -1,26 +0,0 @@ -{% extends "Mail/en/all.html.twig" %} - -{% block title %}📋 Twake, {{ text }}{% endblock %} - -{% block secondtitle %}Twake, {{ text }}{% endblock %} - -{% block body %} - - Здравствуйте от Twake 👋,
- напоминание о задаче! -
-
-
- - {% if task.title %} - {{ task.title }}

- {% else %} - Без названия

- {% endif %} - - - Когда: in {{ delay }}

- -
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/unread_notifications.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/unread_notifications.html.twig deleted file mode 100755 index acb7cc34..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/unread_notifications.html.twig +++ /dev/null @@ -1,33 +0,0 @@ -{% extends "Mail/en/all.html.twig" %} - -{% block title %}У вас есть непрочитанные уведомления в Twake{% endblock %} - -{% block secondtitle %}У вас есть непрочитанные уведомления в Twake{% endblock %} - -{% block body %} - - Здравствуйте {{ username|capitalize }}, -
- У вас есть непрочитанные уведомления, которые ждут вас в Twake.. -

- Последние уведомления : - - {% for notification in notifications %} -
- {{ notification.delay }} hour(s) ago - {{ notification.title }}
- {{ notification.text }} -
- {% endfor %} - -
-
- - Открыть Twake - -
-
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Services/AccessManager.php b/twake/backend/core/src/Twake/Core/Services/AccessManager.php deleted file mode 100755 index 1077bc09..00000000 --- a/twake/backend/core/src/Twake/Core/Services/AccessManager.php +++ /dev/null @@ -1,267 +0,0 @@ -app = $app; - $this->rest = $app->getServices()->get("app.restclient"); - $this->doctrine = $app->getServices()->get("app.twake_doctrine"); - $this->memberservice = $app->getServices()->get("app.workspace_members"); - $this->emojione_client = new Client(new Ruleset()); - } - - public function has_access($current_user_id, $data, $options = null) - { - if ($current_user_id && !is_string($current_user_id)) { - $current_user_id = $current_user_id->getId(); - } - - $type = @$data["type"]; - $edition = @$data["edition"]; //TODO test if we have edition access (everybodyhas edition acess for now) - $id = @$data["object_id"]; - - - //FONCTION POUR SAVOIR SI UN UTILISATEUR A ACCES A QUELQUE CHOSE - - - if ($type == "Workspace") { - if (!$this->user_has_workspace_access($current_user_id, $id)) { - return false; - } - } else if ($type == "Channel") { - - //Use new node backend for this and cache result - $userId = $current_user_id; - $channelId = $id; - - $getChannelCache = false; - $channelDetails = $this->doctrine->getRepository("Twake\Core:CachedFromNode")->findOneBy(Array("company_id" => "unused", "type" => "channel", "key"=>$channelId)); - if($channelDetails){ - $companyId = $channelDetails->getData()["company_id"]; - $workspaceId = $channelDetails->getData()["workspace_id"]; - if($channelDetails->getData()["last_update"] < date("U") - 0 * 60 * 60){ - $getChannelCache = true; - } - }else{ - $getChannelCache = true; - } - $getChannelCache = true; - - if($options["company_id"] && $options["workspace_id"]){ - $companyId = $options["company_id"]; - $workspaceId = $options["workspace_id"]; - } - - $cacheKey = $userId."_".$channelId; - $data = $this->doctrine->getRepository("Twake\Core:CachedFromNode")->findOneBy(Array("company_id" => "unused", "type" => "access_channel", "key"=>$cacheKey)); - if(!$data || !$data->getData()["has_access"]){ - - try{ - - $res = $this->callNode( - "companies/".$companyId."/workspaces/".$workspaceId."/". - "channels/".$channelId."/members/".$userId."/exists" - ); - - try{ - - if($res && isset($res["has_access"])){ - - $hasAccess = $res["has_access"] == true; - - if($getChannelCache){ - $this->getChannelCache($companyId, $workspaceId, $channelId); - } - - } - - }catch(\Exception $err){ - error_log($err); - } - - $cache = new CachedFromNode("unknown", "access_channel", $cacheKey, [ - "has_access" => $hasAccess - ]); - $this->doctrine->persist($cache); - $this->doctrine->flush(); - - return $hasAccess; - - - }catch(\Exception $err){ - error_log($err); - } - - return false; - } - - return true; - - } else if ($type == "Message") { - $message = $this->doctrine->getRepository("Twake\Discussion:Message")->findOneBy(Array("id" => $id)); - if (isset($message)) { - $message = $message->getAsArray(); - $channel_id = $message["channel_id"]; - $data = Array("type" => "Channel", "object_id" => $channel_id); - if (!$this->has_access($current_user_id, $data)) { - return false; - } - } else { - return false; - } - } else if ($type == "DriveFile") { //Read parent id and detached from file to get access - - if ($id == "root" || $id == "trash" || $id == "") { - if (!$data["workspace_id"]) { - return false; - } - return $this->has_access($current_user_id, Array("type" => "Workspace", "object_id" => $data["workspace_id"])); - } - - if (!$id) { - return false; - } - $df = $this->doctrine->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $id)); - - if ($df) { - - $df = $df->getAsArray(); - $workspace_id = $df["workspace_id"]; - - // Public access token - if (!empty($df["acces_info"]["token"]) && !empty($options["token"]) && $df["acces_info"]["token"] != $options["token"]) { - return false; - } - if (isset($df["acces_info"]["token"]) && $df["acces_info"]["token"] == "" && isset($options["token"]) && $options["token"] == "") { - return false; - } - if (isset($df["acces_info"]["token"]) && isset($options["token"]) && $df["acces_info"]["token"] == $options["token"]) { - return true; - } - - //In this case only members authorized can see the directory - if (isset($df["acces_info"]["authorized_members"]) && is_array($df["acces_info"]["authorized_members"])) { - if (in_array($current_user_id, $df["acces_info"]["authorized_members"])) { - return true; - } else { - return false; - } - } - - //In this case defined has special access authorization - if (isset($df["acces_info"]["authorized_channels"]) && is_array($df["acces_info"]["authorized_channels"])) { - $channels = $df["acces_info"]["authorized_channels"]; - $access = false; - foreach ($channels as $channel) { - $data = Array("type" => "Channel", "object_id" => $channel); - if ($this->has_access($current_user_id, $data)) { - $access = true; - } - } - if ($access) { - return true; - } - } - - //Access to workspace - if (!$workspace_id) { - return true; - } else { - if ($this->user_has_workspace_access($current_user_id, $data["workspace_id"] ?: $workspace_id)) { - return true; - } - } - - } - - return false; - - } else if ($type == "Calendar") { //pensez au parent id tous ca tous ca et a detached - $calendar = $this->doctrine->getRepository("Twake\Calendar:Calendar")->findOneBy(Array("id" => $id)); - if (isset($calendar)) { - $calendar = $calendar->getAsArray(); - $workspace_id = $calendar["workspace_id"]; - if (!$this->user_has_workspace_access($current_user_id, $workspace_id)) { - return false; - } - } else { - return false; - } - } - - - return true; - } - - public function user_has_workspace_access($current_user_id, $workspace_id) - { - return $this->doctrine->getRepository("Twake\Workspaces:WorkspaceUser")->findOneBy(Array("workspace_id" => $workspace_id, "user_id" => $current_user_id)); - } - - private function callNode($route){ - $secret = $this->app->getContainer()->getParameter("node.secret"); - $uri = $this->app->getContainer()->getParameter("node.api") . - $route; - - $res = $this->rest->get($uri, [ - CURLOPT_HTTPHEADER => Array( - "Authorization: Token ".$secret, - "Content-Type: application/json" - ), - CURLOPT_CONNECTTIMEOUT => 1, - CURLOPT_TIMEOUT => 1 - ]); - $res = $res->getContent(); - $res = json_decode($res, 1); - return $res; - } - - public function getChannelCache($companyId, $workspaceId, $channelId){ - $path = "companies/".$companyId - ."/workspaces/".$workspaceId."/" - ."channels/".$channelId; - - if(!$workspaceId){ - $path = "companies/".$companyId - ."/channels/".$channelId; - } - - $resChannel = $this->callNode($path); - - $name = $resChannel["icon"] . " " . $resChannel["name"]; - if($resChannel["workspace_id"] === "direct"){ - $name = ""; - } - - $name = html_entity_decode($this->emojione_client->shortnameToUnicode($name), ENT_NOQUOTES, 'UTF-8'); - - $workspaceId = $workspaceId ?: $resChannel["workspace_id"]; - - $workspace = $this->doctrine->getRepository("Twake\Workspaces:Workspace")->findOneBy(Array("id" => $workspaceId)); - $group = $this->doctrine->getRepository("Twake\Workspaces:Group")->findOneBy(Array("id" => $companyId)); - $workspaceName = $workspace ? $workspace->getName() : ""; - $companyName = $group ? $group->getDisplayName() : ""; - - $cacheChannel = new CachedFromNode("unused", "channel", $resChannel["id"], [ - "company_id" => $resChannel["company_id"], - "workspace_id" => $resChannel["workspace_id"], - "channel_id" => $resChannel["id"], - "is_direct" => $resChannel["workspace_id"] === "direct", - "name" => $name, - "workspace_name" => $workspaceName, - "company_name" => $companyName, - "last_update" => date("U") - ]); - $this->doctrine->persist($cacheChannel); - $this->doctrine->flush(); - } - -} diff --git a/twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/DBAL/Driver/PDOCassandra/CassandraConnection.php b/twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/DBAL/Driver/PDOCassandra/CassandraConnection.php deleted file mode 100755 index 6a256876..00000000 --- a/twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/DBAL/Driver/PDOCassandra/CassandraConnection.php +++ /dev/null @@ -1,540 +0,0 @@ -list = $list; - $this->pointer = 0; - } - - public function next() - { - $this->pointer++; - } - - public function rewind() - { - $this->pointer = 0; - } - - public function current() - { - if (!$this->list || !isset($this->list[$this->pointer])) { - return null; - } - return $this->list[$this->pointer]; - } - - public function count() - { - return count($this->list); - } - - public function isLastPage() - { - return true; - } - -} - -class PDOStatementAdapter -{ - - public function __construct() - { - $this->values = Array(); - $this->data = null; - } - - public function setQuery($query, $executor) - { - $this->executor = $executor; - $this->query = $query; - } - - public function setData($data) - { - $this->data = $data; - } - - public function setFetchMode($mode) - { - } - - public function fetchColumn($position) - { - $res = $this->data->current(); - $this->data->next(); - $res = $res[array_keys($res)[$position]]; - return $this->stripslashesCell($res); - } - - protected function stripslashesCell($obj = "") - { - if (is_string($obj)) { - $obj = stripslashes($obj); - } - return $obj; - } - - public function fetchAll($fetch_style, $fetch_argument = null, $ctor_args = array()) - { - $res = Array(); - - while ($row) { - $row = $this->fetch(); - if ($row) { - $res[] = $row; - } - } - - return $res; - } - - public function fetch() - { - if (!$this->data) { - return null; - } - $res = $this->data->current(); - $this->data->next(); - - if (!$this->data->current() && !$this->data->isLastPage()) { - $this->data = $this->data->nextPage(); - } - - return $this->stripslashesRow($res); - } - - protected function stripslashesRow($obj = Array()) - { - if (!is_array($obj)) { - return $obj; - } - foreach ($obj as $key => $value) { - $obj[$key] = $this->stripslashesCell($value); - } - return $obj; - } - - public function rowCount() - { - if (!$this->data) { - return 0; - } - $res = $this->data->count(); - return $res; - } - - public function bindValue($parameter, $value, $type) - { - $this->types[$parameter] = $type; - $this->values[$parameter] = $value; - } - - public function execute($parameters = Array()) - { - $query = $this->query; - - //lowercase columns - $query = preg_replace_callback('/ ([a-zA-Z0-9_]+ +)AS /', function ($match) { - return ' ' . strtolower($match[1]) . ' AS '; - }, $query); - $query = preg_replace_callback('/ ([a-zA-Z0-9_]+ +)([^a-zA-Z0-9_]{1,2}) *\?/', function ($match) { - return ' ' . strtolower($match[1]) . ' ' . $match[2] . ' ?'; - }, $query); - - $query_explode = explode("?", $query); - $query = ""; - - $there_is_a_counter = false; - - foreach ($query_explode as $position => $query_part) { - - if ($position == count($query_explode) - 1) { - - $query .= $query_explode[count($query_explode) - 1]; - - } else { - - $value = $this->values[$position + 1]; - - if ($this->types[$position + 1] == "twake_boolean") { - $value = (!$value) ? "0" : "1"; //Cassandra booleans are tiny ints - } else if ($this->types[$position + 1] == "twake_bigint") { - $value = intval($value); - } else if ($this->types[$position + 1] == "twake_counter") { - $there_is_a_counter = $position; - preg_match("/([a-z_]+) *= *$/", $query_part, $matches); - if (isset($matches[1])) { - $column_name = $matches[1]; - if ($value > 0) { - $value = $column_name . " + " . $value; - } else { - $value = $column_name . " - " . $value; - } - } else { - $value = $value; - } - } else if ($value == NULL && !is_string($value)) { - $value = "NULL"; - } else if ($this->types[$position + 1] == \PDO::PARAM_INT || $this->types[$position + 1] == "twake_timeuuid" || $this->types[$position + 1] == "twake_uuid" || $this->types[$position + 1] == "twake_bigint") { - if ($value . "" != "" && preg_replace("/[0-9]/", "", $value) == "") { - $value = $value; - } else if (preg_match('/^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}$/', $value)) { - $value = $value; - } else { - $value = "00000000-0000-1000-0000-000000000000"; - } - } else if (is_string($value) || (is_object($value) && method_exists($value, 'toCqlString')) || $this->types[$position + 1] == "twake_string") { - $value = addslashes($value); - $value = str_replace("'", "''", $value); - $value = "'" . $value . "'"; - } - - $query .= $query_part . "" . $value; - - } - } - - $query = preg_replace("/ +IS +NULL( |$)/", " = NULL ", $query); - - - if ($there_is_a_counter !== false && preg_match("/^INSERT/", $query)) { - - //Change INSERTS to UPDATES - $pos = $there_is_a_counter; - preg_match("/^ *INSERT +INTO +([a-z_]+) +\(([a-z_ ,]+)\) +values +\((.*)\) *$/", $query, $matches); - $table = $matches[1]; - $parameters = explode(",", $matches[2]); - $values = explode(",", $matches[3]); - $increment_value = $values[$pos]; - if ($increment_value >= 0) { - $increment_value = " + " . intval($increment_value); - } - $new_query = "UPDATE " . $table . " SET " . $parameters[$pos] . " = " . $parameters[$pos] . " " . $increment_value . " WHERE "; - - $first = true; - foreach ($parameters as $k => $parameter) { - if ($k != $pos) { - if (!$first) $new_query .= " AND "; - $new_query .= $parameter . " = " . $values[$k]; - $first = false; - } - } - - $query = $new_query; - - } - - try { - $this->executor->exec($query, $this); - } catch (\Exception $e) { - $message = "SCYLLADB > AN ERROR OCCURED WITH THIS QUERY : " . preg_replace("/AS .* FROM/", "AS [...] FROM", $query); - error_log($message); - error_log($e); - } - - } - - public function closeCursor() - { - - } - -} - -class CassandraConnection -{ - - private $use_ttl = null; - /** @var App */ - private $app = null; - - public function __construct($keyspace, $username, $password, $driverOptions) - { - - $this->cluster = Cassandra::cluster() - ->withContactPoints($driverOptions["host"]); - - if ($driverOptions["ssl"]) { - $ssl = Cassandra::ssl() - ->withTrustedCerts($driverOptions["ssl"]["node_certificate"]) - ->withVerifyFlags(Cassandra::VERIFY_PEER_CERT) - ->build(); - $this->cluster = $this->cluster - ->withSSL($ssl); - } - - if ($driverOptions["port"]) { - $this->cluster = $this->cluster - ->withPort($driverOptions["port"]); - } - - if ($driverOptions["user"]) { - $this->cluster = $this->cluster - ->withCredentials($driverOptions["user"], $driverOptions["password"]); - } - - $this->cluster = $this->cluster - ->build(); - - try { - $this->session = $this->cluster->connect(strtolower($keyspace)); - } catch (\Exception $e) { - $this->session = $this->cluster->connect(); - - error_log("Prepare keyspace creation"); - - $statement = new Cassandra\SimpleStatement( - "CREATE KEYSPACE IF NOT EXISTS " . strtolower($keyspace) . " WITH replication = " . ($driverOptions["replication"] ?: "{'class': 'SimpleStrategy', 'replication_factor': '1'}") - ); - $future = $this->session->executeAsync($statement); - $future->get(); - - error_log("Did create keyspace"); - - $this->session = $this->cluster->connect(strtolower($keyspace)); - } - - $this->keyspace = $keyspace; - $this->view_to_use = null; - } - - public function setApp(App $app) - { - $this->app = $app; - } - - public function changeTableToView($view_to_use) - { - $this->view_to_use = $view_to_use; - } - - public function useTTLOnFirstInsert($ttl) - { - $this->use_ttl = $ttl; - } - - public function getSchema() - { - return $this->session->schema(); - } - - public function getKeyspace() - { - return $this->keyspace; - } - - public function beginTransaction() - { - return true; - } - - public function commit() - { - return true; - } - - public function rollBack() - { - return true; - } - - function prepare($prepareString) - { - $prepareString = $this->removeTableAlias($prepareString); - $prepareString_cql = $this->normalizeCount($prepareString); - $prepareString = new PDOStatementAdapter(); - $prepareString->setQuery($prepareString_cql, $this); - return $prepareString; - } - - /** - * Cassandra does not support table alias. Let's remove them - */ - private function removeTableAlias($sql) - { - //clean up extra space - $sql = trim(preg_replace('/\s+/', ' ', $sql)); - $arrSplitByFROM = explode('FROM ', $sql, 2); - if (count($arrSplitByFROM) >= 2) { - $arrSplit4TableAlias = explode(' ', trim($arrSplitByFROM[1]), 3); - if (count($arrSplit4TableAlias) >= 2 - && strtoupper($arrSplit4TableAlias[1]) != 'WHERE') { - //replace table alias and merge stuff - $alias = $arrSplit4TableAlias[1]; - $arrSplit4TableAlias[1] = ''; - $arrSplitByFROM[0] = str_replace($alias . '.', '', $arrSplitByFROM[0]); - $arrSplitByFROM[1] = implode(' ', $arrSplit4TableAlias); - $arrSplitByFROM[1] = str_replace($alias . '.', '', $arrSplitByFROM[1]); - return implode('FROM ', $arrSplitByFROM); - } - - } - return $sql; - } - - /** - * For COUNT(), Cassandra only allows two formats: COUNT(1) and COUNT(*) - */ - private function normalizeCount($sql) - { - $sql = trim(preg_replace('/COUNT\(.*\)/i', 'COUNT(1)', $sql)); - return $sql; - } - - public function exec($cql, $pdoStatement = null) - { - return $this->query($cql, $pdoStatement); - } - - /** - * {@inheritdoc}non-PHPdoc) - */ - public function query($cql = null, $pdoStatement = null) - { - if ($this->app) $this->app->getCounter()->startTimer("cql_time"); - if ($this->app) $is_cassandra = $this->app->getContainer()->getParameter("db.is_cassandra", false); - - $view_to_use = false; - if ($this->view_to_use) { - $view_to_use = $this->view_to_use . "_custom_index"; - if($is_cassandra){ - $view_to_use = "index_".md5($view_to_use); - } - } - $this->view_to_use = null; - - if ($view_to_use) { - $_cql = preg_replace("/ FROM [a-z_\-0-9]+ /", " FROM " . $view_to_use . " ", $cql); - $_cql = preg_replace("/ *SELECT .* FROM /", "SELECT * FROM ", $_cql); - - $results = $this->query($_cql, $pdoStatement); - $row = true; - $ids = []; - $list = []; - while ($row) { - $row = $results->fetch(\PDO::FETCH_ASSOC); - if ($row && isset($row["id"])) { - $ids[] = $row["id"]->uuid(); - } - } - foreach ($ids as $id) { - $__cql = preg_replace("/ WHERE .*$/", " WHERE id = " . $id, $cql); - $result = $this->query($__cql, $pdoStatement)->fetch(\PDO::FETCH_ASSOC); - $list[] = $result; - } - - if (!$pdoStatement) { - $pdo = new PDOStatementAdapter(); - } else { - $pdo = $pdoStatement; - } - - - $pdo->setData(new FakeCassandraRows($list)); - if ($this->app) $this->app->getCounter()->stopTimer("cql_time"); - - return $pdo; - - } else { - - $sql = $this->removeTableAlias($cql); - $sql = $this->normalizeCount($sql); - $sql = $this->removeCQLUnallowedKeys($sql); - if ($this->use_ttl && $this->use_ttl > 0) { - $sql = $this->addTTL($sql, $this->use_ttl); - } - $this->use_ttl = null; - - if ($sql == "SELECT uuid()") { - $sql = "select now() from system.local"; - } - - if ($this->app) $this->app->getCounter()->incrementCounter("cql_requests"); - - $future = $this->session->executeAsync($sql); - if (!$pdoStatement) { - $pdo = new PDOStatementAdapter(); - } else { - $pdo = $pdoStatement; - } - - - $rows = $future->get(); - $pdo->setData($rows); - - if ($this->app) $this->app->getCounter()->stopTimer("cql_time"); - - return $pdo; - - } - } - - private function removeCQLUnallowedKeys($sql) - { - - $keys = Array( - "token", - "from", - "to", - "default" - ); - - $sql = explode('FROM ', $sql, 2); - if (isset($sql[1])) { //There is a FROM - foreach ($keys as $key) { - $sql[0] = preg_replace('/([^a-z_-])' . preg_quote($key, '/') . '([^a-z_-])/', '$1"' . $key . '"$2', $sql[0]); - } - } - $sql = join("FROM ", $sql); - - $sql = explode(') VALUES ', $sql, 2); - if (isset($sql[1])) { //There is a FROM - foreach ($keys as $key) { - $sql[0] = preg_replace('/([^a-z_-])' . preg_quote($key, '/') . '([^a-z_-])/', '$1"' . $key . '"$2', $sql[0]); - } - } - $sql = join(") VALUES ", $sql); - - $sql = explode('WHERE ', $sql, 2); - if (isset($sql[1])) { //There is a WHERE - $sql[1] = " " . $sql[1]; - foreach ($keys as $key) { - $sql[1] = preg_replace('/([^a-z_-])' . preg_quote($key, '/') . ' *=/', '$1"' . $key . '" =', $sql[1]); - } - } - $sql = join("WHERE ", $sql); - - - foreach ($keys as $key) { - $sql = preg_replace('/\(' . preg_quote($key, '/') . '\)/', '("' . $key . '")', $sql); - } - - - return $sql; - } - - private function addTTL($sql, $ttl) - { - if (!$ttl || intval($ttl) < 1) { - return; - } - if (strpos($sql, "INSERT ") === 0) { - $sql = preg_replace("/; *$/", "", $sql); - $sql = $sql . " USING TTL " . intval($ttl) . " "; - $sql = $sql . ";"; - } - return $sql; - } - - -} diff --git a/twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/DBAL/Driver/PDOCassandra/Driver.php b/twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/DBAL/Driver/PDOCassandra/Driver.php deleted file mode 100755 index 07fbae70..00000000 --- a/twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/DBAL/Driver/PDOCassandra/Driver.php +++ /dev/null @@ -1,80 +0,0 @@ -cassandra_connection = $conn; - return $conn; - } - - public function getConnection() - { - return $this->cassandra_connection; - } - - public function getDatabasePlatform() - { - return new CassandraPlatform(); - } - - public function getSchemaManager(\Doctrine\DBAL\Connection $conn) - { - return new CassandraSchemaManager($conn); - } - - public function getName() - { - return 'pdo_cassandra'; - } - - public function getDatabase(\Doctrine\DBAL\Connection $conn) - { - $params = $conn->getParams(); - - if (isset($params['dbname'])) { - return $params['dbname']; - } - return null; - } - - private function _constructPdoDsn(array $params) - { - $dsn = 'cassandra:'; - $arrHosts = array(); - $arrPorts = array(); - if (isset($params['host']) && $params['host'] != '') { - $arrHosts = explode(',', $params['host']); - } - if (isset($params['port'])) { - $arrPorts = explode(',', $params['port']); - } - for ($i = 0; $i < count($arrHosts); $i++) { - $dsn .= 'host=' . $arrHosts[$i] . ';'; - $dsn .= 'port=' . $arrPorts[$i]; - $dsn .= ($i == count($arrHosts) - 1) ? ';' : ','; - } - if (isset($params['cqlversion'])) { - $dsn .= 'cqlversion=' . $params['cqlversion'] . ';'; - } - return $dsn; - } -} diff --git a/twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/DBAL/DriverManager.php b/twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/DBAL/DriverManager.php deleted file mode 100755 index c360fb63..00000000 --- a/twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/DBAL/DriverManager.php +++ /dev/null @@ -1,143 +0,0 @@ - 'Twake\Core\Services\DoctrineAdapter\DBAL\Driver\PDOCassandra\Driver', - ); - - public static function getConnection( - array $params, - Configuration $config = null, - EventManager $eventManager = null) - { - // create default config and event manager, if not set - if (!$config) { - $config = new Configuration(); - } - if (!$eventManager) { - $eventManager = new EventManager(); - } - - $params = self::parseDatabaseUrl($params); - - // check for existing pdo object - if (isset($params['pdo']) && !$params['pdo'] instanceof \PDO) { - throw DBALException::invalidPdoInstance(); - } else if (isset($params['pdo'])) { - $params['pdo']->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION); - $params['driver'] = 'pdo_' . $params['pdo']->getAttribute(\PDO::ATTR_DRIVER_NAME); - } else { - self::_checkParams($params); - } - if (isset($params['driverClass'])) { - $className = $params['driverClass']; - } else { - $className = self::$_driverMap[$params['driver']]; - } - - $driver = new $className(); - - $wrapperClass = 'Doctrine\DBAL\Connection'; - if (isset($params['wrapperClass'])) { - if (is_subclass_of($params['wrapperClass'], $wrapperClass)) { - $wrapperClass = $params['wrapperClass']; - } else { - throw DBALException::invalidWrapperClass($params['wrapperClass']); - } - } - if (self::$instance === null) { - self::$instance = 1; - //add new types - foreach ($params["twake_types"] as $name => $class) { - Type::addType($name, $class); - } - } - - return new $wrapperClass($params, $driver, $config, $eventManager); - } - - private static function parseDatabaseUrl(array $params) - { - if (!isset($params['url'])) { - return $params; - } - - // (pdo_)?sqlite3?:///... => (pdo_)?sqlite3?://localhost/... or else the URL will be invalid - $url = preg_replace('#^((?:pdo_)?sqlite3?):/' . '/' . '/#', '$1:/' . '/localhost/', $params['url']); - - $url = parse_url($url); - - if ($url === false) { - throw new DBALException('Malformed parameter "url".'); - } - - if (isset($url['scheme'])) { - $params['driver'] = str_replace('-', '_', $url['scheme']); // URL schemes must not contain underscores, but dashes are ok - } - - if (isset($url['host'])) { - $params['host'] = $url['host']; - } - if (isset($url['port'])) { - $params['port'] = $url['port']; - } - if (isset($url['user'])) { - $params['user'] = $url['user']; - } - if (isset($url['pass'])) { - $params['password'] = $url['pass']; - } - - if (isset($url['path'])) { - if (!isset($url['scheme']) || (strpos($url['scheme'], 'sqlite') !== false && $url['path'] == ':memory:')) { - $params['dbname'] = $url['path']; // if the URL was just "sqlite::memory:", which parses to scheme and path only - } else { - $params['dbname'] = substr($url['path'], 1); // strip the leading slash from the URL - } - } - - if (isset($url['query'])) { - $query = array(); - parse_str($url['query'], $query); // simply ingest query as extra params, e.g. charset or sslmode - $params = array_merge($params, $query); // parse_str wipes existing array elements - } - - return $params; - } - - private static function _checkParams(array $params) - { - // check existence of mandatory parameters - - // driver - if (!isset($params['driver']) && !isset($params['driverClass'])) { - throw DBALException::driverRequired(); - } - - // check validity of parameters - - // driver - if (isset($params['driver']) && !isset(self::$_driverMap[$params['driver']])) { - throw DBALException::unknownDriver($params['driver'], array_keys(self::$_driverMap)); - } - - if (isset($params['driverClass']) && !in_array('Doctrine\DBAL\Driver', class_implements($params['driverClass'], true))) { - throw DBALException::invalidDriverClass($params['driverClass']); - } - } - - public static function getAvailableDrivers() - { - return array_keys(self::$_driverMap); - } -} diff --git a/twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/DBAL/Platforms/CassandraPlatform.php b/twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/DBAL/Platforms/CassandraPlatform.php deleted file mode 100755 index 8ad3fa46..00000000 --- a/twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/DBAL/Platforms/CassandraPlatform.php +++ /dev/null @@ -1,242 +0,0 @@ -_getCommonIntegerTypeDeclarationSQL($field); - } - - protected function _getCommonIntegerTypeDeclarationSQL(array $columnDef) - { - return ''; - } - - public function getBigIntTypeDeclarationSQL(array $field) - { - return 'bigint' . $this->_getCommonIntegerTypeDeclarationSQL($field); - } - - public function getSmallIntTypeDeclarationSQL(array $field) - { - return 'int' . $this->_getCommonIntegerTypeDeclarationSQL($field); - } - - public function getAdvancedForeignKeyOptionsSQL(ForeignKeyConstraint $foreignKey) - { - return ''; - } - - public function getName() - { - return 'cassandra'; - } - - public function getReadLockSQL() - { - return ''; - } - - public function supportsTransactions() - { - return false; - } - - public function getColumnDeclarationSQL($name, array $field) - { - if (isset($field['columnDefinition'])) { - $columnDef = $this->getCustomTypeDeclarationSQL($field); - } else { - $default = $this->getDefaultValueDeclarationSQL($field); - $check = (isset($field['check']) && $field['check']) ? - ' ' . $field['check'] : ''; - - /** @var \Doctrine\DBAL\Types\Type $type */ - $type = $field['type']; - $typeDecl = $type->getSqlDeclaration($field, $this); - $columnDef = $typeDecl; - } - - return $name . ' ' . $columnDef; - } - - public function getVarcharMaxLength() - { - return 65535; - } - - protected function doModifyLimitQuery($query, $limit, $offset) - { - if ($limit !== null) { - $query .= ' LIMIT ' . $limit; - } - return $query; - } - - protected function getVarcharTypeDeclarationSQLSnippet($length, $fixed) - { - return 'varchar'; - } - - protected function getReservedKeywordsClass() - { - return 'Twake\Core\Services\DoctrineAdapter\DBAL\Platforms\Keywords\CassandraKeywords'; - } - - protected function _getCreateTableSQL($tableName, array $columns, array $options = array()) - { - $queryFields = $this->getColumnDeclarationListSQL($columns); - - // attach all primary keys - if (isset($options['primary']) && !empty($options['primary'])) { - $keyColumns = array_unique(array_values($options['primary'])); - $queryFields .= ', PRIMARY KEY(' . implode(', ', $keyColumns) . ')'; - } - - $query = 'CREATE TABLE ' . $tableName . ' (' . $queryFields . ') '; - $sql[] = $query; - return $sql; - } - - /** - * http://doctrine-orm.readthedocs.org/en/latest/reference/basic-mapping.html - */ - protected function initializeDoctrineTypeMappings() - { - $this->doctrineTypeMapping = array( - 'ascii' => 'string', - 'bigint' => 'bigint', - 'blob' => 'blob', - 'boolean' => 'boolean', - 'counter' => 'bigint', - 'decimal' => 'decimal', - 'double' => 'twake_float', - 'float' => 'twake_float', - 'inet' => 'string', - 'int' => 'integer', - 'list' => 'object', - 'map' => 'string', - 'set' => 'string', - 'text' => 'string', - 'timestamp' => 'twake_datetime', - 'timeuuid' => 'guid', - 'tuple' => 'object', - 'uuid' => 'guid', - 'varchar' => 'string', - 'varint' => 'bigint' - ); - } - -} diff --git a/twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/DBAL/Platforms/Keywords/CassandraKeywords.php b/twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/DBAL/Platforms/Keywords/CassandraKeywords.php deleted file mode 100755 index b8e30f98..00000000 --- a/twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/DBAL/Platforms/Keywords/CassandraKeywords.php +++ /dev/null @@ -1,83 +0,0 @@ -_platform->getDoctrineTypeMapping($dbType); - $options = array(); - return new Column($tableColumn['field'], Type::getType($type), $options); - } -} diff --git a/twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/DBAL/Types/CassandraBigIntType.php b/twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/DBAL/Types/CassandraBigIntType.php deleted file mode 100755 index dd85d7b5..00000000 --- a/twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/DBAL/Types/CassandraBigIntType.php +++ /dev/null @@ -1,16 +0,0 @@ -value(); - } - - $res = false; - try { - $res = ((!$value) ? false : true); - } catch (\Exception $e) { - } - - return $res; - } - - /** - * It's best to let PDO driver guess the binding type rather than forcing to string - */ - public function getBindingType() - { - return "twake_boolean"; - } -} diff --git a/twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/DBAL/Types/CassandraCounterType.php b/twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/DBAL/Types/CassandraCounterType.php deleted file mode 100755 index df292649..00000000 --- a/twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/DBAL/Types/CassandraCounterType.php +++ /dev/null @@ -1,25 +0,0 @@ -getDateTimeFormatString(), $value); - if (!$val) { - $value = $this->getDateStringFromHex($value); - $val = \DateTime::createFromFormat($platform->getDateTimeFormatString(), $value); - } - if (!$val) { - throw ConversionException::conversionFailedFormat($value, $this->getName(), $platform->getDateTimeFormatString()); - } - - return $val; - } - - /** - * @param $str - * @return bool|string - */ - public function getDateStringFromHex($str) - { - if (is_numeric("" . $str)) { - $time = intval("" . $str) / 1000; - return date('Y-m-d H:i:s', $time); - } else { - $date = unpack('H*', $str); - $time = hexdec($date[1]) / 1000; - return date('Y-m-d H:i:s', $time); - } - } - - public function convertToDatabaseValue($value, AbstractPlatform $platform) - { - - if ($value === null || is_string($value)) { - return $value; - } - - $val = null; - - if ($value instanceof \DateTime) { - $val = $value->format($platform->getDateTimeFormatStringToDatabase()); - } - - if (!$val) { - throw ConversionException::conversionFailedFormat( - $value, - $this->getName(), - $platform->getDateTimeFormatStringToDatabase() - ); - } - - return $val; - } - - -} diff --git a/twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/DBAL/Types/CassandraFloatType.php b/twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/DBAL/Types/CassandraFloatType.php deleted file mode 100755 index fcf7895c..00000000 --- a/twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/DBAL/Types/CassandraFloatType.php +++ /dev/null @@ -1,17 +0,0 @@ -getVarcharTypeDeclarationSQL( - array( - 'length' => '42' - ) - ); - } - - public function convertToPHPValue($value, AbstractPlatform $platform) - { - if (empty($value)) { - return null; - } - - if ($value instanceof UuidInterface) { - return $value; - } - - try { - return parent::convertToPHPValue(hex2bin(str_replace("-", "", $value)), $platform); - } catch (InvalidArgumentException $e) { - throw ConversionException::conversionFailed($value, self::NAME); - } - } - - public function convertToDatabaseValue($value, AbstractPlatform $platform) - { - if (empty($value)) { - return null; - } - - try { - if (is_string($value) || method_exists($value, '__toString') || $value instanceof UuidInterface) { - $value = bin2hex(parent::convertToDatabaseValue($value, $platform)); - if(!preg_match("/[^a-f0-9-]/", $value)){ - return $value; - }else{ - return null; - } - } - } catch (InvalidArgumentException $e) { - // Ignore the exception and pass through. - } - - throw ConversionException::conversionFailed($value, self::NAME); - } - -} - - - diff --git a/twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/DBAL/Types/MysqlUUIDType.php b/twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/DBAL/Types/MysqlUUIDType.php deleted file mode 100755 index 046f7437..00000000 --- a/twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/DBAL/Types/MysqlUUIDType.php +++ /dev/null @@ -1,37 +0,0 @@ -secretKey = $key; - $this->iv = "twake_constantiv"; - } - - public function convertToPHPValue($original_data, AbstractPlatform $platform) - { - $data = $this->v2Decrypt($original_data); - if(!$data["done"]){ - $data = $this->v1Decrypt($original_data); - } - if(!$data["done"]){ - $data = ["data" => $this->legacyDecrypt($original_data)]; - } - return $data["data"]; - } - - public function convertToDatabaseValue($data, AbstractPlatform $platform) - { - if (!$data) { - return $data; - } - - if ($this->searchable) { - $iv = $this->iv; - $salt = ""; - } else { - $iv = openssl_random_pseudo_bytes(16); - $salt = bin2hex(openssl_random_pseudo_bytes(16)); - } - - $encoded = "encrypted_" . trim( - base64_encode( - openssl_encrypt( - $data, - "AES-256-CBC", - $this->secretKey . $salt, - true, - $iv - ) - ) - ); - - if (!$this->searchable) { - $encoded .= "_" . $salt . "_" . base64_encode($iv); - } - - return $encoded; - - } - - public function getSQLDeclaration(array $fieldDeclaration, AbstractPlatform $platform) - { - return "TEXT"; - } - - public function v2Decrypt($data){ - $key = substr(hash("sha256", unpack("H*", $this->secretKey)[1]), 0, 32); - $encryptedArray = explode(":", $data); - - if (!count($encryptedArray) || count($encryptedArray) !== 3) { - return [ - "data" => $data, - "done" => false, - ]; - } - - $iv = base64_decode($encryptedArray[0]); - if ($encryptedArray[0] === "0000000000000000") { - $iv = "0000000000000000"; - } - - try { - $tag = base64_decode($encryptedArray[1]); - $str = openssl_decrypt(base64_decode($encryptedArray[2]), 'aes-256-gcm', $key, OPENSSL_RAW_DATA, $iv, $tag); - $decrypt = json_decode($str); - - return [ - "data" => $decrypt, - "done" => true, - ]; - } catch (Error $err) { - return [ - "data" => $data, - "done" => false, - ]; - } - } - - public function v1Decrypt($data){ - $key = substr(base64_encode(hash("sha256", unpack("H*", $this->secretKey)[1], true)), 0, 32); - $encryptedArray = explode(":", $data); - - if (!count($encryptedArray) || count($encryptedArray) !== 2) { - return [ - "data" => $data, - "done" => false, - ]; - } - - try { - - $iv = @hex2bin($encryptedArray[0]); - if ($encryptedArray[0] === "0000000000000000") { - $iv = "0000000000000000"; - } - - $str = openssl_decrypt(@hex2bin($encryptedArray[1]), 'aes-256-cbc', $key, OPENSSL_RAW_DATA, $iv); - $decrypt = json_decode($str); - - return [ - "data" => $decrypt, - "done" => true, - ]; - } catch (Error $err) { - return [ - "data" => $data, - "done" => false, - ]; - } - } - - public function legacyDecrypt($original_data){ - if (substr($original_data, 0, 10) == "encrypted_") { - $data = substr($original_data, 10); - $data = explode("_", $data); - $salt = isset($data[1]) ? $data[1] : ""; - $iv = isset($data[2]) ? base64_decode($data[2]) : $this->iv; - $data = base64_decode($data[0]); - try { - $data = openssl_decrypt( - $data, - "AES-256-CBC", - $this->secretKey . $salt, - true, - $iv - ); - } catch (\Exception $e) { - $data = $original_data; - } - } else { - $data = $original_data; - } - - return $data; - } - -} diff --git a/twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/DoctrineServiceProvider.php b/twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/DoctrineServiceProvider.php deleted file mode 100755 index 47ddc3f2..00000000 --- a/twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/DoctrineServiceProvider.php +++ /dev/null @@ -1,119 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Twake\Core\Services\DoctrineAdapter; - -use Pimple\Container; -use Pimple\ServiceProviderInterface; -use Doctrine\DBAL\DriverManager; -use Doctrine\DBAL\Configuration; -use Doctrine\Common\EventManager; - -class DoctrineServiceProvider implements ServiceProviderInterface -{ - public function register(Container $app) - { - $app['db.default_options'] = [ - 'driver' => 'pdo_mysql', - 'dbname' => null, - 'host' => 'localhost', - 'user' => 'root', - 'password' => null, - ]; - - $app['dbs.options.initializer'] = $app->protect(function () use ($app) { - static $initialized = false; - - if ($initialized) { - return; - } - - $initialized = true; - - if (!isset($app['dbs.options'])) { - $app['dbs.options'] = ['default' => isset($app['db.options']) ? $app['db.options'] : []]; - } - - $tmp = $app['dbs.options']; - foreach ($tmp as $name => &$options) { - $options = array_replace($app['db.default_options'], $options); - - if (!isset($app['dbs.default'])) { - $app['dbs.default'] = $name; - } - } - $app['dbs.options'] = $tmp; - }); - - $app['dbs'] = function ($app) { - $app['dbs.options.initializer'](); - - $dbs = new Container(); - foreach ($app['dbs.options'] as $name => $options) { - if ($app['dbs.default'] === $name) { - // we use shortcuts here in case the default has been overridden - $config = $app['db.config']; - $manager = $app['db.event_manager']; - } else { - $config = $app['dbs.config'][$name]; - $manager = $app['dbs.event_manager'][$name]; - } - - $dbs[$name] = function ($dbs) use ($options, $config, $manager) { - return DriverManager::getConnection($options, $config, $manager); - }; - } - - return $dbs; - }; - - $app['dbs.config'] = function ($app) { - $app['dbs.options.initializer'](); - - $configs = new Container(); - foreach ($app['dbs.options'] as $name => $options) { - $configs[$name] = new Configuration(); - } - - return $configs; - }; - - $app['dbs.event_manager'] = function ($app) { - $app['dbs.options.initializer'](); - - $managers = new Container(); - foreach ($app['dbs.options'] as $name => $options) { - $managers[$name] = new EventManager(); - } - - return $managers; - }; - - // shortcuts for the "first" DB - $app['db'] = function ($app) { - $dbs = $app['dbs']; - - return $dbs[$app['dbs.default']]; - }; - - $app['db.config'] = function ($app) { - $dbs = $app['dbs.config']; - - return $dbs[$app['dbs.default']]; - }; - - $app['db.event_manager'] = function ($app) { - $dbs = $app['dbs.event_manager']; - - return $dbs[$app['dbs.default']]; - }; - } -} diff --git a/twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/FakeCassandraTimeuuid.php b/twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/FakeCassandraTimeuuid.php deleted file mode 100755 index c6dd07e3..00000000 --- a/twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/FakeCassandraTimeuuid.php +++ /dev/null @@ -1,21 +0,0 @@ -timeuuid = $timeuuid; - } - - public function __toString() - { - return $this->timeuuid; - } - - public function isNull() - { - return $this->timeuuid == "00000000-0000-1000-0000-000000000000"; - } -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/ManagerAdapter.php b/twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/ManagerAdapter.php deleted file mode 100755 index 7f25bc6f..00000000 --- a/twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/ManagerAdapter.php +++ /dev/null @@ -1,474 +0,0 @@ -app = $app; - $this->doctrine_manager = $app->getProviders()->get("db"); - $this->database_configuration = Array( - "driver" => $app->getContainer()->getParameter("db.driver"), - "host" => $app->getContainer()->getParameter("db.host"), - "port" => $app->getContainer()->getParameter("db.port"), - "user" => $app->getContainer()->getParameter("db.user"), - "password" => $app->getContainer()->getParameter("db.password"), - "dbname" => $app->getContainer()->getParameter("db.dbname"), - "ssl" => $app->getContainer()->getParameter("db.ssl"), - "encryption_key" => $app->getContainer()->getParameter("db.encryption_key"), - "replication" => $app->getContainer()->getParameter("db.replication"), - ); - $this->dev_mode = true; // If false no entity generation - $this->manager = null; - - $this->circle = $app->getServices()->get("app.restclient"); - $this->es_server = $app->getContainer()->getParameter("es.host"); - $this->es_updates = Array(); - $this->es_removes = Array(); - $this->generator = null; - - if (!$this->es_server && !defined("ELASTICSEARCH_INSTALL_MESSAGE_SHOWED") && php_sapi_name() === 'cli') { - define("ELASTICSEARCH_INSTALL_MESSAGE_SHOWED", true); - error_log("INFO: Installation configured without elastic search"); - } - } - - public function clear() - { - return $this->getEntityManager()->clear(); - } - - public function getEntityManager() - { - - if ($this->manager) { - return $this->manager; - } - - if ($this->database_configuration["driver"] == "pdo_mysql") { - $driver_type = "Mysql"; - } else { - $driver_type = "Cassandra"; - } - - $paths = array($this->app->getAppRootDir() . "/src/"); - $isDevMode = $this->dev_mode; - $config = Setup::createAnnotationMetadataConfiguration($paths, $isDevMode, null, null, false); - - $config->setProxyDir($this->app->getAppRootDir() . '/cache/Doctrine/Proxies'); - - if ($isDevMode) { - $cache = new \Doctrine\Common\Cache\ArrayCache; - $config->setAutoGenerateProxyClasses(true); - } else { - $cache = new \Doctrine\Common\Cache\ApcuCache; - $config->setAutoGenerateProxyClasses(false); - } - - $config->setMetadataCacheImpl($cache); - $config->setQueryCacheImpl($cache); - - $conn = DriverManager::getConnection(Array( - 'driver' => $this->database_configuration["driver"], - 'host' => $this->database_configuration["host"], - 'port' => $this->database_configuration["port"], - 'dbname' => $this->database_configuration["dbname"], - 'user' => $this->database_configuration["user"], - 'password' => $this->database_configuration["password"], - 'ssl' => $this->database_configuration["ssl"], - 'twake_types' => Array( - 'twake_float' => 'Twake\Core\Services\DoctrineAdapter\DBAL\Types\\' . $driver_type . 'FloatType', - 'twake_datetime' => 'Twake\Core\Services\DoctrineAdapter\DBAL\Types\\' . $driver_type . 'DateTimeType', - 'twake_uuid' => 'Twake\Core\Services\DoctrineAdapter\DBAL\Types\\' . $driver_type . 'UUIDType', - 'twake_timeuuid' => 'Twake\Core\Services\DoctrineAdapter\DBAL\Types\\' . $driver_type . 'TimeUUIDType', - 'twake_boolean' => 'Twake\Core\Services\DoctrineAdapter\DBAL\Types\\' . $driver_type . 'BooleanType', - 'tinyint' => 'Twake\Core\Services\DoctrineAdapter\DBAL\Types\\TinyintType', - 'twake_no_salt_text' => 'Twake\Core\Services\DoctrineAdapter\DBAL\Types\\' . $driver_type . 'SearchableTextType', - 'twake_text' => 'Twake\Core\Services\DoctrineAdapter\DBAL\Types\\' . $driver_type . 'TextType', - 'twake_string' => 'Twake\Core\Services\DoctrineAdapter\DBAL\Types\\' . $driver_type . 'StringType', - 'twake_bigint' => 'Twake\Core\Services\DoctrineAdapter\DBAL\Types\\' . $driver_type . 'BigIntType', - 'twake_counter' => 'Twake\Core\Services\DoctrineAdapter\DBAL\Types\\' . $driver_type . 'CounterType' - ) - ), $config); - - $encryptedStringType = Type::getType('twake_text'); - $encryptedStringType->setEncryptionKey(pack("H*", $this->database_configuration["encryption_key"])); - - $searchableEncryptedStringType = Type::getType('twake_no_salt_text'); - $searchableEncryptedStringType->setEncryptionKey(pack("H*", $this->database_configuration["encryption_key"])); - - $entityManager = EntityManager::create($conn, $config); - - $this->manager = $entityManager; - - /** @var CassandraConnection */ - $cassandraConnection = $this->manager->getConnection()->getWrappedConnection(); - $cassandraConnection->setApp($this->app); - - return $this->manager; - } - - /** !Caution! : thin ttl will be used on the first insert in the next flush ! */ - public function useTTLOnFirstInsert($ttl) - { - $this->getManager()->getConnection()->getWrappedConnection()->useTTLOnFirstInsert($ttl); - } - - public function getManager() - { - return $this->getEntityManager(); - } - - public function flush() - { - //ElasticSearch - foreach ($this->es_removes as $es_remove) { - $this->es_remove($es_remove, $es_remove->getEsType(), $es_remove->getEsIndex()); - } - - $this->es_removes = Array(); - foreach ($this->es_updates as $id => $es_update) { - $this->es_put($es_update, $es_update->getEsType(), $es_update->getEsIndex()); - $es_update->updatePreviousIndexationArray(); - - } - - $this->es_updates = Array(); - - try { - $a = $this->manager->flush(); - } catch (\Exception $e) { - error_log($e); - error_log("ERROR FLUSH"); - die("ERROR with flush"); - } - - return $a; - } - - public function es_remove($entity, $index, $server = "twake") - { - - if (!$this->es_server) { - return; - } - - if (is_array($entity)) { - $id = $entity["id"]; - } else { - $id = $entity->getId(); - } - - $route = "http://" . $this->es_server . "/" . $index . "/_doc/" . $id; - - try { - $this->circle->delete($route, array(CURLOPT_CONNECTTIMEOUT => 1)); - } catch (\Exception $e) { - error_log("Unable to delete on ElasticSearch."); - } - } - - public function es_put($entity, $index, $server = "twake") - { - - if (!$this->es_server) { - return; - } - - if (is_array($entity)) { - $id = $entity["id"]; - $data = $entity["data"]; - if (!is_array($data)) { - $data = Array("content" => $data); - } - } else { - $id = $entity->getId() . ""; - if (method_exists($entity, "getIndexationArray")) { - $data = $entity->getIndexationArray(); - } - if (method_exists($entity, "getContentKeywords") && is_array($entity->getContentKeywords())) { - $keywords = $entity->getContentKeywords(); - //partie sur la verification du format des mots clés - $keywords_verif = Array(); - foreach ($keywords as $keyword_score) { - $keys = array_keys($keyword_score); - if (count($keys) != 2 || $keys[0] != "keyword" || $keys[1] != "score" || - gettype($keyword_score["keyword"]) != "string" || gettype($keyword_score["keyword"]) != "string") { - error_log("Wrong format for keyword data"); - } else { - $keywords_verif[] = $keyword_score; - } - } - - $name = $entity->getName(); - $keywords = $this->update_ES_keyword($keywords_verif, $name); - $data["keywords"] = $keywords; - - } - } - - $st = new StringCleaner(); - $data = $st->simplifyInArray($data); - $route = "http://" . $this->es_server . "/" . $index . "/_doc/" . $id; - - - try { - $this->circle->put($route, json_encode($data), array(CURLOPT_CONNECTTIMEOUT => 1, CURLOPT_TIMEOUT => 1, CURLOPT_HTTPHEADER => ['Content-Type: application/json'])); - } catch (\Exception $e) { - error_log("Unable to put on ElasticSearch."); - } - - } - - public function update_ES_keyword($keywords, $word) - { - - - $keywords[] = Array( - "keyword" => $word, - "score" => 1.1 - ); - return $keywords; - } - - public function remove($object) - { - if (!$object) { - return; - } - if (method_exists($object, "getEsIndexed")) { - //This is a searchable object - $this->es_removes[$object->getId() . ""] = $object; - unset($this->es_updates[$object->getId() . ""]); - } - return $this->getEntityManager()->remove($object); - } - - public function getReference($ent, $id) - { - $res = null; - try { - $res = $this->getEntityManager()->getReference($ent, $id); - } catch (\Exception $e) { - error_log($e); - die("ERROR with persist"); - } - - return $res; - } - - public function merge($object) - { - $res = null; - try { - $res = $this->getEntityManager()->merge($object); - } catch (\Exception $e) { - error_log($e); - die("ERROR with persist"); - } - - return $res; - } - - - /* Elastic Search */ - - //update for important keywords from title or extension of a file only in ES to not repeat info in scyllaDB - - public function persist($object) - { - - if (!$this->generator) { - $this->generator = new UuidOrderedTimeGenerator(); - } - if (method_exists($object, "getId") && (!$object->getId() || (is_object($object->getId()) && method_exists($object->getId(), "isNull") && $object->getId()->isNull()))) { - $object->setId($this->generator->generate($this->getEntityManager(), $object)); - } - - - if (method_exists($object, "getEsIndexed")) { - //This is a searchable object - if (method_exists($object, "getLock()")) { - if ($object->getLock() == true) { - $this->es_updates[$object->getId() . ""] = $object; - unset($this->es_removes[$object->getId() . ""]); - $object->setEsIndexed(true); - } - } else { - if (!$object->getEsIndexed() || $object->changesInIndexationArray()) { - $this->es_updates[$object->getId() . ""] = $object; - unset($this->es_removes[$object->getId() . ""]); - $object->setEsIndexed(true); - } - } - } - - $res = null; - try { - $res = $this->getEntityManager()->persist($object); - } catch (\Exception $e) { - error_log($e); - die("ERROR with persist"); - } - - return $res; - - } - - public function createQueryBuilder($qb = null) - { - return $this->getEntityManager()->createQueryBuilder($qb); - } - - function validateDate($date, $format = 'Y-m-d') - { - $d = DateTime::createFromFormat($format, $date); - // The Y ( 4 digits year ) returns TRUE for any integer with any number of digits so changing the comparison from == to === fixes the issue. - return $d && $d->format($format) === $date; - } - - public function es_search($options = Array(), $index = null, $server = "twake") - { - - if (isset($options["scroll_id"])) { - $route = "http://" . $this->es_server . "/_search/scroll"; - $res = $this->circle->post($route, json_encode(Array("scroll" => "5m", "scroll_id" => $options["scroll_id"])), array(CURLOPT_CONNECTTIMEOUT => 1, CURLOPT_TIMEOUT => 1, CURLOPT_HTTPHEADER => ['Content-Type: application/json'])); - } else { - if (!$this->es_server) { - - if (isset($options["repository"]) && isset($options["fallback_keys"])) { - $repository = $this->getRepository($options["repository"]); - - $filter = isset($options["fallback_filter"]) ? $options["fallback_filter"] : Array(); - $results = $repository->findBy($filter, Array(), 500); - - $entities = []; - - foreach ($results as $result) { - $match = false; - foreach ($options["fallback_keys"] as $key => $query) { - if (strtolower(trim($query)) && strpos(strtolower($result->getAsArray()[$key]), strtolower(trim($query))) !== false) { - $match = true; - } - } - if ($match && $result) { - $entities[] = [$result, 0]; - } - } - - return Array("result" => $entities); - } - return ["result" => []]; - } - if (isset($options["index"]) && !$type) { - $index = $options["index"]; - } - - - $route = "http://" . $this->es_server . "/" . $index . "/_doc/"; - $route .= "_search"; - $route .= "?scroll=5m"; //on spécifie un temps ou la recherche est active - - if (!isset($options["size"])) { - $options["size"] = 10; - } - - try { - if (isset($options["sort"])) { - $res = $this->circle->post($route, json_encode(Array("size" => $options["size"], "query" => $options["query"], "sort" => $options["sort"])), array(CURLOPT_CONNECTTIMEOUT => 1, CURLOPT_TIMEOUT => 1, CURLOPT_HTTPHEADER => ['Content-Type: application/json'])); - } else { - $res = $this->circle->post($route, json_encode(Array("size" => $options["size"], "query" => $options["query"])), array(CURLOPT_CONNECTTIMEOUT => 1, CURLOPT_TIMEOUT => 1, CURLOPT_HTTPHEADER => ['Content-Type: application/json'])); - } - - } catch (\Exception $e) { - error_log("Unable to post on ElasticSearch."); - } - } - - - $repository = null; - if (isset($options["repository"])) { - $repository = $this->getRepository($options["repository"]); - } - - if (!$res) { - return ["result" => []]; - } - - $res = $res->getContent(); - - $result = ["result" => []]; - $scroll_id = ""; - - if ($res) { - $res = json_decode($res, 1); - if ($res["hits"]["total"] > $options["size"] && isset($res["_scroll_id"])) { - //on a plus de 10 resultat et un ID il faut paginer - $scroll_id = $res["_scroll_id"]; - } - - $result = []; - if (isset($res["hits"]) && isset($res["hits"]["hits"])) { - $res = $res["hits"]["hits"]; - - foreach ($res as $object_json) { - if ($repository) { - $obj = $repository->findOneBy(Array("id" => $object_json["_id"])); - } else { - $obj = $object_json["_id"]; - } - - if ($obj) { - $result[] = Array($obj, isset($object_json["sort"]) ? $object_json["sort"] : 0); - } - } - } - $result = Array("repository" => $repository, "scroll_id" => $scroll_id, "result" => $result); - - } - return $result; - - } - - private function registerEntity($name) - { - $name = explode(":", $name); - $entity_bundle_name_space = $name[0]; - $real_name_space = $entity_bundle_name_space . "\\Entity"; - $this->getEntityManager()->getConfiguration()->addEntityNamespace($entity_bundle_name_space, $real_name_space); - } - - public function getRepository($name) - { - - $this->registerEntity($name); - - try { - $metadata = $this->getEntityManager()->getClassMetadata($name); - } catch (\Exception $e) { - error_log($e); - return; - } - - $em = $this->getEntityManager(); - return new RepositoryAdapter($em, $metadata); - } - - -} diff --git a/twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/RepositoryAdapter.php b/twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/RepositoryAdapter.php deleted file mode 100755 index 09ddf5ff..00000000 --- a/twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/RepositoryAdapter.php +++ /dev/null @@ -1,351 +0,0 @@ -updatePreviousIndexationArray(); - } - } - - } catch (\Exception $e) { - error_log($e); - error_log("ERROR with find"); - $a = null; - } - return $a; - } - - public function findOneBy(Array $filter, array $sort = null) - { - try { - $a = parent::findOneBy($filter, $sort); - - if ($a) { - if (method_exists($a, "getEsIndexed")) { - $a->updatePreviousIndexationArray(); - } - } - - } catch (\Exception $e) { - error_log($e); - error_log("ERROR with findOneBy"); - $a = null; - } - return $a; - } - - public function findRange(Array $filters, $limit = false, $order_field = null, $min = null, $max = null, $view_to_use = null) - { - - try { - - $mapping = Array(); - if (isset($this->getClassMetadata()->associationMappings)) { - foreach ($this->getClassMetadata()->associationMappings as $field => $data) { - $mapping[] = $field; - } - } - if (isset($this->getClassMetadata()->fieldMappings)) { - foreach ($this->getClassMetadata()->fieldMappings as $field => $data) { - if ($data["type"] == "twake_timeuuid" || $data["type"] == "twake_uuid") { - $mapping[] = $field; - } - } - } - - //Cassandra - $qb = $this->createQueryBuilder('e'); - - foreach ($filters as $filter => $value) { - $qb = $qb->andWhere($qb->expr()->eq('e.' . $filter, ":" . $filter . "_param")); - if (in_array($filter, $mapping)) { - if (is_object($value)) { - $qb = $qb->setParameter($filter . "_param", new FakeCassandraTimeuuid($value->getId())); - } else { - $qb = $qb->setParameter($filter . "_param", new FakeCassandraTimeuuid($value)); - } - } else { - $qb = $qb->setParameter($filter . "_param", $value); - } - } - - if ($min) { - if (is_string($min)) { - new FakeCassandraTimeuuid($min); - } - $qb = $qb->andWhere($qb->expr()->gte('e.' . $order_field, ":offset_min")); - $qb = $qb->setParameter("offset_min", $min); - } - if ($max) { - if (is_string($max)) { - new FakeCassandraTimeuuid($max); - } - $qb = $qb->andWhere($qb->expr()->lte('e.' . $order_field, ":offset_max")); - $qb = $qb->setParameter("offset_max", $max); - } - - if ($view_to_use) { - $this->_em->getConnection()->getWrappedConnection()->changeTableToView($view_to_use); - } - - if ($limit) { - $qb = $qb->setMaxResults(abs($limit)); - } - - $qb = $qb->getQuery(); - $a = $qb->execute(); - - - foreach ($a as $e) { - if (method_exists($e, "getEsIndexed")) { - $e->updatePreviousIndexationArray(); - } - } - - } catch (\Exception $e) { - error_log($e); - error_log("ERROR with findRange"); - $a = []; - } - return $a; - } - - public function findBy(Array $filters, ?array $sort = null, $limit = null, $offset = null, $order_fields = null, $order_directions = "ASC", $view_to_use = null) - { - - if (is_array($order_directions)) { - $order_direction = $order_directions[count($order_directions) - 1]; - $order_field = $order_fields[count($order_fields) - 1]; - } else { - $order_direction = $order_directions; - $order_field = $order_fields; - } - - $cassandra = strpos(get_class($this->_em->getConnection()->getDriver()), "PDOCassandra") >= 0; - - $offset_field = null; - if ($offset && is_array($offset)) { - if ($cassandra) { - $sort = Array(); - $offset_field = $order_fields[1]; - $offset = $offset[1]; - } else { - $offset_field = $order_fields[0]; - $offset = $offset[0]; - } - } - - try { - - if (($view_to_use || $offset && $order_field) && $cassandra) { - - - $mapping_timeuuid = Array(); - $mapping_uuid = Array(); - $mapping_twake_text = Array(); - if (isset($this->getClassMetadata()->associationMappings)) { - foreach ($this->getClassMetadata()->associationMappings as $field => $data) { - $mapping_timeuuid[] = $field; - } - } - if (isset($this->getClassMetadata()->fieldMappings)) { - foreach ($this->getClassMetadata()->fieldMappings as $field => $data) { - if ($data["type"] == "twake_no_salt_text") { - $mapping_twake_text[] = $field; - } - if ($data["type"] == "twake_timeuuid") { - $mapping_timeuuid[] = $field; - } - if ($data["type"] == "twake_uuid") { - $mapping_uuid[] = $field; - } - } - } - - //Cassandra - $qb = $this->createQueryBuilder('e'); - - foreach ($filters as $filter => $value) { - $qb = $qb->andWhere($qb->expr()->eq('e.' . $filter, ":" . $filter . "_param")); - if (in_array($filter, $mapping_timeuuid)) { - if (is_object($value)) { - $qb = $qb->setParameter($filter . "_param", new FakeCassandraTimeuuid($value->getId())); - } else { - $qb = $qb->setParameter($filter . "_param", new FakeCassandraTimeuuid($value)); - } - } else if (in_array($filter, $mapping_uuid)) { - $uuidType = Type::getType('twake_uuid'); - if (is_object($value)) { - $value = $value->getId(); - } - $value = $uuidType->convertToDatabaseValue($value, $this->_em->getConnection()->getDatabasePlatform()); - $qb = $qb->setParameter($filter . "_param", new FakeCassandraTimeuuid($value)); - } else if (in_array($filter, $mapping_twake_text)) { - /** \Doctrine\DBAL\Types\Type @var $encryptedStringType */ - $encryptedStringType = Type::getType('twake_no_salt_text'); - $encrypted = $encryptedStringType->convertToDatabaseValue($value, $this->_em->getConnection()->getDatabasePlatform()); - $qb = $qb->setParameter($filter . "_param", $encrypted); - } else { - $qb = $qb->setParameter($filter . "_param", $value); - } - } - - if ($offset) { - if (is_array($order_fields)) { - foreach ($order_fields as $i => $of) { - if ($limit > 0) { - $qb = $qb->addOrderBy('e.' . $of, $order_directions[$i]); - } else { - if ($order_directions[$i] == "ASC") { - $qb = $qb->addOrderBy('e.' . $of, "DESC"); - } else { - $qb = $qb->addOrderBy('e.' . $of, "ASC"); - } - } - } - } - if ($limit > 0) { - $qb = $qb->andWhere($qb->expr()->lte('e.' . $order_field, ":offset")); - } else { - $qb = $qb->andWhere($qb->expr()->gte('e.' . $order_field, ":offset")); - } - if (is_object($offset)) { - $offset = $offset->getId(); - } - - if (is_string($offset) && in_array($order_field, $mapping_timeuuid)) { - $offset = new FakeCassandraTimeuuid($offset); - if (strpos($order_field, "__TOKEN__") === 0) { - $offset = "__TOKEN__" . $offset . ""; - } - } - - $qb = $qb->setParameter("offset", $offset); - } - - if ($limit) { - $qb = $qb->setMaxResults(abs($limit) + ($offset?1:0)); - } - - if ($view_to_use) { - $this->_em->getConnection()->getWrappedConnection()->changeTableToView($view_to_use); - } - - $qb = $qb->getQuery(); - $a = $qb->execute(); - - } else { - $a = parent::findBy($filters, $sort, $limit, $offset); - } - - foreach ($a as $e) { - if (method_exists($e, "getEsIndexed")) { - $e->updatePreviousIndexationArray(); - } - } - - } catch (\Exception $e) { - error_log($e); - foreach (explode("\n", $e->getTraceAsString()) as $line) { - error_log($line); - } - error_log("ERROR with findBy"); - $a = []; - } - return $a; - } - - public function removeBy($filters) - { - - $qb = $this->createQueryBuilder("e"); - - $qb = $qb->delete(); - - $mapping = Array(); - if (isset($this->getClassMetadata()->associationMappings)) { - foreach ($this->getClassMetadata()->associationMappings as $field => $data) { - $mapping[] = $field; - } - } - if (isset($this->getClassMetadata()->fieldMappings)) { - foreach ($this->getClassMetadata()->fieldMappings as $field => $data) { - if ($data["type"] == "twake_timeuuid" || $data["type"] == "twake_uuid") { - $mapping[] = $field; - } - } - } - - foreach ($filters as $filter => $value) { - $qb = $qb->andWhere($qb->expr()->eq('e.' . $filter, ":" . $filter . "_param")); - if (in_array($filter, $mapping)) { - if (is_object($value)) { - $qb = $qb->setParameter($filter . "_param", new FakeCassandraTimeuuid($value->getId())); - } else { - $qb = $qb->setParameter($filter . "_param", new FakeCassandraTimeuuid($value)); - } - } else { - $qb = $qb->setParameter($filter . "_param", $value); - } - } - - $qb = $qb->getQuery(); - $qb->execute(); - - } - - public function queryBuilderUuid($list) - { - - $not_array = false; - if (!is_array($list)) { - if ($list === null) { - return null; - } - $not_array = true; - $list = [$list]; - } - - $return = Array(); - foreach ($list as $el) { - if (is_object($el) && method_exists($el, "getId")) { - $el = $el->getId(); - } - if (is_string($el) || get_class($el) == "Ramsey\Uuid\Uuid") { - $hex = str_replace("-", "", $el); - $value = substr($hex, 12, 4) . substr($hex, 8, 4) . substr($hex, 0, 8) . substr($hex, 16, 4) . substr($hex, 20); - $return[] = $value; - } else { - $return[] = $el; - } - } - - if ($not_array) { - $return = $return[0]; - } - - return $return; - - } - -} diff --git a/twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/SessionHandler.php b/twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/SessionHandler.php deleted file mode 100755 index 32cf9086..00000000 --- a/twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/SessionHandler.php +++ /dev/null @@ -1,167 +0,0 @@ -app = $app; - $this->doctrineAdapter = $app->getServices()->get("app.twake_doctrine"); - $this->didInit = false; - $this->lifetime = 3600; - $this->rememberMeLifetime = 60 * 60 * 24 * 360; - $this->cookiesToSet = []; - } - - public function getUser(Request $request) - { - if ($this->user) { - return $this->user; - } - $this->user = $this->checkRequest($request); - return $this->user; - } - - public function setUser(User $user) - { - $this->user = $user; - } - - public function getDidUseRememberMe(){ - return $this->did_use_remember_me; - } - - public function checkRequest(Request $request, Response $response = null) - { - - $authorization = $request->headers->get("Authorization"); - $authorization = explode(" ", $authorization); - - if($authorization[0] === "Bearer"){ - $jwt = $authorization[1]; - if($jwt){ - try{ - $key = $this->app->getContainer()->getParameter("jwt.secret"); - $jwt = JWT::decode($jwt, $key, array('HS256')); - - if(!$jwt->sub){ - return false; - } - - if($jwt->exp < date("U") && $jwt->type !== "refresh"){ - return false; - } - - if($jwt->exp < date("U") && $jwt->type === "refresh"){ - return false; - } - - $user = $this->doctrineAdapter->getRepository("Twake\Users:User")->find($jwt->sub); - - if(!$user){ - return false; - } - - return $user; - - }catch(\Exception $err){ - error_log($err); - return false; - } - } - } - - return false; - - } - - public function destroySession(Request $request) - { - - $cookie = $request->cookies->get('SESSID'); - $cookie = json_decode(base64_decode($cookie), 1); - $session_id = $cookie["sessid"]; - - $this->destroy($session_id); - $this->destroyRememberMe($request); - - } - - public function destroyRememberMe(Request $request) - { - - $cookie = $request->cookies->get('SESSID'); - $cookie = json_decode(base64_decode($cookie), 1); - $session_id = $cookie["sessid"]; - $user_id = $cookie["userid"]; - - $this->destroy($session_id); - - $user = $this->doctrineAdapter->getRepository("Twake\Users:User")->find($user_id); - if ($user && $user->getRememberMeSecret()) { - $user->setRememberMeSecret(false); - $this->doctrineAdapter->persist($user); - $this->doctrineAdapter->flush(); - } - - } - - public function destroy($sessionId) - { - $repo = $this->doctrineAdapter->getRepository("Twake\Core:Sessions"); - $result = $repo->find($sessionId); - - if ($result) { - $this->doctrineAdapter->remove($result); - $this->doctrineAdapter->flush(); - } - return true; - } - - public function write($sessionId, $data) - { - $session = $this->doctrineAdapter->getRepository("Twake\Core:Sessions")->find($sessionId); - if (!$session) { - $session = new Sessions(); - } - $session->setSessId($sessionId); - $session->setSessData(json_encode($data)); - $session->setSessLifetime($this->lifetime); - $session->setSessTime(date("U")); - $this->doctrineAdapter->persist($session); - $this->doctrineAdapter->flush(); - - return true; - } - - public function read($sessionId) - { - if (!$sessionId) { - return null; - } - $repo = $this->doctrineAdapter->getRepository("Twake\Core:Sessions"); - $result = $repo->find($sessionId); - - if ($result) { - $data = json_decode($result->getSessData(), 1); - return $data; - } - return null; - } - -} diff --git a/twake/backend/core/src/Twake/Core/Services/Languages/de.php b/twake/backend/core/src/Twake/Core/Services/Languages/de.php deleted file mode 100755 index 60e18fb6..00000000 --- a/twake/backend/core/src/Twake/Core/Services/Languages/de.php +++ /dev/null @@ -1,82 +0,0 @@ - "Allgemeine Aufgabenverteilung", - "project.discover_twake" => "Twake entdecken", - "project.project" => "Mein Projekt", - "project.createTwakeWorkspace" => "Richten Sie Ihren ersten Arbeitsbereich ein", - "project.createTwakeWorkspaceDescription" => "Um einen Arbeitsbereich einzurichten, klicken Sie auf \"+\" in der Liste Ihrer Arbeitsbereiche", - "project.discoverTwake" => "Twake entdecken", - "project.discoverTwakeDescription" => "Öffnen Sie jede Anwendung, um zu entdecken, wie Twake Ihnen Zeit ersparen kann", - "project.signin" => "Auf Twake anmelden", - "project.invitePartner" => "Laden Sie Ihre Partner ein", - "project.invitePartnerDescription" => "Wechseln Sie in Ihrem Arbeitsbereich zu den Registerkarten \"Mitglieder\" und fügen Sie Ihre Partner mit ihren Benutzernamen oder E-Mail-Adressen hinzu", - "drive.society" => "Firma", - "drive.comminucation" => "Kommunikation", - "drive.financial" => "Finanzen", - "drive.hr" => "Personal", - "drive.rules" => "Regeln.docx", - "drive.accounting" => "Buchhaltung.xlsx", - "drive.twake" => "Twake", - "drive.rules" => "Regeln.docx", - "drive.ruleText" => "Hören Sie die Musik nicht vollständig im Open Space.", - "drive.welcome" => "Herzlich willkommen.docx", - "drive.welcomeText" => "Herzlich willkommen auf Twake! \nWir freuen uns, Sie auf unserer Plattform begrüßen zu dürfen. :D", - "calendar.communication" => "Kommunikation", - "calendar.customer" => "Kunde", - "calendar.generalMeeting" => "Teambesprechung", - "calendar.meetingDurant" => "Treffen mit Herrn Durant", - "calendar.meetingNextAds" => "Vorbereitung der Fernsehwerbung", - "calendar.meetingXu" => "Treffen mit Herrn Xu", - "calendar.interview" => "Fernsehwerbung", - "message.hello1" => "Hallo $1, herzlich willkommen auf Twake!:tada:", - "message.hello2" => "Ich bin Twake_bot, ich bin hier, um Ihnen zu helfen", - "message.hello3" => "Bereit für Twake? :grinning:", - - "quote.update_policy" => "Wir haben unsere Datenschutzerklärung nicht aktualisiert.", - "subquote.update_policy" => "Haben wir's gemacht? Ich weiß es nicht, sehen Sie in Ihren E-Mails nach.", - "quote.dont_worry" => "Keine Sorge, alles unter Kontrolle.", - "quote.read_text" => "Lesen Sie diesen Text nicht.", - "subquote.read_text" => "Sie haben soeben verloren", - "quote.love_the_live" => "Liebe das Leben, das du lebst, und lebe das Leben, das du liebst.", - - "general" => "Allgemein", - - "drive.move_file" => "Datei verschoben", - "drive.new_file" => "Neue Datei", - "drive.has_been_added" => "$1 wurde zu $2 hinzugefügt", - "drive.has_been_moved" => "$1 wurde in $2 verschoben", - "drive.file_updated" => "Aktualisierte Datei", - "drive.has_been_update" => "$1 wurde aktualisiert", - - "workspace.activity.task.update" => "$1 hat $2 Aufgabe(n) aktualisiert", - "workspace.activity.task.remove" => "$1 hat $2 Aufgabe(n) entfernt", - "workspace.activity.task.create" => "$1 hat $2 Aufgabe(n) angelegt", - "workspace.activity.task.done" => "$1 hat $2 Aufgabe(n) beendet", - - "workspace.activity.event.update" => "$1 hat $2 Ereignis(se) aktualisiert", - "workspace.activity.event.remove" => "$1 hat $2 Ereignis(se) entfernt", - "workspace.activity.event.create" => "$1 hat $2 Ereignis(se) angelegt", - - "workspace.activity.file.move" => "$1 hat $2 Datei(en) verschoben", - "workspace.activity.file.rename" => "$1 hat $2 Datei(en) umbenannt", - "workspace.activity.file.create" => "$1 hat $2 Datei(en) angelegt", - "workspace.activity.file.move_detached_file_to_drive" => "$1 hat $2 abgetrennte Datei(en) in den Drive verschoben", - "workspace.activity.file.trash" => "$1 hat $2 Datei(en) entfernt", - "workspace.activity.file.restore" => "$1 hat $2 Datei(en) wiederhergestellt", - "workspace.activity.file.upload_new_version" => "$1 hat $2 neue Dateiversionen hochgeladen", - - "workspace.activity.workspace.change_logo" => "$1 hat das Logo des Arbeitsbereichs geändert", - "workspace.activity.workspace.rename" => "$1 hat den Arbeitsbereich umbenannt", - "workspace.activity.workspace.change_wallpaper" => "$1 hat das Hintergrundbild des Arbeitsbereichs geändert", - "workspace.activity.workspace.archive" => "$1 hat den Arbeitsbereich archiviert", - "workspace.activity.workspace.unarchive" => "$1 hat den Arbeitsbereich dearchiviert", - "workspace.activity.workspace.add_member" => "$1 wurde zu diesem Arbeitsbereich hinzugefügt", -); \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Services/Languages/en.php b/twake/backend/core/src/Twake/Core/Services/Languages/en.php deleted file mode 100755 index dbdd121e..00000000 --- a/twake/backend/core/src/Twake/Core/Services/Languages/en.php +++ /dev/null @@ -1,83 +0,0 @@ - "General", - - "drive.move_file" => "Move file", - "drive.new_file" => "New file", - "drive.has_been_added" => "$1 has been added to $2", - "drive.has_been_moved" => "$1 has been moved into $2", - "drive.file_updated" => "Updated file", - "drive.has_been_update" => "$1 has been updated", - - "project.generalBoardDescription" => "General board of tasks", - "project.discover_twake" => "Discover Twake", - "project.project" => "My project", - "project.createTwakeWorkspace" => "Create your first workspace", - "project.createTwakeWorkspaceDescription" => "To create a workspace, you have to click on the \"+\" in your workspace list", - "project.discoverTwake" => "Discover Twake", - "project.discoverTwakeDescription" => "Open each application to see what Twake can do for you", - "project.signin" => "Sign in", - "project.invitePartner" => "Invite your partners", - "project.invitePartnerDescription" => "Go to your workspace, in the \"members\" tabs, add your partners with their username or email address if they are not already registered", - - - "drive.twake" => "Twake", - "drive.rules" => "Rules.docx", - "drive.ruleText" => "Do not listen to the music fully in the openspace", - "drive.welcome" => "Welcome.docx", - "drive.welcomeText" => "Welcome on Twake ! \nWe are very happy to welcome you on our plateforme :D", - - - "calendar.communication" => "Communication", - "calendar.customer" => "Customer", - "calendar.generalMeeting" => "Team meeting", - "calendar.meetingDurant" => "Meeting with Mr Durant", - "calendar.meetingNextAds" => "Preparation to TV advertising", - "calendar.meetingXu" => "Meeting with Mr Xu", - "calendar.interview" => "TV advertising", - - "message.hello1" => "Hello $1, welcome on board !:tada:", - "message.hello2" => "I am Twake_bot, I am here to help you", - "message.hello3" => "Ready to use Twake ? :grinning:", - - - "mail.request_new_password" => "Your request for a new password", - "mail.hello" => "Hello", - "mail.request_new_password_body" => "You requested a new password, there is the activation code you need", - - - "quote.update_policy" => "We did not update our privacy policy.", - "subquote.update_policy" => "Did we? I don't know, check your e-mails.", - "quote.dont_worry" => "Don't worry, everything is under control.", - "quote.read_text" => "Don't read that text.", - "subquote.read_text" => "You just lost", - "quote.love_the_live" => "Love the life you live, and live the life you love.", - - "workspace.activity.task.update" => "$1 has updated $2 task(s)", - "workspace.activity.task.remove" => "$1 has removed $2 task(s)", - "workspace.activity.task.create" => "$1 has created $2 task(s)", - "workspace.activity.task.done" => "$1 achieved $2 task(s)", - "workspace.activity.event.update" => "$1 has updated $2 event(s)", - "workspace.activity.event.remove" => "$1 has removed $2 event(s)", - "workspace.activity.event.create" => "$1 has created $2 event(s)", - "workspace.activity.file.move" => "$1 has moved $2 file(s)", - "workspace.activity.file.rename" => "$1 has renamed $2 file(s)", - "workspace.activity.file.create" => "$1 has created $2 file(s)", - "workspace.activity.file.move_detached_file_to_drive" => "$1 has moved $2 detached files to drive", - "workspace.activity.file.trash" => "$1 has trashed $2 file(s)", - "workspace.activity.file.restore" => "$1 has restored $2 file(s)", - "workspace.activity.file.upload_new_version" => "$1 has uploaded $2 new file(s) version(s)", - "workspace.activity.workspace.change_logo" => "$1 has changed the workspace logo", - "workspace.activity.workspace.rename" => "$1 has renamed the workspace", - "workspace.activity.workspace.change_wallpaper" => "$1 has changed the workspace wallpaper", - "workspace.activity.workspace.archive" => "$1 has archived the workspace", - "workspace.activity.workspace.unarchive" => "$1 has unarchived the workspace", - "workspace.activity.workspace.add_member" => "$1 was added to this workspace", -); \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Services/Languages/fr.php b/twake/backend/core/src/Twake/Core/Services/Languages/fr.php deleted file mode 100755 index 508e9f6c..00000000 --- a/twake/backend/core/src/Twake/Core/Services/Languages/fr.php +++ /dev/null @@ -1,88 +0,0 @@ - "Général", - - "drive.move_file" => "Fichier déplacé", - "drive.new_file" => "Nouveau fichier", - "drive.has_been_added" => "$1 a été ajouté dans $2", - "drive.has_been_moved" => "$1 a été déplacé dans $2", - "drive.file_updated" => "Fichier mis à jour", - "drive.has_been_update" => "$1 a été mis à jour", - - "project.generalBoardDescription" => "Tableau général de tâches", - "project.discover_twake" => "Découvrir Twake", - "project.project" => "Mon projet", - "project.createTwakeWorkspace" => "Créez votre premier espace de travail", - "project.createTwakeWorkspaceDescription" => "Pour créer un espace de travail, cliquez sur le bouton \"+\" dans ta liste d\'espaces de travail", - "project.discoverTwake" => "Découvrir Twake", - "project.discoverTwakeDescription" => "Ouvrez chaque application pour découvrir en quoi Twake peut vous faire gagner du temps", - "project.signin" => "S'inscrire sur Twake", - "project.invitePartner" => "Invitez vos partenaires", - "project.invitePartnerDescription" => "Allez dans votre espace de travail, dans les onglets \"membres\", ajoutez vos partenaires avec leur nom d'utilisateur ou leur adresse mail", - - - "drive.society" => "Société", - "drive.comminucation" => "Communication", - "drive.financial" => "Finances", - "drive.hr" => "Ressources humaines", - "drive.rules" => "Règles.docx", - "drive.ruleSmoke" => "", - "drive.accounting" => "Comptabilité.xlsx", - - "drive.twake" => "Twake", - "drive.rules" => "Règles.docx", - "drive.ruleText" => "Ne pas écouter la musique à fond dans l'openspace", - "drive.welcome" => "Bienvenue.docx", - "drive.welcomeText" => "Bienvenue sur Twake ! \nNous sommes très heureux de vous accueillir sur notre plateforme. :D", - - "calendar.communication" => "Communication", - "calendar.customer" => "Client", - "calendar.generalMeeting" => "Réunion d'équipe", - "calendar.meetingDurant" => "RDV avec M. Durant", - "calendar.meetingNextAds" => "Préparation de la pub TV", - "calendar.meetingXu" => "RDV avec M. Xu", - "calendar.interview" => "Publicité TV", - - "message.hello1" => "Bonjour $1, bienvenue sur Twake !:tada:", - "message.hello2" => "Je suis Twake_bot, je suis ici pour vous aider", - "message.hello3" => "Prêt à utiliser Twake ? :grinning:", - - - "mail.request_new_password" => "Votre demande d'un nouveau mot de passe", - "mail.hello" => "Bonjour", - "mail.request_new_password_body" => "Vous avez demandé un nouveau mot de passe, voici le code d'activation dont vous avez besoin", - "quote.update_policy" => "Nous n'avons pas mis à jour notre politique de confidentialité.", - "subquote.update_policy" => "L'avons-nous fait ? Je ne sais pas, vérifiez vos mails.", - "quote.dont_worry" => "Ne vous inquiétez pas, tout est sous contrôle.", - "quote.read_text" => "Ne lisez pas ce texte.", - "subquote.read_text" => "Vous venez de perdre", - "quote.love_the_live" => "Aimez la vie que vous vivez et vivez la vie que vous aimez.", - - "workspace.activity.task.update" => "$1 a mis à jour $2 tâche(s)", - "workspace.activity.task.remove" => "$1 a supprimé $2 tâche(s)", - "workspace.activity.task.create" => "$1 a créé $2 tâche(s)", - "workspace.activity.task.done" => "$1 a terminé $2 tâche(s)", - "workspace.activity.event.update" => "$1 a mis à jour $2 événement(s)", - "workspace.activity.event.remove" => "$1 a supprimé $2 événement(s)", - "workspace.activity.event.create" => "$1 a créé $2 événement(s)", - "workspace.activity.file.move" => "$1 a déplacé $2 fichier(s)", - "workspace.activity.file.rename" => "$1 a renommé $2 fichier(s)", - "workspace.activity.file.create" => "$1 a créé $2 fichier(s)", - "workspace.activity.file.move_detached_file_to_drive" => "$1 a déplacé $2 fichier(s) détaché(s) dans le Drive", - "workspace.activity.file.trash" => "$1 a supprimé $2 fichier(s)", - "workspace.activity.file.restore" => "$1 a restauré $2 fichier(s)", - "workspace.activity.file.upload_new_version" => "$1 a téléchargé $2 nouvelles versions de fichiers", - "workspace.activity.workspace.change_logo" => "$1 a modifié le logo de l'espace de travail", - "workspace.activity.workspace.rename" => "$1 a renommé l'espace de travail", - "workspace.activity.workspace.change_wallpaper" => "$1 a changé l'image de fond de l'espace de travail", - "workspace.activity.workspace.archive" => "$1 a archivé l'espace de travail", - "workspace.activity.workspace.unarchive" => "$1 a désarchivé the l'espace de travail", - "workspace.activity.workspace.add_member" => "$1 a été ajouté à l'espace de travail", -); \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Services/Monitoring/AbstractCollector.php b/twake/backend/core/src/Twake/Core/Services/Monitoring/AbstractCollector.php deleted file mode 100755 index 4b43330f..00000000 --- a/twake/backend/core/src/Twake/Core/Services/Monitoring/AbstractCollector.php +++ /dev/null @@ -1,72 +0,0 @@ -set($this->getData(), $labelValues); - } - - /** - * Return the collected data - * - * @return mixed - */ - public function getData() - { - return $this->data; - } -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Services/Monitoring/CollectorRegistry.php b/twake/backend/core/src/Twake/Core/Services/Monitoring/CollectorRegistry.php deleted file mode 100755 index edf7ea06..00000000 --- a/twake/backend/core/src/Twake/Core/Services/Monitoring/CollectorRegistry.php +++ /dev/null @@ -1,128 +0,0 @@ -appCode = $appCode; - $this->registry = $registry; - } - - public function init() - { - $this->addCollector(new MemoryCollector()); - $this->addCollector(new ResponseCodeCollector()); - $this->addCollector(new ResponseSizeCollector()); - $this->addCollector(new ResponseTimeCollector()); - } - - /** - * Add a collector to the registry - * - * @param AbstractCollector $collector - */ - public function addCollector(AbstractCollector $collector) - { - $this->collectors[] = $collector; - } - - public function setAppCode($code) - { - $this->appCode = $code; - } - - /** - * Trigger data collection on all collectors - * - * @param Request $request - * @param Response $response - */ - public function collect(Request $request, Response $response) - { - foreach ($this->collectors as $collector) { - $collector->collect($request, $response); - } - } - - /** - * Set the current route name - * - * @param string $routeName - */ - public function setCurrentRoute($routeName) - { - $this->routeName = $routeName; - } - - /** - * Save the collected metrics to the backend in Prometheus format - * - * @throws \TweedeGolf\PrometheusClient\PrometheusException - */ - public function save() - { - if (!function_exists('apcu_add')) { - return; - } - - foreach ($this->collectors as $collector) { - if ($this->routeName) { - $collector->save( - $this->registry->get($collector->getCollectorName()), - [$this->appCode, $this->routeName] - ); - } - } - - if ($this->routeName) { - $this->registry->getCounter('app_collectors_call_count')->inc( - 1, - [$this->appCode, $this->routeName] - ); - } - } -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Services/Monitoring/MemoryCollector.php b/twake/backend/core/src/Twake/Core/Services/Monitoring/MemoryCollector.php deleted file mode 100755 index d74492de..00000000 --- a/twake/backend/core/src/Twake/Core/Services/Monitoring/MemoryCollector.php +++ /dev/null @@ -1,32 +0,0 @@ -data = memory_get_peak_usage(true); - } - - /** - * {@inheritdoc} - */ - public function getCollectorName(): string - { - return 'app_collectors_memory_usage'; - } -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Services/Monitoring/MonitoringCollectionSubscriber.php b/twake/backend/core/src/Twake/Core/Services/Monitoring/MonitoringCollectionSubscriber.php deleted file mode 100755 index a07d5ce7..00000000 --- a/twake/backend/core/src/Twake/Core/Services/Monitoring/MonitoringCollectionSubscriber.php +++ /dev/null @@ -1,101 +0,0 @@ -dataRegistry = $dataRegistry; - - $this->dataRegistry->setAppCode("twake-core"); - $this->dataRegistry->init(); - - } - - /** - * {@inheritdoc} - */ - public static function getSubscribedEvents() - { - return array( - KernelEvents::RESPONSE => array('onKernelResponse', -100), - KernelEvents::TERMINATE => array('onKernelTerminate', -1024), - ); - } - - /** - * Handles the onKernelResponse event. - * - * Collect the metrics on this event - * - * @param $event FilterResponseEvent - */ - public function onKernelResponse(FilterResponseEvent $event) - { - $master = $event->isMasterRequest(); - if (!$master) { - return; - } - - $request = $event->getRequest(); - - $route = $request->get('_route'); - - $app_code = "twake-core"; - if (strpos($request->attributes->get('_controller'), "DevelopersApi") === 0) { - $app_code = "twake-api"; - } - - $this->dataRegistry->setAppCode($app_code); - - if ($route != "tweede_golf_prometheus_metrics") { - - $this->dataRegistry->setCurrentRoute($route); - $this->dataRegistry->collect($request, $event->getResponse()); - - } - } - - /** - * Handles the onKernelTerminate event. - * - * Save the collected metrics to the backend - * - * @param PostResponseEvent $event - */ - public function onKernelTerminate(PostResponseEvent $event) - { - try { - $this->dataRegistry->save(); - } catch (PrometheusException $e) { - error_log('Save prometheus metrics error'); - error_log((string)$e); - } - } -} diff --git a/twake/backend/core/src/Twake/Core/Services/Monitoring/ResponseCodeCollector.php b/twake/backend/core/src/Twake/Core/Services/Monitoring/ResponseCodeCollector.php deleted file mode 100755 index b2f0f330..00000000 --- a/twake/backend/core/src/Twake/Core/Services/Monitoring/ResponseCodeCollector.php +++ /dev/null @@ -1,55 +0,0 @@ -responseCode = $response->getStatusCode(); - } - - /** - * {@inheritdoc} - */ - public function getCollectorName(): string - { - return 'app_collectors_response_code'; - } - - /** - * {@inheritdoc} - * - * Note : overriden because suez_sf_app_response_code is a counter - * - * @throws PrometheusException - */ - public function save(CollectorInterface $collector, array $labelValues) - { - /** @var $collector Counter */ - $collector->inc(1, array_merge($labelValues, [(string)$this->responseCode])); - } -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Services/Monitoring/ResponseSizeCollector.php b/twake/backend/core/src/Twake/Core/Services/Monitoring/ResponseSizeCollector.php deleted file mode 100755 index 5b6adf5e..00000000 --- a/twake/backend/core/src/Twake/Core/Services/Monitoring/ResponseSizeCollector.php +++ /dev/null @@ -1,32 +0,0 @@ -data = strlen($response->getContent()); - } - - /** - * {@inheritdoc} - */ - public function getCollectorName(): string - { - return 'app_collectors_response_size'; - } -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Services/Monitoring/ResponseTimeCollector.php b/twake/backend/core/src/Twake/Core/Services/Monitoring/ResponseTimeCollector.php deleted file mode 100755 index d29683b1..00000000 --- a/twake/backend/core/src/Twake/Core/Services/Monitoring/ResponseTimeCollector.php +++ /dev/null @@ -1,58 +0,0 @@ -start_time = $start_time; - } - - /** - * {@inheritdoc} - */ - public function collect(Request $request, Response $response) - { - $startTime = null; - - if (null !== $this->kernel) { - $startTime = $this->start_time; - } - - if (is_null($startTime) || $startTime === -INF) { - $startTime = $request->server->get('REQUEST_TIME_FLOAT'); - } - - $this->data = (microtime(true) - $startTime) * 1000; - } - - /** - * {@inheritdoc} - */ - public function getCollectorName(): string - { - return 'app_collectors_response_time'; - } -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Services/Pusher.php b/twake/backend/core/src/Twake/Core/Services/Pusher.php deleted file mode 100755 index 468dd3d4..00000000 --- a/twake/backend/core/src/Twake/Core/Services/Pusher.php +++ /dev/null @@ -1,57 +0,0 @@ -secret = $app->getContainer()->getParameter("node.secret"); - $this->pusher = $app->getContainer()->getParameter("node.api") . "pusher"; - $this->rest = $app->getServices()->get("app.restclient"); - } - - public function push($data, $route) - { - $data = Array( - "topic" => $route, - "data" => $data - ); - - $this->pushForReal($data, $route); - } - - public function pushForReal($data, $route) - { - $signin_key = $this->pusher_private_key; - $sent_data = $data["data"]; - if ($signin_key) { - openssl_sign((string)@json_encode($sent_data), $signed, $signin_key); - $sent_data["_sign"] = base64_encode($signed); - } - - $pubData = [ - 'room' => "previous::".$data["topic"], - 'data' => $sent_data, - ]; - - $data = (string)@json_encode($pubData); - $this->rest->post($this->pusher, $data, [ - CURLOPT_HTTPHEADER => Array( - "Authorization: Token ".$this->secret, - "Content-Type: application/json" - ), - CURLOPT_CONNECTTIMEOUT => 1, - CURLOPT_TIMEOUT => 1 - ]); - } - -} diff --git a/twake/backend/core/src/Twake/Core/Services/Queues/Adapters/EmptyManager.php b/twake/backend/core/src/Twake/Core/Services/Queues/Adapters/EmptyManager.php deleted file mode 100755 index dd5b89ec..00000000 --- a/twake/backend/core/src/Twake/Core/Services/Queues/Adapters/EmptyManager.php +++ /dev/null @@ -1,47 +0,0 @@ -parameters = $parameters; - } - - public function getChannel($options = []) - { - if (!$this->connection) { - $this->connection = new AMQPStreamConnection($this->parameters["host"], $this->parameters["port"] ?: 5672, $this->parameters["username"], $this->parameters["password"], $this->parameters["vhost"] ?: '/'); - } - if (!$this->channel) { - $this->channel = $this->connection->channel(); - } - return $this->channel; - } - - public function push($route, $message, $options = []) - { - $amqp_options = []; - if (isset($options["delay"])) { - $amqp_options = [ - 'delivery_mode' => 2, # make message persistent - 'application_headers' => new AMQPTable([ - 'x-delay' => max(0, $options["delay"] * 1000) - ]) - ]; - $data["DelaySeconds"] = $options["delay"]; - } - - $message = json_encode($message); - - if(!$message){ - error_log("[RabbitMQ] - Unable to encode message to JSON"); - return; - } - - $msg = new AMQPMessage($message, $amqp_options); - - $channel = $this->getChannel(); - if($options["exchange_type"]){ - $channel->queue_declare($route, false, true, false, false); - $channel->exchange_declare($route, $options["exchange_type"], false, true, false); - $channel->basic_publish($msg, $route, $route); - }else{ - $channel->queue_declare($route, false, true, false, false, [ - "x-message-ttl" => 24 * 60 * 60 * 1000 - ]); - $channel->basic_publish($msg, '', $route); - } - } - - public function consume($route, $callback, $options) - { - $incallback = function ($msg) use ($max_messages, &$list, $callback) { - $callback($msg); - if (count($list) >= $options["max_messages"]) { - $this->stop_consume = true; - } - return true; - }; - $this->stop_consume = false; - - if($this->channel){ - $this->channel->close(); - $this->channel = null; - } - $channel = $this->getChannel(); - - if($options["exchange_type"]){ - $channel->queue_declare($route, false, true, false, false); - $channel->exchange_declare($route, $options["exchange_type"], false, true, false); - $channel->queue_bind($route, $route); - $channel->basic_qos(null, $options["max_messages"], null); - $channel->basic_consume($route, "", false, !$options["should_ack"], false, false, $incallback); - }else{ - $channel->queue_declare($route, false, true, false, false, [ - "x-message-ttl" => 24 * 60 * 60 * 1000 - ]); - $channel->basic_qos(null, $options["max_messages"], null); - $channel->basic_consume($route, '', false, !$options["should_ack"], false, false, $incallback); - } - - try { - while ($channel->is_consuming() && !$this->stop_consume) { - $channel->wait(null, false, 1); - } - } catch (\Exception $err) { - error_log($err->getMessage()); - } - return true; - } - - public function oldConsume($route, $should_ack = false, $max_messages = 10, $message_processing = 60, $options = []) - { - $list = []; - $callback = function ($msg) use ($max_messages, &$list) { - $list[] = $msg; - if (count($list) >= $max_messages) { - $this->stop_consume = true; - } - return true; - }; - $this->stop_consume = false; - - if($this->channel){ - $this->channel->close(); - $this->channel = null; - } - $channel = $this->getChannel(); - - if($options["exchange_type"]){ - $channel->queue_declare($route, false, true, false, false); - $channel->exchange_declare($route, $options["exchange_type"], false, true, false); - $channel->queue_bind($route, $route); - $channel->basic_qos(null, $max_messages, null); - $channel->basic_consume($route, "", false, !$should_ack, false, false, $callback); - }else{ - $channel->queue_declare($route, false, true, false, false, [ - "x-message-ttl" => 24 * 60 * 60 * 1000 - ]); - $channel->basic_qos(null, $max_messages, null); - $channel->basic_consume($route, '', false, !$should_ack, false, false, $callback); - } - - try { - while ($channel->is_consuming() && !$this->stop_consume) { - $channel->wait(null, false, 1); - } - } catch (\Exception $err) { - error_log($err->getMessage()); - } - return $list; - } - - public function getMessage($message) - { - return json_decode($message->body, true); - } - - public function ack($route, $message, $options = []) - { - $channel = $this->getChannel(); - - if($options["exchange_type"]){ - $channel->queue_declare($route, false, true, false, false); - $channel->exchange_declare($route, $options["exchange_type"], false, true, false); - }else{ - $channel->queue_declare($route, false, true, false, false, [ - "x-message-ttl" => 24 * 60 * 60 * 1000 - ]); - } - $message->delivery_info['channel']->basic_ack($message->delivery_info['delivery_tag']); - } - - public function close() - { - if ($this->channel) { - $this->channel->close(); - } - if ($this->connection) { - $this->connection->close(); - } - } - -} diff --git a/twake/backend/core/src/Twake/Core/Services/Queues/Queues.php b/twake/backend/core/src/Twake/Core/Services/Queues/Queues.php deleted file mode 100755 index f28bcb7c..00000000 --- a/twake/backend/core/src/Twake/Core/Services/Queues/Queues.php +++ /dev/null @@ -1,33 +0,0 @@ -adapter = new EmptyManager(); - if ($app->getContainer()->getParameter("queues.rabbitmq.use")) { - $this->adapter = new RabbitMQ($app->getContainer()->getParameter("queues.rabbitmq")); - } - } - - /** - * @return QueueManager - */ - public function getAdapter() - { - return $this->adapter; - } - -} diff --git a/twake/backend/core/src/Twake/Core/Services/Queues/Scheduled.php b/twake/backend/core/src/Twake/Core/Services/Queues/Scheduled.php deleted file mode 100755 index 3f2d05cd..00000000 --- a/twake/backend/core/src/Twake/Core/Services/Queues/Scheduled.php +++ /dev/null @@ -1,253 +0,0 @@ -doctrine = $app->getServices()->get("app.twake_doctrine"); - $this->queues = $app->getServices()->get("app.queues")->getAdapter(); - } - - private function timeKeyFromTimestamp($timestamp) - { - return floor(($timestamp / $this->time_interval)) * $this->time_interval; - } - - /** Schedule a task, called once by one node */ - public function schedule($route, $timestamp, $message) - { - if ($timestamp < date("U")) { - return; - } - - if ($timestamp < date("U") + 15 * 60) { - $this->queues->push("scheduled_notifications_" . $route, [ - "message" => $message, - "timestamp" => $timestamp - ], [ - "delay" => $timestamp - date("U") - ]); - return true; - } - - //Get current counter state (if exists) - $counter_repository = $this->doctrine->getRepository("Twake\Core:ScheduledCounter"); - $counter = $counter_repository->findOneBy(Array('time' => $this->timeKeyFromTimestamp($timestamp), 'type' => 'total')); - if (!$counter) { - $counter = new ScheduledCounter($timestamp, "total", $this->time_interval); - $counter_done = new ScheduledCounter($timestamp, "done", $this->time_interval); - $this->doctrine->persist($counter_done); - } - - //Get shard to place notification - $shard = floor(($counter->getValue() + 1) / $this->bulk_size); - - $notification = new ScheduledTask($timestamp, $shard, $route, $message, $this->time_interval); - $counter->setIncrementValue(1); - - //Save counter and notification - $this->doctrine->useTTLOnFirstInsert(min(date("U") - $timestamp + $this->time_interval * 2, $this->max_ttl)); - $this->doctrine->persist($notification); - $this->doctrine->persist($counter); - $this->doctrine->flush(); - - return true; - } - - /** Get all notifications in 15 minutes interval (all nodes are calling this each minutes) */ - public function consumeShards($timeout = 60) - { - - if ($already_sent_shard[$timekey . "_all"]) { - return; - } - - $start = date("U"); - - $timestamp = date("U"); - $timekey = $this->timeKeyFromTimestamp($timestamp); - - //Get current counter state (if exists) - $counter_repository = $this->doctrine->getRepository("Twake\Core:ScheduledCounter"); - $counter_total = $counter_repository->findOneBy(Array('time' => $timekey, 'type' => 'total')); - $counter_done = $counter_repository->findOneBy(Array('time' => $timekey, 'type' => 'done')); - //Nothing to do, no notifications - if (!$counter_total || $counter_total->getValue() == 0 - || ($counter_done && $counter_total->getValue() <= $counter_done->getValue())) { - return true; - } - - $shards = []; //Get number of shards ex. shards 0, 1 and 2 for 235 notifications and 100 as bulk size - for ($i = 0; $i <= floor($counter_total->getValue() / $this->bulk_size); $i++) { - $shards[] = $i; - } - shuffle($shards); - - foreach ($shards as $shard) { - - if (date("U") - $start > $timeout) { - return; - } - - if ($already_sent_shard[$timekey . "_" . $shard]) { - continue; - } - - $tasks_repository = $this->doctrine->getRepository("Twake\Core:ScheduledTask"); - $tokenbdd = $tasks_repository->findOneBy(Array('time' => $timekey, 'shard' => $shard . '', 'id' => "token")); - - if (!$tokenbdd) { - - $token = base64_encode(bin2hex(random_bytes(32))); - - $tokenbdd = new ScheduledTask($timestamp, $shard, "", "", $this->time_interval); - $tokenbdd->setId("token"); - $tokenbdd->setData($token); - $this->doctrine->useTTLOnFirstInsert(60 * 60); //1 hour - $this->doctrine->persist($tokenbdd); - - $this->queues->push("scheduled_notifications", [ - "timekey" => $timekey, - "shard" => $shard, - "token" => $token - ], [ - "delay" => 2 //2 seconds time to update table - ]); - - $this->doctrine->flush(); - - } else { - $already_sent_shard[$timekey . "_" . $shard] = true; - } - - } - - $already_sent_shard[$timekey . "_all"] = true; - - } - - /** Consume shard task and ack once finished sent from consumeShards method and ignore duplicatas using token (sent on scheduled_notifications) */ - public function consumeShardsFromRabbitMQ() - { - - $done = 0; - - $shards = $this->queues->oldConsume("scheduled_notifications", true, 1); - - foreach ($shards ?: [] as $shard) { - - $shard_message = $this->queues->getMessage($shard); - - $token = $shard_message["token"]; - $shard_number = $shard_message["shard"]; - $timekey = $shard_message["timekey"]; - - $tasks_repository = $this->doctrine->getRepository("Twake\Core:ScheduledTask"); - /** @var ScheduledTask $tokenbdd */ - $tokenbdd = $tasks_repository->findOneBy(Array('time' => $timekey, 'shard' => $shard_number . "", 'id' => "token")); - if ($tokenbdd && $tokenbdd->getData() === $token) { - - /** @var ScheduledTask[] $notifications */ - $notifications = $tasks_repository->findBy(Array('time' => $timekey, 'shard' => $shard_number . "")); - foreach ($notifications as $notification) { - if ($notification->getId() == "token") { - continue; - } - - $timestamp = $notification->getTimestamp(); - - $this->queues->push("scheduled_notifications_" . $notification->getRoute(), [ - "message" => $notification->getData(), - "timestamp" => $timestamp - ], [ - "delay" => $timestamp - date("U") - ]); - - } - - // Remove counters if task finished - $counter_repository = $this->doctrine->getRepository("Twake\Core:ScheduledCounter"); - /** @var ScheduledCounter $counter_total */ - $counter_total = $counter_repository->findOneBy(Array('time' => $timekey, 'type' => 'total')); - - if ($counter_total) { - /** @var ScheduledCounter $counter_done */ - $counter_done = $counter_repository->findOneBy(Array('time' => $timekey, 'type' => 'done')); - $final_value = $counter_total->getValue(); - if ($counter_done) { - $final_value = $counter_done->getValue() + $this->bulk_size; - $counter_done->setIncrementValue($this->bulk_size); - $this->doctrine->persist($counter_done); - $this->doctrine->flush(); - } - - if ($final_value >= $counter_total->getValue()) { - $this->doctrine->remove($counter_total); - $this->doctrine->remove($counter_done); - $this->doctrine->flush(); - } - } - - // Remove shard - $tasks_repository->removeBy(Array('time' => $timekey, 'shard' => $shard_number . "")); - $this->doctrine->flush(); - - } - - if ($tokenbdd) { - $this->queues->ack("scheduled_notifications", $shard); - } - - $done++; - - } - - return $done; - - } - - /** Get RabbitMQ notifications received at exact wanted time (sent on scheduled_notifications_[route]) */ - public function consume($route, $should_ack = false, $max_messages = 10, $message_processing = 60) - { - $list = $this->queues->oldConsume("scheduled_notifications_" . $route, $should_ack, $max_messages, $message_processing); - return $list; - } - - /** Ack a scheduled notification from any scheduled_notifications_[route] */ - public function ack($route, $message) - { - $this->queues->ack("scheduled_notifications_" . $route, $message); - } - - public function getMessage($message) - { - return ($this->queues->getMessage($message) ?: [])["message"] ?: null; - } - -} diff --git a/twake/backend/core/src/Twake/Core/Services/StringCleaner.php b/twake/backend/core/src/Twake/Core/Services/StringCleaner.php deleted file mode 100755 index 8366ce2f..00000000 --- a/twake/backend/core/src/Twake/Core/Services/StringCleaner.php +++ /dev/null @@ -1,136 +0,0 @@ -removeSpecialChars(strtolower($data))); - } - if (is_array($data)) { - foreach ($data as $key => $value) { - $data[$key] = $this->simplifyInArray($value); - } - } - return $data; - } - - public function removeSpecialChars($str) - { - - $regex = <<<'END' -/ -( - (?: [\x00-\x7F] #:00d2f4aa-605b-11e9-b23e-0242ac120005 single-byte sequences 0xxxxxxx - | [\xC0-\xDF][\x80-\xBF] #:00d2f4aa-605b-11e9-b23e-0242ac120005 double-byte sequences 110xxxxx 10xxxxxx - | [\xE0-\xEF][\x80-\xBF]{2} #:00d2f4aa-605b-11e9-b23e-0242ac120005 triple-byte sequences 1110xxxx 10xxxxxx * 2 - | [\xF0-\xF7][\x80-\xBF]{3} #:00d2f4aa-605b-11e9-b23e-0242ac120005 quadruple-byte sequence 11110xxx 10xxxxxx * 3 - ){1,100} #:00d2f4aa-605b-11e9-b23e-0242ac120005 ...one or more times -) -| . #:00d2f4aa-605b-11e9-b23e-0242ac120005 anything else -/x -END; - return preg_replace($regex, '$1', $this->removeAccents($str)); - - } - - public function removeAccents($str) - { - $str = preg_replace('#Ç#', 'C', $str); - $str = preg_replace('#ç#', 'c', $str); - $str = preg_replace('#è|é|ê|ë#', 'e', $str); - $str = preg_replace('#È|É|Ê|Ë#', 'E', $str); - $str = preg_replace('#à|á|â|ã|ä|å#', 'a', $str); - $str = preg_replace('#À|Á|Â|Ã|Ä|Å#', 'A', $str); - $str = preg_replace('#ì|í|î|ï#', 'i', $str); - $str = preg_replace('#Ì|Í|Î|Ï#', 'I', $str); - $str = preg_replace('#ð|ò|ó|ô|õ|ö#', 'o', $str); - $str = preg_replace('#Ò|Ó|Ô|Õ|Ö#', 'O', $str); - $str = preg_replace('#ù|ú|û|ü#', 'u', $str); - $str = preg_replace('#Ù|Ú|Û|Ü#', 'U', $str); - $str = preg_replace('#ý|ÿ#', 'y', $str); - $str = preg_replace('#Ý#', 'Y', $str); - - return $str; - } - - public function simplify($str) - { - return preg_replace("/[^a-z0-9_-]/", "", strtolower($this->removeAccents($str))); - } - - public function simplifyWithoutRemovingUpperCase($str) - { - return preg_replace("/[^a-z0-9A-Z]/", "", $this->removeAccents($str)); - } - - public function simplifyWithoutRemovingSpaces($str) - { - return preg_replace("/[^a-z0-9 ]/", "", strtolower($this->removeAccents($str))); - } - - public function simplifyWithoutRemovingSpacesOrUpperCase($str) - { - return preg_replace("/[^a-z0-9A-Z ]/", "", $this->removeAccents($str)); - } - - public function simplifyMail($str) - { - return preg_replace("/[^a-z0-9@\.\-\_\:]/", "", strtolower($this->removeAccents($str))); - } - - public function simplifyUsername($str) - { - return preg_replace("/[^a-z0-9_.-]/", "", strtolower($this->removeAccents($str))); - } - - public function simplifyURL($str) - { - return preg_replace("/[^a-z0-9@\.\-\_\/\:]/", "", strtolower($this->removeAccents($str))); - } - - public function verifyMail($mail) - { - return preg_match("/^[A-Za-z0-9.\-_]{1,250}@[A-Za-z0-9.\-_]{2,250}\.[A-Za-z0-9]{2,16}$/", $mail); - } - - public function verifyPassword($password) - { - //At least 8 chars - return strlen($password) >= 8; - //At least 8 characters, one lower and one uppercase, at least one number - //return preg_match("/^\S*(?=\S{8,})(?=\S*[a-z])(?=\S*[A-Z])(?=\S*[\d])\S*$/",$password); - } - - public function verifyUsername($username) - { - if (strlen($username) < 4 or strlen($username) > 30) { - return false; - } - return true; - } - - public function getElapsedTime($ts) - { - - $diff = (date("U") - $ts); - - if ($diff < 60 * 60) { - $r = floor($diff / 60); - $date = "Il y a " . $r . " minute" . (($r > 1) ? 's' : ''); - } elseif ($diff < 60 * 60 * 24) { - $r = floor(($diff) / (60 * 60)); - $date = "Il y a " . $r . " heure" . (($r > 1) ? 's' : ''); - } elseif ($diff < 60 * 60 * 24 * 10) { - $r = floor(($diff) / (60 * 60 * 24)); - $date = "Il y a " . $r . " jour" . (($r > 1) ? 's' : ''); - } else { - $date = "Le " . date("d/m/Y", $ts); - } - - return $date; - } - -} diff --git a/twake/backend/core/src/Twake/Core/Services/Translate.php b/twake/backend/core/src/Twake/Core/Services/Translate.php deleted file mode 100755 index 2d4ae171..00000000 --- a/twake/backend/core/src/Twake/Core/Services/Translate.php +++ /dev/null @@ -1,53 +0,0 @@ -defaultLanguage; - } - - public function setDefaultLanguage($lang) - { - $this->defaultLanguage = $lang; - } - - public function translate($key, $lang) - { - if ($key instanceof TranslationObject) - return $key->toString($lang); - - $availableLanguages = Array("fr", "en", "de"); - - if (in_array($lang, $availableLanguages)) { - $translation = Array(); - include dirname(__FILE__) . "/Languages/$lang.php"; - - if (isset(($translation)[$key])) { - return ($translation)[$key]; - } - } - - if ($lang == 'en') - return $key; - return $this->translate($key, "en"); - } -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Services/TwakeMailer.php b/twake/backend/core/src/Twake/Core/Services/TwakeMailer.php deleted file mode 100755 index 7886247e..00000000 --- a/twake/backend/core/src/Twake/Core/Services/TwakeMailer.php +++ /dev/null @@ -1,217 +0,0 @@ -app = $app; - $this->mail_parameters = $app->getContainer()->getParameter("mail"); - $this->licenceKey = $app->getContainer()->getParameter("env.licence_key"); - $this->standalone = $app->getContainer()->getParameter("env.standalone"); - $this->circle = $app->getServices()->get("app.restclient"); - $this->string_cleaner = $app->getServices()->get("app.string_cleaner"); - } - - public function send($mail, $template, $data = Array(), $attachments = Array(), $templateDirectory = "Mail") - { - $task = new MailTask(Array( - "mail" => $mail, - "data" => $data, - "template" => $template, - "attachments" => $attachments, - "template_directory" => $templateDirectory - )); - - /** @var ManagerAdapter $em */ - $em = $this->app->getServices()->get("app.twake_doctrine"); - $em->useTTLOnFirstInsert(60 * 60 * 24); //Kept 1 day - $em->persist($task); - $em->flush(); - - /** @var QueueManager $queues */ - $queues = $this->app->getServices()->get("app.queues")->getAdapter(); - $queues->push("mails", Array( - "task_id" => $task->getId() - )); - } - - public function sendInternal($mail, $template, $data = Array(), $attachments = Array(), $templateDirectory = "Mail") - { - - if(!$mail || !$this->string_cleaner->verifyMail($mail)){ - return false; - } - - $templateDirectory = "Mail"; - - $path = $this->app->getAppRootDir() . "/" . $this->mail_parameters["template_dir"]; - $loader = new FilesystemLoader($path); - - $twig = new \Twig\Environment($loader, [ - 'cache' => $this->app->getAppRootDir() . "/" . $this->app->getContainer()->get("configuration", "twig.cache"), - ]); - - $data["mail"] = $mail; - $data["twakeaddress"] = $this->mail_parameters["twake_address"]; - $data["twakeurl"] = $this->mail_parameters["twake_domain_url"]; - - $data["twakeappurl"] = $this->app->getContainer()->getParameter("env.frontend_server_name", $this->app->getContainer()->getParameter("env.server_name", $data["twakeurl"])); - - $language = "en"; - if (isset($data["_language"])) { - $language = $data["_language"]; - $templateName = $templateDirectory . "/" . $language . "/" . $template . '.html.twig'; - if (!file_exists($path . $templateName)) { - $language = "en"; - } - } - - $templateName = $templateDirectory . "/" . $language . "/" . $template . '.html.twig'; - - $template = $twig->load($templateName); - - $html = $template->render( - $data - ); - - - if ($this->standalone) { - return $this->sendHtml($mail, $html, $attachments); - } else { - return $this->sendHtmlViaRemote($mail, $html, $attachments); - } - - } - - public function sendHtml($mail, $html, $attachments = Array()) - { - //[REMOVE_ONPREMISE] - - if (defined("TESTENV") && TESTENV) { - return false; - } - - if (!$this->mailer) { - $transport = (new \Swift_SmtpTransport($this->mail_parameters["sender"]["host"], $this->mail_parameters["sender"]["port"])) - ->setUsername($this->mail_parameters["sender"]["username"]) - ->setPassword($this->mail_parameters["sender"]["password"]) - ->setAuthMode($this->mail_parameters["sender"]["auth_mode"]); - $this->mailer = new \Swift_Mailer($transport); - } - - if(isset($this->mail_parameters["dkim"]) && - isset($this->mail_parameters["dkim"]["private_key"]) && $this->mail_parameters["dkim"]["private_key"] !== "" && - isset($this->mail_parameters["dkim"]["domain_name"]) && $this->mail_parameters["dkim"]["domain_name"] !== "" && - isset($this->mail_parameters["dkim"]["selector"]) && $this->mail_parameters["dkim"]["selector"] !== ""){ - $is_DKIM = true; - }else{ - $is_DKIM = false; - } - - if($is_DKIM){ - $privateKey = $this->mail_parameters["dkim"]["private_key"]; - $domainName = $this->mail_parameters["dkim"]["domain_name"]; - $selector = $this->mail_parameters["dkim"]["selector"]; - $signer = new Swift_Signers_DKIMSigner($privateKey, $domainName, $selector); - } - - $this->app->getProviders()->getContainer()['swiftmailer.options'] = $this->mail_parameters["sender"]; - - //Sending verification mail - $message = (new \Swift_Message("")) - ->setSubject($this->html2title($html)) - ->setFrom($this->mail_parameters["from"], $this->mail_parameters["from_name"]) - ->setTo($mail) - ->setBody( - $html, - 'text/html' - ) - ->addPart( - $this->html2txt($html), - 'text/plain' - ); - - foreach ($attachments as $attachment) { - if ($attachment["type"] == "path") { - $message->attach(\Swift_Attachment::fromPath($attachment["path"])); - } - if ($attachment["type"] == "raw") { - $message->attach(new \Swift_Attachment($attachment["data"], $attachment["filename"], $attachment["mimetype"])); - } - } - - if($is_DKIM){ - $message->attachSigner($signer); - } - - $this->mailer->send($message); - - return true; - - //[/REMOVE_ONPREMISE] - - } - - private function html2title($html) - { - $a = explode("", $html, 2)[1]; - $a = explode("<", $a, 2)[0]; - return $a; - } - - private function html2txt($html) - { - $html = explode("</head>", $html); - $html = preg_replace("/<br *\/>/", "\n\n", $html[1]); - $html = strip_tags($html); - $html = preg_replace("/(\r?\n){2,}/m", "\n\n", $html); - $html = preg_replace("/^\s+/m", "", $html); - $html = preg_replace("/\s+$/m", "", $html); - return $html; - } - - public function sendHtmlViaRemote($mail, $html, $attachments = Array()) - { - $final_attachments = []; - foreach ($attachments as $attachment) { - if ($attachment["type"] == "raw") { - $final_attachments[] = $attachment; - } - } - - $masterServer = "https://app.twakeapp.com/api/remote"; - $data = Array( - "licenceKey" => $this->licenceKey, - "mail" => $mail, - "html" => $html, - "attachments" => $final_attachments - ); - $this->circle->post($masterServer . "/mail", json_encode($data), array(CURLOPT_CONNECTTIMEOUT => 60, CURLOPT_HTTPHEADER => ['Content-Type: application/json'])); - - return true; - } - -} diff --git a/twake/backend/core/src/Twake/Core/Services/TwakeRestClient.php b/twake/backend/core/src/Twake/Core/Services/TwakeRestClient.php deleted file mode 100755 index 1b0a50bf..00000000 --- a/twake/backend/core/src/Twake/Core/Services/TwakeRestClient.php +++ /dev/null @@ -1,109 +0,0 @@ -<?php - -namespace Twake\Core\Services; - -use App\App; -use Common\Http\Response; - -if (!function_exists('http_parse_headers')) { - function http_parse_headers($raw_headers) - { - $headers = array(); - $key = ''; - - foreach (explode("\n", $raw_headers) as $i => $h) { - $h = explode(':', $h, 2); - - if (isset($h[1])) { - if (!isset($headers[$h[0]])) - $headers[$h[0]] = trim($h[1]); - elseif (is_array($headers[$h[0]])) { - $headers[$h[0]] = array_merge($headers[$h[0]], array(trim($h[1]))); - } else { - $headers[$h[0]] = array_merge(array($headers[$h[0]]), array(trim($h[1]))); - } - - $key = $h[0]; - } else { - if (substr($h[0], 0, 1) == "\t") - $headers[$key] .= "\r\n\t" . trim($h[0]); - elseif (!$key) - $headers[0] = trim($h[0]); - } - } - - return $headers; - } -} - -class TwakeRestClient -{ - private $app = null; - - public function __construct(App $app) - { - $this->app = $app; - } - - public function get($url, $curl_options = []) - { - return $this->request("GET", $url, [], $curl_options); - } - - public function post($url, $data, $curl_options = []) - { - return $this->request("POST", $url, $data, $curl_options); - } - - public function put($url, $data, $curl_options = []) - { - return $this->request("PUT", $url, $data, $curl_options); - } - - public function delete($url, $curl_options = []) - { - return $this->request("DELETE", $url, [], $curl_options); - } - - public function request($method, $url, $data, $curl_options = []) - { - - if ($this->app) $this->app->getCounter()->startTimer("external_requests"); - - $options = []; - foreach ($curl_options as $key => $opt) { - $options[$key] = $opt; - } - - $options[CURLOPT_RETURNTRANSFER] = true; - $options[CURLOPT_HEADER] = true; - - $options[CURLOPT_URL] = $url; - $options[CURLOPT_CUSTOMREQUEST] = strtoupper($method); - $options[CURLOPT_POSTFIELDS] = $data; - - $curl = curl_init(); - curl_setopt_array($curl, $options); - - $response = curl_exec($curl); - $obj_response = new Response(); - - $headerSize = curl_getinfo($curl, CURLINFO_HEADER_SIZE); - - $content = substr($response, $headerSize); - $content = empty($content) ? '' : $content; - $obj_response->setContent($content); - - $headers = substr($response, 0, $headerSize); - $headers = http_parse_headers($headers); - $obj_response->headers->reset($headers); - - $curl_data = (object)curl_getinfo($curl); - $obj_response->httpStatus($curl_data->http_code); - - if ($this->app) $this->app->getCounter()->stopTimer("external_requests"); - - return $obj_response; - } - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Services/UpdateServicesStatus.php b/twake/backend/core/src/Twake/Core/Services/UpdateServicesStatus.php deleted file mode 100755 index 9372c0a8..00000000 --- a/twake/backend/core/src/Twake/Core/Services/UpdateServicesStatus.php +++ /dev/null @@ -1,97 +0,0 @@ -<?php - -namespace Twake\Core\Services; -use App\App; - -class UpdateServicesStatus -{ - - public function __construct(App $app){ - $this->app = $app; - } - - public function execute($update_status = true) - { - - $status_content = ""; - try{ - $status_content = @file_get_contents("/tmp/twake.status"); - }catch(\Exception $err){ - error_log($err->getMessage()); - } - - $ready = [ //Array or "true" - "elasticsearch_connection" => false, - "elasticsearch_mapping" => false, - "db_connection" => false, - "db_mapping" => false, - "init" => false - ]; - $has_false = false; - foreach ($ready as $key => $_) { - $ready[$key] = (strpos($status_content, ";".$key.";") !== false); - if(!$ready[$key]){ - $has_false = true; - } - } - if($has_false){ - - if($update_status){ - - $status = ";"; - - //Check ES - $es_not_found = @file_get_contents("/twake.status.no_es") === "1"; - if($es_not_found || !$this->app->getContainer()->getParameter("es.host")){ - $status .= "elasticsearch_connection;elasticsearch_mapping;"; - }else{ - $test = $this->app->getServices()->get("app.restclient")->get("http://" . $this->app->getContainer()->getParameter('es.host')); - if($test){ - $status .= "elasticsearch_connection;"; - - $service_status = @file_get_contents("/twake.status.es_mapping") === "1"; - if($service_status){ - $status .= "elasticsearch_mapping;"; - } - } - } - - //Check scyllaDB - try{ - $doctrine = $this->app->getServices()->get('app.twake_doctrine'); - $em = $doctrine->getManager(); - $connection = $em->getConnection(); - $connection = $connection->getWrappedConnection(); - $connected = true; - }catch(\Exception $e){ - $connected = false; - } - if($connected){ - $status .= "db_connection;"; - - $service_status = @file_get_contents("/twake.status.db_init") === "1"; - if($service_status){ - $status .= "db_mapping;"; - } - - } - - $service_status = @file_get_contents("/twake.status.init") === "1"; - if($service_status){ - $status .= "init;"; - } - - @file_put_contents("/tmp/twake.status", $status); - - return $this->execute(false); - } - - }else{ - $ready = true; - } - - return $ready; - - } - -} diff --git a/twake/backend/core/src/Twake/Core/Services/UserConnectedSecurity.php b/twake/backend/core/src/Twake/Core/Services/UserConnectedSecurity.php deleted file mode 100755 index 3ff2f249..00000000 --- a/twake/backend/core/src/Twake/Core/Services/UserConnectedSecurity.php +++ /dev/null @@ -1,31 +0,0 @@ -<?php - -namespace Twake\Core\Services; - -use App\App; -use Common\Http\Request; -use Common\Http\Response; - -class UserConnectedSecurity -{ - - /** @var App */ - private $app; - - public function __construct(App $app) - { - $this->app = $app; - } - - public function applySecurity(Request $request) - { - $user = $this->app->getServices()->get("app.session_handler")->getUser($request); - if (!$user || is_string($user)) { - $response = new Response(); - $response->setContent(Array("errors" => ["user_not_connected"])); - return $response; - } - return true; - } - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Services/Websockets.php b/twake/backend/core/src/Twake/Core/Services/Websockets.php deleted file mode 100755 index 79b38cf5..00000000 --- a/twake/backend/core/src/Twake/Core/Services/Websockets.php +++ /dev/null @@ -1,180 +0,0 @@ -<?php - -namespace Twake\Core\Services; - -use App\App; -use Twake\Core\Entity\WebsocketsRoute; - -/** - * Class TwakeMailer - * @package Twake\Core\Services - * - * This class send mail with twake default template - */ -class Websockets -{ - - /** @var App */ - private $app; - private $doctrine; - private $pusher; - - public function __construct(App $app) - { - $this->app = $app; - - //Register services to call for init websocekts and verify user has access - $this->services_for_type = Array( - "notifications" => "app.notifications", - "messages" => "app.messages", - "drive" => "app.drive", - "event" => "app.calendar.event", - "calendar" => "app.calendar.calendar", - "board" => "app.tasks.board", - "list" => "app.tasks.list", - "task" => "app.tasks.task", - "tags" => "globalsearch.tag", - "updates" => "app.user_updates" - ); - - $this->doctrine = $app->getServices()->get("app.twake_doctrine"); - $this->pusher = $app->getServices()->get("app.pusher"); - } - - public function init($route, $data, $controller = null) - { - - $routes = $this->doctrine->getRepository("Twake\Core:WebsocketsRoute"); - $route_entity = $routes->findOneBy(Array("route" => $route)); - - $new = false; - if (!$route_entity) { - $route_entity = new WebsocketsRoute(); - $route_entity->setRoute($route); - $route_entity->setData($data); - $new = true; - } - - $last_modified_date = $route_entity->getLastModifiedDate(); - $route_entity->setLastModifiedDate(); - //Be fast here (add lock ?) - $this->doctrine->persist($route_entity); - $this->doctrine->flush(); - - $route_endpoint = $route_entity->getRouteRandomEndpoint(); - - if ($new || (new \DateTime())->getTimestamp() - $last_modified_date->getTimestamp() > 60*60*24) { - - $new_key_part = bin2hex(random_bytes(30)); - $new_key = hash('sha256', $route_entity->getKey() . $new_key_part); - - $tmp = explode("-", $route_entity->getKeyVersion()); - $key_version = ((intval($tmp[0]) + 1) % 1000) . "-" . date("U") . "-" . random_int(0, 10000); - - $this->push($route_endpoint, Array( - "new_key" => $new_key_part, - "key_version" => $key_version - ), $route_entity); - - - $route_entity->setKey($new_key); - $route_entity->setKeyVersion($key_version); - $this->doctrine->persist($route_entity); - $this->doctrine->flush(); - - } else { - $new_key = $route_entity->getKey(); - $key_version = $route_entity->getKeyVersion(); - } - - //Verify user has access - $get_result = false; - if ($controller) { - $type = $data["type"]; - if (isset($this->services_for_type[$type])) { - - - $service = $this->app->getServices()->get($this->services_for_type[$type]); - $has_access = $service->init($route, $data, $controller->getUser()); - if (!$has_access) { - return Array(); - } else if (isset($data["get_options"]) && method_exists($service, "get")) { - $_get_result = $service->get($data["get_options"], $controller->getUser()); - if ($_get_result) { - $get_result = []; - foreach ($_get_result as $result) { - if (is_array($result)) { - $get_result[] = $result; - } else { - $get_result[] = $result->getAsArray(); - } - } - } - } - } else { - return Array(); - } - } - - return Array( - "route_id" => $route_endpoint, - "key" => $new_key, - "key_version" => $key_version, - "get" => $get_result - ); - - } - - public function push($route, $event, $route_entity = null) - { - - if (is_array($event) && !array_diff_key($event, array_keys(array_keys($event)))) { - $event = ["multiple" => $event]; - } - - if (!$route_entity) { - $routes = $this->doctrine->getRepository("Twake\Core:WebsocketsRoute"); - $route_entity = $routes->findOneBy(Array("route" => $route)); - } - - if (!$route_entity) { - //Nobody never init this collection so nobody will receive this event - return false; - } - - $route_endpoint = $route_entity->getRouteRandomEndpoint(); - $key_version = $route_entity->getKeyVersion(); - $key = $route_entity->getKey(); - - //Encrypt event - $salt = openssl_random_pseudo_bytes(256); - $iv = openssl_random_pseudo_bytes(16); - $iterations = 9; - $prepared_key = hash_pbkdf2("sha512", $key, $salt, $iterations, 64); - $string = json_encode($event); - $encrypted = trim( - base64_encode( - openssl_encrypt( - $string, - 'aes-256-cbc', - hex2bin($prepared_key), - OPENSSL_RAW_DATA, - $iv - ) - ) - ); - - $this->pusher->push(Array( - "route" => $route, - "public" => $event, - "encrypted" => $encrypted, - "iv" => bin2hex($iv), - "salt" => bin2hex($salt), - "key_version" => $key_version - ), "collections/" . $route_endpoint); - - return true; - - } - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Discussion/Bundle.php b/twake/backend/core/src/Twake/Discussion/Bundle.php deleted file mode 100755 index 299925b8..00000000 --- a/twake/backend/core/src/Twake/Discussion/Bundle.php +++ /dev/null @@ -1,30 +0,0 @@ -<?php - -namespace Twake\Discussion; - -require_once __DIR__ . "/Resources/Routing.php"; -require_once __DIR__ . "/Resources/Services.php"; - -use Twake\Discussion\Resources\Routing; -use Twake\Discussion\Resources\Services; -use Common\BaseBundle; - -class Bundle extends BaseBundle -{ - - protected $bundle_root = __DIR__; - protected $bundle_namespace = __NAMESPACE__; - protected $routes = []; - protected $services = []; - - public function init() - { - $routing = new Routing(); - $this->routes = $routing->getRoutes(); - $this->routing_prefix = $routing->getRoutesPrefix(); - $this->initRoutes(); - - $this->services = (new Services())->getServices(); - $this->initServices(); - } -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Discussion/Controller/Discussion.php b/twake/backend/core/src/Twake/Discussion/Controller/Discussion.php deleted file mode 100755 index efc85ba5..00000000 --- a/twake/backend/core/src/Twake/Discussion/Controller/Discussion.php +++ /dev/null @@ -1,114 +0,0 @@ -<?php - -namespace Twake\Discussion\Controller; - -use Common\BaseController; -use Common\Http\Response; -use Common\Http\Request; - - -class Discussion extends BaseController -{ - - public function remove(Request $request) - { - $options = $request->request->get("options"); - $object = $request->request->get("object"); - - if ($object["ephemeral_id"]) { - return new Response(Array("status" => "cancelled")); - } - - $res = $this->get("app.messages")->remove($object, $options, $this->getUser()); - if (!$res) { - return new Response(Array("status" => "error")); - } - - return new Response(Array("data" => Array("object" => $res))); - } - - public function save(Request $request) - { - $options = $request->request->get("options"); - $object = $request->request->get("object"); - $res = $this->get("app.messages")->save($object, $options, $this->getUser()); - if (!$res) { - return new Response(Array("status" => "error")); - } else { - if (!$object["id"]) { - $this->get("administration.counter")->incrementCounter("total_messages", 1); - if($GLOBALS["segment_enabled"]) \Segment::track([ - "event" => "message:send", - "userId" => $this->getuser()->getIdentityProviderId() ?: $this->getUser()->getId() - ]); - } - } - - return new Response(Array("data" => Array("object" => $res))); - } - - public function getAction(Request $request) - { - $options = $request->request->get("options"); - $objects = $this->get("app.messages")->get($options, $this->getUser()); - if ($objects === false) { - return new Response(Array("status" => "error")); - } - return new Response(Array("data" => $objects)); - } - - public function nodeRealTime(Request $request) - { - $token = explode(" ", getallheaders()["Authorization"])[1]; - $secret = $this->app->getContainer()->getParameter("node.secret"); - if($token != $secret){ - error_log("got node realtime request unauthorized"); - return new Response(Array("error" => "unauthorized")); - } - - $context = $request->request->get("context"); - $entity = $request->request->get("entity"); - $participant = $request->request->get("participant"); - - $channel_id = $participant["id"]; - $parent_message_id = $entity["thread_id"] === $entity["id"] ? "" : $entity["thread_id"]; - $removed = $entity["subtype"] == "deleted"; - - $array = $this->get("app.messages")->convertFromNode($entity, [ - "channel_id" => $channel_id - ]); - - if($removed){ - - $event = Array( - "client_id" => "system", - "action" => "remove", - "message_id" => $entity["id"], - "thread_id" => $parent_message_id - ); - $this->app->getServices()->get("app.pusher")->push($event, "channels/" . $channel_id . "/messages/updates"); - - } else { - - $event = Array( - "client_id" => "system", - "action" => "update", - "message_id" => $entity["id"], - "thread_id" => $parent_message_id - ); - $this->app->getServices()->get("app.pusher")->push($event, "channels/" . $channel_id . "/messages/updates"); - } - - $event = Array( - "client_id" => "bot", - "action" => "save", - "object_type" => "", - "object" => $array - ); - $this->app->getServices()->get("app.websockets")->push("messages/" . $channel_id, $event); - - return new Response(Array("data" => "ok")); - } - - -} diff --git a/twake/backend/core/src/Twake/Discussion/Entity/Message.php b/twake/backend/core/src/Twake/Discussion/Entity/Message.php deleted file mode 100755 index 3ef1db86..00000000 --- a/twake/backend/core/src/Twake/Discussion/Entity/Message.php +++ /dev/null @@ -1,634 +0,0 @@ -<?php - -namespace Twake\Discussion\Entity; - -use Doctrine\ORM\Mapping as ORM; - - -use Twake\Core\Entity\FrontObject; - -/** - * Message - * - * @ORM\Table(name="message",options={"engine":"MyISAM", "scylladb_keys": {{"channel_id":"ASC", "parent_message_id":"ASC", "id":"DESC"}, {"id":"ASC"}} }) - * @ORM\Entity() - */ -class Message extends FrontObject -{ - - /** - * @ORM\Column(name="id", type="twake_timeuuid") - * @ORM\Id - */ - private $id; - - /** - * @ORM\Column(name="channel_id", type="twake_uuid") - * @ORM\Id - */ - private $channel_id; - - /** - * @ORM\Column(name="parent_message_id", type="twake_no_salt_text") - * @ORM\Id - */ - private $parent_message_id = ""; - - /** - * @ORM\Column(name="responses_count", type="integer") - */ - private $responses_count = 0; - - /** - * @ORM\Column(name="message_type", type="integer") - */ - private $message_type = 0; //0 from user, 1 from application, 2 from system - - /** - * @ORM\ManyToOne(targetEntity="Twake\Users\Entity\User",cascade={"persist"}) - * @ORM\JoinColumn(nullable=true) - */ - private $sender = null; - - /** - * @ORM\Column(name="application_id", type="twake_no_salt_text", nullable=true) - */ - private $application_id = null; - - - /** - * @ORM\Column(name="creation_date", type="twake_datetime", nullable=true) - */ - private $creation_date; - - /** - * @ORM\Column(name="modification_date", type="twake_datetime", nullable=true) - */ - private $modification_date; - - /** - * @ORM\Column(type="twake_boolean") - */ - private $edited = false; - - /** - * @ORM\Column(type="twake_boolean") - */ - private $pinned = false; - - /** - * @ORM\Column(name="hidden_data", type="twake_text") - */ - private $hidden_data = "{}"; - - /** - * @ORM\Column(name="reactions", type="twake_text") - */ - private $reactions = "{}"; - - /** - * @ORM\Column(name="content", type="twake_text") - */ - private $content = "[]"; - - /** - * @ORM\Column(name="user_specific_content", type="twake_text") - */ - private $user_specific_content = "[]"; - - /** - * @ORM\Column(name="tags", type="twake_text", nullable=true) - */ - private $tags; - - /** - * @ORM\Column(name="block_id", type="twake_timeuuid", nullable=true) - */ - private $block_id = null; - - /** - * @ORM\Column(name="increment_at_time", type="twake_bigint", nullable=true) - */ - private $increment_at_time = null; - - /** - * Message constructor. - */ - - public function __construct($channel_id, $parent_message_id, $increment_at_time = 0) - { - parent::__construct(); - $this->channel_id = $channel_id; - $this->parent_message_id = $parent_message_id; - $this->creation_date = new \DateTime(); - $this->modification_date = new \DateTime(); - $this->increment_at_time = $increment_at_time; - } - - - /** - * @return mixed - */ - public function getTags() - { - return json_decode($this->tags); - } - - /** - * @param mixed $tags - */ - public function setTags($tags) - { - $this->tags = json_encode($tags); - } - - /** - * Get the value of Id - * - * @return mixed - */ - - public function getId() - { - return $this->id; - } - - /** - * Set the value of Id - * - * @param mixed id - * - * @return self - */ - public function setId($id) - { - $this->id = $id; - - return $this; - } - - /** - * Get the value of Channel Id - * - * @return mixed - */ - public function getChannelId() - { - return $this->channel_id; - } - - /** - * Get the value of Parent Message Id - * - * @return mixed - */ - public function getParentMessageId() - { - return $this->parent_message_id; - } - - public function setParentMessageId($id) - { - $this->parent_message_id = $id; - } - - /** - * Get the value of Responses Count - * - * @return mixed - */ - public function getResponsesCount() - { - return $this->responses_count; - } - - /** - * Set the value of Responses Count - * - * @param mixed responses_count - * - * @return self - */ - public function setResponsesCount($responses_count) - { - $this->responses_count = max(0, $responses_count); - - return $this; - } - - /** - * Get the value of Message Type - * - * @return mixed - */ - public function getMessageType() - { - return $this->message_type; - } - - /** - * Set the value of Message Type - * - * @param mixed message_type - * - * @return self - */ - public function setMessageType($message_type) - { - $this->message_type = $message_type; - - return $this; - } - - /** - * Get the value of Sender - * - * @return mixed - */ - public function getSender() - { - return $this->sender; - } - - /** - * Set the value of Sender - * - * @param mixed sender - * - * @return self - */ - public function setSender($sender) - { - $this->sender = $sender; - - return $this; - } - - /** - * Get the value of Application - * - * @return mixed - */ - public function getApplicationId() - { - return $this->application_id; - } - - /** - * Set the value of Application - * - * @param mixed application - * - * @return self - */ - public function setApplicationId($application_id) - { - $this->application_id = $application_id; - - return $this; - } - - /** - * Get the value of Creation Date - * - * @return mixed - */ - public function getCreationDate() - { - return $this->creation_date; - } - - /** - * Set the value of Creation Date - * - * @param mixed creation_date - * - * @return self - */ - public function setCreationDate($creation_date) - { - $this->creation_date = $creation_date; - - return $this; - } - - /** - * Get the value of Modification Date - * - * @return mixed - */ - public function getModificationDate() - { - return $this->modification_date; - } - - /** - * Set the value of Modification Date - * - * @param mixed modification_date - * - * @return self - */ - public function setModificationDate($modification_date) - { - $this->modification_date = $modification_date; - - return $this; - } - - /** - * Get the value of Edited - * - * @return mixed - */ - public function getEdited() - { - return $this->edited; - } - - /** - * Set the value of Edited - * - * @param mixed edited - * - * @return self - */ - public function setEdited($edited) - { - $this->edited = $edited; - - return $this; - } - - /** - * Get the value of Pinned - * - * @return mixed - */ - public function getPinned() - { - return $this->pinned; - } - - /** - * Set the value of Pinned - * - * @param mixed pinned - * - * @return self - */ - public function setPinned($pinned) - { - $this->pinned = $pinned; - - return $this; - } - - /** - * Get the value of Hidden Data - * - * @return mixed - */ - public function getHiddenData() - { - if (!$this->hidden_data) { - return Array(); - } - return json_decode($this->hidden_data, 1); - } - - /** - * Set the value of Hidden Data - * - * @param mixed hidden_data - * - * @return self - */ - public function setHiddenData($hidden_data) - { - $this->hidden_data = json_encode($hidden_data); - - return $this; - } - - /** - * Get the value of Hidden Data - * - * @return mixed - */ - public function getReactions() - { - if (!$this->reactions) { - return Array(); - } - return json_decode($this->reactions, 1); - } - - /** - * Set the value of Hidden Data - * - * @param mixed hidden_data - * - * @return self - */ - public function setReactions($reactions) - { - $this->reactions = json_encode($reactions); - - return $this; - } - - public function getContent() - { - return json_decode($this->content, true); - } - - public function setContent($content) - { - $this->content = json_encode($content); - } - - public function getUserSpecificContent() - { - return json_decode($this->user_specific_content, true); - } - - public function setUserSpecificContent($user_specific_content) - { - $this->user_specific_content = json_encode($user_specific_content); - } - - public function getBlockId() - { - return $this->block_id; - } - - public function setBlockId($block_id) - { - $this->block_id = $block_id; - } - - public function getIncrementAtTime() - { - return $this->increment_at_time; - } - - public function setIncrementAtTime($increment_at_time) - { - $this->increment_at_time = $increment_at_time; - } - - public function getMessageTypeObject() { - switch($this->getMessageType()) { - case 1: return Array( - "type" => "message", - "subtype" => "application", - ); - case 2: return Array( - "type" => "message", - "subtype" => "system", - ); - case 0: - default: - return Array( - "type" => "message", - "subtype" => null, - ); - } - } - - public function getNewApiObjectReactions($messageEntity) { - $reactions = Array(); - - if($messageEntity->getReactions() == null) return $reactions; - - $orignal_reactions_array = $messageEntity->getReactions(); - - foreach($orignal_reactions_array as $key => $value){ - $new_reaction_object = Array( - "name" => $value["name"] ?: $key - ); - $new_reaction_object = array_merge($new_reaction_object, $value); - $new_reaction_object["users"] = array_values($new_reaction_object["users"]); - - array_push($reactions, $new_reaction_object); - } - - return $reactions; - } - - /** - * Set files for new api object - */ - public function setFiles($messageEntity) { - $files = Array(); - - if(!isset($messageEntity->getContent()['files'])) return $files; - - $orignal_files = $messageEntity->getContent()['files']; - - foreach($orignal_files as $file){ - if($file["type"] == "file") { - $new_file_format = Array( - "company_id" => "", - "message_id" => $messageEntity->getId(), - "id" => $file["content"], - "metadata" => Array( - "source" => "drive", - "external_id" => $file["content"] - ), - ); - array_push($files, $new_file_format); - } - } - - return $files; - } - - /** - * Set blocks for new api object - */ - public function setBlocks($messageEntity) { - $blocks = Array(); - $content = $messageEntity->getContent(); - - if(!isset($content)) return $blocks; - - $markdown_element = Array( - "type" => "mrkdwn", - "text" => isset($content['original_str']) ? $content['original_str'] : "" - ); - - $new_block_format = Array( - "type" => "section", - "text" => $markdown_element - ); - - array_push($blocks, $new_block_format); - - return $blocks; - } - - /** - * Generate new api object - */ - public function generateNewApiObject($messageEntity, $array) { - - $message_type_object = $messageEntity->getMessageTypeObject(); - $api_object = Array( - "id" => $messageEntity->getId(), - "channel_id" => $messageEntity->getChannelId(), - "thread_id" => $messageEntity->getParentMessageId(), - "created_at" => ($messageEntity->getCreationDate() ? $messageEntity->getCreationDate()->getTimestamp() : null), - "application_id" => $messageEntity->getApplicationId(), - "user_id" => is_string($messageEntity->getSender()) ? $messageEntity->getSender() : ($messageEntity->getSender() ? $messageEntity->getSender()->getId() : null), - "edited" => $messageEntity->getEdited(), - "text" => isset($messageEntity->getContent()['original_str']) ? $messageEntity->getContent()['original_str'] : "", - "blocks" => $messageEntity->setBlocks($messageEntity), - "files" => $messageEntity->setFiles($messageEntity), - "context" => $messageEntity->getHiddenData(), - "title" => $messageEntity->getHiddenData()['custom_title'] ?: null, - "picture" => $messageEntity->getHiddenData()['custom_icon'] ?: null, - "stats" => Array( - "last_activity" => ($this->getModificationDate() ? $this->getModificationDate()->getTimestamp() : null), - "replies" => $messageEntity->getResponsesCount() - ), - "pinned_info" => Array( - "pinned_by" => is_string($messageEntity->getSender()) ? $messageEntity->getSender() : ($messageEntity->getSender() ? $messageEntity->getSender()->getId() : null), - "pinned_at" => 0, - ), - "reactions" => $messageEntity->getNewApiObjectReactions($messageEntity), - ); - - return $array = array_merge($api_object, $message_type_object); - } - - - public function getAsArray() - { - $api_object = $this->generateNewApiObject($this, $api_object); - - $old_message_object = Array( - "id" => $this->getId(), - "front_id" => $this->getFrontId(), - "channel_id" => $this->getChannelId(), - "parent_message_id" => $this->getParentMessageId(), - "responses_count" => $this->getResponsesCount(), - "message_type" => $this->getMessageType(), - "sender" => is_string($this->getSender()) ? $this->getSender() : ($this->getSender() ? $this->getSender()->getId() : null), - "application_id" => $this->getApplicationId(), - "edited" => $this->getEdited(), - "pinned" => $this->getPinned(), - "hidden_data" => $this->getHiddenData(), - "_reactions" => $this->getReactions(), - "modification_date" => ($this->getModificationDate() ? $this->getModificationDate()->getTimestamp() : null), - "creation_date" => ($this->getCreationDate() ? $this->getCreationDate()->getTimestamp() : null), - "content" => $this->getContent(), - "user_specific_content" => $this->getUserSpecificContent(), - "increment_at_time" => $this->getIncrementAtTime(), - ); - - return array_merge($old_message_object, $api_object); - } - -} diff --git a/twake/backend/core/src/Twake/Discussion/Entity/MessageReaction.php b/twake/backend/core/src/Twake/Discussion/Entity/MessageReaction.php deleted file mode 100755 index dfe86b5c..00000000 --- a/twake/backend/core/src/Twake/Discussion/Entity/MessageReaction.php +++ /dev/null @@ -1,70 +0,0 @@ -<?php - -namespace Twake\Discussion\Entity; - -use Doctrine\ORM\Mapping as ORM; - - -use Twake\Core\Entity\FrontObject; - -/** - * Message - * - * @ORM\Table(name="message_reaction",options={"engine":"MyISAM", "scylladb_keys": {{"message_id":"ASC", "user_id":"ASC"}} }) - * @ORM\Entity() - */ -class MessageReaction -{ - - /** - * @ORM\Column(name="message_id", type="twake_timeuuid") - * @ORM\Id - */ - private $message_id; - - /** - * @ORM\Column(name="user_id", type="twake_timeuuid") - * @ORM\Id - */ - private $user_id; - - /** - * @ORM\Column(name="reaction", type="twake_text") - */ - private $reaction = ""; - - /** - * Message constructor. - */ - public function __construct($message_id, $user_id) - { - $this->message_id = $message_id; - $this->user_id = $user_id; - } - - /** - * @return mixed - */ - public function getReaction() - { - return $this->reaction; - } - - /** - * @param mixed $reaction - */ - public function setReaction($reaction) - { - $this->reaction = $reaction; - } - - /** - * @return mixed - */ - public function getUserId() - { - return $this->user_id; - } - - -} diff --git a/twake/backend/core/src/Twake/Discussion/Resources/Routing.php b/twake/backend/core/src/Twake/Discussion/Resources/Routing.php deleted file mode 100755 index 7e9bd3f9..00000000 --- a/twake/backend/core/src/Twake/Discussion/Resources/Routing.php +++ /dev/null @@ -1,19 +0,0 @@ -<?php - -namespace Twake\Discussion\Resources; - -use Common\BaseRouting; - -class Routing extends BaseRouting -{ - - protected $routing_prefix = "ajax/discussion/"; - - protected $routes = [ - "get" => ["handler" => "Discussion:getAction", "methods" => ["POST"], "security" => ["user_connected_security"]], - "save" => ["handler" => "Discussion:save", "methods" => ["POST"], "security" => ["user_connected_security"]], - "remove" => ["handler" => "Discussion:remove", "methods" => ["POST"], "security" => ["user_connected_security"]], - "noderealtime" => ["handler" => "Discussion:nodeRealTime", "methods" => ["POST"]] - ]; - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Discussion/Resources/Services.php b/twake/backend/core/src/Twake/Discussion/Resources/Services.php deleted file mode 100755 index 6209d8b6..00000000 --- a/twake/backend/core/src/Twake/Discussion/Resources/Services.php +++ /dev/null @@ -1,14 +0,0 @@ -<?php - -namespace Twake\Discussion\Resources; - -use Common\BaseServices; - -class Services extends BaseServices -{ - protected $services = [ - "app.messages" => "MessageSystem", - "app.messages.depreciated" => "MessageSystemDepreciated" - ]; - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Discussion/Services/MessageSystem.php b/twake/backend/core/src/Twake/Discussion/Services/MessageSystem.php deleted file mode 100755 index 48e75bb3..00000000 --- a/twake/backend/core/src/Twake/Discussion/Services/MessageSystem.php +++ /dev/null @@ -1,345 +0,0 @@ -<?php - - -namespace Twake\Discussion\Services; - -use App\App; -use Twake\Discussion\Entity\Message; -use \Firebase\JWT\JWT; - -class MessageSystem -{ - - public function __construct(App $app) - { - $this->app = $app; - $this->rest = $app->getServices()->get("app.restclient"); - $this->doctrine = $app->getServices()->get("app.twake_doctrine"); - $this->depreciated = $app->getServices()->get("app.messages.depreciated"); - $this->access_manager = $app->getServices()->get("app.accessmanager"); - } - - public function init($route, $data, $current_user = null) - { - return $this->depreciated->init($route, $data, $current_user); - } - - public function hasAccess($data, $current_user = null, $message = null) - { - return $this->depreciated->hasAccess($data, $current_user, $message); - } - - public function get($options, $current_user) - { - $offset = isset($options["offset"]) ? $options["offset"] : null; - $limit = isset($options["limit"]) ? $options["limit"] : 20; - $message_id = isset($options["id"]) ? $options["id"] : ""; - $parent_message_id = isset($options["parent_message_id"]) ? $options["parent_message_id"] : ($message_id ?: ""); - - if($options["company_id"] && $options["workspace_id"]){ - $channel = [ - "company_id" => $options["company_id"], - "workspace_id" => $options["workspace_id"], - "channel_id" => $options["channel_id"], - ]; - }else{ - $channel = $this->getInfosFromChannel($options["company_id"], $options["workspace_id"], $options["channel_id"]); - if(!$channel){ - return; - } - } - - if($message_id){ - $uri = "/companies/".$channel["company_id"]."/threads/".$parent_message_id."/messages/".$message_id; - $singleResponse = $this->forwardToNode("GET", $uri, [], $current_user); - $response = []; - $response["resources"] = [ $singleResponse["resource"] ]; - }else{ - if(!$parent_message_id){ - $uri = "/companies/".$channel["company_id"]."/workspaces/".$channel["workspace_id"]."/channels/".$channel["channel_id"]."/feed?replies_per_thread=5&limit=".abs($limit)."&page_token=".$offset."&direction=".($limit > 0?"history":"future"); - }else{ - $uri = "/companies/".$channel["company_id"]."/threads/".$parent_message_id."/messages?replies_per_thread=5&limit=".abs($limit)."&page_token=".$offset."&direction=".($limit > 0?"history":"future"); - } - $response = $this->forwardToNode("GET", $uri, [], $current_user); - } - - if(!is_array($response["resources"])){ - return []; - } - - $messages = []; - foreach($response["resources"] as $message){ - if($message["id"]){ - $messages[] = $this->convertFromNode($message, $channel); - if($message["last_replies"]){ - foreach($message["last_replies"] as $reply){ - if($reply["id"] !== $message["id"]) - $messages[] = $this->convertFromNode($reply, $channel); - } - } - } - } - - return $messages; - } - - public function remove($object, $options, $current_user = null) - { - $channel = $this->getInfosFromChannel($object["company_id"], $object["workspace_id"], $object["channel_id"]); - $channel["company_id"] = $channel["company_id"] ?? $object["company_id"]; - $channel["workspace_id"] = $channel["workspace_id"] ?? $object["workspace_id"]; - - if(!$channel){ - return; - } - - if($object["id"]){ - $response = $this->forwardToNode("POST", "/companies/".$channel["company_id"]."/threads/".($object["parent_message_id"] ?: $object["id"])."/messages/".$object["id"]."/delete", null, $current_user, $application ? $application->getId() : null); - return $this->convertFromNode($response["resource"], $channel); - } - return null; - } - - public function save($object, $options, $current_user = null, $application = null) - { - $channel = $this->getInfosFromChannel($object["company_id"], $object["workspace_id"], $object["channel_id"]); - $channel["company_id"] = $channel["company_id"] ?? $object["company_id"]; - $channel["workspace_id"] = $channel["workspace_id"] ?? $object["workspace_id"]; - - if(!$channel){ - return; - } - - $response = null; - - if($object["id"]){ - //Manage message pin - $response = $this->forwardToNode("POST", "/companies/".$channel["company_id"]."/threads/".($object["parent_message_id"] ?: $object["id"])."/messages/".$object["id"]."/pin", ["pin" => $object["pinned"]], $current_user, $application ? $application->getId() : null); - } - - if(isset($object["_user_reaction"])){ - //Manage user reaction - $response = $this->forwardToNode( - "POST", - "/companies/".$channel["company_id"]."/threads/".($object["parent_message_id"] ?: $object["id"])."/messages/".$object["id"]."/reaction", - [ - "reactions" => $object["_user_reaction"] ? - (is_array($object["_user_reaction"]) ? $object["_user_reaction"] : [$object["_user_reaction"]]) - : [] - ], - $current_user, $application ? $application->getId() : null); - }else{ - //Manage message edition - - $newMessage = !$object["id"]; - - $message = $this->convertToNode($object); - if(!$current_user){ - $message["subtype"] = "system"; - } - if($application){ - $message["subtype"] = "application"; - } - $message["context"]["_front_id"] = $object["front_id"]; - - //New thread - if(!$object["parent_message_id"] && $newMessage){ - - $data = [ - "resource" => [ - "participants" => [ - [ - "type" => "channel", - "id" => $channel["channel_id"], - "workspace_id" => $channel["workspace_id"], - "company_id" => $channel["company_id"], - ] - ] - ], - "options" => [] - ]; - - $response = $this->forwardToNode("POST", "/companies/".$channel["company_id"]."/threads", $data, $current_user, $application ? $application->getId() : null); - $object["parent_message_id"] = $response["resource"]["id"]; - $message["thread_id"] = $response["resource"]["id"]; - $message["id"] = $response["resource"]["id"]; - } - - $options = []; - if(isset($object["_once_replace_message_parent_message"])){ - $options["previous_thread"] = $object["_once_replace_message_parent_message"] ?: $object["_once_replace_message"] ?: $object["id"]; - } - - //New message in thread (also called for new threads because we set the parent_message_id automatically) - if($object["parent_message_id"] && $newMessage){ - - $data = [ - "resource" => $message, - "options" => $options - ]; - - $response = $this->forwardToNode("POST", "/companies/".$channel["company_id"]."/threads/".($object["parent_message_id"] ?: $object["id"])."/messages", $data, $current_user, $application ? $application->getId() : null); - - }else - - //Edited message - if(!$newMessage){ - - $data = [ - "resource" => $message, - "options" => $options - ]; - - $response = $this->forwardToNode("POST", "/companies/".$channel["company_id"]."/threads/".($object["parent_message_id"] ?: $object["id"])."/messages/".$object["id"], $data, $current_user, $application ? $application->getId() : null); - - }else { - - error_log("Unknown operation"); - - } - - } - - error_log(json_encode($response)); - - return $this->convertFromNode($response["resource"], $channel); - } - - private function convertToNode($object){ - - //TODO convert to new block if this is user 'simple' message - - $blocks = [[ - "type" => "twacode", - "elements" => $object["content"]["formatted"] ?: $object["content"]["prepared"] ?: $object["content"] - ]]; - - $files = []; - - $ephemeral = (isset($object["_once_ephemeral_message"]) && $object["_once_ephemeral_message"] || isset($object["ephemeral_id"]) && $object["ephemeral_id"]); - - return [ - "ephemeral" => $ephemeral ? [ - "id" => $object["ephemeral_id"] ?: $object["front_id"] ?: $object["id"] ?: $object["ephemeral_message_recipients"][0], - "version" => date("U"), - "recipient" => $object["ephemeral_message_recipients"][0], - "recipient_context_id" => "", - ] : null, - "text" => $object["content"]["original_str"] ?: $object["content"]["fallback_string"], - "blocks" => $blocks, - "files" => $object["files"], - "context" => $object["hidden_data"] - ]; - } - - public function convertFromNode($message, $channel){ - - if($message["last_replies"] || $message["thread_id"] === $message["id"]){ - $message["thread_id"] = ""; - } - - $phpMessage = new Message($channel["channel_id"], $message["thread_id"]); - - $phpMessage->setId($message["id"] ?: $message["ephemeral"]["id"]); - $phpMessage->setFrontId($message["context"]["_front_id"] ?: $message["id"] ?: $message["ephemeral"]["id"]); - $phpMessage->setSender($message["user_id"]); - $phpMessage->setApplicationId($message["application_id"]); - $phpMessage->setMessageType($message["subtype"] == "application" ? 1 : ($message["subtype"] == "system" ? 2 : 0)); - $phpMessage->setHiddenData($message["context"]); - - $phpMessage->setPinned(!!$message["pinned_info"]); - $phpMessage->setEdited(false); //!!$message["edited"]); - $phpMessage->setReactions($message["reactions"]); - - $phpMessage->setCreationDate(new \DateTime("@" . intval($message["created_at"] / 1000))); - $phpMessage->setModificationDate(new \DateTime("@" . intval(($message["edited_at"] ?: $message["created_at"]) / 1000))); - - $phpMessage->setResponsesCount(max(0, $message["stats"]["replies"] - 1)); - - // Find the twacode block if exists or get the fallback string - $prepared = []; - if($message["blocks"]) - foreach( $message["blocks"] as $block ){ - if($block["type"] === "twacode"){ - $prepared = $block["elements"]; - } - if($block["type"] === "section" && count($prepared) === 0){ - $prepared = [["type" => "twacode", "content" => $block["text"]["text"] || ""]]; - } - } - - - $phpMessage->setContent([ - "fallback_string" => $message["text"], - "original_str" => $message["text"], - "prepared" => $prepared - ]); - - $array = $phpMessage->getAsArray(); - - if($message["subtype"] === "deleted"){ - $array["subtype"] = "deleted"; - } - - if($message["ephemeral"]){ - $array["front_id"] = $message["id"]; - $array["ephemeral_id"] = $message["id"] ?: $message["ephemeral"]["id"]; - $array["ephemeral_message_recipients"] =[ $message["ephemeral"]["recipient"]]; - $array["_user_ephemeral"] = true; - } - - $array["files"] = $message["files"]; - - return $array; - } - - private function getInfosFromChannel($companyId, $workspaceId, $channelId){ - - $this->access_manager->getChannelCache($companyId, $workspaceId, $channelId); - - $channelDetails = $this->doctrine->getRepository("Twake\Core:CachedFromNode")->findOneBy(Array("company_id" => "unused", "type" => "channel", "key"=>$channelId)); - if($channelDetails){ - return $channelDetails->getData(); - } - return null; - } - - private function forwardToNode($method, $route, $data = [], $user = null, $applicationId = null){ - - $uri = str_replace("/private", "/internal/services/messages/v1", $this->app->getContainer()->getParameter("node.api")) . - ltrim($route, "/"); - - error_log($user); - - $key = $this->app->getContainer()->getParameter("jwt.secret"); - $payload = [ - "exp" => date("U") + 60, - "type" => "access", - "iat" => intval(date("U")) - 60*10, - "nbf" => intval(date("U")) - 60*10, - "sub" => $user ? $user->getId() : null, - "email" => $user ? $user->getEmail() : null, - "application_id" => $applicationId, - "server_request" => true, - "provider_id" => $user ? $user->getIdentityProviderId() : null, - "track" => $user ? $user->getTrack() : true - ]; - $jwt = JWT::encode($payload, $key); - - $opt = [ - CURLOPT_HTTPHEADER => Array( - "Authorization: Bearer " . $jwt, - "Content-Type: application/json" - ), - CURLOPT_CONNECTTIMEOUT => 1, - CURLOPT_TIMEOUT => 1 - ]; - - $res = $this->rest->request($method, $uri, json_encode($data), $opt); - - $res = $res->getContent(); - $res = json_decode($res, 1); - return $res; - } - -} diff --git a/twake/backend/core/src/Twake/Discussion/Services/MessageSystemDepreciated.php b/twake/backend/core/src/Twake/Discussion/Services/MessageSystemDepreciated.php deleted file mode 100755 index 39819612..00000000 --- a/twake/backend/core/src/Twake/Discussion/Services/MessageSystemDepreciated.php +++ /dev/null @@ -1,832 +0,0 @@ -<?php - - -namespace Twake\Discussion\Services; - -use App\App; -use Twake\Discussion\Entity\Call; -use Twake\Discussion\Entity\Channel; -use Twake\Discussion\Entity\Message; -use Twake\Discussion\Entity\MessageLike; -use Twake\Discussion\Entity\MessageReaction; -use Twake\Discussion\Model\MessagesSystemInterface; -use Twake\GlobalSearch\Entity\Bloc; -use Twake\Core\Entity\CachedFromNode; -use Emojione\Client; -use Emojione\Ruleset; - -class MessageSystemDepreciated -{ - - public function __construct(App $app) - { - $this->em = $app->getServices()->get("app.twake_doctrine"); - $this->applications_api = $app->getServices()->get("app.applications_api"); - $this->websockets_service = $app->getServices()->get("app.websockets"); - $this->access_manager = $app->getServices()->get("app.accessmanager"); - $this->queues = $app->getServices()->get('app.queues')->getAdapter(); - $this->emojione_client = new Client(new Ruleset()); - $this->app = $app; - } - - /** Called from Collections manager to verify user has access to websockets room, registered in Core/Services/Websockets.php */ - public function init($route, $data, $current_user = null) - { - - $route = explode("/", $route); - $channel_id = isset($route[1]) ? $route[1] : null; - - if (!$channel_id) { - return false; - } - - if($data["get_options"]){ - $data = $data["get_options"]; - } - - return $this->hasAccess([ - "channel_id" => $channel_id, - "company_id" => $data["company_id"], - "workspace_id" => $data["workspace_id"], - ], $current_user); - } - - public function hasAccess($data, $current_user = null, $message = null) - { - - if ($current_user === null) { - return true; - } - if (!is_string($current_user)) { - $current_user = $current_user->getId(); - } - - //Verify message access - if ($message) { - if ($current_user && $message->getSender() && $message->getSender()->getId() != $current_user) { - return false; //Not my message - } - } - - $channel_id = $data["channel_id"]; - - return $this->access_manager->has_access($current_user, [ - "type" => "Channel", - "edition" => false, - "object_id" => $channel_id - ], [ - "company_id" => $data["company_id"], - "workspace_id" => $data["workspace_id"] - ]); - } - - public function get($options, $current_user) - { - $channel_id = $options["channel_id"]; - if (!$channel_id) { - return false; - } - - if (!$this->hasAccess($options, $current_user)) { - return false; - } - - $message_repo = $this->em->getRepository("Twake\Discussion:Message"); - - - $offset = isset($options["offset"]) ? $options["offset"] : null; - $limit = isset($options["limit"]) ? $options["limit"] : 60; - $parent_message_id = isset($options["parent_message_id"]) ? $options["parent_message_id"] : ""; - - if($options["id"]){ - $messages_ent = $message_repo->findBy(Array("channel_id" => $channel_id, "parent_message_id" => $parent_message_id, "id" => $options["id"])); - }else{ - $messages_ent = $message_repo->findBy(Array("channel_id" => $channel_id, "parent_message_id" => $parent_message_id), Array(), $limit, $offset, ["parent_message_id", "id"], ["ASC", "DESC"]); - } - - $messages_ent = array_reverse($messages_ent); - - $messages = []; - foreach ($messages_ent as $message) { - if ($parent_message_id == "" && $message->getResponsesCount() > 0 && !$options["id"]) { - $messages_responses_ent = $message_repo->findBy(Array("channel_id" => $channel_id, "parent_message_id" => $message->getId()), Array(), 10, null, "id", "DESC"); - if (count($messages_responses_ent) == 0) { - $message->setResponsesCount(0); - $this->em->persist($message); - $this->em->flush(); - } - foreach ($messages_responses_ent as $message_response) { - $messages[] = $message_response->getAsArray(); - } - } - - $messages[] = $message->getAsArray(); - } - - //Add my reaction if necessary - foreach ($messages as $id => $message) { - - //If possible, show only current user content ! - if ($current_user && isset($message["user_specific_content"][$current_user->getId()])) { - $tmp = Array(); - $tmp[$current_user->getId()] = $message["user_specific_content"][$current_user->getId()]; - $message["user_specific_content"] = $tmp; - } - - if ($current_user && count($message["reactions"]) > 0) { - $message_reaction_repo = $this->em->getRepository("Twake\Discussion:MessageReaction"); - $message_reaction = $message_reaction_repo->findOneBy(Array("user_id" => $current_user->getId(), "message_id" => $message["id"])); - if ($message_reaction) { - $messages[$id]["_user_reaction"] = $message_reaction->getReaction(); - } - } - - } - - if(count($messages) === 0 - && !$options["id"] - && !$offset - && $limit > 0 - && !$parent_message_id ){ - - $init_message = Array( - "channel_id" => $options["channel_id"], - "hidden_data" => Array("type" => "init_channel"), - "content" => "[]" - ); - return [$this->save($init_message, Array())]; - } - - return $messages; - } - - public function remove($object, $options, $current_user = null) - { - $channel_id = $object["channel_id"]; - if (!$channel_id) { - return false; - } - - if (!$object["parent_message_id"]) { - $object["parent_message_id"] = ""; - } - - if(!$object["ephemeral_id"]){ - $message_repo = $this->em->getRepository("Twake\Discussion:Message"); - $message = $message_repo->findOneBy(Array("channel_id" => $object["channel_id"], "parent_message_id" => $object["parent_message_id"], "id" => $object["id"])); - - if (!$message) { - return false; - } - - //TODO for allow_delete == "administrators" implement user access verification - if (!($this->hasAccess($message->getAsArray(), $current_user, $message) || $message->getAsArray()["hidden_data"]["allow_delete"] == "everyone" || $message->getAsArray()["hidden_data"]["allow_delete"] == "administrators")) { - return false; - } - - if ($message->getResponsesCount() > 0) { - return false; - } - - if ($message->getParentMessageId()) { - $parent_message = $message_repo->findOneBy(Array("channel_id" => $object["channel_id"], "parent_message_id" => "", "id" => $message->getParentMessageId())); - $parent_message->setResponsesCount($parent_message->getResponsesCount() - 1); - $this->em->persist($parent_message); - } - - $array_before_delete = $message->getAsArray(); - - $this->em->remove($message); - $this->em->flush(); - - $this->deleteInBloc($message); - }else{ - $array_before_delete = $object; - } - - $event = Array( - "client_id" => "system", - "action" => "remove", - "message_id" => $array_before_delete["id"], - "thread_id" => $array_before_delete["parent_message_id"] - ); - $this->app->getServices()->get("app.pusher")->push($event, "channels/" . $array_before_delete["channel_id"] . "/messages/updates"); - - $event = Array( - "client_id" => "system", - "action" => "remove", - "object_type" => "", - "front_id" => $array_before_delete["front_id"] - ); - $this->app->getServices()->get("app.websockets")->push("messages/" . $array_before_delete["channel_id"], $event); - - return $array_before_delete; - - } - - public function deleteInBloc($message) - { - - if($message->getBlockId()){ - - $bloc = $this->em->getRepository("Twake\GlobalSearch:Bloc")->findOneBy(Array("id" => $message->getBlockId())); - - if (!$bloc) { - return false; - } - - try { - $bloc->removeMessage($message->getId()); - - $this->em->persist($bloc); - $this->em->flush(); - - if ($bloc->getLock() == true) { - $this->em->es_put($bloc, $bloc->getEsType()); - } - - } catch (\Exception $e) { - error_log($e->getMessage()); - } - - } - - } - - /** - * @param $object - * @param $options - * @param null $user - * @param null $application - * @return array - */ - public function save($object, $options, $user = null, $application = null) - { - - $channel_id = $object["channel_id"]; - if (!$channel_id) { - return false; - } - - if (!$object["parent_message_id"]) { - $object["parent_message_id"] = ""; - } - - $ephemeral = (isset($object["_once_ephemeral_message"]) && $object["_once_ephemeral_message"] || isset($object["ephemeral_id"]) && $object["ephemeral_id"]); - if ($ephemeral) { - unset($object["id"]); - } - - $message_repo = $this->em->getRepository("Twake\Discussion:Message"); - - $did_create = false; - - $message = null; - - if (isset($object["id"])) { - $message = $message_repo->findOneBy(Array("channel_id" => $object["channel_id"], "parent_message_id" => isset($object["_once_replace_message_parent_message"]) ? $object["_once_replace_message_parent_message"] : $object["parent_message_id"], "id" => $object["id"])); - - if (!$message) { - $message = $message_repo->findOneBy(Array("id" => $object["id"])); - if ($message) { - if (isset($object["channel_id"]) && $object["channel_id"] != $message->getChannelId()) { - return false; - } - if (isset($object["_once_replace_message_parent_message"]) && $object["_once_replace_message_parent_message"] != $message->getParentMessageId()) { - return false; - } else if (isset($object["parent_message_id"]) && $object["parent_message_id"] != $message->getParentMessageId()) { - return false; - } - } else { - return false; - } - } - - //Verify can modify this message - if ($message && !$this->hasAccess($object, $current_user, $message)) { - return false; - } - - if (!$message) { - return false; - } - - foreach ($message->getAsArray() as $key => $value) { - if (!isset($object[$key])) { - $object[$key] = $value; - } - } - - } - - if ($message == null) { - - //Verify can create in channel - if (!$this->hasAccess($object, $current_user)) { - - return false; - } - - - if (!$ephemeral && $object["parent_message_id"]) { - //Increment parent - $new_parent = $message_repo->findOneBy(Array("channel_id" => $object["channel_id"], "parent_message_id" => "", "id" => $object["parent_message_id"])); - if (!$new_parent) { - $object["parent_message_id"] = ""; - } else { - $new_parent->setResponsesCount($new_parent->getResponsesCount() + 1); - $this->em->persist($new_parent); - $this->share($new_parent); - } - } - - //Create a new message - $message = new Message($object["channel_id"], $object["parent_message_id"]); - - $message->setModificationDate(new \DateTime()); - if ($object["front_id"]) { - $message->setFrontId($object["front_id"]); - } - - if ($object["ephemeral_id"]) { - $message->setId($object["ephemeral_id"]); - $message->setFrontId($object["ephemeral_id"]); - } - - $did_create = true; - - } else if ($message->getContent() != $object["content"]) { - $message->setEdited(true); - $message->setModificationDate(new \DateTime()); - } - - //Move message - if (!$ephemeral && isset($object["_once_replace_message_parent_message"])) { - $new_parent = null; - if ($object["parent_message_id"]) { - $new_parent = $message_repo->findOneBy(Array("channel_id" => $object["channel_id"], "parent_message_id" => "", "id" => $object["parent_message_id"])); - } - $this->moveMessageToNewParent($message, $new_parent); - } - - if ($did_create) { - //Set message type - if ($application) { - $message->setMessageType(1); - $message->setApplicationId($application->getId()); - if ($user) { - $message->setSender($user); - } - } else if (!$user && !$application) { - $message->setMessageType(2); - } else if ($user && !$application) { - $message->setMessageType(0); - } - } - - //If no sender set, update sender (can be modified after) - if (!$message->getSender() && $message->getMessageType() == 0) { - $message->setSender($user); - } - - - //Update message values - if ($application && isset($object["_once_user_specific_update"])) { - $specific_data = $message->getUserSpecificContent(); - if (!$specific_data) { - $specific_data = Array(); - } - $updates = $object["_once_user_specific_update"]; - if ($updates["user_id"]) { - $updates = Array($updates); - } - foreach ($updates as $update) { - $user_id = $update["user_id"]; - $modifiers = $update["modifiers"]; - $replace_all_keys = $update["replace_all"]; - if ($replace_all_keys) { - $specific_data[$user_id] = $modifiers; - } else { - foreach ($modifiers as $key => $data) { - $specific_data[$user_id][$key] = $data; - } - } - } - $message->setUserSpecificContent($specific_data); - } - - $message->setHiddenData($object["hidden_data"]); - $message->setContent($object["content"]); - $message->setPinned($object["pinned"]); - - - //Update reactions - if (isset($object["_user_reaction"]) && $user && $message->getId()) { - $message_reaction_repo = $this->em->getRepository("Twake\Discussion:MessageReaction"); - $message_reaction = $message_reaction_repo->findOneBy(Array("user_id" => $user->getId(), "message_id" => $message->getId())); - $current_reactions = []; - - foreach($message->getAsArray()["reactions"] as $key => $reaction){ - $current_reactions[$reaction["name"] ?: $key] = $reaction; - } - - $user_reaction = $object["_user_reaction"]; - $reaction = Array(); - - if ($message_reaction) { - if ($user_reaction == $message_reaction->getReaction()) { - //Noop - } else if (!$user_reaction) { - $this->em->remove($message_reaction); - $reaction["remove"] = Array($message_reaction->getReaction() => Array("user" => $user->getId())); - } else { - $reaction["remove"] = Array($message_reaction->getReaction() => Array("user" => $user->getId())); - $reaction["add"] = Array($user_reaction => $user->getId()); - - $message_reaction->setReaction($user_reaction); - $this->em->persist($message_reaction); - } - - } else if ($user_reaction) { - $message_reaction = new MessageReaction($message->getId(), $user->getId()); - $reaction["add"] = Array($user_reaction => Array("user" => $user->getId())); - $message_reaction->setReaction($user_reaction); - $this->em->persist($message_reaction); - } - - if (isset($reaction["add"])) { - $key_first = array_keys($reaction["add"])[0]; - if (array_key_exists($key_first, $current_reactions)) { - $current_reactions[$key_first]["users"][] = $user->getId(); - } else { - $current_reactions[$key_first]["users"] = Array($user->getId()); - } - $current_reactions[$key_first]["count"]++; - } - if (isset($reaction["remove"])) { - $key_first = array_keys($reaction["remove"])[0]; - if (array_key_exists($key_first, $current_reactions)) { - $keytoremove = array_search($user->getId(), $current_reactions[$key_first]["users"]); - unset($current_reactions[$key_first]["users"][$keytoremove]); - $current_reactions[$key_first]["count"]--; - if ($current_reactions[$key_first]["count"] == 0) { - unset($current_reactions[$key_first]); - } - } - } - - $message->setReactions($current_reactions); - } - - if (isset($object["tags"])) { - $message->setTags($object["tags"]); - } - - //Generate an ID - $this->em->persist($message); - - if ($ephemeral) { - $this->em->remove($message); - } else { - - $channel = $this->em->getRepository("Twake\Core:CachedFromNode")->findOneBy(Array("company_id" => "unused", "type" => "channel", "key"=>$channel_id)); - if($channel){ - - $this->sendToNode($channel, $message, $did_create); - - try { - $this->indexMessage($message, $channel->getData()["workspace_id"], $channel_id); - } catch (\Exception $e) { - error_log("ERROR WITH MESSAGE SAVE INSIDE A BLOC"); - } - - $this->em->flush(); - - } - - if($channel){ - //Notify connectors - if ($channel->getData()["workspace_id"]) { - if (false && $channel->getAppId()) { - $apps_ids = [$channel->getAppId()]; - } else { - $resources = $this->applications_api->getResources($channel->getData()["workspace_id"], "channel", $channel_id); - $resources = array_merge($resources, $this->applications_api->getResources($channel->getData()["workspace_id"], "workspace", $channel->getData()["workspace_id"])); - $apps_ids = []; - foreach ($resources as $resource) { - if ($resource->getResourceId() == $channel->getData()["workspace_id"] && !in_array("message_in_workspace", $resource->getApplicationHooks())) { - continue; //Si resource sur tout le workspace et qu'on a pas le hook new_message_in_workspace on a pas le droit - } - if (in_array("message", $resource->getApplicationHooks()) || in_array("message_in_workspace", $resource->getApplicationHooks())) { - $apps_ids[] = $resource->getApplicationId(); - } - } - } - if (count($apps_ids) > 0) { - foreach ($apps_ids as $app_id) { - if ($app_id) { - $data = Array( - "message" => $message->getAsArray(), - "channel" => $channel->getData() - ); - if ($did_create) { - $this->applications_api->notifyApp($app_id, "hook", "new_message", $data); - } else if (false && $channel->getAppId()) { //Only private channels with app can receive edit hook - $this->applications_api->notifyApp($app_id, "hook", "edit_message", $data); - } - } - } - } - } - } - - - - } - - $array = $message->getAsArray(); - - if ($ephemeral) { - $array["ephemeral_id"] = $message->getId(); - $array["_user_ephemeral"] = true; - if (isset($object["ephemeral_message_recipients"])) { - $array["ephemeral_message_recipients"] = $object["ephemeral_message_recipients"]; - } - } - - $event = Array( - "client_id" => "system", - "action" => "update", - "message_id" => $array["id"], - "thread_id" => $array["parent_message_id"] - ); - $this->app->getServices()->get("app.pusher")->push($event, "channels/" . $array["channel_id"] . "/messages/updates"); - - $event = Array( - "client_id" => "bot", - "action" => "save", - "object_type" => "", - "object" => $array - ); - $this->app->getServices()->get("app.websockets")->push("messages/" . $array["channel_id"], $event); - - return $array; - } - - public function sendToNode($channel, $message, $did_create){ - $messageArray = $message->getAsArray(); - - $senderName = ""; - if($messageArray["sender"]){ - $sender_user = $this->em->getRepository("Twake\Users:User")->findOneBy(Array("id" => $messageArray["sender"])); - $senderName = $sender_user ? $sender_user->getFullName() : ""; - } - - $title = ""; - $text = $this->buildShortText($message); - $body = $text; // we need original body just in case text gets updated further on - if ($channel->getData()["is_direct"]) { - $title = $senderName . " in " . $channel->getData()["company_name"]; - }else{ - $title = $channel->getData()["name"]; - $title .= " in " . $channel->getData()["company_name"] . " • " . $channel->getData()["workspace_name"]; - $text = $senderName . ": " . $text; - } - - if($channel){ - - $md2text_options = Array("keep_mentions" => true); - $text_content = $this->mdToText($message->getContent(), $md2text_options); - preg_match_all("/@[^: ]+:([0-f-]{36})/m", $text_content, $users_output); - preg_match_all("/(^| )@(all|here|channel|everyone)[^a-z]/m", $text_content, $global_output); - $mentions = [ - "users" => $users_output[1], - "specials" => $global_output[2] - ]; - $rabbitData = [ - "company_id" => $channel->getData()["company_id"], - "workspace_id" => $channel->getData()["workspace_id"] ?: "direct", - "channel_id" => $messageArray["channel_id"], - "thread_id" => $messageArray["parent_message_id"], - "id" => $messageArray["id"], - "sender" => $messageArray["sender"], - "creation_date" => $messageArray["creation_date"] * 1000, - "mentions" => $mentions, - - "sender_name" => $senderName, - "channel_name" => $channel->getData()["name"], - "company_name" => $channel->getData()["workspace_name"], - "workspace_name" => $channel->getData()["company_name"], - - "title" => $title, - "text" => $text - ]; - $rabbitChannelData = [ - "company_id" => $channel->getData()["company_id"], - "workspace_id" => $channel->getData()["workspace_id"] ?: "direct", - "channel_id" => $messageArray["channel_id"], - "date" => $messageArray["creation_date"] * 1000, - "sender" => $messageArray["sender"], - "sender_name" => $senderName, // username, because it's not convenient to make request to find out username by id - "title" => $title, - "text" => $text, - "body" => $body // original body of the message without sender - ]; - - if($messageArray["message_type"] != 2){ //Ignore system messages - if($did_create){ - $this->queues->push("channel:activity", $rabbitChannelData, ["exchange_type" => "fanout"]); - $this->queues->push("message:created", $rabbitData, ["exchange_type" => "fanout"]); - }else{ - $this->queues->push("message:updated", $rabbitData, ["exchange_type" => "fanout"]); - } - } - } - } - - private function buildShortText($message){ - $text = $this->mdToText($message->getContent()) ?: "No text content."; - $text = preg_replace("/ +/", " ", trim(html_entity_decode($this->emojione_client->shortnameToUnicode($text), ENT_NOQUOTES, 'UTF-8'))); - if(strlen($text) > 180){ - $text = substr($text, 0, 180) . "..."; - } - return $text; - } - - private function share($message) - { - - if (!$message) { - return; - } - - $event = Array( - "client_id" => "system", - "action" => "save", - "object_type" => "", - "object" => $message->getAsArray() - ); - $this->websockets_service->push("messages/" . $message->getChannelId(), $event); - - } - - private function moveMessageToNewParent(Message $messageA, $messageB, $flush = true) - { - - if (!$messageA->getParentMessageId() && !$messageB || $messageB && $messageA->getParentMessageId() == $messageB->getId()) { - return; - } - - $this->em->remove($messageA); - $this->em->flush(); - - $new_parent_message_id = $messageB ? $messageB->getId() : ""; - - $messageA->setParentMessageId($new_parent_message_id); - - if ($messageA->getResponsesCount() > 0) { - $message_repo = $this->em->getRepository("Twake\Discussion:Message"); - - //Move all children to the same parent message id - $others = $message_repo->findBy(Array("channel_id" => $messageA->getChannelId(), "parent_message_id" => $messageA->getId())); - - foreach ($others as $message) { - $this->moveMessageToNewParent($message, $messageB, false); - } - - } - - if ($messageB) { - $messageB->setResponsesCount($messageB->getResponsesCount() + 1); - } - - $messageA->setResponsesCount(0); - $this->em->persist($messageA); - - $this->share($messageA); - - if ($flush) { - $this->share($messageB); - $this->em->flush(); - } - - return $messageA; - - } - - public function indexMessage($message, $workspace_id, $channel_id) - { - if (!$workspace_id) { - $workspace_id = "00000000-0000-1000-0000-000000000000"; - } - - $blocbdd = null; - if ($message->getBlockId()) { - $blocbdd = $this->em->getRepository("Twake\GlobalSearch:Bloc")->findOneBy(Array("id" => $message->getBlockId())); - } - - if (!$blocbdd) { - - $lastbloc = $this->em->getRepository("Twake\GlobalSearch:Bloc")->findOneBy(Array("workspace_id" => $workspace_id, "channel_id" => $channel_id)); - - if (isset($lastbloc) == false || $lastbloc->getLock() == true) { - - $messages = Array(); - $id_messages = Array(); - $blocbdd = new Bloc($workspace_id, $channel_id, $messages, $id_messages); - - } else { - - $blocbdd = $lastbloc; - - } - - } - - if (!$blocbdd) { - return false; - } - - try { - - $options = Array("keep_mentions" => true); - $content_id = $this->mdToText($message->getContent(), $options); - $content = $this->mdToText($message->getContent()); - - $blocbdd->addOrUpdateMessage($message, $content, $content_id); - - if ($blocbdd->getNbMessage() >= 10) { - $blocbdd->setLock(true); - } - - $this->em->persist($blocbdd); - $message->setBlockId($blocbdd->getId() . ""); - - $this->em->persist($message); - $this->em->flush(); - - if ($blocbdd->getLock()) { - $this->em->es_put($blocbdd, $blocbdd->getEsType()); - } - - } catch (\Exception $e) { - error_log($e->getMessage()); - } - - } - - private function mdToText($array, $options = null) - { - - if (!$array) { - return ""; - } - - if (is_string($array)) { - $array = [$array]; - } - - if (isset($array["fallback_string"])) { - $result = $array["fallback_string"]; - } else if (isset($array["original_str"])) { - $result = $array["original_str"]; - } else { - - if (isset($array["type"]) || isset($array["start"])) { - $array = [$array]; - } - - $result = ""; - - try { - foreach ($array as $item) { - if (is_string($item)) { - $result .= $item; - } else if (isset($item["type"])) { - if (in_array($item["type"], Array("underline", "strikethrough", "bold", "italic", "mquote", "quote", "email", "url", "", "nop", "br", "system"))) { - if ($item["type"] == "br") { - $result .= " "; - } - $result .= $this->mdToText($item["content"]); - } - } else { - $result .= $this->mdToText($item["content"]); - } - } - - } catch (\Exception $e) { - return "Open Twake to see this message."; - } - - } - if (!(isset($options["keep_mentions"]) && $options["keep_mentions"] == true)) { - $result = preg_replace("/@(.*?):.*?(( |$))/", "@$1$2", $result); - $result = preg_replace("/#(.*?):.*?(( |$))/", "#$1$2", $result); - } - - return $result; - - } - - -} diff --git a/twake/backend/core/src/Twake/Drive/Bundle.php b/twake/backend/core/src/Twake/Drive/Bundle.php deleted file mode 100755 index 60e06b85..00000000 --- a/twake/backend/core/src/Twake/Drive/Bundle.php +++ /dev/null @@ -1,30 +0,0 @@ -<?php - -namespace Twake\Drive; - -require_once __DIR__ . "/Resources/Routing.php"; -require_once __DIR__ . "/Resources/Services.php"; - -use Twake\Drive\Resources\Routing; -use Twake\Drive\Resources\Services; -use Common\BaseBundle; - -class Bundle extends BaseBundle -{ - - protected $bundle_root = __DIR__; - protected $bundle_namespace = __NAMESPACE__; - protected $routes = []; - protected $services = []; - - public function init() - { - $routing = new Routing(); - $this->routes = $routing->getRoutes(); - $this->routing_prefix = $routing->getRoutesPrefix(); - $this->initRoutes(); - - $this->services = (new Services())->getServices(); - $this->initServices(); - } -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Drive/Command/DrivePreviewCommand.php b/twake/backend/core/src/Twake/Drive/Command/DrivePreviewCommand.php deleted file mode 100755 index ccb31a5b..00000000 --- a/twake/backend/core/src/Twake/Drive/Command/DrivePreviewCommand.php +++ /dev/null @@ -1,100 +0,0 @@ -<?php - -namespace Twake\Drive\Command; - -use Common\Commands\ContainerAwareCommand; -use Symfony\Component\Console\Input\InputInterface; -use Symfony\Component\Console\Output\OutputInterface; -use Twake\Drive\Services\DriveFileSystemOld; - - -class DrivePreviewCommand extends ContainerAwareCommand -{ - var $leveladmin; - var $output; - var $force; - var $twake; - - protected function configure() - { - $this - ->setName("twake:preview_worker"); - } - - protected function execute() - { - $services = $this->getApp()->getServices(); - - $this->queues = $services->get("app.queues")->getAdapter(); - $this->em = $services->get("app.twake_doctrine"); - $this->pusher = $services->get("app.pusher"); - $this->preview = $services->get("app.drive.preview"); - $this->root = $this->getApp()->getContainer()->getParameter('kernel.root_dir'); - $this->drive_previews_tmp_folder = $this->getApp()->getContainer()->getParameter("drive_previews_tmp_folder"); - $this->storagemanager = $services->get("driveupload.storemanager"); - - $limit = date("U", date("U") + 60); - - while (date("U") < $limit) { - - $todos = $this->queues->oldConsume("drive_preview_to_generate", true); - if (count($todos ?: []) == 0) { - sleep(1); - } - foreach ($todos ?: [] as $todo_original) { - $todo = $this->queues->getMessage($todo_original); - $this->autoGenPreview($todo["file_id"]); - $this->queues->ack("drive_preview_to_generate", $todo_original); - } - - } - - } - - public function autoGenPreview($file_id) - { - /* @var DriveFile $file */ - $file = $this->em->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $file_id)); - if ($file->getSize() > 10 && $file->getSize() < 50000000) { - - $file->setPreviewHasBeenGenerated(true); - - if (in_array(strtolower($file->getExtension()), $this->preview->previewableExt)) { - - $tmppath = $this->checkLocalFileForPreview($file); - - if (!$tmppath || !file_exists($tmppath)) { - //TODO Unimplemented $tmppath = $this->oldFileSystem->decode($path, $file->getLastVersion($this->em)->getKey(), $file->getLastVersion($this->em)->getMode()); - } - - $res = $this->storagemanager->getAdapter()->genPreview($file, $tmppath); - if ($res) { - $file->setHasPreview(true); - } - - } - - $this->em->persist($file); - $this->em->flush(); - - $this->pusher->push(Array("action" => "update_file", "file" => $file->getAsArray()), "drive/file/" . $file->getWorkspaceId() . "/" . $file->getParentId()); - - } - - return true; - } - - public function checkLocalFileForPreview($file) - { - $tmppath = null; - $version = $this->em->getRepository("Twake\Drive:DriveFileVersion")->findOneBy(Array("id" => $file->getLastVersionId())); - if ($version && isset($version->getData()["identifier"]) && isset($version->getData()["upload_mode"]) && $version->getData()["upload_mode"] == "chunk") { - $uploadstate = $this->em->getRepository("Twake\Drive:UploadState")->findOneBy(Array("identifier" => $version->getData()["identifier"])); - if ($uploadstate && $uploadstate->getHasPreview()) { - $tmppath = $this->drive_previews_tmp_folder . "/preview_" . $uploadstate->getIdentifier() . ".chunk_1"; - } - } - return $tmppath; - } - -} diff --git a/twake/backend/core/src/Twake/Drive/Controller/Download.php b/twake/backend/core/src/Twake/Drive/Controller/Download.php deleted file mode 100755 index 53e73b3e..00000000 --- a/twake/backend/core/src/Twake/Drive/Controller/Download.php +++ /dev/null @@ -1,54 +0,0 @@ -<?php - - -namespace Twake\Drive\Controller; - -use PHPUnit\Util\Json; -use Common\BaseController; -use Common\Http\Response; -use Common\Http\Request; - -class Download extends BaseController -{ - - public function downloadfile(Request $request) - { - $data = Array( - "errors" => Array() - ); - - if ($request->query->has("workspace_id")) { - $data = $request->query; - } else { - $data = $request->request; - } - - $workspace_id = $data->get("workspace_id", 0); - $files_ids = $data->get("element_id", 0); - $download = $data->get("download", 1); - $versionId = $data->get("version_id", 0); - $public_access_key = $data->get("public_access_key", false); - - if ($data->has("elements_id")) { - $files_ids = explode(",", $data->get("elements_id", "")); - } - - //TODO check access to this file or set of files - - $this->get("administration.counter")->incrementCounter("total_files_downloaded", 1); - - if($GLOBALS["segment_enabled"]) \Segment::track([ - "event" => "drive:download", - "userId" => $this->isConnected() ? ($this->getuser()->getIdentityProviderId() ?: $this->getUser()->getId()) : "anonymous" - ]); - - @$response = $this->get('driveupload.download')->download($workspace_id, $files_ids, $download, $versionId); - if ($response === true) { - return; - } - - return new Response($data); - - } - -} diff --git a/twake/backend/core/src/Twake/Drive/Controller/DriveFile.php b/twake/backend/core/src/Twake/Drive/Controller/DriveFile.php deleted file mode 100755 index cfcba190..00000000 --- a/twake/backend/core/src/Twake/Drive/Controller/DriveFile.php +++ /dev/null @@ -1,164 +0,0 @@ -<?php - -namespace Twake\Drive\Controller; - -use PHPUnit\Util\Json; -use Common\BaseController; -use Common\Http\Response; -use Common\Http\Request; - -class DriveFile extends BaseController -{ - - public function remove(Request $request) - { - $options = $request->request->get("options"); - $object = $request->request->get("object"); - - $res = $this->get("app.drive")->remove($object, $options, $this->getUser()); - if (!$res) { - return new Response(Array("status" => "error")); - } - return new Response(Array("data" => Array("object" => $res))); - } - - public function save(Request $request) - { - $options = $request->request->get("options"); - $object = $request->request->get("object"); - - $file_uploaded = null; - if (isset($_FILES["file"])) { - $options = json_decode($options, true); - $object = json_decode($object, true); - $file_uploaded = $_FILES["file"]; - } else { - $file_uploaded = isset($object["file_url"]) ? $object["file_url"] : $request->request->get("file_url"); - } - - $current_user = $this->getUser(); - $current_user_id = $current_user->getId(); - - if ($file_uploaded) { - //If object[_once_new_version] is set a new version is added - $res = $this->get('driveupload.upload')->uploadDirectly($file_uploaded, $object, $options, $current_user_id); - } else { - $res = $this->get("app.drive")->save($object, $options, $current_user_id, Array()); - } - - if($GLOBALS["segment_enabled"]) \Segment::track([ - "event" => "drive:".($object["is_directory"] ? "directory" : "file") . ":" . ($object["id"] ? "edit" : "create"), - "userId" => $this->getuser()->getIdentityProviderId() ?: $this->getUser()->getId() - ]); - - if (!empty($object["_once_set_access"]) && !empty($object["id"])) { - - $is_editable = $object["acces_info"]["is_editable"]; - $publicaccess = $object["acces_info"]["public_access"]; - $authorized_members = $object["acces_info"]["authorized_members"]; - $authorized_channels = $object["acces_info"]["authorized_channels"]; - - $res = $this->get('app.drive')->set_file_access($object["id"], $publicaccess, $is_editable, $authorized_members, $authorized_channels, $this->getUser()); - - } - - if (!$res) { - return new Response(Array("status" => "error")); - } else { - if (empty($object["id"])) { - $this->get("administration.counter")->incrementCounter("total_files", 1); - $this->get("administration.counter")->incrementCounter("total_files_size", intval($res["size"] / 1000)); - } - } - return new Response(Array("data" => Array("object" => $res))); - } - - public function getAction(Request $request) - { - $options = $request->request->get("options"); - - $objects = $this->get("app.drive")->get($options, $this->getUser()); - - if ($objects === false) { - return new Response(Array("status" => "error")); - } - return new Response(Array("data" => $objects)); - } - - public function find(Request $request) - { - $options = $request->request->get("options"); - - $object = $this->get("app.drive")->find($options, $this->getUser()); - - if ($object === false) { - return new Response(Array("status" => "error")); - } - return new Response(Array("data" => $object)); - } - - - public function set_file_access(Request $request) - { - - $file_id = $request->request->get("file_id"); - - $is_editable = $request->request->get("is_editable"); - $publicaccess = $request->request->get("public_access"); - $authorized_members = $request->request->get("authorized_members"); - $authorized_channels = $request->request->get("authorized_channels"); - - $publicaccess = $this->get('app.drive')->set_file_access($file_id, $publicaccess, $is_editable, $authorized_members, $authorized_channels, $this->getUser()); - $data = Array("data" => $publicaccess); - - return new Response($data); - } - - public function reset_file_access(Request $request) - { - $file_id = $request->request->get("file_id"); - - $publicaccess = $this->get('app.drive')->reset_file_access($file_id, $this->getUser()); - $data = Array("data" => $publicaccess); - - return new Response($data); - } - - public function emptyTrash(Request $request) - { - $data = Array( - "errors" => Array() - ); - - $groupId = $request->request->get("workspace_id", 0); - - $can = $this->get('app.workspace_levels')->can($groupId, $this->getUser(), "drive:write"); - - if ($can || true) { - $data["data"] = $this->get('app.drive')->emptyTrash($groupId, $this->getUser()); - } - - return new Response($data); - } - - public function open(Request $request) - { - $data = Array( - "data" => Array(), - "errors" => Array() - ); - $file_id = $request->request->get("id", null); - - $bool = $this->get("app.drive")->open($file_id); - - if ($bool) { - $data["data"][] = "success"; - } else { - $data["data"][] = "error"; - } - - return new Response($data); - } - - -} diff --git a/twake/backend/core/src/Twake/Drive/Controller/Upload.php b/twake/backend/core/src/Twake/Drive/Controller/Upload.php deleted file mode 100755 index 15c30289..00000000 --- a/twake/backend/core/src/Twake/Drive/Controller/Upload.php +++ /dev/null @@ -1,51 +0,0 @@ -<?php - - -namespace Twake\Drive\Controller; - -use PHPUnit\Util\Json; -use Common\BaseController; -use Common\Http\Response; -use Common\Http\Request; - -class Upload extends BaseController -{ - - public function Preprocess(Request $request) - { - $identifier = $this->get('driveupload.upload')->preprocess($request, $this->getUser()->getId()); - - if($GLOBALS["segment_enabled"]) \Segment::track([ - "event" => "drive:file:create", - "userId" => $this->getuser()->getIdentityProviderId() ?: $this->getUser()->getId() - ]); - - return new Response(Array("identifier" => $identifier)); - } - - public function uploadFile(Request $request) - { - $current_user_id = $this->getUser()->getId(); - $res = $this->get('driveupload.upload')->upload($request, $response, $current_user_id); - - $this->get("administration.counter")->incrementCounter("total_files", 1); - $this->get("administration.counter")->incrementCounter("total_files_size", intval($res["size"] / 1000)); - - return new Response(Array("data" => Array("object" => $res))); - } - - - public function Preview(Request $request) - { - $response = new Response(); - - if($GLOBALS["segment_enabled"]) \Segment::track([ - "event" => "drive:preview", - "userId" => $this->isConnected() ? ($this->getuser()->getIdentityProviderId() ?: $this->getUser()->getId()) : "anonymous" - ]); - - $this->get('driveupload.previewmanager')->generatePreviewFromFolder($request); - return $response; - } - -} diff --git a/twake/backend/core/src/Twake/Drive/Entity/DriveFile.php b/twake/backend/core/src/Twake/Drive/Entity/DriveFile.php deleted file mode 100755 index 020a6643..00000000 --- a/twake/backend/core/src/Twake/Drive/Entity/DriveFile.php +++ /dev/null @@ -1,971 +0,0 @@ -<?php - -namespace Twake\Drive\Entity; - -use Doctrine\ORM\Mapping as ORM; - -use Twake\Core\Entity\FrontObject; -use Twake\Core\Entity\SearchableObject; - -/** - * DriveFile - * - * @ORM\Table(name="drive_file",options={"engine":"MyISAM", "scylladb_keys": {{"workspace_id":"ASC", "parent_id":"ASC", "isintrash": "ASC", "id":"DESC"}, {"id": "DESC"}} }) - * @ORM\Entity() - */ -class DriveFile extends SearchableObject -{ - /** - * @ORM\Column(name="id", type="twake_timeuuid") - * @ORM\Id - */ - private $id; - - /** - * @ORM\Column(name="workspace_id", type="text") - * @ORM\Id - */ - private $workspace_id; - - /** - * @ORM\Column(name="parent_id", type="text") - * @ORM\Id - */ - private $parent_id; - - /** - * @ORM\Column(type="twake_boolean") - * @ORM\Id - */ - private $isintrash = false; - - /** - * @ORM\Column(name="root_group_folder_id", type="twake_timeuuid", nullable=true) - */ - private $root_group_folder = NULL; - - /** - * @ORM\Column(type="string", length=512) - */ - private $public_access_key = ""; - - /** - * @ORM\Column(type="twake_text") - */ - private $name; - - /** - * @ORM\Column(type="string", length=16) - */ - private $extension; - - /** - * @ORM\Column(type="twake_text") - */ - private $description; - - /** - * @ORM\Column(type="twake_boolean") - */ - private $isdirectory; - - /** - * @ORM\Column(name="old_parent", type="text") - */ - private $old_parent; - - /** - * @ORM\OneToMany(targetEntity="Twake\Drive\Entity\DriveFile", mappedBy="parent") - */ - private $children; - - /** - * @ORM\Column(type="twake_datetime") - */ - private $added; - - /** - * @ORM\Column(type="twake_datetime") - */ - private $last_modified; - - /** - * @ORM\Column(name="last_version_id", type="text") - */ - private $last_version_id; - - /** - * @ORM\Column(name="last_modification_token", type="text") - */ - private $last_modification_token; - - /** - * @ORM\Column(name="creator", type="text") - */ - private $creator; - - - /** - * @ORM\Column(type="twake_bigint") - */ - private $size; - - /** - * @ORM\Column(type="twake_text") - */ - private $cache; - - /** - * @ORM\Column(type="twake_boolean") - */ - private $detached_file = false; - - /** - * @ORM\Column(type="twake_boolean") - */ - private $previewhasbeengenerated = false; - - /** - * @ORM\Column(type="twake_boolean") - */ - private $has_preview = false; - - /** - * @ORM\ManyToOne(targetEntity="Twake\Drive\Entity\DriveFile") - */ - private $copyof; - - - /** - * @ORM\Column(type="twake_boolean") - */ - private $shared = false; - - /** - * @ORM\Column(type="twake_text", nullable = true) - */ - private $url; - - /** - * @ORM\Column(type="decimal") - */ - private $opening_rate; - - /** - * @ORM\ManyToOne(targetEntity="Twake\Market\Entity\Application") - * @ORM\JoinColumn(nullable=true) - */ - private $default_web_app; - - /** - * @ORM\Column(type="twake_text", nullable = true) - */ - private $preview_link = ""; - - /** - * @ORM\Column(type="twake_text", nullable=true) - */ - private $object_link_cache; - - /** - * @ORM\Column(name ="content_keywords", type="twake_text", nullable=true) - */ - private $content_keywords; - - /** - * @ORM\Column(name ="access_info", type="twake_text", nullable=true) - */ - private $acces_info; - - /** - * @ORM\Column(name="application_id", type="twake_no_salt_text", nullable=true) - */ - private $application_id = null; - - /** - * @ORM\Column(type="twake_boolean") - */ - private $external_storage = false; - - /** - * @ORM\Column(name="hidden_data", type="twake_text") - */ - private $hidden_data = "{}"; - - /** - * @ORM\Column(name="last_user", type="twake_no_salt_text", nullable=true) - */ - private $last_user; - - /** - * @ORM\Column(name="tags", type="twake_text", nullable=true) - */ - private $tags; - - /** - * @ORM\Column(name="attachements", type="twake_text") - */ - private $attachements = "[]"; - - - protected $es_type = "drive_file"; - - public function __construct($workspace_id, $parent_id, $isdirectory = false) - { - parent::__construct(); - $this->workspace_id = $workspace_id; - $this->setParentId($parent_id); - $this->isdirectory = $isdirectory; - $this->setContentKeywords(Array()); - $this->setName(""); - $this->setDescription(""); - $this->setSize(0); - $this->setIsInTrash(false); - $this->added = new \DateTime(); - $this->cache = "{}"; - $this->setLastModified(); - $this->opening_rate = 0; - $this->default_web_app = null; - $this->setPreviewHasBeenGenerated(false); - } - - /** - * @return mixed - */ - public function getAccesInfo() - { - return json_decode($this->acces_info, true); - } - - /** - * @param mixed $acces_info - */ - public function setAccesInfo($acces_info) - { - $this->acces_info = json_encode($acces_info); - } - - /** - * @return string - */ - public function getEsType() - { - return $this->es_type; - } - - - public function getIndexationArray() - { - return Array( - "id" => $this->getId() . "", - "type" => $this->getExtension(), - "name" => $this->getName(), - "creation_date" => ($this->getAdded() ? $this->getAdded()->format('Y-m-d') : null), - "creator" => $this->getCreator(), - "size" => $this->getSize(), - "date_last_modified" => ($this->getLastModified() ? $this->getLastModified()->format('Y-m-d') : null), - "workspace_id" => $this->getWorkspaceId(), - "keywords" => $this->getContentKeywords(), - "tags" => $this->getTags() - ); - } - - /** - * @return mixed - */ - public function getTags() - { - return json_decode($this->tags); - } - - /** - * @param mixed $tags - */ - public function setTags($tags) - { - $this->tags = json_encode($tags); - } - - - /** - * @return mixed - */ - public function getCreator() - { - return $this->creator; - } - - /** - * @param mixed $creator - */ - public function setCreator($creator) - { - $this->creator = $creator; - } - - - public function setId($id) - { - $this->id = $id; - } - - public function getId() - { - return $this->id; - } - - /** - * @return mixed - */ - public function getLastUser() - { - return $this->last_user; - } - - /** - * @param mixed $last_user - */ - public function setLastUser($last_user) - { - $this->last_user = $last_user; - } - - /** - * @return mixed - */ - public function getContentKeywords() - { - return json_decode($this->content_keywords, true); - } - - /** - * @param mixed $content_keywords - */ - public function setContentKeywords($content_keywords) - { - $this->content_keywords = json_encode($content_keywords); - } - - /** - * @return mixed - */ - public function getWorkspaceId() - { - return $this->workspace_id; - } - - /** - * @return mixed - */ - public function setWorkspaceId($wid) - { - $this->workspace_id = $wid; - } - - /** - * @return mixed - */ - public function getParentId() - { - return $this->parent_id; - } - - /** - * @param mixed $parent - */ - public function setParentId($parent_id) - { - $this->parent_id = $parent_id . ""; - if ($parent_id) { - $this->root_group_folder = NULL; - } else { - $this->root_group_folder = $this->getWorkspaceId() . ""; - } - } - - /** - * @return mixed - */ - public function getName() - { - return $this->name; - } - - /** - * @param mixed $name - */ - public function setName($name) - { - $this->name = $name; - $array = explode(".", $name); - $ext = ""; - if (count($array) > 1) { - $ext = array_pop($array); - } - $this->setExtension($ext); - } - - /** - * @return mixed - */ - public function getPublicAccessKey() - { - return $this->public_access_key; - } - - /** - * @param mixed $public_access_key - */ - public function setPublicAccessKey($public_access_key) - { - $this->public_access_key = $public_access_key; - } - - /** - * @return mixed - */ - public function getIsDirectory() - { - return $this->isdirectory; - } - - /** - * @return mixed - */ - public function getIsInTrash() - { - return $this->isintrash; - } - - /** - * @param mixed $isintrash - */ - public function setIsInTrash($isintrash) - { - $this->isintrash = $isintrash; - } - - /** - * @return mixed - */ - public function getOldParent() - { - return $this->old_parent; - } - - /** - * @param mixed $old_parent - */ - public function setOldParent($old_parent) - { - $this->old_parent = $old_parent; - } - - /** - * @return mixed - */ - public function getChildren() - { - return $this->children; - } - - /** - * Generate path from group id and realName - */ - public function getPath() - { - if ($this->getLastVersionId() == null) { - return null; - } - - if ($this->getDetachedFile()) { - return "" . $this->workspace_id . "/" . $this->getLastVersionId(); - } - return $this->workspace_id . "/" . $this->getLastVersionId(); - } - - /** - * Generate preview path from group id and realName - */ - public function getPreviewPath() - { - if ($this->getLastVersionId() == null) { - return null; - } - if ($this->getDetachedFile()) { - return "" . $this->workspace_id . "/preview/" . $this->getLastVersionId() . ".png"; - } - return $this->workspace_id . "/preview/" . $this->getLastVersionId() . ".png"; - } - - /** - * @return mixed - */ - public function getDescription() - { - return $this->description; - } - - /** - * @param mixed $description - */ - public function setDescription($description) - { - $this->description = $description; - } - - /** - * @return mixed - */ - public function getAdded() - { - return $this->added; - } - - /** - * @param mixed $added - */ - public function setAdded($added) - { - $this->added = $added; - } - - /** - * @return mixed - */ - public function getLastModified() - { - return $this->last_modified; - } - - /** - * @param mixed $last_modified - */ - public function setLastModified() - { - $this->last_modified = new \DateTime(); - } - - /** - * @return mixed - */ - public function getLastModificationToken() - { - return $this->last_modification_token; - } - - /** - * @param mixed $last_modification_token - */ - public function setLastModificationToken($last_modification_token) - { - $this->last_modification_token = $last_modification_token; - } - - /** - * @return mixed - */ - public function getLastVersionId() - { - return $this->last_version_id; - } - - /** - * @param mixed $last_version - */ - public function setLastVersionId($last_version_id) - { - $this->last_version_id = $last_version_id . ""; - } - - //TODO Very very bad to pass doctrine as parameter here... - public function getLastVersion($doctrine) - { - $repo = $doctrine->getRepository("Twake\Drive:DriveFileVersion"); - return $repo->find($this->getLastVersionId()); - } - - /** - * @return mixed - */ - public function getSize() - { - return $this->size; - } - - /** - * @param mixed $size - */ - public function setSize($size) - { - $this->size = $size; - if ($this->size < 10) { - $this->size = 0; - } - } - - /** - * @return mixed - */ - public function getExtension() - { - return strtolower($this->extension); - } - - /** - * @param mixed $extension - */ - public function setExtension($extension) - { - if (!$this->getIsDirectory()) { - $this->extension = $extension; - } else { - $this->extension = ""; - } - } - - /** - * @return mixed - */ - public function getCache() - { - $cache = json_decode($this->cache, 1); - return ($cache) ? $cache : Array(); - } - - /** - * @param mixed $cache - */ - public function setCache($key, $cache) - { - $val = $this->getCache(); - $val[$key] = $cache; - $this->cache = json_encode($val); - } - - /** - * @return mixed - */ - public function getDetachedFile() - { - return $this->detached_file; - } - - /** - * @param mixed $detached_file - */ - public function setDetachedFile($detached_file) - { - $this->detached_file = $detached_file; - } - - /** - * @return mixed - */ - public function getCopyOf() - { - return $this->copyof; - } - - /** - * @param mixed $copyof - */ - public function setCopyOf($copyof) - { - $this->copyof = $copyof; - } - - /** - * @return mixed - */ - public function getShared() - { - return $this->shared; - } - - /** - * @param mixed $shared - */ - public function setShared($shared) - { - $this->shared = $shared; - } - - /** - * @return mixed - */ - public function getUrl() - { - return $this->url; - } - - /** - * @param $url - */ - public function setUrl($url) - { - $this->url = $url; - } - - /** - * @return mixed - */ - public function getOpeningRate() - { - return $this->opening_rate; - } - - /** - * @param $opening_rate - */ - public function setOpeningRate($opening_rate) - { - $this->opening_rate = $opening_rate; - } - - /** - * @return mixed - */ - public function getDefaultWebApp() - { - return $this->default_web_app; - } - - /** - * @param $default_web_app - */ - public function setDefaultWebApp($default_web_app) - { - $this->default_web_app = $default_web_app; - } - - public function getAsArray() - { - return Array( - 'id' => $this->getId(), - 'front_id' => $this->getFrontId(), - "workspace_id" => $this->getWorkspaceId(), - 'parent_id' => $this->getParentId(), - "detached" => $this->getDetachedFile(), - "trash" => $this->getIsInTrash() ? true : false, - - 'is_directory' => $this->getIsDirectory(), - "creator" => $this->getCreator(), - 'name' => $this->getName(), - 'description' => $this->getDescription(), - "last_user" => $this->getLastUser(), - 'size' => $this->getSize() ? $this->getSize() : 0, - 'added' => $this->getAdded() ? $this->getAdded()->getTimestamp() : null, - 'modified' => (($this->getLastModified()) ? $this->getLastModified()->getTimestamp() : 0), - "last_modification_token" => $this->getLastModificationToken(), - "extension" => $this->getExtension(), - "cache" => $this->getCache(), - "preview_link" => $this->getPreviewLink(), - "copy_of" => ($this->getCopyOf() ? $this->getCopyOf()->getId() : null), - "shared" => $this->getShared(), - "url" => $this->getUrl(), - "opening_rate" => $this->getOpeningRate(), - "has_preview" => $this->getHasPreview(), - "preview_has_been_generated" => $this->getPreviewHasBeenGenerated(), - "default_web_app_id" => $this->getDefaultWebApp() ? $this->getDefaultWebApp()->getId() : null, - //"keywords" => $this->getContentKeywords() - "acces_info" => $this->getAccesInfo(), - "application_id" => $this->getApplicationId(), - "external_storage" => $this->getExternalStorage(), - "hidden_data" => $this->getHiddenData(), - "tags" => $this->getTags(), - "attachments" => $this->getAttachements(), - - ); - } - - /** - * @return mixed - */ - public function getExternalStorage() - { - return $this->external_storage; - } - - /** - * @param mixed $external_storage - */ - public function setExternalStorage($external_storage) - { - $this->external_storage = $external_storage; - } - - /** - * @return mixed - */ - public function getPreviewHasBeenGenerated() - { - return $this->previewhasbeengenerated; - } - - /** - * @param mixed $previewhasbeengenerated - */ - public function setPreviewHasBeenGenerated($previewhasbeengenerated) - { - $this->previewhasbeengenerated = $previewhasbeengenerated; - } - - - public function getRepository() - { - return "Twake\Drive:DriveFile"; - } - - public function getAsArrayFormated() - { - return Array( - "id" => $this->getId(), - "title" => "File", - "object_name" => $this->getName(), - "object_data" => Array( - "preview_link" => $this->getPreviewLink(), - "extension" => $this->getExtension(), - "groupId" => ($this->getGroup()) ? $this->getGroup()->getId() : "", - 'parent' => (($this->getParent()) ? $this->getParent()->getId() : 0), - "default_web_app_id" => $this->getDefaultWebApp() ? $this->getDefaultWebApp()->getId() : null - ), - "key" => "drive", - "type" => "file", - "code" => "twake/" . ($this->getParent() ? $this->getParent()->getId() : 0) . "/" . $this->getId(), - "attachments" => $this->getAttachements(), - ); - } - - public function synchroniseField($fieldname, $value) - { - if (!property_exists($this, $fieldname)) - return false; - - $setter = "set" . ucfirst($fieldname); - $this->$setter($value); - return true; - } - - public function get($fieldname) - { - if (!property_exists($this, $fieldname)) - return false; - - $getter = "get" . ucfirst($fieldname); - - return $this->$getter(); - } - - public function getPushRoute() - { - return "drive/" . $this->getId(); - } - - /** - * @param mixed $group - */ - public function setGroup($group) - { - $this->group = $group; - } - - public function hasPreviewLink() - { - return !!$this->preview_link; - } - - /** - * @return mixed - */ - public function getPreviewLink() - { - if (!$this->preview_link) { - return "/ajax/drive/preview?f=" . $this->getLastVersionId() . "&w=" . $this->getWorkspaceId() . "&d=" . $this->getParentId() . "&t=" . $this->getIsInTrash(); - } - return $this->preview_link; - } - - /** - * @param mixed $preview_link - */ - public function setPreviewLink($preview_link) - { - $this->preview_link = $preview_link; - } - - - public function finishSynchroniseField($data) - { - // TODO: Implement finishSynchroniseField($data) method. - } - - /** - * @return mixed - */ - public function getHasPreview() - { - return $this->has_preview; - } - - /** - * @param mixed $haspreview - */ - public function setHasPreview($has_preview) - { - $this->has_preview = $has_preview; - } - - /** - * @return mixed - */ - public function getApplicationId() - { - return $this->application_id; - } - - /** - * @param mixed $application_id - */ - public function setApplicationId($application_id) - { - $this->application_id = $application_id; - } - - /** - * @return mixed - */ - public function getHiddenData() - { - if (!$this->hidden_data) { - return Array(); - } - return json_decode($this->hidden_data, 1); - } - - /** - * @param mixed $hidden_data - */ - public function setHiddenData($hidden_data) - { - $this->hidden_data = json_encode($hidden_data); - } - - - /** - * @return mixed - */ - public function getAttachements() - { - return json_decode($this->attachements, true); - } - - /** - * @param mixed $tags - */ - public function setAttachements($attachements) - { - $this->attachements = json_encode($attachements); - } - -} diff --git a/twake/backend/core/src/Twake/Drive/Entity/DriveFileVersion.php b/twake/backend/core/src/Twake/Drive/Entity/DriveFileVersion.php deleted file mode 100755 index d22d9d8c..00000000 --- a/twake/backend/core/src/Twake/Drive/Entity/DriveFileVersion.php +++ /dev/null @@ -1,272 +0,0 @@ -<?php - -namespace Twake\Drive\Entity; - -use Doctrine\ORM\Mapping as ORM; - - -use Twake\Users\Entity\User; - -/** - * DriveFileVersion - * - * @ORM\Table(name="drive_file_version",options={"engine":"MyISAM" , "scylladb_keys": { {"id": "DESC"}, {"file_id": "DESC"} } }) - * @ORM\Entity() - */ -class DriveFileVersion -{ - /** - * @ORM\Column(name="id", type="twake_timeuuid") - * @ORM\Id - */ - private $id; - - /** - * @ORM\Column(name="file_id", type="twake_timeuuid") - */ - private $file_id; - - /** - * @ORM\Column(name="creator_id", type="twake_no_salt_text") - */ - private $creator_id; - - /** - * @ORM\Column(type="twake_no_salt_text") - */ - private $realname; - - /** - * @ORM\Column(name="aes_key", type="twake_text") - */ - private $key; - - /** - * @ORM\Column(type="twake_no_salt_text") - */ - private $mode = "OpenSSL-2"; - - /** - * @ORM\Column(type="integer") - */ - private $size; - - /** - * @ORM\Column(type="twake_bigint") - */ - private $file_size; - - /** - * @ORM\Column(type="twake_datetime") - */ - private $date_added; - - /** - * @ORM\Column(type="twake_text") - */ - private $filename; - - /** - * @ORM\Column(type="twake_text") - */ - private $data; - - /** - * @ORM\Column(name="provider", type="string") - */ - private $provider; - - public function __construct(DriveFile $file, $user_id) - { - $this->file_id = $file->getId(); - $this->setKey(base64_encode(random_bytes(256))); - $this->setSize(0); - $this->resetRealName(); - $this->date_added = new \DateTime(); - $this->setFileName($file->getName()); - $this->setUserId($user_id); - } - - /** - * @return mixed - */ - public function getData() - { - return json_decode($this->data, true); - } - - /** - * @param mixed $data - */ - public function setData($data) - { - $this->data = json_encode($data); - } - - /** - * @return mixed - */ - public function setId($id) - { - $this->id = $id; - } - - public function getId() - { - return $this->id; - } - - public function setProvider($provider) - { - $this->provider = $provider; - } - - public function getProvider() - { - return $this->provider; - } - - /** - * @return mixed - */ - public function getKey() - { - return $this->key; - } - - /** - * @param mixed $key - */ - public function setKey($key) - { - $this->key = $key; - } - - /** - * @return mixed - */ - public function getRealName() - { - return $this->realname; - } - - /** - * @param mixed $realname - */ - public function resetRealName() - { - $this->realname = sha1(microtime() . rand(0, 10000)) . ".tw"; - } - - /** - * @return mixed - */ - public function getSize() - { - return $this->file_size ?: $this->size; //Size is the old 32bit integer... - } - - /** - * @param mixed $size - */ - public function setSize($size) - { - $this->file_size = $size; - } - - /** - * @return mixed - */ - public function getMode() - { - if (!$this->mode) { - return "AES"; - } - return $this->mode; - } - - public function setMode($mode) - { - $this->mode = $mode; - } - - public function getAsArray() - { - return Array( - "id" => $this->id, - "name" => $this->getFileName(), - "file_id" => $this->getFileId(), - "added" => $this->date_added->getTimestamp(), - "size" => $this->getSize(), - //"user" => $this->user!=null ? $this->user->getId() != 0 ? $this->user->getAsArray() : "" : "", - "creator" => $this->getUserId(), - "data" => $this->getData() - ); - } - - /** - * @return mixed - */ - public function getFileName() - { - return $this->filename; - } - - /** - * @param mixed $filename - */ - public function setFileName($filename) - { - $this->filename = $filename; - } - - /** - * @return mixed - */ - public function getUserId() - { - return $this->creator_id; - } - - /** - * @param mixed $user - */ - public function setUserId($user) - { - $this->creator_id = $user; - } - - /** - * @return mixed - */ - public function getDateAdded() - { - return $this->date_added; - } - - /** - * @param mixed $date_added - */ - public function setDateAdded($date_added) - { - $this->date_added = $date_added; - } - - /** - * @return mixed - */ - public function getFileId() - { - return $this->file_id; - } - - /** - * @param mixed $file_id - */ - public function setFileId($file_id) - { - $this->file_id = $file_id; - } - - -} diff --git a/twake/backend/core/src/Twake/Drive/Entity/UploadState.php b/twake/backend/core/src/Twake/Drive/Entity/UploadState.php deleted file mode 100755 index fd46a7c4..00000000 --- a/twake/backend/core/src/Twake/Drive/Entity/UploadState.php +++ /dev/null @@ -1,343 +0,0 @@ -<?php - - -namespace Twake\Drive\Entity; - -use Doctrine\ORM\Mapping as ORM; - - -/** - * UploadState - * - * @ORM\Table(name="uploadstate",options={"engine":"MyISAM", "scylladb_keys": {{"id": "ASC"}, {"identifier": "ASC"}} }) - * @ORM\Entity() - */ -class UploadState -{ - /** - * @var int - * - * @ORM\Column(name="id", type="twake_timeuuid") - * @ORM\Id - */ - protected $id; - - /** - * @ORM\Column(name ="identifier", type="twake_no_salt_text") - */ - protected $identifier; - - /** - * @ORM\Column(name ="user_id", type="twake_no_salt_text") - */ - protected $user_id; - - /** - * @ORM\Column(name ="workspace_id", type="twake_no_salt_text") - */ - protected $workspace_id; - - /** - * @ORM\Column(name ="filename", type="twake_text") - */ - protected $filename; - - /** - * @ORM\Column(name ="extension", type="twake_no_salt_text") - */ - protected $extension; - - /** - * @ORM\Column(name ="chunk", type="integer") - */ - protected $chunk; - - /** - * @ORM\Column(name ="success", type="twake_boolean") - */ - protected $success; - - /** - * @ORM\Column(name ="chunklist", type="twake_text", nullable=true) - */ - protected $chunklist; - - /** - * @ORM\Column(name ="has_preview", type="twake_boolean") - */ - protected $has_preview; - - /** - * @ORM\Column(name ="encryption_key", type="twake_text", nullable=true) - */ - protected $encryption_key; - - /** - * @ORM\Column(name ="encryption_mode", type="twake_text", nullable=true) - */ - protected $encryption_mode; - - /** - * @ORM\Column(name ="encryption_salt", type="twake_text", nullable=true) - */ - protected $encryption_salt; - - /** - * @ORM\Column(name ="storage_provider", type="string", nullable=true) - */ - protected $storage_provider; - - public function __construct($storage_provider, $workspace_id, $identifier, $filename, $extension, $chunklist) - { - $this->workspace_id = $workspace_id; - $this->identifier = $identifier; - $this->filename = $filename; - $this->extension = $extension; - $this->chunk = 1; - $this->chunklist = json_encode($chunklist); - $this->success = false; - $this->encryption_key = "testkey"; - $this->storage_provider = $storage_provider; - } - - /** - * @return mixed - */ - public function getStorageProvider() - { - return $this->storage_provider; - } - - /** - * @return mixed - */ - public function getChunklist() - { - return json_decode($this->chunklist); - } - - /** - * @param mixed $chunklist - */ - public function setChunklist($chunklist) - { - $this->chunklist = json_encode($chunklist); - } - - public function addChunk($chunk) - { - - $chunklist = $this->getChunklist(); - array_push($chunklist, $chunk); - $this->setChunklist($chunklist); - - $this->setChunk(count($this->getChunklist())); - } - - public function getAsArray() - { - $return = Array( - "id" => $this->getId(), - "filename" => $this->getFilename(), - "identifier" => $this->getIdentifier(), - "extension" => $this->getExtension(), - "chunk" => $this->getChunk(), - "chunklist" => $this->getChunklist(), - "succes" => $this->getSuccess() - ); - return $return; - } - - /** - * @return mixed - */ - public function getChunk() - { - return $this->chunk; - } - - /** - * @param mixed $chunk - */ - public function setChunk($chunk) - { - $this->chunk = $chunk; - } - - /** - * @return mixed - */ - public function getEncryptionKey() - { - return $this->encryption_key; - } - - /** - * @param mixed $encryption_key - */ - public function setEncryptionKey($encryption_key) - { - $this->encryption_key = $encryption_key; - } - - /** - * @return mixed - */ - public function getEncryptionMode() - { - return $this->encryption_mode; - } - - /** - * @param mixed $encryption_mode - */ - public function setEncryptionMode($encryption_mode): void - { - $this->encryption_mode = $encryption_mode; - } - - /** - * @return mixed - */ - public function getEncryptionSalt() - { - return $this->encryption_salt; - } - - /** - * @param mixed $encryption_salt - */ - public function setEncryptionSalt($encryption_salt): void - { - $this->encryption_salt = $encryption_salt; - } - - /** - * @return int - */ - public function getId() - { - return $this->id; - } - - /** - * @param int $id - */ - public function setId($id) - { - $this->id = $id; - } - - /** - * @return mixed - */ - public function getIdentifier() - { - return $this->identifier; - } - - /** - * @param mixed $identifier - */ - public function setIdentifier($identifier) - { - $this->identifier = $identifier; - } - - /** - * @return mixed - */ - public function getFilename() - { - return $this->filename; - } - - /** - * @param mixed $filename - */ - public function setFilename($filename) - { - $this->filename = $filename; - } - - /** - * @return mixed - */ - public function getExtension() - { - return $this->extension; - } - - /** - * @param mixed $extension - */ - public function setExtension($extension) - { - $this->extension = $extension; - } - - /** - * @return mixed - */ - public function getSuccess() - { - return $this->success; - } - - /** - * @param mixed $success - */ - public function setSuccess($success) - { - $this->success = $success; - } - - /** - * @return mixed - */ - public function getWorkspaceId() - { - return $this->workspace_id; - } - - /** - * @param mixed $workspace_id - */ - public function setWorkspaceId($workspace_id) - { - $this->workspace_id = $workspace_id; - } - - /** - * @return mixed - */ - public function getHasPreview() - { - return $this->has_preview; - } - - /** - * @param mixed $has_preview - */ - public function setHasPreview($has_preview) - { - $this->has_preview = $has_preview; - } - - /** - * @return mixed - */ - public function getUserId() - { - return $this->user_id; - } - - /** - * @param mixed $user_id - */ - public function setUserId($user_id) - { - $this->user_id = $user_id; - } - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Drive/Resources/Routing.php b/twake/backend/core/src/Twake/Drive/Resources/Routing.php deleted file mode 100755 index 3bd5897b..00000000 --- a/twake/backend/core/src/Twake/Drive/Resources/Routing.php +++ /dev/null @@ -1,35 +0,0 @@ -<?php - -namespace Twake\Drive\Resources; - -use Common\BaseRouting; - -class Routing extends BaseRouting -{ - - protected $routing_prefix = "ajax/"; - - protected $routes = [ -# Drive base - -#Old mobile versions - "drive/get" => ["handler" => "DriveFile:getAction", "methods" => ["POST"]], - "drive/save" => ["handler" => "DriveFile:save", "methods" => ["POST"]], - "drive/find" => ["handler" => "DriveFile:find", "methods" => ["POST"]], - "drive/remove" => ["handler" => "DriveFile:remove", "methods" => ["POST"]], -#Drive v1.2 - "drive/v2/get" => ["handler" => "DriveFile:getAction", "methods" => ["POST"]], - "drive/v2/save" => ["handler" => "DriveFile:save", "methods" => ["POST"]], - "drive/v2/remove" => ["handler" => "DriveFile:remove", "methods" => ["POST"]], - "drive/v2/find" => ["handler" => "DriveFile:find", "methods" => ["POST"]], - "drive/access/set" => ["handler" => "DriveFile:set_file_access", "methods" => ["POST"]], - "drive/access/reset" => ["handler" => "DriveFile:reset_file_access", "methods" => ["POST"]], - "drive/trash/empty" => ["handler" => "DriveFile:emptyTrash", "methods" => ["POST"]], - "drive/open" => ["handler" => "DriveFile:open", "methods" => ["POST"]], - "driveupload/upload" => ["handler" => "Upload:uploadFile", "methods" => ["POST"]], - "drive/download" => ["handler" => "Download:downloadfile", "methods" => ["POST", "GET"]], - "driveupload/download" => ["handler" => "Download:downloadfile", "methods" => ["POST", "GET"]], - "driveupload/preprocess" => ["handler" => "Upload:Preprocess", "methods" => ["POST"]], - ]; - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Drive/Resources/Services.php b/twake/backend/core/src/Twake/Drive/Resources/Services.php deleted file mode 100755 index f6b4d853..00000000 --- a/twake/backend/core/src/Twake/Drive/Resources/Services.php +++ /dev/null @@ -1,32 +0,0 @@ -<?php - -namespace Twake\Drive\Resources; - -use Common\BaseServices; - -class Services extends BaseServices -{ - protected $services = [ - "app.drive.preview" => "DrivePreview", -// arguments: ["@app.twake_doctrine"] - "app.drive" => "DriveFileSystem", -// arguments: ["@app.twake_doctrine", "@app.applications_api", "@app.websockets", "@app.accessmanager"] - "driveupload.storemanager" => "Storage/StorageManager", -// arguments: [%local%, %aws%, %openstack%, %kernel.root_dir%, "@app.drive.preview","@app.twake_doctrine"] - "driveupload.download" => "DownloadFile", -// arguments: ["@driveupload.resumable", "@app.twake_doctrine","@driveupload.storemanager", %DRIVE_SALT%, "@app.drive.old.adapter_selector"] - "driveupload.resumable" => "Resumable/Resumable", -// arguments: ["@app.twake_doctrine","@driveupload.storemanager", "@app.drive", %drive_previews_tmp_folder%, %drive_tmp_folder%, %DRIVE_SALT%] - "driveupload.upload" => "UploadFile", -// arguments: ["@driveupload.resumable"] - - ### OLD - "app.drive.old.adapter_selector" => "OldFileSystem/DriveAdapterSelector", -// arguments: [%aws%, %openstack%, "@app.drive.old.AWS_FileSystem", "@app.drive.old.OpenStack_FileSystem"] - "app.drive.old.OpenStack_FileSystem" => "OldFileSystem/Adapter_OpenStack_DriveFileSystem", -// arguments: [%openstack%, %kernel.root_dir%, %DRIVE_SALT%] - "app.drive.old.AWS_FileSystem" => "OldFileSystem/Adapter_AWS_DriveFileSystem", -// arguments: [%aws%, %kernel.root_dir%, %DRIVE_SALT%] - ]; - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Drive/Services/DownloadFile.php b/twake/backend/core/src/Twake/Drive/Services/DownloadFile.php deleted file mode 100755 index cb1451f7..00000000 --- a/twake/backend/core/src/Twake/Drive/Services/DownloadFile.php +++ /dev/null @@ -1,311 +0,0 @@ -<?php - -namespace Twake\Drive\Services; - -use http\Client\Response; -use Twake\Drive\Services\Storage\EncryptionBag; -use Twake\Drive\Services\ZipStream\Option\Archive; -use Twake\Drive\Services\ZipStream\TwakeFileStream; -use Twake\Drive\Services\ZipStream\ZipStream; -use App\App; - -class DownloadFile -{ - private $resumable; - private $doctrine; - private $download; - private $versionId; - private $oldFileSystem; - private $workspace_id; - private $storagemanager; - private $parameter_drive_salt; - - public function __construct(App $app) - { - $this->resumable = $app->getServices()->get("driveupload.resumable"); - $this->doctrine = $app->getServices()->get("app.twake_doctrine"); - $this->storagemanager = $app->getServices()->get("driveupload.storemanager"); - $this->parameter_drive_salt = $app->getContainer()->getParameter("storage.drive_salt"); - $this->oldFileSystem = $app->getServices()->get("app.drive.old.adapter_selector"); - } - - public function download($workspace_id, $files_ids, $download, $versionId) - { - - //TODO verify access to this file - - if (!is_array($files_ids)) { - $files_ids = [$files_ids]; - } - - $zip_archive = null; - $zip = false; - - $this->download = $download; - $this->versionId = $versionId; - $this->workspace_id = $workspace_id; - $name = null; - - if (count($files_ids) > 1) { - $zip = true; - $name = "Document.zip"; - } elseif (count($files_ids) == 1) { - $file = $this->doctrine->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $files_ids[0])); - if($file){ - if ($file->getIsDirectory()) { - $name = $file->getName() . ".zip"; - $zip = true; - $files_ids = Array(); - $files_son = $this->doctrine->getRepository("Twake\Drive:DriveFile")->findBy(Array("workspace_id" => $file->getWorkspaceId(), "parent_id" => $file->getId())); - foreach ($files_son as $son) { - $files_ids[] = $son->getId() . ""; - } - } - } - } - - if (isset($zip) && $zip) { - //plusieurs fichiers ou un dossier, on fait un zip - # enable output of HTTP headers - $options = new Archive(); - $options->setSendHttpHeaders(true); - $options->setZeroHeader(true); - $options->setEnableZip64(false); - - # create a new zipstream object - $zip_archive = new ZipStream($name, $options); - //error_log(print_r($files_ids,true)); - $this->downloadList($files_ids, $zip_archive, "/"); - - } else { - //téléchargement classique - $this->downloadList($files_ids); - } - - - if (isset($zip) && $zip) { - //on ajoute un fichier url dans le zip - - # finish the zip stream - $zip_archive->finish(); - } - - die(); - return true; - - } - - public function downloadList($files, &$zip = null, $zip_prefix = null) - { - $download = $this->download; - $versionId = $this->versionId; - $workspace_id = $this->workspace_id; - $first_element = true; - - foreach ($files as $file) { - - if (!$file) { - return false; - } - - if (is_string($file)) { - $file = $this->doctrine->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $file)); - } - - if ($file->getWorkspaceId() != $workspace_id && !$file->getDetachedFile()) { - continue; - } - - if ($file) { - $download_name = $file->getName(); - $ext = $file->getExtension(); - - $version = null; - - if ($file->getUrl()) { - - $version = null; - - } else if (isset($versionId) && $versionId && strlen($versionId) > 10 && $versionId != $file->getLastVersionId()) { - - $version = $this->doctrine->getRepository("Twake\Drive:DriveFileVersion")->find($versionId); - - if (!$version || $version->getFileId() != $file->getId()) { - continue; - } - - $download_name = date("Y-m-d_h:i", $version->getDateAdded()->getTimestamp()) . "_" . $version->getFileName(); - } else { - - $version = $this->doctrine->getRepository("Twake\Drive:DriveFileVersion")->find($file->getLastVersionId()); - } - - if ($first_element) { - - $first_element = false; - - if (!isset($zip) || !isset($zip_prefix)) { - - $final_download_name = $download_name; - if ($version) { - $final_download_size = $version->getSize(); - } else { - $final_download_size = 0; - } - - header('Content-Description: File Transfer'); - if ($download) { - - if (in_array($ext, ["gif", "svg", "jpeg", "jpg", "tiff", "png"])) { - header('Content-Type: image; filename="' . $final_download_name . '"'); - }else - if ($ext == "pdf") { - header("Content-type: application/pdf"); - }else{ - header('Content-Type: application/octet-stream'); - header("Content-type: application/force-download"); - } - - header('Content-Disposition: attachment; filename="' . $final_download_name . '"'); - } else { - header('Content-Disposition: inline; filename="' . $final_download_name . '"'); - - if (in_array($ext, ["gif", "svg", "jpeg", "jpg", "tiff", "png"])) { - header('Content-Type: image; filename="' . $final_download_name . '"'); - } - if ($ext == "pdf") { - header("Content-type: application/pdf"); - } - - } - - header('Expires: 0'); - header('Cache-Control: must-revalidate'); - header('Pragma: public'); - header('Content-Length: ' . $final_download_size); - - if (isset($_SERVER['HTTP_ORIGIN'])) { - header('Access-Control-Allow-Origin: ' . $_SERVER['HTTP_ORIGIN']); - } - header('Access-Control-Allow-Credentials: true'); - - } - } - - if (isset($zip_prefix)) { - if ($file->getIsDirectory()) { - if ($zip_prefix == "/") { - $next_zip_prefix = $zip_prefix . $file->getName(); - } else { - $next_zip_prefix = $zip_prefix . DIRECTORY_SEPARATOR . $file->getName(); - } - - $files_son = $this->doctrine->getRepository("Twake\Drive:DriveFile")->findBy(Array("workspace_id" => $file->getWorkspaceId(), "parent_id" => $file->getId())); - foreach ($files_son as $son) { - - $this->downloadList(Array($son->getId() . ""), $zip, $next_zip_prefix); - } - } else { - $this->addOneFile($file, $version, $zip, $zip_prefix); - } - } else { - $this->addOneFile($file, $version); - } - } - } - } - - public function addOneFile($file, $version, &$zip = null, $zip_prefix = null) - { - if (!$version && !$file->getUrl()) { - error_log("no version found"); - return false; - } - if (!$version && $file->getUrl()) { - $url = $file->getUrl(); - if (isset($url)) { - //on ajoute un fichier url dans le zip - $zip->addFile($zip_prefix . DIRECTORY_SEPARATOR . $file->getName() . ".url", "[InternetShortcut]" . "\n" . "URL=" . $url); - } - return true; - } - if (isset($version->getData()["identifier"]) && isset($version->getData()["upload_mode"]) && $version->getData()["upload_mode"] == "chunk") { - $this->downloadFile($version, $version->getData()["identifier"], $file->getName(), $zip, $zip_prefix); - return true; - } else { - if ($this->oldFileSystem) { - - $provider = $version->getProvider(); - //Prod retro-compatibility - if($this->storagemanager->getProviderConfiguration("")["label"] === ""){ - $provider = $provider ?: ""; - } - $oldFileSystem = $this->oldFileSystem->getFileSystem($provider); - - $completePath = $oldFileSystem->getRoot() . $file->getPath(); - - //START - Woodpecker files import ! - $test_old_version = explode("/previews/", $file->getPreviewLink()); - if (count($test_old_version) == 2) { - $test_old_version = explode("/", $test_old_version[1]); - if ($test_old_version[0] == "detached") { - $test_old_version[0] = $test_old_version[1]; - } - if (intval($test_old_version[0]) . "" == $test_old_version[0]) { - $completePath = $oldFileSystem->getRoot() . str_replace(Array("https://s3.eu-west-3.amazonaws.com/twake.eu-west-3/public/uploads/previews/", ".png"), "", $file->getPreviewLink()); - } - } - //END - Woodpecker files import ! - - $completePath = $oldFileSystem->decode($completePath, $version->getKey(), $version->getMode()); - $fp = fopen($completePath, "r"); - ob_clean(); - flush(); - while (!feof($fp)) { - $buff = fread($fp, 1024); - if(!$zip){ - print $buff; - } - } - - if($zip){ - $zip->addFileFromPath($zip_prefix . DIRECTORY_SEPARATOR . $file->getName(), $completePath); - } - - //Delete decoded file - @unlink($completePath); - return true; - } - } - return false; - } - - public function downloadFile($version, $identifier, $name, &$zip = null, $zip_prefix = null) - { - - $uploadstate = $this->doctrine->getRepository("Twake\Drive:UploadState")->findOneBy(Array("identifier" => $identifier)); - if ($uploadstate->getEncryptionMode() == "OpenSSL-2") { - $param_bag = new EncryptionBag($uploadstate->getEncryptionKey(), $uploadstate->getEncryptionSalt(), $uploadstate->getEncryptionMode()); - } else { - //Old resumable with drive salt - $param_bag = new EncryptionBag($uploadstate->getEncryptionKey(), $this->parameter_drive_salt, "OpenSSL-2"); - } - if (isset($uploadstate)) { - if (isset($zip_prefix) && isset($zip)) { - $stream_zip = new TwakeFileStream($this->storagemanager->getAdapter($version->getProvider()), $param_bag, $uploadstate); - $zip->addFileFromPsr7Stream($zip_prefix . DIRECTORY_SEPARATOR . $name, $stream_zip); - } else { - for ($i = 1; $i <= $uploadstate->getChunk(); $i++) { - $this->storagemanager->getAdapter($version->getProvider())->read("stream", $i, $param_bag, $uploadstate); - } - } - } else { - $file = $this->doctrine->getRepository("Twake\Drive:DriveFile")->findBy(Array("id" => $identifier)); - $url = $file->getUrl(); - if (isset($url)) { - //on ajoute un fichier url dans le zip - $zip->addFile($zip_prefix . DIRECTORY_SEPARATOR . "google.url", "[InternetShortcut]" . "\r\n" . "URL=" . $url); - } - } - } -} diff --git a/twake/backend/core/src/Twake/Drive/Services/DriveFileSystem.php b/twake/backend/core/src/Twake/Drive/Services/DriveFileSystem.php deleted file mode 100755 index 0c32e14c..00000000 --- a/twake/backend/core/src/Twake/Drive/Services/DriveFileSystem.php +++ /dev/null @@ -1,852 +0,0 @@ -<?php - - -namespace Twake\Drive\Services; - -use App\App; -use Twake\Core\CommonObjects\AttachementManager; -use Twake\Drive\Entity\DriveFile; -use Twake\Drive\Entity\DriveFileVersion; - -class DriveFileSystem -{ - - public function __construct(App $app) - { - $this->em = $app->getServices()->get("app.twake_doctrine"); - $this->applications_api = $app->getServices()->get("app.applications_api"); - $this->drive_resumable = false; - $this->ws = $app->getServices()->get("app.websockets"); - $this->access_manager = $app->getServices()->get("app.accessmanager"); - $this->attachementManager = new AttachementManager($this->em, $this->ws); - $this->storagemanager = $app->getServices()->get("driveupload.storemanager"); - } - - function setDriveResumable($drive_resumable) - { - $this->drive_resumable = $drive_resumable; - } - - /** Called from Collections manager to verify user has access to websockets room, registered in Core/Services/Websockets.php */ - public function init($route, $data, $current_user = null) - { - $route = explode("/", $route); - - if (count($route) < 3) { - return false; - } - - $workspace_id = $route[1]; - $document_id = $route[2]; - - if (!$workspace_id || (!empty($data["get_options"]["workspace_id"]) && $workspace_id != $data["get_options"]["workspace_id"])) { - return false; - } - - if (!$document_id || $document_id == "undefined") { - $document_id = $this->getRootEntity($workspace_id)->getId(); - } - - return $this->hasAccess([ - "id" => $document_id, - "workspace_id" => $workspace_id, - "public_access_token" => $data["get_options"]["public_access_token"] - ], $current_user); - - } - - public function hasAccess($data, $current_user = null) - { - if ($current_user === null) { - return true; - } - if (!is_string($current_user)) { - $current_user = $current_user->getId(); - } - return $this->access_manager->has_access($current_user, Array( - "type" => "DriveFile", - "edition" => true, - "object_id" => empty($data["id"]) ? (isset($data["parent_id"]) ? $data["parent_id"] : null) : $data["id"], - "workspace_id" => isset($data["workspace_id"]) ? $data["workspace_id"] : null - ), ["token" => @$data["public_access_token"]]); - } - - public function get($options, $current_user) - { - $options["id"] = $options["directory_id"]; - if (!$this->hasAccess($options, $current_user)) { - return false; - } - - $directory_id = $options["directory_id"]; - $workspace_id = $options["workspace_id"]; - $trash = $options["trash"]; - - if (!$directory_id) { - $directory_id = "root"; - } - - $elements = $this->listDirectory($workspace_id, $directory_id, $trash); - $path = $this->getPath($workspace_id, $directory_id); - - - $list = Array(); - foreach ($elements as $element) { - $array = $element->getAsArray(); - $array["path"] = $path; - $array["versions"] = $this->getFileVersion($element, true); - - $list[] = $array; - } - return $list; - - } - - public function listDirectory($workspaceId, $directoryId, $trash = false) - { - - if (!$workspaceId) { - return false; - } - - $repo = $this->em->getRepository("Twake\Drive:DriveFile"); - $root = $this->getRootEntity($workspaceId); - - if (!$directoryId || $directoryId == "root") { - $directoryId = $root->getId(); - } - - if ($directoryId == $root->getId()) { - if ($trash) { - $list = $repo->findBy(Array("workspace_id" => $workspaceId, "parent_id" => $this->getTrashEntity($workspaceId)->getId() . "")); - } else { - $list = $repo->findBy(Array("workspace_id" => $workspaceId, "parent_id" => $root->getId())); - } - } else { - $list = $repo->findBy(Array("workspace_id" => $workspaceId, "parent_id" => $directoryId)); - } - - return $list; - } - - public function getRootEntity($workspace_id) - { - $root = $this->em->getRepository("Twake\Drive:DriveFile") - ->findOneBy(Array("workspace_id" => $workspace_id . "", "isintrash" => false, "parent_id" => "")); - if (!$root) { - $root = new DriveFile($workspace_id, "", true); - $this->em->persist($root); - $this->em->flush(); - } - return $root; - } - - public function getTrashEntity($workspace_id) - { - $trash = $this->em->getRepository("Twake\Drive:DriveFile") - ->findOneBy(Array("workspace_id" => $workspace_id . "", "parent_id" => "trash")); - - if (!$trash) { - $trash = new DriveFile($workspace_id, "trash", true); - $trash->setParentId("trash"); - $this->em->persist($trash); - $this->em->flush(); - } - - return $trash; - } - - public function getPath($workspace_id, $directory_id) - { - - $repo = $this->em->getRepository("Twake\Drive:DriveFile"); - - if ($directory_id == "root" || $directory_id == "trash") { - $child = $this->getRootEntity($workspace_id); - return [$child->getAsArray()]; - } else { - $child = $repo->findOneBy(Array("id" => $directory_id)); - } - - if (!$child) { - return []; - } - - $list = [$child->getAsArray()]; - - $iter = 0; - while ($child && $child->getParentId() && $child->getParentId() != "root" && $child->getParentId() != "trash" && $iter < 100) { - $iter++; - $parent = $repo->findOneBy(Array("id" => $child->getParentId())); - if ($parent) { - $list[] = $parent->getAsArray(); - $child = $parent; - } else { - $child = null; - } - } - - $list = array_reverse($list); - - return $list; - } - - public function getFileVersion($fileOrFileId, $asArray = false) - { - if (!is_object($fileOrFileId)) { - $file = $this->em->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $fileOrFileId)); - } else { - $file = $fileOrFileId; - } - if (!$file || $file->getIsDirectory()) { - return false; - } - $versionsEntity = $this->em->getRepository("Twake\Drive:DriveFileVersion")->findBy(Array("file_id" => $file->getId())); - if ($asArray) { - $versions = Array(); - foreach ($versionsEntity as $version) { - $versions[] = $version->getAsArray(); - } - return $versions; - } - return $versionsEntity; - } - - public function find($options, $current_user) - { - $element_id = $options["element_id"]; - $workspace_id = $options["workspace_id"]; - - if (!$element_id) { - $element_id = "root"; - } - - $options["id"] = $element_id; - if (!$this->hasAccess($options, $current_user)) { - return false; - } - - if ($element_id == "root") { - $element = $this->getRootEntity($workspace_id); - } else if ($element_id == "trash") { - $element = $this->getTrashEntity($workspace_id); - } else { - $element = $this->em->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $element_id)); - } - - $data = $element; - - if (!$data) { - return null; - } - - if (!$data->getDetachedFile() && $element->getParentId() && $element->getParentId() != "trash") { - $path = $this->getPath($workspace_id, $element_id); - } else { - $path = [$data->getAsArray()]; - } - - $versions = $this->em->getRepository("Twake\Drive:DriveFileVersion")->findBy(Array("file_id" => $element->getId())); - $file_version = []; - foreach ($versions as $version) { - $file_version[] = $version->getAsArray(); - } - $data = $data->getAsArray(); - $data["path"] = $path; - $data["versions"] = $file_version; - - return $data; - - } - - public function remove($object, $options, $current_user = null, $return_entity = false) - { - if (!$this->hasAccess($object, $current_user)) { - return false; - } - if (isset($object["id"])) { // on recoit un identifiant donc on supprime un drive file - $fileordirectory = $this->em->getRepository("Twake\Drive:DriveFile") - ->findOneBy(Array("id" => $object["id"])); - if ($fileordirectory && $fileordirectory->getParentId() && $fileordirectory->getParentId() != "trash") { - //on change la taille de tous les dossiers parent a celui ci - if ($fileordirectory->getIsInTrash()) { - //on delete definitevement de la corbeille donc on modifie pas la racine - $this->updateSize($fileordirectory->getParentId(), -$fileordirectory->getSize(), 2); - } else { - $this->updateSize($fileordirectory->getParentId(), -$fileordirectory->getSize(), 0); - } - - if ($fileordirectory->getIsDirectory()) { - $fileson = $this->em->getRepository("Twake\Drive:DriveFile") - ->findBy(Array("workspace_id" => $fileordirectory->getWorkspaceId() . "", "parent_id" => $object["id"] . "")); - if (isset($fileson)) { - foreach ($fileson as $file) { - $this->recursedelete($file); - } - } - } - $this->em->remove($fileordirectory); - $this->em->flush(); - - $this->notifyConnectors($fileordirectory, "remove", $current_user); - - } else { - return false; - } - } - - if ($return_entity) { - return $fileordirectory; - } - return $fileordirectory->getAsArray(); - } - - protected function updateSize($directory, $delta, $to_or_out_trash) // on passe l'id du directory - { - - $workspace_id = null; - - $iter = 0; - - while ($directory != null && $iter < 100) { - - $iter++; - - if ($directory == "root" || $directory == "trash" || $directory == "removed_trashes") { - if (!$workspace_id) { - return; - } - $directory = $this->getRootEntity($workspace_id); - } - if (is_string($directory)) { - $directory = $this->em->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $directory . "")); - - if (!$workspace_id && $directory) { - $workspace_id = $directory->getWorkspaceId(); - } - - } - if (!$directory) { - $directory = null; - } - - if ($directory != null) { - if (!($directory->getParentId() == "" && (($to_or_out_trash === 1 && $delta > 0) || ($to_or_out_trash === 2 && $delta < 0)))) { - $currentSize = $directory->getSize(); - $directory->setSize($currentSize + $delta); - $this->em->persist($directory); - $this->em->flush(); - } - - $directory = $this->em->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $directory->getId() . "")); - $directory = $directory->getParentId(); - } - } - } - - public function recursedelete($directoryOrFile) - { - if ($directoryOrFile->getIsDirectory()) { - $fileson = $this->em->getRepository("Twake\Drive:DriveFile")->findBy(Array("workspace_id" => $directoryOrFile->getWorkspaceId() . "", "parent_id" => $directoryOrFile->getId() . "")); - if (isset($fileson)) { - foreach ($fileson as $file) { - $this->recursedelete($file); - } - } - }else{ - try{ - //Remove file from storage - $version = $directoryOrFile->getLastVersion($this->em); - $adapter = $this->storagemanager->getAdapter($version->getProvider()); - $identifier = $version->getData()["identifier"]; - $uploadstate = $this->em->getRepository("Twake\Drive:UploadState")->findOneBy(Array("identifier" => $identifier)); - for ($i = 1; $i <= $uploadstate->getChunk(); $i++) { - $adapter->remove($uploadstate, $i); - } - }catch(\Exception $err){ - error_log($err); - } - } - $this->em->remove($directoryOrFile); - $this->em->flush(); - } - - private function notifyConnectors(DriveFile $file, $did_create = true, $current_user = null) - { - - if ($file->getDetachedFile()) { - return; - } - - $workspace_id = $file->getWorkspaceId(); - $workspace = $this->em->getRepository("Twake\Workspaces:Workspace")->findOneBy(Array("id" => $workspace_id)); - $group = $this->em->getRepository("Twake\Workspaces:Group")->findOneBy(["id" => $workspace->getGroup()]); - - $notification_data = Array( - "group" => $group->getAsArray(), - "workspace" => $workspace->getAsArray($this->em), - "file" => $file->getAsArray(), - "user" => $current_user - ); - - if ($did_create === "remove") { - $hook_name = "remove_file"; - } else if ($did_create) { - $hook_name = "new_file"; - } else { - $hook_name = "edit_file"; - } - - $application_notified = []; - - //Look if this file is in application directory - $child = $file; - $repo = $this->em->getRepository("Twake\Drive:DriveFile"); - $iter = 0; - while ($child && $child->getParentId() && $child->getParentId() != "root" && $child->getParentId() != "trash" && $iter < 100) { - $iter++; - - $parent_id = null; - if ($child->getIsInTrash()) { - $parent_id = $child->getOldParent(); - } - - if (!$parent_id) { - $parent_id = $child->getParentId(); - } - - $parent = $repo->findOneBy(Array("id" => $parent_id)); - if ($parent) { - - if ($parent->getApplicationId() && $parent->getExternalStorage()) { - - $notification_data["external_storage_root"] = $parent->getAsArray(); - - if (!in_array($parent->getApplicationId(), $application_notified)) { - $application_notified[] = $parent->getApplicationId(); - $this->applications_api->notifyApp($parent->getApplicationId(), "hook", $hook_name, $notification_data); - } - - //Do not continue while because we found our app container - break; - } - - $child = $parent; - } else { - $child = null; - } - } - - //Notify all connectors with access to drive - $resources = []; - $resources = array_merge($resources, $this->applications_api->getResources($workspace_id, "workspace_drive", $workspace_id)); - $apps_ids = []; - foreach ($resources as $resource) { - if (in_array("file", $resource->getApplicationHooks())) { - $apps_ids[] = $resource->getApplicationId(); - } - } - if (count($apps_ids) > 0) { - foreach ($apps_ids as $app_id) { - if ($app_id) { - if (!in_array($app_id, $application_notified)) { - $application_notified[] = $app_id; - $this->applications_api->notifyApp($app_id, "hook", $hook_name, $notification_data); - } - } - } - } - - } - - public function save($object, $options, $current_user = null, $upload_data = Array(), $return_entity = false) - { - - if (!$this->hasAccess($object, $current_user)) { - return false; - } - - $application = isset($options["application_id"]) ? $options["application_id"] : false; - - $did_create = false; - $fileordirectory = null; - if (isset($object["id"]) && $object["id"]) { // on recoit un identifiant donc c'est un modification - - - - $fileordirectory = $this->em->getRepository("Twake\Drive:DriveFile") - ->findOneBy(Array("id" => $object["id"] . "")); - if (!$fileordirectory) { - return false; - } - - $fileordirectory->setLastModified(); - - } else { // pas d'identifiant on veut donc créer un fichier - - if (!isset($object["workspace_id"])) { - return false; - } - $front_id = $object["front_id"]; - $workspace_id = $object["workspace_id"]; - $fileordirectory = new DriveFile($workspace_id, "defined_later", $object["is_directory"]); - $fileordirectory->setFrontId($front_id); - $fileordirectory->setCreator($current_user); - $fileordirectory->setPreviewHasBeenGenerated(false); - $fileordirectory->setHasPreview(false); - if (isset($object["detached"]) && $object["detached"]) { - $fileordirectory->setDetachedFile(true); - $parent_id = "detached"; - } - - $did_create = true; - } - - //Trying to modify trash or root folders - if ($fileordirectory->getParentId() == "trash" || (!$fileordirectory->getParentId() && !$fileordirectory->getDetachedFile())) { - return false; - } - - $did_move = false; - if (isset($object["parent_id"]) && $object["parent_id"] != "" && $object["parent_id"] != $fileordirectory->getParentId() . "") { - $parent_id = $object["parent_id"] . ""; - $did_move = true; - - if ($did_create) { // on set le fichier avec le bon parent - $file_parent = $this->em->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $object["parent_id"] . "")); - if ($file_parent == null) { - return false; - } - } else { // on a un parent ce n'est pas une creation c'est un déplacement - $fileordirectory_parent_id = $fileordirectory->getParentId() . ""; - if ($fileordirectory_parent_id != $parent_id) { //changement de parent id donc le fichier a été déplacé. - $this->move($fileordirectory, $fileordirectory_parent_id, $parent_id, $current_user); - } - } - } else { - if (!isset($object["detached"]) && $did_create) { - $parent_id = $this->getRootEntity($workspace_id)->getId(); - } - } - if (isset($parent_id)) { - $fileordirectory->setParentId($parent_id); - } - - if (isset($object["trash"]) && $object["trash"] && !$did_create && !$fileordirectory->getIsInTrash()) { // on veut mettre un fichier a la corbeille - $oldparent = $fileordirectory->getParentId() . ""; - $newparent = $this->getTrashEntity($fileordirectory->getWorkspaceId() . "")->getId() . ""; - $this->move($fileordirectory, $oldparent, $newparent, 1, $current_user); - - $fileordirectory->setOldParent($oldparent); - - - $this->recursetrash($fileordirectory); - - - } elseif (isset($object["trash"]) && !$object["trash"] && !$did_create && $fileordirectory->getIsInTrash()) { //on veut restaurer un fichier de la corbeille sur son ancien parent - $oldparent = $fileordirectory->getParentId() . ""; - $newparent = $fileordirectory->getOldParent() . ""; - $parenttrash = $this->em->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $oldparent)); - if ($parenttrash->getIsInTrash() && $newparent === "") { // Si le parent est a la corbeille également on va le mettre a la racine du workspace - $newparent = $this->getRootEntity($fileordirectory->getWorkspaceId() . "")->getId() . ""; - } - $this->move($fileordirectory, $oldparent, $newparent, 2, $current_user); - - $fileordirectory->setOldParent(""); - $this->recursetrash($fileordirectory); - - } - - - $name_changed = false; - if (isset($object["name"]) && $object["name"] != $fileordirectory->getName()) { - $name_changed = true; - $fileordirectory->setName($object["name"]); - } - - if (($name_changed || $did_create || $did_move) && !$fileordirectory->getIsInTrash()) { - - $repo = $this->em->getRepository("Twake\Drive:DriveFile"); - $list = $repo->findBy(Array("workspace_id" => $fileordirectory->getWorkspaceId(), "parent_id" => $fileordirectory->getParentId(), "isintrash" => false)); - - $present = true; - $iter = 0; - while ($present == true && $iter < 100) { - $iter++; - - $second_present = false; - foreach ($list as $el) { - if ($el->getName() == $fileordirectory->getName() && $el->getId() != $fileordirectory->getId()) { - $second_present = true; - } - } - if (!$second_present) { - $present = false; - } else { - $present = true; - - preg_match("/(.*)(\.[a-zA-Z0-9]+)+$/i", $fileordirectory->getName(), $matches); - $name = isset($matches[1]) ? $matches[1] : ""; - $ext = isset($matches[2]) ? $matches[2] : ""; - if (!$ext) { - $name = $fileordirectory->getName(); - $ext = ""; - } - preg_match("/-([0-9]+)$/i", $name, $matches); - $cur_val = intval(isset($matches[1]) ? $matches[1] : 0); - $cur_val_to_replace = isset($matches[0]) ? $matches[0] : ""; - - if ($iter >= 100) { - $new_name = substr($name, 0, strlen($name) - strlen($cur_val_to_replace)) . "-" . date("U") . $ext; - } else { - $new_name = substr($name, 0, strlen($name) - strlen($cur_val_to_replace)) . "-" . ($cur_val + 1) . $ext; - } - - $fileordirectory->setName($new_name); - - } - } - - } - - if ($application && $object["preview_link"]) { - $fileordirectory->setHasPreview(true); - $fileordirectory->setPreviewHasBeenGenerated(true); - $fileordirectory->setPreviewLink($object["preview_link"]); - } - - if (isset($object["hidden_data"])) { - $fileordirectory->setHiddenData($object["hidden_data"]); - } - - if ($application && isset($object["last_modification_token"])) { - $fileordirectory->setLastModificationToken($object["last_modification_token"]); - } else { - $fileordirectory->setLastModificationToken(date("U") . "-" . md5(random_bytes(20))); - } - - if (isset($object["application_id"])) { - $fileordirectory->setApplicationId($object["application_id"]); - if (isset($object["external_storage"])) { - $fileordirectory->setExternalStorage($object["external_storage"]); - } - } - - if (isset($object["url"])) { - $fileordirectory->setUrl($object["url"]); - } - - if (isset($object["tags"])) { - $fileordirectory->setTags($object["tags"]); - } - if (isset($object["attachments"]) || $did_create) { - $this->attachementManager->updateAttachements($fileordirectory, isset($object["attachments"]) ? $object["attachments"] : Array()); - } - - - $fileordirectory->setLastUser($current_user); - - - if (isset($fileordirectory)) { - $fileordirectory->setEsIndex(false); - $this->em->persist($fileordirectory); - $this->em->flush(); - } - - - if (isset($object["_once_new_version"])) { - $new = $object["_once_new_version"]; - } else { - $new = false; - } - //Update size if file was created AFTER versionning - if (!$fileordirectory->getIsDirectory() && $upload_data) { - $size_before = $fileordirectory->getSize(); - - $this->versionning($fileordirectory, $current_user, $upload_data, $new); - $size_after = $upload_data["size"]; - - if ($size_after - $size_before != 0) { - if ($fileordirectory->getDetachedFile()) { - $fileordirectory->setSize($size_after); - } else { - $this->updateSize($fileordirectory->getId() . "", $size_after - $size_before, false); - } - } - } - - $this->notifyConnectors($fileordirectory, $did_create, $current_user); - - if ($return_entity) { - return $fileordirectory; - } - return $fileordirectory->getAsArray(); - } - - public function move($fileordirectory, $oldparent, $newparent, $to_or_out_trash = 0, $current_user = null) - { - $this->em->remove($fileordirectory); - $this->em->flush(); - $fileordirectory->setParentId($newparent); - $size = $fileordirectory->getSize(); - if ($fileordirectory->getDetachedFile() == false) { - //on doit modifer la taille recursivement de l'ancien dossier parent - $this->updateSize($oldparent, -$size, $to_or_out_trash); - $trashcheck = $this->em->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $newparent . "")); - if (isset($trashcheck) && $trashcheck->getIsInTrash()) { // si on deplace un fichier sur un autre qui est présent a la corbeille mais sans passer par la mise a la corbeille - $to_or_out_trash = 1; - $fileordirectory->setOldParent($oldparent); - //$fileordirectory->setIsInTrash(true); - $this->recursetrash($fileordirectory); - } - } else { - $fileordirectory->setDetachedFile(false); - } - $this->updateSize($newparent, $size, $to_or_out_trash); - - } - - public function recursetrash($directory) - { // permet de changer tous les in trash d'une arborescence - - $fileson = $this->em->getRepository("Twake\Drive:DriveFile")->findBy(Array("workspace_id" => $directory->getWorkspaceId() . "", "parent_id" => $directory->getId() . "")); - if (isset($fileson)) { - foreach ($fileson as $file) { - $this->recursetrash($file); - } - } - $file = $this->em->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $directory->getId())); - if (isset($file)) { - $this->em->remove($file); - $this->em->flush(); - } - $directory->setIsInTrash(!($directory->getIsInTrash())); - $this->em->persist($directory); - $this->em->flush(); - } - - public function versionning($fileordirectory, $current_user, $upload_data = null, $create_new_version = false) - { - - //on recupere la derniere version pour le fichier en cours - $last_version = null; - if ($fileordirectory->getLastVersionId()) { - $last_version = $this->em->getRepository("Twake\Drive:DriveFileVersion")->findOneBy(Array("id" => $fileordirectory->getLastVersionId())); - } - - if ($last_version && !$create_new_version && count($last_version->getData()) > 0 && $this->drive_resumable) { - //In this case we must remove what we have on storage ! - $this->drive_resumable->removeFromStorage($last_version->getData()); - } - - if (!$last_version || $create_new_version) { // on crée une nouvelle version pour le fichier en question - $last_version = new DriveFileVersion($fileordirectory, $current_user); - $last_version->setProvider($upload_data["provider"] ?: $this->storagemanager->getOneProvider()); - } - - if($last_version && $upload_data["provider"]){ - $last_version->setProvider($upload_data["provider"]); - } - - $last_version->setData(isset($upload_data["data"]) ? $upload_data["data"] : Array()); - $last_version->setSize(isset($upload_data["size"]) ? $upload_data["size"] : 0); - - $this->em->persist($last_version); - $this->em->flush(); - - $fileordirectory->setLastVersionId($last_version->getId()); - $this->em->persist($fileordirectory); - $this->em->flush(); - - } - - public function set_file_access($file_id, $has_public_acess = false, $is_editable = false, $authorized_members = Array(), $authorized_channels = Array(), $current_user = null) - { - if ($current_user) { - - $df = $this->em->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $file_id)); - //on cree la liste des personnes autorizé; - if (strlen($df->getPublicAccessKey()) > 10) { - $token = $df->getPublicAccessKey(); - } else { - $token = sha1(bin2hex(random_bytes(120))); - $df->setPublicAccessKey($token); - } - - if (!$has_public_acess) { - $df->setPublicAccessKey(""); - } - - $jsondata = Array( - "token" => $has_public_acess ? $token : "", - "authorized_members" => $authorized_members, - "authorized_channels" => $authorized_channels, - "is_editable" => $is_editable); - $df->setAccesInfo($jsondata); - $this->em->persist($df); - $this->em->flush(); - - return $df->getAsArray(); - - } - } - - public function reset_file_access($file_id, $current_user = null) - { - if ($current_user) { - - $df = $this->em->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $file_id)); - $df->setPublicAccessKey(""); - $jsondata = Array( - "token" => "", - "authorized_members" => Array(), - "authorized_channels" => Array(), - "is_editable" => false - ); - $df->setAccesInfo($jsondata); - $this->em->persist($df); - $this->em->flush(); - - return $df; - - } - } - - public function emptyTrash($workspace_id, $current_user) - { - - $trash = $this->getTrashEntity($workspace_id); - $this->updateSize($this->getRootEntity($workspace_id), -$trash->getSize(), 2); - - //We have just to rename the trash, we are not really deleting it - $this->em->remove($trash); - $this->em->flush(); - - $trash->setParentId("removed_trashes"); - $trash->setName("removed_trash_" . date("U")); - $this->em->persist($trash); - $this->em->flush(); - - $this->recursedelete($trash); - - //Regenerate new trash - $new_trash = $this->getTrashEntity($workspace_id); - - return $new_trash->getAsArray(); - - } - - public function open($file_id) - { - $file = $this->em->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $file_id)); - if ($file != null) { - $file->setOpeningRate($file->getOpeningRate() + 1); - $this->em->persist($file); - $this->em->flush(); - return true; - } - - return false; - } - -} diff --git a/twake/backend/core/src/Twake/Drive/Services/DrivePreview.php b/twake/backend/core/src/Twake/Drive/Services/DrivePreview.php deleted file mode 100755 index 71130048..00000000 --- a/twake/backend/core/src/Twake/Drive/Services/DrivePreview.php +++ /dev/null @@ -1,328 +0,0 @@ -<?php -/** - * Created by PhpStorm. - * User: vaati - * Date: 07/05/18 - * Time: 11:32 - */ - -namespace Twake\Drive\Services; - -use App\App; -use Dompdf\Exception; - -class DrivePreview -{ - var $doctrine; - var $img_height; - var $img_width; - var $previewableExt = []; - - public function __construct(App $app) - { - $this->doctrine = $app->getServices()->get("app.twake_doctrine"); - $this->img_height = 300; - $this->img_width = 300; - $this->previewableExt = Array("png", "jpeg", "jpg", "gif", "tiff", "ai", "svg", "pdf", "txt", "rtf", "csv", "docx", "doc", "odt", "xls", "xlsx", "ods", "ppt", "pptx", "odp"); - } - - public function generatePreview($filename, $file, $path, $ext, $entity = null) - { - try { - - if (!is_dir($path)) { - mkdir($path, 0777, true); - } - - if (filesize($file) > 50000000) { //50Mo (protection) - return false; - } - - $finfo = finfo_open(FILEINFO_MIME_TYPE); - $filetype = finfo_file($finfo, $file); - - if ($filetype === 'image/png' || - $filetype === 'image/gif' || - $filetype === 'image/x-icon' || - $filetype === 'image/jpeg' || - $filetype === 'image/tiff' || - $filetype === 'image/webp' || - $this->isImage($ext)) { - return $this->generateImagePreview($filename, $file, $path, $entity); - } - - if ($filetype === 'application/pdf') { - return $this->generateImagePreview($filename, $file, $path, $entity, true); - } - if ($filetype === 'application/msword' || - $filetype === 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' || - $filetype === 'text/css' || - $filetype === 'text/csv' || - $filetype === 'text/plain' || - $filetype === 'application/vnd.oasis.opendocument.presentation' || - $filetype === 'application/vnd.oasis.opendocument.spreadsheet' || - $filetype === 'application/vnd.oasis.opendocument.text' || - $filetype === 'application/vnd.ms-powerpoint' || - $filetype === 'application/vnd.ms-excel' || - $filetype === 'application/vnd.ms-office' || - $filetype === 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' || - $filetype === 'application/vnd.openxmlformats-officedocument.presentationml.presentation' || - $filetype === 'application/vnd.oasis.opendocument.text' || - $filetype === 'application/vnd.oasis.opendocument.presentation' || - $filetype === 'application/vnd.oasis.opendocument.spreadsheet' || - $filetype === 'application/vnd.oasis.opendocument.chart' || - $filetype === 'application/xml' || - $filetype === 'text/html' || - $ext === 'doc' || - $ext === 'docx ' || - $ext === 'xls' || - $ext === 'xlsx' || - $ext === 'pps' || - $ext === 'ppt' || - $ext === 'pptx' || - $ext === 'bmp' || - $ext === 'ico' || - $ext === 'odt' || - $ext === 'odg' || - $ext === 'odp' || - $ext === 'ods' || - $ext === 'odc' || - $ext === 'xml' || - $ext === 'webp' || - $ext === 'txt' || - $ext === 'svg' - ) { - return $this->generateImagePreview($filename, $file, $path, $entity, false, true); - } - - - finfo_close($finfo); - - } catch (\Exception $e) { - error_log("Error during preview generation : " . $e); - } - - return false; - } - - /* Do not generate preview for files larger than 50Mo */ - - public function isImage($ext) - { - return ( - $ext === 'png' || - $ext === 'jpg' || - $ext === 'jpeg' || - $ext === 'gif' || - $ext === 'svg' || - $ext === 'tiff' - ); - } - - public function generateImagePreview($filename, $file, $path, $entity = null, $isText = false, $isOffice = false) - { - $filepath = $path . "/" . $filename; - $width = $this->img_width; - $height = $this->img_height; - $im = new \Imagick(); - - - if ($isText) { - $im->readimage($file . "[0]"); - $this->set_keyword($file, $entity); - } elseif ($isOffice) { - $file = $this->convertToPDF($file, $entity); - if ($file) { - $im->readimage($file . "[0]"); - $this->set_keyword($file, $entity); - } - } else { - $im->readimage($file); - } - - - $im = $this->autorotate($im); - $im->setBackgroundColor(new \ImagickPixel('transparent')); - $geo = $im->getImageGeometry(); - - $min_size = min((int)($geo['width']), (int)($geo['height'])); - - if ($min_size > $this->img_width) { - $ox = 0; - $oy = (int)(($geo['height'] - $min_size) / 2); - if ($min_size == (int)($geo['height'])) { - $ox = (int)(($geo['width'] - $min_size) / 2); - $oy = 0; - } - $im->cropImage($min_size, $min_size, $ox, $oy); - } - - // get the current image dimensions - $im->ThumbnailImage($width, $height, true); - - /* - $canvas = new \Imagick(); - $canvas->newImage($width, $height, 'white', 'png'); - $canvas->setBackgroundColor(new \ImagickPixel('transparent')); - $offsetX = (int)($width / 2) - (int)($geo['width'] / 2); - $offsetY = (int)($height / 2) - (int)($geo['height'] / 2); - $canvas->compositeImage($im, \Imagick::COMPOSITE_OVER, $offsetX, $offsetY); - - $im = $canvas; - */ - - // thumbnail the image - - - $im->setImageFormat('png'); - $im->writeImage($filepath . '.png'); - $im->clear(); - $im->destroy(); - - if ($isOffice) { - unlink($file); - } - - } - - public function set_keyword($file, $entity) - { - - try { - $content = (new \Spatie\PdfToText\Pdf()) - ->setPdf($file) - ->text(); - $content = str_replace(array("\\'", "'"), " ", $content); - $size = substr_count($content, ' '); - - $words = str_word_count(strtolower($content), 1, 'ÀÂÄÇÉÈÊËÎÏÔÖÙÛÜŸÆŒàâäçéèêëîïôöùûüÿæœ'); - $totalwords = 1; - - $keywords = Array(); - - $regex = <<<'END' -/ -( - (?: [\x00-\x7F] #:00d2f4aa-605b-11e9-b23e-0242ac120005 single-byte sequences 0xxxxxxx - | [\xC0-\xDF][\x80-\xBF] #:00d2f4aa-605b-11e9-b23e-0242ac120005 double-byte sequences 110xxxxx 10xxxxxx - | [\xE0-\xEF][\x80-\xBF]{2} #:00d2f4aa-605b-11e9-b23e-0242ac120005 triple-byte sequences 1110xxxx 10xxxxxx * 2 - | [\xF0-\xF7][\x80-\xBF]{3} #:00d2f4aa-605b-11e9-b23e-0242ac120005 quadruple-byte sequence 11110xxx 10xxxxxx * 3 - ){1,100} #:00d2f4aa-605b-11e9-b23e-0242ac120005 ...one or more times -) -| . #:00d2f4aa-605b-11e9-b23e-0242ac120005 anything else -/x -END; - foreach ($words as $value) { - $value = preg_replace($regex, '$1', $value); - $value = strtolower($value); - if (strlen($value) > 3 && is_numeric($value) == false) { - if ($totalwords < floor($size * 0.20)) //we define the weight of word trough the text - $weight = 20; - elseif ($totalwords > floor($size * 80)) - $weight = 20; - else - $weight = 3; - if (!isset($keywords[$value])) { - $keywords[$value] = 0; - } - if (!($keywords[$value]) || substr($value, -1) == "s") { //if the word is not in our table - if (substr($value, -1) == "s") { //we check if it's a plural - $maybesinglar = substr($value, 0, strlen($value) - 1); - if (isset($keywords[$maybesinglar])) { // we check if their is already a singular for this word - $keywords[$maybesinglar] += $weight + max(strlen($maybesinglar) - 4, 0) * 2; //if we find a singular we add the singular version of the word instead of the plural - } else { // if not we add the new words or it's the first time we saw the word so we need to add it - $keywords[$value] = $weight + max(strlen($value) - 4, 0) * 2; - } - } else { - $keywords[$value] = $weight + max(strlen($value) - 4, 0) * 2; // we add the new word which is not a plural or it the first time we saw it - } - } else { //if the word is in the table - $keywords[$value] += $weight + max(strlen($value) - 4, 0) * 2; // we adjust his weight in the table - } - } - $totalwords++; //we add our total of word to alter the weight of futur word. - } - - arsort($keywords); // Sort based on frequency - - - $keywords_raw = array_slice($keywords, 0, 100); - $max = array_values(array_slice($keywords, 0, 1))[0]; - - foreach ($keywords_raw as $key => $score) { - $keywords_raw[$key] = ($score / $max); - } - - $keywords_score = Array(); - foreach ($keywords_raw as $key => $score) { - $keywords_score[] = Array( - "keyword" => $key, - "score" => $keywords_raw[$key] - ); - } - - $entity->setContentKeywords($keywords_score); - - } catch (\Exception $e) { - - } - - } - - public function convertToPDF($filepath, $entity) - { - putenv("PATH=/sbin:/bin:/usr/sbin:/usr/bin"); - error_log($filepath); - shell_exec("timeout 5s unoconv -T 5 -vvvv -f pdf -e PageRange=1-1 " . $filepath); - $a = explode(".", $filepath); - array_pop($a); - $filepath = join(".", $a) . ".pdf"; - if (!file_exists($filepath)) { - - $name = "Unknown name"; - if ($entity) { - $name = $entity->getName(); - } - - return false; - } - return $filepath; - } - - private function autorotate(\Imagick $image) - { - switch ($image->getImageOrientation()) { - case \Imagick::ORIENTATION_TOPLEFT: - break; - case \Imagick::ORIENTATION_TOPRIGHT: - $image->flopImage(); - break; - case \Imagick::ORIENTATION_BOTTOMRIGHT: - $image->rotateImage("#000", 180); - break; - case \Imagick::ORIENTATION_BOTTOMLEFT: - $image->flopImage(); - $image->rotateImage("#000", 180); - break; - case \Imagick::ORIENTATION_LEFTTOP: - $image->flopImage(); - $image->rotateImage("#000", -90); - break; - case \Imagick::ORIENTATION_RIGHTTOP: - $image->rotateImage("#000", 90); - break; - case \Imagick::ORIENTATION_RIGHTBOTTOM: - $image->flopImage(); - $image->rotateImage("#000", 90); - break; - case \Imagick::ORIENTATION_LEFTBOTTOM: - $image->rotateImage("#000", -90); - break; - default: // Invalid orientation - break; - } - $image->setImageOrientation(\Imagick::ORIENTATION_TOPLEFT); - return $image; - } - -} diff --git a/twake/backend/core/src/Twake/Drive/Services/OldFileSystem/Adapter_AWS_DriveFileSystem.php b/twake/backend/core/src/Twake/Drive/Services/OldFileSystem/Adapter_AWS_DriveFileSystem.php deleted file mode 100755 index 499c4b0b..00000000 --- a/twake/backend/core/src/Twake/Drive/Services/OldFileSystem/Adapter_AWS_DriveFileSystem.php +++ /dev/null @@ -1,108 +0,0 @@ -<?php - - -namespace Twake\Drive\Services\OldFileSystem; - -use App\App; -use Aws\S3\Exception\S3Exception; -use Aws\S3\S3Client; - -class Adapter_AWS_DriveFileSystem -{ - - public function __construct(App $app) - { - $configuration = $app->getContainer()->getParameter("storage.openstack"); - foreach($app->getContainer()->getParameter("storage.providers") as $providerConfiguration){ - if($providerConfiguration["type"] == "S3"){ - $configuration = $providerConfiguration; - } - } - $this->configure($app, $configuration); - } - - public function configure(App $app, $config){ - $aws_config = $config; - $s3_config = $aws_config; - - $this->root = $this->local = $app->getAppRootDir(); - $this->parameter_drive_salt = $s3_config["override_drive_salt"] ?: $app->getContainer()->getParameter("storage.drive_salt"); - - $this->aws_version = $s3_config["version"]; - $this->aws_buckets = $s3_config["buckets"]; - $this->aws_buckets_prefix = isset($s3_config["buckets_prefix"]) ? $s3_config["buckets_prefix"] : ""; - $this->aws_credentials_key = $s3_config["credentials"]["key"]; - $this->aws_credentials_secret = $s3_config["credentials"]["secret"]; - - $region = false; - foreach ($this->aws_buckets as $region_code => $aws_region) { - if ($region_code == "fr" || !$region) { - $region = $aws_region; - } - } - $this->aws_bucket_name = isset($s3_config["bucket_name"]) ? $s3_config["bucket_name"] : ($this->aws_buckets_prefix . 'twake.' . $region); - $this->aws_bucket_region = $region; - - $options = [ - 'version' => $this->aws_version, - 'region' => $this->aws_bucket_region, - 'use_path_style_endpoint' => isset($s3_config["use_path_style_endpoint"]) ? $s3_config["use_path_style_endpoint"] : false, - 'credentials' => [ - 'key' => $this->aws_credentials_key, - 'secret' => $this->aws_credentials_secret - ] - ]; - if (isset($s3_config["base_url"]) && $s3_config["base_url"]) { - $options["endpoint"] = $s3_config["base_url"]; - } - - $this->aws_s3_client = new S3Client($options); - } - - public function decode($path, $key, $mode = null) - { - - $key = "AWS" . $this->parameter_drive_salt . $key; - $key = md5($key); - - $key_path = str_replace($this->getRoot() . "/", "", $path); - $key_path = str_replace($this->getRoot(), "", $key_path); - - try { - - $object = $this->aws_s3_client->getObject([ - 'Bucket' => $this->aws_bucket_name, - 'Key' => "drive/" . $key_path, - 'SSECustomerAlgorithm' => 'AES256', - 'SSECustomerKey' => $key, - 'SSECustomerKeyMD5' => md5($key, true) - ]); - - $tmpPath = "/tmp/" . bin2hex(random_bytes(16)); - $this->verifyPath($tmpPath); - file_put_contents($tmpPath, $object["Body"]); - - return $tmpPath; - - } catch (S3Exception $e) { - error_log("Error accessing aws file."); - } - - return false; - } - - public function getRoot() - { - return dirname($this->root) . "/" . "drive" . "/"; - } - - public function verifyPath($path) - { - if (strpos($path, "/tmp") !== false) { - $path = dirname($path); - if (!file_exists($path, null)) { - mkdir($path, 0777, true); - } - } - } -} diff --git a/twake/backend/core/src/Twake/Drive/Services/OldFileSystem/Adapter_OpenStack_DriveFileSystem.php b/twake/backend/core/src/Twake/Drive/Services/OldFileSystem/Adapter_OpenStack_DriveFileSystem.php deleted file mode 100755 index b75a48f5..00000000 --- a/twake/backend/core/src/Twake/Drive/Services/OldFileSystem/Adapter_OpenStack_DriveFileSystem.php +++ /dev/null @@ -1,118 +0,0 @@ -<?php - - -namespace Twake\Drive\Services\OldFileSystem; - -use App\App; -use GuzzleHttp\Client; -use GuzzleHttp\HandlerStack; -use OpenStack\Common\Transport\Utils as TransportUtils; -use OpenStack\Identity\v2\Service; -use OpenStack\OpenStack; - -class Adapter_OpenStack_DriveFileSystem -{ - - public function __construct(App $app) - { - $configuration = $app->getContainer()->getParameter("storage.openstack"); - foreach($app->getContainer()->getParameter("storage.providers") as $providerConfiguration){ - if($providerConfiguration["type"] == "openstack"){ - $configuration = $providerConfiguration; - } - } - $this->configure($app, $configuration); - } - - public function configure(App $app, $config){ - $openstack_config = $config; - $this->root = $this->local = $app->getAppRootDir(); - $this->parameter_drive_salt = $openstack_config["override_drive_salt"] ?: $app->getContainer()->getParameter("storage.drive_salt"); - - $this->openstack_buckets = $openstack_config["buckets"]; - $this->openstack_buckets_prefix = isset($openstack_config["buckets_prefix"]) ? $openstack_config["buckets_prefix"] : ""; - $this->openstack_credentials_key = $openstack_config["user"]["id"]; - $this->openstack_credentials_secret = $openstack_config["user"]["password"]; - $this->openstack_project_id = $openstack_config["project_id"]; - $this->openstack_auth_url = $openstack_config["auth_url"]; - - $httpClient = new Client([ - 'base_uri' => TransportUtils::normalizeUrl($this->openstack_auth_url), - 'handler' => HandlerStack::create(), - ]); - - $region = false; - foreach ($this->openstack_buckets as $region_code => $openstack_region) { - if ($region_code == "fr" || !$region) { - if (isset($openstack_region["private"])) { - $region = $openstack_region["private"]; - $public_region = $openstack_region["public"]; - } else { - $region = $openstack_region["public"]; - } - $region_id = $openstack_region["region"]; - } - } - $this->openstack_bucket_name = $this->openstack_buckets_prefix . $region; - $this->openstack_public_bucket_name = $this->openstack_buckets_prefix . $public_region; - $this->openstack_bucket_region = $region; - $this->openstack_region_id = $region_id; - - $this->openstack = new OpenStack([ - 'authUrl' => $this->openstack_auth_url, - 'region' => $this->openstack_region_id, - 'tenantId' => $this->openstack_project_id, - 'username' => $this->openstack_credentials_key, - 'password' => $this->openstack_credentials_secret, - 'identityService' => Service::factory($httpClient) - ]); - - } - - public function decode($path, $key, $mode = null) - { - - $key = "OpenStack" . $this->parameter_drive_salt . $key; - $key = md5($key); - - $key_path = str_replace($this->getRoot() . "/", "", $path); - $key_path = str_replace($this->getRoot(), "", $key_path); - - try { - - $stream = $this->openstack->objectStoreV1() - ->getContainer($this->openstack_bucket_name) - ->getObject("drive/" . $key_path) - ->download(); - - $tmpPath = $this->getRoot() . "/tmp/" . bin2hex(random_bytes(16)); - $this->verifyPath($tmpPath); - file_put_contents($tmpPath, $stream->getContents()); - - $decodedPath = parent::decode($tmpPath, $key, $mode); - rename($decodedPath, $tmpPath); - - return $tmpPath; - - } catch (\Exception $e) { - error_log("Error accessing aws file."); - } - - return false; - } - - public function getRoot() - { - return dirname($this->root) . "/" . "drive" . "/"; - } - - public function verifyPath($path) - { - if (strpos($path, "/tmp") !== false) { - $path = dirname($path); - if (!file_exists($path, null)) { - mkdir($path, 0777, true); - } - } - } -} diff --git a/twake/backend/core/src/Twake/Drive/Services/OldFileSystem/DriveAdapterSelector.php b/twake/backend/core/src/Twake/Drive/Services/OldFileSystem/DriveAdapterSelector.php deleted file mode 100755 index ebb190b5..00000000 --- a/twake/backend/core/src/Twake/Drive/Services/OldFileSystem/DriveAdapterSelector.php +++ /dev/null @@ -1,39 +0,0 @@ -<?php - -namespace Twake\Drive\Services\OldFileSystem; - -use App\App; - -class DriveAdapterSelector -{ - - public function __construct(App $app) - { - $services = $app->getServices(); - $this->app = $app; - $this->aws = $app->getContainer()->getParameter("storage.S3"); - $this->openstack = $app->getContainer()->getParameter("storage.openstack"); - $this->storagemanager = $services->get("driveupload.storemanager"); - } - - public function getFileSystem($provider = null) - { - if($provider === null || $provider === false){ - $provider = $this->storagemanager->getOneProvider(); - } - $configuration = $this->storagemanager->getProviderConfiguration($provider); - - if ($configuration["type"] === "S3") { - $this->aws_file_system = $this->app->getServices()->get("app.drive.old.AWS_FileSystem"); - $this->aws_file_system->configure($this->app, $configuration); - return $this->aws_file_system; - } - if ($configuration["type"] === "openstack") { - $this->openstack_file_system = $this->app->getServices()->get("app.drive.old.OpenStack_FileSystem"); - $this->openstack_file_system->configure($this->app, $configuration); - return $this->openstack_file_system; - } - - } - -} diff --git a/twake/backend/core/src/Twake/Drive/Services/Resumable/Network/SimpleRequest.php b/twake/backend/core/src/Twake/Drive/Services/Resumable/Network/SimpleRequest.php deleted file mode 100755 index e96c7fa9..00000000 --- a/twake/backend/core/src/Twake/Drive/Services/Resumable/Network/SimpleRequest.php +++ /dev/null @@ -1,60 +0,0 @@ -<?php - -namespace Twake\Drive\Services\Resumable\Network; - -class SimpleRequest -{ - public $apprequest; - - public function __construct($request) - { - $this->apprequest = $request; - } - - /** - * @param $type get/post - * @return boolean - */ - public function is($type) - { - switch (strtolower($type)) { - case 'post': - return isset($_POST) && !empty($_POST); - break; - case 'get': - return isset($_GET) && !empty($_GET); - break; - } - return false; - } - - /** - * @param $requestType GET/POST - * @return mixed - */ - public function data($requestType) - { - switch (strtolower($requestType)) { - case 'post': - return isset($_POST) ? $_POST : array(); - break; - case 'get': - return isset($_GET) ? $_GET : array(); - break; - } - return array(); - } - - /** - * @return FILES data - */ - public function file() - { - - if (!isset($_FILES) || empty($_FILES)) { - return array(); - } - $files = array_values($_FILES); - return array_shift($files); - } -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Drive/Services/Resumable/Network/SimpleResponse.php b/twake/backend/core/src/Twake/Drive/Services/Resumable/Network/SimpleResponse.php deleted file mode 100755 index 3ff8ef36..00000000 --- a/twake/backend/core/src/Twake/Drive/Services/Resumable/Network/SimpleResponse.php +++ /dev/null @@ -1,30 +0,0 @@ -<?php - -namespace Twake\Drive\Services\Resumable\Network; - -use Common\Http\Response; - -class SimpleResponse -{ - - private $appresponse; - - public function __construct($response) - { - $this->appresponse = $response; - } - - /** - * @param $statusCode - * @return mixed - */ - public function header($statusCode) - { - if (200 == $statusCode) { - return $this->appresponse->setStatusCode(Response::HTTP_OK); - } else if (404 == $statusCode) { - return $this->appresponse->setStatusCode(Response::HTTP_NOT_FOUND); - } - return $this->appresponse->setStatusCode(Response::HTTP_NO_CONTENT); - } -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Drive/Services/Resumable/Resumable.php b/twake/backend/core/src/Twake/Drive/Services/Resumable/Resumable.php deleted file mode 100755 index 7bd5bf6d..00000000 --- a/twake/backend/core/src/Twake/Drive/Services/Resumable/Resumable.php +++ /dev/null @@ -1,447 +0,0 @@ -<?php - -namespace Twake\Drive\Services\Resumable; - -use Twake\Core\Services\Queues\Adapters\QueueManager; -use Twake\Drive\Entity\UploadState; -use Twake\Drive\Services\DriveFile; -use Twake\Drive\Services\Storage\EncryptionBag; -use App\App; - -class Resumable -{ - const WITHOUT_EXTENSION = true; - public $debug = false; - public $tempFolder = 'tmp'; - // for testing - public $uploadFolder = 'test/files/uploads'; - public $deleteTmpFolder = true; - protected $request; - protected $response; - protected $params; - protected $chunkFile; - protected $filename; - protected $filepath; - protected $extension; - protected $originalFilename; - protected $isUploadComplete = false; - protected $resumableOption = [ - 'identifier' => 'identifier', - 'filename' => 'filename', - 'chunkNumber' => 'chunkNumber', - 'chunkSize' => 'chunkSize', - 'totalSize' => 'totalSize', - 'query' => 'query', - 'parent_id' => 'parent_id' - ]; - protected $storagemanager; - protected $doctrine; - protected $driverefacto; - protected $current_user; - protected $previews; - protected $parameter_drive_salt; - /** @var QueueManager */ - protected $queues; - - public function __construct(App $app) - { - $this->queues = $app->getServices()->get("app.queues")->getAdapter(); - $this->doctrine = $app->getServices()->get("app.twake_doctrine"); - $this->storagemanager = $app->getServices()->get("driveupload.storemanager"); - $this->driverefacto = $app->getServices()->get("app.drive"); - $this->previews = $app->getContainer()->getParameter("storage.drive_previews_tmp_folder"); - $this->tempFolder = $app->getContainer()->getParameter("storage.drive_tmp_folder"); - $this->parameter_drive_salt = $app->getContainer()->getParameter("storage.drive_salt"); - } - - public function setResumableOption(array $resumableOption) - { - $this->resumableOption = array_merge($this->resumableOption, $resumableOption); - } - - // sets original filename and extenstion etc - public function process($current_user) - { - - if (!empty($this->resumableParams())) { - if (!empty($this->request->file())) { - $this->current_user_id = $current_user; - return $this->handleChunk(); - } else { - $this->handleTestChunk(); - } - } - } - - public function resumableParams() - { - if ($this->request->is('get')) { - return $this->request->data('get'); - } - if ($this->request->is('post')) { - return $this->request->data('post'); - } - } - - public function handleChunk($file_or_url = null, $filename = null, $totalSize = null, $identifier = null, $chunkNumber = null, $numOfChunks = null, $object_from_caller = null, $options_from_caller = null) - { - - // VERIFIER IDENTIFIER QU ON A BIEN QUE DES CHIFFRES ET DES LETTRES ET PAS UN REQUETE OU AUTRES. - $file = $file_or_url !== null ? $file_or_url : $this->request->file(); - $identifier = $identifier ? $identifier : $this->resumableParam($this->resumableOption['identifier']); - $filename = $filename !== null ? $filename : $this->resumableParam($this->resumableOption['filename']); - $chunkNumber = $chunkNumber ? $chunkNumber : $this->resumableParam($this->resumableOption['chunkNumber']); - $totalSize = $totalSize !== null ? $totalSize : intval($_POST["resumableTotalSize"]); - $numOfChunks = $numOfChunks ? $numOfChunks : intval($_POST["resumableTotalChunks"]); - - - $finalname = $identifier . ".chunk_" . $chunkNumber; - - if (!$this->isChunkUploaded($identifier, $finalname, $chunkNumber)) { - - $uploadstate = $this->doctrine->getRepository("Twake\Drive:UploadState")->findOneBy(Array("identifier" => $identifier)); - $param_bag = new EncryptionBag($uploadstate->getEncryptionKey(), $uploadstate->getEncryptionSalt(), $uploadstate->getEncryptionMode()); - - if ($this->current_user_id != $uploadstate->getUserId()) { - return false; - } - - $chunkFile = $this->tmpChunkDir() . DIRECTORY_SEPARATOR . $finalname; - - $do_preview = ($numOfChunks == 1 && $chunkNumber == 1 && $totalSize < 50000000); - - if (!$this->storagemanager->getAdapter($uploadstate->getStorageProvider())->streamModeIsAvailable() || $do_preview) { - - if (is_string($file)) { - if (strpos($file, "http://") === 0 || strpos($file, "https://") === 0) { - try{ - $newContent = fopen($file, 'r', false, stream_context_create(array( - "ssl"=>array( - "verify_peer"=>false, - "verify_peer_name"=>false, - ), - ))); - }catch(\Exception $e){ - error_log("Error while downloading file from url : " . $file); - return; - } - file_put_contents($chunkFile, $newContent); - } - } else { - $this->moveUploadedFile($file['tmp_name'], $chunkFile); - } - - if ($file_or_url && $numOfChunks == 1) { - $totalSize = filesize($chunkFile); - } - - //Preview if only one chunk - if ($do_preview) { - $previewDestination = $this->previews . DIRECTORY_SEPARATOR . "preview_" . $finalname; - $this->copy($chunkFile, $previewDestination); - $uploadstate->setHasPreview(true); - $this->doctrine->persist($uploadstate); - $this->doctrine->flush(); - } - - } else { - $chunkFile = $file['tmp_name']; - } - - - $this->storagemanager->getAdapter($uploadstate->getStorageProvider())->write($chunkFile, $chunkNumber, $param_bag, $uploadstate); - $this->doctrine->clear(); - - $chunktoadd = "chunk_" . $chunkNumber; - $uploadstate = $this->doctrine->getRepository("Twake\Drive:UploadState")->findOneBy(Array("identifier" => $identifier)); - $uploadstate->addChunk($chunktoadd); - $this->doctrine->persist($uploadstate); - $this->doctrine->flush(); - - } - - if (isset($uploadstate) && $uploadstate->getChunk() == $numOfChunks && count($uploadstate->getChunklist()) == $numOfChunks) { - - $this->isUploadComplete = true; - $uploadstate->setSuccess(true); - $uploadstate->setChunk($chunkNumber); - $this->doctrine->persist($uploadstate); - $this->doctrine->flush(); - - $object = Array(); - if ($object_from_caller) { - $object = $object_from_caller; - } else { - $object = json_decode($_POST['object'], 1); - - } - - $data = Array("upload_mode" => "chunk", "identifier" => $identifier, "nb_chunk" => $chunkNumber); - - //TODO What if we uploaded to an existing object (object[id] is set) TODO->REMOVE OLD VERSION IF WE ARE NOT CREATING A NEW ONE (or each time onlyoffice write we add a new copy on S3) - - $this->driverefacto->setDriveResumable($this); - $fileordirectory = $this->driverefacto->save($object, $options_from_caller, $current_user, Array("provider" => $uploadstate->getStorageProvider(), "data" => $data, "size" => $totalSize), true); - - if ($uploadstate->getHasPreview() && $totalSize < 20000000) { - $this->storagemanager->getAdapter($uploadstate->getStorageProvider())->genPreview($fileordirectory, $previewDestination); - } else { - $this->queues->push("drive_preview_to_generate", [ - "file_id" => $fileordirectory->getId() - ]); - } - $fileToReturn = $fileordirectory->getAsArray(); - if (!$fileordirectory->getIsDirectory()) { - $versions = $this->driverefacto->getFileVersion($fileordirectory, true); - $fileToReturn["versions"] = $versions; - return $fileToReturn; - } - return $fileordirectory->getAsArray(); - - } - return true; - } - - private function resumableParam($shortName) - { - $resumableParams = $this->resumableParams(); - if (!isset($resumableParams['resumable' . ucfirst($shortName)])) { - return null; - } - return $resumableParams['resumable' . ucfirst($shortName)]; - } - - public function isChunkUploaded($identifier, $filename, $chunkNumber) - { - $part = explode("_", $filename)[0]; - $chemin = $this->tmpChunkDir($identifier) . DIRECTORY_SEPARATOR . $part . "_" . $chunkNumber; - - return file_exists($chemin); - } - - public function tmpChunkDir() - { - //$tmpChunkDir = $this->tempFolder . DIRECTORY_SEPARATOR . $identifier; - $tmpChunkDir = $this->tempFolder; - //error_log($tmpChunkDir); - if (!file_exists($tmpChunkDir)) { - mkdir($tmpChunkDir); - } - return $tmpChunkDir; - } - - public function moveUploadedFile($file, $destFile) - { - if (file_exists($file)) { - return copy($file, $destFile); - } - return false; - } - - public function copy($file, $destFile) - { - if (file_exists($file)) { - return copy($file, $destFile); - } - return false; - } - - public function handleTestChunk() - { - - $identifier = $this->resumableParam($this->resumableOption['identifier']); - $filename = $this->resumableParam($this->resumableOption['filename']); - $chunkNumber = $this->resumableParam($this->resumableOption['chunkNumber']); - - - if (!$this->isChunkUploaded($identifier, $filename, $chunkNumber)) { - return $this->response->header(204); - } else { - return $this->response->header(200); - } - } - - /** - * Get isUploadComplete - * - * @return boolean - */ - public function isUploadComplete() - { - return $this->isUploadComplete; - } - - /** - * Get final filename. - * - * @return string Final filename - */ - public function getFilename() - { - return $this->filename; - } - - /** - * Set final filename. - * - * @param string Final filename - */ - public function setFilename($filename) - { - $this->filename = $filename; - return $this; - } - - /** - * Get final filename. - * - * @return string Final filename - */ - public function getOriginalFilename($withoutExtension = false) - { - if ($withoutExtension === static::WITHOUT_EXTENSION) { - return $this->removeExtension($this->originalFilename); - } - return $this->originalFilename; - } - - private function removeExtension($filename) - { - $parts = explode('.', basename($filename)); - $ext = end($parts); // get extension - // remove extension from filename if any - return str_replace(sprintf('.%s', $ext), '', $filename); - } - - /** - * Get final filapath. - * - * @return string Final filename - */ - public function getFilepath() - { - return $this->filepath; - } - - /** - * Get final extension. - * - * @return string Final extension name - */ - public function getExtension() - { - return $this->extension; - } - - public function createObject($workspace_id, $filename, $extension, $user_id) - { - - $identifier = $workspace_id . date("U") . bin2hex(random_bytes(20)); - - $this->current_user_id = $user_id; - - $storage_provider = $this->storagemanager->getOneProvider(); - - $chunklist = Array(); - $uploadstate = new UploadState($storage_provider, $workspace_id, $identifier, $filename, $extension, $chunklist); - $new_key = bin2hex(random_bytes(20)); - $uploadstate->setEncryptionKey($new_key); - $uploadstate->setEncryptionSalt(""); - $uploadstate->setEncryptionMode("OpenSSL-2"); - $uploadstate->setUserId($user_id); - $this->doctrine->persist($uploadstate); - $this->doctrine->flush(); - - sleep(1); - - return $identifier; - } - - /** - * Makes sure the orginal extension never gets overriden by user defined filename. - * - * @param string User defined filename - * @param string Original filename - * @return string Filename that always has an extension from the original file - */ -// private function createSafeFilename($filename, $originalFilename) -// { -// $filename = $this->removeExtension($filename); -// $extension = $this->findExtension($originalFilename); -// return sprintf('%s.%s', $filename, $extension); -// } - public function tmpChunkFilename($filename, $chunkNumber) - { - return $filename . '.' . str_pad($chunkNumber, 4, 0, STR_PAD_LEFT); - } - - public function updateParam($request, $response) - { - $this->setRequest($request); - $this->setResponse($response); - $this->preProcess(); - } - - public function setRequest($request) - { - $this->request = $request; - } - - public function setResponse($response) - { - $this->response = $response; - } - - public function preProcess() - { - if (!empty($this->resumableParams())) { - if (!empty($this->request->file())) { - $this->extension = $this->findExtension($this->resumableParam('filename')); - $this->originalFilename = $this->resumableParam('filename'); - } - } - } - - private function findExtension($filename) - { - $parts = explode('.', basename($filename)); - return end($parts); - } - - - public function getExclusiveFileHandle($name) - { - // if the file exists, fopen() will raise a warning - $previous_error_level = error_reporting(); - error_reporting(E_ERROR); - $handle = fopen($name, 'a'); - error_reporting($previous_error_level); - return $handle; - } - - public function removeFromStorage($data) - { - - if ($data["upload_mode"] == "chunk") { - - $identifier = $data["identifier"]; - $chunkNumber = $data["nb_chunk"]; - - $uploadstate = $this->doctrine->getRepository("Twake\Drive:UploadState")->findOneBy(Array("identifier" => $identifier)); - - for ($i = 1; $i <= $chunkNumber; $i++) { - $this->storagemanager->getAdapter($uploadstate->getStorageProvider())->remove($uploadstate, $i); - } - - $this->doctrine->remove($uploadstate); - $this->doctrine->flush(); - - return true; - - } - - return false; - } - - -} diff --git a/twake/backend/core/src/Twake/Drive/Services/Storage/AdapterInterface.php b/twake/backend/core/src/Twake/Drive/Services/Storage/AdapterInterface.php deleted file mode 100755 index ab7454be..00000000 --- a/twake/backend/core/src/Twake/Drive/Services/Storage/AdapterInterface.php +++ /dev/null @@ -1,16 +0,0 @@ -<?php - -namespace Twake\Drive\Services\Storage; - -use Twake\Drive\Entity\UploadState; - -interface AdapterInterface -{ - - public function read($destination, $chunkNo, $param_bag, UploadState $uploadState, &$zip, $zip_prefixe); - - public function write($chunkFile, $chunkNo, $param_bag, UploadState $uploadState); - - public function streamModeIsAvailable(); - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Drive/Services/Storage/Adapter_AWS.php b/twake/backend/core/src/Twake/Drive/Services/Storage/Adapter_AWS.php deleted file mode 100755 index ac40af5b..00000000 --- a/twake/backend/core/src/Twake/Drive/Services/Storage/Adapter_AWS.php +++ /dev/null @@ -1,248 +0,0 @@ -<?php - -namespace Twake\Drive\Services\Storage; - -use Aws\S3\Exception\S3Exception; -use Aws\S3\S3Client; -use Twake\Drive\Entity\DriveFile; -use Twake\Drive\Entity\UploadState; - -class Adapter_AWS implements AdapterInterface -{ - - public function __construct($aws_config, $preview, $doctrine) - { - - $s3_config = $aws_config; - $this->aws_version = $s3_config["version"]; - $this->aws_buckets = $s3_config["buckets"]; - $this->aws_buckets_prefix = isset($s3_config["buckets_prefix"]) ? $s3_config["buckets_prefix"] : ""; - $this->aws_credentials_key = $s3_config["credentials"]["key"]; - $this->aws_credentials_secret = $s3_config["credentials"]["secret"]; - $this->disable_encryption = $s3_config["disable_encryption"] ?: false; - $this->parameter_drive_salt = $s3_config["override_drive_salt"] ?: $s3_config["default_drive_salt"]; - $this->default_parameter_drive_salt = $s3_config["default_drive_salt"]; - - $region = false; - foreach ($this->aws_buckets ? $this->aws_buckets : [] as $region_code => $aws_region) { - if ($region_code == "fr" || !$region) { - $region = $aws_region; - } - } - $this->aws_bucket_name = isset($s3_config["bucket_name"]) ? $s3_config["bucket_name"] : ($this->aws_buckets_prefix . 'twake.' . $region); - $this->aws_bucket_region = $region; - - $options = [ - 'version' => $this->aws_version, - 'region' => $this->aws_bucket_region, - 'use_path_style_endpoint' => isset($s3_config["use_path_style_endpoint"]) ? $s3_config["use_path_style_endpoint"] : false, - 'credentials' => [ - 'key' => $this->aws_credentials_key, - 'secret' => $this->aws_credentials_secret - ] - ]; - if (isset($s3_config["base_url"]) && $s3_config["base_url"]) { - $options["endpoint"] = $s3_config["base_url"]; - } - - $this->aws_s3_client = new S3Client($options); - - $this->preview = $preview; - $this->doctrine = $doctrine; - } - - - public function genPreview(DriveFile $file, $tmppath) - { - - $res = false; - if (!$file->getIsDirectory() && $file->getLastVersion($this->doctrine)) { - - $ext = $file->getExtension(); - - - if ($tmppath) { - - rename($tmppath, $tmppath . ".tw"); - $tmppath = $tmppath . ".tw"; - - try { - - //Remove old preview - if ($file->getPreviewLink()) { - try { - $this->aws_s3_client->deleteObject([ - 'Bucket' => $this->aws_bucket_name, - 'Key' => "public/uploads/previews/" . $file->getPath() . ".png", - ]); - } catch (S3Exception $e) { - error_log($e->getMessage()); - } - } - - try { - $this->preview->generatePreview(basename($file->getPath()), $tmppath, dirname($tmppath), $ext, $file); - } catch (\Exception $e) { - //error_log($e->getMessage()); - } - $previewpath = dirname($tmppath) . "/" . basename($file->getPath()); - - if (file_exists($previewpath . ".png")) { - - try { - // Upload data. - $result = $this->aws_s3_client->putObject([ - 'Bucket' => $this->aws_bucket_name, - 'Key' => "public/uploads/previews/" . $file->getId() . ".png", - 'Body' => fopen($previewpath . ".png", "rb"), - 'ACL' => 'public-read' - ]); - - $file->setPreviewLink($result['ObjectURL'] . ""); - $file->setPreviewHasBeenGenerated(true); - $file->setHasPreview(true); - $this->doctrine->persist($file); - $this->doctrine->flush(); - $res = true; - - } catch (S3Exception $e) { - $res = false; - $e->getMessage(); - } - - @unlink($previewpath . ".png"); - //error_log("PREVIEW GENERATED !"); - - } else { - $res = false; - error_log("FILE NOT GENERATED !"); - } - - } catch (\Exception $e) { - - } - - @unlink($tmppath); - - } - - } - return $res; - - } - - public function read($destination, $chunkNo, $param_bag, UploadState $uploadState, &$zip = null, $zip_prefix = null) - { - - $key = "AWS" . $param_bag->getSalt() . $param_bag->getKey(); - if($param_bag->getSalt() == $this->default_parameter_drive_salt){ - $key = "AWS" . $this->parameter_drive_salt . $param_bag->getKey(); - } - $key = md5($key); - - $file_path = "drive/" . $uploadState->getWorkspaceId() . "/" . $uploadState->getIdentifier() . "/" . $chunkNo; - - try { - - $options = [ - 'Bucket' => $this->aws_bucket_name, - 'Key' => $file_path - ]; - - if(!$this->disable_encryption){ - $options = array_merge($options, [ - 'SSECustomerAlgorithm' => 'AES256', - 'SSECustomerKey' => $key, - 'SSECustomerKeyMD5' => md5($key, true) - ]); - } - - $object = $this->aws_s3_client->getObject($options); - - if ($destination == "stream") { - echo $object["Body"]; - return true; - } elseif ($destination == "original_stream") { - $fp = tmpfile(); - fwrite($fp, $object["Body"]); - rewind($fp); - return $fp; - } - - file_put_contents($destination, $object["Body"]); - return $destination; - - } catch (S3Exception $e) { - error_log("Error accessing aws file." . $e); - } - - return false; - } - - public function write($chunkFile, $chunkNo, $param_bag, UploadState $uploadState) - { - - $key = "AWS" . $param_bag->getSalt() . $param_bag->getKey(); - $key = md5($key); - - $file_path = "drive/" . $uploadState->getWorkspaceId() . "/" . $uploadState->getIdentifier() . "/" . $chunkNo; - - try { - - $data = [ - 'Bucket' => $this->aws_bucket_name, - 'Key' => $file_path, - 'Body' => fopen($chunkFile, 'r'), - 'ACL' => 'private' - ]; - - if(!$this->disable_encryption){ - $data = array_merge($data, [ - 'SSECustomerAlgorithm' => 'AES256', - 'SSECustomerKey' => $key, - 'SSECustomerKeyMD5' => md5($key, true) - ]); - } - - // Upload data. - $result = $this->aws_s3_client->putObject($data); - - @unlink($chunkFile); - - } catch (S3Exception $e) { - error_log($e->getMessage() . PHP_EOL); - } - - return $result; - - } - - public function remove(UploadState $uploadState, $chunkNo = 1) - { - - $file_path = "drive/" . $uploadState->getWorkspaceId() . "/" . $uploadState->getIdentifier() . "/" . $chunkNo; - - try { - - $data = [ - 'Bucket' => $this->aws_bucket_name, - 'Key' => $file_path - ]; - - // Upload data. - $result = $this->aws_s3_client->deleteObject($data); - - } catch (S3Exception $e) { - error_log($e->getMessage() . PHP_EOL); - } - - return $result; - - } - - public function streamModeIsAvailable() - { - return false; - } - -} diff --git a/twake/backend/core/src/Twake/Drive/Services/Storage/Adapter_Local.php b/twake/backend/core/src/Twake/Drive/Services/Storage/Adapter_Local.php deleted file mode 100755 index b97720a7..00000000 --- a/twake/backend/core/src/Twake/Drive/Services/Storage/Adapter_Local.php +++ /dev/null @@ -1,259 +0,0 @@ -<?php - -namespace Twake\Drive\Services\Storage; - -use Twake\Drive\Entity\DriveFile; -use Twake\Drive\Entity\UploadState; -use Twake\Drive\Services\Storage\Encryption\AESCryptFileLib; -use Twake\Drive\Services\Storage\Encryption\MCryptAES256Implementation; -use Twake\Drive\Services\Storage\Encryption\OpenSSLCryptLib; -use Twake\Drive\Services\ZipStream\Exception; - -class Adapter_Local implements AdapterInterface -{ - - protected $root; - protected $preview; - protected $doctrine; - - public function __construct($local_config, $preview, $doctrine) - { - $this->root = $local_config["location"]; - $this->preview_root = $local_config["preview_location"]; - $this->pre_public_path = $local_config["preview_public_path"]; - $this->disable_encryption = $local_config["disable_encryption"]; - $this->preview = $preview; - $this->doctrine = $doctrine; - } - - public function genPreview(Drivefile $file, $tmppath) - { - $res = false; - - try { - - if (!$file->getIsDirectory() && $file->getLastVersion($this->doctrine)) { - - $ext = $file->getExtension(); - - if ($tmppath) { - rename($tmppath, $tmppath . ".tw"); - $tmppath = $tmppath . ".tw"; - - try { - - //Remove old preview - if ($file->hasPreviewLink()) { - try { - $pre_path = $this->preview_root . "/" . "public/uploads/previews/" . $file->getPath() . ".png"; - @unlink($pre_path); - } catch (\Exception $e) { - //error_log($e->getMessage()); - } - } - - try { - $this->preview->generatePreview(basename($file->getPath()), $tmppath, dirname($tmppath), $ext, $file); - } catch (\Exception $e) { - //error_log($e->getMessage()); - } - $previewpath = dirname($tmppath) . "/" . basename($file->getPath()); - if ($previewpath && file_exists($previewpath . ".png")) { - - try { - // Upload data. - $pre_path = $this->preview_root . "/" . "public/uploads/previews/" . $file->getPath() . ".png"; - $this->verifyPath($pre_path); - rename($previewpath . ".png", $pre_path); - - $pre_public_path = $this->pre_public_path . "/" . "public/uploads/previews/" . $file->getPath() . ".png"; - $file->setPreviewLink($pre_public_path . ""); - $file->setPreviewHasBeenGenerated(true); - $file->setHasPreview(true); - $this->doctrine->persist($file); - $this->doctrine->flush(); - $res = true; - - } catch (\Exception $e) { - $res = false; - //error_log($e->getMessage()); - } - @unlink($previewpath . ".png"); - //error_log("PREVIEW GENERATED !"); - - } else { - $res = false; - error_log("FILE NOT GENERATED !"); - } - - } catch (\Exception $e) { - //error_log($e->getMessage()); - } - - @unlink($tmppath); - - } - } - - } catch (\Exception $e) { - //error_log($e->getMessage()); - $res = false; - } - return $res; - - } - - public function verifyPath($path) - { - $path = dirname($path); - error_log($path); - if (!is_dir($path)) { - mkdir($path, 0777, true); - } - } - - public function write($chunkFile, $chunkNo, $param_bag, UploadState $uploadState) - { - $this->encode($chunkFile, $param_bag); - - $chunkFile = $chunkFile . ".encrypt"; - - try { - - $file_path = $this->root . "/" . "drive/" . $uploadState->getWorkspaceId() . "/" . $uploadState->getIdentifier() . "/" . $chunkNo; - $this->verifyPath($file_path); - error_log($chunkFile); - if (file_exists($chunkFile)) { - rename($chunkFile, $file_path); - } else { - return false; - } - - } catch (\Exception $e) { - error_log($e->getMessage() . PHP_EOL); - } - } - - private function encode($chunkFile, $param_bag) - { - - if($this->disable_encryption){ - $pathTemp = $chunkFile . ".encrypt"; - copy($chunkFile, $pathTemp); - return $pathTemp; - } - //error_log(print_r($chunkFile,true)); - - $key = $param_bag->getKey(); - if ($param_bag->getMode() == "AES") { - $mcrypt = new MCryptAES256Implementation(); - $lib = new AESCryptFileLib($mcrypt); - } - if ($param_bag->getMode() == "OpenSSL") { - $lib = new OpenSSLCryptLib(); - } - if ($param_bag->getMode() == "OpenSSL-2") { - $lib = new OpenSSLCryptLib(); - $key = $param_bag->getMode() . $this->parameter_drive_salt . $param_bag->getKey(); - } - - $pathTemp = $chunkFile . ".encrypt"; - - - //rename($path, $pathTemp); - - $finalpath = $lib->encryptFile($chunkFile, $key, $pathTemp); - //error_log(print_r($finalpath,true)); - @unlink($chunkFile); - - return $finalpath; - } - - public function read($destination, $chunkNo, $param_bag, UploadState $uploadState, &$zip = null, $zip_prefix = null) - { - try { - - $file_path = $this->root . "/" . "drive/" . $uploadState->getWorkspaceId() . "/" . $uploadState->getIdentifier() . "/" . $chunkNo; - - $decodedPath = $this->decode($file_path, $param_bag); - - if ($destination == "stream") { - if ($stream = fopen($decodedPath, 'r')) { - // While the stream is still open - while (!feof($stream)) { - // Read 1,024 bytes from the stream - echo fread($stream, 1024); - } - // Be sure to close the stream resource when you're done with it - fclose($stream); - unlink($decodedPath); - } - return true; - } - - if ($destination == "original_stream") { - if ($stream = fopen($decodedPath, 'r')) { - return $stream; - } - } - - return $decodedPath; - - } catch (\Exception $e) { - error_log("Error accessing openstack file."); - } - - return false; - } - - protected function decode($chunkFile, $param_bag) - { - if($this->disable_encryption){ - $pathTemp = $chunkFile . ".decrypt"; - copy($chunkFile, $pathTemp); - return $pathTemp; - } - - $key = $param_bag->getKey(); - if ($param_bag->getMode() == "AES") { - $mcrypt = new MCryptAES256Implementation(); - $lib = new AESCryptFileLib($mcrypt); - } - if ($param_bag->getMode() == "OpenSSL") { - $lib = new OpenSSLCryptLib(); - } - if ($param_bag->getMode() == "OpenSSL-2") { - $lib = new OpenSSLCryptLib(); - $key = $param_bag->getMode() . $this->parameter_drive_salt . $param_bag->getKey(); - } - $pathTemp = $chunkFile . ".decrypt"; - - $finalpath = $lib->decryptFile($chunkFile, $key, $pathTemp); - return $pathTemp; - - } - - public function remove(UploadState $uploadState, $chunkNo = 1) - { - - $file_path = $this->root . "/" . "drive/" . $uploadState->getWorkspaceId() . "/" . $uploadState->getIdentifier() . "/" . $chunkNo; - - try { - - @unlink($file_path); - - } catch (\Exception $e) { - error_log($e->getMessage() . PHP_EOL); - } - - return true; - - } - - public function streamModeIsAvailable() - { - return false; - } - - -} diff --git a/twake/backend/core/src/Twake/Drive/Services/Storage/Adapter_OpenStack.php b/twake/backend/core/src/Twake/Drive/Services/Storage/Adapter_OpenStack.php deleted file mode 100755 index 7ab695b2..00000000 --- a/twake/backend/core/src/Twake/Drive/Services/Storage/Adapter_OpenStack.php +++ /dev/null @@ -1,326 +0,0 @@ -<?php - -namespace Twake\Drive\Services\Storage; - -use GuzzleHttp\Client; -use GuzzleHttp\HandlerStack; -use GuzzleHttp\Psr7\Stream; -use OpenStack\Common\Transport\Utils as TransportUtils; -use OpenStack\Identity\v3\Service; -use OpenStack\OpenStack; -use Twake\Drive\Entity\DriveFile; -use Twake\Drive\Entity\UploadState; -use Twake\Drive\Services\Storage\Encryption\AESCryptFileLib; -use Twake\Drive\Services\Storage\Encryption\MCryptAES256Implementation; -use Twake\Drive\Services\Storage\Encryption\OpenSSLCryptLib; -use Twake\Drive\Services\ZipStream\Exception; - -class Adapter_OpenStack implements AdapterInterface -{ - - protected $openstack; - protected $openstack_buckets; - protected $openstack_buckets_prefix; - protected $openstack_credentials_key; - protected $openstack_credentials_secret; - protected $openstack_project_id; - protected $openstack_auth_url; - protected $openstack_bucket_name; - protected $openstack_public_bucket_name; - protected $openstack_bucket_region; - protected $openstack_region_id; - protected $preview; - protected $doctrine; - - public function __construct($openstack, $preview, $doctrine) - { - - $this->openstack_buckets = $openstack["buckets"]; - $this->openstack_buckets_prefix = $openstack["buckets_prefix"]; - $this->openstack_credentials_key = $openstack["user"]["id"]; - $this->openstack_credentials_secret = $openstack["user"]["password"]; - $this->openstack_domain_name = $openstack["user"]["domain_name"]; - $this->openstack_project_id = $openstack["project_id"]; - $this->openstack_auth_url = $openstack["auth_url"]; - $this->disable_encryption = $openstack["disable_encryption"]; - - $httpClient = new Client([ - 'base_uri' => TransportUtils::normalizeUrl($this->openstack_auth_url ? $this->openstack_auth_url : ""), - 'handler' => HandlerStack::create(), - ]); - - $region = false; - foreach ($this->openstack_buckets as $region_code => $openstack_region) { - if ($region_code == "fr" || !$region) { - if (isset($openstack_region["private"])) { - $region = $openstack_region["private"]; - $public_region = $openstack_region["public"]; - } else { - $region = $openstack_region["public"]; - } - $region_id = $openstack_region["region"]; - } - } - $this->openstack_bucket_name = $this->openstack_buckets_prefix . $region; - $this->openstack_public_bucket_name = $this->openstack_buckets_prefix . $public_region; - $this->openstack_bucket_region = $region; - $this->openstack_region_id = $region_id; - - $this->openstack = new OpenStack([ - 'authUrl' => $this->openstack_auth_url, - 'region' => $this->openstack_region_id, - 'user' => [ - 'name' => $this->openstack_credentials_key, - 'password' => $this->openstack_credentials_secret, - 'domain' => [ 'id' => $this->openstack_domain_name ] - ], - 'scope' => [ - 'project' => [ - 'id' => $this->openstack_project_id - ] - ], - 'identityService' => Service::factory($httpClient) - ]); - - $this->preview = $preview; - $this->doctrine = $doctrine; - - } - - public function genPreview(Drivefile $file, $tmppath) - { - $res = false; - - try { - - if (!$file->getIsDirectory() && $file->getLastVersion($this->doctrine)) { - - $ext = $file->getExtension(); - - if ($tmppath) { - rename($tmppath, $tmppath . ".tw"); - $tmppath = $tmppath . ".tw"; - - try { - - //Remove old preview - if ($file->hasPreviewLink()) { - try { - $this->openstack->objectStoreV1() - ->getContainer($this->openstack_public_bucket_name) - ->getObject("public/uploads/previews/" . $file->getPath() . ".png") - ->delete(); - } catch (\Exception $e) { - //error_log($e->getMessage()); - } - } - - try { - $this->preview->generatePreview(basename($file->getPath()), $tmppath, dirname($tmppath), $ext, $file); - } catch (\Exception $e) { - //error_log($e->getMessage()); - } - $previewpath = dirname($tmppath) . "/" . basename($file->getPath()); - if ($previewpath && file_exists($previewpath . ".png")) { - - try { - // Upload data. - $options = [ - 'name' => "public/uploads/previews/" . $file->getPath() . ".png", - 'stream' => new Stream(fopen($previewpath . ".png", "rb")), - ]; - $result = $this->openstack->objectStoreV1() - ->getContainer($this->openstack_public_bucket_name) - ->createObject($options); - - $file->setPreviewLink($result->getPublicUri() . ""); - $file->setPreviewHasBeenGenerated(true); - $file->setHasPreview(true); - $this->doctrine->persist($file); - $this->doctrine->flush(); - $res = true; - - } catch (\Exception $e) { - $res = false; - //error_log($e->getMessage()); - } - @unlink($previewpath . ".png"); - //error_log("PREVIEW GENERATED !"); - - } else { - $res = false; - error_log("PREVIEW NOT GENERATED !"); - } - - } catch (\Exception $e) { - //error_log($e->getMessage()); - } - - @unlink($tmppath); - - } - } - - } catch (\Exception $e) { - //error_log($e->getMessage()); - $res = false; - } - return $res; - - } - - - public function write($chunkFile, $chunkNo, $param_bag, UploadState $uploadState) - { - $this->encode($chunkFile, $param_bag); - - $chunkFile = $chunkFile . ".encrypt"; - - try { - - $options = [ - 'name' => "drive/" . $uploadState->getWorkspaceId() . "/" . $uploadState->getIdentifier() . "/" . $chunkNo, - 'stream' => new Stream(fopen($chunkFile, 'rb')), - ]; - - $this->openstack->objectStoreV1() - ->getContainer($this->openstack_bucket_name) - ->createObject($options); - - @unlink($chunkFile); - - } catch (\Exception $e) { - error_log($e->getMessage() . PHP_EOL); - } - } - - private function encode($chunkFile, $param_bag) - { - - if($this->disable_encryption){ - $pathTemp = $chunkFile . ".encrypt"; - copy($chunkFile, $pathTemp); - return $pathTemp; - } - - $key = $param_bag->getKey(); - if ($param_bag->getMode() == "AES") { - $mcrypt = new MCryptAES256Implementation(); - $lib = new AESCryptFileLib($mcrypt); - } - if ($param_bag->getMode() == "OpenSSL") { - $lib = new OpenSSLCryptLib(); - } - if ($param_bag->getMode() == "OpenSSL-2") { - $lib = new OpenSSLCryptLib(); - $key = $param_bag->getMode() . $this->parameter_drive_salt . $param_bag->getKey(); - } - - $pathTemp = $chunkFile . ".encrypt"; - - - //rename($path, $pathTemp); - - $finalpath = $lib->encryptFile($chunkFile, $key, $pathTemp); - //error_log(print_r($finalpath,true)); - @unlink($chunkFile); - - return $finalpath; - } - - public function read($destination, $chunkNo, $param_bag, UploadState $uploadState, &$zip = null, $zip_prefix = null) - { - try { - $stream = $this->openstack->objectStoreV1() - ->getContainer($this->openstack_bucket_name) - ->getObject("drive/" . $uploadState->getWorkspaceId() . "/" . $uploadState->getIdentifier() . "/" . $chunkNo) - ->download(); - - $tmp_upload = "/tmp/" . date("U") . $uploadState->getWorkspaceId() . $uploadState->getIdentifier(); - file_put_contents($tmp_upload, $stream->getContents()); - $decodedPath = $this->decode($tmp_upload, $param_bag); - - if ($destination == "stream") { - if ($stream = fopen($decodedPath, 'r')) { - // While the stream is still open - while (!feof($stream)) { - // Read 1,024 bytes from the stream - echo fread($stream, 1024); - } - // Be sure to close the stream resource when you're done with it - fclose($stream); - unlink($decodedPath); - } - return true; - } - - if ($destination == "original_stream") { - if ($stream = fopen($decodedPath, 'r')) { - return $stream; - } - } - - return $decodedPath; - - } catch (\Exception $e) { - error_log("Error accessing openstack file."); - } - - return false; - } - - protected function decode($chunkFile, $param_bag) - { - if($this->disable_encryption){ - $pathTemp = $chunkFile . ".decrypt"; - copy($chunkFile, $pathTemp); - return $pathTemp; - } - - $key = $param_bag->getKey(); - if ($param_bag->getMode() == "AES") { - $mcrypt = new MCryptAES256Implementation(); - $lib = new AESCryptFileLib($mcrypt); - } - if ($param_bag->getMode() == "OpenSSL") { - $lib = new OpenSSLCryptLib(); - } - if ($param_bag->getMode() == "OpenSSL-2") { - $lib = new OpenSSLCryptLib(); - $key = $param_bag->getMode() . $this->parameter_drive_salt . $param_bag->getKey(); - } - $pathTemp = $chunkFile . ".decrypt"; - - $finalpath = $lib->decryptFile($chunkFile, $key, $pathTemp); - @unlink($chunkFile); - return $pathTemp; - - } - - public function remove(UploadState $uploadState, $chunkNo = 1) - { - - $file_path = "drive/" . $uploadState->getWorkspaceId() . "/" . $uploadState->getIdentifier() . "/" . $chunkNo; - - try { - - $this->openstack->objectStoreV1() - ->getContainer($this->openstack_bucket_name) - ->getObject($file_path) - ->delete(); - - } catch (\Exception $e) { - error_log($e->getMessage() . PHP_EOL); - } - - return $result; - - } - - public function streamModeIsAvailable() - { - return false; - } - - -} diff --git a/twake/backend/core/src/Twake/Drive/Services/Storage/Encryption/AES256Implementation.php b/twake/backend/core/src/Twake/Drive/Services/Storage/Encryption/AES256Implementation.php deleted file mode 100755 index ce0e2961..00000000 --- a/twake/backend/core/src/Twake/Drive/Services/Storage/Encryption/AES256Implementation.php +++ /dev/null @@ -1,16 +0,0 @@ -<?php - -namespace Twake\Drive\Services\Storage\Encryption; - -interface AES256Implementation -{ - public function checkDependencies(); - - public function createIV(); - - public function createRandomKey(); - - public function encryptData($the_data, $iv, $enc_key); - - public function decryptData($the_data, $iv, $enc_key); -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Drive/Services/Storage/Encryption/AESCryptFileLib.php b/twake/backend/core/src/Twake/Drive/Services/Storage/Encryption/AESCryptFileLib.php deleted file mode 100755 index 94e0b9a0..00000000 --- a/twake/backend/core/src/Twake/Drive/Services/Storage/Encryption/AESCryptFileLib.php +++ /dev/null @@ -1,660 +0,0 @@ -<?php - -namespace Twake\Drive\Services\Storage\Encryption; - -use Exception; - -/** - * Please see https://www.aescrypt.com/aes_file_format.html - * for the file format used. - * - */ -class AESCryptFileLib -{ - const ENCRYPTED_FILE_EXTENSION = "aes"; - - //http://www.leaseweblabs.com/2014/02/aes-php-mcrypt-key-padding/ - //Only "Rijndael-128" in "Cipher-block chaining" (CBC) mode is defined as the Advanced Encryption Standard (AES). - //The file format specifies IV length of 128 bits (the block length) and key length of 256 bits - //These are assumed to be implemented properly in all AES256 interfaces - private $aes_impl; - - private $use_dynamic_filenaming; - - private $debugging = false; - - public function __construct(AES256Implementation $aes_impl, $use_dynamic_filenaming = true) - { - $this->aes_impl = $aes_impl; - $this->use_dynamic_filenaming = $use_dynamic_filenaming; - - try { - $this->aes_impl->checkDependencies(); - } catch (\Exception $e) { - throw new AESCryptMissingDependencyException($e->getMessage()); - } - } - - public function enableDebugging() - { - $this->debugging = true; - } - - public function encryptFile($source_file, $passphrase, $dest_file = NULL, $ext_data = NULL) - { - //Check we can read the source file - $this->checkSourceExistsAndReadable($source_file); - - //Check any ext_data is formatted correctly - $this->checkExtensionData($ext_data); - - //Check that the password is a string (it cannot be NULL) - $this->checkPassphraseIsValid($passphrase); - - //Actually do the encryption here - $dest_fh = $this->doEncryptFile($source_file, $passphrase, $dest_file, $ext_data); -// error_log(print_r($dest_fh,true)); - - //Return encrypted file location - $meta_data = stream_get_meta_data($dest_fh); -// error_log(print_r($meta_data,true)); - fclose($dest_fh); - $filename = realpath($meta_data["uri"]); - return $filename; - } - - private function checkSourceExistsAndReadable($source_file) - { - //Source file must exist - if (!file_exists($source_file)) { - throw new AESCryptFileMissingException($source_file); - } - - //Source file must be readable - if (!is_readable($source_file)) { - throw new AESCryptFileAccessException("Cannot read: " . $source_file); - } - } - - private function checkExtensionData($ext_data) - { - if ($ext_data === NULL) { - return; - } - if (!is_array($ext_data)) { - throw new AESCryptInvalidExtensionException("Must be NULL or an array (containing 'extension block' arrays)"); - } - - //Ignore associative arrays - $ext_data = array_values($ext_data); - - $unique_identifiers = array(); - foreach ($ext_data as $index => $eb) { - if (!is_array($eb)) { - throw new AESCryptInvalidExtensionException("Extension block at index {$index} must be an array"); - } - //Each block must contain the array keys 'identifier' and 'contents' - if (!array_key_exists("identifier", $eb)) { - throw new AESCryptInvalidExtensionException("Extension block at index {$index} must contain the key 'identifier'"); - } - if (!array_key_exists("contents", $eb)) { - throw new AESCryptInvalidExtensionException("Extension block at index {$index} must contain the key 'contents'"); - } - - $identifier = $eb['identifier']; - $contents = $eb['contents']; - if (!is_string($identifier)) { - throw new AESCryptInvalidExtensionException("Extension block at index {$index} has a bad 'identifier' value. It must be a string."); - } - if (!is_string($contents)) { - throw new AESCryptInvalidExtensionException("Extension block at index {$index} has a bad 'contents' value. It must be a string."); - } - - if (in_array($identifier, $unique_identifiers)) { - throw new AESCryptInvalidExtensionException("Extension block at index {$index} contains an 'identifier' which has already been used. Make sure they are unique."); - } else { - $unique_identifiers[] = $identifier; - } - } - } - - private function checkPassphraseIsValid($passphrase) - { - if ($passphrase === NULL) { - throw new AESCryptInvalidPassphraseException("NULL passphrase not allowed"); - } - } - - private function doEncryptFile($source_file, $passphrase, $dest_file, $ext_data) - { - $this->debug("ENCRYPTION", "Started"); - - $header = "AES"; - $header .= pack("H*", "02"); //Version - $header .= pack("H*", "00"); //Reserved - - //Generate the extension data - $extdat_binary = $this->getBinaryExtensionData($ext_data); - - //Create a random IV using the aes implementation - //IV is based on the block size which is 128 bits (16 bytes) for AES - $iv_1 = $this->aes_impl->createIV(); - if (self::bin_strlen($iv_1) != 16) { - throw new AESCryptImplementationException("Returned an IV which is not 16 bytes long: " . bin2hex($iv_1)); - } - $this->debug("IV1", bin2hex($iv_1)); - - //Use this IV and password to generate the first encryption key - //We dont need to use AES for this as its just lots of sha hashing - $passphrase = iconv(mb_internal_encoding(), 'UTF-16LE', $passphrase); - $this->debug("PASSPHRASE", $passphrase); - $enc_key_1 = $this->createKeyUsingIVAndPassphrase($iv_1, $passphrase); - if (self::bin_strlen($enc_key_1) != 32) { - throw new \Exception("Returned a passphrase which is not 32 bytes long: " . bin2hex($enc_key_1)); - } - $this->debug("KEY1", bin2hex($enc_key_1)); - - //Create another set of keys to do the actual file encryption - $iv_2 = $this->aes_impl->createIV(); - if (self::bin_strlen($iv_2) != 16) { - throw new AESCryptImplementationException("Returned an IV which is not 16 bytes long: " . bin2hex($iv_2)); - } - $this->debug("IV2", bin2hex($iv_2)); - - //The file format uses AES 256 (which is the key length) - $enc_key_2 = $this->aes_impl->createRandomKey(); - if (self::bin_strlen($enc_key_2) != 32) { - throw new AESCryptImplementationException("Returned a random key which is not 32 bytes long: " . bin2hex($enc_key_2)); - } - $this->debug("KEY2", bin2hex($enc_key_2)); - - //Encrypt the second set of keys using the first keys - $file_encryption_keys = $iv_2 . $enc_key_2; - - $encrypted_keys = $this->aes_impl->encryptData($file_encryption_keys, $iv_1, $enc_key_1); - if (self::bin_strlen($encrypted_keys) != 48) { - throw new \Exception("Assertion 1 failed"); - } - $this->debug("ENCRYPTED KEYS", bin2hex($encrypted_keys)); - //$this->assertLength($encrypted_keys, 48); - - //Calculate HMAC1 using the first enc key - $hmac_1 = hash_hmac("sha256", $encrypted_keys, $enc_key_1, true); - if (self::bin_strlen($hmac_1) != 32) { - throw new \Exception("Assertion 2 failed"); - } - $this->debug("HMAC 1", bin2hex($hmac_1)); - //$this->assertLength($hmac_1, 32); - - //Now do file encryption - $source_contents = file_get_contents($source_file); - $encrypted_file_data = $this->aes_impl->encryptData($source_contents, $iv_2, $enc_key_2); - - $file_size_modulo = pack("C", self::bin_strlen($source_contents) % 16); - - $this->debug("FS MODULO", bin2hex($file_size_modulo)); - - //HMAC the encrypted data too - $this->debug("MD5 of ENC DATA", md5($encrypted_file_data)); - $hmac_2 = hash_hmac("sha256", $encrypted_file_data, $enc_key_2, true); - - $this->debug("HMAC2", bin2hex($hmac_2)); - - //Actaully write it to the dest fh - $enc_data = $header . $extdat_binary . $iv_1 . $encrypted_keys . $hmac_1 . $encrypted_file_data . $file_size_modulo . $hmac_2; - - //Open destination file for writing - $dest_fh = $this->openDestinationFile($source_file, $dest_file, true); - $written = fwrite($dest_fh, $enc_data); - if ($written === false) { - throw new AESCryptFileAccessException("Could not write encrypted data to file. Tried to write " . self::bin_strlen($enc_data) . " bytes"); - } - $this->debug("ENCRYPTION", "Complete"); - - return $dest_fh; - } - - private function debug($name, $msg) - { - if ($this->debugging) { - echo "<br/>"; - echo $name . " - " . $msg; - echo "<br/>"; - } - } - - private function getBinaryExtensionData($ext_data) - { - $this->checkExtensionData($ext_data); - - if ($ext_data === NULL) { - $ext_data = array(); - } - - $output = ""; - foreach ($ext_data as $ext) { - $ident = $ext['identifier']; - $contents = $ext['contents']; - $data = $ident . pack("C", 0) . $contents; - $output .= pack("n", self::bin_strlen($data)); - $output .= $data; - } - - //Also insert a 128 byte container - $data = str_repeat(pack("C", 0), 128); - $output .= pack("n", self::bin_strlen($data)); - $output .= $data; - - //2 finishing NULL bytes to signify end of extensions - $output .= pack("C", 0); - $output .= pack("C", 0); - return $output; - } - - public static function bin_strlen($string) - { - if (function_exists('mb_strlen')) { - return mb_strlen($string, '8bit'); - } else { - return strlen($string); - } - } - - private function createKeyUsingIVAndPassphrase($iv, $passphrase) - { - //Start with the IV padded to 32 bytes - $aes_key = str_pad($iv, 32, hex2bin("00")); - $iterations = 8192; - for ($i = 0; $i < $iterations; $i++) { - $hash = hash_init("sha256"); - hash_update($hash, $aes_key); - hash_update($hash, $passphrase); - $aes_key = hash_final($hash, true); - } - return $aes_key; - } - - private function openDestinationFile($source_file, $dest_file, $encrypting = true) - { - - //Please use checkSourceExistsAndReadable on the source before running this function as we assume it exists here - $source_info = pathinfo($source_file); - - if ($dest_file === NULL) { - if (!$encrypting) { - //We are decrypting without a known destination file - //We should check for a double extension in the file name e.g. (filename.docx.aes) - //Actually, we just check it ends with .aes and strip off the rest - if (preg_match("/^(.+)\." . self::ENCRYPTED_FILE_EXTENSION . "$/i", $source_info['basename'], $matches)) { - //Yes, source is an .aes file - //We remove the .aes part and use a destination file in the same source directory - $dest_file = $source_info['dirname'] . DIRECTORY_SEPARATOR . $matches[1]; - } else { - throw new AESCryptCannotInferDestinationException($source_file); - } - - } else { - //We are encrypting, use .aes as destination file extension - $dest_file = $source_file . "." . self::ENCRYPTED_FILE_EXTENSION; - } - } - - if ($this->use_dynamic_filenaming) { - //Try others until it doesnt exist - $dest_info = pathinfo($dest_file); - - $duplicate_id = 1; - while (file_exists($dest_file)) { - //Check the destination file doesn't exist (We never overwrite) - $dest_file = $dest_info['dirname'] . DIRECTORY_SEPARATOR . $dest_info['filename'] . "({$duplicate_id})." . $dest_info['extension']; - $duplicate_id++; - } - } else { - if (file_exists($dest_file)) { - throw new AESCryptFileExistsException($dest_file); - } - } - - //Now that we found a non existing file, attempt to open it for writing - $dest_fh = fopen($dest_file, "xb"); - if ($dest_fh === false) { - throw new AESCryptFileAccessException("Cannot create for writing:" . $dest_file); - } - - return $dest_fh; - } - - //Converts the given extension data in to binary data - - public function readExtensionBlocks($source_file) - { - //Check we can read the source file - $this->checkSourceExistsAndReadable($source_file); - - //Attempt to parse and return the extension blocks only - //Open the file - $source_fh = fopen($source_file, "rb"); - if ($source_fh === false) { - throw new AESCryptFileAccessException("Cannot open file for reading: " . $source_file); - } - - $this->readChunk($source_fh, 3, "file header", NULL, "AES"); - $version_chunk = $this->readChunk($source_fh, 1, "version byte", "C"); - $extension_blocks = array(); - if (bin2hex($version_chunk) === dechex(ord("0"))) { - //This file uses version 0 of the standard - //Extension blocks dont exist in this versions spec - $extension_blocks = NULL; - } else if (bin2hex($version_chunk) === dechex(ord("1"))) { - //This file uses version 1 of the standard - //Extension blocks dont exist in this versions spec - $extension_blocks = NULL; - } else if (bin2hex($version_chunk) === dechex(ord("2"))) { - - //This file uses version 2 of the standard (The latest standard at the time of writing) - $this->readChunk($source_fh, 1, "reserved byte", "C", 0); - $eb_index = 0; - while (true) { - //Read ext length - $ext_length = $this->readChunk($source_fh, 2, "extension length", "n"); - if ($ext_length == 0) { - break; - } else { - $ext_content = $this->readChunk($source_fh, $ext_length, "extension content"); - - //Find the first NULL splitter character - $null_index = self::bin_strpos($ext_content, "\x00"); - if ($null_index === false) { - throw new AESCryptCorruptedFileException("Extension block data at index {$eb_index} has no null splitter byte: " . $source_file); - } - - $identifier = self::bin_substr($ext_content, 0, $null_index); - $contents = self::bin_substr($ext_content, $null_index + 1); - - if ($identifier != "") { - $extension_blocks[$eb_index] = array( - "identifier" => $identifier, - "contents" => $contents - ); - $eb_index++; - } - } - } - } else { - throw new AESCryptCorruptedFileException("Unknown version: " . bin2hex($version_chunk)); - } - return $extension_blocks; - } - - //This is sha256 by standard and should always returns 256bits (32 bytes) of hash data - //Looking at the java implementation, it seems we should iterate the hasing 8192 times - - private function readChunk($source_fh, $num_bytes, $chunk_name, $unpack_format = NULL, $expected_value = NULL) - { - $read_data = fread($source_fh, $num_bytes); - if ($read_data === false) { - throw new AESCryptFileAccessException("Could not read chunk " . $chunk_name . " of " . $num_bytes . " bytes"); - } - - if (self::bin_strlen($read_data) != $num_bytes) { - throw new AESCryptCorruptedFileException("Could not read chunk " . $chunk_name . " of " . $num_bytes . " bytes, only found " . self::bin_strlen($read_data) . " bytes"); - } - - if ($unpack_format !== NULL) { - $read_data = unpack($unpack_format, $read_data); - if (is_array($read_data)) { - $read_data = $read_data[1]; - } - } - - - if ($expected_value !== NULL) { - if ($read_data !== $expected_value) { - throw new AESCryptCorruptedFileException("The chunk " . $chunk_name . " was expected to be " . bin2hex($expected_value) . " but found " . bin2hex($read_data)); - } - } - return $read_data; - } - - public static function bin_strpos($haystack, $needle, $offset = 0) - { - if (function_exists('mb_strpos')) { - return mb_strpos($haystack, $needle, $offset, '8bit'); - } else { - return strpos($haystack, $needle, $offset); - } - } - - public static function bin_substr($string, $start, $length = NULL) - { - if (function_exists('mb_substr')) { - return mb_substr($string, $start, $length, '8bit'); - } else { - return substr($string, $start, $length); - } - } - - //http://php.net/manual/en/mbstring.overload.php - //String functions which may be overloaded are: mail, strlen, strpos, strrpos, substr, - //strtolower, strtoupper, stripos, strripos, strstr, stristr, strrchr, - //substr_count, ereg, eregi, ereg_replace, eregi_replace, split - // - //Since we use some of these str_ php functions to manipulate binary data, - //to prevent accidental multibyte string functions thinking binary data is a - //multibyte string and breaking the engine, we use the 8bit mode - //with the mb_ equivalents if they exist. - - //Functions we use and so must wrap: strlen, strpos, substr - - public function decryptFile($source_file, $passphrase, $dest_file = NULL) - { - //Check we can read the source file - $this->checkSourceExistsAndReadable($source_file); - - //Check whether the passphrase is correct before decrypting the keys and validating with HMAC1 - //If it is, attempt to decrypt the file using these keys and write to destination file - $dest_fh = $this->doDecryptFile($source_file, $passphrase, $dest_file); - - //Return encrypted file location - $meta_data = stream_get_meta_data($dest_fh); - fclose($dest_fh); - $filename = realpath($meta_data["uri"]); - return $filename; - } - - private function doDecryptFile($source_file, $passphrase, $dest_file) - { - $this->debug("DECRYPTION", "Started"); - - //Check we can read the source file - $this->checkSourceExistsAndReadable($source_file); - - //Attempt to parse and return the extension blocks only - //Open the file - $source_fh = fopen($source_file, "rb"); - if ($source_fh === false) { - throw new AESCryptFileAccessException("Cannot open file for reading: " . $source_file); - } - - $this->readChunk($source_fh, 3, "file header", NULL, "AES"); - $version_chunk = $this->readChunk($source_fh, 1, "version byte", "C"); - $extension_blocks = array(); - if ($version_chunk === 0) { - //This file uses version 0 of the standard - $file_size_modulos = $this->readChunk($source_fh, 1, "file size modulo", "C", 0); - if ($file_size_modulos === false) { - throw new \Exception("Could not decode file size modulos"); - } - if ($file_size_modulos < 0 || $file_size_modulos >= 16) { - throw new \Exception("Invalid file size modulos: " . $file_size_modulos); - } - - $iv = $this->readChunk($source_fh, 16, "IV"); - - $rest_of_data = ""; - while (!feof($source_fh)) { - $rest_of_data .= fread($source_fh, 8192); //Read in 8K chunks - } - $encrypted_data = self::bin_substr($rest_of_data, 0, -32); - $hmac = self::bin_substr($rest_of_data, -32, 32); - - //Convert the passphrase to UTF-16LE - $passphrase = iconv(mb_internal_encoding(), 'UTF-16LE', $passphrase); - $this->debug("PASSPHRASE", bin2hex($passphrase)); - $enc_key = $this->createKeyUsingIVAndPassphrase($iv, $passphrase); - $this->debug("ENCKEYFROMPASSWORD", bin2hex($enc_key)); - - //We simply use this enc key to decode the payload - //We do not know if it is correct yet until we finish decrypting the data - - $decrypted_data = $this->aes_impl->decryptData($encrypted_data, $iv, $enc_key); - if ($file_size_modulos > 0) { - $decrypted_data = self::bin_substr($decrypted_data, 0, ((16 - $file_size_modulos) * -1)); - } - - //Here the HMAC is (probably) used to verify the decrypted data - $this->validateHMAC($enc_key, $decrypted_data, $hmac, "HMAC"); - - //Open destination file for writing - $dest_fh = $this->openDestinationFile($source_file, $dest_file, false); - - $result = fwrite($dest_fh, $decrypted_data); - if ($result === false) { - throw new \Exception("Could not write back file"); - } - if ($result != self::bin_strlen($decrypted_data)) { - throw new \Exception("Could not write back file"); - } - $this->debug("DECRYPTION", "Completed"); - return $dest_fh; - - } else if ($version_chunk === 1 || $version_chunk === 2) { - if ($version_chunk === 1) { - //This file uses version 1 of the standard - $this->readChunk($source_fh, 1, "reserved byte", "C", 0); - } else if ($version_chunk === 2) { - //This file uses version 2 of the standard (The latest standard at the time of writing) - $this->readChunk($source_fh, 1, "reserved byte", "C", 0); - while (true) { - //Read ext length - $ext_length = $this->readChunk($source_fh, 2, "extension length", "n"); - if ($ext_length == 0) { - break; - } else { - $this->readChunk($source_fh, $ext_length, "extension content"); - } - } - } - - $iv_1 = $this->readChunk($source_fh, 16, "IV 1"); - $this->debug("IV1", bin2hex($iv_1)); - $enc_keys = $this->readChunk($source_fh, 48, "Encrypted Keys"); - $this->debug("ENCRYPTED KEYS", bin2hex($enc_keys)); - $hmac_1 = $this->readChunk($source_fh, 32, "HMAC 1"); - $this->debug("HMAC1", bin2hex($hmac_1)); - - //Convert the passphrase to UTF-16LE - $passphrase = iconv(mb_internal_encoding(), 'UTF-16LE', $passphrase); - $this->debug("PASSPHRASE", bin2hex($passphrase)); - $enc_key_1 = $this->createKeyUsingIVAndPassphrase($iv_1, $passphrase); - $this->debug("ENCKEY1FROMPASSWORD", bin2hex($enc_key_1)); - - $this->validateHMAC($enc_key_1, $enc_keys, $hmac_1, "HMAC 1"); - - - $rest_of_data = ""; - while (!feof($source_fh)) { - $rest_of_data .= fread($source_fh, 8192); //Read in 8K chunks - } - - $encrypted_data = self::bin_substr($rest_of_data, 0, -33); - $file_size_modulos = unpack("C", self::bin_substr($rest_of_data, -33, 1)); - $file_size_modulos = $file_size_modulos[1]; - if ($file_size_modulos === false) { - throw new \Exception("Could not decode file size modulos"); - } - if ($file_size_modulos < 0 || $file_size_modulos >= 16) { - throw new \Exception("Invalid file size modulos: " . $file_size_modulos); - } - - $hmac_2 = self::bin_substr($rest_of_data, -32); - $this->debug("HMAC2", bin2hex($hmac_2)); - - $decrypted_keys = $this->aes_impl->decryptData($enc_keys, $iv_1, $enc_key_1); - $this->debug("DECRYPTED_KEYS", bin2hex($decrypted_keys)); - - $iv_2 = self::bin_substr($decrypted_keys, 0, 16); - $enc_key_2 = self::bin_substr($decrypted_keys, 16); - - $this->debug("MD5 of ENC DATA", md5($encrypted_data)); - - $this->validateHMAC($enc_key_2, $encrypted_data, $hmac_2, "HMAC 2"); - //All keys were correct, we can be sure that the decrypted data will be correct - $decrypted_data = $this->aes_impl->decryptData($encrypted_data, $iv_2, $enc_key_2); - //Modulos tells us how many bytes to trim from the end - if ($file_size_modulos > 0) { - $decrypted_data = self::bin_substr($decrypted_data, 0, ((16 - $file_size_modulos) * -1)); - } - - //Open destination file for writing - $dest_fh = $this->openDestinationFile($source_file, $dest_file, false); - - $result = fwrite($dest_fh, $decrypted_data); - if ($result === false) { - throw new \Exception("Could not write back file"); - } - if ($result != self::bin_strlen($decrypted_data)) { - throw new \Exception("Could not write back file"); - } - $this->debug("DECRYPTION", "Completed"); - return $dest_fh; - } else { - throw new \Exception("Invalid version chunk: " . $version_chunk); - } - throw new \Exception("Not implemented"); - } - - private function validateHMAC($key, $data, $hash, $name) - { - $calculated = hash_hmac("sha256", $data, $key, true); - $actual = $hash; - if ($calculated != $actual) { - $this->debug("CALCULATED", bin2hex($calculated)); - $this->debug("ACTUAL", bin2hex($actual)); - if ($name == "HMAC 1") { - throw new AESCryptInvalidPassphraseException("{$name} failed to validate integrity of encryption keys. Incorrect password or file corrupted."); - } else { - throw new AESCryptCorruptedFileException("{$name} failed to validate integrity of encrypted data. The file is corrupted and should not be trusted."); - } - } - } - -} - -class AESCryptMissingDependencyException extends \Exception -{ -} //E.g. missing mcrypt -class AESCryptCorruptedFileException extends \Exception -{ -} //E.g. when file looks corrupted or wont parse -class AESCryptFileMissingException extends \Exception -{ -} //E.g. cant read file to encrypt -class AESCryptFileAccessException extends \Exception -{ -} //E.g. read/write error on files -class AESCryptFileExistsException extends \Exception -{ -} //E.g. when a destination file exists (we never overwrite) -class AESCryptInvalidExtensionException extends \Exception -{ -} //E.g. when an extension array is invalid -class AESCryptInvalidPassphraseException extends \Exception -{ -} //E.g. when the password is wrong -class AESCryptCannotInferDestinationException extends \Exception -{ -} //E.g. when we try to decrypt a 3rd party written file which doesnt have the standard file name convention -class AESCryptImplementationException extends \Exception -{ -} //For generic \Exceptions by the aes implementation used \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Drive/Services/Storage/Encryption/MCryptAES256Implementation.php b/twake/backend/core/src/Twake/Drive/Services/Storage/Encryption/MCryptAES256Implementation.php deleted file mode 100755 index 70cfdafd..00000000 --- a/twake/backend/core/src/Twake/Drive/Services/Storage/Encryption/MCryptAES256Implementation.php +++ /dev/null @@ -1,45 +0,0 @@ -<?php - -namespace Twake\Drive\Services\Storage\Encryption; - -class MCryptAES256Implementation implements AES256Implementation -{ - const BLOCK_SIZE = 16; // 128 bits - const KEY_SIZE = 32; // 256 bits - const MY_MCRYPT_CIPHER = MCRYPT_RIJNDAEL_128; //AES - const MY_MCRYPT_MODE = MCRYPT_MODE_CBC; //AES - - public function checkDependencies() - { - $function_list = array( - "mcrypt_create_iv", - "mcrypt_encrypt", - "mcrypt_decrypt", - ); - foreach ($function_list as $func) { - if (!function_exists($func)) { - throw new \Exception("Missing function dependency: " . $func); - } - } - } - - public function createIV() - { - return mcrypt_create_iv(self::BLOCK_SIZE, MCRYPT_RAND); - } - - public function createRandomKey() - { - return mcrypt_create_iv(self::KEY_SIZE, MCRYPT_RAND); - } - - public function encryptData($the_data, $iv, $enc_key) - { - return mcrypt_encrypt(self::MY_MCRYPT_CIPHER, $enc_key, $the_data, self::MY_MCRYPT_MODE, $iv); - } - - public function decryptData($the_data, $iv, $enc_key) - { - return mcrypt_decrypt(self::MY_MCRYPT_CIPHER, $enc_key, $the_data, self::MY_MCRYPT_MODE, $iv); - } -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Drive/Services/Storage/Encryption/OpenSSLCryptLib.php b/twake/backend/core/src/Twake/Drive/Services/Storage/Encryption/OpenSSLCryptLib.php deleted file mode 100755 index 359a76e0..00000000 --- a/twake/backend/core/src/Twake/Drive/Services/Storage/Encryption/OpenSSLCryptLib.php +++ /dev/null @@ -1,48 +0,0 @@ -<?php - -namespace Twake\Drive\Services\Storage\Encryption; - -class OpenSSLCryptLib -{ - public function decryptFile($in, $key, $out) - { - - $key = md5($key); - - if ($out != $in) { - $temp = $out; - } else { - $temp = $in . ".tmp"; - } - - $iv = bin2hex(substr($key, 0, openssl_cipher_iv_length('aes-256-cbc') / 2)); - - shell_exec('openssl enc -aes-256-cbc -base64 -d -A -p -K ' . $key . ' -iv ' . $iv . ' -in ' . $in . ' -out ' . $temp); - - if ($out == $in) { - rename($in . ".tmp", $out); - } - - } - - public function encryptFile($in, $key, $out) - { - - $key = md5($key); - - if ($out != $in) { - $temp = $out; - } else { - $temp = $in . ".tmp"; - } - - $iv = bin2hex(substr($key, 0, openssl_cipher_iv_length('aes-256-cbc') / 2)); - - shell_exec('openssl enc -aes-256-cbc -base64 -e -A -p -K ' . $key . ' -iv ' . $iv . ' -in ' . $in . ' -out ' . $temp); - - if ($out == $in) { - rename($in . ".tmp", $out); - } - - } -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Drive/Services/Storage/EncryptionBag.php b/twake/backend/core/src/Twake/Drive/Services/Storage/EncryptionBag.php deleted file mode 100755 index a9e071c6..00000000 --- a/twake/backend/core/src/Twake/Drive/Services/Storage/EncryptionBag.php +++ /dev/null @@ -1,68 +0,0 @@ -<?php - -namespace Twake\Drive\Services\Storage; - -class EncryptionBag -{ - - private $salt; - private $key; - private $mode; - - public function __construct($key, $salt = "", $mode = "OpenSSL-2") - { - $this->salt = $salt; - $this->key = $key; - $this->mode = $mode; - } - - /** - * @return mixed - */ - public function getSalt() - { - return $this->salt; - } - - /** - * @param mixed $salt - */ - public function setSalt($salt) - { - $this->salt = $salt; - } - - /** - * @return mixed - */ - public function getKey() - { - return $this->key; - } - - /** - * @param mixed $key - */ - public function setKey($key) - { - $this->key = $key; - } - - /** - * @return mixed - */ - public function getMode() - { - return $this->mode; - } - - /** - * @param mixed $mode - */ - public function setMode($mode) - { - $this->mode = $mode; - } - - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Drive/Services/Storage/StorageManager.php b/twake/backend/core/src/Twake/Drive/Services/Storage/StorageManager.php deleted file mode 100755 index 1c8c90bd..00000000 --- a/twake/backend/core/src/Twake/Drive/Services/Storage/StorageManager.php +++ /dev/null @@ -1,74 +0,0 @@ -<?php - -namespace Twake\Drive\Services\Storage; - -use App\App; - -class StorageManager -{ - - private $storage; - private $root; - private $doctrine; - - public function __construct(App $app) - { - $this->storage = $app->getContainer()->getParameter("storage"); - $this->root = $app->getAppRootDir(); - $this->preview = $app->getServices()->get("app.drive.preview"); - $this->doctrine = $app->getServices()->get("app.twake_doctrine"); - $this->app = $app; - } - - /** - * @return mixed - */ - public function getAdapter($provider = false) - { - //Prod retro-compatibility - if($this->getProviderConfiguration("")["label"] === ""){ - $provider = $provider ?: ""; - } - - $configuration = $this->getProviderConfiguration($provider); - $configuration["default_drive_salt"] = $this->app->getContainer()->getParameter("storage.drive_salt"); - - if ($configuration["type"] === "S3") { - return new Adapter_AWS($configuration, $this->preview, $this->doctrine); - } elseif ($configuration["type"] === "openstack") { - return new Adapter_OpenStack($configuration, $this->preview, $this->doctrine); - } - return new Adapter_Local($configuration, $this->preview, $this->doctrine); - } - - public function getProviderConfiguration($provider = false){ - $defaultProvider = $this->getOneProvider(); - $provider = $provider === false ? $defaultProvider : $provider; - $configuration = ""; - foreach($this->storage["providers"] as $providerConfiguration){ - if((!$configuration && $providerConfiguration["label"] == $defaultProvider) - || ($providerConfiguration["label"] == $provider)){ - $configuration = $providerConfiguration; - } - } - return $configuration; - } - - /** - * Choose a provider in the available providers - */ - public function getOneProvider(){ - $candidates = []; - - foreach($this->storage["providers"] as $provider){ - if($provider["use"]){ - $candidates[] = $provider["label"]; - } - } - - shuffle($candidates); - - return $candidates[0] ?: null; - } - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Drive/Services/UploadFile.php b/twake/backend/core/src/Twake/Drive/Services/UploadFile.php deleted file mode 100755 index ff67f030..00000000 --- a/twake/backend/core/src/Twake/Drive/Services/UploadFile.php +++ /dev/null @@ -1,63 +0,0 @@ -<?php - -namespace Twake\Drive\Services; - -use App\App; -use http\Client\Response; -use Twake\Drive\Services\Resumable\Network\SimpleRequest; -use Twake\Drive\Services\Resumable\Network\SimpleResponse; - -class UploadFile -{ - private $resumable; - - public function __construct(App $app) - { - $this->resumable = $app->getServices()->get("driveupload.resumable"); - } - - public function preprocess($request, $current_user_id) - { - $workspace_id = $request->request->get("workspace_id", ""); - $name = $request->request->all()["name"]; - $extension = $request->request->all()["extension"]; - return $this->resumable->createObject($workspace_id, $name, $extension, $current_user_id); - } - - public function upload($request, $response, $current_user_id) - { - $request = new SimpleRequest($request); - $response = new SimpleResponse($response); - $this->resumable->updateParam($request, $response); - $res = $this->resumable->process($current_user_id); - if (is_array($res)) { - return $res; - } - } - - public function uploadDirectly($file_or_url, $object, $options, $current_user_id) - { - $workspace_id = $object["workspace_id"]; - $name = $object["name"]; - if (!isset($object["extension"]) || !$object["extension"]) { - preg_match("/(.*)(\.[a-zA-Z0-9]+)+$/i", $name, $matches); - $extension = isset($matches[2]) ? $matches[2] : ""; - } else { - $extension = $object["extension"]; - } - - $identifier = $this->resumable->createObject($workspace_id, $name, $extension, $current_user_id); - - if ($identifier) { - $res = $this->resumable->handleChunk($file_or_url, $object["name"], 0, $identifier, 1, 1, $object, $options); - if (is_array($res)) { - return $res; - } - } - - return null; - - } - - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Drive/Services/ZipStream/Bigint.php b/twake/backend/core/src/Twake/Drive/Services/ZipStream/Bigint.php deleted file mode 100755 index 6989c576..00000000 --- a/twake/backend/core/src/Twake/Drive/Services/ZipStream/Bigint.php +++ /dev/null @@ -1,172 +0,0 @@ -<?php -declare(strict_types=1); - -namespace Twake\Drive\Services\ZipStream; - -use OverflowException; - -class Bigint -{ - /** - * @var int[] - */ - private $bytes = [0, 0, 0, 0, 0, 0, 0, 0]; - - /** - * Initialize the bytes array - * - * @param int $value - */ - public function __construct(int $value = 0) - { - $this->fillBytes($value, 0, 8); - } - - /** - * Fill the bytes field with int - * - * @param int $value - * @param int $start - * @param int $count - * @return void - */ - protected function fillBytes(int $value, int $start, int $count): void - { - for ($i = 0; $i < $count; $i++) { - $this->bytes[$start + $i] = $i >= PHP_INT_SIZE ? 0 : $value & 0xFF; - $value >>= 8; - } - } - - /** - * Get an instance - * - * @param int $value - * @return Bigint - */ - public static function init(int $value = 0): self - { - return new self($value); - } - - /** - * Fill bytes from low to high - * - * @param int $low - * @param int $high - * @return Bigint - */ - public static function fromLowHigh(int $low, int $high): self - { - $bigint = new Bigint(); - $bigint->fillBytes($low, 0, 4); - $bigint->fillBytes($high, 4, 4); - return $bigint; - } - - /** - * Get high 32 - * - * @return int - */ - public function getHigh32(): int - { - return $this->getValue(4, 4); - } - - /** - * Get value from bytes array - * - * @param int $end - * @param int $length - * @return int - */ - public function getValue(int $end = 0, int $length = 8): int - { - $result = 0; - for ($i = $end + $length - 1; $i >= $end; $i--) { - $result <<= 8; - $result |= $this->bytes[$i]; - } - return $result; - } - - /** - * Get low FF - * - * @param bool $force - * @return int - */ - public function getLowFF(bool $force = false): int - { - if ($force || $this->isOver32()) { - return 0xFFFFFFFF; - } - return $this->getLow32(); - } - - /** - * Check if is over 32 - * - * @param bool $force - * @return bool - */ - public function isOver32(bool $force = false): bool - { - // value 0xFFFFFFFF already needs a Zip64 header - return $force || - max(array_slice($this->bytes, 4, 4)) > 0 || - min(array_slice($this->bytes, 0, 4)) === 0xFF; - } - - /** - * Get low 32 - * - * @return int - */ - public function getLow32(): int - { - return $this->getValue(0, 4); - } - - /** - * Get hexadecimal - * - * @return string - */ - public function getHex64(): string - { - $result = '0x'; - for ($i = 7; $i >= 0; $i--) { - $result .= sprintf('%02X', $this->bytes[$i]); - } - return $result; - } - - /** - * Add - * - * @param Bigint $other - * @return Bigint - */ - public function add(Bigint $other): Bigint - { - $result = clone $this; - $overflow = false; - for ($i = 0; $i < 8; $i++) { - $result->bytes[$i] += $other->bytes[$i]; - if ($overflow) { - $result->bytes[$i]++; - $overflow = false; - } - if ($result->bytes[$i] & 0x100) { - $overflow = true; - $result->bytes[$i] &= 0xFF; - } - } - if ($overflow) { - throw new OverflowException; - } - return $result; - } -} diff --git a/twake/backend/core/src/Twake/Drive/Services/ZipStream/DeflateStream.php b/twake/backend/core/src/Twake/Drive/Services/ZipStream/DeflateStream.php deleted file mode 100755 index 11bf5600..00000000 --- a/twake/backend/core/src/Twake/Drive/Services/ZipStream/DeflateStream.php +++ /dev/null @@ -1,70 +0,0 @@ -<?php -declare(strict_types=1); - -namespace Twake\Drive\Services\ZipStream; - -class DeflateStream extends Stream -{ - protected $filter; - - /** - * @var Option\File - */ - protected $options; - - /** - * Rewind stream - * - * @return void - */ - public function rewind(): void - { - // deflate filter needs to be removed before rewind - if ($this->filter) { - $this->removeDeflateFilter(); - $this->seek(0); - $this->addDeflateFilter($this->options); - } else { - rewind($this->stream); - } - } - - /** - * Remove the deflate filter - * - * @return void - */ - public function removeDeflateFilter(): void - { - if (!$this->filter) { - return; - } - stream_filter_remove($this->filter); - $this->filter = null; - } - - /** - * Add a deflate filter - * - * @param Option\File $options - * @return void - */ - public function addDeflateFilter(Option\File $options): void - { - $this->options = $options; - // parameter 4 for stream_filter_append expects array - // so we convert the option object in an array - $optionsArr = [ - 'comment' => $options->getComment(), - 'method' => $options->getMethod(), - 'deflateLevel' => $options->getDeflateLevel(), - 'time' => $options->getTime() - ]; - $this->filter = stream_filter_append( - $this->stream, - 'zlib.deflate', - STREAM_FILTER_READ, - $optionsArr - ); - } -} diff --git a/twake/backend/core/src/Twake/Drive/Services/ZipStream/Exception.php b/twake/backend/core/src/Twake/Drive/Services/ZipStream/Exception.php deleted file mode 100755 index 26efd725..00000000 --- a/twake/backend/core/src/Twake/Drive/Services/ZipStream/Exception.php +++ /dev/null @@ -1,11 +0,0 @@ -<?php -declare(strict_types=1); - -namespace Twake\Drive\Services\ZipStream; - -/** - * This class is only for inheriting - */ -abstract class Exception extends \Exception -{ -} diff --git a/twake/backend/core/src/Twake/Drive/Services/ZipStream/Exception/EncodingException.php b/twake/backend/core/src/Twake/Drive/Services/ZipStream/Exception/EncodingException.php deleted file mode 100755 index c687dfba..00000000 --- a/twake/backend/core/src/Twake/Drive/Services/ZipStream/Exception/EncodingException.php +++ /dev/null @@ -1,13 +0,0 @@ -<?php -declare(strict_types=1); - -namespace Twake\Drive\Services\ZipStream\Exception; - -use Twake\Drive\Services\ZipStream\Exception; - -/** - * This Exception gets invoked if file or comment encoding is incorrect - */ -class EncodingException extends Exception -{ -} diff --git a/twake/backend/core/src/Twake/Drive/Services/ZipStream/Exception/FileNotFoundException.php b/twake/backend/core/src/Twake/Drive/Services/ZipStream/Exception/FileNotFoundException.php deleted file mode 100755 index 824d2c2d..00000000 --- a/twake/backend/core/src/Twake/Drive/Services/ZipStream/Exception/FileNotFoundException.php +++ /dev/null @@ -1,22 +0,0 @@ -<?php -declare(strict_types=1); - -namespace Twake\Drive\Services\ZipStream\Exception; - -use Twake\Drive\Services\ZipStream\Exception; - -/** - * This Exception gets invoked if a file wasn't found - */ -class FileNotFoundException extends Exception -{ - /** - * Constructor of the Exception - * - * @param String $path - The path which wasn't found - */ - public function __construct(string $path) - { - parent::__construct("The file with the path $path wasn't found."); - } -} diff --git a/twake/backend/core/src/Twake/Drive/Services/ZipStream/Exception/FileNotReadableException.php b/twake/backend/core/src/Twake/Drive/Services/ZipStream/Exception/FileNotReadableException.php deleted file mode 100755 index 9c9f6433..00000000 --- a/twake/backend/core/src/Twake/Drive/Services/ZipStream/Exception/FileNotReadableException.php +++ /dev/null @@ -1,22 +0,0 @@ -<?php -declare(strict_types=1); - -namespace Twake\Drive\Services\ZipStream\Exception; - -use Twake\Drive\Services\ZipStream\Exception; - -/** - * This Exception gets invoked if a file wasn't found - */ -class FileNotReadableException extends Exception -{ - /** - * Constructor of the Exception - * - * @param String $path - The path which wasn't found - */ - public function __construct(string $path) - { - parent::__construct("The file with the path $path isn't readable."); - } -} diff --git a/twake/backend/core/src/Twake/Drive/Services/ZipStream/Exception/IncompatibleOptionsException.php b/twake/backend/core/src/Twake/Drive/Services/ZipStream/Exception/IncompatibleOptionsException.php deleted file mode 100755 index dbbe5746..00000000 --- a/twake/backend/core/src/Twake/Drive/Services/ZipStream/Exception/IncompatibleOptionsException.php +++ /dev/null @@ -1,13 +0,0 @@ -<?php -declare(strict_types=1); - -namespace Twake\Drive\Services\ZipStream\Exception; - -use Twake\Drive\Services\ZipStream\Exception; - -/** - * This Exception gets invoked if options are incompatible - */ -class IncompatibleOptionsException extends Exception -{ -} diff --git a/twake/backend/core/src/Twake/Drive/Services/ZipStream/Exception/OverflowException.php b/twake/backend/core/src/Twake/Drive/Services/ZipStream/Exception/OverflowException.php deleted file mode 100755 index ec4a49ba..00000000 --- a/twake/backend/core/src/Twake/Drive/Services/ZipStream/Exception/OverflowException.php +++ /dev/null @@ -1,17 +0,0 @@ -<?php -declare(strict_types=1); - -namespace Twake\Drive\Services\ZipStream\Exception; - -use Twake\Drive\Services\ZipStream\Exception; - -/** - * This Exception gets invoked if a counter value exceeds storage size - */ -class OverflowException extends Exception -{ - public function __construct() - { - parent::__construct('File size exceeds limit of 32 bit integer. Please enable "zip64" option.'); - } -} diff --git a/twake/backend/core/src/Twake/Drive/Services/ZipStream/Exception/StreamNotReadableException.php b/twake/backend/core/src/Twake/Drive/Services/ZipStream/Exception/StreamNotReadableException.php deleted file mode 100755 index 42e1716e..00000000 --- a/twake/backend/core/src/Twake/Drive/Services/ZipStream/Exception/StreamNotReadableException.php +++ /dev/null @@ -1,22 +0,0 @@ -<?php -declare(strict_types=1); - -namespace Twake\Drive\Services\ZipStream\Exception; - -use Twake\Drive\Services\ZipStream\Exception; - -/** - * This Exception gets invoked if `fread` fails on a stream. - */ -class StreamNotReadableException extends Exception -{ - /** - * Constructor of the Exception - * - * @param string $fileName - The name of the file which the stream belongs to. - */ - public function __construct(string $fileName) - { - parent::__construct("The stream for $fileName could not be read."); - } -} diff --git a/twake/backend/core/src/Twake/Drive/Services/ZipStream/File.php b/twake/backend/core/src/Twake/Drive/Services/ZipStream/File.php deleted file mode 100755 index 95c337eb..00000000 --- a/twake/backend/core/src/Twake/Drive/Services/ZipStream/File.php +++ /dev/null @@ -1,483 +0,0 @@ -<?php -declare(strict_types=1); - -namespace Twake\Drive\Services\ZipStream; - -use Twake\Drive\Services\ZipStream\Exception\EncodingException; -use Twake\Drive\Services\ZipStream\Exception\FileNotFoundException; -use Twake\Drive\Services\ZipStream\Exception\FileNotReadableException; -use Twake\Drive\Services\ZipStream\Exception\OverflowException; -use Twake\Drive\Services\ZipStream\Option\File as FileOptions; -use Twake\Drive\Services\ZipStream\Option\Method; -use Twake\Drive\Services\ZipStream\Option\Version; - -class File -{ - const HASH_ALGORITHM = 'crc32b'; - - const BIT_ZERO_HEADER = 0x0008; - const BIT_EFS_UTF8 = 0x0800; - - const COMPUTE = 1; - const SEND = 2; - - private const CHUNKED_READ_BLOCK_SIZE = 1048576; - - /** - * @var string - */ - public $name; - - /** - * @var FileOptions - */ - public $opt; - - /** - * @var Bigint - */ - public $len; - /** - * @var Bigint - */ - public $zlen; - - /** @var int */ - public $crc; - - /** - * @var Bigint - */ - public $hlen; - - /** - * @var Bigint - */ - public $ofs; - - /** - * @var int - */ - public $bits; - - /** - * @var Version - */ - public $version; - - /** - * @var ZipStream - */ - public $zip; - - /** - * @var resource - */ - private $deflate; - /** - * @var resource - */ - private $hash; - - /** - * @var Method - */ - private $method; - - /** - * @var Bigint - */ - private $totalLength; - - public function __construct(ZipStream $zip, string $name, ?FileOptions $opt = null) - { - $this->zip = $zip; - - $this->name = $name; - $this->opt = $opt ?: new FileOptions(); - $this->method = $this->opt->getMethod(); - $this->version = Version::STORE(); - $this->ofs = new Bigint(); - } - - public function processPath(string $path): void - { - if (!is_readable($path)) { - if (!file_exists($path)) { - throw new FileNotFoundException($path); - } - throw new FileNotReadableException($path); - } - if ($this->zip->isLargeFile($path) === false) { - $data = file_get_contents($path); - $this->processData($data); - } else { - $this->method = $this->zip->opt->getLargeFileMethod(); - - $stream = new DeflateStream(fopen($path, 'rb')); - $this->processStream($stream); - } - } - - public function processData(string $data): void - { - $this->len = new Bigint(strlen($data)); - $this->crc = crc32($data); - - // compress data if needed - if ($this->method->equals(Method::DEFLATE())) { - $data = gzdeflate($data); - } - - $this->zlen = new Bigint(strlen($data)); - $this->addFileHeader(); - $this->zip->send($data); - $this->addFileFooter(); - } - - - /** - * Create and send zip header for this file. - * - * @return void - * @throws \ZipStream\Exception\EncodingException - */ - public function addFileHeader(): void - { - $name = static::filterFilename($this->name); - - // calculate name length - $nameLength = strlen($name); - - // create dos timestamp - $time = static::dosTime($this->opt->getTime()->getTimestamp()); - - $comment = $this->opt->getComment(); - - if (!mb_check_encoding($name, 'ASCII') || - !mb_check_encoding($comment, 'ASCII')) { - // Sets Bit 11: Language encoding flag (EFS). If this bit is set, - // the filename and comment fields for this file - // MUST be encoded using UTF-8. (see APPENDIX D) - if (!mb_check_encoding($name, 'UTF-8') || - !mb_check_encoding($comment, 'UTF-8')) { - throw new EncodingException( - 'File name and comment should use UTF-8 ' . - 'if one of them does not fit into ASCII range.' - ); - } - $this->bits |= self::BIT_EFS_UTF8; - } - - if ($this->method->equals(Method::DEFLATE())) { - $this->version = Version::DEFLATE(); - } - - $force = (boolean)($this->bits & self::BIT_ZERO_HEADER) && - $this->zip->opt->isEnableZip64(); - - $footer = $this->buildZip64ExtraBlock($force); - - // If this file will start over 4GB limit in ZIP file, - // CDR record will have to use Zip64 extension to describe offset - // to keep consistency we use the same value here - if ($this->zip->ofs->isOver32()) { - $this->version = Version::ZIP64(); - } - - $fields = [ - ['V', ZipStream::FILE_HEADER_SIGNATURE], - ['v', $this->version->getValue()], // Version needed to Extract - ['v', $this->bits], // General purpose bit flags - data descriptor flag set - ['v', $this->method->getValue()], // Compression method - ['V', $time], // Timestamp (DOS Format) - ['V', $this->crc], // CRC32 of data (0 -> moved to data descriptor footer) - ['V', $this->zlen->getLowFF($force)], // Length of compressed data (forced to 0xFFFFFFFF for zero header) - ['V', $this->len->getLowFF($force)], // Length of original data (forced to 0xFFFFFFFF for zero header) - ['v', $nameLength], // Length of filename - ['v', strlen($footer)], // Extra data (see above) - ]; - - // pack fields and calculate "total" length - $header = ZipStream::packFields($fields); - - // print header and filename - $data = $header . $name . $footer; - $this->zip->send($data); - - // save header length - $this->hlen = Bigint::init(strlen($data)); - } - - /** - * Strip characters that are not legal in Windows filenames - * to prevent compatibility issues - * - * @param string $filename Unprocessed filename - * @return string - */ - public static function filterFilename(string $filename): string - { - // strip leading slashes from file name - // (fixes bug in windows archive viewer) - $filename = preg_replace('/^\\/+/', '', $filename); - - return str_replace(['\\', ':', '*', '?', '"', '<', '>', '|'], '_', $filename); - } - - /** - * Convert a UNIX timestamp to a DOS timestamp. - * - * @param int $when - * @return int DOS Timestamp - */ - final protected static function dosTime(int $when): int - { - // get date array for timestamp - $d = getdate($when); - - // set lower-bound on dates - if ($d['year'] < 1980) { - $d = array( - 'year' => 1980, - 'mon' => 1, - 'mday' => 1, - 'hours' => 0, - 'minutes' => 0, - 'seconds' => 0 - ); - } - - // remove extra years from 1980 - $d['year'] -= 1980; - - // return date string - return - ($d['year'] << 25) | - ($d['mon'] << 21) | - ($d['mday'] << 16) | - ($d['hours'] << 11) | - ($d['minutes'] << 5) | - ($d['seconds'] >> 1); - } - - protected function buildZip64ExtraBlock(bool $force = false): string - { - - $fields = []; - if ($this->len->isOver32($force)) { - $fields[] = ['P', $this->len]; // Length of original data - } - - if ($this->len->isOver32($force)) { - $fields[] = ['P', $this->zlen]; // Length of compressed data - } - - if ($this->ofs->isOver32()) { - $fields[] = ['P', $this->ofs]; // Offset of local header record - } - - if (!empty($fields)) { - if (!$this->zip->opt->isEnableZip64()) { - throw new OverflowException(); - } - - array_unshift( - $fields, - ['v', 0x0001], // 64 bit extension - ['v', count($fields) * 8] // Length of data block - ); - $this->version = Version::ZIP64(); - } - - return ZipStream::packFields($fields); - } - - /** - * Create and send data descriptor footer for this file. - * - * @return void - */ - - public function addFileFooter(): void - { - - if ($this->bits & self::BIT_ZERO_HEADER) { - $fields = [ - ['V', ZipStream::DATA_DESCRIPTOR_SIGNATURE], - ['V', $this->crc], // CRC32 - ['V', $this->zlen], // Length of compressed data - ['V', $this->len], // Length of original data - ]; - - if ($this->zip->opt->isEnableZip64()) { - $fields = [ - ['V', ZipStream::DATA_DESCRIPTOR_SIGNATURE], - ['V', $this->crc], // CRC32 - ['P', $this->zlen], // Length of compressed data - ['P', $this->len], // Length of original data - ]; - } - - $footer = ZipStream::packFields($fields); - $this->zip->send($footer); - } else { - $footer = ''; - } - $this->totalLength = $this->hlen->add($this->zlen)->add(Bigint::init(strlen($footer))); - $this->zip->addToCdr($this); - } - - public function processStream(StreamInterface $stream): void - { - - $this->zlen = new Bigint(); - $this->len = new Bigint(); - - if ($this->zip->opt->isZeroHeader()) { - $this->processStreamWithZeroHeader($stream); - } else { - $this->processStreamWithComputedHeader($stream); - } - } - - protected function processStreamWithZeroHeader(StreamInterface $stream): void - { - - $this->bits |= self::BIT_ZERO_HEADER; - $this->addFileHeader(); - $this->readStream($stream, self::COMPUTE | self::SEND); - $this->addFileFooter(); - } - - protected function readStream(StreamInterface $stream, ?int $options = null): void - { - $this->deflateInit(); - $total = 0; - $size = $this->opt->getSize(); - while (!$stream->eof() && ($size === 0 || $total < $size)) { - - $data = $stream->read(self::CHUNKED_READ_BLOCK_SIZE); - $total += strlen($data); - if ($size > 0 && $total > $size) { - $data = substr($data, 0, strlen($data) - ($total - $size)); - } - $this->deflateData($stream, $data, $options); - if ($options & self::SEND) { - $this->zip->send($data); - } - } - $this->deflateFinish($options); - } - - protected function deflateInit(): void - { - $this->hash = hash_init(self::HASH_ALGORITHM); - if ($this->method->equals(Method::DEFLATE())) { - $this->deflate = deflate_init( - ZLIB_ENCODING_RAW, - ['level' => $this->opt->getDeflateLevel()] - ); - } - } - - protected function deflateData(StreamInterface $stream, string &$data, ?int $options = null): void - { - if ($options & self::COMPUTE) { - $this->len = $this->len->add(Bigint::init(strlen($data))); - hash_update($this->hash, $data); - } - if ($this->deflate) { - $data = deflate_add( - $this->deflate, - $data, - $stream->eof() - ? ZLIB_FINISH - : ZLIB_NO_FLUSH - ); - } - if ($options & self::COMPUTE) { - $this->zlen = $this->zlen->add(Bigint::init(strlen($data))); - } - } - - protected function deflateFinish(?int $options = null): void - { - if ($options & self::COMPUTE) { - $this->crc = hexdec(hash_final($this->hash)); - } - } - - protected function processStreamWithComputedHeader(StreamInterface $stream): void - { - - $this->readStream($stream, self::COMPUTE); - $stream->rewind(); - // incremental compression with deflate_add - // makes this second read unnecessary - // but it is only available from PHP 7.0 - if (!$this->deflate && $stream instanceof DeflateStream && $this->method->equals(Method::DEFLATE())) { - $stream->addDeflateFilter($this->opt); - $this->zlen = new Bigint(); - while (!$stream->eof()) { - $data = $stream->read(self::CHUNKED_READ_BLOCK_SIZE); - $this->zlen = $this->zlen->add(Bigint::init(strlen($data))); - } - $stream->rewind(); - } - - $this->addFileHeader(); - $this->readStream($stream, self::SEND); - $this->addFileFooter(); - } - - /** - * Send CDR record for specified file. - * - * @return string - */ - public function getCdrFile(): string - { - $name = static::filterFilename($this->name); - - // get attributes - $comment = $this->opt->getComment(); - - // get dos timestamp - $time = static::dosTime($this->opt->getTime()->getTimestamp()); - - $footer = $this->buildZip64ExtraBlock(); - - $fields = [ - ['V', ZipStream::CDR_FILE_SIGNATURE], // Central file header signature - ['v', ZipStream::ZIP_VERSION_MADE_BY], // Made by version - ['v', $this->version->getValue()], // Extract by version - ['v', $this->bits], // General purpose bit flags - data descriptor flag set - ['v', $this->method->getValue()], // Compression method - ['V', $time], // Timestamp (DOS Format) - ['V', $this->crc], // CRC32 - ['V', $this->zlen->getLowFF()], // Compressed Data Length - ['V', $this->len->getLowFF()], // Original Data Length - ['v', strlen($name)], // Length of filename - ['v', strlen($footer)], // Extra data len (see above) - ['v', strlen($comment)], // Length of comment - ['v', 0], // Disk number - ['v', 0], // Internal File Attributes - ['V', 32], // External File Attributes - ['V', $this->ofs->getLowFF()] // Relative offset of local header - ]; - - // pack fields, then append name and comment - $header = ZipStream::packFields($fields); - - return $header . $name . $footer . $comment; - } - - /** - * @return Bigint - */ - public function getTotalLength(): Bigint - { - return $this->totalLength; - } -} diff --git a/twake/backend/core/src/Twake/Drive/Services/ZipStream/Option/Archive.php b/twake/backend/core/src/Twake/Drive/Services/ZipStream/Option/Archive.php deleted file mode 100755 index 950fdc78..00000000 --- a/twake/backend/core/src/Twake/Drive/Services/ZipStream/Option/Archive.php +++ /dev/null @@ -1,261 +0,0 @@ -<?php -declare(strict_types=1); - -namespace Twake\Drive\Services\ZipStream\Option; - -final class Archive -{ - const DEFAULT_DEFLATE_LEVEL = 6; - /** - * @var string - */ - private $comment = ''; - /** - * Size, in bytes, of the largest file to try - * and load into memory (used by - * addFileFromPath()). Large files may also - * be compressed differently; see the - * 'largeFileMethod' option. Default is ~20 Mb. - * - * @var int - */ - private $largeFileSize = 20 * 1024 * 1024; - /** - * How to handle large files. Legal values are - * Method::STORE() (the default), or - * Method::DEFLATE(). STORE sends the file - * raw and is significantly - * faster, while DEFLATE compresses the file - * and is much, much slower. Note that DEFLATE - * must compress the file twice and is extremely slow. - * - * @var Method - */ - private $largeFileMethod; - /** - * Boolean indicating whether or not to send - * the HTTP headers for this file. - * - * @var bool - */ - private $sendHttpHeaders = false; - /** - * The method called to send headers - * - * @var Callable - */ - private $httpHeaderCallback = 'header'; - /** - * Enable Zip64 extension, supporting very large - * archives (any size > 4 GB or file count > 64k) - * - * @var bool - */ - private $enableZip64 = true; - /** - * Enable streaming files with single read where - * general purpose bit 3 indicates local file header - * contain zero values in crc and size fields, - * these appear only after file contents - * in data descriptor block. - * - * @var bool - */ - private $zeroHeader = false; - /** - * Enable reading file stat for determining file size. - * When a 32-bit system reads file size that is - * over 2 GB, invalid value appears in file size - * due to integer overflow. Should be disabled on - * 32-bit systems with method addFileFromPath - * if any file may exceed 2 GB. In this case file - * will be read in blocks and correct size will be - * determined from content. - * - * @var bool - */ - private $statFiles = true; - /** - * Enable flush after every write to output stream. - * @var bool - */ - private $flushOutput = false; - /** - * HTTP Content-Disposition. Defaults to - * 'attachment', where - * FILENAME is the specified filename. - * - * Note that this does nothing if you are - * not sending HTTP headers. - * - * @var string - */ - private $contentDisposition = 'attachment'; - /** - * Note that this does nothing if you are - * not sending HTTP headers. - * - * @var string - */ - private $contentType = 'application/x-zip'; - /** - * @var int - */ - private $deflateLevel = 6; - - /** - * @var resource - */ - private $outputStream; - - /** - * Options constructor. - */ - public function __construct() - { - $this->largeFileMethod = Method::STORE(); - $this->outputStream = fopen('php://output', 'wb'); - } - - public function getComment(): string - { - return $this->comment; - } - - public function setComment(string $comment): void - { - $this->comment = $comment; - } - - public function getLargeFileSize(): int - { - return $this->largeFileSize; - } - - public function setLargeFileSize(int $largeFileSize): void - { - $this->largeFileSize = $largeFileSize; - } - - public function getLargeFileMethod(): Method - { - return $this->largeFileMethod; - } - - public function setLargeFileMethod(Method $largeFileMethod): void - { - $this->largeFileMethod = $largeFileMethod; - } - - public function isSendHttpHeaders(): bool - { - return $this->sendHttpHeaders; - } - - public function setSendHttpHeaders(bool $sendHttpHeaders): void - { - $this->sendHttpHeaders = $sendHttpHeaders; - } - - public function getHttpHeaderCallback(): Callable - { - return $this->httpHeaderCallback; - } - - public function setHttpHeaderCallback(Callable $httpHeaderCallback): void - { - $this->httpHeaderCallback = $httpHeaderCallback; - } - - public function isEnableZip64(): bool - { - return $this->enableZip64; - } - - public function setEnableZip64(bool $enableZip64): void - { - $this->enableZip64 = $enableZip64; - } - - public function isZeroHeader(): bool - { - return $this->zeroHeader; - } - - public function setZeroHeader(bool $zeroHeader): void - { - $this->zeroHeader = $zeroHeader; - } - - public function isFlushOutput(): bool - { - return $this->flushOutput; - } - - public function setFlushOutput(bool $flushOutput): void - { - $this->flushOutput = $flushOutput; - } - - public function isStatFiles(): bool - { - return $this->statFiles; - } - - public function setStatFiles(bool $statFiles): void - { - $this->statFiles = $statFiles; - } - - public function getContentDisposition(): string - { - return $this->contentDisposition; - } - - public function setContentDisposition(string $contentDisposition): void - { - $this->contentDisposition = $contentDisposition; - } - - public function getContentType(): string - { - return $this->contentType; - } - - public function setContentType(string $contentType): void - { - $this->contentType = $contentType; - } - - /** - * @return resource - */ - public function getOutputStream() - { - return $this->outputStream; - } - - /** - * @param resource $outputStream - */ - public function setOutputStream($outputStream): void - { - $this->outputStream = $outputStream; - } - - /** - * @return int - */ - public function getDeflateLevel(): int - { - return $this->deflateLevel; - } - - /** - * @param int $deflateLevel - */ - public function setDeflateLevel(int $deflateLevel): void - { - $this->deflateLevel = $deflateLevel; - } -} diff --git a/twake/backend/core/src/Twake/Drive/Services/ZipStream/Option/Enum.php b/twake/backend/core/src/Twake/Drive/Services/ZipStream/Option/Enum.php deleted file mode 100755 index f45580ea..00000000 --- a/twake/backend/core/src/Twake/Drive/Services/ZipStream/Option/Enum.php +++ /dev/null @@ -1,196 +0,0 @@ -<?php -/** - * @link http://github.com/myclabs/php-enum - * @license http://www.opensource.org/licenses/mit-license.php MIT (see the LICENSE file) - */ - -namespace Twake\Drive\Services\ZipStream\Option; -/** - * Base Enum class - * - * Create an enum by implementing this class and adding class constants. - * - * @author Matthieu Napoli <matthieu@mnapoli.fr> - * @author Daniel Costa <danielcosta@gmail.com> - * @author Mirosław Filip <mirfilip@gmail.com> - */ -abstract class Enum implements \JsonSerializable -{ - /** - * Store existing constants in a static cache per object. - * - * @var array - */ - protected static $cache = []; - /** - * Enum value - * - * @var mixed - */ - protected $value; - - /** - * Creates a new value of some type - * - * @param mixed $value - * - * @throws \UnexpectedValueException if incompatible type is given. - */ - public function __construct($value) - { - if ($value instanceof static) { - $value = $value->getValue(); - } - if (!$this->isValid($value)) { - throw new \UnexpectedValueException("Value '$value' is not part of the enum " . \get_called_class()); - } - $this->value = $value; - } - - /** - * @return mixed - */ - public function getValue() - { - return $this->value; - } - - /** - * Check if is valid enum value - * - * @param $value - * - * @return bool - */ - public static function isValid($value) - { - return \in_array($value, static::toArray(), true); - } - - /** - * Returns all possible values as an array - * - * @return array Constant name in key, constant value in value - */ - public static function toArray() - { - $class = \get_called_class(); - if (!isset(static::$cache[$class])) { - $reflection = new \ReflectionClass($class); - static::$cache[$class] = $reflection->getConstants(); - } - return static::$cache[$class]; - } - - /** - * Returns the names (keys) of all constants in the Enum class - * - * @return array - */ - public static function keys() - { - return \array_keys(static::toArray()); - } - - /** - * Returns instances of the Enum class of all Enum constants - * - * @return static[] Constant name in key, Enum instance in value - */ - public static function values() - { - $values = array(); - foreach (static::toArray() as $key => $value) { - $values[$key] = new static($value); - } - return $values; - } - - /** - * Check if is valid enum key - * - * @param $key - * - * @return bool - */ - public static function isValidKey($key) - { - $array = static::toArray(); - return isset($array[$key]) || \array_key_exists($key, $array); - } - - /** - * Returns a value when called statically like so: MyEnum::SOME_VALUE() given SOME_VALUE is a class constant - * - * @param string $name - * @param array $arguments - * - * @return static - * @throws \BadMethodCallException - */ - public static function __callStatic($name, $arguments) - { - $array = static::toArray(); - if (isset($array[$name]) || \array_key_exists($name, $array)) { - return new static($array[$name]); - } - throw new \BadMethodCallException("No static method or enum constant '$name' in class " . \get_called_class()); - } - - /** - * Returns the enum key (i.e. the constant name). - * - * @return mixed - */ - public function getKey() - { - return static::search($this->value); - } - - /** - * Return key for value - * - * @param $value - * - * @return mixed - */ - public static function search($value) - { - return \array_search($value, static::toArray(), true); - } - - /** - * @return string - */ - public function __toString() - { - return (string)$this->value; - } - - /** - * Determines if Enum should be considered equal with the variable passed as a parameter. - * Returns false if an argument is an object of different class or not an object. - * - * This method is final, for more information read https://github.com/myclabs/php-enum/issues/4 - * - * @return bool - */ - final public function equals($variable = null): bool - { - return $variable instanceof self - && $this->getValue() === $variable->getValue() - && \get_called_class() === \get_class($variable); - } - - /** - * Specify data which should be serialized to JSON. This method returns data that can be serialized by json_encode() - * natively. - * - * @return mixed - * @link http://php.net/manual/en/jsonserializable.jsonserialize.php - */ - public function jsonSerialize() - { - return $this->getValue(); - } -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Drive/Services/ZipStream/Option/File.php b/twake/backend/core/src/Twake/Drive/Services/ZipStream/Option/File.php deleted file mode 100755 index 5ef40798..00000000 --- a/twake/backend/core/src/Twake/Drive/Services/ZipStream/Option/File.php +++ /dev/null @@ -1,116 +0,0 @@ -<?php -declare(strict_types=1); - -namespace Twake\Drive\Services\ZipStream\Option; - -use DateTime; - -final class File -{ - /** - * @var string - */ - private $comment = ''; - /** - * @var Method - */ - private $method; - /** - * @var int - */ - private $deflateLevel; - /** - * @var DateTime - */ - private $time; - /** - * @var int - */ - private $size = 0; - - public function defaultTo(Archive $archiveOptions): void - { - $this->deflateLevel = $this->deflateLevel ?: $archiveOptions->getDeflateLevel(); - $this->time = $this->time ?: new DateTime(); - } - - /** - * @return string - */ - public function getComment(): string - { - return $this->comment; - } - - /** - * @param string $comment - */ - public function setComment(string $comment): void - { - $this->comment = $comment; - } - - /** - * @return Method - */ - public function getMethod(): Method - { - return $this->method ?: Method::DEFLATE(); - } - - /** - * @param Method $method - */ - public function setMethod(Method $method): void - { - $this->method = $method; - } - - /** - * @return int - */ - public function getDeflateLevel(): int - { - return $this->deflateLevel ?: Archive::DEFAULT_DEFLATE_LEVEL; - } - - /** - * @param int $deflateLevel - */ - public function setDeflateLevel(int $deflateLevel): void - { - $this->deflateLevel = $deflateLevel; - } - - /** - * @return DateTime - */ - public function getTime(): DateTime - { - return $this->time; - } - - /** - * @param DateTime $time - */ - public function setTime(DateTime $time): void - { - $this->time = $time; - } - - /** - * @return int - */ - public function getSize(): int - { - return $this->size; - } - - /** - * @param int $size - */ - public function setSize(int $size): void - { - $this->size = $size; - } -} diff --git a/twake/backend/core/src/Twake/Drive/Services/ZipStream/Option/Method.php b/twake/backend/core/src/Twake/Drive/Services/ZipStream/Option/Method.php deleted file mode 100755 index 5c058bc1..00000000 --- a/twake/backend/core/src/Twake/Drive/Services/ZipStream/Option/Method.php +++ /dev/null @@ -1,16 +0,0 @@ -<?php -declare(strict_types=1); - -namespace Twake\Drive\Services\ZipStream\Option; - -/** - * Methods enum - * - * @method static STORE(): Method - * @method static DEFLATE(): Method - */ -class Method extends Enum -{ - const STORE = 0x00; - const DEFLATE = 0x08; -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Drive/Services/ZipStream/Option/Version.php b/twake/backend/core/src/Twake/Drive/Services/ZipStream/Option/Version.php deleted file mode 100755 index 428013f9..00000000 --- a/twake/backend/core/src/Twake/Drive/Services/ZipStream/Option/Version.php +++ /dev/null @@ -1,19 +0,0 @@ -<?php -declare(strict_types=1); - -namespace Twake\Drive\Services\ZipStream\Option; - -/** - * Class Version - * @package ZipStream\Option - * - * @method static STORE(): Version - * @method static DEFLATE(): Version - * @method static ZIP64(): Version - */ -class Version extends Enum -{ - const STORE = 0x000A; // 1.00 - const DEFLATE = 0x0014; // 2.00 - const ZIP64 = 0x002D; // 4.50 -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Drive/Services/ZipStream/Stream.php b/twake/backend/core/src/Twake/Drive/Services/ZipStream/Stream.php deleted file mode 100755 index 74622212..00000000 --- a/twake/backend/core/src/Twake/Drive/Services/ZipStream/Stream.php +++ /dev/null @@ -1,258 +0,0 @@ -<?php -declare(strict_types=1); - -namespace Twake\Drive\Services\ZipStream; - -use RuntimeException; - -/** - * Describes a data stream. - * - * Typically, an instance will wrap a PHP stream; this interface provides - * a wrapper around the most common operations, including serialization of - * the entire stream to a string. - */ -class Stream implements StreamInterface -{ - protected $stream; - - public function __construct($stream) - { - $this->stream = $stream; - } - - public function __destruct() - { - $this->close(); - } - - /** - * Closes the stream and any underlying resources. - * - * @return void - */ - public function close(): void - { - if (is_resource($this->stream)) { - fclose($this->stream); - } - $this->detach(); - } - - /** - * Separates any underlying resources from the stream. - * - * After the stream has been detached, the stream is in an unusable state. - * - * @return resource|null Underlying PHP stream, if any - */ - public function detach() - { - $result = $this->stream; - $this->stream = null; - return $result; - } - - /** - * Reads all data from the stream into a string, from the beginning to end. - * - * This method MUST attempt to seek to the beginning of the stream before - * reading data and read the stream until the end is reached. - * - * Warning: This could attempt to load a large amount of data into memory. - * - * This method MUST NOT raise an exception in order to conform with PHP's - * string casting operations. - * - * @see http://php.net/manual/en/language.oop5.magic.php#object.tostring - * @return string - */ - public function __toString(): string - { - try { - $this->seek(0); - } catch (\RuntimeException $e) { - } - return (string)stream_get_contents($this->stream); - } - - /** - * Seek to a position in the stream. - * - * @link http://www.php.net/manual/en/function.fseek.php - * @param int $offset Stream offset - * @param int $whence Specifies how the cursor position will be calculated - * based on the seek offset. Valid values are identical to the built-in - * PHP $whence values for `fseek()`. SEEK_SET: Set position equal to - * offset bytes SEEK_CUR: Set position to current location plus offset - * SEEK_END: Set position to end-of-stream plus offset. - * @throws \RuntimeException on failure. - */ - public function seek($offset, $whence = SEEK_SET): void - { - if (!$this->isSeekable()) { - throw new RuntimeException; - } - if (fseek($this->stream, $offset, $whence) !== 0) { - throw new RuntimeException; - } - } - - /** - * Returns whether or not the stream is seekable. - * - * @return bool - */ - public function isSeekable(): bool - { - return (bool)$this->getMetadata('seekable'); - } - - /** - * Get stream metadata as an associative array or retrieve a specific key. - * - * The keys returned are identical to the keys returned from PHP's - * stream_get_meta_data() function. - * - * @link http://php.net/manual/en/function.stream-get-meta-data.php - * @param string $key Specific metadata to retrieve. - * @return array|mixed|null Returns an associative array if no key is - * provided. Returns a specific key value if a key is provided and the - * value is found, or null if the key is not found. - */ - public function getMetadata($key = null) - { - $metadata = stream_get_meta_data($this->stream); - return $key !== null ? @$metadata[$key] : $metadata; - } - - /** - * Get the size of the stream if known. - * - * @return int|null Returns the size in bytes if known, or null if unknown. - */ - public function getSize(): ?int - { - $stats = fstat($this->stream); - return $stats['size']; - } - - /** - * Returns the current position of the file read/write pointer - * - * @return int Position of the file pointer - * @throws \RuntimeException on error. - */ - public function tell(): int - { - $position = ftell($this->stream); - if ($position === false) { - throw new RuntimeException; - } - return $position; - } - - /** - * Returns true if the stream is at the end of the stream. - * - * @return bool - */ - public function eof(): bool - { - return feof($this->stream); - } - - /** - * Seek to the beginning of the stream. - * - * If the stream is not seekable, this method will raise an exception; - * otherwise, it will perform a seek(0). - * - * @see seek() - * @link http://www.php.net/manual/en/function.fseek.php - * @throws \RuntimeException on failure. - */ - public function rewind(): void - { - $this->seek(0); - } - - /** - * Write data to the stream. - * - * @param string $string The string that is to be written. - * @return int Returns the number of bytes written to the stream. - * @throws \RuntimeException on failure. - */ - public function write($string): int - { - if (!$this->isWritable()) { - throw new RuntimeException; - } - if (fwrite($this->stream, $string) === false) { - throw new RuntimeException; - } - return \mb_strlen($string); - } - - /** - * Returns whether or not the stream is writable. - * - * @return bool - */ - public function isWritable(): bool - { - return preg_match('/[waxc+]/', $this->getMetadata('mode')) === 1; - } - - /** - * Read data from the stream. - * - * @param int $length Read up to $length bytes from the object and return - * them. Fewer than $length bytes may be returned if underlying stream - * call returns fewer bytes. - * @return string Returns the data read from the stream, or an empty string - * if no bytes are available. - * @throws \RuntimeException if an error occurs. - */ - public function read($length): string - { - if (!$this->isReadable()) { - throw new RuntimeException; - } - $result = fread($this->stream, $length); - if ($result === false) { - throw new RuntimeException; - } - return $result; - } - - /** - * Returns whether or not the stream is readable. - * - * @return bool - */ - public function isReadable(): bool - { - return preg_match('/[r+]/', $this->getMetadata('mode')) === 1; - } - - /** - * Returns the remaining contents in a string - * - * @return string - * @throws \RuntimeException if unable to read or an error occurs while - * reading. - */ - public function getContents(): string - { - if (!$this->isReadable()) { - throw new RuntimeException; - } - $result = stream_get_contents($this->stream); - if ($result === false) { - throw new RuntimeException; - } - return $result; - } -} diff --git a/twake/backend/core/src/Twake/Drive/Services/ZipStream/StreamInterface.php b/twake/backend/core/src/Twake/Drive/Services/ZipStream/StreamInterface.php deleted file mode 100755 index f3d962d9..00000000 --- a/twake/backend/core/src/Twake/Drive/Services/ZipStream/StreamInterface.php +++ /dev/null @@ -1,157 +0,0 @@ -<?php - -namespace Twake\Drive\Services\ZipStream; -/** - * Describes a data stream. - * - * Typically, an instance will wrap a PHP stream; this interface provides - * a wrapper around the most common operations, including serialization of - * the entire stream to a string. - */ -interface StreamInterface -{ - /** - * Reads all data from the stream into a string, from the beginning to end. - * - * This method MUST attempt to seek to the beginning of the stream before - * reading data and read the stream until the end is reached. - * - * Warning: This could attempt to load a large amount of data into memory. - * - * This method MUST NOT raise an exception in order to conform with PHP's - * string casting operations. - * - * @see http://php.net/manual/en/language.oop5.magic.php#object.tostring - * @return string - */ - public function __toString(); - - /** - * Closes the stream and any underlying resources. - * - * @return void - */ - public function close(); - - /** - * Separates any underlying resources from the stream. - * - * After the stream has been detached, the stream is in an unusable state. - * - * @return resource|null Underlying PHP stream, if any - */ - public function detach(); - - /** - * Get the size of the stream if known. - * - * @return int|null Returns the size in bytes if known, or null if unknown. - */ - public function getSize(); - - /** - * Returns the current position of the file read/write pointer - * - * @return int Position of the file pointer - * @throws \RuntimeException on error. - */ - public function tell(); - - /** - * Returns true if the stream is at the end of the stream. - * - * @return bool - */ - public function eof(); - - /** - * Returns whether or not the stream is seekable. - * - * @return bool - */ - public function isSeekable(); - - /** - * Seek to a position in the stream. - * - * @link http://www.php.net/manual/en/function.fseek.php - * @param int $offset Stream offset - * @param int $whence Specifies how the cursor position will be calculated - * based on the seek offset. Valid values are identical to the built-in - * PHP $whence values for `fseek()`. SEEK_SET: Set position equal to - * offset bytes SEEK_CUR: Set position to current location plus offset - * SEEK_END: Set position to end-of-stream plus offset. - * @throws \RuntimeException on failure. - */ - public function seek($offset, $whence = SEEK_SET); - - /** - * Seek to the beginning of the stream. - * - * If the stream is not seekable, this method will raise an exception; - * otherwise, it will perform a seek(0). - * - * @see seek() - * @link http://www.php.net/manual/en/function.fseek.php - * @throws \RuntimeException on failure. - */ - public function rewind(); - - /** - * Returns whether or not the stream is writable. - * - * @return bool - */ - public function isWritable(); - - /** - * Write data to the stream. - * - * @param string $string The string that is to be written. - * @return int Returns the number of bytes written to the stream. - * @throws \RuntimeException on failure. - */ - public function write($string); - - /** - * Returns whether or not the stream is readable. - * - * @return bool - */ - public function isReadable(); - - /** - * Read data from the stream. - * - * @param int $length Read up to $length bytes from the object and return - * them. Fewer than $length bytes may be returned if underlying stream - * call returns fewer bytes. - * @return string Returns the data read from the stream, or an empty string - * if no bytes are available. - * @throws \RuntimeException if an error occurs. - */ - public function read($length); - - /** - * Returns the remaining contents in a string - * - * @return string - * @throws \RuntimeException if unable to read or an error occurs while - * reading. - */ - public function getContents(); - - /** - * Get stream metadata as an associative array or retrieve a specific key. - * - * The keys returned are identical to the keys returned from PHP's - * stream_get_meta_data() function. - * - * @link http://php.net/manual/en/function.stream-get-meta-data.php - * @param string $key Specific metadata to retrieve. - * @return array|mixed|null Returns an associative array if no key is - * provided. Returns a specific key value if a key is provided and the - * value is found, or null if the key is not found. - */ - public function getMetadata($key = null); -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Drive/Services/ZipStream/TwakeFileStream.php b/twake/backend/core/src/Twake/Drive/Services/ZipStream/TwakeFileStream.php deleted file mode 100755 index a37c340f..00000000 --- a/twake/backend/core/src/Twake/Drive/Services/ZipStream/TwakeFileStream.php +++ /dev/null @@ -1,214 +0,0 @@ -<?php -declare(strict_types=1); - -namespace Twake\Drive\Services\ZipStream; - -use RuntimeException; - -//class TwakeFileStream extends Stream -class TwakeFileStream implements StreamInterface -{ - - private $manager; - private $param_bag; - private $uploadstate; - - private $totalchunk; - private $current_chunk; - private $stream; - - public function __construct($manager, $param_bag, $uploadstate) - { - $this->manager = $manager; - $this->param_bag = $param_bag; - $this->uploadstate = $uploadstate; - $this->current_chunk = 1; - $this->totalchunk = $this->uploadstate->getChunk(); - $this->stream = $this->manager->read("original_stream", $this->current_chunk, $this->param_bag, $this->uploadstate); - - } - - public function __destruct() - { - $this->close(); - } - - public function close() - { - if (is_resource($this->stream)) { - fclose($this->stream); - } - $this->detach(); - - } - - public function detach() - { - $result = $this->stream; - $this->stream = null; - return $result; - } - - public function __toString() - { - - if (!$this->stream) { - return ""; - } - - try { - $this->seek(0); - } catch (\RuntimeException $e) { - } - return (string)stream_get_contents($this->stream); - - } - - public function seek($offset, $whence = SEEK_SET) - { - if (!$this->stream) { - return; - } - if (!$this->isSeekable()) { - throw new RuntimeException; - } - if (fseek($this->stream, $offset, $whence) !== 0) { - throw new RuntimeException; - } - - } - - public function isSeekable() - { - return (bool)$this->getMetadata('seekable'); - - } - - public function getMetadata($key = null) - { - if (!$this->stream) { - return Array(); - } - $metadata = stream_get_meta_data($this->stream); - return $key !== null ? @$metadata[$key] : $metadata; - } - - public function getSize() - { - if (!$this->stream) { - return 0; - } - $stats = fstat($this->stream); - return $stats['size'] + 1; - } - - public function tell() - { - if (!$this->stream) { - return 0; - } - - $position = ftell($this->stream); - if ($position === false) { - throw new RuntimeException; - } - return $position; - - } - - public function rewind() - { - if (!$this->stream) { - return; - } - $this->seek(0); - $this->current_chunk = 1; - $this->manager->read("original_stream", $this->current_chunk, $this->param_bag, $this->uploadstate); - - } - - public function isWritable() - { - return false; - } - - public function write($string) - { - return false; - } - - public function getContents() - { - if (!$this->stream) { - return ""; - } - if (!$this->isReadable()) { - throw new RuntimeException; - } - $result = stream_get_contents($this->stream); - if ($result === false) { - throw new RuntimeException; - } - return $result; - } - - public function isReadable() - { - return true; - } - - public function read($length) - { - if (!$this->stream) { - return ""; - } - - //error_log(print_r(stream_get_meta_data($this->stream),true)); - $retour = fread($this->stream, $length); - if ($retour === false) { - throw new RuntimeException; - } - if ($this->eof()) { - if ($this->current_chunk < $this->totalchunk) { - //todo : probleme avec les close des stream des differents chunk -// try{ -// fclose($this->stream); -// }catch (\Exception $e) { -// error_log($e->getTraceAsString()); -// error_log($e->getMessage()); -// die("ERROR with fclose"); -// } - $path = realpath(stream_get_meta_data($this->stream)["uri"]); - $valid = preg_match("/\/tmp\/.*/", $path); - if (file_exists($path) && !is_dir($path) && $valid) { - error_log(print_r($path, true)); - @unlink($path); - } - - $this->current_chunk = $this->current_chunk + 1; - $this->stream = $this->manager->read("original_stream", $this->current_chunk, $this->param_bag, $this->uploadstate); - - if ($length - strlen($retour) > 0) { - $retour = $retour . $this->read($length - strlen($retour)); - } - } else { - $path = stream_get_meta_data($this->stream)["uri"]; - $valid = preg_match("/\/tmp\/.*/", $path); - if (file_exists($path) && !is_dir($path) && $valid) { - error_log(print_r($path, true)); - @unlink($path); - } - //fclose($this->stream); - } - } - return $retour; - } - - public function eof() - { - if (!$this->stream) { - return true; - } - return feof($this->stream); - } -} diff --git a/twake/backend/core/src/Twake/Drive/Services/ZipStream/ZipStream.php b/twake/backend/core/src/Twake/Drive/Services/ZipStream/ZipStream.php deleted file mode 100755 index b1abc5ec..00000000 --- a/twake/backend/core/src/Twake/Drive/Services/ZipStream/ZipStream.php +++ /dev/null @@ -1,595 +0,0 @@ -<?php -declare(strict_types=1); - -namespace Twake\Drive\Services\ZipStream; - -use Twake\Drive\Services\ZipStream\Exception\OverflowException; -use Twake\Drive\Services\ZipStream\Option\Archive as ArchiveOptions; -use Twake\Drive\Services\ZipStream\Option\File as FileOptions; -use Twake\Drive\Services\ZipStream\Option\Version; - -/** - * ZipStream - * - * Streamed, dynamically generated zip archives. - * - * Usage: - * - * Streaming zip archives is a simple, three-step process: - * - * 1. Create the zip stream: - * - * $zip = new ZipStream('example.zip'); - * - * 2. Add one or more files to the archive: - * - * * add first file - * $data = file_get_contents('some_file.gif'); - * $zip->addFile('some_file.gif', $data); - * - * * add second file - * $data = file_get_contents('some_file.gif'); - * $zip->addFile('another_file.png', $data); - * - * 3. Finish the zip stream: - * - * $zip->finish(); - * - * You can also add an archive comment, add comments to individual files, - * and adjust the timestamp of files. See the API documentation for each - * method below for additional information. - * - * Example: - * - * // create a new zip stream object - * $zip = new ZipStream('some_files.zip'); - * - * // list of local files - * $files = array('foo.txt', 'bar.jpg'); - * - * // read and add each file to the archive - * foreach ($files as $path) - * $zip->addFile($path, file_get_contents($path)); - * - * // write archive footer to stream - * $zip->finish(); - */ -class ZipStream -{ - /** - * This number corresponds to the ZIP version/OS used (2 bytes) - * From: https://www.iana.org/assignments/media-types/application/zip - * The upper byte (leftmost one) indicates the host system (OS) for the - * file. Software can use this information to determine - * the line record format for text files etc. The current - * mappings are: - * - * 0 - MS-DOS and OS/2 (F.A.T. file systems) - * 1 - Amiga 2 - VAX/VMS - * 3 - *nix 4 - VM/CMS - * 5 - Atari ST 6 - OS/2 H.P.F.S. - * 7 - Macintosh 8 - Z-System - * 9 - CP/M 10 thru 255 - unused - * - * The lower byte (rightmost one) indicates the version number of the - * software used to encode the file. The value/10 - * indicates the major version number, and the value - * mod 10 is the minor version number. - * Here we are using 6 for the OS, indicating OS/2 H.P.F.S. - * to prevent file permissions issues upon extract (see #84) - * 0x603 is 00000110 00000011 in binary, so 6 and 3 - */ - const ZIP_VERSION_MADE_BY = 0x603; - - /** - * The following signatures end with 0x4b50, which in ASCII is PK, - * the initials of the inventor Phil Katz. - * See https://en.wikipedia.org/wiki/Zip_(file_format)#File_headers - */ - const FILE_HEADER_SIGNATURE = 0x04034b50; - const CDR_FILE_SIGNATURE = 0x02014b50; - const CDR_EOF_SIGNATURE = 0x06054b50; - const DATA_DESCRIPTOR_SIGNATURE = 0x08074b50; - const ZIP64_CDR_EOF_SIGNATURE = 0x06064b50; - const ZIP64_CDR_LOCATOR_SIGNATURE = 0x07064b50; - - /** - * Global Options - * - * @var ArchiveOptions - */ - public $opt; - - /** - * @var array - */ - public $files = []; - - /** - * @var Bigint - */ - public $cdr_ofs; - - /** - * @var Bigint - */ - public $ofs; - - /** - * @var bool - */ - protected $need_headers; - - /** - * @var null|String - */ - protected $output_name; - - /** - * Create a new ZipStream object. - * - * Parameters: - * - * @param String $name - Name of output file (optional). - * @param ArchiveOptions $opt - Archive Options - * - * Large File Support: - * - * By default, the method addFileFromPath() will send send files - * larger than 20 megabytes along raw rather than attempting to - * compress them. You can change both the maximum size and the - * compression behavior using the largeFile* options above, with the - * following caveats: - * - * * For "small" files (e.g. files smaller than largeFileSize), the - * memory use can be up to twice that of the actual file. In other - * words, adding a 10 megabyte file to the archive could potentially - * occupy 20 megabytes of memory. - * - * * Enabling compression on large files (e.g. files larger than - * large_file_size) is extremely slow, because ZipStream has to pass - * over the large file once to calculate header information, and then - * again to compress and send the actual data. - * - * Examples: - * - * // create a new zip file named 'foo.zip' - * $zip = new ZipStream('foo.zip'); - * - * // create a new zip file named 'bar.zip' with a comment - * $opt->setComment = 'this is a comment for the zip file.'; - * $zip = new ZipStream('bar.zip', $opt); - * - * Notes: - * - * In order to let this library send HTTP headers, a filename must be given - * _and_ the option `sendHttpHeaders` must be `true`. This behavior is to - * allow software to send its own headers (including the filename), and - * still use this library. - */ - public function __construct(?string $name = null, $opt = null) - { - $this->opt = $opt ?: new ArchiveOptions(); - - $this->output_name = $name; - $this->need_headers = $name && $this->opt->isSendHttpHeaders(); - - $this->cdr_ofs = new Bigint(); - $this->ofs = new Bigint(); - } - - /** - * addFile - * - * Add a file to the archive. - * - * @param String $name - path of file in archive (including directory). - * @param String $data - contents of file - * @param FileOptions $options - * - * File Options: - * time - Last-modified timestamp (seconds since the epoch) of - * this file. Defaults to the current time. - * comment - Comment related to this file. - * method - Storage method for file ("store" or "deflate") - * - * Examples: - * - * // add a file named 'foo.txt' - * $data = file_get_contents('foo.txt'); - * $zip->addFile('foo.txt', $data); - * - * // add a file named 'bar.jpg' with a comment and a last-modified - * // time of two hours ago - * $data = file_get_contents('bar.jpg'); - * $opt->setTime = time() - 2 * 3600; - * $opt->setComment = 'this is a comment about bar.jpg'; - * $zip->addFile('bar.jpg', $data, $opt); - */ - public function addFile(string $name, string $data, ?FileOptions $options = null): void - { - $options = $options ?: new FileOptions(); - $options->defaultTo($this->opt); - - $file = new File($this, $name, $options); - $file->processData($data); - } - - /** - * addFileFromPath - * - * Add a file at path to the archive. - * - * Note that large files may be compressed differently than smaller - * files; see the "Large File Support" section above for more - * information. - * - * @param String $name - name of file in archive (including directory path). - * @param String $path - path to file on disk (note: paths should be encoded using - * UNIX-style forward slashes -- e.g '/path/to/some/file'). - * @param FileOptions $options - * - * File Options: - * time - Last-modified timestamp (seconds since the epoch) of - * this file. Defaults to the current time. - * comment - Comment related to this file. - * method - Storage method for file ("store" or "deflate") - * - * Examples: - * - * // add a file named 'foo.txt' from the local file '/tmp/foo.txt' - * $zip->addFileFromPath('foo.txt', '/tmp/foo.txt'); - * - * // add a file named 'bigfile.rar' from the local file - * // '/usr/share/bigfile.rar' with a comment and a last-modified - * // time of two hours ago - * $path = '/usr/share/bigfile.rar'; - * $opt->setTime = time() - 2 * 3600; - * $opt->setComment = 'this is a comment about bar.jpg'; - * $zip->addFileFromPath('bigfile.rar', $path, $opt); - * - * @return void - * @throws \ZipStream\Exception\FileNotFoundException - * @throws \ZipStream\Exception\FileNotReadableException - */ - public function addFileFromPath(string $name, string $path, ?FileOptions $options = null): void - { - $options = $options ?: new FileOptions(); - $options->defaultTo($this->opt); - - $file = new File($this, $name, $options); - $file->processPath($path); - } - - /** - * addFileFromStream - * - * Add an open stream to the archive. - * - * @param String $name - path of file in archive (including directory). - * @param Resource $stream - contents of file as a stream resource - * @param FileOptions $options - * - * File Options: - * time - Last-modified timestamp (seconds since the epoch) of - * this file. Defaults to the current time. - * comment - Comment related to this file. - * - * Examples: - * - * // create a temporary file stream and write text to it - * $fp = tmpfile(); - * fwrite($fp, 'The quick brown fox jumped over the lazy dog.'); - * - * // add a file named 'streamfile.txt' from the content of the stream - * $x->addFileFromStream('streamfile.txt', $fp); - * - * @return void - */ - public function addFileFromStream(string $name, $stream, $options = null): void - { - $options = $options ?: new FileOptions(); - $options->defaultTo($this->opt); - - $file = new File($this, $name, $options); - - $file->processStream(new DeflateStream($stream)); - } - - /** - * addFileFromPsr7Stream - * - * Add an open stream to the archive. - * - * @param String $name - path of file in archive (including directory). - * @param StreamInterface $stream - contents of file as a stream resource - * @param FileOptions $options - * - * File Options: - * time - Last-modified timestamp (seconds since the epoch) of - * this file. Defaults to the current time. - * comment - Comment related to this file. - * - * Examples: - * - * // create a temporary file stream and write text to it - * $fp = tmpfile(); - * fwrite($fp, 'The quick brown fox jumped over the lazy dog.'); - * - * // add a file named 'streamfile.txt' from the content of the stream - * $x->addFileFromPsr7Stream('streamfile.txt', $fp); - * - * @return void - */ - - public function addFileFromPsr7Stream( - string $name, - StreamInterface $stream, - ?FileOptions $options = null - ): void - { - $options = $options ?: new FileOptions(); - $options->defaultTo($this->opt); - - $file = new File($this, $name, $options); - $file->processStream($stream); - } - - /** - * finish - * - * Write zip footer to stream. - * - * Example: - * - * // add a list of files to the archive - * $files = array('foo.txt', 'bar.jpg'); - * foreach ($files as $path) - * $zip->addFile($path, file_get_contents($path)); - * - * // write footer to stream - * $zip->finish(); - * @return void - * - * @throws OverflowException - */ - public function finish(): void - { - // add trailing cdr file records - foreach ($this->files as $cdrFile) { - $this->send($cdrFile); - $this->cdr_ofs = $this->cdr_ofs->add(Bigint::init(strlen($cdrFile))); - } - - // Add 64bit headers (if applicable) - if (count($this->files) >= 0xFFFF || - $this->cdr_ofs->isOver32() || - $this->ofs->isOver32()) { - if (!$this->opt->isEnableZip64()) { - throw new OverflowException(); - } - - $this->addCdr64Eof(); - $this->addCdr64Locator(); - } - - // add trailing cdr eof record - $this->addCdrEof(); - - // The End - $this->clear(); - } - - /** - * Send string, sending HTTP headers if necessary. - * Flush output after write if configure option is set. - * - * @param String $str - * @return void - */ - public function send(string $str): void - { - if ($this->need_headers) { - $this->sendHttpHeaders(); - } - $this->need_headers = false; - - fwrite($this->opt->getOutputStream(), $str); - - if ($this->opt->isFlushOutput()) { - flush(); - ob_flush(); - } - } - - /** - * Send HTTP headers for this stream. - * - * @return void - */ - protected function sendHttpHeaders(): void - { - // grab content disposition - $disposition = $this->opt->getContentDisposition(); - - if ($this->output_name) { - // Various different browsers dislike various characters here. Strip them all for safety. - $safe_output = trim(str_replace(['"', "'", '\\', ';', "\n", "\r"], '', $this->output_name)); - - // Check if we need to UTF-8 encode the filename - $urlencoded = rawurlencode($safe_output); - $disposition .= "; filename*=UTF-8''{$urlencoded}"; - } - - $headers = array( - 'Content-Type' => $this->opt->getContentType(), - 'Content-Disposition' => $disposition, - 'Pragma' => 'public', - 'Cache-Control' => 'public, must-revalidate', - 'Content-Transfer-Encoding' => 'binary' - ); - - $call = $this->opt->getHttpHeaderCallback(); - foreach ($headers as $key => $val) { - $call("$key: $val"); - } - } - - /** - * Send ZIP64 CDR EOF (Central Directory Record End-of-File) record. - * - * @return void - */ - protected function addCdr64Eof(): void - { - $num_files = count($this->files); - $cdr_length = $this->cdr_ofs; - $cdr_offset = $this->ofs; - - $fields = [ - ['V', static::ZIP64_CDR_EOF_SIGNATURE], // ZIP64 end of central file header signature - ['P', 44], // Length of data below this header (length of block - 12) = 44 - ['v', static::ZIP_VERSION_MADE_BY], // Made by version - ['v', Version::ZIP64], // Extract by version - ['V', 0x00], // disk number - ['V', 0x00], // no of disks - ['P', $num_files], // no of entries on disk - ['P', $num_files], // no of entries in cdr - ['P', $cdr_length], // CDR size - ['P', $cdr_offset], // CDR offset - ]; - - $ret = static::packFields($fields); - $this->send($ret); - } - - /** - * Create a format string and argument list for pack(), then call - * pack() and return the result. - * - * @param array $fields - * @return string - */ - public static function packFields(array $fields): string - { - $fmt = ''; - $args = []; - - // populate format string and argument list - foreach ($fields as [$format, $value]) { - if ($format === 'P') { - $fmt .= 'VV'; - if ($value instanceof Bigint) { - $args[] = $value->getLow32(); - $args[] = $value->getHigh32(); - } else { - $args[] = $value; - $args[] = 0; - } - } else { - if ($value instanceof Bigint) { - $value = $value->getLow32(); - } - $fmt .= $format; - $args[] = $value; - } - } - - // prepend format string to argument list - array_unshift($args, $fmt); - - // build output string from header and compressed data - return pack(...$args); - } - - /** - * Send ZIP64 CDR Locator (Central Directory Record Locator) record. - * - * @return void - */ - protected function addCdr64Locator(): void - { - $cdr_offset = $this->ofs->add($this->cdr_ofs); - - $fields = [ - ['V', static::ZIP64_CDR_LOCATOR_SIGNATURE], // ZIP64 end of central file header signature - ['V', 0x00], // Disc number containing CDR64EOF - ['P', $cdr_offset], // CDR offset - ['V', 1], // Total number of disks - ]; - - $ret = static::packFields($fields); - $this->send($ret); - } - - /** - * Send CDR EOF (Central Directory Record End-of-File) record. - * - * @return void - */ - protected function addCdrEof(): void - { - $num_files = count($this->files); - $cdr_length = $this->cdr_ofs; - $cdr_offset = $this->ofs; - - // grab comment (if specified) - $comment = $this->opt->getComment(); - - $fields = [ - ['V', static::CDR_EOF_SIGNATURE], // end of central file header signature - ['v', 0x00], // disk number - ['v', 0x00], // no of disks - ['v', min($num_files, 0xFFFF)], // no of entries on disk - ['v', min($num_files, 0xFFFF)], // no of entries in cdr - ['V', $cdr_length->getLowFF()], // CDR size - ['V', $cdr_offset->getLowFF()], // CDR offset - ['v', strlen($comment)], // Zip Comment size - ]; - - $ret = static::packFields($fields) . $comment; - $this->send($ret); - } - - /** - * Clear all internal variables. Note that the stream object is not - * usable after this. - * - * @return void - */ - protected function clear(): void - { - $this->files = []; - $this->ofs = new Bigint(); - $this->cdr_ofs = new Bigint(); - $this->opt = new ArchiveOptions(); - } - - /** - * Is this file larger than large_file_size? - * - * @param string $path - * @return bool - */ - public function isLargeFile(string $path): bool - { - if (!$this->opt->isStatFiles()) { - return false; - } - $stat = stat($path); - return $stat['size'] > $this->opt->getLargeFileSize(); - } - - /** - * Save file attributes for trailing CDR record. - * - * @param File $file - * @return void - */ - public function addToCdr(File $file): void - { - $file->ofs = $this->ofs; - $this->ofs = $this->ofs->add($file->getTotalLength()); - $this->files[] = $file->getCdrFile(); - } -} diff --git a/twake/backend/core/src/Twake/GlobalSearch/Bundle.php b/twake/backend/core/src/Twake/GlobalSearch/Bundle.php deleted file mode 100755 index 7691b8c6..00000000 --- a/twake/backend/core/src/Twake/GlobalSearch/Bundle.php +++ /dev/null @@ -1,30 +0,0 @@ -<?php - -namespace Twake\GlobalSearch; - -require_once __DIR__ . "/Resources/Routing.php"; -require_once __DIR__ . "/Resources/Services.php"; - -use Twake\GlobalSearch\Resources\Routing; -use Twake\GlobalSearch\Resources\Services; -use Common\BaseBundle; - -class Bundle extends BaseBundle -{ - - protected $bundle_root = __DIR__; - protected $bundle_namespace = __NAMESPACE__; - protected $routes = []; - protected $services = []; - - public function init() - { - $routing = new Routing(); - $this->routes = $routing->getRoutes(); - $this->routing_prefix = $routing->getRoutesPrefix(); - $this->initRoutes(); - - $this->services = (new Services())->getServices(); - $this->initServices(); - } -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/GlobalSearch/Controller/GlobalSearch.php b/twake/backend/core/src/Twake/GlobalSearch/Controller/GlobalSearch.php deleted file mode 100755 index e2c7e2a3..00000000 --- a/twake/backend/core/src/Twake/GlobalSearch/Controller/GlobalSearch.php +++ /dev/null @@ -1,131 +0,0 @@ -<?php - - -namespace Twake\GlobalSearch\Controller; - -use Common\BaseController; -use Common\Http\Response; -use Common\Http\Request; - -class GlobalSearch extends BaseController -{ - - public function QuickSearch(Request $request) - { - - $current_user = $this->getUser(); - $words = $identifier = $request->request->get("words"); - $group_id = $request->request->get("group_id"); - $workspace_id = $request->request->get("workspace_id"); - $current_user_id = $current_user->getId(); - - $globalresult = $this->get('globalsearch.quicksearch')->QuickSearch($current_user_id, $words, $group_id, $workspace_id); - - $this->get("administration.counter")->incrementCounter("total_quicksearch", 1); - - $data = Array("data" => $globalresult); - return new Response($data); - - } - - public function AdvancedBloc(Request $request) - { - - $scroll_id = $request->request->get("scroll_id"); - $repository = "Twake\GlobalSearch:Bloc"; - - $options = $request->request->get("options"); - $channels = $options["channel_id"] ?: $request->request->get("channel_id"); - - if (isset($scroll_id) && isset($repository)) { - $options["scroll_id"] = $scroll_id; - } - - $current_user = $this->getUser(); - $current_user_id = $current_user->getId(); - - $options["words"] = $options["words"] ? $options["words"] : $request->request->get("words"); - - $globalresult = $this->get('globalsearch.advancedbloc')->AdvancedBloc($current_user_id, $options, $channels); - - $this->get("administration.counter")->incrementCounter("total_search", 1); - - $data = Array("data" => $globalresult); - return new Response($data); - } - - public function AdvancedFile(Request $request) - { - - $scroll_id = $request->request->get("scroll_id"); - $repository = "Twake\GlobalSearch:Bloc"; - - - $options = $request->request->get("options"); - $workspaces = $request->request->get("workspace_id"); - - if (isset($scroll_id) && isset($repository)) { - $options["scroll_id"] = $scroll_id; - } - - $current_user = $this->getUser(); - $current_user_id = $current_user->getId(); - - $options["name"] = $options["name"] ? $options["name"] : join(" ", $request->request->get("words")); - - $globalresult = $this->get('globalsearch.advancedfile')->AdvancedFile($current_user_id, $options, $workspaces); - - $data = Array("data" => $globalresult); - return new Response($data); - } - - public function AdvancedTask(Request $request) - { - - $scroll_id = $request->request->get("scroll_id"); - $repository = "Twake\Tasks:Task"; - - - $options = $request->request->get("options"); - $workspaces = $request->request->get("workspace_id"); - - if (isset($scroll_id) && isset($repository)) { - $options["scroll_id"] = $scroll_id; - } - - $current_user = $this->getUser(); - $current_user_id = $current_user->getId(); - - $options["name"] = $options["name"] ? $options["name"] : join(" ", $request->request->get("words")); - - $globalresult = $this->get('globalsearch.advancedtask')->AdvancedTask($current_user_id, $options, $workspaces); - - $data = Array("data" => $globalresult); - return new Response($data); - } - - public function AdvancedEvent(Request $request) - { - - $scroll_id = $request->request->get("scroll_id"); - $repository = "Twake\Calendar:Event"; - - $options = $request->request->get("options"); - $workspaces = $request->request->get("workspace_id"); - - if (isset($scroll_id) && isset($repository)) { - $options["scroll_id"] = $scroll_id; - } - - $current_user = $this->getUser(); - $current_user_id = $current_user->getId(); - - $options["name"] = $options["name"] ? $options["name"] : join(" ", $request->request->get("words")); - - $globalresult = $this->get('globalsearch.advancedevent')->AdvancedEvent($current_user_id, $options, $workspaces); - - $data = Array("data" => $globalresult); - return new Response($data); - } - -} diff --git a/twake/backend/core/src/Twake/GlobalSearch/Controller/Tag.php b/twake/backend/core/src/Twake/GlobalSearch/Controller/Tag.php deleted file mode 100755 index 359756f9..00000000 --- a/twake/backend/core/src/Twake/GlobalSearch/Controller/Tag.php +++ /dev/null @@ -1,51 +0,0 @@ -<?php - -namespace Twake\GlobalSearch\Controller; - -use Common\BaseController; -use Common\Http\Response; -use Common\Http\Request; - -class Tag extends BaseController -{ - - public function remove(Request $request) - { - $options = $request->request->get("options"); - $object = $request->request->get("object"); - - $res = $this->get("globalsearch.tag")->remove($object, $options, $this->getUser()); - if (!$res) { - return new Response(Array("status" => "error")); - } - return new Response(Array("data" => Array("object" => $res))); - } - - public function save(Request $request) - { - $options = $request->request->get("options"); - $object = $request->request->get("object"); - - $res = $this->get("globalsearch.tag")->save($object, $options, $this->getUser(), Array()); - - if (!$res) { - return new Response(Array("status" => "error")); - } - return new Response(Array("data" => Array("object" => $res))); - - - } - - public function getAction(Request $request) - { - $options = $request->request->get("options"); - $objects = $this->get("globalsearch.tag")->get($options, $this->getUser()); - - if ($objects === false) { - return new Response(Array("status" => "error")); - } - return new Response(Array("data" => $objects)); - } - -} - diff --git a/twake/backend/core/src/Twake/GlobalSearch/Entity/Bloc.php b/twake/backend/core/src/Twake/GlobalSearch/Entity/Bloc.php deleted file mode 100755 index f5af8241..00000000 --- a/twake/backend/core/src/Twake/GlobalSearch/Entity/Bloc.php +++ /dev/null @@ -1,308 +0,0 @@ -<?php - - -namespace Twake\GlobalSearch\Entity; - -use Doctrine\ORM\Mapping as ORM; - -use Twake\Core\Entity\SearchableObject; - -/** - * Bloc - * - * @ORM\Table(name="bloc",options={"engine":"MyISAM", "scylladb_keys": {{"workspace_id": "ASC", "channel_id": "ASC", "id": "DESC"}, {"channel_id": "ASC"} , {"id": "ASC"} } }) - * @ORM\Entity() - */ -class Bloc extends SearchableObject -{ - - protected $es_type = "message_bloc"; - - /** - * @var int - * - * @ORM\Column(name="id", type="twake_timeuuid") - * @ORM\Id - */ - protected $id; - /** - * @ORM\Column(name="workspace_id", type="twake_timeuuid") - * @ORM\Id - */ - protected $workspace_id; - /** - * @ORM\Column(name="channel_id", type="twake_uuid") - * @ORM\Id - */ - protected $channel_id; - - /** - * @ORM\Column(name ="nb_message", type="integer", nullable=true) - */ - protected $nb_message = 0; - - /** - * @ORM\Column(name ="messages", type="twake_text", nullable=true) - */ - protected $messages; - - /** - * @ORM\Column(name ="id_messages", type="twake_text", nullable=true) - */ - protected $id_messages; - - /** - * @ORM\Column(name ="lock", type="twake_boolean") - */ - protected $lock = false; - - - /** - * Bloc constructor. - * @param string $workspace_id - * @param string $channel_id - * @param int $nb_message - * @param $content_keywords - */ - public function __construct($workspace_id, $channel_id, $messages, $id_messages) - { - $this->workspace_id = $workspace_id; - $this->channel_id = $channel_id; - $this->messages = json_encode($messages); - $this->id_messages = json_encode($id_messages); - } - - - public function getAsArray() - { - $return = Array( - "id" => $this->getId(), - "channel_id" => $this->getChannelId(), - "workspace_id" => $this->getWorkspaceId(), - "nb_message" => $this->getNbMessage(), - "messages" => $this->getMessages(), - "id_messages" => $this->getIdMessages() - - ); - return $return; - } - - public function getIndexationArray() - { - if ($this->getLock() == true) { - $return = Array( - "id" => $this->getId() . "", - "channel_id" => $this->getChannelId(), - "workspace_id" => $this->getWorkspaceId(), - "messages" => $this->getMessages() - ); - } else - $return = Array(); - return $return; - } - - /** - * @return mixed - */ - public function getIdMessages() - { - return json_decode($this->id_messages, true); - } - - - /** - * @param mixed $id_messages - */ - public function setIdMessages($id_messages) - { - $this->id_messages = json_encode($id_messages); - } - - /** - * @return string - */ - public function getEsType() - { - return $this->es_type; - } - - /** - * @return mixed - */ - public function getMessages() - { - return json_decode($this->messages, true); - } - - /** - * @param mixed $messages - */ - public function setMessages($messages) - { - $this->messages = json_encode($messages); - } - - /** - * @return int - */ - public function getId() - { - return $this->id; - } - - /** - * @param int $id - */ - public function setId($id) - { - $this->id = $id; - } - - /** - * @return mixed - */ - public function getLock() - { - return $this->lock; - } - - /** - * @param mixed $lock - */ - public function setLock($lock) - { - $this->lock = $lock; - } - - /** - * @return mixed - */ - public function getWorkspaceId() - { - return $this->workspace_id; - } - - /** - * @param mixed $workspace_id - */ - public function setWorkspaceId($workspace_id) - { - $this->workspace_id = $workspace_id; - } - - /** - * @return mixed - */ - public function getChannelId() - { - return $this->channel_id; - } - - /** - * @param mixed $channel_id - */ - public function setChannelId($channel_id) - { - $this->channel_id = $channel_id; - } - - /** - * @return mixed - */ - public function getNbMessage() - { - return $this->nb_message; - } - - /** - * @param mixed $nb_message - */ - public function setNbMessage($nb_message) - { - $this->nb_message = $nb_message; - } - - public function removeMessage($message_id) - { - $messages = $this->getMessages(); - if (!$messages) { - $messages = Array(); - } - - $id_messages = Array(); - $new_messages = Array(); - foreach ($messages as $index => $message) { - if ($message) { - if ($message["id"] != $message_id) { - $new_messages[] = $message; - $id_messages[] = $message["id"]; - } - } - } - - $this->setNbMessage(count($messages)); - $this->setMessages($messages); - $this->setIdMessages($id_messages); - - } - - public function addOrUpdateMessage($message, $content, $content_id) - { - - if (!$message) { - return false; - } - - $messages = $this->getMessages(); - if (!$messages) { - $messages = Array(); - } - - $id_messages = Array(); - $message_exists = -1; - foreach ($messages as $index => $m) { - if ($m) { - $id_messages[] = $m["id"]; - if ($m["id"] == $message->getId()) { - $message_exists = $index; - } - } - } - - $reactions_tmp = $message->getReactions(); - $reactions = Array(); - foreach ($reactions_tmp as $reaction => $count) { - $reactions[] = $reaction; - } - - preg_match_all("/\w*-\w*-\w*-\w*-\w*/i", $content_id, $mentions_matches); - $mentions_matches = $mentions_matches[0]; - $mentions_matches = array_unique($mentions_matches); - - $formatted_message = Array( - "id" => $message->getId(), - "mentions" => $mentions_matches, - "reactions" => $reactions, - "content" => $content, - "sender" => $message->getSender() ? $message->getSender()->getId() . "" : null, - "application_id" => $message->getApplicationId(), - "date" => $message->getCreationDate()->format('Y-m-d'), - "tags" => $message->getTags(), - "pinned" => $message->getPinned() - ); - - if ($message_exists >= 0) { - $messages[$index] = $formatted_message; - } else { - $messages[] = $formatted_message; - $id_messages[] = $message->getId(); - $this->setNbMessage($this->getNbMessage() + 1); - } - - $this->setNbMessage(count($messages)); - $this->setMessages($messages); - $this->setIdMessages($id_messages); - - } - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/GlobalSearch/Entity/SearchHistory.php b/twake/backend/core/src/Twake/GlobalSearch/Entity/SearchHistory.php deleted file mode 100755 index 0f0e8da3..00000000 --- a/twake/backend/core/src/Twake/GlobalSearch/Entity/SearchHistory.php +++ /dev/null @@ -1,110 +0,0 @@ -<?php - - -namespace Twake\GlobalSearch\Entity; - -use Doctrine\ORM\Mapping as ORM; - -use Twake\Core\Entity\SearchableObject; - -/** - * Bloc - * - * @ORM\Table(name="searchhistory",options={"engine":"MyISAM", "scylladb_keys": { {"user_id": "ASC"}, {"id": "ASC"} } }) - * @ORM\Entity() - */ -class SearchHistory -{ - - /** - * @var int - * - * @ORM\Column(name="id", type="twake_timeuuid") - * @ORM\Id - */ - protected $id; - /** - * @ORM\Column(name="user_id", type="twake_timeuuid") - * @ORM\Id - */ - protected $user_id; - - /** - * @ORM\Column(name ="search", type="twake_text", nullable=true) - */ - protected $search; - - - public function __construct($user_id, $search) - { - $this->user_id = $user_id; - $this->search = $search; - } - - public function getAsArray() - { - $return = Array( - "id" => $this->getId(), - "user_id" => $this->getUserId(), - "search" => $this->getSearch() - ); - return $return; - } - - public function addSearch($temp) - { - $this->search[] = $temp; - } - - /** - * @return int - */ - public function getId() - { - return $this->id; - } - - /** - * @param int $id - */ - public function setId($id) - { - $this->id = $id; - } - - /** - * @return mixed - */ - public function getUserId() - { - return $this->user_id; - } - - /** - * @param mixed $user_id - */ - public function setUserId($user_id) - { - $this->user_id = $user_id; - } - - /** - * @return mixed - */ - public function getSearch() - { - return $this->search; - } - - /** - * @param mixed $search - */ - public function setSearch($search) - { - $this->search = $search; - } - - -} - - diff --git a/twake/backend/core/src/Twake/GlobalSearch/Entity/WorkspaceTag.php b/twake/backend/core/src/Twake/GlobalSearch/Entity/WorkspaceTag.php deleted file mode 100755 index 13a1d494..00000000 --- a/twake/backend/core/src/Twake/GlobalSearch/Entity/WorkspaceTag.php +++ /dev/null @@ -1,127 +0,0 @@ -<?php - -namespace Twake\GlobalSearch\Entity; - -use Doctrine\ORM\Mapping as ORM; - -use Twake\Core\Entity\FrontObject; - -/** - * Tag - * - * @ORM\Table(name="workspacetag",options={"engine":"MyISAM", "scylladb_keys": {{"workspace_id": "ASC", "id": "DESC"}, {"id": "ASC"} } }) - * @ORM\Entity() - */ -class WorkspaceTag extends FrontObject -{ - - /** - * @var int - * - * @ORM\Column(name="id", type="twake_timeuuid") - * @ORM\Id - */ - private $id; - - /** - * @ORM\Column(name="workspace_id", type="twake_timeuuid") - * @ORM\Id - */ - protected $workspace_id; - - /** - * @ORM\Column(name ="name", type="twake_text", nullable=true) - */ - protected $name; - - /** - * @ORM\Column(name ="color", type="twake_text", nullable=true) - */ - protected $color; - - public function __construct($workspace_id, $name) - { - $this->workspace_id = $workspace_id; - $this->name = $name; - - } - - public function getAsArray() - { - $return = Array( - "id" => $this->getId(), - "front_id" => $this->getFrontId(), - "workspace_id" => $this->getWorkspaceId(), - "name" => $this->getName(), - "color" => $this->getColor() - ); - return $return; - } - - /** - * @return int - */ - public function getId() - { - return $this->id; - } - - /** - * @param int $id - */ - public function setId($id) - { - $this->id = $id; - } - - - /** - * @return mixed - */ - public function getWorkspaceId() - { - return $this->workspace_id; - } - - /** - * @param mixed $workspace_id - */ - public function setWorkspaceId($workspace_id) - { - $this->workspace_id = $workspace_id; - } - - /** - * @return mixed - */ - public function getName() - { - return $this->name; - } - - /** - * @param mixed $name - */ - public function setName($name) - { - $this->name = $name; - } - - /** - * @return mixed - */ - public function getColor() - { - return $this->color; - } - - /** - * @param mixed $color - */ - public function setColor($color) - { - $this->color = $color; - } - - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/GlobalSearch/Resources/Routing.php b/twake/backend/core/src/Twake/GlobalSearch/Resources/Routing.php deleted file mode 100755 index dee4821b..00000000 --- a/twake/backend/core/src/Twake/GlobalSearch/Resources/Routing.php +++ /dev/null @@ -1,23 +0,0 @@ -<?php - -namespace Twake\GlobalSearch\Resources; - -use Common\BaseRouting; - -class Routing extends BaseRouting -{ - - protected $routing_prefix = "ajax/globalsearch/"; - - protected $routes = [ - "quicksearch" => ["handler" => "GlobalSearch:QuickSearch", "methods" => ["POST"], "security" => ["user_connected_security"]], - "advancedbloc" => ["handler" => "GlobalSearch:AdvancedBloc", "methods" => ["POST"], "security" => ["user_connected_security"]], - "advancedfile" => ["handler" => "GlobalSearch:AdvancedFile", "methods" => ["POST"], "security" => ["user_connected_security"]], - "advancedtask" => ["handler" => "GlobalSearch:AdvancedTask", "methods" => ["POST"], "security" => ["user_connected_security"]], - "advancedevent" => ["handler" => "GlobalSearch:AdvancedEvent", "methods" => ["POST"], "security" => ["user_connected_security"]], - "tags/get" => ["handler" => "Tag:getAction", "methods" => ["POST"], "security" => ["user_connected_security"]], - "tags/save" => ["handler" => "Tag:save", "methods" => ["POST"], "security" => ["user_connected_security"]], - "tags/remove" => ["handler" => "Tag:remove", "methods" => ["POST"], "security" => ["user_connected_security"]], - ]; - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/GlobalSearch/Resources/Services.php b/twake/backend/core/src/Twake/GlobalSearch/Resources/Services.php deleted file mode 100755 index 525491c0..00000000 --- a/twake/backend/core/src/Twake/GlobalSearch/Resources/Services.php +++ /dev/null @@ -1,31 +0,0 @@ -<?php - -namespace Twake\GlobalSearch\Resources; - -use Common\BaseServices; - -class Services extends BaseServices -{ - protected $services = [ - "globalsearch.quicksearch" => "QuickSearch", -// arguments: ["@app.twake_doctrine", "@app.users", "@app.workspaces", "@app.channels.channels_system", "@globalsearch.advancedfile", "@app.workspace_members", "@globalsearch.messagebloc"] - "globalsearch.advancedbloc" => "AdvancedBloc", -// arguments: ["@app.twake_doctrine", "@globalsearch.messagebloc", "@app.workspaces"] - "globalsearch.advancedfile" => "AdvancedFile", -// arguments: ["@app.twake_doctrine","@app.workspaces"] - "globalsearch.advancedtask" => "AdvancedTask", -// arguments: ["@app.twake_doctrine", "@app.workspaces"] - "globalsearch.advancedevent" => "AdvancedEvent", -// arguments: ["@app.twake_doctrine", "@app.workspaces"] - "globalsearch.messagebloc" => "Blocmessage", -// arguments: ["@app.twake_doctrine"] - "globalsearch.reindex" => "Reindex", -// arguments: ["@app.twake_doctrine"] - "globalsearch.mapping" => "Mapping", - "globalsearch.pagination" => "Pagination", -// arguments: ["@app.twake_doctrine"] - "globalsearch.tag" => "Tag", -// arguments: ["@app.twake_doctrine", "@app.accessmanager"] - ]; - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/GlobalSearch/Services/AdvancedBloc.php b/twake/backend/core/src/Twake/GlobalSearch/Services/AdvancedBloc.php deleted file mode 100755 index f688a2c9..00000000 --- a/twake/backend/core/src/Twake/GlobalSearch/Services/AdvancedBloc.php +++ /dev/null @@ -1,67 +0,0 @@ -<?php - - -namespace Twake\GlobalSearch\Services; - -use App\App; - -class AdvancedBloc -{ - private $doctrine; - private $blocservice; - private $workspaceservice; - private $globalresult; - - public function __construct(App $app) - { - $this->doctrine = $app->getServices()->get("app.twake_doctrine"); - $this->blocservice = $app->getServices()->get("globalsearch.messagebloc"); - $this->workspaceservice = $app->getServices()->get("app.workspaces"); - } - - public function AdvancedBloc($current_user_id, $options, $channels) - { - $this->globalresult = Array(); - $this->SearchInBloc($current_user_id, $options, $channels); - return $this->globalresult; - } - - public function SearchInBloc($current_user_id, $options, $channels) - { - - $channel_acces = Array(); - if (!$channels && !is_array($channels)) { - $channels_member = $this->doctrine->getRepository("Twake\Channels:ChannelMember")->findBy(Array("direct" => false, "user_id" => $current_user_id)); - foreach ($channels_member as $cm) { - $channel = $this->doctrine->getRepository("Twake\Channels:Channel")->findOneBy(Array("id" => $cm->getChannelId())); - if ($channel) { - $channel_acces[] = $channel; - } - } - $channels_member = $this->doctrine->getRepository("Twake\Channels:ChannelMember")->findBy(Array("direct" => true, "user_id" => $current_user_id)); - foreach ($channels_member as $cm) { - $channel = $this->doctrine->getRepository("Twake\Channels:Channel")->findOneBy(Array("id" => $cm->getChannelId())); - if ($channel) { - $channel_acces[] = $channel; - } - } - } else { - foreach ($channels as $channel) { - $member = $this->doctrine->getRepository("Twake\Channels:ChannelMember")->findOneBy(Array("direct" => false, "user_id" => $current_user_id, "channel_id" => $channel)); - if (!$member) { - $member = $this->doctrine->getRepository("Twake\Channels:ChannelMember")->findOneBy(Array("direct" => true, "user_id" => $current_user_id, "channel_id" => $channel)); - } - if ($member) { - $channel_acces[] = $channel; - } - } - } - - if (isset($channel_acces) && $channel_acces != Array()) { - $messages = $this->blocservice->search($options, $channel_acces); - $this->globalresult = $messages; - } - - } - -} diff --git a/twake/backend/core/src/Twake/GlobalSearch/Services/AdvancedEvent.php b/twake/backend/core/src/Twake/GlobalSearch/Services/AdvancedEvent.php deleted file mode 100755 index c4f9c452..00000000 --- a/twake/backend/core/src/Twake/GlobalSearch/Services/AdvancedEvent.php +++ /dev/null @@ -1,169 +0,0 @@ -<?php - - -namespace Twake\GlobalSearch\Services; - -use App\App; - -class AdvancedEvent -{ - private $doctrine; - private $workspaceservice; - private $list_events = Array("results" => Array(), "scroll_id" => ""); - - - public function __construct(App $app) - { - $this->doctrine = $app->getServices()->get("app.twake_doctrine"); - $this->workspaceservice = $app->getServices()->get("app.workspaces"); - - } - - - public function AdvancedEvent($current_user_id, $options, $workspaces) - { - $known_workspaces_by_id = Array(); - - //Prepare parameters - if (!$options["title"]) { - $options["title"] = $options["name"]; - } - - $workspace_access = []; - if (!$workspaces && !is_array($workspaces)) { - $workspace_access_tmp = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceUser")->findBy(Array("user_id" => $current_user_id)); - foreach ($workspace_access_tmp as $wp) { - $workspace_access[] = $wp->getWorkspace($this->doctrine); - } - } else { - foreach ($workspaces as $wp) { - if (!is_string($wp)) { - if (is_array($wp)) { - $known_workspaces_by_id[$wp["id"]] = $wp; - $wp = $wp["id"]; - } else { - $known_workspaces_by_id[$wp->getId()] = $wp->getAsArray(); - $wp = $wp->getId(); - } - } - $wp_entity = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceUser")->findOneBy(Array("workspace_id" => $wp, "user_id" => $current_user_id)); - if ($wp_entity) { - $workspace_access[] = $wp; - } - } - } - $workspaces = $workspace_access; - - $workspaces_ids = []; - foreach ($workspaces as $wp) { - if (!is_string($wp)) { - if (is_array($wp)) { - $known_workspaces_by_id[$wp["id"]] = $wp; - $wp = $wp["id"]; - } else { - $known_workspaces_by_id[$wp->getId()] = $wp->getAsArray(); - $wp = $wp->getId(); - } - } - $workspaces_ids[] = $wp; - } - $workspaces = $workspaces_ids; - - //on regarde avant l'acces pour ne faire qu'une requete sur ES et pour pouvoir profitier de l'ordonnocement par pertinence - if (isset($workspace_access) && $workspace_access != Array()) { - - $must = Array(); - - $visible_match = ESUtils::createShouldMatch($workspaces, "workspace_id", 1); - $visible_match["bool"]["should"][] = Array( - "match_phrase" => Array( - "participants" => $current_user_id - ) - ); - $must[] = $visible_match; - - $title = isset($options["title"]) ? preg_filter('/($|^)/', '.*', explode(" ", $options["title"])) : false; - ESUtils::createRegexShouldMatch($title, "title", "all", $must); - - $description = isset($options["description"]) ? preg_filter('/($|^)/', '.*', explode(" ", $options["description"])) : false; - ESUtils::createRegexShouldMatch($description, "description", "all", $must); - - $participants = isset($options["participants"]) ? $options["participants"] : false; - ESUtils::createShouldMatch($participants, "participants", "all", $must); - - $tags = isset($options["tags"]) ? $options["tags"] : false; - ESUtils::createShouldMatch($tags, "tags", "all", $must); - - $owner = isset($options["owner"]) ? $options["owner"] : false; - ESUtils::createMatchPhrase($owner, "owner", $must); - - - $date_from = isset($options["date_from"]) ? $options["date_from"] : false; - $date_to = isset($options["date_to"]) ? $options["date_to"] : false; - ESUtils::createRange($date_from, $date_to, "date_from", $must); - - $modified_before = isset($options["date_modified_before"]) ? $options["date_modified_before"] : false; - $modified_after = isset($options["date_modified_after"]) ? $options["date_modified_after"] : false; - ESUtils::createRange($modified_after, $modified_before, "date_last_modified", $must); - - $options = Array( - "repository" => "Twake\Calendar:Event", - "index" => "event", - "size" => 10, - "query" => Array( - "bool" => Array( - "must" => $must - ) - ), - "sort" => Array( - "date_from" => Array( - "order" => "desc", - ) - ) - ); - - if (isset($options["scroll_id"])) { - $options["scroll_id"] = $options["scroll_id"]; - } - - $result = $this->doctrine->es_search($options); - - //On traite les données recu d'Elasticsearch - foreach ($result["result"] as $event) { - - $workspaces_calendars = $event[0]->getWorkspacesCalendars(); - $workspace_id = null; - if ($workspaces_calendars) { - foreach ($workspaces_calendars as $workspace_calendar) { - $workspace_id = $workspace_calendar["workspace_id"]; - break; - } - } - - if ($workspace_id) { - if (!isset($known_workspaces_by_id[$workspace_id])) { - $workspace_entity = $this->doctrine->getRepository("Twake\Workspaces:Workspace")->findOneBy(Array("id" => $workspace_id)); - $known_workspaces_by_id[$workspace_id] = $workspace_entity->getAsArray(); - } - $workspace_array = $known_workspaces_by_id[$workspace_id]; - } - - $this->list_events["results"][] = Array( - "event" => $event[0]->getAsArray(), - "type" => "event", - "score" => $event[1][0], - "workspace" => $workspace_array - ); - } - - $scroll_id = $result["scroll_id"]; - $this->list_events["scroll_id"] = $scroll_id; - - $this->list_events["es"] = $options; - - return $this->list_events; - } - - } - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/GlobalSearch/Services/AdvancedFile.php b/twake/backend/core/src/Twake/GlobalSearch/Services/AdvancedFile.php deleted file mode 100755 index 60e34fb5..00000000 --- a/twake/backend/core/src/Twake/GlobalSearch/Services/AdvancedFile.php +++ /dev/null @@ -1,154 +0,0 @@ -<?php - - -namespace Twake\GlobalSearch\Services; - -use App\App; - -class AdvancedFile -{ - private $doctrine; - private $workspaceservice; - private $globalresult; - - public function __construct(App $app) - { - $this->doctrine = $app->getServices()->get("app.twake_doctrine"); - $this->workspaceservice = $app->getServices()->get("app.workspaces"); - - } - - - public function AdvancedFile($current_user_id, $options, $workspaces) - { - $known_workspaces_by_id = Array(); - - //Prepare parameters - if (!$options["name"]) { - $options["name"] = $options["title"]; - } - - $workspace_access = []; - if (!$workspaces && !is_array($workspaces)) { - $workspace_access_tmp = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceUser")->findBy(Array("user_id" => $current_user_id)); - foreach ($workspace_access_tmp as $wp) { - $workspace_access[] = $wp->getWorkspace($this->doctrine); - } - } else { - foreach ($workspaces as $wp) { - if (!is_string($wp)) { - if (is_array($wp)) { - $known_workspaces_by_id[$wp["id"]] = $wp; - $wp = $wp["id"]; - } else { - $known_workspaces_by_id[$wp->getId()] = $wp->getAsArray(); - $wp = $wp->getId(); - } - } - $wp_entity = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceUser")->findOneBy(Array("workspace_id" => $wp, "user_id" => $current_user_id)); - if ($wp_entity) { - $workspace_access[] = $wp; - } - } - } - $workspaces = $workspace_access; - - $workspaces_ids = []; - foreach ($workspaces as $wp) { - if (!is_string($wp)) { - if (is_array($wp)) { - $known_workspaces_by_id[$wp["id"]] = $wp; - $wp = $wp["id"]; - } else { - $known_workspaces_by_id[$wp->getId()] = $wp->getAsArray(); - $wp = $wp->getId(); - } - } - $workspaces_ids[] = $wp; - } - $workspaces = $workspaces_ids; - - //on regarde avant l'acces pour ne faire qu'une requete sur ES et pour pouvoir profitier de l'ordonnocement par pertinence - if (isset($workspace_access) && $workspace_access != Array()) { - - $must = Array(); - - ESUtils::createShouldMatch($workspaces, "workspace_id", 1, $must); - - $name = isset($options["name"]) ? preg_filter('/($|^)/', '.*', explode(" ", $options["name"])) : false; - ESUtils::createNestedRegexShouldMatch($name, "keywords.keyword", "all", $must); - - $tags = isset($options["tags"]) ? $options["tags"] : false; - ESUtils::createShouldMatch($tags, "tags", "all", $must); - - $size_lte = isset($options["size_lte"]) ? $options["size_lte"] : false; - $size_gte = isset($options["size_gte"]) ? $options["size_gte"] : false; - ESUtils::createRange($size_gte, $size_lte, "size", $must); - - $create_before = (isset($options["date_create_before"]) && $options["date_create_before"]) ? date('Y-m-d', intval($options["date_create_before"])) : false; - $create_after = (isset($options["date_create_after"]) && $options["date_create_after"]) ? date('Y-m-d', intval($options["date_create_after"])) : false; - ESUtils::createRange($create_after, $create_before, "creation_date", $must); - - $modified_before = (isset($options["date_modified_before"]) && $options["date_modified_before"]) ? date('Y-m-d', intval($options["date_modified_before"])) : false; - $modified_after = (isset($options["date_modified_after"]) && $options["date_modified_before"]) ? date('Y-m-d', intval($options["date_modified_after"])) : false; - ESUtils::createRange($modified_after, $modified_before, "date_last_modified", $must); - - - $creator = isset($options["creator"]) ? $options["creator"] : false; - ESUtils::createMatchPhrase($creator, "creator", $must); - - $type = isset($options["type"]) ? (is_array($options["type"]) ? $options["type"] : [$type]) : false; - ESUtils::createShouldMatch($type, "type", 1, $must); - - $options = Array( - "repository" => "Twake\Drive:DriveFile", - "index" => "drive_file", - "size" => 10, - "query" => Array( - "bool" => Array( - "must" => $must - ) - ) - ); - - if (isset($options["scroll_id"])) { - $options["scroll_id"] = $options["scroll_id"]; - } - - $result = $this->doctrine->es_search($options); - - $this->list_files["results"] = []; - - //On traite les données recu d'Elasticsearch - foreach ($result["result"] as $file) { - - if ($file[0] && ($file[0]->getParentId() == "removed_trashes" || $file[0]->getIsInTrash())) { - $this->doctrine->es_remove($file[0], $file[0]->getEsType(), $file[0]->getEsIndex()); - continue; - } - - if (!isset($known_workspaces_by_id[$file[0]->getAsArray()["workspace_id"]])) { - $workspace_entity = $this->doctrine->getRepository("Twake\Workspaces:Workspace")->findOneBy(Array("id" => $file[0]->getAsArray()["workspace_id"])); - $known_workspaces_by_id[$file[0]->getAsArray()["workspace_id"]] = $workspace_entity->getAsArray(); - } - $workspace_array = $known_workspaces_by_id[$file[0]->getAsArray()["workspace_id"]]; - - $this->list_files["results"][] = Array( - "file" => $file[0]->getAsArray(), - "type" => "file", - "score" => $file[1][0], - "workspace" => $workspace_array - ); - - } - - $scroll_id = $result["scroll_id"]; - $this->list_files["scroll_id"] = $scroll_id; - - $this->list_files["es"] = $options; - - return $this->list_files; - } - } - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/GlobalSearch/Services/AdvancedTask.php b/twake/backend/core/src/Twake/GlobalSearch/Services/AdvancedTask.php deleted file mode 100755 index dd6a9e08..00000000 --- a/twake/backend/core/src/Twake/GlobalSearch/Services/AdvancedTask.php +++ /dev/null @@ -1,180 +0,0 @@ -<?php - - -namespace Twake\GlobalSearch\Services; - -use App\App; - -class AdvancedTask -{ - private $doctrine; - private $workspaceservice; - private $list_tasks = Array("results" => Array(), "scroll_id" => ""); - - - public function __construct(App $app) - { - $this->doctrine = $app->getServices()->get("app.twake_doctrine"); - $this->workspaceservice = $app->getServices()->get("app.workspaces"); - - } - - - public function AdvancedTask($current_user_id, $options, $workspaces) - { - $known_workspaces_by_id = Array(); - $known_boards_by_id = Array(); - $known_lists_by_id = Array(); - - //Prepare parameters - if (!$options["title"]) { - $options["title"] = $options["name"]; - } - - $workspace_access = []; - if (!$workspaces && !is_array($workspaces)) { - $workspace_access_tmp = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceUser")->findBy(Array("user_id" => $current_user_id)); - foreach ($workspace_access_tmp as $wp) { - $workspace_access[] = $wp->getWorkspace($this->doctrine); - } - } else { - foreach ($workspaces as $wp) { - if (!is_string($wp)) { - if (is_array($wp)) { - $known_workspaces_by_id[$wp["id"]] = $wp; - $wp = $wp["id"]; - } else { - $known_workspaces_by_id[$wp->getId()] = $wp->getAsArray(); - $wp = $wp->getId(); - } - } - $wp_entity = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceUser")->findOneBy(Array("workspace_id" => $wp, "user_id" => $current_user_id)); - if ($wp_entity) { - $workspace_access[] = $wp; - } - } - } - $workspaces = $workspace_access; - - $workspaces_ids = []; - foreach ($workspaces as $wp) { - if (!is_string($wp)) { - if (is_array($wp)) { - $known_workspaces_by_id[$wp["id"]] = $wp; - $wp = $wp["id"]; - } else { - $known_workspaces_by_id[$wp->getId()] = $wp->getAsArray(); - $wp = $wp->getId(); - } - } - $workspaces_ids[] = $wp; - } - $workspaces = $workspaces_ids; - - - //On commence le travail de création de la query - if (isset($workspace_access) && $workspace_access != Array()) { - - $must = Array(); - - ESUtils::createShouldMatch($workspaces, "workspace_id", 1, $must); - - $title = isset($options["title"]) ? preg_filter('/($|^)/', '.*', explode(" ", $options["title"])) : false; - ESUtils::createRegexShouldMatch($title, "title", "all", $must); - - $description = isset($options["description"]) ? preg_filter('/($|^)/', '.*', explode(" ", $options["description"])) : false; - ESUtils::createRegexShouldMatch($description, "description", "all", $must); - - $participants = isset($options["participants"]) ? $options["participants"] : false; - ESUtils::createShouldMatch($participants, "participants", "all", $must); - - $tags = isset($options["tags"]) ? $options["tags"] : false; - ESUtils::createShouldMatch($tags, "tags", "all", $must); - - $owner = isset($options["owner"]) ? $options["owner"] : false; - ESUtils::createMatchPhrase($owner, "owner", $must); - - $date_created_after = isset($options["date_created_after"]) ? $options["date_created_after"] : false; - $date_created_before = isset($options["date_created_before"]) ? $options["date_created_before"] : false; - ESUtils::createRange($date_created_after, $date_created_before, "date_created", $must); - - $modified_before = isset($options["date_modified_before"]) ? $options["date_modified_before"] : false; - $modified_after = isset($options["date_modified_after"]) ? $options["date_modified_after"] : false; - ESUtils::createRange($modified_after, $modified_before, "date_last_modified", $must); - - $before_before = isset($options["before_before"]) ? $options["before_before"] : false; - $before_after = isset($options["before_after"]) ? $options["before_after"] : false; - ESUtils::createRange($before_after, $before_before, "before", $must); - - $start_time_before = isset($options["start_time_before"]) ? $options["start_time_before"] : false; - $start_time_after = isset($options["start_time_after"]) ? $options["start_time_after"] : false; - ESUtils::createRange($start_time_after, $start_time_before, "start", $must); - - $options = Array( - "repository" => "Twake\Tasks:Task", - "index" => "task", - "size" => 10, - "query" => Array( - "bool" => Array( - "must" => $must - ) - ), - "sort" => Array( - "date_last_modified" => Array( - "order" => "desc", - ) - ) - ); - - if (isset($options["scroll_id"])) { - $options["scroll_id"] = $options["scroll_id"]; - } - - $result = $this->doctrine->es_search($options); - - //On traite les données recu d'Elasticsearch - foreach ($result["result"] as $task) { - - $list_id = $task[0]->getAsArray()["list_id"]; - $board_id = $task[0]->getAsArray()["board_id"]; - $workspace_id = $task[0]->getAsArray()["workspace_id"]; - - if (!isset($known_workspaces_by_id[$workspace_id])) { - $workspace_entity = $this->doctrine->getRepository("Twake\Workspaces:Workspace")->findOneBy(Array("id" => $workspace_id)); - $known_workspaces_by_id[$workspace_id] = $workspace_entity->getAsArray(); - } - $workspace_array = $known_workspaces_by_id[$workspace_id]; - - if (!isset($known_lists_by_id[$list_id])) { - $list_entity = $this->doctrine->getRepository("Twake\Tasks:BoardList")->findOneBy(Array("id" => $list_id)); - $known_lists_by_id[$list_id] = $list_entity->getAsArray(); - } - $list_array = $known_lists_by_id[$list_id]; - - if (!isset($known_boards_by_id[$board_id])) { - $board_entity = $this->doctrine->getRepository("Twake\Tasks:Board")->findOneBy(Array("id" => $board_id)); - $known_boards_by_id[$board_id] = $board_entity->getAsArray(); - } - $board_array = $known_boards_by_id[$board_id]; - - $this->list_tasks["results"][] = Array( - "task" => $task[0]->getAsArray(), - "type" => "task", - "score" => $task[1][0], - "workspace" => $workspace_array, - "board" => $board_array, - "list" => $list_array - ); - } - - $scroll_id = $result["scroll_id"]; - $this->list_tasks["scroll_id"] = $scroll_id; - - $this->list_tasks["es"] = $options; - - return $this->list_tasks; - } - - } - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/GlobalSearch/Services/Blocmessage.php b/twake/backend/core/src/Twake/GlobalSearch/Services/Blocmessage.php deleted file mode 100755 index d8d64969..00000000 --- a/twake/backend/core/src/Twake/GlobalSearch/Services/Blocmessage.php +++ /dev/null @@ -1,315 +0,0 @@ -<?php - -namespace Twake\GlobalSearch\Services; - -use App\App; - -class Blocmessage - -{ - private $doctrine; - - - public function __construct(App $app) - { - $this->doctrine = $app->getServices()->get("app.twake_doctrine"); - } - - public function search($options, $channels) - { - - $known_channels_by_id = Array(); - $known_workspaces_by_id = Array(); - - $doublon_id = Array(); - $list_messages = Array("results" => Array(), "scroll_id" => ""); - - $final_words = Array(); - if (isset($options["words"])) { - foreach ($options["words"] as $word) { - if (strlen($word) >= 2) { - $final_words[] = strtolower($word); - } - } - } - - $channels_ids = []; - foreach ($channels as $channel) { - if (is_object($channel)) { - $known_channels_by_id[$channel->getId()] = $channel->getAsArray(); - $channel = $channel->getId(); - } - if (is_array($channel)) { - $known_channels_by_id[$channel["id"]] = $channel; - $channel = $channel["id"]; - } - $channels_ids[] = $channel; - } - $channels = $channels_ids; - - $must = Array(); - - - $words = count($final_words) > 0 ? preg_filter('/($|^)/', '.*', $final_words) : false; - ESUtils::createRegexShouldMatch($words, "messages.content", "all", $must); - - $reactions = isset($options["reactions"]) ? $options["reactions"] : false; - ESUtils::createShouldMatch($reactions, "messages.reactions", "all", $must); - - - $mentions = isset($options["mentions"]) ? $options["mentions"] : false; - ESUtils::createShouldMatch($mentions, "messages.mentions", "all", $must); - - $tags = isset($options["tags"]) ? $options["tags"] : false; - ESUtils::createShouldMatch($tags, "messages.tags", "all", $must); - - $pinned = (isset($options["pinned"]) && $options["pinned"]) ? $options["pinned"] : false; - ESUtils::createMatchPhrase($pinned, "messages.pinned", $must); - - $created_before = isset($options["date_before"]) ? date("Y-m-d", intval($options["date_before"])) : false; - $created_after = isset($options["date_after"]) ? date("Y-m-d", intval($options["date_after"])) : false; - ESUtils::createRange($created_after, $created_before, "messages.date", $must); - - $sender = isset($options["sender"]) ? $options["sender"] : false; - ESUtils::createMatchPhrase($sender, "messages.sender", $must); - - $application_id = isset($options["application_id"]) ? $options["application_id"] : false; - ESUtils::createMatchPhrase($application_id, "messages.application_id", $must); - - $should_channels = Array(); - foreach ($channels as $channel) { - $should_channels[] = Array( - "match_phrase" => Array( - "channel_id" => $channel - ) - ); - } - - $search_data = Array( - "repository" => "Twake\GlobalSearch:Bloc", - "index" => "message_bloc", - "size" => 10, - "query" => Array( - "bool" => Array( - "must" => Array( - Array( - "bool" => Array( - "should" => Array( - $should_channels - ), - "minimum_should_match" => 1 - ) - ), - Array( - "nested" => Array( - "path" => "messages", - "score_mode" => "avg", - "query" => Array( - "bool" => Array( - "must" => $must - ) - ) - ) - ) - ) - ) - ) - ); - - - // search in ES - $result = $this->doctrine->es_search($search_data); - $list_messages["scroll_id"] = $result["scroll_id"]; - - $list_messages["es_res"] = count($result["result"]); - - $blocs = []; - foreach ($result["result"] as $bloc) { - $blocs[] = $bloc[0]; - } - - // on cherche dans le bloc en cours de construction de tout les channels demandés - foreach ($channels as $channel) { - $lastbloc = $this->doctrine->getRepository("Twake\GlobalSearch:Bloc")->findOneBy(Array("channel_id" => $channel)); - if (isset($lastbloc) && $lastbloc->getLock() == false) { - $blocs[] = $lastbloc; - } - } - - foreach ($blocs as $bloc) { - $messages = $bloc->getMessages(); - foreach ($messages as $message) { - - if (!is_array($message)) { - continue; - } - - $message_id_in_bloc = $message["id"]; - - if ($message_id_in_bloc) { - - $valid = $this->verif_valid(null, $message, $options); - - if ($valid && !in_array($message_id_in_bloc, $doublon_id)) { - - $message_bdd = $this->doctrine->getRepository("Twake\Discussion:Message")->findOneBy(Array("id" => $message["id"])); - - if(!$message_bdd){ - continue; - } - - $doublon_id[] = $message_id_in_bloc; - - if (!isset($known_channels_by_id[$message_bdd->getChannelId()])) { - $channel_entity = $this->doctrine->getRepository("Twake\Channels:Channel")->findOneBy(Array("id" => $message_bdd->getChannelId())); - $known_channels_by_id[$message_bdd->getChannelId()] = $channel_entity->getAsArray(); - } - - $workspace_array = null; - if ($channel_array["original_workspace"]) { - if (!isset($known_workspaces_by_id[$channel_array["original_workspace"]])) { - $workspace_entity = $this->doctrine->getRepository("Twake\Workspaces:Workspace")->findOneBy(Array("id" => $channel_array["original_workspace"])); - $known_workspaces_by_id[$channel_array["original_workspace"]] = $workspace_entity->getAsArray(); - } - $workspace_array = $known_workspaces_by_id[$channel_array["original_workspace"]]; - } - - $channel_array = $known_channels_by_id[$message_bdd->getChannelId()]; - - $list_messages["results"][] = Array( - "score" => 1, - "type" => "message", - "message" => $message_bdd->getAsArray(), - "channel" => $channel_array, - "workspace" => $workspace_array - ); - } - - } - - } - } - - - return $list_messages; - - } - - public function verif_valid($message_bdd, $message_array, $options) - { - - $final_words = Array(); - if (isset($options["words"])) { - foreach ($options["words"] as $word) { - $final_words[] = strtolower($word); - } - } - - $valid = true; - - foreach ($final_words as $word) { - if ($word) { - if ($valid && isset($message_array["content"]) && strpos(strtolower($message_array["content"]), strtolower($word)) !== false) { - } else { - $valid = false; - } - } - } - - if ($valid && isset($options["sender"])) { - if ($message_array["sender"] . "" != $options["sender"]) { - $valid = false; - } - } - if ($valid && isset($options["date_before"]) && ( - (\DateTime::createFromFormat("Y-m-d", $message_array["date"]))->getTimestamp() > - intval($options["date_before"]) - ) - ) { - $valid = false; - } - if ($valid && isset($options["date_after"]) && ( - (\DateTime::createFromFormat("Y-m-d", $message_array["date"]))->getTimestamp() < - intval($options["date_after"]) - )) { - $valid = false; - } - - if ($valid && isset($options["pinned"]) && $message_array["pinned"] != $options["pinned"]) { - $valid = false; - } - - if ($valid && isset($options["application_id"]) && ($message_array["application_id"] != $options["application_id"])) { - $valid = false; - } - - if ($valid && isset($options["tags"])) { - $tags = $message_array["tags"]; - if (!$message_array["tags"]) { - $message_array["tags"] = Array(); - } - $tags_search = true; - $i = 0; - if (isset($tags)) { - while ($tags_search && $i < count($options["tags"])) { - $trouve = false; - foreach ($message_array["tags"] as $tag) { - if ($tag == $options["tags"][$i]) { - $trouve = true; - break; - } - } - if ($trouve == false) { - $tags_search = false; - } - $i++; - } - } else { - $valid = false; - } - if (!$tags_search) { - $valid = false; - } - } - - if ($valid && isset($options["mentions"])) { - if (!array_intersect($options["mentions"], $message_array["mentions"]) == $options["mentions"]) { - $valid = false; - } - } - - if ($valid && isset($options["reactions"])) { - $react_search = true; - $i = 0; - // on parcours toute les reactions saisites - $reaction = $message_array["reactions"]; - if (!$reaction) { - $reaction = Array(); - } - if (isset($reaction)) { - while ($react_search && $i < count($options["reactions"])) { - $trouve = false; - foreach (array_keys($message_array["reactions"]) as $reaction) { - if (strpos(strtolower($reaction), strtolower($options["reactions"][$i])) !== false) { - $trouve = true; - break; - } - } - if ($trouve == false) { - $react_search = false; - } - $i++; - } - } else { - $valid = false; - } - if (!$react_search) { - $valid = false; - } - } - - return $valid; - - } - -} diff --git a/twake/backend/core/src/Twake/GlobalSearch/Services/ESUtils.php b/twake/backend/core/src/Twake/GlobalSearch/Services/ESUtils.php deleted file mode 100755 index 15b17dfe..00000000 --- a/twake/backend/core/src/Twake/GlobalSearch/Services/ESUtils.php +++ /dev/null @@ -1,274 +0,0 @@ -<?php -/** - * Created by PhpStorm. - * User: romaricmourgues - * Date: 08/10/2019 - * Time: 09:33 - */ - -namespace Twake\GlobalSearch\Services; - - -use Twake\Core\Services\StringCleaner; - -class ESUtils -{ - static function createRange($from, $to, $parameter_name, &$must_list = NULL) - { - if (!$to && !$from) { - return; - } - - $tmp = Array( - "range" => Array( - "$parameter_name" => Array() - ) - ); - - if ($to) { - $tmp["range"][$parameter_name]["lte"] = ESUtils::simplifyInArray($to); - } - - if ($from) { - $tmp["range"][$parameter_name]["gte"] = ESUtils::simplifyInArray($from); - } - - if ($must_list !== NULL) { - $must_list[] = $tmp; - } - - return $tmp; - } - - static function simplifyInArray($data) - { - - $sc = new StringCleaner(); - return $sc->simplifyInArray($data); - - } - - static function createMatchPhrase($value, $parameter_name, &$must_list = NULL) - { - - if (!$value) { - return; - } - - $tmp = Array( - "match_phrase" => Array( - "$parameter_name" => ESUtils::simplifyInArray($value) - ) - ); - - if ($must_list !== NULL) { - $must_list[] = $tmp; - } - - return $tmp; - - } - - static function createShouldMatch($terms, $parameter_name, $minimum_should_match = "all", &$must_list = NULL) - { - - if ($terms && !is_array($terms)) { - $terms = [$terms]; - } - - if ($minimum_should_match == "all") { - $minimum_should_match = count($terms); - } - - if (!$terms || count($terms) == 0) { - return; - } - - $array = Array(); - foreach ($terms as $term) { - if ($term) { - $array[] = Array( - "match_phrase" => Array( - "$parameter_name" => ESUtils::simplifyInArray($term) - ) - ); - } - } - - $tmp = Array( - "bool" => Array( - "should" => $array, - "minimum_should_match" => $minimum_should_match - ) - ); - - if ($must_list !== NULL) { - $must_list[] = $tmp; - } - - return $tmp; - - - } - - static function createRegexShouldMatch($terms, $parameter_name, $minimum_should_match = "all", &$must_list = NULL) - { - - if ($terms && !is_array($terms)) { - $terms = [$terms]; - } - - if ($minimum_should_match == "all") { - $minimum_should_match = count($terms); - } - - if (!$terms || count($terms) == 0) { - return; - } - - $array = Array(); - foreach ($terms as $term) { - if ($term) { - $array[] = Array( - "bool" => Array( - "filter" => Array( - "regexp" => Array( - "$parameter_name" => ESUtils::simplifyInArray($term) - ) - ) - ) - ); - } - } - - $tmp = Array( - "bool" => Array( - "should" => $array, - "minimum_should_match" => $minimum_should_match - ) - ); - - if ($must_list !== NULL) { - $must_list[] = $tmp; - } - - return $tmp; - } - - static function createNestedShouldMatch($terms, $parameter_name, $minimum_should_match = "all", &$must_list = NULL) - { - - if ($terms && !is_array($terms)) { - $terms = [$terms]; - } - - if ($minimum_should_match == "all") { - $minimum_should_match = count($terms); - } - - if (!$terms || count($terms) == 0) { - return; - } - - $parameter_name_root = explode(".", $parameter_name)[0]; - - $array = Array(); - foreach ($terms as $term) { - - $array[] = Array( - "nested" => Array( - "path" => $parameter_name_root, - "score_mode" => "avg", - "query" => Array( - "bool" => Array( - "should" => Array( - Array( - "bool" => Array( - "must" => Array( - "match_phrase" => Array( - "$parameter_name" => ESUtils::simplifyInArray($term) - ) - ) - ) - ) - ), - "minimum_should_match" => 1 - ) - ) - ) - ); - } - - $tmp = Array( - "bool" => Array( - "should" => $array, - "minimum_should_match" => $minimum_should_match - ) - ); - - if ($must_list !== NULL) { - $must_list[] = $tmp; - } - - return $tmp; - } - - static function createNestedRegexShouldMatch($terms, $parameter_name, $minimum_should_match = "all", &$must_list = NULL) - { - - if ($terms && !is_array($terms)) { - $terms = [$terms]; - } - - if ($minimum_should_match == "all") { - $minimum_should_match = count($terms); - } - - if (!$terms || count($terms) == 0) { - return; - } - - $parameter_name_root = explode(".", $parameter_name)[0]; - - $array = Array(); - foreach ($terms as $term) { - - $array[] = Array( - "nested" => Array( - "path" => $parameter_name_root, - "score_mode" => "avg", - "query" => Array( - "bool" => Array( - "should" => Array( - Array( - "bool" => Array( - "filter" => Array( - "regexp" => Array( - "$parameter_name" => ESUtils::simplifyInArray($term) - ) - ) - ) - ) - ), - "minimum_should_match" => 1 - ) - ) - ) - ); - } - - $tmp = Array( - "bool" => Array( - "should" => $array, - "minimum_should_match" => $minimum_should_match - ) - ); - - if ($must_list !== NULL) { - $must_list[] = $tmp; - } - - return $tmp; - } - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/GlobalSearch/Services/Pagination.php b/twake/backend/core/src/Twake/GlobalSearch/Services/Pagination.php deleted file mode 100755 index 9a9109f9..00000000 --- a/twake/backend/core/src/Twake/GlobalSearch/Services/Pagination.php +++ /dev/null @@ -1,28 +0,0 @@ -<?php - -namespace Twake\GlobalSearch\Services; - -use App\App; - -class Pagination - -{ - private $doctrine; - - public function __construct(App $app) - { - $this->doctrine = $app->getServices()->get("app.twake_doctrine"); - } - - public function getnextelement($scroll_id, $repository) - { - - $option = Array( - "scroll_id" => $scroll_id, - "repository" => $repository - ); - $result = $this->doctrine->es_search($option); - return $result; - - } -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/GlobalSearch/Services/QuickSearch.php b/twake/backend/core/src/Twake/GlobalSearch/Services/QuickSearch.php deleted file mode 100755 index 5965960b..00000000 --- a/twake/backend/core/src/Twake/GlobalSearch/Services/QuickSearch.php +++ /dev/null @@ -1,202 +0,0 @@ -<?php - -namespace Twake\GlobalSearch\Services; - -use App\App; - -use Twake\Core\Services\StringCleaner; - -class QuickSearch -{ - private $doctrine; - private $userservice; - private $workspaceservice; - private $channelservice; - private $fileservice; - private $memberservice; - - //liste final de résultats - private $globalresult; - - //va stocker les résultat non prioritaire séparé par type - private $fileresult; - private $channelresult; - - //va stocker les résultat prioritaire séparé par type - private $priofileresult; - private $priochannelresult; - - private $history; - - private $workspace_prio; - - - public function __construct(App $app) - { - $this->doctrine = $app->getServices()->get("app.twake_doctrine"); - $this->userservice = $app->getServices()->get("app.users"); - $this->workspaceservice = $app->getServices()->get("app.workspaces"); - $this->channelservice = $app->getServices()->get("app.channels.channels_system"); - $this->fileservice = $app->getServices()->get("globalsearch.advancedfile"); - $this->memberservice = $app->getServices()->get("app.workspace_members"); - } - - private static function cmpfile($file1, $file2) - { //permet d'obtenir la list des fichier par liste de pertinence - if ($file1["score"] == $file2["score"]) { - return 0; - } - return ($file1["score"] > $file2["score"]) ? -1 : 1; - } - - private static function cmpchannel($channel1, $channel2) - { //permet d'obtenir la list des fichier par liste de pertinence - if ($channel1["channel"]["last_activity"] == $channel2["channel"]["last_activity"]) { - return 0; - } - return ($channel1["channel"]["last_activity"] > $channel2["channel"]["last_activity"]) ? -1 : 1; - } - - public function AddAllChannels($workspace) - { - - $channels = $this->doctrine->getRepository("Twake\Channels:Channel")->findBy(Array("direct" => false, "original_workspace_id" => $workspace["id"])); - foreach ($channels as $channel) { - if ($channel->getAsArray()["application"] == false && $channel->getAsArray()["direct"] == false) { - $channel = $channel->getAsArray(); - if (isset($this->workspace_prio) && $this->workspace_prio == $workspace["id"]) { - $this->priochannelresult[] = Array("type" => "channel", "channel" => $channel, "workspace" => $workspace); - } else { - $this->channelresult[] = Array("type" => "channel", "channel" => $channel, "workspace" => $workspace); - } - //$this->history->addSearch(Array("id" => $channel["id"],"type"=> "file", "compteur" => 0)); - } - } - } - - public function QuickSearch($current_user_id, $words, $group_id = null, $workspace_prio = null) - { - - $this->workspace_prio = $workspace_prio; - //$this->workspace_prio = "d975075e-6028-11e9-b206-0242ac120005"; - //$words = Array("Romaric",'justin'); - $st = new StringCleaner(); - $words = $st->simplifyInArray($words); - $this->globalresult = Array(); - - $this->fileresult = Array(); - $this->priofileresult = Array(); - $this->channelresult = Array(); - $this->priochannelresult = Array(); - -// $this->history = $this->doctrine->getRepository("Twake\GlobalSearch:SearchHistory")->findOneBy(Array("user_id" => $current_user_id)); -// if(!isset($this->history)){ -// $this->history = new SearchHistory($current_user_id,Array()); -// } - - $workspaces_acces = $this->memberservice->getWorkspaces($current_user_id); - $workspaces = Array(); //liste des workspace dont on a accces; - foreach ($workspaces_acces as $workspace_obj) { - $value = $workspace_obj["workspace"]->getAsArray(); - if (isset($group_id) && !(in_array($value, $workspaces)) && $value["group"]["id"] == $group_id) { - $workspaces[$value["id"]] = $value; - } elseif (!isset($group_id) && !(in_array($value, $workspaces))) { - $workspaces[$value["id"]] = $value; - } - } - - $user = $this->doctrine->getRepository("Twake\Users:User")->findOneBy(Array("id" => $current_user_id)); - - - $this->SearchFile($current_user_id, $words, $workspaces); - $this->SearchInWorkspace($words, $workspaces, $current_user_id); - $this->SearchPrivateChannel($words, $user->getUsername(), $current_user_id); - - -// usort($this->fileresult,array($this,'cmpfile')); //on a meme plus besoin de trier ES le fait pour nous normalement -// usort($this->priofileresult,array($this,'cmpfile')); -// usort($this->priochannelresult,array($this,'cmpchannel')); - usort($this->channelresult, array($this, 'cmpchannel')); - - -// une fois toutes les données récupéré on construit le tableau de résltat final comme suit: -// - resultat prio -// - fichier prio -// - channel -// - fichier - - $this->globalresult = array_merge($this->globalresult, $this->priochannelresult); - $this->globalresult = array_merge($this->globalresult, $this->priofileresult); - $this->globalresult = array_merge($this->globalresult, $this->channelresult); - $this->globalresult = array_merge($this->globalresult, $this->fileresult); - - -// $this->history = $this->doctrine->getRepository("Twake\GlobalSearch:SearchHistory")->findOneBy(Array("user_id" => $current_user_id)); -// $this->doctrine->persist($this->history); //rajouter if isset history -// $this->doctrine->flush(); - -// $channels= $this->doctrine->getRepository("Twake\Channels:Channel")->findBy(Array()); -// foreach ($channels as $channel){ -// if($channel->getAsArray()["application"] == false && $channel->getAsArray()["direct"] == true) { -// } -// } - -// -// $workspaces = $this->doctrine->getRepository("Twake\Workspaces:Workspace")->findBy(Array("id" => "0f34eff8-48af-11e9-9dd1-0242ac120005")); -// foreach ($workspaces as $workspace) { -// } - -// $files = $this->doctrine->getRepository("Twake\Drive:DriveFile")->findBy(Array()); -// foreach ($files as $file){ -// $this->doctrine->remove($file); -// } -// $this->doctrine->flush(); - - return $this->globalresult; - } - - public function SearchFile($current_user_id, $words, $workspaces) - { - - $options = Array(); - $options["title"] = join(" ", $words); - - $files = $this->fileservice->AdvancedFile($current_user_id, $options, $workspaces); - error_log(json_encode($files)); - foreach ($files["results"] as $file) { - if (isset($this->workspace_prio) && $this->workspace_prio == $file["file"]["workspace_id"]) { - $this->priofileresult[] = $file; - } else { - $this->fileresult[] = $file; - } - //$this->history->addSearch(Array("id" => $file[0]["id"],"type"=> "file", "compteur" => 0)); - } - } - - public function SearchInWorkspace($words, $workspaces, $current_user_id) - { - $channels = $this->channelservice->search($words, $workspaces, $current_user_id); // search channel in a workspace - foreach ($channels as $channel) { - if (in_array($current_user_id, $channel[0]["members"]) || in_array($current_user_id, $channel[0]["ext_members"])) { - if (isset($this->workspace_prio) && $this->workspace_prio == $channel[0]["original_workspace"]) { - $this->priochannelresult[] = Array("type" => "channel", "channel" => $channel[0], "last_activity" => $channel[1], "workspace" => $workspaces[$channel[0]["original_workspace"]]); - } else { - $this->channelresult[] = Array("type" => "channel", "channel" => $channel[0], "last_activity" => $channel[1], "workspace" => $workspaces[$channel[0]["original_workspace"]]); - } - //$this->history->addSearch(Array("id" => $channel["id"],"type"=> "file", "compteur" => 0)); - } - } - } - - public function SearchPrivateChannel($words, $name, $current_user_id) - { - $words[] = $name; - $channels = $this->channelservice->searchprivate($words, $current_user_id); // search channel in a workspace - foreach ($channels as $channel) { - $this->channelresult[] = Array("type" => "channel", "channel" => $channel[0], "last_activity" => $channel[1]); - //$this->history->addSearch(Array("id" => $channel["id"],"type"=> "file", "compteur" => 0)); - } - - } - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/GlobalSearch/Services/Tag.php b/twake/backend/core/src/Twake/GlobalSearch/Services/Tag.php deleted file mode 100755 index 823b3290..00000000 --- a/twake/backend/core/src/Twake/GlobalSearch/Services/Tag.php +++ /dev/null @@ -1,179 +0,0 @@ -<?php - -namespace Twake\GlobalSearch\Services; - -use Twake\GlobalSearch\Entity\WorkspaceTag; -use App\App; - -Class Tag -{ - - private $em; - - public function __construct(App $app) - { - $this->em = $app->getServices()->get("app.twake_doctrine"); - $this->access_manager = $app->getServices()->get("app.accessmanager"); - } - - /** Called from Collections manager to verify user has access to websockets room, registered in Core/Services/Websockets.php */ - public function init($route, $data, $current_user = null) - { - $route = explode("/", $route); - $workspace_id = $route[1]; - - if (!$workspace_id) { - return false; - } - - return $this->hasAccess([ - "workspace_id" => $workspace_id - ], $current_user); - } - - public function hasAccess($data, $current_user = null) - { - if ($current_user === null) { - return true; - } - if (!is_string($current_user)) { - $current_user = $current_user->getId(); - } - return $this->access_manager->has_access($current_user, [ - "type" => "Workspace", - "edition" => false, - "object_id" => $data["workspace_id"] - ]); - } - - public function get($options, $current_user) - { - - if (!$this->hasAccess($options, $current_user)) { - return false; - } - - - $list = Array(); - if (isset($options["workspace_id"])) { - $workspace_id = $options["workspace_id"]; - if (isset($options["id"])) { - $tag = $this->em->getRepository("Twake\GlobalSearch:WorkspaceTag")->findOneBy(Array("workspace_id" => $workspace_id, "id" => $options["id"])); - if (isset($tag)) { - $list[] = $tag->getAsArray(); - } - - } else { - $tags = $this->em->getRepository("Twake\GlobalSearch:WorkspaceTag")->findBy(Array("workspace_id" => $workspace_id)); - foreach ($tags as $tag) { - $list[] = $tag->getAsArray(); - } - } - } - - return $list; - - } - - public function remove($object, $options, $current_user = null, $return_entity = false) - { - if (!$this->hasAccess($object, $current_user)) { - return false; - } - - if (isset($object["id"])) { // on recoit un identifiant donc on supprime un tag - $tag = $this->em->getRepository("Twake\GlobalSearch:WorkspaceTag")->findOneBy(Array("id" => $object["id"])); - - $this->em->remove($tag); - $this->em->flush(); - - } else { - return false; - } - - if ($return_entity) { - return $tag; - } - return $tag->getAsArray(); - - } - - public function save($object, $options, $current_user = null, $return_entity = false) - { - if (!$this->hasAccess($object, $current_user)) { - return false; - } - - $tag = null; - if (isset($object["id"]) && $object["id"]) { // on recoit un identifiant donc c'est un modification - $tag = $this->em->getRepository("Twake\GlobalSearch:WorkspaceTag")->findOneBy(Array("id" => $object["id"])); - if (!$tag) { - return false; - } - } else { // pas d'identifiant on veut donc créer un tag - $name = $object["name"]; - $workspace_id = $object["workspace_id"]; - if ($this->checkname($workspace_id, $name)) { - $tag = new WorkspaceTag($workspace_id, $name); - if ($object["front_id"]) { - $tag->setFrontId($object["front_id"]); - } - }else{ - return false; - } - $did_create = true; - } - - if (isset($object["color"])) { - $tag->setColor($object["color"]); - } - - if (!$did_create && isset($object["name"])) { - if ($this->checkname($tag->getWorkspaceId(), $object["name"])) { - $tag->setName($object["name"]); - } - } - - - if (isset($tag)) { - $this->em->persist($tag); - $this->em->flush(); - } - - if ($return_entity) { - return $tag; - } - if (isset($tag)) { - return $tag->getAsArray(); - } - - } - - public function checkname($workspace_id, $name) - { - $tags = $this->em->getRepository("Twake\GlobalSearch:WorkspaceTag")->findBy(Array("workspace_id" => $workspace_id)); - $valid = true; - foreach ($tags as $tag) { - if ($tag->getName() == $name) { - $valid = false; - } - } - - return $valid; - } - -// public function addTags($object,$tags){ -// $actual_tags = $object->gettags(); -// -// $object->setTags($tags); -// $this->em->persist($object); -// $this->em->flush(); -// -// $diff = array_merge(array_diff($tags, $actual_tags), array_diff($actual_tags, $tags)); -// -// foreach ($diff as $d){ -// //mettre a jour les compteurs -// } -// -// } -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Market/Bundle.php b/twake/backend/core/src/Twake/Market/Bundle.php deleted file mode 100755 index 4813a571..00000000 --- a/twake/backend/core/src/Twake/Market/Bundle.php +++ /dev/null @@ -1,30 +0,0 @@ -<?php - -namespace Twake\Market; - -require_once __DIR__ . "/Resources/Routing.php"; -require_once __DIR__ . "/Resources/Services.php"; - -use Twake\Market\Resources\Routing; -use Twake\Market\Resources\Services; -use Common\BaseBundle; - -class Bundle extends BaseBundle -{ - - protected $bundle_root = __DIR__; - protected $bundle_namespace = __NAMESPACE__; - protected $routes = []; - protected $services = []; - - public function init() - { - $routing = new Routing(); - $this->routes = $routing->getRoutes(); - $this->routing_prefix = $routing->getRoutesPrefix(); - $this->initRoutes(); - - $this->services = (new Services())->getServices(); - $this->initServices(); - } -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Market/Controller/Application.php b/twake/backend/core/src/Twake/Market/Controller/Application.php deleted file mode 100755 index 67a9cd09..00000000 --- a/twake/backend/core/src/Twake/Market/Controller/Application.php +++ /dev/null @@ -1,105 +0,0 @@ -<?php - -/** - * Created by PhpStorm. - * User: Romaric Mourgues - * Date: 19/06/2017 - * Time: 11:56 - */ - -namespace Twake\Market\Controller; - -use DevelopersApi\Users\Entity\Token; -use Common\BaseController; -use Common\Http\Response; -use Common\Http\Request; - -class Application extends BaseController -{ - - public function search(Request $request) - { - - $data = array( - "data" => Array(), - "errors" => Array() - ); - - $group_id = $request->request->get("group_id"); - $query = $request->request->get("query"); - - $res = $this->get("app.applications")->search($group_id, $query, $this->getUser()->getId()); - $data["data"] = $res; - - return new Response($data); - - } - - public function find(Request $request) - { - - $data = array( - "data" => Array(), - "errors" => Array() - ); - - $id = $request->request->get("id"); - - $res = $this->get("app.applications")->find($id); - $data["data"] = $res; - - return new Response($data); - - } - - public function getUserToken(Request $request) - { - - $manager = $this->get("app.twake_doctrine"); - - $data = array( - "data" => Array(), - 'errors' => Array() - ); - - - $appid = $request->request->get("appid", 0); - $wId = $request->request->get("workspaceId", 0); - - $app = $manager->getRepository("Twake\Market:Application") - ->find($appid); - - if (!$this->get('app.workspace_levels')->can($wId, $this->getUser()->getId(), "")) { - $data['errors'][] = "notallowed"; - } else { - - $useringroup = $manager->getRepository("Twake\Workspaces:WorkspaceUser") - ->findOneBy(Array("user_id" => $this->getUser()->getId(), "workspace_id" => $wId)); - - //Delete old tokens (1 minutes) - $qb = $manager->createQueryBuilder(); - $qb->delete('DevelopersApiUsers:Token', 't'); - $qb->where('t.date < :mindate'); - $qb->setParameter('mindate', (new \DateTime())->modify('-1 minute')); - - //Ok - $tokenE = new Token(); - $tokenE->setUser($this->getUser()); - $tokenE->setWorkspace($useringroup->getWorkspace($manager)->getId()); - $tokenE->setApplication($app); - - $manager->persist($tokenE); - $manager->flush(); - - $token = $tokenE->getToken(); - - $data["data"]["token"] = $token; - - } - - return new Response($data); - - } - - -} diff --git a/twake/backend/core/src/Twake/Market/Controller/ApplicationApi.php b/twake/backend/core/src/Twake/Market/Controller/ApplicationApi.php deleted file mode 100755 index 43bf2daf..00000000 --- a/twake/backend/core/src/Twake/Market/Controller/ApplicationApi.php +++ /dev/null @@ -1,77 +0,0 @@ -<?php - -/** - * Created by PhpStorm. - * User: Romaric Mourgues - * Date: 19/06/2017 - * Time: 11:56 - */ - -namespace Twake\Market\Controller; - -use DevelopersApi\Users\Entity\Token; -use Common\BaseController; -use Common\Http\Response; -use Common\Http\Request; - -class ApplicationApi extends BaseController -{ - - public function getToken(Request $request) - { - $user = $this->getUser(); - $app_id = $request->request->get("application_id", null); - $workspace_id = $request->request->get("workspace_id", null); - $group_id = $request->request->get("group_id", null); - - if ($user != null) { - $data = array("token" => $this->get("app.applications_api")->generatedToken($app_id, $workspace_id, $group_id, $user->getId())); - } else { - $data = array("error" => "unknown_error"); - } - - return new Response($data); - - } - - public function event(Request $request) - { - - $data = array( - "data" => Array(), - "errors" => Array() - ); - - $workspace_id = $request->request->get("workspace_id"); - $group_id = $request->request->get("group_id"); - $app_id = $request->request->get("app_id"); - $type = $request->request->get("type"); - $event = $request->request->get("event"); - $evt_data = $request->request->get("data"); - - - $workspace = $this->get("app.workspaces")->get($workspace_id, $this->getUser()->getId()); - if ($workspace && $workspace->getGroup() == $group_id) { - $can = $this->get("app.applications_api")->hasCapability($app_id, $group_id); - if ($can) { - - $evt_data["workspace"] = $workspace->getAsArray($this->get("app.twake_doctrine")); - $evt_data["group"] = $evt_data["workspace"]["group"]; - $evt_data["user"] = $this->getUser()->getAsArray(); - $evt_data["user"]["email"] = $this->getUser()->getEmail(); - - $res = $this->get("app.applications_api")->notifyApp($app_id, $type, $event, $evt_data); - if ($res) { - return new Response($data); - } - - } - - } - - $data["errors"][] = "error"; - return new Response($data); - - } - -} diff --git a/twake/backend/core/src/Twake/Market/Controller/ApplicationDevelopment.php b/twake/backend/core/src/Twake/Market/Controller/ApplicationDevelopment.php deleted file mode 100755 index 3e0b6fbf..00000000 --- a/twake/backend/core/src/Twake/Market/Controller/ApplicationDevelopment.php +++ /dev/null @@ -1,129 +0,0 @@ -<?php - -namespace Twake\Market\Controller; - -use DevelopersApi\Users\Entity\Token; -use Common\BaseController; -use Common\Http\Response; -use Common\Http\Request; - -class ApplicationDevelopment extends BaseController -{ - - public function create(Request $request) - { - - $data = array( - "data" => Array(), - "errors" => Array() - ); - - $workspace_id = $request->request->get("workspace_id"); - $name = $request->request->get("name"); - $simple_name = $request->request->get("simple_name"); - $app_group_name = $request->request->get("app_group_name", ""); - - $app_exists = $this->get("app.applications")->findAppBySimpleName($simple_name, true); - - if ($app_exists) { - - $data["errors"][] = "simple_name_used"; - - } else { - - $res = $this->get("app.applications")->createApp($workspace_id, $name, $simple_name, $app_group_name, $this->getUser()->getId()); - - if (!$res) { - $data["errors"][] = "error"; - } else { - - $this->get("administration.counter")->incrementCounter("total_apps", 1); - - $data["data"] = $res; - } - - } - - return new Response($data); - - } - - public function getGroupDevelopedApps(Request $request) - { - - $data = array( - "data" => Array(), - "errors" => Array() - ); - - $workspace_id = $request->request->get("workspace_id"); - $res = $this->get("app.applications")->getGroupDevelopedApps($workspace_id, $this->getUser()->getId()); - - if (!is_array($res)) { - $data["errors"][] = "error"; - } else { - $data["data"] = $res; - } - - return new Response($data); - - } - - public function update(Request $request) - { - - $data = array( - "data" => Array(), - "errors" => Array() - ); - - $application = $request->request->get("application"); - - $app_exists = $this->get("app.applications")->findAppBySimpleName($application["simple_name"], true); - - if ($app_exists && $app_exists["id"] != $application["id"]) { - - $data["errors"][] = "simple_name_used"; - - } else { - - $res = $this->get("app.applications")->update($application, $this->getUser()->getId()); - - if (!is_array($res)) { - $data["errors"][] = "error"; - } else { - $data["data"] = $res; - } - - } - - return new Response($data); - - } - - public function remove(Request $request) - { - - $data = array( - "data" => Array(), - "errors" => Array() - ); - - $application_id = $request->request->get("application_id"); - - $res = $this->get("app.applications")->remove($application_id, $this->getUser()->getId()); - - if (!$res) { - $data["errors"][] = "error"; - } else { - - $this->get("administration.counter")->incrementCounter("total_apps", -1); - - $data["data"] = Array("success" => true); - } - - return new Response($data); - - } - -} diff --git a/twake/backend/core/src/Twake/Market/Entity/AccessToken.php b/twake/backend/core/src/Twake/Market/Entity/AccessToken.php deleted file mode 100755 index 624203ec..00000000 --- a/twake/backend/core/src/Twake/Market/Entity/AccessToken.php +++ /dev/null @@ -1,177 +0,0 @@ -<?php - - -namespace Twake\Market\Entity; - -use Doctrine\ORM\Mapping as ORM; - -use Twake\Workspaces\Entity\Workspace; - -/** - * Message - * - * @ORM\Table(name="access_token",options={"engine":"MyISAM", "scylladb_keys": {{"atoken": "ASC", "id": "ASC"}}} ) - * @ORM\Entity() - */ -class AccessToken -{ - /** - * @ORM\Column(name="id", type="twake_timeuuid") - * @ORM\Id - */ - private $id; - - /** - * @ORM\Column(name="atoken", type="twake_no_salt_text") - */ - private $atoken; - - /** - * @ORM\Column(name="application_id", type="twake_timeuuid") - */ - private $application_id; - - /** - * @ORM\Column(name="group_id", type="twake_timeuuid") - */ - private $group_id; - - /** - * @ORM\Column(name="workspace_id", type="twake_timeuuid") - */ - private $workspace_id; - - /** - * @ORM\Column(name="user_id", type="twake_timeuuid") - */ - private $user_id; - - - /** - * @param mixed $tokenaL21 - * - */ - public function resetToken() - { - $this->atoken = bin2hex(random_bytes(64)); - } - - - public function __construct($application_id, $workspace_id, $group_id, $user_id) - { - $this->resetToken(); - $this->setApplicationId($application_id); - $this->setWorkspaceId($workspace_id); - $this->setGroupId($group_id); - $this->setUserId($user_id); - - } - - /** - * @return mixed - */ - public function getId() - { - return $this->id; - } - - /** - * @param mixed $id - */ - public function setId($id) - { - $this->id = $id; - } - - /** - * @return mixed - */ - public function getToken() - { - return $this->atoken; - } - - /** - * @param mixed $token - */ - public function setToken($atoken) - { - $this->atoken = $atoken; - } - - /** - * @return mixed - */ - public function getApplicationId() - { - return $this->application_id; - } - - /** - * @param mixed $application_id - */ - public function setApplicationId($application_id) - { - $this->application_id = $application_id; - } - - /** - * @return mixed - */ - public function getGroupId() - { - return $this->group_id; - } - - /** - * @param mixed $group_id - */ - public function setGroupId($group_id) - { - $this->group_id = $group_id; - } - - /** - * @return mixed - */ - public function getWorkspaceId() - { - return $this->workspace_id; - } - - /** - * @param mixed $workspace_id - */ - public function setWorkspaceId($workspace_id) - { - $this->workspace_id = $workspace_id; - } - - /** - * @return mixed - */ - public function getUserId() - { - return $this->user_id; - } - - /** - * @param mixed $user_id - */ - public function setUserId($user_id) - { - $this->user_id = $user_id; - } - - public function getAsArray() - { - return Array( - "user_id" => $this->getUserId(), - "workspace_id" => $this->getWorkspaceId(), - "group_id" => $this->getGroupId(), - "app_id" => $this->getApplicationId() - ); - } - - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Market/Entity/Application.php b/twake/backend/core/src/Twake/Market/Entity/Application.php deleted file mode 100755 index 02ad5a9b..00000000 --- a/twake/backend/core/src/Twake/Market/Entity/Application.php +++ /dev/null @@ -1,695 +0,0 @@ -<?php - - -namespace Twake\Market\Entity; - -use Doctrine\ORM\Mapping as ORM; - -use Twake\Workspaces\Entity\Workspace; -use Twake\Core\Entity\SearchableObject; - -/** - * Application - * - * @ORM\Table(name="application",options={"engine":"MyISAM", "scylladb_keys": {{"group_id": "ASC", "app_group_name": "ASC", "id": "ASC"}, {"id": "ASC"}, {"simple_name": "ASC"}, {"is_default": "ASC"}}}) - * @ORM\Entity() - */ -class Application extends SearchableObject -{ - - protected $es_type = "applications"; - - // General - - /** - * @ORM\Column(name="id", type="twake_timeuuid") - * @ORM\Id - */ - protected $id; - - /** - * @ORM\Column(name="group_id", type="twake_timeuuid") - * @ORM\Id - */ - protected $group_id; - - /** - * @ORM\Column(name="is_default", type="twake_boolean") - */ - protected $is_default; - - /** - * @ORM\Column(name="app_group_name", type="twake_no_salt_text") - * @ORM\Id - */ - protected $app_group_name; - - /** - * @ORM\Column(name="name", type="twake_text") - */ - protected $name; - - /** - * @ORM\Column(name="simple_name", type="twake_no_salt_text") - */ - protected $simple_name; - - /** - * @ORM\Column(name="description", type="twake_text") - */ - protected $description; - - /** - * @ORM\Column(name="website", type="twake_text") - */ - protected $website; - - /** - * @ORM\Column(name="categories", type="twake_text") - */ - protected $categories; - - /** - * @ORM\Column(name="icon_url", type="twake_text") - */ - protected $icon_url; //Doit finir par un format obligatoirement - - /** - * @ORM\Column(name="public", type="twake_boolean") - */ - protected $public; - - /** - * @ORM\Column(name="twake_team_validation", type="twake_boolean") - */ - protected $twake_team_validation; - - /** - * @ORM\Column(name="is_available_to_public", type="twake_boolean") - */ - protected $is_available_to_public; //Vrai si $public ET $twake_team_validation - - - // Statistiques - - /** - * @ORM\Column(name="install_count", type="integer") - */ - protected $install_count = 0; - - /** - * @ORM\Column(name="creation_date", type="twake_datetime") - */ - protected $creation_date; - - - // API configuration - - /** - * @ORM\Column(name="api_events_url", type="twake_text") - */ - protected $api_events_url; - - /** - * @ORM\Column(name="api_allowed_ip", type="twake_text") - */ - protected $api_allowed_ip; - - /** - * @ORM\Column(name="api_private_key", type="twake_text") - */ - protected $api_private_key; - - - // Access configuration - - /** - * @ORM\Column(name="privileges_capabilities_last_update", type="twake_datetime") - */ - protected $privileges_capabilities_last_update; - - /** - * @ORM\Column(name="privileges", type="twake_text") - */ - protected $privileges = "[]"; - - /** - * @ORM\Column(name="capabilities", type="twake_text") - */ - protected $capabilities = "[]"; - - /** - * @ORM\Column(name="hooks", type="twake_text") - */ - protected $hooks = "[]"; - - - // Display configuration - - /** - * @ORM\Column(name="display_configuration", type="twake_text") - */ - protected $display_configuration = "{}"; - - /** - * Application constructor. - * @param $group_id - * @param $name - */ - public function __construct($group_id, $name) - { - parent::__construct(); - $this->group_id = $group_id; - $this->name = $name; - $this->creation_date = new \DateTime(); - } - - - /** - * @return mixed - */ - public function getId() - { - return $this->id; - } - - /** - * @param mixed $id - */ - public function setId($id) - { - $this->id = $id; - } - - /** - * @return mixed - */ - public function getGroupId() - { - return $this->group_id; - } - - /** - * @param mixed $group_id - */ - public function setGroupId($group_id) - { - $this->group_id = $group_id; - } - - /** - * @return mixed - */ - public function getDefault() - { - return $this->is_default; - } - - /** - * @param mixed $is_default - */ - public function setDefault($is_default) - { - $this->is_default = $is_default; - } - - /** - * @return mixed - */ - public function getApiPrivateKey() - { - return $this->api_private_key; - } - - /** - * @param mixed $api_private_key - */ - public function setApiPrivateKey($api_private_key) - { - $this->api_private_key = $api_private_key; - } - - /** - * @return mixed - */ - public function getAppGroupName() - { - return $this->app_group_name; - } - - /** - * @param mixed $app_group_name - */ - public function setAppGroupName($app_group_name) - { - $this->app_group_name = $app_group_name; - } - - /** - * @return mixed - */ - public function getName() - { - return $this->name; - } - - /** - * @param mixed $name - */ - public function setName($name) - { - $this->name = $name; - } - - /** - * @return mixed - */ - public function getSimpleName() - { - return $this->simple_name; - } - - /** - * @param mixed $simple_name - */ - public function setSimpleName($simple_name) - { - $this->simple_name = $simple_name; - } - - /** - * @return mixed - */ - public function getDescription() - { - return $this->description; - } - - /** - * @param mixed $description - */ - public function setDescription($description) - { - $this->description = $description; - } - - /** - * @return mixed - */ - public function getWebsite() - { - return $this->website; - } - - /** - * @param mixed $website - */ - public function setWebsite($website) - { - $this->website = $website; - } - - /** - * @return mixed - */ - public function getIconUrl() - { - return $this->icon_url; - } - - /** - * @param mixed $icon_url - */ - public function setIconUrl($icon_url) - { - $this->icon_url = $icon_url; - } - - /** - * @return mixed - */ - public function getCategories() - { - return json_decode($this->categories, true); - } - - /** - * @param mixed $categories - */ - public function setCategories($categories) - { - $this->categories = json_encode($categories); - } - - /** - * @return mixed - */ - public function getPublic() - { - return $this->public; - } - - /** - * @param mixed $public - */ - public function setPublic($public) - { - $this->public = $public; - } - - /** - * @return mixed - */ - public function getTwakeTeamValidation() - { - return $this->twake_team_validation; - } - - /** - * @param mixed $twake_team_validation - */ - public function setTwakeTeamValidation($twake_team_validation) - { - $this->twake_team_validation = $twake_team_validation; - } - - /** - * @return mixed - */ - public function getisAvailableToPublic() - { - return $this->is_available_to_public; - } - - /** - * @param mixed $is_available_to_public - */ - public function setIsAvailableToPublic($is_available_to_public) - { - $this->is_available_to_public = $is_available_to_public; - } - - /** - * @return mixed - */ - public function getInstallCount() - { - return $this->install_count; - } - - /** - * @param mixed $install_count - */ - public function setInstallCount($install_count) - { - $this->install_count = max(0, $install_count); - } - - /** - * @return mixed - */ - public function getCreationDate() - { - return $this->creation_date; - } - - /** - * @param mixed $creation_date - */ - public function setCreationDate($creation_date) - { - $this->creation_date = $creation_date; - } - - /** - * @return mixed - */ - public function getApiEventsUrl() - { - return $this->api_events_url; - } - - /** - * @param mixed $api_events_url - */ - public function setApiEventsUrl($api_events_url) - { - $this->api_events_url = $api_events_url; - } - - /** - * @return mixed - */ - public function getApiAllowedIp() - { - return json_decode($this->api_allowed_ip, true); - } - - /** - * @param mixed $api_allowed_ip - */ - public function setApiAllowedIp($api_allowed_ip) - { - $this->api_allowed_ip = json_encode($api_allowed_ip); - } - - /** - * @return mixed - */ - public function getPrivilegesCapabilitiesLastUpdate() - { - return $this->privileges_capabilities_last_update; - } - - /** - * @param mixed $privileges_capabilities_last_update - */ - public function setPrivilegesCapabilitiesLastUpdate($privileges_capabilities_last_update) - { - $this->privileges_capabilities_last_update = $privileges_capabilities_last_update; - } - - /** - * @return mixed - */ - public function getPrivileges() - { - if (!$this->privileges) { - return Array(); - } - return json_decode($this->privileges, true); - } - - /** - * @param mixed $privileges - */ - public function setPrivileges($privileges) - { - $this->privileges = json_encode($privileges); - } - - /** - * @return mixed - */ - public function getCapabilities() - { - if (!$this->capabilities) { - return Array(); - } - return json_decode($this->capabilities, true); - } - - /** - * @param mixed $capabilities - */ - public function setCapabilities($capabilities) - { - $this->capabilities = json_encode($capabilities); - } - - /** - * @return mixed - */ - public function getHooks() - { - if (!$this->hooks) { - return Array(); - } - return json_decode($this->hooks, true); - } - - /** - * @param mixed $hooks - */ - public function setHooks($hooks) - { - $this->hooks = json_encode($hooks); - } - - /** - * @return mixed - */ - public function getDisplayConfiguration() - { - return json_decode($this->display_configuration, true); - } - - /** - * @param mixed $display_configuration - */ - public function setDisplayConfiguration($display_configuration) - { - if (is_string($display_configuration)) { - try { - $_display_configuration = json_decode($display_configuration, true); - } catch (\Exception $e) { - $_display_configuration = $display_configuration; - } - $display_configuration = $_display_configuration; - } - $this->display_configuration = json_encode($display_configuration); - } - - - static public function generatePrivateApiKey() - { - $letters = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; - return str_replace(Array("+", "/", "="), Array($letters[random_int(0, 61)], $letters[random_int(0, 61)], $letters[random_int(0, 61)]), - base64_encode(random_bytes(100))); - } - - public function getAsCredentialArray() - { - $return = []; - $return["api_id"] = $this->getId(); - $return["api_key"] = $this->getApiPrivateKey(); - return $return; - } - - public function getAsArrayForDevelopers() - { - $return = $this->getAsArray(); - - $return["id"] = $this->getId(); - - $return["api_id"] = $this->getId(); - $return["api_key"] = $this->getApiPrivateKey(); - $return["api_event_url"] = $this->getApiEventsUrl(); - $return["api_allowed_ips"] = $this->getApiAllowedIp(); - - $return["privileges"] = $this->getPrivileges(); - $return["capabilities"] = $this->getCapabilities(); - - $return["available_privileges"] = Array( - "channels", //Lister les channels et leur configuration (tabulations etc) - "workspace", //Information sur l’espace de travail - "workspace_calendar", //Information sur le calendrier de l’espace de travail - "workspace_tasks", //Information sur les taches de l’espace de travail - "workspace_drive", //Information sur le drive de l’espace de travail - "drive_list", //Lister documents dans le Drive - "tasks_task_save", - "tasks_task_remove", - //"drive_tree", //Liste des fichiers, noms et autres metadatas - //"drive_files_content", //Téléchargement des fichiers et preview des fichiers - //"messages_history", //Récupérer ou rechercher des messages - //"members", //Lister les membres d’un espace de travail - //"group_members", //Lister les membres d’un groupe entier - //"applications", //Liste des applications déployées sur l’espace de travail (sans le détail de leur configuration) - //"group" //Information sur le groupe - ); - $return["available_capabilities"] = Array( - "display_modal", //Afficher une modal (comme une modal de configuration) - "messages_save", //Envoyer des messages - "messages_remove", - "drive_save", - "drive_remove", - "calendar_event_save", - "calendar_event_remove", - "tasks_task_save", - "tasks_task_remove", - //"drive_add", //Ajouter un fichiers - //"drive_remove", //Supprimer un fichier existant - //"drive_modify", //Modifier un fichier existant - //"drive_add_version", //Ajouter une version à un fichier existant - //"messages_remove", //Supprimer des messages autre que ceux de l’application - //"messages_modify", //Modifier des messages autre que ceux de l’application - //"members_add", //Ajouter un membre - //"members_remove", //Supprimer un membre - //"workspace_add", //Ajouter un espace de travail - //"workspace_remove" //Supprimer un espace de travail - ); - $return["available_hooks"] = Array( - "message", //Nouveau message hook dans un channel particulier (si écouté) - "message_in_workspace", //Nouveau message hook dans tous le workspace - "calendar", - "event", - "task", - "file" - ); - $return["available_categories"] = Array( - "bots", - "data_analysis", - "communication", - "customer_support", - "graphism", - "developers", - "files", - "events", - "health", - "human_resources", - "corporate_culture", - "marketing", - "office", - "finances", - "productivity", - "project_management", - "sales", - "security_compliance", - "entertainment", - "trip", - "voice_video", - "medias_news" - ); - - return $return; - } - - public function getAsArray() - { - $return = Array( - "id" => $this->getId(), - "group_id" => $this->getGroupId(), - "app_group_name" => $this->getAppGroupName(), - "categories" => $this->getCategories(), - "name" => $this->getName(), - "simple_name" => $this->getSimpleName(), - "description" => $this->getDescription(), - "icon_url" => $this->getIconUrl(), - "website" => $this->getWebsite(), - "install_count" => $this->getInstallCount(), - "creation_date" => $this->getCreationDate() ? $this->getCreationDate()->getTimestamp() : new \DateTime(), - "privileges" => $this->getPrivileges(), - "capabilities" => $this->getCapabilities(), - "hooks" => $this->getHooks(), - "display" => $this->getDisplayConfiguration(), - "public" => $this->getPublic(), - "is_available_to_public" => $this->getisAvailableToPublic() - ); - return $return; - } - - public function getIndexationArray() - { - $return = Array( - "app_group_name" => $this->getAppGroupName(), - "name" => $this->getName(), - "simple_name" => $this->getSimpleName(), - "description" => $this->getDescription(), - "categories" => $this->getCategories(), - "group_id" => $this->getGroupId(), - "public" => $this->getisAvailableToPublic() - ); - return $return; - } - -} diff --git a/twake/backend/core/src/Twake/Market/Entity/ApplicationResource.php b/twake/backend/core/src/Twake/Market/Entity/ApplicationResource.php deleted file mode 100755 index fb6b93f6..00000000 --- a/twake/backend/core/src/Twake/Market/Entity/ApplicationResource.php +++ /dev/null @@ -1,169 +0,0 @@ -<?php - - -namespace Twake\Market\Entity; - -use Doctrine\ORM\Mapping as ORM; - -use Twake\Workspaces\Entity\Workspace; -use Twake\Core\Entity\SearchableObject; - -/** - * ApplicationResource - * - * @ORM\Table(name="application_resource",options={"engine":"MyISAM", "scylladb_keys": {{"application_id": "ASC", "workspace_id": "ASC", "id": "ASC"}, {"id": "ASC"}, {"resource_id": "ASC"}}}) - * @ORM\Entity() - */ -class ApplicationResource -{ - - /** - * @ORM\Column(name="id", type="twake_timeuuid") - * @ORM\Id - */ - protected $id; - - /** - * @ORM\Column(name="workspace_id", type="twake_timeuuid") - * @ORM\Id - */ - protected $workspace_id; - - /** - * @ORM\Column(name="application_id", type="twake_timeuuid") - * @ORM\Id - */ - protected $application_id; - - /** - * @ORM\Column(name="resource_type", type="twake_no_salt_text") - */ - protected $resource_type; //directory, channel, workspace, group - - /** - * @ORM\Column(name="resource_id", type="twake_timeuuid") - */ - protected $resource_id; - - /** - * @ORM\Column(name="application_hooks", type="twake_text") - */ - protected $application_hooks; - - /** - * ApplicationResource constructor. - * @param $id - * @param $workspace_id - * @param $application_id - * @param $resource_type - * @param $resource_id - */ - public function __construct($workspace_id, $application_id, $resource_type, $resource_id) - { - $this->workspace_id = $workspace_id; - $this->application_id = $application_id; - $this->resource_type = $resource_type; - $this->resource_id = $resource_id; - } - - /** - * @return mixed - */ - public function getId() - { - return $this->id; - } - - /** - * @param mixed $id - */ - public function setId($id) - { - $this->id = $id; - } - - /** - * @return mixed - */ - public function getWorkspaceId() - { - return $this->workspace_id; - } - - /** - * @param mixed $workspace_id - */ - public function setWorkspaceId($workspace_id) - { - $this->workspace_id = $workspace_id; - } - - /** - * @return mixed - */ - public function getApplicationId() - { - return $this->application_id; - } - - /** - * @param mixed $application_id - */ - public function setApplicationId($application_id) - { - $this->application_id = $application_id; - } - - /** - * @return mixed - */ - public function getResourceType() - { - return $this->resource_type; - } - - /** - * @param mixed $resource_type - */ - public function setResourceType($resource_type) - { - $this->resource_type = $resource_type; - } - - /** - * @return mixed - */ - public function getResourceId() - { - return $this->resource_id; - } - - /** - * @param mixed $resource_id - */ - public function setResourceId($resource_id) - { - $this->resource_id = $resource_id; - } - - /** - * @return mixed - */ - public function getApplicationHooks() - { - if (!$this->application_hooks) { - return Array(); - } - return json_decode($this->application_hooks, true); - } - - /** - * @param mixed $application_hooks - */ - public function setApplicationHooks($application_hooks) - { - $this->application_hooks = json_encode($application_hooks); - } - - -} diff --git a/twake/backend/core/src/Twake/Market/Entity/ApplicationResourceNode.php b/twake/backend/core/src/Twake/Market/Entity/ApplicationResourceNode.php deleted file mode 100755 index ecd199cf..00000000 --- a/twake/backend/core/src/Twake/Market/Entity/ApplicationResourceNode.php +++ /dev/null @@ -1,169 +0,0 @@ -<?php - - -namespace Twake\Market\Entity; - -use Doctrine\ORM\Mapping as ORM; - -use Twake\Workspaces\Entity\Workspace; -use Twake\Core\Entity\SearchableObject; - -/** - * ApplicationResourceNode - * - * @ORM\Table(name="application_resource_node",options={"engine":"MyISAM", "scylladb_keys": {{"application_id": "ASC", "workspace_id": "ASC", "id": "ASC"}, {"id": "ASC"}, {"resource_id": "ASC"}}}) - * @ORM\Entity() - */ -class ApplicationResourceNode -{ - - /** - * @ORM\Column(name="id", type="twake_timeuuid") - * @ORM\Id - */ - protected $id; - - /** - * @ORM\Column(name="workspace_id", type="twake_text") - * @ORM\Id - */ - protected $workspace_id; - - /** - * @ORM\Column(name="application_id", type="twake_text") - * @ORM\Id - */ - protected $application_id; - - /** - * @ORM\Column(name="resource_type", type="twake_no_salt_text") - */ - protected $resource_type; //directory, channel, workspace, group - - /** - * @ORM\Column(name="resource_id", type="twake_text") - */ - protected $resource_id; - - /** - * @ORM\Column(name="application_hooks", type="twake_text") - */ - protected $application_hooks; - - /** - * ApplicationResourceNode constructor. - * @param $id - * @param $workspace_id - * @param $application_id - * @param $resource_type - * @param $resource_id - */ - public function __construct($workspace_id, $application_id, $resource_type, $resource_id) - { - $this->workspace_id = $workspace_id; - $this->application_id = $application_id; - $this->resource_type = $resource_type; - $this->resource_id = $resource_id; - } - - /** - * @return mixed - */ - public function getId() - { - return $this->id; - } - - /** - * @param mixed $id - */ - public function setId($id) - { - $this->id = $id; - } - - /** - * @return mixed - */ - public function getWorkspaceId() - { - return $this->workspace_id; - } - - /** - * @param mixed $workspace_id - */ - public function setWorkspaceId($workspace_id) - { - $this->workspace_id = $workspace_id; - } - - /** - * @return mixed - */ - public function getApplicationId() - { - return $this->application_id; - } - - /** - * @param mixed $application_id - */ - public function setApplicationId($application_id) - { - $this->application_id = $application_id; - } - - /** - * @return mixed - */ - public function getResourceType() - { - return $this->resource_type; - } - - /** - * @param mixed $resource_type - */ - public function setResourceType($resource_type) - { - $this->resource_type = $resource_type; - } - - /** - * @return mixed - */ - public function getResourceId() - { - return $this->resource_id; - } - - /** - * @param mixed $resource_id - */ - public function setResourceId($resource_id) - { - $this->resource_id = $resource_id; - } - - /** - * @return mixed - */ - public function getApplicationHooks() - { - if (!$this->application_hooks) { - return Array(); - } - return json_decode($this->application_hooks, true); - } - - /** - * @param mixed $application_hooks - */ - public function setApplicationHooks($application_hooks) - { - $this->application_hooks = json_encode($application_hooks); - } - - -} diff --git a/twake/backend/core/src/Twake/Market/Resources/Routing.php b/twake/backend/core/src/Twake/Market/Resources/Routing.php deleted file mode 100755 index 594a6a05..00000000 --- a/twake/backend/core/src/Twake/Market/Resources/Routing.php +++ /dev/null @@ -1,29 +0,0 @@ -<?php - -namespace Twake\Market\Resources; - -use Common\BaseRouting; - -class Routing extends BaseRouting -{ - - protected $routing_prefix = "ajax/market/"; - - protected $routes = [ -# Apps management - - "app/search" => ["handler" => "Application:search", "methods" => ["POST"], "security" => ["user_connected_security"]], - "app/find" => ["handler" => "Application:find", "methods" => ["POST"], "security" => ["user_connected_security"]], -# Apps API - - "app/api/event" => ["handler" => "ApplicationApi:event", "methods" => ["POST"], "security" => ["user_connected_security"]], - "app/api/getToken" => ["handler" => "ApplicationApi:getToken", "methods" => ["POST"], "security" => ["user_connected_security"]], -# Apps Developers - - "app/create" => ["handler" => "ApplicationDevelopment:create", "methods" => ["POST"], "security" => ["user_connected_security"]], - "app/remove" => ["handler" => "ApplicationDevelopment:remove", "methods" => ["POST"], "security" => ["user_connected_security"]], - "app/update" => ["handler" => "ApplicationDevelopment:update", "methods" => ["POST"], "security" => ["user_connected_security"]], - "app/get_developed" => ["handler" => "ApplicationDevelopment:getGroupDevelopedApps", "methods" => ["POST"], "security" => ["user_connected_security"]], - ]; - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Market/Resources/Services.php b/twake/backend/core/src/Twake/Market/Resources/Services.php deleted file mode 100755 index 754a8f61..00000000 --- a/twake/backend/core/src/Twake/Market/Resources/Services.php +++ /dev/null @@ -1,16 +0,0 @@ -<?php - -namespace Twake\Market\Resources; - -use Common\BaseServices; - -class Services extends BaseServices -{ - - protected $services = [ - "app.applications" => "MarketApplication", - "app.applications_api" => "ApplicationApi", - "website_api_market.data_token" => "DataTokenSystem", - ]; - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Market/Services/ApplicationApi.php b/twake/backend/core/src/Twake/Market/Services/ApplicationApi.php deleted file mode 100755 index a6dc6d9e..00000000 --- a/twake/backend/core/src/Twake/Market/Services/ApplicationApi.php +++ /dev/null @@ -1,420 +0,0 @@ -<?php - -namespace Twake\Market\Services; - -use Twake\Market\Entity\AccessToken; -use Twake\Market\Entity\Application; -use Twake\Market\Entity\ApplicationResourceNode; -use App\App; - -class ApplicationApi -{ - private $app; - private $doctrine; - private $rest_client; - - public function __construct(App $app) - { - $this->app = $app; - $this->doctrine = $app->getServices()->get("app.twake_doctrine"); - $this->rest_client = $app->getServices()->get("app.restclient"); - } - - - public function generatedToken($app_id, $workspace_id, $group_id, $user_id) - { - - $entity = new AccessToken($app_id, $workspace_id, $group_id, $user_id); - $this->doctrine->useTTLOnFirstInsert(60 * 60); - $this->doctrine->persist($entity); - $this->doctrine->flush(); - - return $entity->getToken(); - - } - - /** - * @param $request - * @param array $capabilities - * @param array $privileges - * @return array|Application - */ - public function getAppFromRequest($request, $capabilities = [], $privileges = []) - { - - $header = $request->headers->get("Authorization"); - $explode1 = explode(" ", $header); - - if (count($explode1) == 2 && $explode1[0] == "Basic") { - - $exploser2 = explode(":", base64_decode($explode1[1])); - - if (count($exploser2) == 2) { - $id = $exploser2[0]; - $privateKey = $exploser2[1]; - - $application = $this->get($id); - - if ($application != null) { - $key = $application->getApiPrivateKey(); - - if ($key == $privateKey) { - - $group_id = $request->request->get("group_id", null); - - $group_app = $this->doctrine->getRepository("Twake\Workspaces:GroupApp")->findOneBy(Array("app_id" => $application->getId(), "group" => $group_id)); - - if($group_app->getPrivileges() === null){ - return $application; - } - - if ((!$group_id || !$group_app) && (count($capabilities) > 0 || count($privileges) > 0)) { - return Array("error" => "you_need_to_provide_a_valid_group_id_field_in_any_api_request", "group_id" => $group_id); - } - - $can_do_it = false; - if ($group_id) { - $can_do_it = $this->hasCapability($application->getId(), $group_id, $capabilities, $group_app); - } - if (!$can_do_it) { - return Array("error" => "you_do_not_have_this_set_of_required_capabilities", "capabilities" => $capabilities); - } - - if ($group_id) { - $can_do_it = $this->hasPrivilege($application->getId(), $group_id, $privileges, $group_app); - } - if (!$can_do_it) { - return Array("error" => "you_do_not_have_this_set_of_required_privileges", "privileges" => $privileges); - } - - return $application; - } - - } - } - - } - - return Array("error" => "unknown_application_or_bad_private_key"); - - } - - /** - * @param $app_id - * @return Application - */ - public function get($app_id) - { - return $this->doctrine->getRepository("Twake\Market:Application")->findOneBy(Array("id" => $app_id)); - } - - public function hasCapability($app_id, $group_id, $capabilities = [], $group_app = null) - { - $app = $this->get($app_id); - $group_app = $group_app ? $group_app : $this->doctrine->getRepository("Twake\Workspaces:GroupApp")->findOneBy(Array("app_id" => $app_id, "group" => $group_id)); - - if (!$group_app || !$app) { - return false; - } - - if (count($capabilities) == 0) { - return true; - } - - $accepted_capabilities = $group_app->getCapabilities(); - - $ok = true; - foreach ($capabilities as $capability) { - if ($accepted_capabilities && !in_array($capability, $accepted_capabilities)) { - $ok = false; - } - } - if ($ok) { - return true; - } - - $app_capabilities = $app->getCapabilities(); - - $ok = true; - foreach ($capabilities as $capability) { - if (!in_array($capability, $app_capabilities)) { - $ok = false; - } - } - if (!$ok) { - return false; - } - - //This app is developed by the group - if ($group_id == $app->getGroupId()) { - return true; - } - - //TODO send an email to the group managers to update the app because it was not updated with latest capabilities - - return false; - } - - public function hasPrivilege($app_id, $group_id, $privileges = [], $group_app = null) - { - $app = $this->get($app_id); - $group_app = $group_app ? $group_app : $this->doctrine->getRepository("Twake\Workspaces:GroupApp")->findOneBy(Array("app_id" => $app_id, "group" => $group_id)); - - if (!$group_app || !$app) { - return false; - } - - if (count($privileges) == 0) { - return true; - } - - $accepted_privileges = $group_app->getPrivileges(); - - $ok = true; - foreach ($privileges as $privilege) { - if (!in_array($privilege, $accepted_privileges)) { - $ok = false; - } - } - if ($ok) { - return true; - } - - $app_privileges = $app->getPrivileges(); - - $ok = true; - foreach ($privileges as $privilege) { - if (!in_array($privilege, $app_privileges)) { - $ok = false; - } - } - if (!$ok) { - return false; - } - - //This app is developed by the group - if ($group_id == $app->getGroupId()) { - return true; - } - - //TODO send an email to the group managers to update the app because it was not updated with latest privileges - - return false; - } - - public function hasResource($app_id, $workspace_id, $resource_type, $resource_id) - { - } - - public function setAsync() - { - $this->async = true; - } - - public function unsetAsyncAndFlush() - { - $this->async = false; - if ($this->curl_rcx) { - $this->curl_rcx->execute(); - } - } - - public function getResources($workspace_id, $resource_type, $resource_id) - { - $repo = $this->doctrine->getRepository("Twake\Market:ApplicationResourceNode"); - $list = $repo->findBy(Array("resource_id" => $resource_id)); - $final_list = []; - foreach ($list as $el) { - if ($el->getWorkspaceId() == $workspace_id) { - $final_list[] = $el; - } - } - return $final_list; - } - - public function addResource($app_id, $workspace_id, $resource_type, $resource_id, $current_user_id = null) - { - $repo = $this->doctrine->getRepository("Twake\Market:Application"); - $app = $repo->findOneBy(Array("id" => $app_id)); - - if (!$app) { - return false; - } - - $repo = $this->doctrine->getRepository("Twake\Workspaces:Workspace"); - $workspace = $repo->findOneBy(Array("id" => $workspace_id)); - - if (!$workspace) { - return false; - } - - $current_user = null; - if ($current_user_id) { - $repo = $this->doctrine->getRepository("Twake\Users:User"); - $current_user = $repo->findOneBy(Array("id" => $current_user_id)); - } - - //Verify we do not have this resource - $repo = $this->doctrine->getRepository("Twake\Market:ApplicationResourceNode"); - $candidates = $repo->findBy(Array("application_id" => $app_id, "workspace_id" => $workspace_id)); - - foreach ($candidates as $candidate) { - if ($candidate->getResourceId() == $resource_id) { //No necessity to verufy type as uuid are universaly unique - return true; - } - } - - $resource = new ApplicationResourceNode($workspace_id, $app_id, $resource_type, $resource_id); - $resource->setApplicationHooks($app->getHooks()); - $this->doctrine->persist($resource); - $this->doctrine->flush(); - - $this->notifyApp($app_id, "resource", "add", Array( - "workspace" => $workspace, - "resource" => Array( - "id" => $resource_id, - "type" => $resource_type - ), - "user" => $current_user - )); - - return true; - - } - - public function notifyApp($app_id, $type, $event, $data) - { - - $event = Array( - "type" => $type, - "event" => $event, - "data" => $data - ); - - if(isset($event["data"]["message"])){ - $event["data"]["message"]["channel_id"] = $event["data"]["message"]["cache"]["channel_id"]; - $event["data"]["message"]["workspace_id"] = $event["data"]["message"]["cache"]["workspace_id"]; - } - - if (!$this->curl_rcx) { - $this->curl_rcx = new RollingCurlX(10); - $this->curl_rcx->setOptions([ - CURLOPT_SSL_VERIFYPEER => false - ]); - $this->curl_rcx->setTimeout(3000); - $this->curl_rcx->setHeaders(['Content-Type: application/json']); - } - - $repo = $this->doctrine->getRepository("Twake\Market:Application"); - $app = $repo->findOneBy(Array("id" => $app_id)); - - if (!$app) { - return false; - } - - $event_route = $app->getApiEventsUrl(); - - //Check route is correct - if (!parse_url($event_route, PHP_URL_HOST)) { - return false; - } - $event_route = preg_replace("/^\/+/", "", $event_route); - - //Hack for having same set of apps in beta and web - $betaHack = explode("/bundle/connectors/", $event_route); - if(count($betaHack) > 1){ - $server_route = rtrim($this->app->getContainer()->getParameter("env.internal_server_name")?:$this->app->getContainer()->getParameter("env.server_name"), "/"); - $event_route = $server_route . "/bundle/connectors/" . $betaHack[1]; - } - //Hack to send to connectors wich server to respond - $event["_origin"] = $this->app->getContainer()->getParameter("env.server_name"); - - $use_https = false; - if (strpos($event_route, "https") === 0) { - $use_https = true; - } - - $event_route = preg_replace("/^https?+:\/\//", "", $event_route); - $event_route = preg_replace("/\/+/", "/", $event_route); - $parts = explode("/", $event_route); - if (count($parts) == 1 || $parts[1] == "" || $parts[0] == "") { - return false; //No domain or no route - } - - if ($use_https) { - $event_route = "https://" . $event_route; - } else { - $event_route = "http://" . $event_route; - } - - - $data = json_encode($event); - - try { - - $this->curl_rcx->addRequest($event_route, $data); - - if (!$this->async) { - $this->curl_rcx->execute(); - } - - } catch (\Exception $e) { - //Timeout exceeded maybe - } - - return true; - - } - - public function removeResource($app_id, $workspace_id, $resource_type, $resource_id, $current_user_id = null) - { - $repo = $this->doctrine->getRepository("Twake\Market:Application"); - $app = $repo->findOneBy(Array("id" => $app_id)); - - if (!$app) { - return false; - } - - $repo = $this->doctrine->getRepository("Twake\Workspaces:Workspace"); - $workspace = $repo->findOneBy(Array("id" => $workspace_id)); - - if (!$workspace) { - return false; - } - - $current_user = null; - if ($current_user_id) { - $repo = $this->doctrine->getRepository("Twake\Users:User"); - $current_user = $repo->findOneBy(Array("id" => $current_user_id)); - } - - //Verify we have this resource - $repo = $this->doctrine->getRepository("Twake\Market:ApplicationResourceNode"); - $candidates = $repo->findBy(Array("application_id" => $app_id, "workspace_id" => $workspace_id)); - - $choosen = null; - foreach ($candidates as $candidate) { - if ($candidate->getResourceId() == $resource_id) { //No necessity to verufy type as uuid are universaly unique - $choosen = $candidate; - } - } - - if ($choosen) { - $this->doctrine->remove($choosen); - $this->doctrine->flush(); - } - - $this->notifyApp($app_id, "resource", "remove", Array( - "workspace" => $workspace, - "resource" => Array( - "id" => $resource_id, - "type" => $resource_type - ), - "user" => $current_user - )); - - return true; - - } - -} diff --git a/twake/backend/core/src/Twake/Market/Services/DataTokenSystem.php b/twake/backend/core/src/Twake/Market/Services/DataTokenSystem.php deleted file mode 100755 index 105eeb54..00000000 --- a/twake/backend/core/src/Twake/Market/Services/DataTokenSystem.php +++ /dev/null @@ -1,54 +0,0 @@ -<?php -/** - * Created by PhpStorm. - * User: ehlnofey - * Date: 08/06/18 - * Time: 11:53 - */ - -namespace Twake\Market\Services; - -use App\App; -use Twake\Market\Entity\DataToken; - -class DataTokenSystem -{ - public function __construct(App $app) - { - $this->doctrine = $app->getServices()->get("app.twake_doctrine"); - } - - public function makeToken($workspaceId, $userId) - { - $dataToken = new DataToken($workspaceId, $userId); - - $this->doctrine->persist($dataToken); - $this->doctrine->flush(); - - return $dataToken; - } - - public function getDataToken($token) - { - $dataTokenRepository = $this->doctrine->getRepository("Twake\Market:DataToken"); - $dataToken = $dataTokenRepository->findOneBy(Array("token" => $token)); - if ($dataToken == null) - return false; - - $data["workspaceId"] = $dataToken->getWorkspaceId(); - $data["userId"] = $dataToken->getUserId(); - - $dataTokenRepository->removeToken($dataToken->getToken()); - - return $data; - } - - public function checkWorkspaceUser($workspaceId, $userId) - { - $workspaceUserRepository = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceUser"); - - $workspaceUser = $workspaceUserRepository->findOneBy(Array("workspace_id" => $workspaceId, "user_id" => $userId)); - - return $workspaceUser != null; - } -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Market/Services/MarketApplication.php b/twake/backend/core/src/Twake/Market/Services/MarketApplication.php deleted file mode 100755 index b7d1e899..00000000 --- a/twake/backend/core/src/Twake/Market/Services/MarketApplication.php +++ /dev/null @@ -1,353 +0,0 @@ -<?php - -namespace Twake\Market\Services; - -use Twake\Market\Entity\Application; -use Twake\Market\Model\MarketApplicationInterface; -use App\App; - -class MarketApplication -{ - private $doctrine; - private $gms; - - public function __construct(App $app) - { - $this->doctrine = $app->getServices()->get("app.twake_doctrine"); - $this->gms = $app->getServices()->get("app.group_managers"); - } - - public function findBySimpleName($name, $entity = false) - { - $repo = $this->doctrine->getRepository("Twake\Market:Application"); - $app = $repo->findOneBy(Array("simple_name" => $name)); - return ($app && !$entity) ? $app->getAsArray() : $app; - } - - public function getCredentials($simple_name){ - $repo = $this->doctrine->getRepository("Twake\Market:Application"); - $app = $repo->findOneBy(Array("simple_name" => $simple_name)); - return ($app) ? $app->getAsCredentialArray() : false; - } - - public function find($id, $entity = false) - { - $repo = $this->doctrine->getRepository("Twake\Market:Application"); - $app = $repo->findOneBy(Array("id" => $id)); - return ($app && !$entity) ? $app->getAsArray() : $app; - } - - public function createApp($workspace_id, $name, $simple_name, $app_group_name, $current_user_id) - { - - $group_id = "00000000-0000-1000-0000-000000000000"; - if($workspace_id || $current_user_id != null){ - $groupRepository = $this->doctrine->getRepository("Twake\Workspaces:Workspace"); - $workspace = $groupRepository->findOneBy(Array("id" => $workspace_id)); - $group_id = $workspace->getGroup(); - } - - if ($current_user_id == null - || $this->gms->hasPrivileges( - $this->gms->getLevel($group_id, $current_user_id), - "MANAGE_APPS" - ) - ) { - - if (!$name || !$simple_name || (!$workspace_id && $current_user_id != null)) { - return false; - } - - $application = new Application($group_id, $name); - $application->setCreationDate(new \DateTime()); - $application->setAppGroupName($app_group_name); - - $application->setSimpleName($simple_name); - - $application->setApiPrivateKey(Application::generatePrivateApiKey()); - - $this->doctrine->persist($application); - $this->doctrine->flush(); - - return $application->getAsArrayForDevelopers(); - - } - return false; - } - - public function getGroupDevelopedApps($workspace_id, $current_user_id) - { - - $group_id = "00000000-0000-1000-0000-000000000000"; - if($workspace_id || $current_user_id != null){ - $groupRepository = $this->doctrine->getRepository("Twake\Workspaces:Workspace"); - $workspace = $groupRepository->findOneBy(Array("id" => $workspace_id)); - $group_id = $workspace->getGroup(); - } - - if ($current_user_id == null - || $this->gms->hasPrivileges( - $this->gms->getLevel($group_id, $current_user_id), - "MANAGE_APPS" - ) - ) { - - $repo = $this->doctrine->getRepository("Twake\Market:Application"); - $apps = $repo->findBy(Array("group_id" => $group_id)); - - $list = []; - - foreach ($apps as $app) { - $list[] = $app->getAsArrayForDevelopers(); - } - - return $list; - - } - return []; - } - - public function findAppBySimpleName($simple_name, $include_private_apps = false) - { - - $repo = $this->doctrine->getRepository("Twake\Market:Application"); - - $app = $repo->findOneBy(Array("simple_name" => $simple_name)); - - if (!$app) { - return false; - } - - if (!$include_private_apps && !$app->getisAvailableToPublic()) { - return false; - } - - return $app->getAsArray(); - } - - public function update($application, $current_user_id) - { - - $applicationRepository = $this->doctrine->getRepository("Twake\Market:Application"); - /** - * @var Application $application_original - */ - $application_original = $applicationRepository->findOneBy(Array('id' => $application["id"])); - - if ($application_original) { - - $group_id = $application_original->getGroupId(); - if ($current_user_id == null - || $this->gms->hasPrivileges( - $this->gms->getLevel($group_id, $current_user_id), - "MANAGE_APPS" - ) - ) { - - if (!$application_original->getPublic()) { - - $application_original->setSimpleName($application["simple_name"]); - $application_original->setName($application["name"]); - $application_original->setDescription($application["description"]); - $application_original->setIconUrl($application["icon_url"]); - $application_original->setWebsite($application["website"]); - $application_original->setCategories($application["categories"]); - - $old_privileges = $application_original->getPrivileges(); - $old_capabilities = $application_original->getCapabilities(); - $changed = false; - foreach ($application["privileges"] as $pr) { - if (!in_array($pr, $old_privileges)) { - $changed = true; - } - } - foreach ($application["capabilities"] as $pr) { - if (!in_array($pr, $old_capabilities)) { - $changed = true; - } - } - - if ($changed) { - $application_original->setPrivilegesCapabilitiesLastUpdate(new \DateTime()); - $application_original->setTwakeTeamValidation(false); - $application_original->setIsAvailableToPublic(false); - } - - $application_original->setPrivileges($application["privileges"]); - $application_original->setCapabilities($application["capabilities"]); - $application_original->setHooks($application["hooks"]); - - $application_original->setDisplayConfiguration($application["display"]); - } - - $application_original->setApiAllowedIp($application["api_allowed_ips"]); - - if (strpos($application["api_event_url"], "https") === 0 || !$application_original->getisAvailableToPublic()) { - $application_original->setApiEventsUrl($application["api_event_url"]); - } - - $application_original->setPublic($application["public"]); - if (!$application["public"]) { - $application_original->setTwakeTeamValidation(false); - $application_original->setIsAvailableToPublic(false); - } - - $this->doctrine->persist($application_original); - $this->doctrine->flush(); - - return $application_original->getAsArrayForDevelopers(); - - } - - } - - return false; - - } - - public function toggleAppDefault($application_id, $status = null){ - $appsRepository = $this->doctrine->getRepository("Twake\Market:Application"); - $app = $appsRepository->findOneBy(array("id" => $application_id)); - - $rep = false; - - if ($app) { - - $app->setEsIndexed(false); - - if($status === null){ - $status = !$app->getDefault(); - } - - $app->setDefault($status); - $this->doctrine->persist($app); - } - - $this->doctrine->flush(); - } - - public function toggleAppValidation($application_id, $status = null){ - $appsRepository = $this->doctrine->getRepository("Twake\Market:Application"); - $app = $appsRepository->findOneBy(array("id" => $application_id)); - - $rep = false; - - if ($app) { - - $app->setEsIndexed(false); - - if ($app->getPublic()) { - - if($status === null){ - $status = !$app->getIsAvailableToPublic(); - } - - $app->setIsAvailableToPublic($status); - if(!$status){ - $app->setPublic(false); - } - $this->doctrine->persist($app); - } - } - - $this->doctrine->flush(); - } - - public function remove($application_id, $current_user_id) - { - - $applicationRepository = $this->doctrine->getRepository("Twake\Market:Application"); - $application = $applicationRepository->findOneBy(Array('id' => $application_id)); - - if ($application) { - - $group_id = $application->getGroupId(); - if ($current_user_id == null - || $this->gms->hasPrivileges( - $this->gms->getLevel($group_id, $current_user_id), - "MANAGE_APPS" - ) - ) { - - if (!$application->getisAvailableToPublic()) { - - $this->doctrine->getRepository("Twake\Market:ApplicationResourceNode")->removeBy(Array("application_id" => $application->getId())); - //TODO REMOVE EVERYWHERE - - $this->doctrine->remove($application); - $this->doctrine->flush(); - - return true; - - } - - } - - } - - return false; - - } - - - public function search($group_id, $query, $current_user_id = null) - { - - $allows_unpublished_apps_from_group_id = "null"; - if ($current_user_id == null - || $this->gms->hasPrivileges( - $this->gms->getLevel($group_id, $current_user_id), - "MANAGE_APPS" - ) - ) { - $allows_unpublished_apps_from_group_id = $group_id; - } - - $options = Array( - "repository" => "Twake\Market:Application", - "index" => "applications", - "fallback_keys" => Array( - "name" => $query - ), - "query" => Array( - "bool" => Array( - "filter" => Array( - "query_string" => Array( - "query" => "group_id:" . $allows_unpublished_apps_from_group_id . " OR public:true" - ) - ), - "must" => Array( - "query_string" => Array( - "query" => "*" . $query . "*" - ) - ) - ) - ) - ); - - $applications = $this->doctrine->es_search($options); - - $result = []; - foreach ($applications["result"] as $application) { - $application = $application[0]; - if ($allows_unpublished_apps_from_group_id == $application->getGroupId() || $application->getPublic()) { - $result[] = $application->getAsArray(); - } - } - - if(count($result) === 0){ - $app = $this->findAppBySimpleName($query); - if($app){ - $result[] = $app; - }else{ - $app = $this->findAppBySimpleName("twake.".$query); - if($app){ - $result[] = $app; - } - } - } - - return $result; - } - -} diff --git a/twake/backend/core/src/Twake/Market/Services/RollingCurlX.php b/twake/backend/core/src/Twake/Market/Services/RollingCurlX.php deleted file mode 100755 index 44077a68..00000000 --- a/twake/backend/core/src/Twake/Market/Services/RollingCurlX.php +++ /dev/null @@ -1,263 +0,0 @@ -<?php - -namespace Twake\Market\Services; - -/* - ---------- RollingCurlX 3.0.2 ----------- - an easy to use curl_multi wrapper for php - Copyright (c) 2015-2017 Marcus Leath - License: MIT - https://github.com/marcushat/RollingCurlX -*/ - -class RollingCurlX -{ - public $requests = []; - private $_curl_version; //max. number of simultaneous connections allowed - private $_maxConcurrent = 0; //shared cURL options - private $_options = []; //shared cURL request headers - private $_headers = []; //default callback - private $_callback = NULL; //all requests must be completed by this time - private $_timeout = 5000; //request_queue - private $curle_msgs = [CURLE_OK => 'OK', CURLE_UNSUPPORTED_PROTOCOL => 'UNSUPPORTED_PROTOCOL', CURLE_FAILED_INIT => 'FAILED_INIT', CURLE_URL_MALFORMAT => 'URL_MALFORMAT', CURLE_URL_MALFORMAT_USER => 'URL_MALFORMAT_USER', CURLE_COULDNT_RESOLVE_PROXY => 'COULDNT_RESOLVE_PROXY', CURLE_COULDNT_RESOLVE_HOST => 'COULDNT_RESOLVE_HOST', CURLE_COULDNT_CONNECT => 'COULDNT_CONNECT', CURLE_FTP_WEIRD_SERVER_REPLY => 'FTP_WEIRD_SERVER_REPLY', CURLE_FTP_ACCESS_DENIED => 'FTP_ACCESS_DENIED', CURLE_FTP_USER_PASSWORD_INCORRECT => 'FTP_USER_PASSWORD_INCORRECT', CURLE_FTP_WEIRD_PASS_REPLY => 'FTP_WEIRD_PASS_REPLY', CURLE_FTP_WEIRD_USER_REPLY => 'FTP_WEIRD_USER_REPLY', CURLE_FTP_WEIRD_PASV_REPLY => 'FTP_WEIRD_PASV_REPLY', CURLE_FTP_WEIRD_227_FORMAT => 'FTP_WEIRD_227_FORMAT', CURLE_FTP_CANT_GET_HOST => 'FTP_CANT_GET_HOST', CURLE_FTP_CANT_RECONNECT => 'FTP_CANT_RECONNECT', CURLE_FTP_COULDNT_SET_BINARY => 'FTP_COULDNT_SET_BINARY', CURLE_PARTIAL_FILE => 'PARTIAL_FILE', CURLE_FTP_COULDNT_RETR_FILE => 'FTP_COULDNT_RETR_FILE', CURLE_FTP_WRITE_ERROR => 'FTP_WRITE_ERROR', CURLE_FTP_QUOTE_ERROR => 'FTP_QUOTE_ERROR', CURLE_HTTP_NOT_FOUND => 'HTTP_NOT_FOUND', CURLE_WRITE_ERROR => 'WRITE_ERROR', CURLE_MALFORMAT_USER => 'MALFORMAT_USER', CURLE_FTP_COULDNT_STOR_FILE => 'FTP_COULDNT_STOR_FILE', CURLE_READ_ERROR => 'READ_ERROR', CURLE_OUT_OF_MEMORY => 'OUT_OF_MEMORY', CURLE_OPERATION_TIMEOUTED => 'OPERATION_TIMEOUTED', CURLE_FTP_COULDNT_SET_ASCII => 'FTP_COULDNT_SET_ASCII', CURLE_FTP_PORT_FAILED => 'FTP_PORT_FAILED', CURLE_FTP_COULDNT_USE_REST => 'FTP_COULDNT_USE_REST', CURLE_FTP_COULDNT_GET_SIZE => 'FTP_COULDNT_GET_SIZE', CURLE_HTTP_RANGE_ERROR => 'HTTP_RANGE_ERROR', CURLE_HTTP_POST_ERROR => 'HTTP_POST_ERROR', CURLE_SSL_CONNECT_ERROR => 'SSL_CONNECT_ERROR', CURLE_FTP_BAD_DOWNLOAD_RESUME => 'FTP_BAD_DOWNLOAD_RESUME', CURLE_FILE_COULDNT_READ_FILE => 'FILE_COULDNT_READ_FILE', CURLE_LDAP_CANNOT_BIND => 'LDAP_CANNOT_BIND', CURLE_LDAP_SEARCH_FAILED => 'LDAP_SEARCH_FAILED', CURLE_LIBRARY_NOT_FOUND => 'LIBRARY_NOT_FOUND', CURLE_FUNCTION_NOT_FOUND => 'FUNCTION_NOT_FOUND', CURLE_ABORTED_BY_CALLBACK => 'ABORTED_BY_CALLBACK', CURLE_BAD_FUNCTION_ARGUMENT => 'BAD_FUNCTION_ARGUMENT', CURLE_BAD_CALLING_ORDER => 'BAD_CALLING_ORDER', CURLE_HTTP_PORT_FAILED => 'HTTP_PORT_FAILED', CURLE_BAD_PASSWORD_ENTERED => 'BAD_PASSWORD_ENTERED', CURLE_TOO_MANY_REDIRECTS => 'TOO_MANY_REDIRECTS', CURLE_UNKNOWN_TELNET_OPTION => 'UNKNOWN_TELNET_OPTION', CURLE_TELNET_OPTION_SYNTAX => 'TELNET_OPTION_SYNTAX', CURLE_OBSOLETE => 'OBSOLETE', CURLE_SSL_PEER_CERTIFICATE => 'SSL_PEER_CERTIFICATE', CURLE_GOT_NOTHING => 'GOT_NOTHING', CURLE_SSL_ENGINE_NOTFOUND => 'SSL_ENGINE_NOTFOUND', CURLE_SSL_ENGINE_SETFAILED => 'SSL_ENGINE_SETFAILED', CURLE_SEND_ERROR => 'SEND_ERROR', CURLE_RECV_ERROR => 'RECV_ERROR', CURLE_SHARE_IN_USE => 'SHARE_IN_USE', CURLE_SSL_CERTPROBLEM => 'SSL_CERTPROBLEM', CURLE_SSL_CIPHER => 'SSL_CIPHER', CURLE_SSL_CACERT => 'SSL_CACERT', CURLE_BAD_CONTENT_ENCODING => 'BAD_CONTENT_ENCODING', CURLE_LDAP_INVALID_URL => 'LDAP_INVALID_URL', CURLE_FILESIZE_EXCEEDED => 'FILESIZE_EXCEEDED', CURLE_FTP_SSL_FAILED => 'FTP_SSL_FAILED', CURLE_SSH => 'SSH' - ]; - - function __construct($max_concurrent = 10) - { - $this->setMaxConcurrent($max_concurrent); - $this->_curl_version = curl_version()['version']; - } - - public function setMaxConcurrent($max_requests) - { - if ($max_requests > 0) { - $this->_maxConcurrent = $max_requests; - } - } - - public function setOptions(array $options) - { - $this->_options = $options; - } - - public function setHeaders(array $headers) - { - if (is_array($headers) && count($headers)) { - $this->_headers = $headers; - } - } - - public function setCallback(callable $callback) - { - $this->_callback = $callback; - } - - //Add a request to the request queue - - public function setTimeout($timeout) - { //in milliseconds - if ($timeout > 0) { - $this->_timeout = $timeout; - } - } - - //Reset request queue - - public function addRequest( - $url, - $post_data = NULL, - callable $callback = NULL, //individual callback - $user_data = NULL, - array $options = NULL, //individual cURL options - array $headers = NULL //individual cURL request headers - ) - { //Add to request queue - $this->requests[] = [ - 'url' => $url, - 'post_data' => ($post_data) ? $post_data : NULL, - 'callback' => ($callback) ? $callback : $this->_callback, - 'user_data' => ($user_data) ? $user_data : NULL, - 'options' => ($options) ? $options : NULL, - 'headers' => ($headers) ? $headers : NULL - ]; - return count($this->requests) - 1; //return request number/index - } - - public function execute() - { - //the request map that maps the request queue to request curl handles - $requests_map = []; - $multi_handle = curl_multi_init(); - $num_outstanding = 0; - //start processing the initial request queue - $num_initial_requests = min($this->_maxConcurrent, count($this->requests)); - for ($i = 0; $i < $num_initial_requests; $i++) { - $this->init_request($i, $multi_handle, $requests_map); - $num_outstanding++; - } - do { - do { - $mh_status = curl_multi_exec($multi_handle, $active); - } while ($mh_status == CURLM_CALL_MULTI_PERFORM); - if ($mh_status != CURLM_OK) { - break; - } - //a request is just completed, find out which one - while ($completed = curl_multi_info_read($multi_handle)) { - $this->process_request($completed, $multi_handle, $requests_map); - $num_outstanding--; - //try to add/start a new requests to the request queue - while ( - $num_outstanding < $this->_maxConcurrent && //under the limit - $i < count($this->requests) && isset($this->requests[$i]) // requests left - ) { - $this->init_request($i, $multi_handle, $requests_map); - $num_outstanding++; - $i++; - } - } - usleep(15); //save CPU cycles, prevent continuous checking - } while ($active || count($requests_map)); //End do-while - $this->reset(); - curl_multi_close($multi_handle); - } - - //Execute the request queue - - private function init_request($request_num, $multi_handle, &$requests_map) - { - $request =& $this->requests[$request_num]; - $this->addTimer($request); - $ch = curl_init(); - $options = $this->buildOptions($request); - $request['options_set'] = $options; //merged options - $opts_set = curl_setopt_array($ch, $options); - if (!$opts_set) { - echo 'options not set'; - exit; - } - curl_multi_add_handle($multi_handle, $ch); - //add curl handle of a new request to the request map - $ch_hash = (string)$ch; - $requests_map[$ch_hash] = $request_num; - } - - //Build individual cURL options for a request - - private function addTimer(array &$request) - { //adds timer object to request - $request['timer'] = microtime(true); //start time - $request['time'] = false; //default if not overridden by time later - } - - private function buildOptions(array $request) - { - $url = $request['url']; - $post_data = $request['post_data']; - $individual_opts = $request['options']; - $individual_headers = $request['headers']; - $options = ($individual_opts) ? $individual_opts + $this->_options : $this->_options; //merge shared and individual request options - $headers = ($individual_headers) ? $individual_headers + $this->_headers : $this->_headers; //merge shared and individual request headers - //the below will overide the corresponding default or individual options - $options[CURLOPT_RETURNTRANSFER] = true; - $options[CURLOPT_NOSIGNAL] = 1; - if (version_compare($this->_curl_version, '7.16.2') >= 0) { - $options[CURLOPT_CONNECTTIMEOUT_MS] = $this->_timeout; - $options[CURLOPT_TIMEOUT_MS] = $this->_timeout; - unset($options[CURLOPT_CONNECTTIMEOUT]); - unset($options[CURLOPT_TIMEOUT]); - } else { - $options[CURLOPT_CONNECTTIMEOUT] = round($this->_timeout / 1000); - $options[CURLOPT_TIMEOUT] = round($this->_timeout / 1000); - unset($options[CURLOPT_CONNECTTIMEOUT_MS]); - unset($options[CURLOPT_TIMEOUT_MS]); - } - if ($url) { - $options[CURLOPT_URL] = $url; - } - if ($headers) { - $options[CURLOPT_HTTPHEADER] = $headers; - } - // enable POST method and set POST parameters - if ($post_data !== null) { - $options[CURLOPT_POST] = 1; - $options[CURLOPT_POSTFIELDS] = is_array($post_data) ? http_build_query($post_data) : $post_data; - } - return $options; - } - - private function process_request($completed, $multi_handle, array &$requests_map) - { - $ch = $completed['handle']; - $ch_hash = (string)$ch; - $request =& $this->requests[$requests_map[$ch_hash]]; //map handler to request index to get request info - $request_info = curl_getinfo($ch); - $request_info['curle'] = $completed['result']; - $request_info['curle_msg'] = isset($this->curle_msgs[$completed['result']]) ? $this->curle_msgs[$completed['result']] : curl_strerror($completed['result']); - $request_info['handle'] = $ch; - $request_info['time'] = $time = $this->stopTimer($request); //record request time - $request_info['url_raw'] = $url = $request['url']; - $request_info['user_data'] = $user_data = $request['user_data']; - if (curl_errno($ch) !== 0 || intval($request_info['http_code']) !== 200) { //if server responded with http error - $response = false; - } else { //sucessful response - $response = curl_multi_getcontent($ch); - } - //get request info - $callback = $request['callback']; - $options = $request['options_set']; - if ($response && !empty($options[CURLOPT_HEADER])) { - $k = intval($request_info['header_size']); - $request_info['response_header'] = substr($response, 0, $k); - $response = substr($response, $k); - } - //remove completed request and its curl handle - unset($requests_map[$ch_hash]); - curl_multi_remove_handle($multi_handle, $ch); - //call the callback function and pass request info and user data to it - if ($callback) { - call_user_func($callback, $response, $url, $request_info, $user_data, $time); - } - $request = NULL; //free up memory now just incase response was large - } - - private function stopTimer(array &$request) - { - $elapsed = microtime(true) - $request['timer']; - $request['time'] = $elapsed; - unset($request['timer']); - return $elapsed; - } - - public function reset() - { - $this->requests = []; - } - - private function normalize_headers(array $headers) - { - $normalized = []; - foreach ($headers as $key => $header) { - if (is_string($key)) { - $normal = "$key: $header"; - } else { - $header; - } - $normalized = []; - } - } - - private function check_for_timeouts($mh) - { //DO NOT USE!!! Not implemented yet. - $now = microtime(true); - $requests = $this->_requests; - foreach ($requests as $request) { - $timeout = $request->timeout; - $start_time = $request->start_time; - $ch = $request->handle; - if ($now >= $start_time + $timeout) { - curl_multi_remove_handle($mh, $ch); - } - } - } -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Notifications/Bundle.php b/twake/backend/core/src/Twake/Notifications/Bundle.php deleted file mode 100755 index 4e1c2200..00000000 --- a/twake/backend/core/src/Twake/Notifications/Bundle.php +++ /dev/null @@ -1,30 +0,0 @@ -<?php - -namespace Twake\Notifications; - -require_once __DIR__ . "/Resources/Routing.php"; -require_once __DIR__ . "/Resources/Services.php"; - -use Twake\Notifications\Resources\Routing; -use Twake\Notifications\Resources\Services; -use Common\BaseBundle; - -class Bundle extends BaseBundle -{ - - protected $bundle_root = __DIR__; - protected $bundle_namespace = __NAMESPACE__; - protected $routes = []; - protected $services = []; - - public function init() - { - $routing = new Routing(); - $this->routes = $routing->getRoutes(); - $this->routing_prefix = $routing->getRoutesPrefix(); - $this->initRoutes(); - - $this->services = (new Services())->getServices(); - $this->initServices(); - } -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Notifications/Command/NotificationMailCommand.php b/twake/backend/core/src/Twake/Notifications/Command/NotificationMailCommand.php deleted file mode 100755 index 51c89813..00000000 --- a/twake/backend/core/src/Twake/Notifications/Command/NotificationMailCommand.php +++ /dev/null @@ -1,134 +0,0 @@ -<?php - -namespace Twake\Notifications\Command; - -use Emojione\Client; -use Emojione\Ruleset; -use Common\Commands\ContainerAwareCommand; -use Symfony\Component\Console\Input\InputInterface; -use Symfony\Component\Console\Output\OutputInterface; -use Twake\Core\Services\DoctrineAdapter\ManagerAdapter; -use Twake\Core\Services\Queues\Scheduled; -use Twake\Notifications\Entity\MailNotificationQueue; -use Twake\Notifications\Entity\UserNotificationStatus; -use Twake\Users\Entity\User; - - -class NotificationMailCommand extends ContainerAwareCommand -{ - - protected function configure() - { - $this->setName("twake:notifications_mail"); - } - - protected function execute() - { - - $services = $this->getApp()->getServices(); - $em = $services->get('app.twake_doctrine'); - /** @var Scheduled $scheduled */ - $scheduled = $services->get("app.queues_scheduled"); - - $repo = $em->getRepository("Twake\Notifications:MailNotificationQueue"); - - $limit = date("U", date("U") + 60); - - while (date("U") < $limit) { - - $reminders = $scheduled->consume("mail_reminder", true); - - if (count($reminders ?: []) == 0) { - break; - } - - //Get users to notify - foreach ($reminders ?: [] as $reminder_original) { - - $reminder = $scheduled->getMessage($reminder_original); - - /** @var ManagerAdapter $entry */ - $entry = $repo->findOneBy(Array("id" => $reminder["id"], "user_id" => $reminder["user_id"])); - - if ($entry && $entry->getToken() === $reminder["token"]) { - - $user_notification_status = $em->getRepository("Twake\Notifications:UserNotificationStatus")->findOneBy(Array("user_id" => $entry->getUserId())); - if (!$user_notification_status) { - $user_notification_status = new UserNotificationStatus($entry->getUserId()); - } - - if ($user_notification_status->getMailStatus() == 0) { - $user_notification_status->setMailStatus(1); - - $users = []; - $users[] = Array("user" => $entry->getUserId(), "date" => $entry->getDate()->getTimestamp()); - $em->remove($entry); - - $em->persist($user_notification_status); - $this->sendMail($users, "messages_notifications"); - $em->flush(); - } - - } - - $scheduled->ack("mail_reminder", $reminder_original); - - } - - } - - } - - /** - * @param $users_id_count - * @param string $template - * @param null $app - * @param bool $all_and_delete - */ - protected function sendMail($users_ids, $template = "unread_notifications") - { - - $services = $this->getApp()->getServices(); - $em = $services->get('app.twake_doctrine'); - - $emojione_client = new Client(new Ruleset()); - - foreach ($users_ids as $user) { - - $user_id = $user["user"]; - $date = $user["date"]; - - /** @var $user User */ - $user = $em->getRepository("Twake\Users:User")->find($user_id); - - $preferences = $user->getNotificationPreference(); - $mail_preferences = isset($preferences["mail_notifications"]) ? $preferences["mail_notifications"] : 2; - - if ($mail_preferences == 0) { - continue; - } - - $count = max(0, $user->getNotificationWriteIncrement() - $user->getNotificationReadIncrement()); - $notifications = $em->getRepository("Twake\Notifications:Notification")->findBy(Array("user" => $user_id), Array(), $count); - - $data = Array( - "username" => $user->getFullName(), - "total_notifications" => $count, - "notifications" => Array() - ); - - foreach ($notifications as $notification) { - $data["notifications"][] = Array( - "title" => html_entity_decode($emojione_client->shortnameToUnicode($notification->getTitle()), ENT_NOQUOTES, 'UTF-8'), - "delay" => (new \DateTime())->diff($notification->getDate())->format("%h"), - "text" => html_entity_decode($emojione_client->shortnameToUnicode($notification->getText()), ENT_NOQUOTES, 'UTF-8') - ); - } - - $services->get("app.twake_mailer")->send($user->getEmail(), $template, $data); - - } - - } - -} diff --git a/twake/backend/core/src/Twake/Notifications/Controller/Base.php b/twake/backend/core/src/Twake/Notifications/Controller/Base.php deleted file mode 100755 index f4479a98..00000000 --- a/twake/backend/core/src/Twake/Notifications/Controller/Base.php +++ /dev/null @@ -1,110 +0,0 @@ -<?php - -namespace Twake\Notifications\Controller; - -use Common\BaseController; -use Common\Http\Response; -use Common\Http\Request; - -class Base extends BaseController -{ - - public function getAction() - { - - $messages = $this->get("app.twake_doctrine")->getRepository("Twake\Market:Application")->findOneBy(Array("simple_name" => "messages")); - - $notifs = $this->get("app.notifications")->getAll($this->getUser()); - $data = Array(); - foreach ($notifs as $notif) { - $obj = $notif->getAsArray(); - $data[] = $obj; - } - return new Response(Array("data" => $data)); - - } - - public function remove(Request $request) - { - $data = Array( - 'errors' => Array(), - 'data' => Array() - ); - - $application_tmp = $request->request->get("application"); - $workspace_id_tmp = $request->request->get("workspace_id"); - - $application_id = isset($application_tmp["id"]) ? $application_tmp["id"] : $application_tmp; - - $workspace_id = $this->get("app.twake_doctrine")->getRepository("Twake\Workspaces:Workspace")->findOneBy(Array("id" => $workspace_id_tmp)); - $application = $this->get("app.twake_doctrine")->getRepository("Twake\Market:Application")->findOneBy(Array("id" => $application_id)); - - $user = $this->getUser(); - $delete = $this->get('app.notifications')->deleteAll($application, $workspace_id, $user, null, false); - if (!$delete) { - $data["errors"][] = "no removal made"; - } else { - $data["data"][] = "success"; - } - - return new Response($data); - } - - public function deleteAllExceptMessages(Request $request) - { - $data = Array( - 'errors' => Array(), - 'data' => Array() - ); - - $user = $this->getUser(); - $delete = $this->get('app.notifications')->deleteAllExceptMessages($user); - - if (!$delete) { - $data["errors"][] = "no removal made"; - } else { - $data["data"][] = "success"; - } - - return new Response($data); - } - - public function readAllExceptMessages(Request $request) - { - $data = Array( - 'errors' => Array(), - 'data' => Array() - ); - - $user = $this->getUser(); - $delete = $this->get('app.notifications')->readAllExceptMessages($user); - - if (!$delete) { - $data["errors"][] = "no read made"; - } else { - $data["data"][] = "success"; - } - - return new Response($data); - } - - - public function readAll(Request $request) - { - $data = Array( - 'errors' => Array(), - 'data' => Array() - ); - - $user = $this->getUser(); - $delete = $this->get('app.notifications')->readAll($user); - if (!$delete) { - $data["errors"][] = "no read made"; - } else { - $data["data"][] = "success"; - } - - return new Response($data); - } - -} diff --git a/twake/backend/core/src/Twake/Notifications/Entity/MailNotificationQueue.php b/twake/backend/core/src/Twake/Notifications/Entity/MailNotificationQueue.php deleted file mode 100755 index c7b1a52d..00000000 --- a/twake/backend/core/src/Twake/Notifications/Entity/MailNotificationQueue.php +++ /dev/null @@ -1,100 +0,0 @@ -<?php - -namespace Twake\Notifications\Entity; - -use Doctrine\ORM\Mapping as ORM; - - -/** - * Mail - * - * @ORM\Table(name="mail_push_queue",options={"engine":"MyISAM", "scylladb_keys":{{"id":"ASC"}, {"user_id":"ASC"} }}) - * @ORM\Entity() - */ -class MailNotificationQueue -{ - /** - * @var int - * - * @ORM\Column(name="id", type="twake_timeuuid") - * @ORM\Id - */ - private $id; - - /** - * @ORM\Column(type="twake_no_salt_text") - */ - private $user_id; - - /** - * @ORM\Column(type="twake_datetime") - */ - private $date; - - /** - * @ORM\Column(type="twake_text") - */ - private $atoken; - - - public function __construct($user_id) - { - $this->date = new \DateTime(); - $this->user_id = $user_id; - } - - /** - * @return int - */ - public function setId($id) - { - $this->id = $id; - } - - public function getId() - { - return $this->id; - } - - /** - * @return \DateTime - */ - public function setDate($date) - { - $this->date = $date; - } - - /** - * @return \DateTime - */ - public function getDate() - { - return $this->date; - } - - /** - * @return \DateTime - */ - public function getUserId() - { - return $this->user_id; - } - - /** - * @return mixed - */ - public function getToken() - { - return $this->atoken; - } - - /** - * @param mixed $token - */ - public function setToken($token): void - { - $this->atoken = $token; - } - - -} diff --git a/twake/backend/core/src/Twake/Notifications/Entity/Notification.php b/twake/backend/core/src/Twake/Notifications/Entity/Notification.php deleted file mode 100755 index 1bba4c4a..00000000 --- a/twake/backend/core/src/Twake/Notifications/Entity/Notification.php +++ /dev/null @@ -1,305 +0,0 @@ -<?php - -namespace Twake\Notifications\Entity; - -use Doctrine\ORM\Mapping as ORM; - - -/** - * Mail - * - * @ORM\Table(name="notification",options={"engine":"MyISAM", "scylladb_keys":{ {"user_id":"ASC", "id":"DESC"}, {"id":"DESC"} }}) - * @ORM\Entity() - */ -class Notification -{ - /** - * @var int - * - * @ORM\Column(name="id", type="twake_timeuuid") - * @ORM\Id - */ - private $id; - - /** - * @ORM\Column(type="twake_no_salt_text") - * @ORM\Id - */ - private $application_id; - - /** - * @ORM\Column(type="twake_no_salt_text") - */ - private $channel_id; - - /** - * @ORM\Column(type="twake_no_salt_text") - * @ORM\Id - */ - private $workspace_id; - - /** - * @ORM\ManyToOne(targetEntity="Twake\Users\Entity\User") - * @ORM\Id - */ - private $user; - - /** - * @ORM\Column(type="twake_no_salt_text", nullable=true) - */ - private $code; - - /** - * @ORM\Column(type="twake_no_salt_text", nullable=true) - */ - private $shortcut; - - /** - * @ORM\Column(type="twake_text", nullable=true) - */ - private $title; - - /** - * @ORM\Column(type="twake_text", nullable=true) - */ - private $text; - - /** - * @ORM\Column(type="twake_text") - */ - private $data = "{}"; - - /** - * @ORM\Column(type="twake_datetime") - */ - private $date; - - /** - * @ORM\Column(type="integer", nullable=false) - */ - private $mail_sent = 0; - - /** - * @ORM\Column(type="twake_datetime", nullable=true) - */ - private $last_mail = null; - - /** - * @ORM\Column(type="twake_boolean" , options={"default" : true}) - */ - private $isread; - - public function __construct($application_id, $workspace_id, $channel_id, $user) - { - $this->date = new \DateTime(); - $this->application_id = $application_id; - $this->workspace_id = $workspace_id; - $this->channel_id = $channel_id; - $this->user = $user; - $this->setIsRead(false); - } - - /** - * @return int - */ - public function setId($id) - { - $this->id = $id; - } - - public function getId() - { - return $this->id; - } - - /** - * @return mixed - */ - public function getApplicationId() - { - return $this->application_id; - } - - /** - * @return mixed - */ - public function getWorkspaceId() - { - return $this->workspace_id; - } - - /** - * @return \DateTime - */ - public function getDate() - { - return $this->date; - } - - /** - * @return mixed - */ - public function getUser() - { - return $this->user; - } - - /** - * @return mixed - */ - public function getCode() - { - return $this->code; - } - - /** - * @param mixed $code - */ - public function setCode($code) - { - $this->code = $code; - } - - /** - * @return mixed - */ - public function getTitle() - { - return $this->title; - } - - /** - * @param mixed $title - */ - public function setTitle($title) - { - $this->title = $title; - } - - /** - * @return mixed - */ - public function getText() - { - return $this->text; - } - - /** - * @param mixed $text - */ - public function setText($text) - { - $this->text = $text; - } - - /** - * @return mixed - */ - public function getData() - { - if (!$this->data) { - return null; - } - return json_decode($this->data, 1); - } - - /** - * @param mixed $data - */ - public function setData($data) - { - $this->data = json_encode($data); - } - - /** - * @return mixed - */ - public function getMailSent() - { - return $this->mail_sent; - } - - /** - * @param mixed $mail_sent - */ - public function setMailSent($mail_sent) - { - $this->mail_sent = $mail_sent; - } - - /** - * @return mixed - */ - public function getLastMail() - { - return $this->last_mail; - } - - /** - * @param mixed $last_mail - */ - public function setLastMail($last_mail) - { - $this->last_mail = $last_mail; - } - - /** - * @return mixed - */ - public function getChannelId() - { - return $this->channel_id; - } - - - public function getAsArray() - { - return Array( - "id" => $this->getId(), - "date" => $this->getDate()->getTimestamp(), - "code" => $this->getCode(), - "workspace_id" => ($this->getWorkspaceId() ? $this->getWorkspaceId() : null), - "application_id" => ($this->getApplicationId() ? $this->getApplication() : null), - "channel_id" => ($this->getChannelId() ? $this->getChannelId() : null), - "title" => $this->getTitle(), - "text" => $this->getText(), - "is_read" => $this->getisRead(), - "data" => $this->getData() - ); - } - - /** - * @return mixed - */ - public function getisRead() - { - return $this->isread; - } - - /** - * @param mixed $isread - */ - public function setIsRead($isread) - { - $this->isread = $isread; - } - - /** - * @return mixed - */ - public function getShortcut() - { - return $this->shortcut; - } - - /** - * @param mixed $shortcut - */ - public function setShortcut($shortcut) - { - $this->shortcut = $shortcut; - } - - -} - diff --git a/twake/backend/core/src/Twake/Notifications/Entity/PushNotificationQueue.php b/twake/backend/core/src/Twake/Notifications/Entity/PushNotificationQueue.php deleted file mode 100755 index d9edac04..00000000 --- a/twake/backend/core/src/Twake/Notifications/Entity/PushNotificationQueue.php +++ /dev/null @@ -1,89 +0,0 @@ -<?php - -namespace Twake\Notifications\Entity; - -use Doctrine\ORM\Mapping as ORM; - - -/** - * Mail - * - * @ORM\Table(name="push_queue",options={"engine":"MyISAM"}) - * @ORM\Entity() - */ -class PushNotificationQueue -{ - /** - * @var int - * - * @ORM\Column(name="id", type="twake_timeuuid") - * @ORM\Id - */ - private $id; - - /** - * @ORM\Column(type="twake_text", nullable=true) - */ - private $text; - - /** - * @ORM\Column(type="twake_datetime") - */ - private $date; - - - public function __construct($text) - { - $this->date = new \DateTime(); - $this->text = json_encode($text); - } - - /** - * @return int - */ - public function setId($id) - { - $this->id = $id; - } - - public function getId() - { - return $this->id; - } - - /** - * @return \DateTime - */ - public function getDate() - { - return $this->date; - } - - /** - * @return mixed - */ - public function getText() - { - return json_decode($this->text); - } - - /** - * @param mixed $text - */ - public function setText($text) - { - $this->text = json_encode($text); - } - - - public function getAsArray() - { - return Array( - "id" => $this->getId(), - "date" => $this->getDate()->getTimestamp(), - "text" => $this->getText() - ); - } - -} - diff --git a/twake/backend/core/src/Twake/Notifications/Entity/UserNotificationStatus.php b/twake/backend/core/src/Twake/Notifications/Entity/UserNotificationStatus.php deleted file mode 100755 index 424bba75..00000000 --- a/twake/backend/core/src/Twake/Notifications/Entity/UserNotificationStatus.php +++ /dev/null @@ -1,78 +0,0 @@ -<?php - -namespace Twake\Notifications\Entity; - -use Doctrine\ORM\Mapping as ORM; - - -/** - * Mail - * - * @ORM\Table(name="user_notification_status",options={"engine":"MyISAM", "scylladb_keys":{ {"user_id":"ASC", "id":"DESC"} }}) - * @ORM\Entity() - */ -class UserNotificationStatus -{ - /** - * @var int - * - * @ORM\Column(name="id", type="twake_timeuuid") - * @ORM\Id - */ - private $id; - - /** - * @ORM\Column(name="user_id", type="twake_timeuuid") - * @ORM\Id - */ - private $user_id; - - /** - * @ORM\Column(type="integer") - */ - private $mail_status; - - /** - * UserNotificationStatus constructor. - * @param $user - */ - public function __construct($user_id) - { - $this->user_id = $user_id; - } - - /** - * @return int - */ - public function getId() - { - return $this->id; - } - - /** - * @param int $id - */ - public function setId($id) - { - $this->id = $id; - } - - /** - * @return mixed - */ - public function getMailStatus() - { - return $this->mail_status; - } - - /** - * @param mixed $mail_status - */ - public function setMailStatus($mail_status) - { - $this->mail_status = $mail_status; - } - - -} - diff --git a/twake/backend/core/src/Twake/Notifications/Resources/Routing.php b/twake/backend/core/src/Twake/Notifications/Resources/Routing.php deleted file mode 100755 index 6aaba6d2..00000000 --- a/twake/backend/core/src/Twake/Notifications/Resources/Routing.php +++ /dev/null @@ -1,20 +0,0 @@ -<?php - -namespace Twake\Notifications\Resources; - -use Common\BaseRouting; - -class Routing extends BaseRouting -{ - - protected $routing_prefix = "ajax/notifications/"; - - protected $routes = [ - #Collections - //"get" => ["handler" => "Base:getAction", "methods" => ["POST"], "security" => ["user_connected_security"]], - //"remove" => ["handler" => "Base:remove", "methods" => ["POST"], "security" => ["user_connected_security"]], - //"deleteAll" => ["handler" => "Base:deleteAllExceptMessages", "methods" => ["POST"], "security" => ["user_connected_security"]], - //"readAll" => ["handler" => "Base:readAll", "methods" => ["POST"], "security" => ["user_connected_security"]], - ]; - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Notifications/Resources/Services.php b/twake/backend/core/src/Twake/Notifications/Resources/Services.php deleted file mode 100755 index b1077392..00000000 --- a/twake/backend/core/src/Twake/Notifications/Resources/Services.php +++ /dev/null @@ -1,16 +0,0 @@ -<?php - -namespace Twake\Notifications\Resources; - -use Common\BaseServices; - -class Services extends BaseServices -{ - - protected $services = [ - "app.notifications" => "Notifications", -// arguments: ["@app.twake_doctrine","@app.websockets", "@app.twake_mailer", "@app.restclient", "%PUSH_NOTIFICATION_SERVER%", "%STANDALONE%", "%LICENCE_KEY%"] -// public: true - ]; - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Notifications/Services/Notifications.php b/twake/backend/core/src/Twake/Notifications/Services/Notifications.php deleted file mode 100755 index 55314e45..00000000 --- a/twake/backend/core/src/Twake/Notifications/Services/Notifications.php +++ /dev/null @@ -1,645 +0,0 @@ -<?php - - -namespace Twake\Notifications\Services; - -use App\App; -use Emojione\Client; -use Emojione\Ruleset; -use Twake\Core\Services\DoctrineAdapter\ManagerAdapter; -use Twake\Core\Services\Queues\Adapters\QueueManager; -use Twake\Core\Services\Queues\Scheduled; -use Twake\Notifications\Entity\MailNotificationQueue; -use Twake\Notifications\Entity\Notification; -use Twake\Notifications\Entity\PushNotificationQueue; -use Twake\Notifications\Model\NotificationsInterface; -use Twake\Users\Entity\User; - -/** - * Class Notifications - * @package Twake\Users\Services - * - * Gestion des notifications - */ -class Notifications -{ - - /** @var ManagerAdapter */ - var $doctrine; - var $circle; - var $pushNotificationServer; - var $standalone; - var $licenceKey; - /** @var QueueManager */ - var $queues; - /** @var Scheduled */ - var $scheduled_queues; - - public function __construct(App $app) - { - $this->doctrine = $app->getServices()->get("app.twake_doctrine"); - $this->queues = $app->getServices()->get("app.queues")->getAdapter(); - $this->scheduled_queues = $app->getServices()->get("app.queues_scheduled"); - $this->pusher = $app->getServices()->get("app.websockets"); - $this->mailer = $app->getServices()->get("app.twake_mailer"); - $this->circle = $app->getServices()->get("app.restclient"); - $this->pushNotificationServer = $app->getContainer()->getParameter("PUSH_NOTIFICATION_SERVER"); - $this->standalone = $app->getContainer()->getParameter("env.standalone"); - $this->licenceKey = $app->getContainer()->getParameter("env.licence_key"); - $this->emojione_client = new Client(new Ruleset()); - } - - // Collections part - public function init($route, $data, $current_user = null) - { - if (!is_string($current_user) && $current_user && explode("/", $route)[1] == $current_user->getId()) { - return true; - } - return false; - } - - /** - * @param null $application Application where the notification is from "null" = messaging service - * @param null $sender_application Application generating the notification - * @param null $sender_user User generating the notification - * @param null $workspace Workspace where the notification can be found - * @param null $channel Channel where the notification can be found - * @param null $users List of users which receive the notification - * @param null $code Identifier for the notification (mass deletion) - * @param null $text Text for the notification - * @param null $message Message - * @param null $additionnal_data - * @param array $type Types of notification : "push" and "mail" - * @param bool $save_notification Add notification to log or not (default true) - */ - public function pushNotification( - $application = null, - $sender_application = null, - $sender_user = null, - $workspace = null, - $channel = null, - $users = null, - $code = null, - $text = null, - $message = null, - $additionnal_data = Array(), - $type = Array(), - $save_notification = true - ) - { - - $text = trim($text); - $text = preg_replace("/ +/", " ", $text); - - //Construct title and text according with metadata - if ($sender_user) { - $title = $sender_user->getFullName(); - } else if ($sender_application) { - $title = $sender_application->getName(); - } else if ($application) { - $title = $application->getName(); - } else { - $title = "Notification"; - } - if ($channel && !$channel->getDirect()) { - $title .= " to "; - if ($channel->getIcon()) { - $title .= $channel->getIcon() . " "; - } - $title .= $channel->getName(); - } - if ($workspace) { - $group = $this->doctrine->getRepository("Twake\Workspaces:Group")->findOneBy(["id" => $workspace->getGroup()]); - $title .= " in " . $workspace->getName() . " (" . $group->getName() . ")"; - } - - if (($application || $sender_application) && $sender_user) { - if ($application) { - $text = $application->getName() . " : " . $text; - } else { - $text = $sender_application->getName() . " : " . $text; - } - } - //End title and text construction - - $data = Array( - "type" => "add", - - "company_id" => ($workspace != null ? $workspace->getGroup() : null), - "workspace_id" => ($workspace != null ? $workspace->getId() : null), - "channel_id" => ($channel != null ? $channel->getId() : null), - "message_id" => $message->getId(), - "thread_id" => $message->getParentMessageId(), - - "application_id" => ($application != null ? $application->getId() : null), - "sender_application_id" => ($sender_application != null ? $sender_application->getId() : null), - "sender_user_id" => ($sender_user != null ? $sender_user->getId() : null), - - "title" => $title, - "original_text" => $text, - "text" => $text, - "code" => $code, - "type" => $type, - "additionnal_data" => $additionnal_data, - ); - - $device_minimal_data = Array( - "company_id" => ($workspace != null ? $workspace->getGroup() : null), - "workspace_id" => ($workspace != null ? $workspace->getId() : null), - "channel_id" => ($channel != null ? $channel->getId() : null), - "message_id" => $message->getId(), - "thread_id" => $message ? $message->getParentMessageId() : "", - "click_action" => "FLUTTER_NOTIFICATION_CLICK", - ); - - $toPush = true; - - $count = count($users); - for ($i = 0; $i < $count; $i++) { - - $data["text"] = $data["original_text"]; - - $user = $this->doctrine->getRepository("Twake\Users:User")->find($users[$i]); - - if (!$user) { - continue; - } - - //Verify that user want this notification - - $notificationPreference = $user->getNotificationPreference(); - - $notification_disabled = false; - if ($notificationPreference["disable_until"] > 0) { - $delta = $notificationPreference["disable_until"] - time(); - if ($delta > 0) { - $notification_disabled = true; - } - } - - $mail_preferences = isset($notificationPreference["mail_notifications"]) ? $notificationPreference["mail_notifications"] : 2; - - $useDevices = false; - if ($data["workspace_id"] != null) { - $workspace_id = $data["workspace_id"]; - $disabled_workspaces = $notificationPreference["disabled_workspaces"]; - if (in_array($workspace_id . "", $disabled_workspaces)) { - return false; - } - if ($application != null) { - if (isset($notificationPreference["workspace"][$workspace_id . ""])) { - if (isset($notificationPreference["workspace"][$workspace_id . ""][$application->getId() . ""])) { - $toPush = false; - } - } - } - } - if ($notificationPreference["devices"] == 0) { - $useDevices = true; - } - if ($notificationPreference["devices"] == 1 && !$user->isConnected()) { - $useDevices = true; - } - if ($useDevices) { - $currentDate = gmdate("H") + floor(gmdate("i") / 30) / 2; - if ($notificationPreference["dont_disturb_between"] != null && $notificationPreference["dont_disturb_and"] != null) { - - if ($notificationPreference["dont_disturb_between"] < $notificationPreference["dont_disturb_and"] - && $currentDate >= $notificationPreference["dont_disturb_between"] - && $currentDate < $notificationPreference["dont_disturb_and"] - ) { - $useDevices = false; - } - if ($notificationPreference["dont_disturb_between"] > $notificationPreference["dont_disturb_and"] - && ($currentDate >= $notificationPreference["dont_disturb_between"] - || $currentDate < $notificationPreference["dont_disturb_and"]) - ) { - $useDevices = false; - } - - } - } - if (!$notificationPreference["dont_use_keywords"]) { - $keywords = explode(",", $notificationPreference["keywords"]); - $keywords[] = $user->getUsername(); - $present = false; - foreach ($keywords as $keyword) { - $keyword = trim($keyword); - $keyword = " " . $keyword . " "; - if (mb_strrpos(mb_strtolower($title . " " . $text . " "), mb_strtolower($keyword)) >= 0) { - $present = true; - } - } - if (!$present) { - continue; - } - } - if ($notificationPreference["privacy"]) { - $data["text"] = "[Private]"; - } - - $n = new Notification($application ? $application->getId() : "", $workspace ? $workspace->getId() : "", $channel ? $channel->getId() : "", $user); - if ($additionnal_data) { - $n->setData($additionnal_data); - } - if ($code) { - $n->setCode($code); - } - if ($text) { - $n->setText($text); - } - if ($title) { - $n->setTitle($title); - } - - if ($save_notification) { - $this->doctrine->persist($n); - - if ($mail_preferences == 2 || $mail_preferences == 1) { - $this->addMailReminder($user); - } - - } - - if (in_array("push", $type) && $toPush && !$notification_disabled) { - - $totalNotifications = 1; - if ($useDevices) { - @$this->pushDevice($user, $data["text"], $title, $totalNotifications, $device_minimal_data, false); - } else { - @$this->updateDeviceBadge($user, $totalNotifications, Array(), false); - } - - } - if (in_array("mail", $type)) { - @$this->sendMail($application, $workspace, $user, $text); - } - - if ($toPush && !$notification_disabled) { - $ws_data = Array( - "client_id" => "system", - "action" => "save", - "object_type" => "", - "object" => $n->getAsArray() - ); - $this->pusher->push("notifications/" . $user->getId(), $ws_data); - } - - } - - $this->doctrine->flush(); - - } - - public function pushDevice($user, $text, $title, $badge = null, $data = null, $doPush = true) - { - - $devicesRepo = $this->doctrine->getRepository("Twake\Users:Device"); - $devices = $devicesRepo->findBy(Array("user_id" => $user->getId())); - - $title = html_entity_decode($this->emojione_client->shortnameToUnicode($title), ENT_NOQUOTES, 'UTF-8'); - $text = html_entity_decode($this->emojione_client->shortnameToUnicode($text), ENT_NOQUOTES, 'UTF-8'); - - $count = count($devices); - for ($i = 0; $i < $count; $i++) { - $device = $devices[$i]; - - $token = $device->getValue(); - - $this->pushDeviceInternal($device->getType(), $token, - mb_substr($text, 0, 100) . (mb_strlen($title) > 100 ? "..." : ""), - mb_substr($title, 0, 50) . (mb_strlen($title) > 50 ? "..." : ""), - $badge, - $data, - $doPush - ); - - - } - } - - public function pushDeviceInternal($type, $deviceId, $message, $title, $badge, $_data, $doPush = true) - { - - if (mb_strlen($deviceId) < 32) { //False device - return; - } - - $data = Array( - "message" => $message, - "title" => $title, - "data" => json_encode($_data), - "badge" => $badge, - "device_id" => $deviceId, - "type" => $type - ); - - $this->queues->push("push_notification", $data); - } - - public function updateDeviceBadge($user, $badge = 0, $data = null, $doPush = true) - { - - $devicesRepo = $this->doctrine->getRepository("Twake\Users:Device"); - $devices = $devicesRepo->findBy(Array("user_id" => $user)); - - $count = count($devices); - for ($i = 0; $i < $count; $i++) { - $device = $devices[$i]; - - $token = $device->getValue(); - - $this->pushDeviceInternal($device->getType(), $token, - null, - null, - $badge, - $data, - $doPush - ); - - - } - } - - - /* Private */ - - public function sendMail($application, $workspace, $user, $text) - { - - $text = html_entity_decode($this->emojione_client->shortnameToUnicode($text), ENT_NOQUOTES, 'UTF-8'); - - $this->mailer->send($user->getEmail(), "notification", Array( - "_language" => $user ? $user->getLanguage() : "en", - "application_name" => ($application) ? $application->getName() : "Twake", - "workspace_name" => ($workspace) ? $workspace->getName() : "Account", - "username" => $user->getUsername(), - "text" => $text - )); - } - - public function deleteAll($application, $workspace, $user, $code = null, $force = false) - { - - //TODO - /* - $nRepo = $this->doctrine->getRepository("Twake\Notifications:Notification"); - - $search = Array( - "user" => $user - ); - - if ($code) { - $search["code"] = $code; - } - - if ($application) { - $search["application"] = $application; - } - - if ($workspace) { - $search["workspace"] = $workspace; - } - - $notif = $nRepo->findBy($search); - - $count = count($notif); - for($i = 0; $i < $count; $i++) { - $this->doctrine->remove($notif[$i]); - } - - if ($count == 0){ - return false; - } - - if($count>0 || $force) { - $this->doctrine->flush(); - - $totalNotifications = $this->countAll($user); - - $data = Array( - "action"=>"remove", - "workspace_id"=>($workspace)?$workspace->getId():null, - "app_id"=>($application)?$application->getId():null - ); - $this->pusher->push($data, "notifications/".$user->getId()); - - $this->updateDeviceBadge($user, $totalNotifications); - return true; - } - */ - - return true; - - - } - - public function readAll($user) - { - - $this->removeMailReminder($user); - - $has_notification_group = false; - $has_notification_workspace = false; - - $group_members = $this->doctrine->getRepository("Twake\Workspaces:GroupUser")->findBy(Array("user" => $user)); - foreach ($group_members as $group_member) { - if ($group_member->getHasNotifications()) { - $has_notification_group = true; - $group_member->setHasNotifications(false); - $this->doctrine->persist($group_member); - } - } - $this->doctrine->flush(); - - if ($has_notification_group) { - - $workspace_members = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceUser")->findBy(Array("user_id" => $user->getId())); - foreach ($workspace_members as $workspace_member) { - if ($workspace_member->getHasNotifications()) { - $has_notification_workspace = true; - $workspace_member->setHasNotifications(false); - $this->doctrine->persist($workspace_member); - } - } - $this->doctrine->flush(); - - } - - $channel_members = $this->doctrine->getRepository("Twake\Channels:ChannelMember")->findBy(Array("direct" => true, "user_id" => $user->getId())); - if ($has_notification_workspace) { - $channel_members = array_merge($channel_members, $this->doctrine->getRepository("Twake\Channels:ChannelMember")->findBy(Array("direct" => false, "user_id" => $user->getId()))); - } - foreach ($channel_members as $channel_member) { - - $channel = $this->doctrine->getRepository("Twake\Channels:Channel")->findOneBy(Array("id" => $channel_member->getChannelId())); - if (!$channel) { - $this->doctrine->remove($channel_member); - } - if ($channel && $channel->getMessagesIncrement() != $channel_member->getLastMessagesIncrement()) { - $channel_member->setLastMessagesIncrement($channel->getMessagesIncrement()); - $this->doctrine->persist($channel_member); - } - } - $this->doctrine->flush(); - - } - - /** - * @param $user User - */ - public function removeMailReminder($user) - { - if (!$user) { - return; - } - - $user_notification_status = $this->doctrine->getRepository("Twake\Notifications:UserNotificationStatus")->findOneBy(Array("user_id" => $user->getId())); - if ($user_notification_status) { - $user_notification_status->setMailStatus(0); - $this->doctrine->persist($user_notification_status); - } - - $user->setNotificationReadIncrement($user->getNotificationWriteIncrement()); - $this->doctrine->persist($user); - - $repo = $this->doctrine->getRepository("Twake\Notifications:MailNotificationQueue"); - $reminder = $repo->findOneBy(Array("user_id" => $user->getId())); - if ($reminder) { - $this->doctrine->remove($reminder); - $this->doctrine->flush(); - } - - } - - /** - * @param $user User - */ - private function addMailReminder($user) - { - - $user->setNotificationWriteIncrement($user->getNotificationWriteIncrement() + 1); - $this->doctrine->persist($user); - - $repo = $this->doctrine->getRepository("Twake\Notifications:MailNotificationQueue"); - $reminder = $repo->findOneBy(Array("user_id" => $user->getId())); - if (!$reminder) { - $token = base64_encode(bin2hex(random_bytes(32))); - - $reminder = new MailNotificationQueue($user->getId()); - $reminder->setToken($token); - $this->doctrine->useTTLOnFirstInsert(60 * 60 * 24); - $this->doctrine->persist($reminder); - - $this->scheduled_queues->schedule("mail_reminder", date("U") + 60 * 60 * 12, [ - "token" => $token, - "user_id" => $user->getId(), - "id" => $reminder->getId() - ]); - - } - - $this->doctrine->flush(); - - } - - public function get($options, $current_user) - { - return $this->getAll($current_user); - } - - public function getAll($user) - { - $nRepo = $this->doctrine->getRepository("Twake\Notifications:Notification"); - $notifs = $nRepo->findBy(Array("user" => $user), Array(), 30); //Limit number of results - - return $notifs; - } - - public function sendCustomMail($mail, $template, $data = Array(), $files = Array()) - { - $this->mailer->send($mail, $template, $data, $files); - } - - public function deleteAllExceptMessages($user, $force = false) - { - - return true; - - //TODO - /* - $app = $this->doctrine->getRepository("Twake\Market:Application")->findOneBy(array("simple_name" => "messages")); - - $nRepo = $this->doctrine->getRepository("Twake\Notifications:Notification"); - $notif = $nRepo->getAppNoMessages($app); - $count = count($notif); - - - if ($count == 0){ - return false; - } - for($i = 0; $i < $count; $i++) { - $this->doctrine->remove($notif[$i]); - } - - if($count>0 || $force) { - $this->doctrine->flush(); - - $data = Array( - "action" => "remove_all_non_messages" - ); - //convert - $this->pusher->push($data, "notifications/".$user->getId()); - - $totalNotifications = $this->countAll($user); - $this->updateDeviceBadge($user, $totalNotifications); - return true; - } - - return true;*/ - } - - public function readAllExceptMessages($user, $force = false) - { - - return true; - - //TODO - /* - - $app = $this->doctrine->getRepository("Twake\Market:Application")->findOneBy(array("simple_name" => "messages")); - - $nRepo = $this->doctrine->getRepository("Twake\Notifications:Notification"); - $notif = $nRepo->getAppNoMessages($app); - $count = count($notif); - - - if ($count == 0){ - return false; - } - for($i = 0; $i < $count; $i++) { - $notif[$i]->setIsRead(true); - $this->doctrine->persist($notif[$i]); - - } - - if($count>0 || $force) { - $this->doctrine->flush(); - - $totalNotifications = $this->countAll($user); - - $data = Array( - "action" => "remove_all_non_messages" - ); - //convert - $this->pusher->push($data, "notifications/".$user->getId()); - - $this->updateDeviceBadge($user, $totalNotifications); - return true; - } - - return true; - */ - } - -} diff --git a/twake/backend/core/src/Twake/Tasks/Bundle.php b/twake/backend/core/src/Twake/Tasks/Bundle.php deleted file mode 100755 index 4027f422..00000000 --- a/twake/backend/core/src/Twake/Tasks/Bundle.php +++ /dev/null @@ -1,30 +0,0 @@ -<?php - -namespace Twake\Tasks; - -require_once __DIR__ . "/Resources/Routing.php"; -require_once __DIR__ . "/Resources/Services.php"; - -use Twake\Tasks\Resources\Routing; -use Twake\Tasks\Resources\Services; -use Common\BaseBundle; - -class Bundle extends BaseBundle -{ - - protected $bundle_root = __DIR__; - protected $bundle_namespace = __NAMESPACE__; - protected $routes = []; - protected $services = []; - - public function init() - { - $routing = new Routing(); - $this->routes = $routing->getRoutes(); - $this->routing_prefix = $routing->getRoutesPrefix(); - $this->initRoutes(); - - $this->services = (new Services())->getServices(); - $this->initServices(); - } -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Tasks/Command/TaskReminderCheckerCommand.php b/twake/backend/core/src/Twake/Tasks/Command/TaskReminderCheckerCommand.php deleted file mode 100755 index 1a5bc46a..00000000 --- a/twake/backend/core/src/Twake/Tasks/Command/TaskReminderCheckerCommand.php +++ /dev/null @@ -1,40 +0,0 @@ -<?php - -namespace Twake\Tasks\Command; - -use Common\Commands\ContainerAwareCommand; -use Symfony\Component\Console\Input\InputInterface; -use Symfony\Component\Console\Output\OutputInterface; - - -class TaskReminderCheckerCommand extends ContainerAwareCommand -{ - var $leveladmin; - var $output; - var $force; - var $twake; - - protected function configure() - { - $this - ->setName("twake:tasks_check_reminders"); - } - - - protected function execute() - { - $services = $this->getApp()->getServices(); - - $limit = date("U", date("U") + 60); - - while (date("U") < $limit) { - $sent = $services->get("app.tasks.task")->checkReminders(); - if ($sent == 0) { - sleep(30); - } - } - - } - - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Tasks/Controller/Board.php b/twake/backend/core/src/Twake/Tasks/Controller/Board.php deleted file mode 100755 index 58fe1027..00000000 --- a/twake/backend/core/src/Twake/Tasks/Controller/Board.php +++ /dev/null @@ -1,53 +0,0 @@ -<?php - -namespace Twake\Tasks\Controller; - -use Common\BaseController; -use Common\Http\Response; -use Common\Http\Request; - -class Board extends BaseController -{ - - - public function remove(Request $request) - { - $options = $request->request->get("options"); - $object = $request->request->get("object"); - $res = $this->get("app.tasks.board")->remove($object, $options, $this->getUser()); - if (!$res) { - return new Response(Array("status" => "error")); - } - if($GLOBALS["segment_enabled"]) \Segment::track([ - "event" => "tasks:board:remove", - "userId" => $this->getuser()->getIdentityProviderId() ?: $this->getUser()->getId() - ]); - return new Response(Array("data" => Array("object" => $res))); - } - - public function save(Request $request) - { - $options = $request->request->get("options"); - $object = $request->request->get("object"); - $res = $this->get("app.tasks.board")->save($object, $options, $this->getUser()); - if (!$res) { - return new Response(Array("status" => "error")); - } - if($GLOBALS["segment_enabled"]) \Segment::track([ - "event" => "tasks:board:".($object["id"] ? "edit" : "create"), - "userId" => $this->getuser()->getIdentityProviderId() ?: $this->getUser()->getId() - ]); - return new Response(Array("data" => Array("object" => $res))); - } - - public function getAction(Request $request) - { - $options = $request->request->get("options"); - $objects = $this->get("app.tasks.board")->get($options, $this->getUser()); - if ($objects === false) { - return new Response(Array("status" => "error")); - } - return new Response(Array("data" => $objects)); - } - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Tasks/Controller/BoardList.php b/twake/backend/core/src/Twake/Tasks/Controller/BoardList.php deleted file mode 100755 index aa169f09..00000000 --- a/twake/backend/core/src/Twake/Tasks/Controller/BoardList.php +++ /dev/null @@ -1,67 +0,0 @@ -<?php - -namespace Twake\Tasks\Controller; - -use Common\BaseController; -use Common\Http\Response; -use Common\Http\Request; - -class BoardList extends BaseController -{ - - - public function remove(Request $request) - { - $options = $request->request->get("options"); - $object = $request->request->get("object"); - $res = $this->get("app.tasks.list")->remove($object, $options, $this->getUser()); - if (!$res) { - return new Response(Array("status" => "error")); - } - return new Response(Array("data" => Array("object" => $res))); - } - - public function archiveAll(Request $request) - { - $options = $request->request->get("options"); - $object = $request->request->get("object"); - $res = $this->get("app.tasks.list")->archiveAllTasks($object, $options, $this->getUser()); - if ($res === false) { - return new Response(Array("status" => "error")); - } - return new Response(Array("status" => "ok")); - } - - public function removeAll(Request $request) - { - $options = $request->request->get("options"); - $object = $request->request->get("object"); - $res = $this->get("app.tasks.list")->removeAllTasks($object, $options, $this->getUser()); - if ($res === false) { - return new Response(Array("status" => "error")); - } - return new Response(Array("status" => "ok")); - } - - public function save(Request $request) - { - $options = $request->request->get("options"); - $object = $request->request->get("object"); - $res = $this->get("app.tasks.list")->save($object, $options, $this->getUser()); - if (!$res) { - return new Response(Array("status" => "error")); - } - return new Response(Array("data" => Array("object" => $res))); - } - - public function getAction(Request $request) - { - $options = $request->request->get("options"); - $objects = $this->get("app.tasks.list")->get($options, $this->getUser()); - if ($objects === false) { - return new Response(Array("status" => "error")); - } - return new Response(Array("data" => $objects)); - } - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Tasks/Controller/Export.php b/twake/backend/core/src/Twake/Tasks/Controller/Export.php deleted file mode 100755 index 20ba4f23..00000000 --- a/twake/backend/core/src/Twake/Tasks/Controller/Export.php +++ /dev/null @@ -1,27 +0,0 @@ -<?php - - -namespace Twake\Tasks\Controller; - -use Common\BaseController; -use Common\Http\Response; -use Common\Http\Request; - -class Export extends BaseController -{ - public function export(Request $request) - { - $token = $request->query->get("token"); - if ($token) { - return $this->get("app.tasks.export")->exportBoard($token, $this->get("app.tasks.task")); - } else - return new Response("Errors : Token not found"); - } - - - public function generateToken(Request $request) - { - $user = $this->getUser(); - return new Response(Array("token" => $this->get("app.tasks.export")->generateToken($request, $user))); - } -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Tasks/Controller/Task.php b/twake/backend/core/src/Twake/Tasks/Controller/Task.php deleted file mode 100755 index fa5f505f..00000000 --- a/twake/backend/core/src/Twake/Tasks/Controller/Task.php +++ /dev/null @@ -1,64 +0,0 @@ -<?php - -namespace Twake\Tasks\Controller; - -use Common\BaseController; -use Common\Http\Response; -use Common\Http\Request; - -class Task extends BaseController -{ - - - public function remove(Request $request) - { - $options = $request->request->get("options"); - $object = $request->request->get("object"); - $res = $this->get("app.tasks.task")->remove($object, $options, $this->getUser()); - if (!$res) { - return new Response(Array("status" => "error")); - }else{ - if($GLOBALS["segment_enabled"]) \Segment::track([ - "event" => "tasks:task:remove", - "userId" => $this->getuser()->getIdentityProviderId() ?: $this->getUser()->getId() - ]); - } - return new Response(Array("data" => Array("object" => $res))); - } - - public function save(Request $request) - { - $options = $request->request->get("options"); - $object = $request->request->get("object"); - $res = $this->get("app.tasks.task")->save($object, $options, $this->getUser()); - - if (!$object["id"]) { - $this->get("administration.counter")->incrementCounter("total_tasks", 1); - } - if($GLOBALS["segment_enabled"]) \Segment::track([ - "event" => "tasks:task:".($object["id"] ? "edit" : "create"), - "userId" => $this->getuser()->getIdentityProviderId() ?: $this->getUser()->getId() - ]); - - if (!$res) { - return new Response(Array("status" => "error")); - } - return new Response(Array("data" => Array("object" => $res))); - } - - public function getAction(Request $request) - { - $options = $request->request->get("options"); - $objects = $this->get("app.tasks.task")->get($options, $this->getUser()); - if ($objects === false) { - return new Response(Array("status" => "error")); - }else{ - if($GLOBALS["segment_enabled"]) \Segment::track([ - "event" => "tasks:task:get", - "userId" => $this->getuser()->getIdentityProviderId() ?: $this->getUser()->getId() - ]); - } - return new Response(Array("data" => $objects)); - } - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Tasks/Entity/Board.php b/twake/backend/core/src/Twake/Tasks/Entity/Board.php deleted file mode 100755 index e71dca82..00000000 --- a/twake/backend/core/src/Twake/Tasks/Entity/Board.php +++ /dev/null @@ -1,227 +0,0 @@ -<?php - -namespace Twake\Tasks\Entity; - -use DateTime; -use Doctrine\ORM\Mapping as ORM; - -use Twake\Core\Entity\FrontObject; - -/** - * Board - * - * @ORM\Table(name="board",options={"engine":"MyISAM", "scylladb_keys": {{"workspace_id":"ASC", "id":"ASC"}, {"id":"ASC"}} }) - * @ORM\Entity() - */ -class Board extends FrontObject -{ - - /** - * @ORM\Column(name="id", type="twake_timeuuid") - * @ORM\Id - */ - private $id; - - /** - * @ORM\Column(name="workspace_id", type="twake_timeuuid") - * @ORM\Id - */ - private $workspace_id; - - /** - * @ORM\Column(name="title", type="twake_text", nullable=true) - */ - private $title; - - /** - * @ORM\Column(name="emoji", type="string", nullable=true) - */ - private $emoji; - - /** - * @ORM\Column(name="group_name", type="twake_no_salt_text", nullable=true) - */ - private $group_name; - - /** - * @ORM\Column(name="active_tasks", type="integer", nullable=true) - */ - private $active_tasks; - - /** - * @ORM\Column(name="view_mode", type="twake_text", nullable=true) - */ - private $view_mode = "grid"; - - /** - * @ORM\Column(name="connectors", type="twake_text", nullable=true) - */ - private $connectors = "[]"; - - /** - * @ORM\Column(name="deleted", type="twake_boolean") - */ - private $deleted = false; - - - public function __construct($workspace_id, $title) - { - $this->setWorkspaceId($workspace_id); - $this->setTitle($title); - } - - /** - * @return mixed - */ - public function getId() - { - return $this->id; - } - - /** - * @param mixed $id - */ - public function setId($id) - { - $this->id = $id; - } - - /** - * @return mixed - */ - public function getWorkspaceId() - { - return $this->workspace_id; - } - - /** - * @param mixed $workspace_id - */ - public function setWorkspaceId($workspace_id) - { - $this->workspace_id = $workspace_id; - } - - /** - * @return mixed - */ - public function getTitle() - { - return $this->title; - } - - /** - * @param mixed $title - */ - public function setTitle($title) - { - $this->title = $title; - } - - /** - * @return mixed - */ - public function getConnectors() - { - return json_decode($this->connectors, 1); - } - - /** - * @param mixed $tabs - */ - public function setConnectors($connectors) - { - $this->connectors = json_encode($connectors); - } - - /** - * @return mixed - */ - public function getEmoji() - { - return $this->emoji; - } - - /** - * @param mixed $emoji - */ - public function setEmoji($emoji) - { - $this->emoji = $emoji; - } - - /** - * @return mixed - */ - public function getActiveTasks() - { - return $this->active_tasks ? $this->active_tasks : 0; - } - - /** - * @param mixed $active_tasks - */ - public function setActiveTasks($active_tasks) - { - $this->active_tasks = $active_tasks; - } - - /** - * @return mixed - */ - public function getGroupName() - { - return $this->group_name; - } - - /** - * @param mixed $group_name - */ - public function setGroupName($group_name) - { - $this->group_name = $group_name; - } - - /** - * @return mixed - */ - public function getViewMode() - { - return $this->view_mode; - } - - /** - * @param mixed $view_mode - */ - public function setViewMode($view_mode) - { - $this->view_mode = $view_mode; - } - - public function getDeleted() - { - return $this->deleted; - } - - public function setDeleted($deleted) - { - $this->deleted = $deleted; - } - - public function getAsArray() - { - return Array( - "id" => $this->getId(), - "front_id" => $this->getFrontId(), - "title" => $this->getTitle(), - "emoji" => $this->getEmoji(), - "group_name" => $this->getGroupName(), - "view_mode" => $this->getViewMode(), - "active_tasks" => $this->getActiveTasks(), - "connectors" => $this->getConnectors(), - "workspace_id" => $this->getWorkspaceId() - ); - } - - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Tasks/Entity/BoardList.php b/twake/backend/core/src/Twake/Tasks/Entity/BoardList.php deleted file mode 100755 index 70f6b138..00000000 --- a/twake/backend/core/src/Twake/Tasks/Entity/BoardList.php +++ /dev/null @@ -1,192 +0,0 @@ -<?php - -namespace Twake\Tasks\Entity; - -use DateTime; -use Doctrine\ORM\Mapping as ORM; - -use Twake\Core\Entity\FrontObject; - -/** - * Board - * - * @ORM\Table(name="tasks_list",options={"engine":"MyISAM", "scylladb_keys": {{"board_id":"ASC", "id":"ASC"}, {"id":"ASC"}} }) - * @ORM\Entity() - */ -class BoardList extends FrontObject -{ - - /** - * @ORM\Column(name="id", type="twake_timeuuid") - * @ORM\Id - */ - private $id; - - /** - * @ORM\Column(name="board_id", type="twake_timeuuid") - * @ORM\Id - */ - private $board_id; - - /** - * @ORM\Column(name="title", type="twake_text", nullable=true) - */ - private $title; - - /** - * @ORM\Column(name="color", type="string", nullable=true) - */ - private $color; - - /** - * @ORM\Column(name="emoji", type="string", nullable=true) - */ - private $emoji; - - /** - * @ORM\Column(name="order_pos", type="twake_text", nullable=true) - */ - private $order; - - /** - * @ORM\Column(name="auto_participants", type="twake_text", nullable=false) - */ - private $auto_participants = "[]"; - - - public function __construct($board_id, $title, $color) - { - $this->setBoardId($board_id); - $this->setTitle($title); - $this->setColor($color); - $this->setAutoParticipants(Array()); - } - - /** - * @return mixed - */ - public function getId() - { - return $this->id; - } - - /** - * @param mixed $id - */ - public function setId($id) - { - $this->id = $id; - } - - /** - * @return mixed - */ - public function getBoardId() - { - return $this->board_id; - } - - /** - * @param mixed $workspace_id - */ - public function setBoardId($board_id) - { - $this->board_id = $board_id; - } - - /** - * @return mixed - */ - public function getTitle() - { - return $this->title; - } - - /** - * @param mixed $title - */ - public function setTitle($title) - { - $this->title = $title; - } - - /** - * @return mixed - */ - public function getColor() - { - return $this->color; - } - - /** - * @param mixed $color - */ - public function setColor($color) - { - $this->color = $color; - } - - /** - * @return mixed - */ - public function getAutoParticipants() - { - return json_decode($this->auto_participants, 1); - } - - /** - * @param mixed $auto_participants - */ - public function setAutoParticipants($auto_participants) - { - $this->auto_participants = json_encode($auto_participants); - } - - /** - * @return mixed - */ - public function getEmoji() - { - return $this->emoji; - } - - /** - * @param mixed $emoji - */ - public function setEmoji($emoji) - { - $this->emoji = $emoji; - } - - /** - * @return mixed - */ - public function getOrder() - { - return $this->order; - } - - /** - * @param mixed $order - */ - public function setOrder($order) - { - $this->order = $order; - } - - public function getAsArray() - { - return Array( - "id" => $this->getId(), - "front_id" => $this->getFrontId(), - "title" => $this->getTitle(), - "color" => $this->getColor(), - "emoji" => $this->getEmoji(), - "order" => $this->getOrder(), - "board_id" => $this->getBoardId(), - "auto_participants" => $this->getAutoParticipants() - ); - } - - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Tasks/Entity/Task.php b/twake/backend/core/src/Twake/Tasks/Entity/Task.php deleted file mode 100755 index 58651919..00000000 --- a/twake/backend/core/src/Twake/Tasks/Entity/Task.php +++ /dev/null @@ -1,477 +0,0 @@ -<?php - -namespace Twake\Tasks\Entity; - -use DateTime; -use Doctrine\ORM\Mapping as ORM; - -use Twake\Core\Entity\FrontObject; -use Twake\Core\Entity\SearchableObject; - -/** - * Task - * - * @ORM\Table(name="tasks_task",options={"engine":"MyISAM", "scylladb_keys": {{"board_id":"ASC", "id":"ASC"}, {"id":"ASC"}, {"list_id":"ASC"}} }) - * @ORM\Entity() - */ -class Task extends SearchableObject -{ - protected $es_type = "task"; - - /** - * @ORM\Column(name="id", type="twake_timeuuid") - * @ORM\Id - */ - private $id; - - - /** - * @ORM\Column(name="board_id", type="twake_timeuuid") - * @ORM\Id - */ - private $board_id; - - /** - * @ORM\Column(name="list_id", type="twake_timeuuid") - */ - private $list_id; - - /** - * @ORM\Column(name="order_pos", type="twake_text", nullable=true) - */ - private $order; - - /** - * @ORM\Column(name="before", type="twake_bigint") - */ - private $before = 0; - - /** - * @ORM\Column(name="start_time", type="twake_bigint") - */ - private $start_time = 0; - - /** - * @ORM\Column(name="title", type="twake_text") - */ - private $title = ""; - - /** - * @ORM\Column(name="description", type="twake_text", nullable=true) - */ - private $description = ""; - - /** - * @ORM\Column(name="owner", type="twake_no_salt_text") - */ - private $owner; - - /** - * @ORM\Column(name="task_created_at", type="twake_bigint") - */ - private $task_created_at; - - /** - * @ORM\Column(name="check_list", type="twake_text") - */ - private $check_list = "{}"; - - /** - * @ORM\Column(name="participants", type="twake_text") - */ - private $participants = "{}"; - - /** - * @ORM\Column(name="notifications", type="twake_text") - */ - private $notifications = "{}"; - - /** - * @ORM\Column(name="tags", type="twake_text") - */ - private $tags = "{}"; - - /** - * @ORM\Column(name="task_last_modified", type="twake_bigint") - */ - private $task_last_modified; - - /** - * @ORM\Column(name="archived", type="twake_boolean") - */ - private $archived; - - /** - * @ORM\Column(name="workspace_id", type="twake_timeuuid") - */ - protected $workspace_id; - - - /** - * @ORM\Column(name="attachements", type="twake_text") - */ - private $attachements = "[]"; - - - public function __construct($board_id, $list_id, $title) - { - $this->setTitle($title); - $this->setBoardId($board_id); - $this->setListId($list_id); - $this->setTaskLastModified(); - $this->setTaskCreatedAt(date("U")); - } - - public function getIndexationArray() - { - $participants = []; - foreach ($this->getParticipants() as $p) { - $participants[] = $p["user_id_or_mail"]; - } - - return Array( - "id" => $this->getId() . "", - "title" => $this->getTitle(), - "description" => $this->getDescription(), - "owner" => $this->getOwner(), - "tags" => $this->getTags(), - 'before' => ($this->getBefore() ? date('Y-m-d', $this->getBefore()) : null), - 'start' => ($this->getStartTime() ? date('Y-m-d', $this->getStartTime()) : null), - 'date_created' => ($this->getTaskCreatedAt() ? date('Y-m-d', $this->getTaskCreatedAt()) : null), - "date_last_modified" => ($this->getTaskLastModified() ? date('Y-m-d', $this->getTaskLastModified()) : null), - "workspace_id" => $this->getWorkspaceId(), - "participants" => $participants - ); - - } - - - /** - * @return mixed - */ - public function getWorkspaceId() - { - return $this->workspace_id; - } - - /** - * @param mixed $workspace_id - */ - public function setWorkspaceId($workspace_id) - { - $this->workspace_id = $workspace_id; - } - - - /** - * @return string - */ - public function getEsType() - { - return $this->es_type; - } - - /** - * @return mixed - */ - public function getId() - { - return $this->id; - } - - /** - * @param mixed $id - */ - public function setId($id) - { - $this->id = $id; - } - - /** - * @return mixed - */ - public function getTitle() - { - return $this->title; - } - - /** - * @param mixed $title - */ - public function setTitle($title) - { - $this->title = $title; - } - - /** - * @return mixed - */ - public function getDescription() - { - try { - return json_decode($this->description, 1); - } catch (\Exception $e) { - - } - return $this->description; - } - - /** - * @param mixed $description - */ - public function setDescription($description) - { - $this->description = json_encode($description); - } - - /** - * @return mixed - */ - public function getOwner() - { - return $this->owner; - } - - /** - * @param mixed $owner - */ - public function setOwner($owner) - { - $this->owner = $owner; - } - - /** - * @return mixed - */ - public function getParticipants() - { - return json_decode($this->participants, true); - } - - /** - * @param mixed $participants - */ - public function setParticipants($participants) - { - $this->participants = json_encode($participants); - } - - /** - * @return mixed - */ - public function getNotifications() - { - return json_decode($this->notifications, true); - } - - /** - * @param mixed $notifications - */ - public function setNotifications($notifications) - { - $this->notifications = json_encode($notifications); - } - - /** - * @return mixed - */ - public function getTags() - { - return json_decode($this->tags, true); - } - - /** - * @param mixed $tags - */ - public function setTags($tags) - { - $this->tags = json_encode($tags); - } - - /** - * @return mixed - */ - public function getTaskLastModified() - { - return $this->task_last_modified; - } - - /** - * @param mixed $task_last_modified - */ - public function setTaskLastModified() - { - $this->task_last_modified = date("U"); - } - - /** - * @return mixed - */ - public function getBoardId() - { - return $this->board_id; - } - - /** - * @param mixed $board_id - */ - public function setBoardId($board_id) - { - $this->board_id = $board_id; - } - - /** - * @return mixed - */ - public function getListId() - { - return $this->list_id; - } - - /** - * @param mixed $list_id - */ - public function setListId($list_id) - { - $this->list_id = $list_id; - } - - /** - * @return mixed - */ - public function getOrder() - { - return $this->order; - } - - /** - * @param mixed $order - */ - public function setOrder($order) - { - $this->order = $order; - } - - /** - * @return mixed - */ - public function getBefore() - { - return $this->before; - } - - /** - * @param mixed $before - */ - public function setBefore($before) - { - $this->before = $before; - } - - /** - * @return mixed - */ - public function getStartTime() - { - return $this->start_time; - } - - /** - * @param mixed $before - */ - public function setStartTime($start_time) - { - $this->start_time = $start_time; - } - - /** - * @return mixed - */ - public function getTaskCreatedAt() - { - return $this->task_created_at; - } - - /** - * @param mixed $task_created_at - */ - public function setTaskCreatedAt($task_created_at) - { - $this->task_created_at = $task_created_at; - } - - /** - * @return mixed - */ - public function getCheckList() - { - return json_decode($this->check_list, 1); - } - - /** - * @param mixed $check_list - */ - public function setCheckList($check_list) - { - $this->check_list = json_encode($check_list); - } - - /** - * @return mixed - */ - public function getArchived() - { - return $this->archived; - } - - /** - * @param mixed $archived - */ - public function setArchived($archived) - { - $this->archived = $archived; - } - - /** - * @return mixed - */ - public function getAttachements() - { - return json_decode($this->attachements, true); - } - - /** - * @param mixed $tags - */ - public function setAttachements($attachements) - { - $this->attachements = json_encode($attachements); - } - - public function getAsArray() - { - return Array( - "id" => $this->getId(), - "front_id" => $this->getFrontId(), - "board_id" => $this->getBoardId(), - "list_id" => $this->getListId(), - "owner" => $this->getOwner(), - "task_created_at" => $this->getTaskCreatedAt(), - "task_last_modified" => $this->getTaskLastModified(), - "archived" => !!$this->getArchived(), - "before" => $this->getBefore(), - "start" => $this->getStartTime(), - "title" => $this->getTitle(), - "description" => $this->getDescription(), - "checklist" => $this->getCheckList(), - "order" => $this->getOrder(), - "participants" => $this->getParticipants(), - "notifications" => $this->getNotifications(), - "tags" => $this->getTags(), - "workspace_id" => $this->getWorkspaceId(), - "attachments" => $this->getAttachements() - ); - } - - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Tasks/Entity/TaskExportToken.php b/twake/backend/core/src/Twake/Tasks/Entity/TaskExportToken.php deleted file mode 100755 index bf2a4b05..00000000 --- a/twake/backend/core/src/Twake/Tasks/Entity/TaskExportToken.php +++ /dev/null @@ -1,140 +0,0 @@ -<?php - - -namespace Twake\Tasks\Entity; - -use Doctrine\ORM\Mapping as ORM; - -/** - * TaskExportToken - * - * @ORM\Table(name="task_export_token",options={"engine":"MyISAM", "scylladb_keys": {{"user_id": "ASC", "id": "ASC"},{"user_token": "ASC"}} }) - * @ORM\Entity() - */ -class TaskExportToken -{ - /** - * @ORM\Column(name="user_id", type="twake_timeuuid") - * @ORM\Id - */ - private $user_id; - - /** - * @ORM\Column(name="id", type="twake_timeuuid") - * @ORM\Id - */ - private $id; - - /** - * @ORM\Column(name="workspaceid", type="twake_timeuuid") - */ - private $workspaceid; - - - /** - * @ORM\Column(name="boards",type="twake_text") - */ - private $boards; - - /** - * @ORM\Column(name="user_token", type="twake_no_salt_text") - */ - private $user_token; - - /** - * ExportToken constructor. - * @param $user_id - * @param $workspaceid - * @param $boards - * @param $user_token - */ - public function __construct($user_id, $workspaceid, $boards, $user_token) - { - $this->user_id = $user_id; - $this->workspaceid = $workspaceid; - $this->setBoards($boards); - $this->user_token = $user_token; - } - - /** - * @return mixed - */ - public function getUserId() - { - return $this->user_id; - } - - /** - * @param mixed $user_id - */ - public function setUserId($user_id) - { - $this->user_id = $user_id; - } - - /** - * @return mixed - */ - public function getId() - { - return $this->id; - } - - /** - * @param mixed $id - */ - public function setId($id) - { - $this->id = $id; - } - - /** - * @return mixed - */ - public function getWorkspaceid() - { - return $this->workspaceid; - } - - /** - * @param mixed $workspaceid - */ - public function setWorkspaceid($workspaceid) - { - $this->workspaceid = $workspaceid; - } - - /** - * @return mixed - */ - public function getBoards() - { - return json_decode($this->boards, true); - } - - /** - * @param mixed $boards - */ - public function setBoards($boards) - { - $this->boards = json_encode($boards); - } - - /** - * @return mixed - */ - public function getToken() - { - return $this->user_token; - } - - /** - * @param mixed $user_token - */ - public function setToken($token) - { - $this->user_token = $token; - } - - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Tasks/Entity/TaskNotification.php b/twake/backend/core/src/Twake/Tasks/Entity/TaskNotification.php deleted file mode 100755 index 3ab55e51..00000000 --- a/twake/backend/core/src/Twake/Tasks/Entity/TaskNotification.php +++ /dev/null @@ -1,134 +0,0 @@ -<?php - -namespace Twake\Tasks\Entity; - -use DateTime; -use Doctrine\ORM\Mapping as ORM; - - -/** - * TaskNotification - * - * @ORM\Table(name="tasks_task_notification",options={"engine":"MyISAM", "scylladb_keys": {{"when_ts_week":"ASC", "when_ts": "ASC", "id": "ASC"}, {"task_id":"ASC"}} }) - * @ORM\Entity() - */ -class TaskNotification -{ - - /** - * @ORM\Column(name="id", type="twake_timeuuid") - * @ORM\Id - */ - private $id; - - /** - * @ORM\Column(name="when_ts_week", type="twake_bigint") - * @ORM\Id - */ - private $when_ts_week; - - /** - * @ORM\Column(name="when_ts", type="twake_bigint") - * @ORM\Id - */ - private $when_ts; - - /** - * @ORM\Column(name="delay", type="twake_bigint") - */ - private $delay; - - /** - * @ORM\Column(name="mode", type="twake_no_salt_text") - */ - private $mode; - - /** - * @ORM\Column(name="task_id", type="twake_timeuuid") - */ - private $task_id; - - - public function __construct($task_id, $delay, $ts, $mode = "push") - { - $this->task_id = $task_id; - $this->when_ts = $ts; - $this->when_ts_week = floor($ts / (60 * 60 * 24)); //Timestamp rounded by day - $this->setDelay($delay); - $this->setMode($mode); - } - - /** - * @return mixed - */ - public function getId() - { - return $this->id; - } - - /** - * @param mixed $id - */ - public function setId($id) - { - $this->id = $id; - } - - /** - * @return mixed - */ - public function getWhenTsWeek() - { - return $this->when_ts_week; - } - - /** - * @return mixed - */ - public function getWhenTs() - { - return $this->when_ts; - } - - /** - * @return mixed - */ - public function getTaskId() - { - return $this->task_id; - } - - /** - * @return mixed - */ - public function getDelay() - { - return $this->delay; - } - - /** - * @param mixed $delay - */ - public function setDelay($delay) - { - $this->delay = $delay; - } - - /** - * @return mixed - */ - public function getMode() - { - return $this->mode; - } - - /** - * @param mixed $mode - */ - public function setMode($mode) - { - $this->mode = $mode; - } - - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Tasks/Entity/TaskUser.php b/twake/backend/core/src/Twake/Tasks/Entity/TaskUser.php deleted file mode 100755 index 2b499129..00000000 --- a/twake/backend/core/src/Twake/Tasks/Entity/TaskUser.php +++ /dev/null @@ -1,96 +0,0 @@ -<?php - -namespace Twake\Tasks\Entity; - -use DateTime; -use Doctrine\ORM\Mapping as ORM; - - -/** - * TaskUser - * - * @ORM\Table(name="task_user",options={"engine":"MyISAM", "scylladb_keys": {{"user_id_or_mail": "ASC", "id": "ASC"}, {"task_id":"ASC"}} }) - * @ORM\Entity() - */ -class TaskUser -{ - - /** - * @ORM\Column(name="user_id_or_mail", type="twake_string") - * @ORM\Id - */ - private $user_id_or_mail; - - /** - * @ORM\Column(name="id", type="twake_timeuuid") - * @ORM\Id - */ - private $id; - - /** - * @ORM\Column(name="task_id", type="twake_timeuuid") - */ - private $task_id; - - /** - * @ORM\Column(name="email", type="twake_no_salt_text") - */ - private $email = ""; - - - public function __construct($user_id_or_mail, $task_id) - { - $this->user_id_or_mail = $user_id_or_mail; - $this->task_id = $task_id; - } - - /** - * @return mixed - */ - public function getId() - { - return $this->id; - } - - /** - * @param mixed $id - */ - public function setId($id) - { - $this->id = $id; - } - - /** - * @return mixed - */ - public function getUserIdOrMail() - { - return $this->user_id_or_mail; - } - - /** - * @return mixed - */ - public function getTaskId() - { - return $this->task_id; - } - - /** - * @return mixed - */ - public function getEmail() - { - return $this->email; - } - - /** - * @param mixed $email - */ - public function setEmail($email) - { - $this->email = $email; - } - - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Tasks/Resources/Routing.php b/twake/backend/core/src/Twake/Tasks/Resources/Routing.php deleted file mode 100755 index b0bb40c7..00000000 --- a/twake/backend/core/src/Twake/Tasks/Resources/Routing.php +++ /dev/null @@ -1,32 +0,0 @@ -<?php - -namespace Twake\Tasks\Resources; - -use Common\BaseRouting; - -class Routing extends BaseRouting -{ - - protected $routing_prefix = "ajax/tasks/"; - - protected $routes = [ -#Tasks - "task/get" => ["handler" => "Task:getAction", "methods" => ["POST"], "security" => ["user_connected_security"]], - "task/save" => ["handler" => "Task:save", "methods" => ["POST"], "security" => ["user_connected_security"]], - "task/remove" => ["handler" => "Task:remove", "methods" => ["POST"], "security" => ["user_connected_security"]], -#Lists - "list/get" => ["handler" => "BoardList:getAction", "methods" => ["POST"], "security" => ["user_connected_security"]], - "list/save" => ["handler" => "BoardList:save", "methods" => ["POST"], "security" => ["user_connected_security"]], - "list/remove" => ["handler" => "BoardList:remove", "methods" => ["POST"], "security" => ["user_connected_security"]], - "list/tasks/remove" => ["handler" => "BoardList:removeAll", "methods" => ["POST"], "security" => ["user_connected_security"]], - "list/tasks/archive" => ["handler" => "BoardList:archiveAll", "methods" => ["POST"], "security" => ["user_connected_security"]], -#Boards - "board/get" => ["handler" => "Board:getAction", "methods" => ["POST"], "security" => ["user_connected_security"]], - "board/save" => ["handler" => "Board:save", "methods" => ["POST"], "security" => ["user_connected_security"]], - "board/remove" => ["handler" => "Board:remove", "methods" => ["POST"], "security" => ["user_connected_security"]], -#Export - "export" => ["handler" => "Export:export", "methods" => ["POST", "GET"]], - "token_export" => ["handler" => "Export:generateToken", "methods" => ["POST"], "security" => ["user_connected_security"]], - ]; - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Tasks/Resources/Services.php b/twake/backend/core/src/Twake/Tasks/Resources/Services.php deleted file mode 100755 index 136590d0..00000000 --- a/twake/backend/core/src/Twake/Tasks/Resources/Services.php +++ /dev/null @@ -1,21 +0,0 @@ -<?php - -namespace Twake\Tasks\Resources; - -use Common\BaseServices; - -class Services extends BaseServices -{ - - protected $services = [ - "app.tasks.task" => "BoardTask", -// arguments: ["@app.twake_doctrine", "@app.websockets", "@app.applications_api", "@app.notifications", "@app.tasks.export"] - "app.tasks.list" => "BoardList", -// arguments: ["@app.twake_doctrine", "@app.websockets", "@app.applications_api", "@app.notifications", "@app.tasks.export"] - "app.tasks.board" => "BoardBoard", -// arguments: ["@app.twake_doctrine", "@app.applications_api", "@app.tasks.list", "@app.tasks.task"] - "app.tasks.export" => "BoardExport", -// arguments: ["@app.twake_doctrine"] - ]; - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Tasks/Services/BoardBoard.php b/twake/backend/core/src/Twake/Tasks/Services/BoardBoard.php deleted file mode 100755 index d8a13d01..00000000 --- a/twake/backend/core/src/Twake/Tasks/Services/BoardBoard.php +++ /dev/null @@ -1,216 +0,0 @@ -<?php - -namespace Twake\Tasks\Services; - - -use Twake\Tasks\Entity\Board; -use App\App; - -class BoardBoard -{ - - public function __construct(App $app) - { - $this->doctrine = $app->getServices()->get("app.twake_doctrine"); - $this->applications_api = $app->getServices()->get("app.applications_api"); - $this->list_service = $app->getServices()->get("app.tasks.list"); - $this->task_service = $app->getServices()->get("app.tasks.task"); - } - - /** Called from Collections manager to verify user has access to websockets room, registered in Core/Services/Websockets.php */ - public function init($route, $data, $current_user = null) - { - return $this->hasAccess($data, $current_user); - } - - public function hasAccess($data, $current_user = null) - { - //TODO - return true; - } - - public function get($options, $current_user) - { - $workspace_id = $options["workspace_id"]; - $boards = $this->doctrine->getRepository("Twake\Tasks:Board")->findBy(Array("workspace_id" => $workspace_id)); - - if (!$this->hasAccess($options, $current_user)) { - return false; - } - - if (count($boards) == 0) { - $board = $this->save(Array( - "workspace_id" => $workspace_id, - "title" => "First Board", - "emoji" => ":clipboard:", - ), Array(), null); - - $list_todo = $this->list_service->save(Array( - "board_id" => $board["id"], - "title" => "Not done", - "emoji" => ":vertical_traffic_light:", - "color" => "#f4511e", - "order" => "a" - ), Array(), null); - - $list_done = $this->list_service->save(Array( - "board_id" => $board["id"], - "title" => "Done", - "emoji" => ":white_check_mark:", - "color" => "#0b8043", - "order" => "b" - ), Array(), null); - - $this->task_service->save(Array( - "board_id" => $board["id"], - "list_id" => $list_todo["id"], - "title" => "Invite collaborators", - "order" => "a" - ), Array(), null); - - $this->task_service->save(Array( - "board_id" => $board["id"], - "list_id" => $list_todo["id"], - "title" => "Customize my workspace", - "order" => "b" - ), Array(), null); - - $this->task_service->save(Array( - "board_id" => $board["id"], - "list_id" => $list_done["id"], - "title" => "Create my Twake workspace", - "order" => "a" - ), Array(), null); - - $board["active_tasks"] = 3; - - if ($board) { - return [$board]; - } - - } - - $ret = []; - foreach ($boards as $board) { - if(!$board->getDeleted()){ - $ret[] = $board->getAsArray(); - } - } - - return $ret; - } - - public function save($object, $options, $current_user) - { - - //TODO add access restriction option like for directories - - if (!$this->hasAccess($object, $current_user)) { - return false; - } - - $did_create = false; - if (isset($object["id"])) { - $board = $this->doctrine->getRepository("Twake\Tasks:Board")->findOneBy(Array("id" => $object["id"])); - if (!$board) { - return false; - } - } else { - $did_create = true; - $board = new Board($object["workspace_id"], ""); - $board->setFrontId($object["front_id"]); - } - - if (isset($object["title"])) $board->setTitle($object["title"]); - if (isset($object["emoji"])) $board->setEmoji($object["emoji"]); - if (isset($object["group_name"])) $board->setGroupName($object["group_name"]); - if (isset($object["view_mode"])) $board->setViewMode($object["view_mode"]); - - $this->doctrine->persist($board); - $this->doctrine->flush(); - - $this->updateConnectors($board, $object["connectors"], $current_user ? $current_user->getId() : null); - - //Notify connectors - $workspace_id = $board->getWorkspaceId(); - $resources = $this->applications_api->getResources($workspace_id, "workspace_tasks", $workspace_id); - $apps_ids = []; - foreach ($resources as $resource) { - if (in_array("board", $resource->getApplicationHooks())) { - $apps_ids[] = $resource->getApplicationId(); - } - } - if (count($apps_ids) > 0) { - foreach ($apps_ids as $app_id) { - if ($app_id) { - $data = Array( - "board" => $board->getAsArray() - ); - if ($did_create) { - $this->applications_api->notifyApp($app_id, "hook", "new_board", $data); - } else { - $this->applications_api->notifyApp($app_id, "hook", "edit_board", $data); - } - } - } - } - - return $board->getAsArray(); - - } - - private function updateConnectors($board_entity, $connectors_ids, $current_user_id = null) - { - - if (!$connectors_ids) { - $connectors_ids = []; - } - - $current_connectors = $board_entity->getConnectors(); - $current_connectors = $current_connectors ? $current_connectors : []; - - $did_something = false; - - foreach ($connectors_ids as $connector_id) { - if (!in_array($connector_id, $current_connectors)) { - $this->applications_api->addResource($connector_id, $board_entity->getWorkspaceId(), "board", $board_entity->getId(), $current_user_id); - $did_something = true; - } - } - - foreach ($current_connectors as $current_connector_id) { - if (!in_array($current_connector_id, $connectors_ids)) { - $this->applications_api->removeResource($connector_id, $board_entity->getWorkspaceId(), "board", $board_entity->getId(), $current_user_id); - $did_something = true; - } - } - - if ($did_something) { - $board_entity->setConnectors($connectors_ids); - $this->doctrine->persist($board_entity); - $this->doctrine->flush(); - } - - } - - public function remove($object, $options, $current_user = null) - { - $id = $object["id"]; - - if (!$this->hasAccess($object, $current_user)) { - return false; - } - - $board = $this->doctrine->getRepository("Twake\Tasks:Board")->findOneBy(Array("id" => $id)); - if (!$board) { - return false; - } - $board->setDeleted(true); - - $this->doctrine->save($board); - $this->doctrine->flush(); - - return $object; - } - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Tasks/Services/BoardExport.php b/twake/backend/core/src/Twake/Tasks/Services/BoardExport.php deleted file mode 100755 index ec287f4b..00000000 --- a/twake/backend/core/src/Twake/Tasks/Services/BoardExport.php +++ /dev/null @@ -1,46 +0,0 @@ -<?php - - -namespace Twake\Tasks\Services; - -use Twake\Tasks\Entity\ExportToken; -use App\App; - -class BoardExport -{ - - public function __construct(App $app) - { - $this->doctrine = $app->getServices()->get("app.twake_doctrine"); - } - - public function generateToken($request, $current_user = null) - { - - $user_id = $current_user->getId(); - - $workspace_id = $request->request->get('workspace_id'); - $boards = $request->request->get('boards'); - - $token = bin2hex(random_bytes(64)); - - //Insert to export_token table - $entity = new ExportToken($user_id, $workspace_id, $boards, $token); - $this->doctrine->persist($entity); - $this->doctrine->flush(); - - return $token; - - } - - - public function exportBoard($token, $boardTaskService) - { - } - - - public function importBoard($token, $boardTaskService) - { - } - -} diff --git a/twake/backend/core/src/Twake/Tasks/Services/BoardList.php b/twake/backend/core/src/Twake/Tasks/Services/BoardList.php deleted file mode 100755 index 8ab5e3ef..00000000 --- a/twake/backend/core/src/Twake/Tasks/Services/BoardList.php +++ /dev/null @@ -1,228 +0,0 @@ -<?php - -namespace Twake\Tasks\Services; - -use App\App; - -class BoardList -{ - - public function __construct(App $app) - { - $this->doctrine = $app->getServices()->get("app.twake_doctrine"); - $this->boardExport = $app->getServices()->get("app.tasks.export"); - $this->enc_pusher = $app->getServices()->get("app.websockets"); - $this->applications_api = $app->getServices()->get("app.applications_api"); - $this->notifications = $app->getServices()->get("app.notifications"); - } - - /** Called from Collections manager to verify user has access to websockets room, registered in Core/Services/Websockets.php */ - public function init($route, $data, $current_user = null) - { - return $this->hasAccess($data, $current_user); - } - - public function hasAccess($data, $current_user = null) - { - //TODO - return true; - } - - public function get($options, $current_user) - { - $board_list_id = $options["board_id"]; - - if (!$this->hasAccess($options, $current_user)) { - return false; - } - - $lists = $this->doctrine->getRepository("Twake\Tasks:BoardList")->findBy(Array("board_id" => $board_list_id)); - - $ret = []; - foreach ($lists as $list) { - $ret[] = $list->getAsArray(); - } - - return $ret; - } - - public function remove($object, $options, $current_user = null) - { - $id = $object["id"]; - - if (!$this->hasAccess($object, $current_user)) { - return false; - } - - $board_list = $this->doctrine->getRepository("Twake\Tasks:BoardList")->findOneBy(Array("id" => $id)); - if (!$board_list) { - return false; - } - - $this->removeAllTasks($object, $options, $current_user = null); - - $this->doctrine->remove($board_list); - $this->doctrine->flush(); - - return $object; - } - - public function removeAllTasks($object, $options, $current_user = null) - { - - $id = $object["id"]; - - if (!$this->hasAccess($object, $current_user)) { - return false; - } - - $only_archived = $options["only_archived_tasks"]; - - $board_list = $this->doctrine->getRepository("Twake\Tasks:BoardList")->findOneBy(Array("id" => $id)); - if (!$board_list) { - return false; - } - - $ws_events = []; - $ws_task_users = []; - - //Remove all tasks and update count in board - $tasks = $this->doctrine->getRepository("Twake\Tasks:Task")->findBy(Array("list_id" => $id)); - $count = 0; - foreach ($tasks as $task) { - if (!$only_archived || $task->getArchived()) { - - if (!$task->getArchived()) { - $count++; - } - - $this->doctrine->remove($task); - - //Send websocket notification - $ws_events[] = Array( - "client_id" => "system", - "action" => "remove", - "object_type" => "", - "front_id" => $task->getFrontId() - ); - foreach ($task->getParticipants() as $participant) { - if (!is_string($participant)) { - $participant = $participant["user_id_or_mail"]; - } - $ws_task_users[] = $participant; - } - - } - } - $board = $this->doctrine->getRepository("Twake\Tasks:Board")->findOneBy(Array("id" => $board_list->getBoardId())); - $board->setActiveTasks($board->getActiveTasks() - $count); - $this->doctrine->persist($board); - - $this->doctrine->flush(); - - if (count($ws_events) > 0) { - $this->enc_pusher->push("board_tasks/" . $board_list->getBoardId(), $ws_events); - $ws_task_users = array_unique($ws_task_users); - foreach ($ws_task_users as $ws_task_user) { - $this->enc_pusher->push("board_tasks/user_" . $ws_task_user, $ws_events); - } - } - - } - - public function archiveAllTasks($object, $options, $current_user = null) - { - - $id = $object["id"]; - - if (!$this->hasAccess($object, $current_user)) { - return false; - } - - $board_list = $this->doctrine->getRepository("Twake\Tasks:BoardList")->findOneBy(Array("id" => $id)); - if (!$board_list) { - return false; - } - - //Remove all tasks and update count in board - $tasks = $this->doctrine->getRepository("Twake\Tasks:Task")->findBy(Array("list_id" => $id)); - $count = 0; - - $ws_events = []; - $ws_task_users = []; - - foreach ($tasks as $task) { - if (!$task->getArchived()) { - - $task->setArchived(true); - $this->doctrine->persist($task); - $count++; - - //Send websocket notification - $ws_events[] = Array( - "client_id" => "system", - "action" => "save", - "object_type" => "", - "object" => $task->getAsArray() - ); - foreach ($task->getParticipants() as $participant) { - if (!is_string($participant)) { - $participant = $participant["user_id_or_mail"]; - } - $ws_task_users[] = $participant; - } - - } - } - - $board = $this->doctrine->getRepository("Twake\Tasks:Board")->findOneBy(Array("id" => $board_list->getBoardId())); - $board->setActiveTasks($board->getActiveTasks() - $count); - $this->doctrine->persist($board); - - $this->doctrine->flush(); - - if (count($ws_events) > 0) { - $this->enc_pusher->push("board_tasks/" . $board_list->getBoardId(), $ws_events); - $ws_task_users = array_unique($ws_task_users); - foreach ($ws_task_users as $ws_task_user) { - $this->enc_pusher->push("board_tasks/user_" . $ws_task_user, $ws_events); - } - } - - } - - public function save($object, $options, $current_user) - { - - if (!$this->hasAccess($object, $current_user)) { - return false; - } - - $did_create = false; - if (isset($object["id"])) { - $board_list = $this->doctrine->getRepository("Twake\Tasks:BoardList")->findOneBy(Array("id" => $object["id"])); - if (!$board_list) { - return false; - } - } else { - $did_create = true; - $board_list = new \Twake\Tasks\Entity\BoardList($object["board_id"], "", ""); - $board_list->setFrontId($object["front_id"]); - } - - if (isset($object["title"])) $board_list->setTitle($object["title"]); - if (isset($object["color"])) $board_list->setColor($object["color"]); - if (isset($object["emoji"])) $board_list->setEmoji($object["emoji"]); - - if (isset($object["order"])) $board_list->setOrder($object["order"]); - - if (isset($object["auto_participants"])) $board_list->setAutoParticipants($object["auto_participants"]); - - $this->doctrine->persist($board_list); - $this->doctrine->flush(); - - return $board_list->getAsArray(); - - } - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Tasks/Services/BoardTask.php b/twake/backend/core/src/Twake/Tasks/Services/BoardTask.php deleted file mode 100755 index 43578b9b..00000000 --- a/twake/backend/core/src/Twake/Tasks/Services/BoardTask.php +++ /dev/null @@ -1,651 +0,0 @@ -<?php - -namespace Twake\Tasks\Services; - - -use Twake\Core\CommonObjects\AttachementManager; -use Twake\Notifications\Entity\Notification; -use Twake\Tasks\Entity\Board; -use Twake\Tasks\Entity\Task; -use Twake\Tasks\Entity\TaskBoard; -use Twake\Tasks\Entity\TaskNotification; -use Twake\Tasks\Entity\TaskUser; -use App\App; - -class BoardTask -{ - - public function __construct(App $app) - { - $this->doctrine = $app->getServices()->get("app.twake_doctrine"); - $this->boardExport = $app->getServices()->get("app.tasks.export"); - $this->enc_pusher = $app->getServices()->get("app.websockets"); - $this->applications_api = $app->getServices()->get("app.applications_api"); - $this->notifications = $app->getServices()->get("app.notifications"); - $this->attachementManager = new AttachementManager($this->doctrine, $this->enc_pusher); - $this->queues_scheduled = $app->getServices()->get("app.queues_scheduled"); - } - - /** Called from Collections manager to verify user has access to websockets room, registered in Core/Services/Websockets.php */ - public function init($route, $data, $current_user = null) - { - return $this->hasAccess($data, $current_user); - } - - public function hasAccess($data, $current_user = null) - { - //TODO - - if ($data["entity"]) { - //Test we have access to this task - } - - return true; - } - - public function get($options, $current_user) - { - $board_id = $options["board_id"]; - - if (!$this->hasAccess($options, $current_user)) { - return false; - } - - if (explode("_", $board_id)[0] == "user") { - $tasks = []; - $user_id = explode("_", $board_id)[1]; - $workspaces = Array(); - if ($user_id != $current_user->getId() . "") { - //Get available workspaces - $workspaceUsers = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceUser")->findBy(Array("user_id" => $user_id)); - foreach ($workspaceUsers as $wu) { - $available = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceUser")->findBy(Array("user_id" => $current_user->getId(), "workspace_id" => $wu->getWorkspace($this->doctrine)->getId())); - if ($available) { - $workspaces[] = $wu->getWorkspaceId(); - } - } - } - $tasks_user = $this->doctrine->getRepository("Twake\Tasks:TaskUser")->findBy(Array("user_id_or_mail" => $user_id)); - $boardIsDeleted = []; - foreach ($tasks_user as $taskuser) { - $t = $this->doctrine->getRepository("Twake\Tasks:Task")->findOneBy(Array("id" => $taskuser->getTaskId())); - if ($t) { - - if(!isset($boardIsDeleted[$t->getBoardId()])){ - $board = $this->doctrine->getRepository("Twake\Tasks:Board")->findOneBy(Array("id" => $t->getBoardId())); - $boardIsDeleted[$t->getBoardId()] = $board->getDeleted(); - } - - if(!$boardIsDeleted[$t->getBoardId()]){ - - if ($user_id != $current_user->getId() . "") { - $ok = false; - foreach ($workspaces as $workspace_id) { - if ($workspace_id == $t->getWorkspaceId()) { - $ok = true; - break; - } - } - } else { - $ok = true; - } - if ($ok) $tasks[] = $t; - - } - } else { - $this->doctrine->remove($taskuser); - $this->doctrine->flush(); - } - } - } else { - $tasks = $this->doctrine->getRepository("Twake\Tasks:Task")->findBy(Array("board_id" => $board_id)); - } - - $ret = []; - foreach ($tasks as $task) { - $ret[] = $task->getAsArray(); - } - - return $ret; - } - - public function remove($object, $options, $current_user = null) - { - $id = $object["id"]; - - if (!$this->hasAccess($object, $current_user)) { - return false; - } - - $board_task = $this->doctrine->getRepository("Twake\Tasks:Task")->findOneBy(Array("id" => $id)); - if (!$board_task) { - return false; - } - - $board = $this->doctrine->getRepository("Twake\Tasks:Board")->findOneBy(Array("id" => $board_task->getBoardId())); - - if (!$board_task->getArchived()) { - $board->setActiveTasks($board->getActiveTasks() - 1); - } - $this->attachementManager->removeAttachementsFromEntity($board_task); - $this->doctrine->persist($board); - $this->doctrine->remove($board_task); - $this->doctrine->flush(); - - return $object; - } - - public function save($object, $options, $current_user) - { - - if (!$this->hasAccess($object, $current_user)) { - return false; - } - - if (isset($object["id"]) && $object["id"]) { - $task = $this->doctrine->getRepository("Twake\Tasks:Task")->findOneBy(Array("id" => $object["id"])); - if (!$task) { - return false; - } - $did_create = false; - } else { - $task = new Task($object["board_id"], $object["list_id"], $object["title"]); - $task->setFrontId($object["front_id"]); - $task->setOwner($current_user ? $current_user->getId() : null); - $workspace_id = $this->doctrine->getRepository("Twake\Tasks:Board")->findOneBy(Array("id" => $object["board_id"]))->getWorkspaceId(); - $task->setWorkspaceId($workspace_id); - $did_create = true; - } - - /* @var Board $board */ - $board = $this->doctrine->getRepository("Twake\Tasks:Board")->findOneBy(Array("id" => $task->getBoardId())); - - /* @var \Twake\Tasks\Entity\BoardList $list */ - $list = $this->doctrine->getRepository("Twake\Tasks:BoardList")->findOneBy(Array("id" => $task->getListId())); - - if ($did_create) { - if (!isset($object["participants"]) || !$object["participants"]) { - $object["participants"] = []; - } - foreach ($list->getAutoParticipants() as $participant) { - if (is_string($participant)) { - $participant = Array( - "user_id_or_mail" => $participant - ); - } - $object["participants"][] = $participant; - } - } - - //Manage infos - if (isset($object["title"])) $task->setTitle($object["title"]); - if (isset($object["description"])) $task->setDescription($object["description"]); - if (isset($object["checklist"])) $task->setCheckList($object["checklist"]); - - if (isset($object["list_id"])) $task->setListId($object["list_id"]); - if (isset($object["order"])) $task->setOrder($object["order"]); - - //Change active task count on board - if (isset($object["archived"]) && !!$object["archived"] != $task->getArchived()) { - //Changed archived status - $task->setArchived($object["archived"]); - if (!!$object["archived"]) { - $board->setActiveTasks($board->getActiveTasks() - 1); - } else { - $board->setActiveTasks($board->getActiveTasks() + 1); - } - $this->doctrine->persist($board); - $this->doctrine->flush(); - } - if ($did_create) { - $board->setActiveTasks($board->getActiveTasks() + 1); - $this->doctrine->persist($board); - $this->doctrine->flush(); - } - - $task->setTaskLastModified(); - - if (isset($object["tags"])) { - $task->setTags($object["tags"]); - } - - $this->doctrine->persist($task); - $this->doctrine->flush(); - - if ($did_create || $task->getNotifications() != $object["notifications"] || $task->getBefore() != $object["before"] || $task->getStartTime() != $object["start"]) { - $change_dates = $did_create || $task->getBefore() != $object["before"] || $task->getStartTime() != $object["start"]; - if (isset($object["before"])) $task->setBefore(intval($object["before"])); - if (isset($object["start"])) $task->setStartTime(intval($object["start"])); - $this->updateNotifications($task, $object["notifications"], $change_dates); - } - - if (isset($object["participants"]) || $did_create) { - $this->updateParticipants($task, $object["participants"] ? $object["participants"] : Array()); - } - - if (isset($object["attachments"]) || $did_create) { - $this->attachementManager->updateAttachements($task, $object["attachments"] ? $object["attachments"] : Array()); - } - - foreach ($task->getParticipants() as $participant) { - if (!is_string($participant)) { - $participant = $participant["user_id_or_mail"]; - } - $ws_events = Array( - "client_id" => "system", - "action" => "save", - "object_type" => "", - "object" => $task->getAsArray() - ); - $this->enc_pusher->push("board_tasks/user_" . $participant, $ws_events); - } - - - //Notify connectors - $resources = []; - $workspace_id = $board->getWorkspaceId(); - $resources = array_merge($resources, $this->applications_api->getResources($workspace_id, "workspace_tasks", $workspace_id)); - $apps_ids = []; - foreach ($resources as $resource) { - if (in_array("task", $resource->getApplicationHooks())) { - $apps_ids[] = $resource->getApplicationId(); - } - } - if (count($apps_ids) > 0) { - foreach ($apps_ids as $app_id) { - if ($app_id) { - $data = Array( - "task" => $task->getAsArray() - ); - if ($did_create) { - $this->applications_api->notifyApp($app_id, "hook", "new_task", $data); - } else { - $this->applications_api->notifyApp($app_id, "hook", "edit_task", $data); - } - } - } - } - - - return $task->getAsArray(); - } - - private function updateNotifications(Task $task, $notifications = Array(), $replace_all = false) - { - - $notifications = $notifications ? $notifications : []; - $token = base64_encode(bin2hex(random_bytes(32))); - - foreach ($notifications as $index => $notification) { - $notifications[$index]["token"] = $token; - } - - $has_before = true; - if (!$task->getBefore() || $task->getBefore() < date("U")) { - $has_before = false; - $notifications = Array(); - } - - $updated_notifications = $this->formatArrayInput($notifications, ["delay", "mode"]); - $task->setNotifications($updated_notifications); - $this->doctrine->persist($task); - - if ($task->getBefore() > 0 && $replace_all) { - //Add deadline - $updated_notifications[] = Array( - "delay" => 0, - "mode" => "push", - "token" => $token - ); - } - - if ($task->getStartTime() > 0 && $task->getStartTime() > date("U") && $replace_all) { - //Add start time as notification - $updated_notifications[] = Array( - "delay" => $has_before ? ($task->getBefore() - $task->getStartTime()) : ($task->getStartTime()), - "mode" => "push", - "token" => $token - ); - } - - $this->doctrine->flush(); - - foreach ($updated_notifications as $notification) { - if ($has_before) { - $notification_date = $task->getBefore() - $notification["delay"]; - $delay = $notification["delay"]; - } else { - $notification_date = $notification["delay"]; - $delay = "0"; - } - - if ($notification_date < date("U")) { - continue; - } - - $this->queues_scheduled->schedule("tasks_task", $notification_date, [ - "token" => $token, - "task_id" => $task->getId(), - "delay" => $delay, - "mode" => $notification["mode"] - ]); - } - - } - - private function formatArrayInput($array, $id_keys = []) - { - $updated_array = []; - $unicity = []; - foreach ($array as $element) { - - $tmp = false; - - if (is_array($element)) { - $all_ok = true; - foreach ($id_keys as $id_key) { - if (!isset($element[$id_key])) { - $all_ok = false; - } - } - if ($all_ok) { - $tmp = $element; - } - } else { - $tmp = Array(); - $tmp[$id_key] = $element; - } - - if ($tmp !== false) { - $uniq_key = ""; - foreach ($id_keys as $id_key) { - $uniq_key .= "_" . $tmp[$id_key]; - } - if (!in_array($uniq_key, $unicity)) { - $unicity[] = $uniq_key; - $updated_array[] = $tmp; - } - } - - } - return $updated_array; - } - - private function getArrayDiffUsingKeys($new_array, $old_array, $keys) - { - $remove = []; - $add = []; - foreach ($new_array as $new_el) { - if (!$this->inArrayUsingKeys($old_array, $new_el, $keys)) { - $add[] = $new_el; - } - } - foreach ($old_array as $old_el) { - if (!$this->inArrayUsingKeys($new_array, $old_el, $keys)) { - $remove[] = $old_el; - } - } - return Array("del" => $remove, "add" => $add); - } - - private function inArrayUsingKeys($array, $element, $keys) - { - $in = false; - foreach ($array as $el) { - $same = true; - foreach ($keys as $key) { - if ($el[$key] != $element[$key]) { - $same = false; - break; - } - } - if ($same) { - $in = true; - break; - } - } - return $in; - } - - private function updateParticipants(Task $task, $participants = Array()) - { - - $participants = $participants ? $participants : []; - - $updated_participants = $this->formatArrayInput($participants, ["user_id_or_mail"]); - $current_participants = $task->getParticipants(); - $updated_participants_fixed = $current_participants; - - $get_diff = $this->getArrayDiffUsingKeys($updated_participants, $current_participants, ["user_id_or_mail"]); - - if (count($get_diff["del"]) > 0) { - $users_in_task = $this->doctrine->getRepository("Twake\Tasks:TaskUser")->findBy(Array("task_id" => $task->getId())); - foreach ($users_in_task as $user) { - if ($this->inArrayUsingKeys($get_diff["del"], Array("user_id_or_mail" => $user->getUserIdOrMail()), ["user_id_or_mail"]) || $replace_all) { - //Remove old participants - $this->doctrine->remove($user); - - //Remove from array fixed - foreach ($updated_participants_fixed as $i => $v) { - if ($v["user_id_or_mail"] == $user->getUserIdOrMail()) { - unset($updated_participants_fixed[$i]); - } - } - - } - } - } - - foreach (($replace_all ? $updated_participants : $get_diff["add"]) as $participant) { - - $fixed_participant = $participant; - - //Remove from array fixed - if (filter_var($participant["user_id_or_mail"], FILTER_VALIDATE_EMAIL)) { - //Mail given - $mail = trim(strtolower($participant["user_id_or_mail"])); - $mail_entity = $this->doctrine->getRepository("Twake\Users:Mail")->findOneBy(Array("mail" => $mail)); - if ($mail_entity) { - $fixed_participant["user_id_or_mail"] = $mail_entity->getUser()->getId(); - } - } else if (preg_match('/\w{8}-\w{4}-\w{4}-\w{4}-\w{12}/', $participant["user_id_or_mail"])) { - //User id given - $user = $this->doctrine->getRepository("Twake\Users:User")->findOneBy(Array("id" => $participant["user_id_or_mail"])); - if (!$user) { - continue; - } - $mail = $user->getEmail(); - } else { - continue; - } - - $fixed_participant["email"] = $mail; - $participant = $fixed_participant; - - $user = new TaskUser($participant["user_id_or_mail"], $task->getId()); - $user->setEmail($mail); - $this->doctrine->persist($user); - - $updated_participants_fixed[] = $participant; - - } - - $_updated_participants_fixed = []; - foreach ($updated_participants_fixed as $v) { - $_updated_participants_fixed[] = $v; - } - $updated_participants_fixed = $_updated_participants_fixed; - - $task->setParticipants($updated_participants_fixed); - $this->doctrine->persist($task); - - $this->doctrine->flush(); - } - - public function updateAttachements(Task $task, $attachements = Array()) - { - $oldAttachements = $task->getAttachements() ? $task->getAttachements() : Array(); - $newAttachement = $oldAttachements; - $get_diff = $this->getArrayDiffUsingKeys($attachements, $oldAttachements, ["id"]); - foreach ($get_diff["del"] as $att) { - foreach ($newAttachement as $index => $attac) { - if ($attac["id"] == $att["id"] && $attac["type"] == $att["type"]) { - $attachedRepo = $this->getAttachementRepository($att["type"]); - if ($attachedRepo) { - $entityAttached = $attachedRepo->findOneBy(Array("id" => $att["id"])); - $attachmentInEntityAttached = $entityAttached->getAttachements(); - foreach ($attachmentInEntityAttached as $index1 => $attac1) { - if ($attac1["id"] == $task->getId() && $attac1["type"] == "task" && $attac1["isAtttached"]) { - unset($attachmentInEntityAttached[$index1]); - $entityAttached->setAttachements($attachmentInEntityAttached); - $this->doctrine->persist($entityAttached); - break; - } - } - } - unset($newAttachement[$index]); - } - } - } - foreach ($get_diff["add"] as $att) { - $att["isAttached"] = false; - $newAttachement[] = $att; - $attachedRepo = $this->getAttachementRepository($att["type"]); - if ($attachedRepo) { - $entityAttached = $attachedRepo->findOneBy(Array("id" => $att["id"])); - if ($entityAttached) { - $attachmentInEntityAttached = $entityAttached->getAttachements(); - $attachmentOfAttached = Array( - "type" => "task", - "id" => $task->getId(), - "name" => $task->getTitle(), - "isAttached" => true - ); - $attachmentInEntityAttached[] = $attachmentOfAttached; - $entityAttached->setAttachements($attachmentInEntityAttached); - $this->doctrine->persist($entityAttached); - } - } - } - $task->setAttachements($newAttachement); - $this->doctrine->persist($task); - $this->doctrine->flush(); - } - - public function getAttachementRepository($type) - { - if ($type == "file") { - return $this->doctrine->getRepository("Twake\Drive:DriveFile"); - } elseif ($type == "task") { - return $this->doctrine->getRepository("Twake\Tasks:Task"); - } elseif ($type == "event") { - return $this->doctrine->getRepository("Twake\Calendar:Event"); - } - return false; - } - - public function checkReminders() - { - $sent = 0; - - $notifications = $this->queues_scheduled->consume("tasks_task", true); - - foreach ($notifications ?: [] as $notification_original) { - - $notification = $this->queues_scheduled->getMessage($notification_original); - - //Send notification - $task = $this->doctrine->getRepository("Twake\Tasks:Task")->findOneBy(Array("id" => $notification["task_id"])); - - if ($task) { - - $existing_notifications = $task->getNotifications(); - $valid_notification = false; - foreach ($existing_notifications as $existing_notification) { - //Verify this received notification exists in calendar event - if ($existing_notification["token"] == $notification["token"]) { - $valid_notification = true; - } - } - - if ($valid_notification) { - - $is_deadline = false; - if ($task->getBefore() && abs($task->getBefore() - (date("U") + $notification["delay"])) < 60) { - $is_deadline = true; - } - - if (!$task->getArchived()) { - - $delay = floor($notification["delay"] / 60) . "min"; - if ($notification["delay"] > 60 * 60) { - $delay = floor($notification["delay"] / (60 * 60)) . "h"; - } - if ($notification["delay"] > 60 * 60 * 24) { - $delay = floor($notification["delay"] / (60 * 60 * 24)) . "j"; - } - if ($notification["delay"] > 60 * 60 * 24 * 7 * 2) { - $delay = floor($notification["delay"] / (60 * 60 * 24 * 7)) . "w"; - } - - $title = "Untitled"; - if ($task->getTitle()) { - $title = $task->getTitle(); - } - $text = $title . ($is_deadline ? " (deadline)" : "") . ($delay > 0 ? (" in " . $delay) : ""); - - $participants = $task->getParticipants(); - - foreach ($participants as $participant) { - if ($notification["mode"] == "mail" || !$notification["mode"]) { - $mail = $participant["user_id_or_mail"]; - $language = false; - if (preg_match('/\w{8}-\w{4}-\w{4}-\w{4}-\w{12}/', $participant["user_id_or_mail"])) { - $mail = $this->doctrine->getRepository("Twake\Users:User")->findOneBy(Array("id" => $participant["user_id_or_mail"])); - if ($mail) { - $language = $mail->getLanguage(); - $mail = $mail->getEMail(); - } else { - $mail = null; - } - } - //Mail - if ($mail) { - $this->notifications->sendCustomMail( - $mail, "task_notification", Array( - "_language" => $language ? $language : "en", - "text" => $text, - "delay" => $delay, - "task" => $task->getAsArray() - ) - ); - } - } - if ($notification["mode"] == "push" || !$notification["mode"]) { - //Push notification - if (preg_match('/\w{8}-\w{4}-\w{4}-\w{4}-\w{12}/', $participant["user_id_or_mail"])) { - $user = $this->doctrine->getRepository("Twake\Users:User")->findOneBy(Array("id" => $participant["user_id_or_mail"])); - if ($user) { - $this->notifications->pushDevice( - $user, $text, "📋 Tasks notification", null, Array( - ) - ); - } - } - } - } - } - } - } - - - $sent++; - $this->queues_scheduled->ack("tasks_task", $notification_original); - - } - - return $sent; - - } - -} diff --git a/twake/backend/core/src/Twake/Upload/Bundle.php b/twake/backend/core/src/Twake/Upload/Bundle.php deleted file mode 100755 index a8aacda2..00000000 --- a/twake/backend/core/src/Twake/Upload/Bundle.php +++ /dev/null @@ -1,24 +0,0 @@ -<?php - -namespace Twake\Upload; - -require_once __DIR__ . "/Resources/Services.php"; - -use Twake\Upload\Resources\Services; -use Common\BaseBundle; - -class Bundle extends BaseBundle -{ - - protected $bundle_root = __DIR__; - protected $bundle_namespace = __NAMESPACE__; - protected $routes = []; - protected $services = []; - - public function init() - { - - $this->services = (new Services())->getServices(); - $this->initServices(); - } -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Upload/Entity/File.php b/twake/backend/core/src/Twake/Upload/Entity/File.php deleted file mode 100755 index 47769cc3..00000000 --- a/twake/backend/core/src/Twake/Upload/Entity/File.php +++ /dev/null @@ -1,274 +0,0 @@ -<?php - -namespace Twake\Upload\Entity; - -use Doctrine\ORM\Mapping as ORM; - - -/** - * File - * - * Fichiers uploadé /!\ sauf drive ! - * - * @ORM\Table(name="file",options={"engine":"MyISAM"}) - * @ORM\Entity() - */ -class File -{ - /** - * @var int - * - * @ORM\Column(name="id", type="twake_timeuuid") - * @ORM\Id - */ - private $id; - - /** - * @var string - * - * @ORM\Column(name="type", type="string", length=8) - */ - private $type; //Define where this file is used - - /** - * @var string - * - * @ORM\Column(name="name", type="string", length=255) - */ - private $name; //Name of the file in server (md5) - - /** - * @var string - * - * @ORM\Column(name="real_name", type="string", length=255) - */ - private $realname; //Original name of the files on user computer - - /** - * @var int - * - * @ORM\Column(name="sizes", type="integer") - */ - private $sizes; //Size (binary position) : 0 = original - // 1 = 512 - // 2 = 256 - // 3 = 128 - // 4 = 64 - // Example : 00001 = 1 = only original - // 10111 = 23 = original, 512, 256 and 64 sizes - - /** - * @var int - * - * @ORM\Column(name="date", type="twake_bigint") - */ - private $date; //Creation date - - /** - * @var int - * - * @ORM\Column(name="weight", type="integer") - */ - private $weight; - - /** - * @ORM\Column(name="provider", type="string") - */ - private $provider; - - /** - * - * @ORM\Column(name="aws_public_link", type="twake_text") - */ - private $aws_public_link = false; - - - public function __construct() - { - $this->name = "<null>"; - $this->sizes = 31; //All sizes - $this->date = date("U"); - $this->weight = 0; - } - - - /** - * Get id - * - * @return int - */ - public function setId($id) - { - $this->id = $id; - } - - public function getId() - { - return $this->id; - } - - public function setProvider($provider) - { - $this->provider = $provider; - } - - public function getProvider() - { - return $this->provider; - } - - /** - * Return the url to get the file (public url) - * @param int $size - * @return string - */ - public function getPublicURL($size = 0) - { - if ($this->aws_public_link) { - return $this->aws_public_link . ""; - } - if (!$this->size_exists($size)) { - return ""; - } - return "/upload/" . $this->type . "/" . $size . "/" . $this->name; - } - - /** - * Return the url to get the file (local url) - * @param int $size - * @return string - */ - public function getLocalServerURL($size = 0) - { - if ($this->aws_public_link) { - return false; - } - return "../web/" . $this->getPublicURL($size); - } - - - /** - * @ORM\PostRemove() - */ - public function deleteFromDisk() - { //Delete files from disk - for ($i = 0; $i <= 4; $i++) { - if ($this->size_exists($i)) { - @unlink($this->getLocalServerURL($i)); - } - } - } - - /** - * Return true if this size is available - * @param $size - * @return bool - */ - private function size_exists($size) - { - $sizes = decbin($this->sizes); - if ($sizes[strlen($sizes) - $size - 1] != 1) { - return false; - } - return true; - } - - /** - * @return string - */ - public function getType() - { - return $this->type; - } - - /** - * @param string $type - */ - public function setType($type) - { - $this->type = $type; - } - - /** - * @return string - */ - public function getName() - { - return $this->name; - } - - /** - * @param string $name - */ - public function setName($name) - { - $this->name = $name; - } - - /** - * @return int - */ - public function getSizes() - { - return $this->sizes; - } - - /** - * @param int $sizes - */ - public function setSizes($sizes) - { - $this->sizes = $sizes; - } - - - /** - * @return int - */ - public function getWeight() - { - return $this->weight; - } - - /** - * @param int $weight - */ - public function setWeight($weight) - { - $this->weight = $weight; - } - - /** - * @return string - */ - public function getRealName() - { - return $this->realname; - } - - /** - * @param string $realname - */ - public function setRealName($realname) - { - $this->realname = $realname; - } - - /** - * @return mixed - */ - public function getPublicLink() - { - return $this->aws_public_link; - } - - /** - * @param mixed $aws_public_link - */ - public function setPublicLink($aws_public_link) - { - $this->aws_public_link = $aws_public_link; - } - - -} diff --git a/twake/backend/core/src/Twake/Upload/Resources/Services.php b/twake/backend/core/src/Twake/Upload/Resources/Services.php deleted file mode 100755 index ba475c93..00000000 --- a/twake/backend/core/src/Twake/Upload/Resources/Services.php +++ /dev/null @@ -1,20 +0,0 @@ -<?php - -namespace Twake\Upload\Resources; - -use Common\BaseServices; - -class Services extends BaseServices -{ - - protected $services = [ - "app.images_modifiers" => "ImagesModifiers", - "app.upload" => "Upload", - "app.uploader" => "Uploader", - #AWS - "app.aws_uploader" => "AWS_Uploader", - #OpenStack - "app.openstack_uploader" => "OpenStack_Uploader", - ]; - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Upload/Services/AWS_Uploader.php b/twake/backend/core/src/Twake/Upload/Services/AWS_Uploader.php deleted file mode 100755 index e2852835..00000000 --- a/twake/backend/core/src/Twake/Upload/Services/AWS_Uploader.php +++ /dev/null @@ -1,113 +0,0 @@ -<?php - - -namespace Twake\Upload\Services; - -use App\App; -use Aws\S3\Exception\S3Exception; -use Aws\S3\S3Client; - -class AWS_Uploader extends Uploader -{ - - public function __construct(App $app) - { - parent::__construct($app); - } - - public function configure($config){ - $s3_config = $config; - - $this->aws_version = $s3_config["version"]; - $this->aws_buckets = $s3_config["buckets"]; - $this->aws_buckets_prefix = $s3_config["buckets_prefix"]; - $this->aws_credentials_key = $s3_config["credentials"]["key"]; - $this->aws_credentials_secret = $s3_config["credentials"]["secret"]; - - $region = false; - foreach ($this->aws_buckets as $region_code => $aws_region) { - if ($region_code == "fr" || !$region) { - $region = $aws_region; - } - } - $this->aws_bucket_name = isset($s3_config["bucket_name"]) ? $s3_config["bucket_name"] : ($this->aws_buckets_prefix . 'twake.' . $region); - $this->aws_bucket_region = $region; - - $options = [ - 'version' => $this->aws_version, - 'region' => $this->aws_bucket_region, - 'use_path_style_endpoint' => isset($s3_config["use_path_style_endpoint"]) ? $s3_config["use_path_style_endpoint"] : false, - 'credentials' => [ - 'key' => $this->aws_credentials_key, - 'secret' => $this->aws_credentials_secret - ] - ]; - if (isset($s3_config["base_url"]) && $s3_config["base_url"]) { - $options["endpoint"] = $s3_config["base_url"]; - } - - $this->aws_s3_client = new S3Client($options); - - } - - public function upload($realfile, $file, $context) - { - $contexts = $this->getContexts(); - - $file_size = filesize($realfile); - - $upload_status = []; - - $error = "unknown"; - if ($upload_status["status"] != "error") { - - try { - // Upload data. - $result = $this->aws_s3_client->putObject([ - 'Bucket' => $this->aws_bucket_name, - 'Key' => "public/uploads/" . $file->getType() . "/" . $file->getName(), - 'Body' => fopen($realfile, "rb"), - 'ACL' => 'public-read' - ]); - - $file->setPublicLink($result['ObjectURL']); - - return Array( - "errors" => [], - "status" => "success", - "filesize" => $file_size - ); - - } catch (S3Exception $e) { - $error = $e->getMessage(); - } - - } - - return Array( - "errors" => [$error], - "status" => "error" - ); - } - - public function removeFile($file, $flush = true) - { - - try { - - $this->aws_s3_client->deleteObject([ - 'Bucket' => $this->aws_bucket_name, - 'Key' => "public/uploads/" . $file->getType() . "/" . $file->getName(), - ]); - - } catch (S3Exception $e) { - $error = $e->getMessage(); - } - - $this->doctrine->remove($file); - if ($flush) { - $this->doctrine->flush(); - } - } - -} diff --git a/twake/backend/core/src/Twake/Upload/Services/ImagesModifiers.php b/twake/backend/core/src/Twake/Upload/Services/ImagesModifiers.php deleted file mode 100755 index 7ff5e2ce..00000000 --- a/twake/backend/core/src/Twake/Upload/Services/ImagesModifiers.php +++ /dev/null @@ -1,276 +0,0 @@ -<?php - -namespace Twake\Upload\Services; - -use App\App; - -class ImagesModifiers -{ - - /** - * THUMBNAILS - */ - - /** - * Supported image types - * - * @staticvar array - */ - public static $__image_types = array( - 0x1 => 'gif', - 0x2 => 'jpeg', - 0x3 => 'png', - 0x6 => 'bmp' - ); - - /** - * Allowed image types/file extensions (separate multiple values with pipe '|') - * - * @var string - */ - public $allowed_image_types = 'bmp|gif|jpg|jpeg|png'; - - /** - * JPEG compression level (0-100, 0 is the most compression) - * - * @var int - */ - public $compression_jpeg = 50; - - /** - * PNG compresssion level (0-8, 8 is the most compression, 0 is none) - * - * @var int - */ - public $compression_png = 8; - - /** - * Max dimesion (this can control both width and height) - * - * @var int - */ - public $max_dimension = 200; - - /** - * Max height dimension (this will override max_dimension property) - * - * @var int - */ - public $max_height = 0; - - /** - * Max width dimension (this will override max_dimension property) - * - * @var int - */ - public $max_width = 0; - - /** - * Use true color flag - * - * @var bool - */ - public $use_true_color = true; - - /** - * Init - */ - public function __construct(App $app) - { - if (!function_exists('getimagesize')) { // check for GD library - trigger_error(__CLASS__ . ' requires the GD library', E_USER_ERROR); - } - } - - public function setMax_dimension($md) - { - $this->max_dimension = $md; - } - - /** - * Draw/create thumbnail image - * - * @param string $image_path (source image path) - * @param string $target_path (optional, will save image instead of output if set) - * @return void - */ - public function draw($image_path, $target_path = null) - { - - if (!file_exists($image_path)) // check if image exists - { - trigger_error('Image "' . $image_path . '" does not exist', E_USER_ERROR); - } - - if (!preg_match('/\.(' . $this->allowed_image_types . ')$/i', $image_path)) // check valid image type - { - trigger_error('Invalid image type for image "' . $image_path . '"', E_USER_ERROR); - } - - $img_info = getimagesize($image_path); // set image info - list($img_w, $img_h, $img_type) = $img_info; - $img_mine = null; - - if ($img_type > 0 && !isset(self::$__image_types[$img_type])) // check valid image type code - { - trigger_error('Invalid image type for image "' . $image_path . '" (image type code: ' . $img_type . ')'); - } - - if (isset($img_info['mime'])) { - $img_mine = $img_info['mime']; - } else { - trigger_error('Invalid iamge MIME type for image "' . $image_path . '"', E_USER_ERROR); - } - - // override max dimesion - $this->max_dimension = $this->max_height > 0 ? $this->max_height : $this->max_dimension; - $this->max_dimension = $this->max_width > 0 ? $this->max_width : $this->max_dimension; - - // set new dimensions - $img_new_w = $img_new_h = 0; - if ($this->max_width > 0 && $img_w > $this->max_width) // resize on width - { - $img_new_w = $this->max_width; - $img_new_h = round($img_h * ($img_new_w / $img_w)); - } else if ($this->max_height > 0 && $img_h > $this->max_height) // resize on height - { - $img_new_h = $this->max_height; - $img_new_w = round($img_w * ($img_new_h / $img_h)); - } else if ($img_w > $this->max_dimension || $img_h > $this->max_dimension) // resize on max dim - { - $img_new_w = $this->max_dimension; - $img_new_h = $this->max_dimension; - if ($img_w > $img_h) { - $img_new_h = round($img_h * ($img_new_w / $img_w)); - } else { - $img_new_w = round($img_w * ($img_new_h / $img_h)); - } - } - - $fc = $this->use_true_color ? 'imagecreatetruecolor' : 'imagecreate'; // use truecolor for jpeg - if ($img_new_w > 0 && $img_new_h > 0) // check if resize needed - { - $img_new = $fc($img_new_w, $img_new_h); - $f = 'imagecreatefrom' . self::$__image_types[$img_type]; - - $img = new \Imagick($image_path); - $img = $this->autorotate($img); - $img->writeImage(); - - $img = $f($image_path); - imagealphablending($img_new, true); - imagesavealpha($img_new, true); - $whiteBackground = imagecolorallocatealpha($img_new, 255, 255, 255, 0); - imagefill($img_new,0,0,$whiteBackground); // fill the background with white - imagecopyresampled($img_new, $img, 0, 0, 0, 0, $img_new_w, $img_new_h, $img_w, $img_h); - imagedestroy($img); - } else { - $img_new = $fc($img_w, $img_h); - $f = 'imagecreatefrom' . self::$__image_types[$img_type]; - $img_new = $f($image_path); - } - - $f = 'image' . self::$__image_types[$img_type]; - if (strlen($target_path) < 1) // output image - { - header('Content-type: ' . $img_mine); - } - switch ($img_type) { - case 0x2: - $f($img_new, $target_path, $this->compression_jpeg); - break; - - case 0x3: - $f($img_new, $target_path, $this->compression_png); - break; - - default: - $f($img_new, $target_path); - break; - } - - imagedestroy($img_new); - } - - private function autorotate(\Imagick $image) - { - switch ($image->getImageOrientation()) { - case \Imagick::ORIENTATION_TOPLEFT: - break; - case \Imagick::ORIENTATION_TOPRIGHT: - $image->flopImage(); - break; - case \Imagick::ORIENTATION_BOTTOMRIGHT: - $image->rotateImage("#FFF", 180); - break; - case \Imagick::ORIENTATION_BOTTOMLEFT: - $image->flopImage(); - $image->rotateImage("#FFF", 180); - break; - case \Imagick::ORIENTATION_LEFTTOP: - $image->flopImage(); - $image->rotateImage("#FFF", -90); - break; - case \Imagick::ORIENTATION_RIGHTTOP: - $image->rotateImage("#FFF", 90); - break; - case \Imagick::ORIENTATION_RIGHTBOTTOM: - $image->flopImage(); - $image->rotateImage("#FFF", 90); - break; - case \Imagick::ORIENTATION_LEFTBOTTOM: - $image->rotateImage("#FFF", -90); - break; - default: // Invalid orientation - break; - } - $image->setImageOrientation(\Imagick::ORIENTATION_TOPLEFT); - return $image; - } - - function improve($path) - { - - if (mime_content_type($path) != "image/jpeg" - or mime_content_type($path) != "image/tiff") { - return; - } - - $exif = exif_read_data($path); - - if (isset($exif['Orientation'])) { - switch ($exif['Orientation']) { - case 3: - $this->rotate($path, 180); - break; - - case 6: - $this->rotate($path, -90); - break; - - case 8: - $this->rotate($path, 90); - break; - } - } - - - } - - /*** - * ROTATIONS (IOS) - * @param $path - * @param $deg - */ - - - function rotate($path, $deg) - { - if (exif_imagetype($path) == IMAGETYPE_JPEG) { - $source = imagecreatefromjpeg($path); - $rotate = imagerotate($source, $deg, 0); - imagejpeg($rotate, $path); - } - } - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Upload/Services/OpenStack_Uploader.php b/twake/backend/core/src/Twake/Upload/Services/OpenStack_Uploader.php deleted file mode 100755 index 4cc52c8e..00000000 --- a/twake/backend/core/src/Twake/Upload/Services/OpenStack_Uploader.php +++ /dev/null @@ -1,135 +0,0 @@ -<?php - - -namespace Twake\Upload\Services; - -use GuzzleHttp\Client; -use GuzzleHttp\HandlerStack; -use GuzzleHttp\Psr7\Stream; -use OpenStack\Common\Transport\Utils as TransportUtils; -use OpenStack\Identity\v3\Service; -use OpenStack\OpenStack; -use App\App; - -class OpenStack_Uploader extends Uploader -{ - - public function __construct(App $app) - { - parent::__construct($app); - } - - public function configure($openstack){ - - $this->openstack_buckets = $openstack["buckets"]; - $this->openstack_buckets_prefix = $openstack["buckets_prefix"]; - $this->openstack_credentials_key = $openstack["user"]["id"]; - $this->openstack_credentials_secret = $openstack["user"]["password"]; - $this->openstack_domain_name = $openstack["user"]["domain_name"]; - $this->openstack_project_id = $openstack["project_id"]; - $this->openstack_auth_url = $openstack["auth_url"]; - $this->disable_encryption = $openstack["disable_encryption"]; - - $httpClient = new Client([ - 'base_uri' => TransportUtils::normalizeUrl($this->openstack_auth_url ? $this->openstack_auth_url : ""), - 'handler' => HandlerStack::create(), - ]); - - $region = false; - foreach ($this->openstack_buckets as $region_code => $openstack_region) { - if ($region_code == "fr" || !$region) { - if (isset($openstack_region["private"])) { - $region = $openstack_region["private"]; - $public_region = $openstack_region["public"]; - } else { - $region = $openstack_region["public"]; - } - $region_id = $openstack_region["region"]; - } - } - $this->openstack_bucket_name = $this->openstack_buckets_prefix . $region; - $this->openstack_public_bucket_name = $this->openstack_buckets_prefix . $public_region; - $this->openstack_bucket_region = $region; - $this->openstack_region_id = $region_id; - - $this->openstack = new OpenStack([ - 'authUrl' => $this->openstack_auth_url, - 'region' => $this->openstack_region_id, - 'user' => [ - 'name' => $this->openstack_credentials_key, - 'password' => $this->openstack_credentials_secret, - 'domain' => [ 'id' => $this->openstack_domain_name ] - ], - 'scope' => [ - 'project' => [ - 'id' => $this->openstack_project_id - ] - ], - 'identityService' => Service::factory($httpClient) - ]); - - - } - - public function upload($realfile, $file, $context) - { - $contexts = $this->getContexts(); - - $file_size = filesize($realfile); - - $upload_status = []; - - $error = "unknown"; - if ($upload_status["status"] != "error") { - - try { - // Upload data. - $options = [ - 'name' => "public/uploads/" . $file->getType() . "/" . $file->getName(), - 'stream' => new Stream(fopen($realfile, "rb")), - ]; - $result = $this->openstack->objectStoreV1() - ->getContainer($this->openstack_public_bucket_name) - ->createObject($options); - - $file->setPublicLink($result->getPublicUri()); - - return Array( - "errors" => [], - "status" => "success", - "filesize" => $file_size - ); - - } catch (\Exception $e) { - $error = $e->getMessage(); - } - - } - - return Array( - "errors" => [$error], - "status" => "error" - ); - } - - public function removeFile($file, $flush = true) - { - - try { - - $this->openstack->objectStoreV1() - ->getContainer($this->openstack_public_bucket_name) - ->getObject("public/uploads/" . $file->getType() . "/" . $file->getName()) - ->delete(); - - } catch (\Exception $e) { - $error = $e->getMessage(); - } - - $this->doctrine->remove($file); - if ($flush) { - $this->doctrine->flush(); - } - } - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Upload/Services/Upload.php b/twake/backend/core/src/Twake/Upload/Services/Upload.php deleted file mode 100755 index 72bdcef9..00000000 --- a/twake/backend/core/src/Twake/Upload/Services/Upload.php +++ /dev/null @@ -1,162 +0,0 @@ -<?php - - -namespace Twake\Upload\Services; - -use App\App; - -class Upload -{ - - var $imagesModifiers; - var $default_context; - - function __construct(App $app) - { - - $this->default_context = Array( - "is_img" => 1, - "max_size" => 1000000, //1mo - "sizes" => 3 //512 && original - ); - - } - - function setImageModifiers($imagesModifiers) - { - $this->imagesModifiers = $imagesModifiers; - } - - public function upload($file, $path, $context) - { - - - error_log(json_encode($file)); - - $upload_status = Array(); - $upload_status["status"] = ""; - $upload_status["errors"] = Array(); - - //Forcer la création du dossier - if (!file_exists(dirname($path))) { - mkdir(dirname($path), 0755, true); - } - - $upload_status["file"] = $file; - - $upload_status["filesize"] = filesize($file); - - //Create directory if doesnt exists - if (!file_exists(dirname($path))) { - mkdir(dirname($path), 0777, true); - } - - //MOVE THE FILE - $moved = false; - if ($upload_status["status"] != "error") { - set_time_limit(600); - $moved = rename($file, $path); - } - - if ($moved) { - - //Verify that is it an image if wanted - if (isset($context["is_img"]) && $context["is_img"] == 1) { - $image_info = getimagesize($path); - if ($image_info === false) { - $upload_status["status"] = "error"; - $upload_status["errors"][] = "not_image"; - } - - $width = $image_info[0]; - $height = $image_info[1]; - - if (isset($context["min_width"]) && $context["min_width"] > $width) { - $upload_status["status"] = "error"; - $upload_status["errors"][] = "width_too_small"; - } - if (isset($context["max_width"]) && $context["max_width"] < $width) { - $upload_status["status"] = "error"; - $upload_status["errors"][] = "width_too_large"; - } - if (isset($context["min_height"]) && $context["min_height"] > $height) { - $upload_status["status"] = "error"; - $upload_status["errors"][] = "height_too_small"; - } - if (isset($context["max_height"]) && $context["max_height"] < $height) { - $upload_status["status"] = "error"; - $upload_status["errors"][] = "height_too_large"; - } - - } - - } - - if ($moved && $upload_status["status"] != "error") { - - if (isset($context["is_img"]) && $context["is_img"] == 1) {//Rectifie l'orientation des images prises avec l'appareil photo ios - $this->imagesModifiers->improve($path); - } - - $upload_status["status"] = "success"; - - } else { - - if ($moved) { - unlink($path); - $upload_status["errors"][] = "unknown_error_moved"; - } else { - $upload_status["errors"][] = "unknown_error_on_move"; - } - - $upload_status["status"] = "error"; - - } - - return $upload_status; - - } - - public function verifyContext(&$upload_status, $file, $context) - { - if (filesize($file['tmp_name']) > $context['max_size']) { - $upload_status["status"] = "error"; - $upload_status["errors"][] = "max_size_exeeded"; - } - - $ext = strtolower(pathinfo($file['name'], PATHINFO_EXTENSION)); - if (isset($context["allowed_ext"]) && !in_array($ext, $context["allowed_ext"])) { - $upload_status["status"] = "error"; - $upload_status["errors"][] = "ext_not_allowed_" . $ext; - } - - } - - public function addThumbnail($original, $size, $path) - { - - //Forcer la création du dossier - if (!file_exists(dirname($path))) { - mkdir(dirname($path), 0755, true); - } - - $this->imagesModifiers->setMax_dimension($size); - $this->imagesModifiers->draw($original, $path); - - } - - private function getAsArraySizes($sizes) - { - $res = Array(); - - $reallimit_sizes = Array(64, 128, 256, 512, 1000000000000); - foreach (str_split(decbin($sizes)) as $i => $s) { - if ($s == 1) { - $res[] = $reallimit_sizes[$s]; - } - } - - return $res; - } - -} diff --git a/twake/backend/core/src/Twake/Upload/Services/Uploader.php b/twake/backend/core/src/Twake/Upload/Services/Uploader.php deleted file mode 100755 index 476d4c03..00000000 --- a/twake/backend/core/src/Twake/Upload/Services/Uploader.php +++ /dev/null @@ -1,217 +0,0 @@ -<?php - -namespace Twake\Upload\Services; - -use App\App; -use Twake\Upload\Entity\File; - -class Uploader -{ - - var $doctrine; - var $uploadService; - var $modifiersService; - var $tempFolder; - - public function __construct(App $app) - { - $this->doctrine = $app->getServices()->get("app.twake_doctrine"); - $this->uploadService = $app->getServices()->get("app.upload"); - $this->modifiersService = $app->getServices()->get("app.images_modifiers"); - $this->tempFolder = $app->getContainer()->getParameter("storage.drive_tmp_folder"); - } - - public function configure($configuration){ - return; - } - - /** - * Upload a file - * $file = $_FILE["aa"]; - * $context = "prfl"/"covr" - * - * returns : - * Array of results - */ - public function uploadFiles($currentUser, $file, $context) - { - - $res = Array(); - - if (!is_array($file["tmp_name"])) { - $res[] = $this->uploadTheFile($currentUser, $file, $context); - } else { - - foreach ($file["tmp_name"] as $key => $null) { - $file = Array(); - $file["tmp_name"] = $file["tmp_name"][$key]; - $file["name"] = $file["name"][$key]; - $file["size"] = $file["size"][$key]; - $res[] = $this->uploadTheFile($currentUser, $file, $context); - } - } - - return $res; - - } - - /** - * Upload file into disk and add it to bdd (using context != drive) - * @param $file - * @return File - */ - private function uploadTheFile($currentUser, $realfile, $context) - { - - if ($currentUser == null || !$currentUser->getId()) { - return Array("errors" => Array("error_not_connected"), "file" => null, "realfile" => $realfile); - } - - /** - * Allowed context - */ - - $contexts = $this->getContexts(); - - if (!isset($contexts[$context])) { - return Array("errors" => Array("error_not_such_context"), "file" => null, "realfile" => $realfile); - } - - - $orm = $this->doctrine; - - - $this->uploadService->verifyContext($upload_status, $realfile, $contexts[$context]); - if ($upload_status["status"] != "error") { - - $file = new File(); - - $file->setType($context); - - - $newfilename = md5(date("U") . $realfile["tmp_name"] . $realfile["name"]) . "." . $this->getExtension($realfile["name"]); - $file->setName($newfilename); - $file->setRealName($realfile["name"]); - $file->setSizes($contexts[$context]['sizes']); - - $this->uploadService->setImageModifiers($this->modifiersService); - - $tmpFile = $this->tempFolder . "thumb-" . date("U") . "-" . $currentUser->getId() . "-" . $realfile["name"]; - move_uploaded_file($realfile["tmp_name"], $tmpFile); - - $this->modifiersService->setMax_dimension(192); - $this->modifiersService->draw($tmpFile, $tmpFile); - - $upload_status = $this->upload($tmpFile, $file, $context); //Upload thumbnail - - @unlink($tmpFile); - - $file->setWeight($upload_status['filesize']); - - } - - if ($upload_status["status"] == "success") { - - $orm->persist($file); - $orm->flush(); - - $upload_status["fileEntity"] = $file; - - return Array("errors" => $upload_status["errors"], "file" => $upload_status["fileEntity"], "realfile" => $realfile); - - } else { - - return Array("errors" => $upload_status["errors"], "file" => null, "realfile" => $realfile); - - } - - } - - public function getContexts() - { - return Array( - "prfl" => Array( - "is_img" => 1, - "max_size" => 2000000, //2mo - "sizes" => 31, //All ! - "allowed_ext" => Array("png", "jpg", "jpeg", "gif", "tiff") - ), - "covr" => Array( - "is_img" => 1, - "max_size" => 3000000, //3mo - "min_width" => 900, - "min_height" => 230, - "sizes" => 31, //All ! - "allowed_ext" => Array("png", "jpg", "jpeg", "gif", "tiff") - ), - "wslogo" => Array( - "is_img" => 1, - "max_size" => 2000000, //2mo - "min_width" => 100, - "min_height" => 100, - "sizes" => 31, //All ! - "allowed_ext" => Array("png", "jpg", "jpeg", "gif", "tiff") - ), - "grouplogo" => Array( - "is_img" => 1, - "max_size" => 2000000, //2mo - "min_width" => 100, - "min_height" => 100, - "sizes" => 31, //All ! - "allowed_ext" => Array("png", "jpg", "jpeg", "gif", "tiff") - ), - "wswall" => Array( - "is_img" => 1, - "max_size" => 4000000, //2mo - "min_width" => 0, - "min_height" => 0, - "sizes" => 31, //All ! - "allowed_ext" => Array("png", "jpg", "jpeg", "gif", "tiff") - ), - "msg" => Array( - "is_img" => 0, - "max_size" => 10000000, //10mo - "sizes" => 31 - ), - "status" => Array( - "is_img" => 0, - "max_size" => 3000000, //3mo - ) - ); - } - - private function getExtension($filename) - { - return pathinfo($filename, PATHINFO_EXTENSION); - } - - public function upload($realfile, $file, $context) - { - $contexts = $this->getContexts(); - $upload_status = $this->uploadService->upload($realfile, $file->getLocalServerURL(0), $contexts[$context]); - - if ($upload_status["status"] == "success") { - //Ajouter les thumbnails ! - if ($contexts[$context]['is_img']) { - $sizes = Array(0, 512, 256, 128, 64); - for ($size = 1; $size <= 4; $size++) { - if (decbin($file->getSizes())[$size] == 1) { - $this->uploadService->addThumbnail($file->getLocalServerURL(0), $sizes[$size], $file->getLocalServerURL($size)); //Upload thumbnails - } - } - } - } - - return $upload_status; - } - - public function removeFile($file, $flush = true) - { - $file->deleteFromDisk(); - $this->doctrine->remove($file); - if ($flush) { - $this->doctrine->flush(); - } - } - -} diff --git a/twake/backend/core/src/Twake/Users/Bundle.php b/twake/backend/core/src/Twake/Users/Bundle.php deleted file mode 100755 index fb117c2a..00000000 --- a/twake/backend/core/src/Twake/Users/Bundle.php +++ /dev/null @@ -1,30 +0,0 @@ -<?php - -namespace Twake\Users; - -require_once __DIR__ . "/Resources/Routing.php"; -require_once __DIR__ . "/Resources/Services.php"; - -use Twake\Users\Resources\Routing; -use Twake\Users\Resources\Services; -use Common\BaseBundle; - -class Bundle extends BaseBundle -{ - - protected $bundle_root = __DIR__; - protected $bundle_namespace = __NAMESPACE__; - protected $routes = []; - protected $services = []; - - public function init() - { - $routing = new Routing(); - $this->routes = $routing->getRoutes(); - $this->routing_prefix = $routing->getRoutesPrefix(); - $this->initRoutes(); - - $this->services = (new Services())->getServices(); - $this->initServices(); - } -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Users/Controller/Adapters/CAS.php b/twake/backend/core/src/Twake/Users/Controller/Adapters/CAS.php deleted file mode 100755 index 1d6eb77f..00000000 --- a/twake/backend/core/src/Twake/Users/Controller/Adapters/CAS.php +++ /dev/null @@ -1,118 +0,0 @@ -<?php - - -namespace Twake\Users\Controller\Adapters; - -use Common\BaseController; -use Common\Http\Request; -use Common\Http\Response; - -class CAS extends BaseController -{ - - function logoutSuccess(Request $request) - { - return $this->closeIframe("success"); - } - - // Redirect user to CAS connection page - public function login() - { - $cas_login_page_url = $this->getParameter("defaults.auth.cas.base_url"); - $cas_login_page_url .= "/login?"; - $cas_login_page_url .= "service="; - $cas_login_page_url .= urlencode($this->getParameter("env.server_name") . "ajax/users/cas/verify"); - return $this->redirect($cas_login_page_url); - } - - // Verify CAS token and search for user in database (or create it) - public function verify(Request $request) - { - $ticket = $request->query->get("ticket"); - $cas_ticket_verification_url = $this->getParameter("defaults.auth.cas.base_url"); - - $cas_ticket_verification_url .= "/serviceValidate?"; - $cas_ticket_verification_url .= "service="; - $cas_ticket_verification_url .= urlencode($this->getParameter("env.server_name") . "ajax/users/cas/verify"); - $cas_ticket_verification_url .= "&ticket=" . $ticket; - $cas_ticket_verification_url .= "&format=JSON"; - - //var_dump($cas_ticket_verification_url); - //die(); - - $response = $this->get("app.restclient")->get($cas_ticket_verification_url); - $response = $response->getContent(); - if (strpos($response, "<cas:") !== false) { - $result = Array(); - if (strpos($response, "cas:authenticationSuccess") !== false) { - $username = explode("<cas:user>", $response); - $username = explode("</cas:user>", $username[1]); - $username = $username[0]; - if ($username) { - $result = Array( - "serviceResponse" => Array( - "authenticationSuccess" => Array( - "user" => $username - ) - ) - ); - } - } - } else { - $result = json_decode($response, true); - } - - if (isset($result["serviceResponse"]) && isset($result["serviceResponse"]["authenticationSuccess"])) { - $details = $result["serviceResponse"]["authenticationSuccess"]; - - $username = $details["user"]; - $mail = $username . "@" . str_replace(Array("http", "https", ":", "/"), "", $this->getParameter("defaults.auth.cas.base_url")); - $firstname = ""; - $lastname = ""; - - if (isset($details["attributes"])) { - - $mailKey = $this->getParameter("defaults.auth.cas.email_key") ? $this->getParameter("defaults.auth.cas.email_key") : "email"; - if (isset($details["attributes"][$mailKey])) { - $mail = $details["attributes"][$mailKey]; - } - - $lastnameKey = $this->getParameter("defaults.auth.cas.lastname_key") ? $this->getParameter("defaults.auth.cas.lastname_key") : "lastname"; - if (isset($details["attributes"][$lastnameKey])) { - $lastname = $details["attributes"][$lastnameKey]; - } - - $firstnameKey = $this->getParameter("defaults.auth.cas.firstname_key") ? $this->getParameter("defaults.auth.cas.firstname_key") : "firstname"; - if (isset($details["attributes"][$firstnameKey])) { - $firstname = $details["attributes"][$firstnameKey]; - } - - } - - //Search user with this username - $res = $this->get("app.user")->loginFromServiceWithToken("cas", $mail, $mail, $username, $firstname . " " . $lastname, ""); - - if ($res) { - return $this->closeIframe("success", $res); - } - - } - return new Response("An error occured, please contact CAS service administrator."); - - } - - // Redirect user to CAS logout page - public function logout(Request $request) - { - $this->get("app.user")->logout($request); - - $cas_login_page_url = $this->getParameter("defaults.auth.cas.base_url") . "/logout"; - return $this->redirect($cas_login_page_url); - } - - private function closeIframe($message, $userTokens=null) - { - $this->redirect(rtrim($this->getParameter("env.frontend_server_name", $this->getParameter("env.server_name")), "/") . "?external_login=".str_replace('+', '%20', urlencode(json_encode(["provider"=>"openid", "message" => $message, "token" => json_encode($userTokens)])))); - } - -} diff --git a/twake/backend/core/src/Twake/Users/Controller/Adapters/Console.php b/twake/backend/core/src/Twake/Users/Controller/Adapters/Console.php deleted file mode 100755 index 70a7cf15..00000000 --- a/twake/backend/core/src/Twake/Users/Controller/Adapters/Console.php +++ /dev/null @@ -1,263 +0,0 @@ -<?php - -namespace Twake\Users\Controller\Adapters; - -use Common\BaseController; -use Common\Http\Request; -use Common\Http\Response; -use Twake\Users\Entity\User; -use Twake\Users\Controller\Adapters\OpenID\OpenIDConnectClient; -use Twake\Users\Controller\Adapters\Console\Hooks; -use Twake\Users\Controller\Adapters\Console\ApplyUpdates; -class Console extends BaseController -{ - - /* - function hook(Request $request) - { - if(!$this->isServiceEnabled()){ - return new Response(["error" => "unauthorized"], 401); - } - - $handler = new Hooks($this->app); - $res = $handler->handle($request); - error_log(json_encode($res->getContent())); - return $res; - } - */ - - //Redirect hook to node - function hook(Request $request) - { - if(!$this->isServiceEnabled()){ - return new Response(["error" => "unauthorized"], 401); - } - - $api = $this->app->getServices()->get("app.restclient"); - - $secret = $request->query->get("secret_key"); - $uri = str_replace("/private", "/internal/services/console/v1", $this->app->getContainer()->getParameter("node.api")) . - ltrim("/hook?secret_key=".$secret, "/"); - - $opt = [ - CURLOPT_HTTPHEADER => Array( - "Authorization: Bearer " . $jwt, - "Content-Type: application/json" - ), - CURLOPT_CONNECTTIMEOUT => 1, - CURLOPT_TIMEOUT => 1 - ]; - - $data = [ - "content" => $request->request->get("content"), - "type" => $request->request->get("type"), - "secret_key" => $request->request->get("secret_key") - ]; - - error_log("Request to node:"); - error_log($uri); - error_log(json_encode($data)); - - $res = $api->request("POST", $uri, json_encode($data), $opt); - - error_log("Reply from node:"); - error_log($res->getContent()); - - return new Response([], 200); - - $handler = new Hooks($this->app); - $res = $handler->handle($request); - error_log(json_encode($res->getContent())); - return $res; - } - - - function logoutSuccess(Request $request) - { - if(!$this->isServiceEnabled()){ - return new Response(["error" => "unauthorized"], 401); - } - try{ - $message = json_decode(urldecode($request->query->get("error_code"))); - }catch(\Exception $err){ - $message = false; - } - - return $this->redirect(rtrim($this->getParameter("env.frontend_server_name", $this->getParameter("env.server_name")), "/") . "/login" . ($message ? ("?error_code=".str_replace('+', '%20', urlencode(json_encode($message)))) : "?auto")); - } - - function logout(Request $request, $message = null) - { - error_log(json_encode($message)); - - if(!$this->isServiceEnabled()){ - return new Response(["error" => "unauthorized"], 401); - } - error_reporting(E_ERROR | E_PARSE); - - $this->get("app.user")->logout($request); - - $logout_parameter = $this->getParameter("defaults.auth.console.openid.logout_query_parameter_key") ?: "post_logout_redirect_uri"; - $logout_url_suffix = $this->getParameter("defaults.auth.console.openid.logout_suffix") ?: "/oauth2/logout"; - - $logout_redirect_url = rtrim($this->getParameter("env.server_name"), "/") . "/ajax/users/console/openid/logout_success"; - - if($message){ - $logout_redirect_url .= "?error_code=".str_replace('+', '%20', urlencode(json_encode($message))); - } - - $redirect = ""; - if(!$this->getParameter("defaults.auth.console.openid.disable_logout_redirect")){ - $redirect = "?" . $logout_parameter . "=" . urlencode($logout_redirect_url); - } - - $this->redirect($this->getParameter("defaults.auth.console.openid.provider_uri") . $logout_url_suffix . $redirect); - } - - function index(Request $request) - { - if(!$this->isServiceEnabled()){ - return new Response(["error" => "unauthorized"], 401); - } - - error_reporting(E_ERROR | E_PARSE); - - $this->get("app.user")->logout($request); - - //We store the mobile session - if (!isset($_SESSION)) { - @session_start(); - } - - if($request->query->get("mobile", "")){ - $_SESSION["mobile"] = true; - } - - if($request->query->get("localhost", "")){ - $_SESSION["localhost"] = true; - $_SESSION["localhost_port"] = $request->query->get("port", "3000"); - } - - try { - $oidc = new OpenIDConnectClient( - $this->getParameter("defaults.auth.console.openid.provider_uri"), - $this->getParameter("defaults.auth.console.openid.client_id"), - $this->getParameter("defaults.auth.console.openid.client_secret") - ); - $oidc->setServerKey($this->app->getContainer()->getParameter("jwt.secret")); - - $oidc->setCodeChallengeMethod($this->getParameter("defaults.auth.console.openid.provider_config.code_challenge_methods_supported", [""])[0]); - $oidc->providerConfigParam($this->getParameter("defaults.auth.console.openid.provider_config", [])); - - $oidc->setRedirectURL(rtrim($this->getParameter("env.server_name"), "/") . "/ajax/users/console/openid"); - - $oidc->addScope(array('openid', 'email', 'profile', 'address', 'phone', 'offline_access')); - try { - $authentificated = $oidc->authenticate([ - "ignore_id_token" => true, - "ignore_nonce" => true - ]); - }catch(\Exception $err){ - error_log("Error with Authenticated: ".$err); - $authentificated = false; - } - if ($authentificated) { - return $this->generateReplyForLoginFromOIDCAccessToken($oidc->getAccessToken()); - }else{ - return $this->logout($request, ["error" => "OIDC auth error"]); - } - - } catch (\Exception $e) { - error_log($e); - $this->logout($request, ["error" => "Unknown error while processing OIDC login"]); - } - - return $this->logout($request, ["error" => "An unknown error occurred"]); - - } - - function loginFromOIDCAccessToken(Request $request){ - return new Response($this->generateReplyForLoginFromOIDCAccessToken($request->request->get("access_token"), false), 200); - } - - - function generateReplyForLoginFromOIDCAccessToken($access_token = null, $redirect = true){ - - $accessToken = $access_token; - - $url = rtrim($this->getParameter("defaults.auth.console.provider"), "/") . "/users/profile"; - $header = "Authorization: Bearer " . $accessToken; - $response = $this->app->getServices()->get("app.restclient")->get($url, array(CURLOPT_HTTPHEADER => [$header])); - $response = json_decode($response->getContent(), 1); - - error_log($header); - error_log(json_encode($response)); - - try { - - /** @var User $user */ - $user = (new ApplyUpdates($this->app))->updateUser($response); - - $userTokens = null; - if($user){ - $userTokens = $this->get("app.user")->loginWithIdOnlyWithToken($user->getId()); - } - - } catch (\Exception $e) { - error_log($e); - - if(!$redirect){ - return ["error" => "Unknown error while creating/getting your account"]; - } - - $this->logout($request, ["error" => "Unknown error while creating/getting account"]); - } - - if ($userTokens) { - - if(!$redirect){ - return ["access_token" => $this->get("app.user")->generateJWT($user)]; - } - - return $this->redirect(rtrim($this->getParameter("env.server_name"), "/") - . "/ajax/users/console/redirect_to_app?token=" . urlencode($userTokens["token"]) . "&username=" . urlencode($userTokens["username"]) ); - }else{ - - if(!$redirect){ - return ["error" => "No user profile created."]; - } - - return $this->logout($request, ["error" => "No user profile created: is your email already used in Twake?"]); - } - } - - function redirectToApp(Request $request){ - if (!isset($_SESSION)) { - @session_start(); - } - if($_SESSION["mobile"]){ - return new Response("", 200); - }else{ - return $this->closeIframe("success", [ - "token" => $request->query->get("token"), - "username" => $request->query->get("username") - ]); - } - } - - private function closeIframe($message, $userTokens=null) - { - $server = rtrim($this->getParameter("env.frontend_server_name", $this->getParameter("env.server_name")), "/"); - if($_SESSION["localhost"]){ - $server = "http://localhost:" . $_SESSION["localhost_port"]; - $_SESSION["localhost"] = false; - } - $this->redirect($server - . "/?external_login=".str_replace('+', '%20', urlencode(json_encode(["provider"=>"console", "message" => $message, "token" => json_encode($userTokens)])))); - } - - private function isServiceEnabled(){ - return $this->app->getContainer()->getParameter("defaults.auth.console.use"); - } - -} diff --git a/twake/backend/core/src/Twake/Users/Controller/Adapters/Console/Api.php b/twake/backend/core/src/Twake/Users/Controller/Adapters/Console/Api.php deleted file mode 100755 index 00bc7c65..00000000 --- a/twake/backend/core/src/Twake/Users/Controller/Adapters/Console/Api.php +++ /dev/null @@ -1,117 +0,0 @@ -<?php - -namespace Twake\Users\Controller\Adapters\Console; - -use App\App; -use Common\BaseController; -use Common\Http\Request; -use Common\Http\Response; - -class Api extends BaseController -{ - - - /** @var TwakeRestClient */ - protected $api = null; - - /** @var String */ - protected $endpoint = null; - - /** @var String */ - private $authB64 = ""; - - public function __construct(App $app) - { - parent::__construct($app); - $this->api = $app->getServices()->get("app.restclient"); - $this->endpoint = $this->getParameter("defaults.auth.console.provider"); - $this->authB64 = base64_encode( - $this->getParameter("defaults.auth.console.credentials.key") - . ":" - . $this->getParameter("defaults.auth.console.credentials.secret")); - } - - /** - * Send again the verification email for an user - */ - public function verifyMail(Request $request) - { - if(!$this->getUser()){ - return new Response(["error" => "disconnected"]); - } - - $data = [ - "email" => $this->getUser()->getEmail() - ]; - $header = "Authorization: Basic " . $this->authB64; - $response = $this->api->post(rtrim($this->endpoint, "/") . "/users/resend-verification-email", json_encode($data), array(CURLOPT_HTTPHEADER => [$header, "Content-Type: application/json"])); - $result = json_decode($response->getContent(), 1); - - return new Response(["data" => $result]); - } - - /** - * Invite a list of emails to a workspace - */ - public function invite(Request $request) - { - $companyId = $request->request->get("company_id", ""); - $workspaceId = $request->request->get("workspace_id", ""); - $asExterne = false; - $emails = $request->request->get("emails", []); - $role = $request->request->get("role", "member"); - - // Get company code - $doctrine = $this->get("app.twake_doctrine"); - $groupRepository = $doctrine->getRepository("Twake\Workspaces:Group"); - $company = $groupRepository->find($companyId); - - if(!$company || $company->getIdentityProvider() !== "console"){ - return new Response(["error" => "not a console company"]); - } - - // Check user is connected and part of the requested company - $groupUserRepository = $doctrine->getRepository("Twake\Workspaces:GroupUser"); - $workspaceUserRepository = $doctrine->getRepository("Twake\Workspaces:WorkspaceUser"); - $companyUser = $groupUserRepository->findOneBy(Array("group" => $companyId, "user" => $this->getUser()->getId())); - $workspaceUser = $workspaceUserRepository->findOneBy(Array("workspace_id" => $workspaceId, "user_id" => $this->getUser()->getId())); - if(!$companyUser || !$workspaceUser){ - return new Response(["error" => "user not in company or workspace"]); - } - - // Also add the emails as pending on Twake side - $workspaceUserByMailRepository = $doctrine->getRepository("Twake\Workspaces:WorkspaceUserByMail"); - foreach($emails as $mail){ - $this->get("app.workspace_members")->addMemberByMail($workspaceId, $mail, $asExterne, $this->getUser()->getId(), false); - } - - $companyCode = $company->getIdentityProviderId(); - - $header = "Authorization: Basic " . $this->authB64; - - if($role === "member") { - $data = [ - "emails" => $emails, - "inviter" => [ - "name" => $this->getUser()->getFullName(), - "email" => $this->getUser()->getEmail() - ] - ]; - $response = $this->api->post(rtrim($this->endpoint, "/") . "/companies/" . $companyCode . "/users/invitation", json_encode($data), array(CURLOPT_HTTPHEADER => [$header, "Content-Type: application/json"])); - } - else { - $data = [ - "name" => $emails[0], - "email" => $emails[0], - "password" => base64_encode(random_bytes(6)), - "role" => $role - ]; - $response = $this->api->post(rtrim($this->endpoint, "/") . "/companies/" . $companyCode . "/users", json_encode($data), array(CURLOPT_HTTPHEADER => [$header, "Content-Type: application/json"])); - } - - $result = json_decode($response->getContent(), 1); - - return new Response(["data" => $result]); - } - -} diff --git a/twake/backend/core/src/Twake/Users/Controller/Adapters/Console/ApplyUpdates.php b/twake/backend/core/src/Twake/Users/Controller/Adapters/Console/ApplyUpdates.php deleted file mode 100755 index 9b36b7b2..00000000 --- a/twake/backend/core/src/Twake/Users/Controller/Adapters/Console/ApplyUpdates.php +++ /dev/null @@ -1,275 +0,0 @@ -<?php - -namespace Twake\Users\Controller\Adapters\Console; - -use App\App; -use Twake\Users\Services\PasswordEncoder; -use Twake\Workspaces\Entity\Group; -use Twake\Workspaces\Entity\GroupUser; -use Twake\Workspaces\Entity\ExternalGroupRepository; -use Twake\Upload\Entity\File; - -/** - * This class will do updates in Twake from Twake console - */ -class ApplyUpdates -{ - /** @var App */ - protected $app = null; - - /** @var String */ - protected $endpoint = null; - - public function __construct(App $app) - { - $this->app = $app; - $this->em = $app->getServices()->get("app.twake_doctrine"); - $this->endpoint = $app->getContainer()->getParameter("defaults.auth.console.provider"); - $this->string_cleaner = $app->getServices()->get("app.string_cleaner"); - $this->user_service = $app->getServices()->get("app.user"); - } - - function updateCompany($companyDTO){ - error_log("apply:updateCompany with params: ". json_encode([$companyDTO])); - - $companyConsoleCode = $companyDTO["company"]["details"]["code"]; - - $extRepository = $this->em->getRepository("Twake\Workspaces:ExternalGroupRepository"); - $company_link = $extRepository->findOneBy(Array("service_id" => "console", "external_id" => $companyConsoleCode)); - - $company = null; - if ($company_link) { - $twakeCompanyId = $company_link->getGroupId(); - $companyRepository = $this->em->getRepository("Twake\Workspaces:Group"); - $company = $companyRepository->find($twakeCompanyId); - } - if(!$company) { - //Create company - $company = new Group($companyDTO["company"]["details"]["name"]); - - $this->em->persist($company); - $this->em->flush(); - - $company_link = new ExternalGroupRepository("console", $companyConsoleCode, $company->getId()); - $this->em->persist($company_link); - } - - $company->setName($companyDTO["company"]["details"]["name"]); - $company->setDisplayName($companyDTO["company"]["details"]["name"]); - $company->setIdentityProvider("console"); - $company->setIdentityProviderId($companyConsoleCode); - - $avatar = $userDTO["company"]["details"]["avatar"]; - $picture = $companyDTO["value"] ?: ""; - if($avatar["type"] && $avatar["type"] !== "url"){ - $picture = rtrim($this->endpoint, "/") . "/avatars/" . $avatar["value"]; - } - $company->setLogo($picture); - - // Format is {name: "string", limits: {}} - $company->setPlan($companyDTO["company"]["plan"]); - - // Format is {} - $company->setStats($companyDTO["company"]["stats"]); - - $logo = $companyDTO["company"]["details"]["logo"]; - if ($logo) { - $company->setLogo($logo); - } - - $this->em->persist($company); - $this->em->flush(); - - $this->app->getServices()->get("app.groups")->init($company); - - return $company; - - } - - function removeCompany($companyConsoleCode){ - //Not implemented - error_log("not implemented"); - return false; - } - - /** - * Take a user from api and save it into PHP - */ - function updateUser($userDTO){ - error_log("apply:updateUser with params: ". json_encode([$userDTO])); - - $roles = $userDTO["roles"]; - - $userConsoleId = $userDTO["_id"]; - - $email = $userDTO["email"]; - $username = preg_replace("/ +/", "_", - preg_replace("/[^a-zA-Z0-9]/", "", - trim( - strtolower( - explode("@", $userDTO["email"])[0] - ) - ) - ) - ); - - // Create user if needed - $user = $this->user_service->getUserFromExternalRepository("console", $userConsoleId); - if (!$user) { - //Create user on our side - - //Find allowed username / email - $counter = 1; - $original_username = $username; - $ok = false; - $mailUsedError = false; - $usernameUsedError = false; - do { - $res = $this->user_service->getAvaibleMailPseudo($email, $username); - if ($res !== true) { - if (in_array(-1, $res)) { - //Mail used - $mailUsedError = true; - break; - } - if (in_array(-2, $res)) { - //Username used - $username = $original_username . $counter; - $usernameUsedError = true; - }else{ - $usernameUsedError = false; - $ok = true; - } - }else{ - $usernameUsedError = false; - $ok = true; - } - $counter++; - } while (!$ok && $counter < 1000); - if($mailUsedError || $usernameUsedError){ - error_log("Console user not created because mail exists or username exists:"); - error_log("Username used " . $username . ": " . ( $usernameUsedError ? "true" : "false" ) ); - error_log("Email used " . $email . ": " . ( $mailUsedError ? "true" : "false" ) ); - return false; - } - - $user = new \Twake\Users\Entity\User(); - $user->setSalt(bin2hex(random_bytes(40))); - $encoder = new PasswordEncoder(); - $user->setPassword($encoder->encodePassword(bin2hex(random_bytes(40)), $user->getSalt())); - $user->setUsername($username); - $user->setMailVerified(true); - $user->setEmail($email); - $user->setIdentityProvider("console"); - $user->setIdentityProviderId($userConsoleId); - - $this->em->persist($user); - $this->em->flush(); - - $this->user_service->setUserFromExternalRepository("console", $userConsoleId, $user->getId()); - } - - // Update user names - $user->setEmail($email); - $user->setPhone(""); - $user->setFirstName($userDTO["firstName"] ?: ($userDTO["name"] ?: "")); - $user->setLastName($userDTO["lastName"] ?: ""); - $user->setMailVerified(!!$userDTO["isVerified"]); - $user->setIdentityProvider("console"); - $user->setIdentityProviderId($userConsoleId); - - $user->setLanguage(@$userDTO["preference"]["locale"] ?: "en"); - $user->setTimezone(@$userDTO["preference"]["timeZone"] ?: ""); - - // Update user picture - $avatar = $userDTO["avatar"]; - $picture = $avatar["value"] ?: ""; - if($avatar["type"] && $avatar["type"] !== "url"){ - $picture = rtrim($this->endpoint, "/") . "/avatars/" . $avatar["value"]; - } - $user->setPicture($picture); - - $this->em->persist($user); - $this->em->flush(); - - foreach($roles as $role){ - $companyConsoleCode = $role["targetCode"]; - $level = $role["roleCode"]; - //Double check we created this user in external users repo - if($companyConsoleCode && $this->user_service->getUserFromExternalRepository("console", $userConsoleId)){ - (new PrepareUpdates($this->app))->addUser($userConsoleId, $companyConsoleCode, $userDTO); - } - } - - error_log("Created console user in Twake with success, id: " . $user->getId()); - - return $user; - - } - - /** - * Add or update user in a company, the role has the following format: - * roleCode: "owner" | 'admin' | 'member' | 'guest', - * status: "active", - */ - function addUser($userTwakeEntity, $companyTwakeEntity, $roleDTO){ - error_log("addUser with params: ". json_encode([$userTwakeEntity, $companyTwakeEntity, $roleDTO])); - - if($roleDTO["status"] !== "active"){ - return $this->removeUser($userTwakeEntity, $companyTwakeEntity); - } - - // Add user into the company - - $companyUserRepository = $this->em->getRepository("Twake\Workspaces:GroupUser"); - $companyUserEntity = $companyUserRepository->findOneBy(Array("group" => $companyTwakeEntity, "user" => $userTwakeEntity)); - - if(!$companyUserEntity){ - $companyUserEntity = new GroupUser($companyTwakeEntity, $userTwakeEntity); - } - - $companyUserEntity->setExterne($roleDTO["roleCode"] === "guest"); - $companyUserEntity->setLevel(($roleDTO["roleCode"] === "admin" || $roleDTO["roleCode"] === "owner") ? 3 : 0); - $role = $roleDTO["roleCode"]; - if($role == "owner") $role = "admin"; - $companyUserEntity->setRole($role); - - $this->em->persist($companyUserEntity); - $this->em->flush(); - - // Check if company has any workspace, if not, create a workspace and invite user in it - - $workspacesRepository = $this->em->getRepository("Twake\Workspaces:Workspace"); - $existingWorkspace = $workspacesRepository->findBy(Array("group" => $companyTwakeEntity)); - - if(count($existingWorkspace) < 1){ - $this->app->getServices()->get("app.workspaces")->create($companyTwakeEntity->getDisplayName(), $companyTwakeEntity->getId(), $userTwakeEntity->getId(), true); - }else{ - foreach($existingWorkspace as $workspace){ - if($workspace->getIsDefault() || count($existingWorkspace) == 1){ - //Add user in this workspace - $this->app->getServices()->get("app.workspace_members")->addMember($workspace->getId(), $userTwakeEntity->getId(), false, null); - } - } - } - - $this->app->getServices()->get("app.workspace_members")->autoAddMemberByNewMail($userTwakeEntity->getEmail(), $userTwakeEntity->getId()); - - return true; - - } - - function removeUser($userTwakeEntity, $companyTwakeEntity){ - error_log("removeUser with params: ". json_encode([$userTwakeEntity, $companyTwakeEntity])); - $companyUserRepository = $this->em->getRepository("Twake\Workspaces:GroupUser"); - $companyUserEntity = $companyUserRepository->findOneBy(Array("group" => $companyTwakeEntity, "user" => $userTwakeEntity)); - - if($companyUserEntity){ - $this->em->remove($companyUserEntity); - $this->em->flush(); - } - - return true; - } - -} diff --git a/twake/backend/core/src/Twake/Users/Controller/Adapters/Console/Hooks.php b/twake/backend/core/src/Twake/Users/Controller/Adapters/Console/Hooks.php deleted file mode 100755 index 69238d83..00000000 --- a/twake/backend/core/src/Twake/Users/Controller/Adapters/Console/Hooks.php +++ /dev/null @@ -1,100 +0,0 @@ -<?php - -namespace Twake\Users\Controller\Adapters\Console; - -use App\App; -use Common\Http\Response; -use Common\Http\Request; - -class Hooks -{ - /** @var App */ - protected $app = null; - - public function __construct(App $app) - { - $this->app = $app; - } - - function handle(Request $request) - { - $sign = $request->request->get("signature"); - $event = [ - "content" => $request->request->get("content"), - "type" => $request->request->get("type"), - "secret_key" => $request->request->get("secret_key") - ]; - - // Check secret - $secret = $this->app->getContainer()->getParameter("defaults.auth.console.secret"); - if ($secret && $secret != $request->query->get("secret_key")) { - return new Response(["error" => "unauthorized"], 401); - } - - // Check signature to ensure request origin - $publicKey = $this->app->getContainer()->getParameter("defaults.auth.console.public_key"); - if ($publicKey) { - $r = openssl_verify(json_encode($event), base64_decode(str_replace(str_split('._-'), str_split('+/='), $sign)), $publicKey, OPENSSL_ALGO_SHA512); - if(!$r){ - return new Response(["error" => "unauthorized"], 401); - } - }else{ - error_log("WARNING: no public key set for console hook!"); - } - - error_log(json_encode($event)); - - switch($event["type"]){ - case "company_user_added": - case "company_user_activated": - case "company_user_updated": - return $this->userAdded($event["content"]); - case "company_user_deactivated": - return $this->userRemoved($event["content"]); - case "user_updated": - return $this->userUpdated($event["content"]); - case "plan_updated": - return $this->planUpdated($event["content"]); - case "company_deleted": - return $this->companyRemoved($event["content"]); - case "company_created": - case "company_updated": - return $this->companyUpdated($event["content"]); - default: - return new Response(["error" => "unimplemented"], 501); - } - } - - function userAdded($data){ - $service = new PrepareUpdates($this->app); - if($data["company"]["code"]) $service->updateCompany($data["company"]["code"]); - return new Response($service->addUser($data["user"]["_id"], $data["company"]["code"] ?: null, $data["user"]) ?: ""); - } - - function userRemoved($data){ - $service = new PrepareUpdates($this->app); - if($data["company"]["code"]) $service->updateCompany($data["company"]["code"]); - return new Response($service->removeUser($data["user"]["_id"], $data["company"]["code"] ?: null) ?: ""); - } - - function userUpdated($data){ - $service = new PrepareUpdates($this->app); - return new Response($service->updateUser($data["user"]["_id"], $data["company"]["code"] ?: null, $data["user"]) ?: ""); - } - - function companyRemoved($data){ - $service = new PrepareUpdates($this->app); - return new Response($service->removeCompany($data["company"]["code"]) ?: ""); - } - - function companyUpdated($data){ - $service = new PrepareUpdates($this->app); - return new Response($service->updateCompany($data["company"]["code"]) ?: ""); - } - - function planUpdated($data){ - $service = new PrepareUpdates($this->app); - return new Response($service->updateCompany($data["company"]["code"]) ?: ""); - } - -} diff --git a/twake/backend/core/src/Twake/Users/Controller/Adapters/Console/PrepareUpdates.php b/twake/backend/core/src/Twake/Users/Controller/Adapters/Console/PrepareUpdates.php deleted file mode 100755 index 573af3d7..00000000 --- a/twake/backend/core/src/Twake/Users/Controller/Adapters/Console/PrepareUpdates.php +++ /dev/null @@ -1,125 +0,0 @@ -<?php - -namespace Twake\Users\Controller\Adapters\Console; - -use App\App; - -/** - * This class will do updates in Twake from Twake console - */ -class PrepareUpdates -{ - /** @var App */ - protected $app = null; - - /** @var TwakeRestClient */ - protected $api = null; - - /** @var String */ - protected $endpoint = null; - - /** @var String */ - private $authB64 = ""; - - public function __construct(App $app) - { - $this->app = $app; - $this->api = $app->getServices()->get("app.restclient"); - $this->endpoint = $this->app->getContainer()->getParameter("defaults.auth.console.provider"); - $this->authB64 = base64_encode( - $this->app->getContainer()->getParameter("defaults.auth.console.credentials.key") - . ":" - . $this->app->getContainer()->getParameter("defaults.auth.console.credentials.secret")); - } - - function updateCompany($companyCode){ - error_log("updateCompany with params: " . json_encode([$companyCode])); - $header = "Authorization: Basic " . $this->authB64; - $response = $this->api->get(rtrim($this->endpoint, "/") . "/companies/" . $companyCode, array(CURLOPT_HTTPHEADER => [$header])); - $companyDTO = json_decode($response->getContent(), 1); - $result = (new ApplyUpdates($this->app))->updateCompany($companyDTO); - return [ - "success" => !!$result - ]; - } - - function removeCompany($companyCode){ - error_log("removeCompany with params: " . json_encode([$companyCode])); - $result = (new ApplyUpdates($this->app))->removeCompany($companyCode); - return [ - "success" => !!$result - ]; - } - - function updateUser($userId, $companyCode = null, $userDTO = null){ - error_log("updateUser with params: " . json_encode([$userId, $companyCode, $userDTO])); - if(!$userDTO){ - return [ - "success" => false - ]; - } - $result = (new ApplyUpdates($this->app))->updateUser($userDTO); - return [ - "success" => !!$result - ]; - } - - function addUser($userId, $companyCode, $userDTO = null){ - error_log("addUser with params: " . json_encode([$userId, $companyCode, $userDTO])); - - $user = (new Utils($this->app))->getUser($userId); - $company = (new Utils($this->app))->getCompany($companyCode); - - if(!$user){ - $this->updateUser($userId, $companyCode, $userDTO); - $user = (new Utils($this->app))->getUser($userId); - } - if(!$company){ - $this->updateCompany($companyCode); - $company = (new Utils($this->app))->getCompany($companyCode); - } - - if(!$user || !$company){ - return [ - "success" => false - ]; - } - - //Fixme, in the future there should be a better endpoint to get user role in a given company - if(!$userDTO){ - $header = "Authorization: Basic " . $this->authB64; - $response = $this->api->get(rtrim($this->endpoint, "/") . "/users/" . $userId, array(CURLOPT_HTTPHEADER => [$header])); - $userDTO = json_decode($response->getContent(), 1); - } - $companyRole = null; - foreach($userDTO["roles"] as $role){ - if($role["targetCode"] === $companyCode){ - $companyRole = $role; - } - } - - $result = (new ApplyUpdates($this->app))->addUser($user, $company, $companyRole); - return [ - "success" => !!$result - ]; - } - - function removeUser($userId, $companyCode){ - error_log("removeUser with params: " . json_encode([$userId, $companyCode])); - - $user = (new Utils($this->app))->getUser($userId); - $company = (new Utils($this->app))->getCompany($companyCode); - - if(!$user || !$company){ - return [ - "success" => true - ]; - } - - $result = (new ApplyUpdates($this->app))->removeUser($user, $company); - return [ - "success" => !!$result - ]; - } - -} diff --git a/twake/backend/core/src/Twake/Users/Controller/Adapters/Console/Utils.php b/twake/backend/core/src/Twake/Users/Controller/Adapters/Console/Utils.php deleted file mode 100755 index 290ae457..00000000 --- a/twake/backend/core/src/Twake/Users/Controller/Adapters/Console/Utils.php +++ /dev/null @@ -1,49 +0,0 @@ -<?php - -namespace Twake\Users\Controller\Adapters\Console; - -use App\App; - -/** - * This class will do updates in Twake from Twake console - */ -class Utils -{ - /** @var App */ - protected $app = null; - - public function __construct(App $app) - { - $this->app = $app; - $this->em = $app->getServices()->get("app.twake_doctrine"); - $this->string_cleaner = $app->getServices()->get("app.string_cleaner"); - $this->user_service = $app->getServices()->get("app.user"); - } - - function getCompany($companyConsoleId){ - $extRepository = $this->em->getRepository("Twake\Workspaces:ExternalGroupRepository"); - $company_link = $extRepository->findOneBy(Array("service_id" => "console", "external_id" => $companyConsoleId)); - - $company = null; - if ($company_link) { - $twakeCompanyId = $company_link->getGroupId(); - $companyRepository = $this->em->getRepository("Twake\Workspaces:Group"); - $company = $companyRepository->find($twakeCompanyId); - } - return $company; - } - - function getUser($userConsoleId){ - $extRepository = $this->em->getRepository("Twake\Users:ExternalUserRepository"); - $user_link = $extRepository->findOneBy(Array("service_id" => "console", "external_id" => $userConsoleId)); - - $user = null; - if ($user_link) { - $twakeUserId = $user_link->getUserId(); - $userRepository = $this->em->getRepository("Twake\Users:User"); - $user = $userRepository->find($twakeUserId); - } - return $user; - } - -} diff --git a/twake/backend/core/src/Twake/Users/Controller/Adapters/OpenID.php b/twake/backend/core/src/Twake/Users/Controller/Adapters/OpenID.php deleted file mode 100755 index fd1ee589..00000000 --- a/twake/backend/core/src/Twake/Users/Controller/Adapters/OpenID.php +++ /dev/null @@ -1,143 +0,0 @@ -<?php - -namespace Twake\Users\Controller\Adapters; - -use Common\BaseController; -use Common\Http\Request; -use Common\Http\Response; -use Twake\Users\Controller\Adapters\OpenID\OpenIDConnectClient; -use Twake\Users\Entity\User; - -class OpenID extends BaseController -{ - - function logoutSuccess(Request $request) - { - try{ - $message = json_decode(urldecode($request->query->get("error_code"))); - }catch(\Exception $err){ - $message = "success"; - } - return $this->closeIframe($message); - } - - function logout(Request $request, $message = null) - { - error_reporting(E_ERROR | E_PARSE); - - $this->get("app.user")->logout($request); - - $logout_parameter = $this->getParameter("defaults.auth.openid.logout_query_parameter_key") ?: "post_logout_redirect_uri"; - $logout_url_suffix = $this->getParameter("defaults.auth.openid.logout_suffix") ?: "/logout"; - - $logout_redirect_url = rtrim($this->getParameter("env.server_name"), "/") . "/ajax/users/openid/logout_success"; - - if($message){ - $logout_redirect_url .= "?error_code=".str_replace('+', '%20', urlencode(json_encode($message))); - } - - $redirect = ""; - if(!$this->getParameter("defaults.auth.openid.disable_logout_redirect")){ - $redirect = "?" . $logout_parameter . "=" . urlencode($logout_redirect_url); - } - - $this->redirect($this->getParameter("defaults.auth.openid.provider_uri") . $logout_url_suffix . $redirect); - } - - function index(Request $request) - { - - if (!$this->getParameter("defaults.auth.openid.use")) { - return new Response(["error" => "OpenID is not enabled on this instance"]); - } - - error_reporting(E_ERROR | E_PARSE); - - $this->get("app.user")->logout($request); - - try { - $oidc = new OpenIDConnectClient( - $this->getParameter("defaults.auth.openid.provider_uri"), - $this->getParameter("defaults.auth.openid.client_id"), - $this->getParameter("defaults.auth.openid.client_secret") - ); - $oidc->setServerKey($this->app->getContainer()->getParameter("jwt.secret")); - - $oidc->providerConfigParam($this->getParameter("defaults.auth.openid.provider_config", [])); - - $oidc->setRedirectURL(rtrim($this->getParameter("env.server_name"), "/") . "/ajax/users/openid"); - - $oidc->addScope(array('openid', 'email', 'profile')); - - try { - $authentificated = $oidc->authenticate([ - "ignore_id_token" => true - ]); - }catch(\Exception $err){ - error_log("Error with Authenticated: ".$err); - $authentificated = false; - } - if ($authentificated) { - - $data = []; - $data["user_id"] = $oidc->requestUserInfo('sub'); //User unique id - $data["nickname"] = $oidc->requestUserInfo('nickname'); //Prefered first name / username - $data["given_name"] = $oidc->requestUserInfo('given_name'); //First name - $data["family_name"] = $oidc->requestUserInfo('family_name'); //Second name - $data["name"] = $oidc->requestUserInfo('name'); //Full name - $data["email"] = $oidc->requestUserInfo('email'); - $data["email_verified"] = $oidc->requestUserInfo('email_verified'); - $data["picture"] = $oidc->requestUserInfo('picture'); //Thumbnail - - if ((empty($data["email_verified"]) || !$data["email_verified"] || empty($data["email"])) && !$this->getParameter("defaults.auth.openid.ignore_mail_verified")) { - return $this->logout($request, ["error" => "Your mail is not verified"]); - } - - if (empty($data["user_id"])) { - return $this->logout($request, ["error" => "An error occurred (no unique id found)"]); - } - - //Generate username, fullname, email, picture from recovered data - $external_id = $data["user_id"]; - $email = $data["email"]; - $picture = $data["picture"]; - $fullname = $data["name"] ?: (($data["given_name"] . " " . $data["family_name"]) ?: $data["nickname"]); - $fullname = explode("@", $fullname)[0]; - $username = preg_replace("/ '/", "_", - preg_replace("/[^a-zA-Z0-9]/", "", - trim( - strtolower( - $data["nickname"] ?: ($fullname ?: explode("@", $data["email"])[0]) - ) - ) - ) - ); - - /** @var User $user */ - $userTokens = $this->get("app.user")->loginFromServiceWithToken("openid", $external_id, $email, $username, $fullname, $picture); - - if ($userTokens) { - return $this->closeIframe("success", $userTokens); - }else{ - return $this->logout($request, ["error" => "No user profile created"]); - } - - }else{ - return $this->logout($request, ["error" => "OIDC auth error"]); - } - - } catch (\Exception $e) { - error_log($e); - $this->logout($request); - } - - return $this->logout($request, ["error" => "An unknown error occurred"]); - - } - - private function closeIframe($message, $userTokens=null) - { - $this->redirect(rtrim($this->getParameter("env.frontend_server_name", $this->getParameter("env.server_name")), "/") . "?external_login=".str_replace('+', '%20', urlencode(json_encode(["provider"=>"openid", "message" => $message, "token" => json_encode($userTokens)])))); - } - -} diff --git a/twake/backend/core/src/Twake/Users/Controller/Adapters/OpenID/OpenIDConnectClient.php b/twake/backend/core/src/Twake/Users/Controller/Adapters/OpenID/OpenIDConnectClient.php deleted file mode 100755 index 3e514cd5..00000000 --- a/twake/backend/core/src/Twake/Users/Controller/Adapters/OpenID/OpenIDConnectClient.php +++ /dev/null @@ -1,1828 +0,0 @@ -<?php -namespace Twake\Users\Controller\Adapters\OpenID; - -use \Firebase\JWT\JWT; - -/** - * - * JWT signature verification support by Jonathan Reed <jdreed@mit.edu> - * Edited by Romaric Mourgues to make it stateless and compatible with LemonLDAP - * Licensed under the same license as the rest of this file. - * - * phpseclib is required to validate the signatures of some tokens. - * It can be downloaded from: http://phpseclib.sourceforge.net/ - */ - -if (!class_exists('\phpseclib\Crypt\RSA') && !class_exists('Crypt_RSA')) { - user_error('Unable to find phpseclib Crypt/RSA.php. Ensure phpseclib is installed and in include_path before you include this file'); -} - -/** - * A wrapper around base64_decode which decodes Base64URL-encoded data, - * which is not the same alphabet as base64. - * @param string $base64url - * @return bool|string - */ -function base64url_decode($base64url) { - return base64_decode(b64url2b64($base64url)); -} - -/** - * Per RFC4648, "base64 encoding with URL-safe and filename-safe - * alphabet". This just replaces characters 62 and 63. None of the - * reference implementations seem to restore the padding if necessary, - * but we'll do it anyway. - * @param string $base64url - * @return string - */ -function b64url2b64($base64url) { - // "Shouldn't" be necessary, but why not - $padding = strlen($base64url) % 4; - if ($padding > 0) { - $base64url .= str_repeat('=', 4 - $padding); - } - return strtr($base64url, '-_', '+/'); -} - - -/** - * OpenIDConnect Exception Class - */ -class OpenIDConnectClientException extends \Exception -{ - -} - -/** - * Require the CURL and JSON PHP extensions to be installed - */ -if (!function_exists('curl_init')) { - throw new OpenIDConnectClientException('OpenIDConnect needs the CURL PHP extension.'); -} -if (!function_exists('json_decode')) { - throw new OpenIDConnectClientException('OpenIDConnect needs the JSON PHP extension.'); -} - -/** - * - * Please note this class stores nonces by default in $_SESSION['openid_connect_nonce'] - * - */ -class OpenIDConnectClient -{ - - /** - * @var string arbitrary id value - */ - private $clientID; - - /** - * @var string arbitrary name value - */ - private $clientName; - - /** - * @var string arbitrary secret value - */ - private $clientSecret; - - /** - * @var array holds the provider configuration - */ - private $providerConfig = array(); - - /** - * @var string http proxy if necessary - */ - private $httpProxy; - - /** - * @var string full system path to the SSL certificate - */ - private $certPath; - - /** - * @var bool Verify SSL peer on transactions - */ - private $verifyPeer = true; - - /** - * @var bool Verify peer hostname on transactions - */ - private $verifyHost = true; - - /** - * @var string if we acquire an access token it will be stored here - */ - protected $accessToken; - - /** - * @var string if we acquire a refresh token it will be stored here - */ - private $refreshToken; - - /** - * @var string if we acquire an id token it will be stored here - */ - protected $idToken; - - /** - * @var string stores the token response - */ - private $tokenResponse; - - /** - * @var array holds scopes - */ - private $scopes = array(); - - /** - * @var int|null Response code from the server - */ - private $responseCode; - - /** - * @var array holds response types - */ - private $responseTypes = array(); - - /** - * @var array holds a cache of info returned from the user info endpoint - */ - private $userInfo = array(); - - /** - * @var array holds authentication parameters - */ - private $authParams = array(); - - /** - * @var array holds additional registration parameters for example post_logout_redirect_uris - */ - private $registrationParams = array(); - - /** - * @var mixed holds well-known openid server properties - */ - private $wellKnown = false; - - /** - * @var mixed holds well-known opendid configuration parameters, like policy for MS Azure AD B2C User Flow - * @see https://docs.microsoft.com/en-us/azure/active-directory-b2c/user-flow-overview - */ - private $wellKnownConfigParameters = array(); - - /** - * @var int timeout (seconds) - */ - protected $timeOut = 60; - - /** - * @var int leeway (seconds) - */ - private $leeway = 300; - - /** - * @var array holds response types - */ - private $additionalJwks = array(); - - /** - * @var array holds verified jwt claims - */ - protected $verifiedClaims = array(); - - /** - * @var callable validator function for issuer claim - */ - private $issuerValidator; - - /** - * @var bool Allow OAuth 2 implicit flow; see http://openid.net/specs/openid-connect-core-1_0.html#ImplicitFlowAuth - */ - private $allowImplicitFlow = false; - /** - * @var string - */ - private $redirectURL; - - protected $enc_type = PHP_QUERY_RFC1738; - - /** - * @var string holds code challenge method for PKCE mode - * @see https://tools.ietf.org/html/rfc7636 - */ - private $codeChallengeMethod = false; - - /** - * @var array holds PKCE supported algorithms - */ - private $pkceAlgs = array('S256' => 'sha256', 'plain' => false); - - /** - * Server key, used to generate stateless OIDC state - */ - private $serverKey = ""; - - public function setServerKey($key){ - $this->serverKey = $key; - } - - private function getServerKey(){ - return $this->serverKey; - } - - /** - * @param $provider_url string optional - * - * @param $client_id string optional - * @param $client_secret string optional - * @param null $issuer - */ - public function __construct($provider_url = null, $client_id = null, $client_secret = null, $issuer = null) { - $this->setProviderURL($provider_url); - if ($issuer === null) { - $this->setIssuer($provider_url); - } else { - $this->setIssuer($issuer); - } - - $this->clientID = $client_id; - $this->clientSecret = $client_secret; - - $this->issuerValidator = function($iss){ - return ($iss === $this->getIssuer() || $iss === $this->getWellKnownIssuer() || $iss === $this->getWellKnownIssuer(true)); - }; - } - - /** - * @param $provider_url - */ - public function setProviderURL($provider_url) { - $this->providerConfig['providerUrl'] = $provider_url; - } - - /** - * @param $issuer - */ - public function setIssuer($issuer) { - $this->providerConfig['issuer'] = $issuer; - } - - /** - * @param $response_types - */ - public function setResponseTypes($response_types) { - $this->responseTypes = array_merge($this->responseTypes, (array)$response_types); - } - - /** - * @return bool - * @throws OpenIDConnectClientException - */ - public function authenticate($options = []) { - - // Do a preemptive check to see if the provider has thrown an error from a previous redirect - if (isset($_REQUEST['error'])) { - $desc = isset($_REQUEST['error_description']) ? ' Description: ' . $_REQUEST['error_description'] : ''; - throw new OpenIDConnectClientException('Error: ' . $_REQUEST['error'] .$desc); - } - - // If we have an authorization code then proceed to request a token - if (isset($_REQUEST['code'])) { - - $code = $_REQUEST['code']; - $token_json = $this->requestTokens($code); - - // Throw an error if the server returns one - if (isset($token_json->error)) { - if (isset($token_json->error_description)) { - throw new OpenIDConnectClientException($token_json->error_description); - } - throw new OpenIDConnectClientException('Got response: ' . $token_json->error); - } - - // Do an OpenID Connect session check - if (!$this->checkState($_REQUEST['state']) && !$options["ignore_state"]) { - throw new OpenIDConnectClientException('Unable to determine state'); - } - - if (!property_exists($token_json, 'id_token')) { - throw new OpenIDConnectClientException('User did not authorize openid scope.'); - } - - $claims = $this->decodeJWT($token_json->id_token, 1); - - // Verify the signature - if ($this->canVerifySignatures()) { - if (!$this->getProviderConfigValue('jwks_uri')) { - throw new OpenIDConnectClientException ('Unable to verify signature due to no jwks_uri being defined'); - } - if (!$this->verifyJWTsignature($token_json->id_token)) { - throw new OpenIDConnectClientException ('Unable to verify signature'); - } - } else { - user_error('Warning: JWT signature verification unavailable.'); - } - - // Save the id token - $this->idToken = $token_json->id_token; - - // Save the access token - $this->accessToken = $token_json->access_token; - - // If this is a valid claim - if ($this->verifyJWTclaims($claims, $token_json->access_token, $options)) { - - // Clean up the session a little - $this->unsetNonce(); - - // Save the full response - $this->tokenResponse = $token_json; - - // Save the verified claims - $this->verifiedClaims = $claims; - - // Save the refresh token, if we got one - if (isset($token_json->refresh_token)) { - $this->refreshToken = $token_json->refresh_token; - } - - // Success! - return true; - - } - - throw new OpenIDConnectClientException ('Unable to verify JWT claims'); - } - - if ($this->allowImplicitFlow && isset($_REQUEST['id_token'])) { - // if we have no code but an id_token use that - $id_token = $_REQUEST['id_token']; - - $accessToken = null; - if (isset($_REQUEST['access_token'])) { - $accessToken = $_REQUEST['access_token']; - } - - // Do an OpenID Connect session check - if ($_REQUEST['state'] !== $this->checkState($_REQUEST['state'])) { - throw new OpenIDConnectClientException('Unable to determine state'); - } - - $claims = $this->decodeJWT($id_token, 1); - - // Verify the signature - if ($this->canVerifySignatures()) { - if (!$this->getProviderConfigValue('jwks_uri')) { - throw new OpenIDConnectClientException ('Unable to verify signature due to no jwks_uri being defined'); - } - if (!$this->verifyJWTsignature($id_token)) { - throw new OpenIDConnectClientException ('Unable to verify signature'); - } - } else { - user_error('Warning: JWT signature verification unavailable.'); - } - - // Save the id token - $this->idToken = $id_token; - - // If this is a valid claim - if ($this->verifyJWTclaims($claims, $accessToken, $options)) { - - // Clean up the session a little - $this->unsetNonce(); - - // Save the verified claims - $this->verifiedClaims = $claims; - - // Save the access token - if ($accessToken) { - $this->accessToken = $accessToken; - } - - // Success! - return true; - - } - - throw new OpenIDConnectClientException ('Unable to verify JWT claims'); - } - - $this->requestAuthorization(); - return false; - - } - - /** - * It calls the end-session endpoint of the OpenID Connect provider to notify the OpenID - * Connect provider that the end-user has logged out of the relying party site - * (the client application). - * - * @param string $accessToken ID token (obtained at login) - * @param string|null $redirect URL to which the RP is requesting that the End-User's User Agent - * be redirected after a logout has been performed. The value MUST have been previously - * registered with the OP. Value can be null. - * - * @throws OpenIDConnectClientException - */ - public function signOut($accessToken, $redirect) { - $signout_endpoint = $this->getProviderConfigValue('end_session_endpoint'); - - $signout_params = null; - if($redirect === null){ - $signout_params = array('id_token_hint' => $accessToken); - } - else { - $signout_params = array( - 'id_token_hint' => $accessToken, - 'post_logout_redirect_uri' => $redirect); - } - - $signout_endpoint .= (strpos($signout_endpoint, '?') === false ? '?' : '&') . http_build_query( $signout_params, null, '&', $this->enc_type); - error_log("redirect user to (signout): ".$signout_endpoint); - - $this->redirect($signout_endpoint); - } - - /** - * @param array $scope - example: openid, given_name, etc... - */ - public function addScope($scope) { - $this->scopes = array_merge($this->scopes, (array)$scope); - } - - /** - * @param array $param - example: prompt=login - */ - public function addAuthParam($param) { - $this->authParams = array_merge($this->authParams, (array)$param); - } - - /** - * @param array $param - example: post_logout_redirect_uris=[http://example.com/successful-logout] - */ - public function addRegistrationParam($param) { - $this->registrationParams = array_merge($this->registrationParams, (array)$param); - } - - /** - * @param $jwk object - example: (object) array('kid' => ..., 'nbf' => ..., 'use' => 'sig', 'kty' => "RSA", 'e' => "", 'n' => "") - */ - protected function addAdditionalJwk($jwk) { - $this->additionalJwks[] = $jwk; - } - - /** - * Get's anything that we need configuration wise including endpoints, and other values - * - * @param string $param - * @param string $default optional - * @throws OpenIDConnectClientException - * @return string - * - */ - protected function getProviderConfigValue($param, $default = null) { - - // If the configuration value is not available, attempt to fetch it from a well known config endpoint - // This is also known as auto "discovery" - if (!isset($this->providerConfig[$param])) { - $this->providerConfig[$param] = $this->getWellKnownConfigValue($param, $default); - } - - return $this->providerConfig[$param]; - } - - /** - * Get's anything that we need configuration wise including endpoints, and other values - * - * @param string $param - * @param string $default optional - * @throws OpenIDConnectClientException - * @return string - * - */ - private function getWellKnownConfigValue($param, $default = null) { - - // If the configuration value is not available, attempt to fetch it from a well known config endpoint - // This is also known as auto "discovery" - if(!$this->wellKnown) { - $well_known_config_url = rtrim($this->getProviderURL(), '/') . '/.well-known/openid-configuration'; - if (count($this->wellKnownConfigParameters) > 0){ - $well_known_config_url .= '?' . http_build_query($this->wellKnownConfigParameters) ; - } - $this->wellKnown = json_decode($this->fetchURL($well_known_config_url)); - } - - $value = false; - if(isset($this->wellKnown->{$param})){ - $value = $this->wellKnown->{$param}; - } - - if ($value) { - return $value; - } - - if (isset($default)) { - // Uses default value if provided - return $default; - } - - throw new OpenIDConnectClientException("The provider {$param} could not be fetched. Make sure your provider has a well known configuration available."); - } - - /** - * Set optionnal parameters for .well-known/openid-configuration - * - * @param string $param - * - */ - public function setWellKnownConfigParameters(array $params = []){ - $this->wellKnownConfigParameters=$params; - } - - - /** - * @param string $url Sets redirect URL for auth flow - */ - public function setRedirectURL ($url) { - if (parse_url($url,PHP_URL_HOST) !== false) { - $this->redirectURL = $url; - } - } - - /** - * Gets the URL of the current page we are on, encodes, and returns it - * - * @return string - */ - public function getRedirectURL() { - - // If the redirect URL has been set then return it. - if (property_exists($this, 'redirectURL') && $this->redirectURL) { - return $this->redirectURL; - } - - // Other-wise return the URL of the current page - - /** - * Thank you - * http://stackoverflow.com/questions/189113/how-do-i-get-current-page-full-url-in-php-on-a-windows-iis-server - */ - - /* - * Compatibility with multiple host headers. - * The problem with SSL over port 80 is resolved and non-SSL over port 443. - * Support of 'ProxyReverse' configurations. - */ - - if (isset($_SERVER['HTTP_UPGRADE_INSECURE_REQUESTS']) && ($_SERVER['HTTP_UPGRADE_INSECURE_REQUESTS'] === '1')) { - $protocol = 'https'; - } else { - $protocol = @$_SERVER['HTTP_X_FORWARDED_PROTO'] - ?: @$_SERVER['REQUEST_SCHEME'] - ?: ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on') ? 'https' : 'http'); - } - - $port = @intval($_SERVER['HTTP_X_FORWARDED_PORT']) - ?: @intval($_SERVER['SERVER_PORT']) - ?: (($protocol === 'https') ? 443 : 80); - - $host = @explode(':', $_SERVER['HTTP_HOST'])[0] - ?: @$_SERVER['SERVER_NAME'] - ?: @$_SERVER['SERVER_ADDR']; - - $port = (443 === $port) || (80 === $port) ? '' : ':' . $port; - - return sprintf('%s://%s%s/%s', $protocol, $host, $port, @trim(reset(explode('?', $_SERVER['REQUEST_URI'])), '/')); - } - - /** - * Used for arbitrary value generation for nonces and state - * - * @return string - * @throws OpenIDConnectClientException - */ - protected function generateRandString() { - // Error and Exception need to be catched in this order, see https://github.com/paragonie/random_compat/blob/master/README.md - // random_compat polyfill library should be removed if support for PHP versions < 7 is dropped - try { - $a = \bin2hex(\random_bytes(16)); - error_log("random string: ".$a); - return $a; - } catch (Error $e) { - throw new OpenIDConnectClientException('Random token generation failed.'); - } catch (\Exception $e) { - throw new OpenIDConnectClientException('Random token generation failed.'); - }; - } - - /** - * Start Here - * @return void - * @throws OpenIDConnectClientException - */ - private function requestAuthorization() { - - $auth_endpoint = $this->getProviderConfigValue('authorization_endpoint'); - $response_type = 'code'; - - // Generate and store a nonce in the session - // The nonce is an arbitrary value - $nonce = $this->setNonce($this->generateRandString()); - - // State essentially acts as a session key for OIDC - $state = $this->genState(); - - $auth_params = array_merge($this->authParams, array( - 'response_type' => $response_type, - 'redirect_uri' => $this->getRedirectURL(), - 'client_id' => $this->clientID, - 'nonce' => $nonce, - 'state' => $state, - 'scope' => 'openid' - )); - - // If the client has been registered with additional scopes - if (count($this->scopes) > 0) { - $auth_params = array_merge($auth_params, array('scope' => implode(' ', array_merge($this->scopes, array('openid'))))); - } - - // If the client has been registered with additional response types - if (count($this->responseTypes) > 0) { - $auth_params = array_merge($auth_params, array('response_type' => implode(' ', $this->responseTypes))); - } - - // If the client supports Proof Key for Code Exchange (PKCE) - if (!empty($this->getCodeChallengeMethod()) && in_array($this->getCodeChallengeMethod(), $this->getProviderConfigValue('code_challenge_methods_supported'))) { - $codeVerifier = bin2hex(random_bytes(64)); - $this->setCodeVerifier($codeVerifier); - if (!empty($this->pkceAlgs[$this->getCodeChallengeMethod()])) { - $codeChallenge = rtrim(strtr(base64_encode(hash($this->pkceAlgs[$this->getCodeChallengeMethod()], $codeVerifier, true)), '+/', '-_'), '='); - } else { - $codeChallenge = $codeVerifier; - } - $auth_params = array_merge($auth_params, array( - 'code_challenge' => $codeChallenge, - 'code_challenge_method' => $this->getCodeChallengeMethod() - )); - } - - $auth_endpoint .= (strpos($auth_endpoint, '?') === false ? '?' : '&') . http_build_query($auth_params, null, '&', $this->enc_type); - error_log("redirect user to: ".$auth_endpoint); - - $this->commitSession(); - $this->redirect($auth_endpoint); - } - - /** - * Requests a client credentials token - * - * @throws OpenIDConnectClientException - */ - public function requestClientCredentialsToken() { - $token_endpoint = $this->getProviderConfigValue('token_endpoint'); - - $headers = []; - - $grant_type = 'client_credentials'; - - $post_data = array( - 'grant_type' => $grant_type, - 'client_id' => $this->clientID, - 'client_secret' => $this->clientSecret, - 'scope' => implode(' ', $this->scopes) - ); - - // Convert token params to string format - $post_params = http_build_query($post_data, null, '&', $this->enc_type); - - return json_decode($this->fetchURL($token_endpoint, $post_params, $headers)); - } - - - /** - * Requests a resource owner token - * (Defined in https://tools.ietf.org/html/rfc6749#section-4.3) - * - * @param boolean $bClientAuth Indicates that the Client ID and Secret be used for client authentication - * @return mixed - * @throws OpenIDConnectClientException - */ - public function requestResourceOwnerToken($bClientAuth = FALSE) { - $token_endpoint = $this->getProviderConfigValue('token_endpoint'); - - $headers = []; - - $grant_type = 'password'; - - $post_data = array( - 'grant_type' => $grant_type, - 'username' => $this->authParams['username'], - 'password' => $this->authParams['password'], - 'scope' => implode(' ', $this->scopes) - ); - - //For client authentication include the client values - if($bClientAuth) { - $post_data['client_id'] = $this->clientID; - $post_data['client_secret'] = $this->clientSecret; - } - - // Convert token params to string format - $post_params = http_build_query($post_data, null, '&', $this->enc_type); - - return json_decode($this->fetchURL($token_endpoint, $post_params, $headers)); - } - - - /** - * Requests ID and Access tokens - * - * @param string $code - * @return mixed - * @throws OpenIDConnectClientException - */ - protected function requestTokens($code) { - $token_endpoint = $this->getProviderConfigValue('token_endpoint'); - $token_endpoint_auth_methods_supported = $this->getProviderConfigValue('token_endpoint_auth_methods_supported', ['client_secret_basic']); - - $headers = []; - - $grant_type = 'authorization_code'; - - $token_params = array( - 'grant_type' => $grant_type, - 'code' => $code, - 'redirect_uri' => $this->getRedirectURL(), - 'client_id' => $this->clientID, - 'client_secret' => $this->clientSecret - ); - - # Consider Basic authentication if provider config is set this way - if (in_array('client_secret_basic', $token_endpoint_auth_methods_supported, true)) { - $headers = ['Authorization: Basic ' . base64_encode(urlencode($this->clientID) . ':' . urlencode($this->clientSecret))]; - unset($token_params['client_secret']); - unset($token_params['client_id']); - } - - if (!empty($this->getCodeChallengeMethod()) && !empty($this->getCodeVerifier())) { - $headers = []; - unset($token_params['client_secret']); - $token_params = array_merge($token_params, array( - 'client_id' => $this->clientID, - 'code_verifier' => $this->getCodeVerifier() - )); - } - - // Convert token params to string format - $token_params = http_build_query($token_params, null, '&', $this->enc_type); - - $this->tokenResponse = json_decode($this->fetchURL($token_endpoint, $token_params, $headers)); - - return $this->tokenResponse; - } - - /** - * Requests Access token with refresh token - * - * @param string $refresh_token - * @return mixed - * @throws OpenIDConnectClientException - */ - public function refreshToken($refresh_token) { - $token_endpoint = $this->getProviderConfigValue('token_endpoint'); - - $grant_type = 'refresh_token'; - - $token_params = array( - 'grant_type' => $grant_type, - 'refresh_token' => $refresh_token, - 'client_id' => $this->clientID, - 'client_secret' => $this->clientSecret, - ); - - // Convert token params to string format - $token_params = http_build_query($token_params, null, '&', $this->enc_type); - - $json = json_decode($this->fetchURL($token_endpoint, $token_params)); - - if (isset($json->access_token)) { - $this->accessToken = $json->access_token; - } - - if (isset($json->refresh_token)) { - $this->refreshToken = $json->refresh_token; - } - - return $json; - } - - /** - * @param array $keys - * @param array $header - * @throws OpenIDConnectClientException - * @return object - */ - private function get_key_for_header($keys, $header) { - foreach ($keys as $key) { - if ($key->kty === 'RSA') { - if (!isset($header->kid) || $key->kid === $header->kid) { - return $key; - } - } else { - if (isset($key->alg) && $key->alg === $header->alg && $key->kid === $header->kid) { - return $key; - } - } - } - if ($this->additionalJwks) { - foreach ($this->additionalJwks as $key) { - if ($key->kty === 'RSA') { - if (!isset($header->kid) || $key->kid === $header->kid) { - return $key; - } - } else { - if (isset($key->alg) && $key->alg === $header->alg && $key->kid === $header->kid) { - return $key; - } - } - } - } - if (isset($header->kid)) { - throw new OpenIDConnectClientException('Unable to find a key for (algorithm, kid):' . $header->alg . ', ' . $header->kid . ')'); - } - - throw new OpenIDConnectClientException('Unable to find a key for RSA'); - } - - - /** - * @param string $hashtype - * @param object $key - * @param $payload - * @param $signature - * @param $signatureType - * @return bool - * @throws OpenIDConnectClientException - */ - private function verifyRSAJWTsignature($hashtype, $key, $payload, $signature, $signatureType) { - if (!class_exists('\phpseclib\Crypt\RSA') && !class_exists('Crypt_RSA')) { - throw new OpenIDConnectClientException('Crypt_RSA support unavailable.'); - } - if (!(property_exists($key, 'n') && property_exists($key, 'e'))) { - throw new OpenIDConnectClientException('Malformed key object'); - } - - /* We already have base64url-encoded data, so re-encode it as - regular base64 and use the XML key format for simplicity. - */ - $public_key_xml = "<RSAKeyValue>\r\n". - ' <Modulus>' . b64url2b64($key->n) . "</Modulus>\r\n" . - ' <Exponent>' . b64url2b64($key->e) . "</Exponent>\r\n" . - '</RSAKeyValue>'; - if(class_exists('Crypt_RSA', false)) { - $rsa = new Crypt_RSA(); - $rsa->setHash($hashtype); - if ($signatureType === 'PSS') { - $rsa->setMGFHash($hashtype); - } - $rsa->loadKey($public_key_xml, Crypt_RSA::PUBLIC_FORMAT_XML); - $rsa->signatureMode = $signatureType === 'PSS' ? Crypt_RSA::SIGNATURE_PSS : Crypt_RSA::SIGNATURE_PKCS1; - } else { - $rsa = new \phpseclib\Crypt\RSA(); - $rsa->setHash($hashtype); - if ($signatureType === 'PSS') { - $rsa->setMGFHash($hashtype); - } - $rsa->loadKey($public_key_xml, \phpseclib\Crypt\RSA::PUBLIC_FORMAT_XML); - $rsa->signatureMode = $signatureType === 'PSS' ? \phpseclib\Crypt\RSA::SIGNATURE_PSS : \phpseclib\Crypt\RSA::SIGNATURE_PKCS1; - } - return $rsa->verify($payload, $signature); - } - - /** - * @param string $hashtype - * @param object $key - * @param $payload - * @param $signature - * @return bool - * @throws OpenIDConnectClientException - */ - private function verifyHMACJWTsignature($hashtype, $key, $payload, $signature) - { - if (!function_exists('hash_hmac')) { - throw new OpenIDConnectClientException('hash_hmac support unavailable.'); - } - - $expected=hash_hmac($hashtype, $payload, $key, true); - - if (function_exists('hash_equals')) { - return hash_equals($signature, $expected); - } - - return self::hashEquals($signature, $expected); - } - - /** - * @param string $jwt encoded JWT - * @throws OpenIDConnectClientException - * @return bool - */ - public function verifyJWTsignature($jwt) { - if (!\is_string($jwt)) { - throw new OpenIDConnectClientException('Error token is not a string'); - } - $parts = explode('.', $jwt); - if (!isset($parts[0])) { - throw new OpenIDConnectClientException('Error missing part 0 in token'); - } - $signature = base64url_decode(array_pop($parts)); - if (false === $signature || '' === $signature) { - throw new OpenIDConnectClientException('Error decoding signature from token'); - } - $header = json_decode(base64url_decode($parts[0])); - if (null === $header || !\is_object($header)) { - throw new OpenIDConnectClientException('Error decoding JSON from token header'); - } - $payload = implode('.', $parts); - $jwks = json_decode($this->fetchURL($this->getProviderConfigValue('jwks_uri'))); - if ($jwks === NULL) { - throw new OpenIDConnectClientException('Error decoding JSON from jwks_uri'); - } - if (!isset($header->alg)) { - throw new OpenIDConnectClientException('Error missing signature type in token header'); - } - switch ($header->alg) { - case 'RS256': - case 'PS256': - case 'RS384': - case 'RS512': - $hashtype = 'sha' . substr($header->alg, 2); - $signatureType = $header->alg === 'PS256' ? 'PSS' : ''; - - $verified = $this->verifyRSAJWTsignature($hashtype, - $this->get_key_for_header($jwks->keys, $header), - $payload, $signature, $signatureType); - break; - case 'HS256': - case 'HS512': - case 'HS384': - $hashtype = 'SHA' . substr($header->alg, 2); - $verified = $this->verifyHMACJWTsignature($hashtype, $this->getClientSecret(), $payload, $signature); - break; - case 'none': - $verified = true; - break; - default: - throw new OpenIDConnectClientException('No support for signature type: ' . $header->alg); - } - return $verified; - } - - /** - * @param object $claims - * @param string|null $accessToken - * @return bool - */ - protected function verifyJWTclaims($claims, $accessToken = null, $options = []) { - if(isset($claims->at_hash) && isset($accessToken)){ - if(isset($this->getIdTokenHeader()->alg) && $this->getIdTokenHeader()->alg !== 'none'){ - $bit = substr($this->getIdTokenHeader()->alg, 2, 3); - }else{ - // TODO: Error case. throw exception??? - $bit = '256'; - } - $len = ((int)$bit)/16; - $expected_at_hash = $this->urlEncode(substr(hash('sha'.$bit, $accessToken, true), 0, $len)); - } - return (($this->issuerValidator->__invoke($claims->iss)) - && (($claims->aud === $this->clientID) || in_array($this->clientID, $claims->aud, true)) - && ($claims->nonce === $this->getNonce() || $options["ignore_nonce"]) - && ( !isset($claims->exp) || ((gettype($claims->exp) === 'integer') && ($claims->exp >= time() - $this->leeway))) - && ( !isset($claims->nbf) || ((gettype($claims->nbf) === 'integer') && ($claims->nbf <= time() + $this->leeway))) - && ( !isset($claims->at_hash) || $claims->at_hash === $expected_at_hash ) - ); - } - - /** - * @param string $str - * @return string - */ - protected function urlEncode($str) { - $enc = base64_encode($str); - $enc = rtrim($enc, '='); - $enc = strtr($enc, '+/', '-_'); - return $enc; - } - - /** - * @param string $jwt encoded JWT - * @param int $section the section we would like to decode - * @return object - */ - protected function decodeJWT($jwt, $section = 0) { - - $parts = explode('.', $jwt); - return json_decode(base64url_decode($parts[$section])); - } - - /** - * - * @param string|null $attribute optional - * - * Attribute Type Description - * user_id string REQUIRED Identifier for the End-User at the Issuer. - * name string End-User's full name in displayable form including all name parts, ordered according to End-User's locale and preferences. - * given_name string Given name or first name of the End-User. - * family_name string Surname or last name of the End-User. - * middle_name string Middle name of the End-User. - * nickname string Casual name of the End-User that may or may not be the same as the given_name. For instance, a nickname value of Mike might be returned alongside a given_name value of Michael. - * profile string URL of End-User's profile page. - * picture string URL of the End-User's profile picture. - * website string URL of End-User's web page or blog. - * email string The End-User's preferred e-mail address. - * verified boolean True if the End-User's e-mail address has been verified; otherwise false. - * gender string The End-User's gender: Values defined by this specification are female and male. Other values MAY be used when neither of the defined values are applicable. - * birthday string The End-User's birthday, represented as a date string in MM/DD/YYYY format. The year MAY be 0000, indicating that it is omitted. - * zoneinfo string String from zoneinfo [zoneinfo] time zone database. For example, Europe/Paris or America/Los_Angeles. - * locale string The End-User's locale, represented as a BCP47 [RFC5646] language tag. This is typically an ISO 639-1 Alpha-2 [ISO639‑1] language code in lowercase and an ISO 3166-1 Alpha-2 [ISO3166‑1] country code in uppercase, separated by a dash. For example, en-US or fr-CA. As a compatibility note, some implementations have used an underscore as the separator rather than a dash, for example, en_US; Implementations MAY choose to accept this locale syntax as well. - * phone_number string The End-User's preferred telephone number. E.164 [E.164] is RECOMMENDED as the format of this Claim. For example, +1 (425) 555-1212 or +56 (2) 687 2400. - * address JSON object The End-User's preferred address. The value of the address member is a JSON [RFC4627] structure containing some or all of the members defined in Section 2.4.2.1. - * updated_time string Time the End-User's information was last updated, represented as a RFC 3339 [RFC3339] datetime. For example, 2011-01-03T23:58:42+0000. - * - * @return mixed - * - * @throws OpenIDConnectClientException - */ - public function requestUserInfo($attribute = null) { - - $user_info_endpoint = $this->getProviderConfigValue('userinfo_endpoint'); - $schema = 'openid'; - - $user_info_endpoint .= '?schema=' . $schema; - - //The accessToken has to be sent in the Authorization header. - // Accept json to indicate response type - $headers = ["Authorization: Bearer {$this->accessToken}", - 'Accept: application/json']; - - $user_json = json_decode($this->fetchURL($user_info_endpoint,null,$headers)); - if ($this->getResponseCode() <> 200) { - throw new OpenIDConnectClientException('The communication to retrieve user data has failed with status code '.$this->getResponseCode()); - } - $this->userInfo = $user_json; - - if($attribute === null) { - return $this->userInfo; - } - - if (property_exists($this->userInfo, $attribute)) { - return $this->userInfo->$attribute; - } - - return null; - } - - /** - * - * @param string|null $attribute optional - * - * Attribute Type Description - * exp int Expires at - * nbf int Not before - * ver string Version - * iss string Issuer - * sub string Subject - * aud string Audience - * nonce string nonce - * iat int Issued At - * auth_time int Authenatication time - * oid string Object id - * - * @return mixed - * - */ - public function getVerifiedClaims($attribute = null) { - - if($attribute === null) { - return $this->verifiedClaims; - } - - if (property_exists($this->verifiedClaims, $attribute)) { - return $this->verifiedClaims->$attribute; - } - - return null; - } - - /** - * @param string $url - * @param string | null $post_body string If this is set the post type will be POST - * @param array $headers Extra headers to be send with the request. Format as 'NameHeader: ValueHeader' - * @throws OpenIDConnectClientException - * @return mixed - */ - protected function fetchURL($url, $post_body = null, $headers = array()) { - - // OK cool - then let's create a new cURL resource handle - $ch = curl_init(); - - // Determine whether this is a GET or POST - if ($post_body !== null) { - // curl_setopt($ch, CURLOPT_POST, 1); - // Alows to keep the POST method even after redirect - curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST'); - curl_setopt($ch, CURLOPT_POSTFIELDS, $post_body); - - // Default content type is form encoded - $content_type = 'application/x-www-form-urlencoded'; - - // Determine if this is a JSON payload and add the appropriate content type - if (is_object(json_decode($post_body))) { - $content_type = 'application/json'; - } - - // Add POST-specific headers - $headers[] = "Content-Type: {$content_type}"; - - } - - // If we set some headers include them - if(count($headers) > 0) { - curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); - } - - // Set URL to download - curl_setopt($ch, CURLOPT_URL, $url); - - if (isset($this->httpProxy)) { - curl_setopt($ch, CURLOPT_PROXY, $this->httpProxy); - } - - // Include header in result? (0 = yes, 1 = no) - curl_setopt($ch, CURLOPT_HEADER, 0); - - // Allows to follow redirect - curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); - - /** - * Set cert - * Otherwise ignore SSL peer verification - */ - if (isset($this->certPath)) { - curl_setopt($ch, CURLOPT_CAINFO, $this->certPath); - } - - if($this->verifyHost) { - curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); - } else { - curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); - } - - if($this->verifyPeer) { - curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true); - } else { - curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); - } - - // Should cURL return or print out the data? (true = return, false = print) - curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); - - // Timeout in seconds - curl_setopt($ch, CURLOPT_TIMEOUT, $this->timeOut); - - // Download the given URL, and return output - $output = curl_exec($ch); - - // HTTP Response code from server may be required from subclass - $info = curl_getinfo($ch); - $this->responseCode = $info['http_code']; - - if ($output === false) { - throw new OpenIDConnectClientException('Curl error: (' . curl_errno($ch) . ') ' . curl_error($ch)); - } - - // Close the cURL resource, and free system resources - curl_close($ch); - - return $output; - } - - /** - * @param bool $appendSlash - * @return string - * @throws OpenIDConnectClientException - */ - public function getWellKnownIssuer($appendSlash = false) { - - return $this->getWellKnownConfigValue('issuer') . ($appendSlash ? '/' : ''); - } - - /** - * @return string - * @throws OpenIDConnectClientException - */ - public function getIssuer() { - - if (!isset($this->providerConfig['issuer'])) { - throw new OpenIDConnectClientException('The issuer has not been set'); - } - - return $this->providerConfig['issuer']; - } - - /** - * @return mixed - * @throws OpenIDConnectClientException - */ - public function getProviderURL() { - if (!isset($this->providerConfig['providerUrl'])) { - throw new OpenIDConnectClientException('The provider URL has not been set'); - } - - return $this->providerConfig['providerUrl']; - } - - /** - * @param string $url - */ - public function redirect($url) { - header('Location: ' . $url); - exit; - } - - /** - * @param string $httpProxy - */ - public function setHttpProxy($httpProxy) { - $this->httpProxy = $httpProxy; - } - - /** - * @param string $certPath - */ - public function setCertPath($certPath) { - $this->certPath = $certPath; - } - - /** - * @return string|null - */ - public function getCertPath() - { - return $this->certPath; - } - - /** - * @param bool $verifyPeer - */ - public function setVerifyPeer($verifyPeer) { - $this->verifyPeer = $verifyPeer; - } - - /** - * @param bool $verifyHost - */ - public function setVerifyHost($verifyHost) { - $this->verifyHost = $verifyHost; - } - - /** - * @return bool - */ - public function getVerifyHost() - { - return $this->verifyHost; - } - - /** - * @return bool - */ - public function getVerifyPeer() - { - return $this->verifyPeer; - } - - /** - * Use this for custom issuer validation - * The given function should accept the issuer string from the JWT claim as the only argument - * and return true if the issuer is valid, otherwise return false - * - * @param callable $issuerValidator - */ - public function setIssuerValidator($issuerValidator){ - $this->issuerValidator = $issuerValidator; - } - - /** - * @param bool $allowImplicitFlow - */ - public function setAllowImplicitFlow($allowImplicitFlow) { - $this->allowImplicitFlow = $allowImplicitFlow; - } - - /** - * @return bool - */ - public function getAllowImplicitFlow() - { - return $this->allowImplicitFlow; - } - - /** - * - * Use this to alter a provider's endpoints and other attributes - * - * @param array $array - * simple key => value - */ - public function providerConfigParam($array) { - $this->providerConfig = array_merge($this->providerConfig, $array); - } - - /** - * @param string $clientSecret - */ - public function setClientSecret($clientSecret) { - $this->clientSecret = $clientSecret; - } - - /** - * @param string $clientID - */ - public function setClientID($clientID) { - $this->clientID = $clientID; - } - - - /** - * Dynamic registration - * - * @throws OpenIDConnectClientException - */ - public function register() { - - $registration_endpoint = $this->getProviderConfigValue('registration_endpoint'); - - $send_object = (object ) array_merge($this->registrationParams, array( - 'redirect_uris' => array($this->getRedirectURL()), - 'client_name' => $this->getClientName() - )); - - $response = $this->fetchURL($registration_endpoint, json_encode($send_object)); - - $json_response = json_decode($response); - - // Throw some errors if we encounter them - if ($json_response === false) { - throw new OpenIDConnectClientException('Error registering: JSON response received from the server was invalid.'); - } - - if (isset($json_response->{'error_description'})) { - throw new OpenIDConnectClientException($json_response->{'error_description'}); - } - - $this->setClientID($json_response->{'client_id'}); - - // The OpenID Connect Dynamic registration protocol makes the client secret optional - // and provides a registration access token and URI endpoint if it is not present - if (isset($json_response->{'client_secret'})) { - $this->setClientSecret($json_response->{'client_secret'}); - } else { - throw new OpenIDConnectClientException('Error registering: - Please contact the OpenID Connect provider and obtain a Client ID and Secret directly from them'); - } - - } - - /** - * Introspect a given token - either access token or refresh token. - * @see https://tools.ietf.org/html/rfc7662 - * - * @param string $token - * @param string $token_type_hint - * @param string|null $clientId - * @param string|null $clientSecret - * @return mixed - * @throws OpenIDConnectClientException - */ - public function introspectToken($token, $token_type_hint = '', $clientId = null, $clientSecret = null) { - $introspection_endpoint = $this->getProviderConfigValue('introspection_endpoint'); - - $post_data = array( - 'token' => $token, - ); - if ($token_type_hint) { - $post_data['token_type_hint'] = $token_type_hint; - } - $clientId = $clientId !== null ? $clientId : $this->clientID; - $clientSecret = $clientSecret !== null ? $clientSecret : $this->clientSecret; - - // Convert token params to string format - $post_params = http_build_query($post_data, null, '&'); - $headers = ['Authorization: Basic ' . base64_encode(urlencode($clientId) . ':' . urlencode($clientSecret)), - 'Accept: application/json']; - - return json_decode($this->fetchURL($introspection_endpoint, $post_params, $headers)); - } - - /** - * Revoke a given token - either access token or refresh token. - * @see https://tools.ietf.org/html/rfc7009 - * - * @param string $token - * @param string $token_type_hint - * @param string|null $clientId - * @param string|null $clientSecret - * @return mixed - * @throws OpenIDConnectClientException - */ - public function revokeToken($token, $token_type_hint = '', $clientId = null, $clientSecret = null) { - $revocation_endpoint = $this->getProviderConfigValue('revocation_endpoint'); - - $post_data = array( - 'token' => $token, - ); - if ($token_type_hint) { - $post_data['token_type_hint'] = $token_type_hint; - } - $clientId = $clientId !== null ? $clientId : $this->clientID; - $clientSecret = $clientSecret !== null ? $clientSecret : $this->clientSecret; - - // Convert token params to string format - $post_params = http_build_query($post_data, null, '&'); - $headers = ['Authorization: Basic ' . base64_encode(urlencode($clientId) . ':' . urlencode($clientSecret)), - 'Accept: application/json']; - - return json_decode($this->fetchURL($revocation_endpoint, $post_params, $headers)); - } - - /** - * @return string - */ - public function getClientName() { - return $this->clientName; - } - - /** - * @param string $clientName - */ - public function setClientName($clientName) { - $this->clientName = $clientName; - } - - /** - * @return string - */ - public function getClientID() { - return $this->clientID; - } - - /** - * @return string - */ - public function getClientSecret() { - return $this->clientSecret; - } - - /** - * @return bool - */ - public function canVerifySignatures() { - return class_exists('\phpseclib\Crypt\RSA') || class_exists('Crypt_RSA'); - } - - /** - * Set the access token. - * - * May be required for subclasses of this Client. - * - * @param string $accessToken - * @return void - */ - public function setAccessToken($accessToken) { - $this->accessToken = $accessToken; - } - - /** - * @return string - */ - public function getAccessToken() { - return $this->accessToken; - } - - /** - * @return string - */ - public function getRefreshToken() { - return $this->refreshToken; - } - - /** - * @return string - */ - public function getIdToken() { - return $this->idToken; - } - - /** - * @return object - */ - public function getAccessTokenHeader() { - return $this->decodeJWT($this->accessToken); - } - - /** - * @return object - */ - public function getAccessTokenPayload() { - return $this->decodeJWT($this->accessToken, 1); - } - - /** - * @return object - */ - public function getIdTokenHeader() { - return $this->decodeJWT($this->idToken); - } - - /** - * @return object - */ - public function getIdTokenPayload() { - return $this->decodeJWT($this->idToken, 1); - } - - /** - * @return string - */ - public function getTokenResponse() { - return $this->tokenResponse; - } - - /** - * Stores nonce - * - * @param string $nonce - * @return string - */ - protected function setNonce($nonce) { - $this->setSessionKey('openid_connect_nonce', $nonce); - return $nonce; - } - - /** - * Get stored nonce - * - * @return string - */ - protected function getNonce() { - return $this->getSessionKey('openid_connect_nonce'); - } - - /** - * Cleanup nonce - * - * @return void - */ - protected function unsetNonce() { - $this->unsetSessionKey('openid_connect_nonce'); - } - - /** - * Stores $state - * - * @param string $state - * @return string - */ - protected function genState() { - //Generate a state using jwt - $payload = [ - "token" => $this->generateRandString(), - "exp" => date("U") + 5 * 60 - ]; - - $key = $this->getServerKey(); - $jwt = JWT::encode($payload, $key); - - return $jwt; - } - - /** - * Get stored state - * - * @return string - */ - protected function checkState($state = "") { - $key = $this->getServerKey(); - - try{ - //Check state is valid and non expired - $jwt = JWT::decode($state, $key, array('HS256')); - - if($jwt->exp > date("U")){ - return true; - } - }catch(\Exception $e){} - - return false; - } - - /** - * Stores $codeVerifier - * - * @param string $codeVerifier - * @return string - */ - protected function setCodeVerifier($codeVerifier) { - $this->setSessionKey('openid_connect_code_verifier', $codeVerifier); - return $codeVerifier; - } - - /** - * Get stored codeVerifier - * - * @return string - */ - protected function getCodeVerifier() { - return $this->getSessionKey('openid_connect_code_verifier'); - } - - /** - * Cleanup state - * - * @return void - */ - protected function unsetCodeVerifier() { - $this->unsetSessionKey('openid_connect_code_verifier'); - } - - /** - * Get the response code from last action/curl request. - * - * @return int - */ - public function getResponseCode() - { - return $this->responseCode; - } - - /** - * Set timeout (seconds) - * - * @param int $timeout - */ - public function setTimeout($timeout) - { - $this->timeOut = $timeout; - } - - /** - * @return int - */ - public function getTimeout() - { - return $this->timeOut; - } - - /** - * Safely calculate length of binary string - * @param string $str - * @return int - */ - private static function safeLength($str) - { - if (function_exists('mb_strlen')) { - return mb_strlen($str, '8bit'); - } - return strlen($str); - } - - /** - * Where has_equals is not available, this provides a timing-attack safe string comparison - * @param string $str1 - * @param string $str2 - * @return bool - */ - private static function hashEquals($str1, $str2) - { - $len1=static::safeLength($str1); - $len2=static::safeLength($str2); - - //compare strings without any early abort... - $len = min($len1, $len2); - $status = 0; - for ($i = 0; $i < $len; $i++) { - $status |= (ord($str1[$i]) ^ ord($str2[$i])); - } - //if strings were different lengths, we fail - $status |= ($len1 ^ $len2); - return ($status === 0); - } - - /** - * Use session to manage a nonce - */ - protected function startSession() { - if (!isset($_SESSION)) { - @session_start(); - } - } - - protected function commitSession() { - $this->startSession(); - - session_write_close(); - } - - protected function getSessionKey($key) { - $this->startSession(); - - return $_SESSION[$key]; - } - - protected function setSessionKey($key, $value) { - $this->startSession(); - - $_SESSION[$key] = $value; - } - - protected function unsetSessionKey($key) { - $this->startSession(); - - unset($_SESSION[$key]); - } - - public function setUrlEncoding($curEncoding) - { - switch ($curEncoding) - { - case PHP_QUERY_RFC1738: - $this->enc_type = PHP_QUERY_RFC1738; - break; - - case PHP_QUERY_RFC3986: - $this->enc_type = PHP_QUERY_RFC3986; - break; - - default: - break; - } - - } - - /** - * @return array - */ - public function getScopes() - { - return $this->scopes; - } - - /** - * @return array - */ - public function getResponseTypes() - { - return $this->responseTypes; - } - - /** - * @return array - */ - public function getAuthParams() - { - return $this->authParams; - } - - /** - * @return callable - */ - public function getIssuerValidator() - { - return $this->issuerValidator; - } - - /** - * @return int - */ - public function getLeeway() - { - return $this->leeway; - } - - /** - * @return string - */ - public function getCodeChallengeMethod() { - return $this->codeChallengeMethod; - } - - /** - * @param string $codeChallengeMethod - */ - public function setCodeChallengeMethod($codeChallengeMethod) { - $this->codeChallengeMethod = $codeChallengeMethod; - } -} diff --git a/twake/backend/core/src/Twake/Users/Controller/Users.php b/twake/backend/core/src/Twake/Users/Controller/Users.php deleted file mode 100755 index e3323015..00000000 --- a/twake/backend/core/src/Twake/Users/Controller/Users.php +++ /dev/null @@ -1,68 +0,0 @@ -<?php - - -namespace Twake\Users\Controller; - -use Common\BaseController; -use Common\Http\Response; -use Common\Http\Request; - -class Users extends BaseController -{ - - public function search(Request $request) - { - - $options = $request->request->get("query", $request->request->get("options", Array())); - - if (is_string($options)) { - $options = Array("name" => $options); - } - - $globalresult = $this->get("app.users")->search($options); - - $users = []; - foreach($globalresult["users"] as $obj){ - $users[] = $this->get("app.users")->completeUserWithCompanies($obj, $this->getUser()); - } - $globalresult["users"] = $users; - - $data = Array("data" => $globalresult); - - return new Response($data); - - } - - public function getById(Request $request) - { - - $data = Array( - "errors" => Array(), - "data" => Array() - ); - - $id = $request->request->get("id"); - if(!\is_array($id)){ - $user = $this->get("app.users")->getById($id); - }else{ - $user = []; - foreach($id as $singleId){ - $obj = $this->get("app.users")->getById($singleId); - if($obj){ - $obj = $this->get("app.users")->completeUserWithCompanies($obj, $this->getUser()); - } - $user[] = $obj; - } - } - - if ($user) { - $data["data"] = $user; - } else { - $data["errors"][] = "user_was_not_found"; - } - - return new Response($data); - - } - -} diff --git a/twake/backend/core/src/Twake/Users/Controller/UsersAccount.php b/twake/backend/core/src/Twake/Users/Controller/UsersAccount.php deleted file mode 100755 index bec249db..00000000 --- a/twake/backend/core/src/Twake/Users/Controller/UsersAccount.php +++ /dev/null @@ -1,400 +0,0 @@ -<?php - - -namespace Twake\Users\Controller; - -use Common\BaseController; -use Common\Http\Response; -use Common\Http\Request; - -class UsersAccount extends BaseController -{ - - public function setLanguage(Request $request) - { - - $data = Array( - "errors" => Array(), - "data" => Array() - ); - - if ($this->getUser() && !is_string($this->getUser())) { - - $language = $request->request->get("language", ""); - $this->get("app.user")->updateLanguage($this->getUser()->getId(), $language); - - } else { - $data["errors"][] = "unknown"; - } - - return new Response($data); - - } - - public function getNotificationPreferences(Request $request) - { - - $data = Array( - "errors" => Array(), - "data" => Array() - ); - - if ($this->getUser() && !is_string($this->getUser())) { - - $data["data"] = $this->get("app.user")->getNotificationPreferences($this->getUser()->getId()); - - } else { - $data["errors"][] = "unknown"; - } - - return new Response($data); - - } - - public function setNotificationPreferences(Request $request) - { - - $data = Array( - "errors" => Array(), - "data" => Array() - ); - - if ($this->getUser() && !is_string($this->getUser())) { - - $notification = $request->request->get("preferences", Array()); - $this->get("app.user")->setNotificationPreferences($this->getUser()->getId(), $notification); - - } else { - $data["errors"][] = "unknown"; - } - - return new Response($data); - - } - - public function setTutorialStatus(Request $request) - { - - $data = Array( - "errors" => Array(), - "data" => Array() - ); - - if ($this->getUser() && !is_string($this->getUser())) { - - $status = $request->request->get("status", Array()); - $this->get("app.user")->setTutorialStatus($this->getUser()->getId(), $status); - - } else { - $data["errors"][] = "unknown"; - } - - return new Response($data); - - } - - public function updateNotificationPreferenceByWorkspace(Request $request) - { - $data = Array( - "errors" => Array(), - "data" => Array() - ); - - $workspaceId = $request->request->get("workspaceId", 0); - $appNotif = $request->request->get("appNotification", Array()); - - $res = $this->get("app.user")->updateNotificationPreferenceByWorkspace($workspaceId, $appNotif, $this->getUser()); - - if ($res) { - $data["data"] = "success"; - } else { - $data["error"][] = "error"; - } - - return new Response($data); - } - - public function setWorkspacesPreferences(Request $request) - { - - $data = Array( - "errors" => Array(), - "data" => Array() - ); - - if ($this->getUser() && !is_string($this->getUser())) { - - $preferences = $request->request->get("preferences", Array()); - $this->get("app.user")->setWorkspacesPreferences($this->getUser()->getId(), $preferences); - - } else { - $data["errors"][] = "unknown"; - } - - return new Response($data); - - } - - public function updateStatus(Request $request) - { - - $data = Array( - "errors" => Array(), - "data" => Array() - ); - - if ($this->getUser() && !is_string($this->getUser())) { - - $status = $request->request->get("status", Array()); - $this->get("app.user")->updateStatus($this->getUser()->getId(), $status); - - } else { - $data["errors"][] = "unknown"; - } - - return new Response($data); - - } - - public function setIdentity(Request $request) - { - - $data = Array( - "errors" => Array(), - "data" => Array() - ); - - if ($this->getUser() && !is_string($this->getUser())) { - - $firstname = $request->request->get("firstname", ""); - $lastname = $request->request->get("lastname", ""); - $thumbnail = $request->request->get("thumbnail", null); - - $user = null; - - if (isset($_FILES["thumbnail"])) { - $thumbnail = $this->getUploader()->uploadFiles($this->getUser(), $_FILES["thumbnail"], "prfl"); - $thumbnail = $thumbnail[0]; - - if (count($thumbnail["errors"]) > 0) { - $data["errors"][] = "badimage"; - } else { - $user = $this->get("app.user")->updateUserBasicData($this->getUser()->getId(), $firstname, $lastname, $thumbnail["file"], $this->getUploader()); - } - } else { - $user = $this->get("app.user")->updateUserBasicData($this->getUser()->getId(), $firstname, $lastname, $thumbnail, $this->getUploader()); - } - - if ($user) { - $data["data"] = $user->getAsArray(); - } - - } else { - $data["errors"][] = "unknown"; - } - - return new Response($data); - - } - - public function getUploader() - { - $storagemanager = $this->get("driveupload.storemanager"); - if(!$provider){ - $provider = $storagemanager->getOneProvider(); - } - $configuration = $storagemanager->getProviderConfiguration($provider); - - if ($configuration["type"] === "S3") { - $uploader = $this->get("app.aws_uploader"); - }else if ($configuration["type"] === "openstack") { - $uploader =$this->get("app.openstack_uploader"); - }else{ - $uploader = $this->get("app.uploader"); - } - $uploader->configure($configuration); - return $uploader; - } - - public function setUsername(Request $request) - { - - $data = Array( - "errors" => Array(), - "data" => Array() - ); - - if ($this->getUser() && !is_string($this->getUser())) { - - $username = $request->request->get("username", ""); - - if (!$this->get("app.user")->changePseudo($this->getUser()->getId(), $username)) { - $data["errors"][] = "alreadyused"; - } - - } else { - $data["errors"][] = "unknown"; - } - - return new Response($data); - - } - - public function setPassword(Request $request) - { - - $data = Array( - "errors" => Array(), - "data" => Array() - ); - - if ($this->getUser() && !is_string($this->getUser())) { - - $oldPassword = $request->request->get("old_password", ""); - $password = $request->request->get("password", ""); - - if (!$this->get("app.user")->changePassword($this->getUser()->getId(), $oldPassword, $password)) { - $data["errors"][] = "badpassword"; - } - - } else { - $data["errors"][] = "unknown"; - } - - return new Response($data); - - } - - public function setMainMail(Request $request) - { - - $data = Array( - "errors" => Array(), - "data" => Array() - ); - - if ($this->getUser() && !is_string($this->getUser())) { - - $mail = $request->request->get("mail", ""); - - if (!$this->get("app.user")->changeMainMail($this->getUser()->getId(), $mail)) { - $data["errors"][] = "nosuchid"; - } - - } else { - $data["errors"][] = "unknown"; - } - - return new Response($data); - - } - - public function removeMail(Request $request) - { - - $data = Array( - "errors" => Array(), - "data" => Array() - ); - - if ($this->getUser() && !is_string($this->getUser())) { - - $mail = $request->request->get("mail", ""); - $result = $this->get("app.user")->removeSecondaryMail($this->getUser()->getId(), $mail); - if (!$result) { - $data["errors"][] = "badmail"; - } - $data["statuts"] = $result; - - } else { - $data["errors"][] = "unknown"; - } - - return new Response($data); - - } - - public function addMail(Request $request) - { - $data = Array( - "errors" => Array(), - "data" => Array() - ); - - if ($this->getUser() && !is_string($this->getUser())) { - $mail = $request->request->get("mail", ""); - - $token = $this->get("app.user")->addNewMail($this->getUser()->getId(), $mail); - if ($token) { - $data["data"]["token"] = $token; - } else { - $data["errors"][] = "badmail"; - } - - } else { - $data["errors"][] = "unknown"; - } - - return new Response($data); - - } - - public function addMailVerify(Request $request) - { - - $data = Array( - "errors" => Array(), - "data" => Array() - ); - - if ($this->getUser() && !is_string($this->getUser())) { - - $token = $request->request->get("token", ""); - $number = $request->request->get("code", ""); - - $idMail = $this->get("app.user")->checkNumberForAddNewMail($this->getUser()->getId(), $token, $number); - - if ($idMail) { - $data["data"]["status"] = "success"; - $data["data"]["idMail"] = $idMail; - - } else { - $data["errors"][] = "badcode"; - } - - } else { - $data["errors"][] = "unknown"; - } - - return new Response($data); - - } - - public function getMails(Request $request) - { - - $data = Array( - "errors" => Array(), - "data" => Array() - ); - - if ($this->getUser() && !is_string($this->getUser())) { - - $mails = $this->get("app.user")->getSecondaryMails($this->getUser()->getId()); - foreach ($mails as $mail) { - $data["data"][] = Array( - "id" => $mail->getId(), - "main" => $mail->getMail() == $this->getUser()->getEmail(), - "email" => $mail->getMail() - ); - } - - } else { - $data["errors"][] = "unknown"; - } - - return new Response($data); - - } - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Users/Controller/UsersConnections.php b/twake/backend/core/src/Twake/Users/Controller/UsersConnections.php deleted file mode 100755 index 1b82a8fa..00000000 --- a/twake/backend/core/src/Twake/Users/Controller/UsersConnections.php +++ /dev/null @@ -1,306 +0,0 @@ -<?php - - -namespace Twake\Users\Controller; - -use Common\BaseController; -use Common\Http\Response; -use Common\Http\Request; -use Twake\Market\Entity\LinkAppWorkspace; - -class UsersConnections extends BaseController -{ - - public function alive(Request $request) - { - $time = microtime(true); - $focus = $request->request->get("focus", true); - if ($this->getUser() && !is_string($this->getUser()) && $focus) { - $this->get("app.user")->alive($this->getUser()->getId()); - } - return new Response(Array("data" => "ok")); - - } - - public function autoLogin(Request $request) - { - $this->login($request); - return $this->redirect($this->getParameter("env.server_name")); - } - - public function login(Request $request) - { - - $data = Array( - "errors" => Array(), - "data" => Array() - ); - - $usernameOrMail = $request->request->get("username", ""); - $password = $request->request->get("token", $request->request->get("password", "")); - $rememberMe = $request->request->get("remember_me", true); - - //Retro compatibility - if(!$usernameOrMail && !$password){ - $usernameOrMail = $request->request->get("_username", ""); - $password = $request->request->get("_token", $request->request->get("_password", "")); - $rememberMe = $request->request->get("_remember_me", true); - } - - $response = new Response(); - $logged = $this->getUser() && !is_string($this->getUser()); - if(!$logged || ($usernameOrMail && $password)){ - $loginResult = $this->get("app.user")->login($usernameOrMail, $password, $rememberMe, $request, $response); - } - - if ($loginResult || $logged) { - - $device = $request->request->get("device", false); - if ($device && isset($device["type"]) && isset($device["value"])) { - $this->get("app.user")->addDevice($this->getUser()->getId(), $device["type"], $device["value"], isset($device["version"]) ? $device["version"] : null); - $this->get("administration.counter")->incrementCounter("total_devices_linked", 1); - } - - $workspaces_obj = $this->get("app.workspace_members")->getWorkspaces($this->getUser()->getId() . ""); - $workspaces = Array(); - foreach ($workspaces_obj as $workspace_obj) { - $value = $workspace_obj["workspace"]->getAsArray(); - $value["_user_last_access"] = $workspace_obj["last_access"] ? $workspace_obj["last_access"]->getTimestamp() : null; - $value["_user_hasnotifications"] = $workspace_obj["hasnotifications"]; - $value["_user_is_guest"] = $workspace_obj["_user_is_guest"]; - $value["_user_is_organization_administrator"] = $workspace_obj["_user_is_organization_administrator"]; - $value["_user_is_admin"] = $workspace_obj["_user_is_admin"]; - $value["role"] = ($value["_user_is_admin"] || $value["_user_is_organization_administrator"]) ? "moderator" : $value["role"]; - $workspaces[] = $value; - } - - $data["access_token"] = $this->get("app.user")->generateJWT($this->getUser()); - - $data["data"]["status"] = "connected"; - - } else { - - $data["data"]["status"] = "disconnected"; - - } - - $response->setContent(json_encode($data)); - - return $response; - - } - - public function mobileRedirect(Request $request) - { - $response = new Response(); - $response->setContent("<script>document.location='" . base64_decode($request->query->get("redirect")) . "'</script>"); - return $response; - } - - public function isLogged(Request $request) - { - $ok = $this->getUser() && !is_string($this->getUser()); - - if (!$ok) { - $origin = $request->query->get("origin", ""); - $name = $request->query->get("name", ""); - $forename = $request->query->get("forename", ""); - $mail = $request->query->get("mail", ""); - $username = $request->query->get("username", ""); - $url = "https://app.twakeapp.com/login?subscribe&origin=" . $origin; - if ($username && $username != "") { - $url = $url . "&username=" . $username; - } - if ($mail && $mail != "") { - $url = $url . "&mail=" . $mail; - } - if ($name && $name != "") { - $url = $url . "&name=" . $name; - } - if ($forename && $forename != "") { - $url = $url . "&forename=" . $forename; - } - return $this->redirect($url); - } - return $this->redirect($this->getParameter("env.server_name")); - } - - public function logout(Request $request) - { - if(!$this->getUser() || \is_string($this->getUser())){ - return new Response(Array("error" => "user disconnected")); - } - - $device = $request->request->get("device", false); - if ($device && isset($device["type"])) { - $this->get("app.user")->removeDevice($this->getUser()->getId(), $device["type"], $device["value"]); - $this->get("administration.counter")->incrementCounter("total_devices_linked", -1); - } - $this->get("app.user")->logout($request); - return new Response(Array()); - - } - - - public function currentUser(Request $request) - { - $data = Array( - "errors" => Array(), - "data" => Array() - ); - - $ok = $this->getUser() && !is_string($this->getUser()); - if (!$ok) { - $data["errors"][] = "disconnected"; - } else { - - if( $this->get("app.session_handler")->getDidUseRememberMe() && $this->getUser()->getIdentityProvider()){ - $data["errors"][] = "redirect_to_" . $this->getUser()->getIdentityProvider(); - return new Response($data); - } - - $device = $request->request->get("device", false); - - if ($device && isset($device["type"]) && isset($device["value"]) && $device["value"]) { - $this->get("app.user")->addDevice($this->getUser()->getId(), $device["type"], $device["value"], $device["version"]); - $this->get("administration.counter")->incrementCounter("total_devices_linked", 1); - } - - $this->get("app.user")->updateTimezone($this->getUser(), $request->request->get("timezone", false)); - - $data["data"] = $this->getUser()->getAsArray(); - $data["data"]["notifications_preferences"] = $this->getUser()->getNotificationPreference(); - $data["data"]["tutorial_status"] = $this->getUser()->getTutorialStatus(); - - $workspaces_obj = $this->get("app.workspace_members")->getWorkspaces($this->getUser()->getId() . ""); - - //This is needed because node do some stuff when loading workspaces list - $api = $this->app->getServices()->get("app.restclient"); - $groupManagerRepository = $this->get("app.twake_doctrine")->getRepository("Twake\Workspaces:GroupUser"); - $groupLinks = $groupManagerRepository->findBy(Array("user" => $this->getUser())); - $groups_ids = Array(); - $empty_groups_ids = Array(); - foreach($groupLinks as $group){ - $gid = $group->getGroup()->getId(); - $groups_ids[] = $gid; - $foundWorkspace = false; - foreach($workspaces_obj as $workspace_obj){ - if($workspace_obj["workspace"]->getGroup() === $gid){ - $foundWorkspace = true; - } - } - if(!$foundWorkspace){ - $empty_groups_ids[] = $group->getGroup()->getId(); - } - } - $groups_ids = array_values(array_unique($groups_ids)); - $empty_groups_ids = array_values(array_unique($empty_groups_ids)); - foreach($empty_groups_ids as $gid){ - $url = str_replace("/private", "/internal/services/workspaces/v1", $this->app->getContainer()->getParameter("node.api")); - $url = $url . "companies/".$gid."/workspaces"; - $opt = [ - CURLOPT_HTTPHEADER => Array( - "Authorization: " . $request->headers->get("Authorization"), - "Content-Type: application/json" - ), - CURLOPT_CONNECTTIMEOUT => 1, - CURLOPT_TIMEOUT => 1 - ]; - $res = $api->request("GET", $url, null, $opt); - } - //End of temp stuff - - $workspaces_obj = $this->get("app.workspace_members")->getWorkspaces($this->getUser()->getId() . ""); - - $workspaces = Array(); - $workspaces_ids = Array(); - foreach ($workspaces_obj as $workspace_obj) { - $value = $workspace_obj["workspace"]->getAsArray($this->get("app.twake_doctrine")); - $value["_user_last_access"] = $workspace_obj["last_access"] ? $workspace_obj["last_access"]->getTimestamp() : null; - $value["_user_hasnotifications"] = $workspace_obj["hasnotifications"]; - $value["_user_is_guest"] = $workspace_obj["_user_is_guest"]; - $value["_user_is_organization_administrator"] = $workspace_obj["_user_is_organization_administrator"]; - $value["_user_is_admin"] = $workspace_obj["_user_is_admin"]; - $value["role"] = ($value["_user_is_admin"] || $value["_user_is_organization_administrator"]) ? "moderator" : $value["role"]; - - if($value["group"]){ - $workspaces[] = $value; - $workspaces_ids[] = $value["id"]; - } - } - - $workspaces_ids = array_values(array_unique($workspaces_ids)); - - $this->get("app.workspace_members")->updateUser($this->getUser(), $workspaces_ids, $groups_ids); - - $mails = $this->get("app.user")->getSecondaryMails($this->getUser()->getId()); - - $data["data"]["mails"] = Array(); - foreach ($mails as $mail) { - $data["data"]["mails"][] = Array( - "id" => $mail->getId(), - "main" => ($this->getUser()->getEmail() == $mail->getMail()), - "email" => $mail->getMail() - ); - } - - $data["access_token"] = $this->get("app.user")->generateJWT($this->getUser()); - - $data["data"]["workspaces"] = $workspaces; - - //Start - Compatibility with new model - $data["data"]["preferences"] = [ - "language" => $data["data"]["language"], - "timezone" => $data["data"]["timezone_offset"] - ]; - - $data["data"]["companies"] = []; - $registeredCompanies = []; - foreach($data["data"]["workspaces"] as $workspace){ - $companyId = $workspace["group"]["id"]; - if(!in_array($companyId, $registeredCompanies)){ - $registeredCompanies[] = $companyId; - $data["data"]["companies"][] = [ - "company" => [ - "id" => $companyId, - "name" => $workspace["group"]["name"], - "logo" => $workspace["group"]["logo"], - ], - "status" => "", // Console implementation TODO - "role" => $workspace["_user_is_organization_administrator"] ? "admin" : ($workspace["_user_is_guest"] ? "guest" : "member"), - ]; - } - } - //End - Compatibility with new model - - } - - - return new Response($data); - - } - - public function setIsNew(Request $request) - { - $data = Array( - "errors" => Array(), - "data" => Array() - ); - - $value = $request->request->get("value"); - - $ok = $this->getUser() && !is_string($this->getUser()); - if (!$ok) { - $data["errors"][] = "disconnected"; - } else { - - $user = $this->getUser()->getId(); - $this->get("app.user")->setIsNew($value, $user); - - } - - return new Response($data); - - } - -} diff --git a/twake/backend/core/src/Twake/Users/Controller/UsersRecover.php b/twake/backend/core/src/Twake/Users/Controller/UsersRecover.php deleted file mode 100755 index 14531884..00000000 --- a/twake/backend/core/src/Twake/Users/Controller/UsersRecover.php +++ /dev/null @@ -1,96 +0,0 @@ -<?php - - -namespace Twake\Users\Controller; - -use Common\BaseController; -use Common\Http\Response; -use Common\Http\Request; - -class UsersRecover extends BaseController -{ - - - public function mail(Request $request) - { - - $data = Array( - "errors" => Array(), - "data" => Array() - ); - - $email = $request->request->get("email", ""); - - $res = $this->get("app.user")->requestNewPassword($email); - if ($res) { - - $data["data"]["token"] = $res; - - } else { - - $data["errors"][] = "nosuchmail"; - - } - - return new Response($data); - - } - - - public function codeVerification(Request $request) - { - - $data = Array( - "errors" => Array(), - "data" => Array() - ); - - $code = $request->request->get("code", ""); - $token = $request->request->get("token", ""); - - $res = $this->get("app.user")->checkNumberForNewPasswordRequest($token, $code); - - if ($res) { - - $data["data"]["status"] = "success"; - - } else { - - $data["errors"][] = "badcodeortoken"; - - } - - return new Response($data); - - } - - - public function newPassword(Request $request) - { - - $data = Array( - "errors" => Array(), - "data" => Array() - ); - - $code = $request->request->get("code", ""); - $token = $request->request->get("token", ""); - $password = $request->request->get("password", ""); - - $res = $this->get("app.user")->setNewPasswordAfterNewPasswordRequest($token, $code, $password); - - if ($res) { - - $data["data"]["status"] = "success"; - - } else { - - $data["errors"][] = "badcodeortoken"; - - } - - return new Response($data); - - } - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Users/Controller/UsersSubscribe.php b/twake/backend/core/src/Twake/Users/Controller/UsersSubscribe.php deleted file mode 100755 index b98ab42d..00000000 --- a/twake/backend/core/src/Twake/Users/Controller/UsersSubscribe.php +++ /dev/null @@ -1,154 +0,0 @@ -<?php - - -namespace Twake\Users\Controller; - -use Common\BaseController; -use Common\Http\Response; -use Common\Http\Request; - -class UsersSubscribe extends BaseController -{ - - - public function mail(Request $request) - { - - $data = Array( - "errors" => Array(), - "data" => Array() - ); - - - $email = $request->request->get("email", ""); - $username = $request->request->get("username", ""); - $password = $request->request->get("password", ""); - $name = $request->request->get("name", ""); - $firstname = $request->request->get("firstname", ""); - $phone = $request->request->get("phone", ""); - $language = $request->request->get("language", ""); - $newsletter = $request->request->get("newsletter", ""); - - $res = $this->get("app.user")->subscribeMail($email, $username, $password, $name, $firstname, $phone, $language, $newsletter); - - if ($res && (!is_array($res) || !isset($res["error"]))) { - - $data["data"]["token"] = $res; - - } else { - - $data["errors"][] = $res["error"]; - - } - - return new Response($data); - - } - - public function doVerifyMail(Request $request) - { - - $data = Array( - "errors" => Array(), - "data" => Array() - ); - - $code = $request->request->get("code", ""); - $token = $request->request->get("token", ""); - $mail = $request->request->get("mail", ""); - - $mail = trim(strtolower($mail)); - - $response = new Response(Array()); - - $res = $this->get("app.user")->verifyMail($mail, $token, $code, false, $response); - - if ($res) { - - $data["data"]["status"] = "success"; - - $device = $request->request->get("device", false); - if ($device && isset($device["type"]) && isset($device["value"])) { - $this->get("app.user")->addDevice($this->getUser()->getId(), $device["type"], $device["value"], isset($device["version"]) ? $device["version"] : null); - $this->get("administration.counter")->incrementCounter("total_devices_linked", 1); - } - - $this->get("administration.counter")->incrementCounter("total_users", 1); - - if($this->isConnected()){ - $data["access_token"] = $this->get("app.user")->generateJWT($this->getUser()); - } - - } else { - - $data["errors"][] = "error"; - - } - - $response->setContent(json_encode($data)); - - return $response; - } - - public function getAvaible(Request $request) - { - $data = Array( - "errors" => Array(), - "data" => Array() - ); - - $mail = $request->request->get("mail", ""); - $username = $request->request->get("username", ""); - - - $res = $this->get("app.user")->getAvaibleMailPseudo($mail, $username); - - if (is_bool($res) && $res == true) { - $data["data"]["status"] = "success"; - } elseif (is_array($res)) { - if (in_array(-1, $res)) { - - $data["errors"][] = "mailalreadytaken"; - - } - if (in_array(-2, $res)) { - - $data["errors"][] = "usernamealreadytaken"; - - } - } - - return new Response($data); - } - - public function createCompanyUser(Request $request) - { - $data = Array( - "errors" => Array(), - "data" => Array() - ); - - $mail = $request->request->get("mail", ""); - $fullname = $request->request->get("fullname", ""); - $password = $request->request->get("password", ""); - $language = $request->request->get("language", ""); - $workspace_id = $request->request->get("workspace_id", ""); - $current_user_id = $this->getUser()->getId(); - - $can = $this->get('app.workspace_levels')->can($workspace_id, $this->getUser(), "external_accounts:write"); - $res = ["not_allowed"]; - if ($can) { - $res = $this->get("app.user")->createCompanyUser($mail, $fullname, $password, $language, $workspace_id, $current_user_id); - } - - if ($res === true) { - $data["data"] = "success"; - } else { - $data["errors"] = $res; - } - - return new Response($data); - } - - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Users/Entity/Device.php b/twake/backend/core/src/Twake/Users/Entity/Device.php deleted file mode 100755 index a78d680f..00000000 --- a/twake/backend/core/src/Twake/Users/Entity/Device.php +++ /dev/null @@ -1,148 +0,0 @@ -<?php - -namespace Twake\Users\Entity; - -use Doctrine\ORM\Mapping as ORM; - - -/** - * Mail - * - * @ORM\Table(name="device",options={"engine":"MyISAM", "scylladb_keys": {{"id": "ASC"}, {"value": "ASC"}, {"user_id":"ASC"}}}) - * @ORM\Entity() - */ -class Device -{ - /** - * @var int - * - * @ORM\Column(name="id", type="twake_timeuuid") - * @ORM\Id - */ - private $id; - - /** - * @ORM\Column(name="user_id", type="twake_timeuuid") - */ - private $user_id; - - /** - * @var string - * - * @ORM\Column(name="type", type="string", length=16) - */ - private $type; - - /** - * @var string - * - * @ORM\Column(name="version", type="string", length=16) - */ - private $version; - - /** - * @var string - * - * @ORM\Column(name="value", type="twake_no_salt_text", nullable=true) - */ - private $value = ""; - - public function __construct($user_id, $type, $value, $version) - { - $this->user_id = $user_id; - $this->setType($type); - $this->setValue($value); - $this->setVersion($version); - } - - /** - * @return int - */ - public function setId($id) - { - $this->id = $id; - } - - public function getId() - { - return $this->id; - } - - /** - * @return mixed - */ - public function getUserId() - { - return $this->user_id; - } - - /** - * @param mixed $user - */ - public function setUserId($user_id) - { - $this->user_id = $user_id; - } - - /** - * @return string - */ - public function getType() - { - return $this->type; - } - - /** - * @param string $type - */ - public function setType($type) - { - $this->type = isset($type) ? $type : ""; - } - - /** - * @return string - */ - public function getValue() - { - return $this->value; - } - - /** - * @param string $value - */ - public function setValue($value) - { - $this->value = isset($value) ? $value : ""; - } - - /** - * @return string - */ - public function getVersion() - { - return $this->version; - } - - /** - * @param string $version - */ - public function setVersion($version) - { - $this->version = isset($version) ? $version : "unknown"; - } - - public function getAsArray() - { - return Array( - "user_id" => $this->getUserId(), - "type" => $this->getType(), - "value" => $this->getValue(), - "version" => $this->getVersion() - - ); - } - - -} - diff --git a/twake/backend/core/src/Twake/Users/Entity/ExternalUserRepository.php b/twake/backend/core/src/Twake/Users/Entity/ExternalUserRepository.php deleted file mode 100755 index 115f2530..00000000 --- a/twake/backend/core/src/Twake/Users/Entity/ExternalUserRepository.php +++ /dev/null @@ -1,83 +0,0 @@ -<?php - -namespace Twake\Users\Entity; - -use Symfony\Component\Security\Core\User\UserInterface; -use Twake\Core\Entity\SearchableObject; -use Twake\Workspaces\Entity\LinkWorkspaceParent; -use Symfony\Component\Security\Core\User\UserInterface as BaseUserInterface; -use Doctrine\ORM\Mapping as ORM; - - -/** - * ExternalUserRepository - * - * @ORM\Table(name="external_user_repository",options={"engine":"MyISAM", "scylladb_keys": {{"service_id":"ASC", "external_id":"ASC", "user_id": "ASC"}, {"service_id":"ASC", "user_id":"ASC", "external_id":"ASC"}} }) - * @ORM\Entity() - */ -class ExternalUserRepository -{ - - /** - * @ORM\Column(name="service_id", type="string") - * @ORM\Id - */ - protected $service_id; - - /** - * @ORM\Column(name="external_id", type="string") - * @ORM\Id - */ - protected $external_id; - - /** - * @ORM\Column(type="twake_timeuuid") - */ - protected $user_id; - - /** - * ExternalUserRepository constructor. - * @param int $service_id - * @param int $external_id - * @param $user_id - */ - public function __construct($service_id, $external_id, $user_id) - { - $this->service_id = $service_id . ""; - $this->external_id = $external_id . ""; - $this->user_id = $user_id . ""; - } - - /** - * @return string - */ - public function getServiceId() - { - return $this->service_id; - } - - /** - * @return string - */ - public function getExternalId() - { - return $this->external_id; - } - - /** - * @return mixed - */ - public function getUserId() - { - return $this->user_id; - } - - /** - * @return mixed - */ - public function setUserId($user_id) - { - $this->user_id = $user_id . ""; - } - -} diff --git a/twake/backend/core/src/Twake/Users/Entity/Mail.php b/twake/backend/core/src/Twake/Users/Entity/Mail.php deleted file mode 100755 index 0a4fe8fd..00000000 --- a/twake/backend/core/src/Twake/Users/Entity/Mail.php +++ /dev/null @@ -1,124 +0,0 @@ -<?php - -namespace Twake\Users\Entity; - -use Doctrine\ORM\Mapping as ORM; - -use Twake\Core\Entity\SearchableObject; - -/** - * Mail - * - * @ORM\Table(name="mail",options={"engine":"MyISAM", - * - * "scylladb_keys": {{"id":"ASC"}, {"user_id":"ASC"},{"mail":"ASC"}} - * }) - * @ORM\Entity() - */ -class Mail extends SearchableObject -{ - - protected $es_type = "mail"; - - /** - * @var int - * - * @ORM\Column(name="id", type="twake_timeuuid") - * @ORM\Id - */ - private $id; - - /** - * @ORM\Column(name="user_id", type="twake_timeuuid") - */ - private $user_id; - - /** - * @var string - * - * @ORM\Column(name="mail", type="string", length=350) - */ - private $mail; - - - /** - * Get id - * - * @return int - */ - public function setId($id) - { - $this->id = $id; - } - - public function getId() - { - return $this->id; - } - - /** - * @return string - */ - public function getEsType() - { - return $this->es_type; - } - - - /** - * Set user - * - * @param integer $user - * - * @return Mail - */ - public function setUserId($user_id) - { - $this->user_id = $user_id; - } - - /** - * Get user - * - * @return int - */ - public function getUserId() - { - return $this->user_id; - } - - /** - * Set mail - * - * @param string $mail - * - * @return Mail - */ - public function setMail($mail) - { - $this->mail = $mail; - - return $this; - } - - /** - * Get mail - * - * @return string - */ - public function getMail() - { - return $this->mail; - } - - public function getIndexationArray() - { - $return = Array( - "id" => $this->getId() . "", - "mail" => $this->getMail() - ); - return $return; - } - -} - diff --git a/twake/backend/core/src/Twake/Users/Entity/User.php b/twake/backend/core/src/Twake/Users/Entity/User.php deleted file mode 100755 index 3929a6f1..00000000 --- a/twake/backend/core/src/Twake/Users/Entity/User.php +++ /dev/null @@ -1,1270 +0,0 @@ -<?php - -namespace Twake\Users\Entity; - -use Symfony\Component\Security\Core\User\UserInterface; -use Twake\Core\Entity\SearchableObject; -use Twake\Workspaces\Entity\LinkWorkspaceParent; -use Symfony\Component\Security\Core\User\UserInterface as BaseUserInterface; -use Doctrine\ORM\Mapping as ORM; - - -/** - * User - * - * @ORM\Table(name="user",options={"engine":"MyISAM"}) - * @ORM\Entity() - */ -class User extends SearchableObject -{ - - protected $es_type = "users"; - - /** - * @var int - * - * @ORM\Column(name="id", type="twake_timeuuid") - * @ORM\Id - */ - protected $id; - - /** - * Used for cassandra session handler because timeuuid cannot be unserialized - */ - public $id_as_string_for_session_handler; - - /** - * @ORM\Column(name="banned", type="twake_boolean") - */ - protected $banned = false; - - /** - * @ORM\Column(name="is_robot", type="twake_boolean", options={"default" : false } ) - */ - protected $isrobot; - - /** - * @ORM\Column(name="first_name", type="twake_text") - */ - protected $firstname = ""; - - /** - * @ORM\Column(name="last_name", type="twake_text") - */ - protected $lastname = ""; - - /** - * @ORM\ManyToOne(targetEntity="Twake\Upload\Entity\File") - */ - protected $thumbnail; //Old format depreciated (now with console) - - /** - * @ORM\Column(name="picture", type="twake_text") - */ - protected $picture; - - /** - * @ORM\Column(name="workspaces", type="twake_text") - */ - protected $workspaces; - - /** - * @ORM\Column(name="groups", type="twake_text") - */ - protected $groups; - - /** - * @var int - * @ORM\Column(name="connections", type="integer") - */ - protected $connections; - - /** - * @var int - * @ORM\Column(name="connected", type="twake_boolean") - */ - protected $connected; - - /** - * @var int - * @ORM\Column(name="status_icon", type="string", length=64) - */ - protected $status_icon = '["", ""]'; - - /** - * @var int - * @ORM\Column(name="last_activity", type="twake_bigint") - */ - protected $lastactivity = 0; - - /** - * @var int - * @ORM\Column(name="creation_date", type="twake_datetime",nullable=true, options={"default" : "1970-01-02"}) - */ - protected $creationdate; - - /** - * @ORM\Column(name="language", type="string", length=64) - */ - protected $language = "en"; - - /** - * @ORM\Column(name="notification_preference", type="twake_text") - */ - protected $notification_preference = "{}"; - - /** - * @ORM\Column(name="notification_read_increment", type="twake_bigint") - */ - protected $notification_read_increment = 0; - - /** - * @ORM\Column(name="notification_write_increment", type="twake_bigint") - */ - protected $notification_write_increment = 0; - - /** - * @ORM\Column(name="workspaces_preference", type="twake_text") - */ - protected $workspaces_preference = "{}"; - - /** - * @ORM\Column(name="preferences", type="twake_text") - */ - protected $preferences = "{}"; - - /** - * @ORM\Column(name="tutorial_status", type="twake_text") - */ - protected $tutorial_status = "{}"; - - /** - * @ORM\Column(name="phone", type="twake_text") - */ - protected $phone = ""; - - /** - * @ORM\Column(name="identity_provider", type="twake_text") - */ - protected $identity_provider = ""; - - /** - * @ORM\Column(name="identity_provider_id", type="twake_text") - */ - protected $identity_provider_id = ""; - - /** - * @ORM\Column(name="token_login", type="twake_text") - */ - protected $token_login = ""; - - /** - * @ORM\Column(name="origin", type="string", length=64) - */ - protected $origin = ""; - - /** - * @ORM\Column(name="is_new", type="twake_boolean") - */ - protected $isnew = true; - - /** - * @ORM\Column(name="mail_verified", type="twake_boolean") - */ - protected $mail_verified = false; - - /** - * @ORM\Column(name="mail_verification_override", type="string") - */ - protected $mail_verification_override = ""; - - - protected $username; - - /** - * @ORM\Column(name="username_canonical", type="string", length=64, options={"index": true}) - */ - protected $usernamecanonical; - - protected $email; - - /** - * @ORM\Column(name="email_canonical", type="string", length=512, options={"index": true}) - */ - protected $emailcanonical; - - /** - * @ORM\Column(name="remember_me_secret", type="twake_text") - */ - protected $remember_me_secret; - - - /** - * @ORM\Column(type="twake_boolean") - */ - protected $enabled; - - /** - * @ORM\Column(type="string", length=512, nullable=true) - */ - protected $salt; - - /** - * @ORM\Column(type="string", length=512) - */ - protected $password; - - /** - * @ORM\Column(type="string", length=16) - */ - protected $timezone; - - /** - * @ORM\Column(name="last_login", type="twake_datetime") - */ - protected $lastlogin; - - /** - * @ORM\Column(name="confirmation_token", type="string", nullable = true) - */ - protected $confirmationtoken; - - /** - * @ORM\Column(name="password_requested_at", type="twake_datetime") - */ - protected $passwordrequestedat; - - /** - * @ORM\Column(type="array") - */ - protected $roles; - - /** - * @ORM\Column(name="deleted", type="twake_boolean") - */ - protected $deleted = false; - - public function __construct() - { - parent::__construct(); - $this->enabled = true; - $this->connections = 0; - $this->connected = 1; - $this->isrobot = false; - $this->roles = array(); - $this->lastlogin = new \DateTime(); - $this->passwordrequestedat = new \DateTime(); - - $this->setCreationDate(new \DateTime()); - } - - /** - * @return int - */ - public function setId($id) - { - $this->id = $id; - } - - public function getId() - { - return $this->id . ""; - } - - public function setIdAsString() - { - if ($this->id && str_replace(Array("0", "-"), "", $this->id . "")) { - $this->id_as_string_for_session_handler = $this->id . ""; - } - } - - /** - * @return mixed - */ - public function getBanned() - { - return $this->banned; - } - - /** - * @param mixed $banned - */ - public function setBanned($banned) - { - $this->banned = $banned; - } - - /** - * @return mixed - */ - public function getFirstName() - { - return $this->firstname; - } - - /** - * @param mixed $firstname - */ - public function setFirstName($firstname) - { - $this->firstname = $firstname; - } - - /** - * @return dateTime - */ - public function getCreationDate() - { - return $this->creationdate; - } - - /** - * @param datetime $creationdate - */ - public function setCreationDate($creationdate) - { - $this->creationdate = $creationdate; - } - - /** - * @return mixed - */ - public function getLastName() - { - return $this->lastname; - } - - /** - * @param mixed $lastname - */ - public function setLastName($lastname) - { - $this->lastname = $lastname; - } - - /** - * @return mixed - */ - public function getThumbnail() - { - return $this->thumbnail; - } - - /** - * @param mixed $thumbnail - */ - public function setThumbnail($thumbnail) - { - $this->thumbnail = $thumbnail; - } - - /** - * @return mixed - */ - public function getPicture() - { - if(!$this->picture){ - $this->setPicture($this->getThumbnail() ? $this->getThumbnail()->getPublicURL(2) : ""); - } - return $this->picture ?: ""; - } - - /** - * @param mixed $logo - */ - public function setPicture($picture) - { - $this->picture = $picture; - } - - public function isActive() - { - $this->lastactivity = date("U"); - $this->connected = true; - } - - public function isConnected() - { - if (date("U") - $this->lastactivity > 60 * 5) { - $this->connected = false; - return false; - } - return $this->connected; - } - - /** - * @return mixed - */ - public function getLanguage() - { - try{ - $this->language = json_decode($this->preferences, 1)["language"] ?: $this->language; - }catch(Error $err){} - return $this->language; - } - - /** - * @param mixed $language - */ - public function setLanguage($language) - { - $this->language = $language; - } - - /** - * @return mixed - */ - public function getPhone() - { - return $this->phone; - } - - /** - * @param mixed $phone - */ - public function setPhone($phone) - { - $this->phone = $phone; - } - - /** - * @return mixed - */ - public function getisNew() - { - return $this->isnew; - } - - /** - * @param mixed $isnew - */ - public function setIsNew($isnew) - { - $this->isnew = $isnew; - } - - public function getIdentityProvider() - { - return $this->identity_provider; - } - - public function setIdentityProvider($identity_provider) - { - if (!$identity_provider) { - $this->identity_provider = ""; - } - $this->identity_provider = $identity_provider; - } - - public function getIdentityProviderId() - { - return $this->identity_provider_id; - } - - public function getTrack() - { - $allow = true; - try{ - $allow = json_decode($this->preferences, 1)["allow_tracking"]; - }catch(Error $err){} - return $allow; - } - - public function setIdentityProviderId($identity_provider_id) - { - if (!$identity_provider_id) { - $this->identity_provider_id = ""; - } - $this->identity_provider_id = $identity_provider_id; - } - - public function getTokenLogin() - { - return json_decode(empty($this->token_login)?"{}":$this->token_login, 1); - } - - public function setTokenLogin($token_login) - { - $this->token_login = json_encode($token_login); - } - - /** - * @return mixed - */ - public function getOrigin() - { - return $this->origin; - } - - /** - * @param mixed $origin - */ - public function setOrigin($origin) - { - if (!$origin) { - $origin = ""; - } - $this->origin = $origin; - } - - /** - * @return mixed - */ - public function getNotificationPreference() - { - $preferences = json_decode($this->notification_preference, 1); - $preferences["devices"] = (isset($preferences["devices"])) ? $preferences["devices"] : 0; - $preferences["dont_disturb_between"] = (isset($preferences["dont_disturb_between"])) ? $preferences["dont_disturb_between"] : null; - $preferences["dont_disturb_and"] = (isset($preferences["dont_disturb_and"])) ? $preferences["dont_disturb_and"] : null; - $preferences["privacy"] = (isset($preferences["privacy"])) ? $preferences["privacy"] : 0; - $preferences["dont_use_keywords"] = (isset($preferences["dont_use_keywords"])) ? $preferences["dont_use_keywords"] : 1; - $preferences["keywords"] = (isset($preferences["keywords"])) ? $preferences["keywords"] : ""; - $preferences["disabled_workspaces"] = (isset($preferences["disabled_workspaces"])) ? $preferences["disabled_workspaces"] : []; - $preferences["workspace"] = (isset($preferences["workspace"])) ? $preferences["workspace"] : []; - $preferences["mail_notifications"] = (isset($preferences["mail_notifications"])) ? $preferences["mail_notifications"] : 2; - $preferences["disable_until"] = (isset($preferences["disable_until"])) ? $preferences["disable_until"] : 0; - - return $preferences; - } - - /** - * @param mixed $notification_preference - */ - public function setNotificationPreference($notification_preference) - { - $preferences = Array(); - @$preferences["devices"] = intval($notification_preference["devices"]); - @$preferences["dont_disturb_between"] = intval($notification_preference["disturb_before"]); - @$preferences["dont_disturb_and"] = intval($notification_preference["disturb_after"]); - @$preferences["privacy"] = intval($notification_preference["privacy"]); - @$preferences["dont_use_keywords"] = intval($notification_preference["use_keywords"]); - @$preferences["keywords"] = substr($notification_preference["keywords"], 0, 512); - @$preferences["mail_notifications"] = intval($notification_preference["mail_notifications"]); - @$preferences["disable_until"] = (isset($notification_preference["disable_until"])) ? $notification_preference["disable_until"] : 0; - - foreach ($notification_preference["disabled_workspaces"] as $item) { - @$preferences["disabled_workspaces"][] = intval($item); - } - - $this->notification_preference = json_encode($notification_preference); - } - - - public function getTutorialStatus() - { - return json_decode($this->tutorial_status, true); - } - - public function setTutorialStatus($tutorial_status) - { - @$this->tutorial_status = json_encode($tutorial_status); - } - - public function getFullName() - { - $name = "@" . $this->getUsername(); - if ($this->getFirstName() && $this->getFirstName() != "") { - $name = $this->getFirstName(); - } - if ($this->getFirstName() && $this->getFirstName() != "" && $this->getLastName() && $this->getLastName() != "") { - $name .= " " . $this->getLastName(); - } - return ucwords($name); - } - - public function getAsArray() - { - $return = Array( - "id" => $this->getId(), - "username" => $this->getUsername(), - "firstname" => $this->getFirstName(), - "lastname" => $this->getLastName(), - "thumbnail" => $this->getPicture(), - "identity_provider" => $this->getIdentityProvider(), - "connected" => $this->isConnected(), - "language" => $this->getLanguage(), - "isNew" => $this->getisNew(), - "isRobot" => $this->getisRobot(), - "status_icon" => $this->getStatusIcon(), - "front_id" => $this->getFrontId(), - "timezone_offset" => $this->timezone, - "email" => $this->getEmail(), - "mail_hash" => md5(trim(strtolower($this->getEmail()))), - "mail_verification_override" => $this->getMailVerified() ? null : $this->getMailVerificationOverride(), - "mail_verification_override_mail" => $this->getMailVerified() ? null : $this->getEmail(), - "groups_id" => $this->getGroups(), - "workspaces_id" => $this->getWorkspaces(), - "deleted" => $this->getDeleted(), - ); - - //Start - Compatibility with new model - $return["id"] = $return["id"]; - $return["provider"] = $return["identity_provider"] ?: "internal"; - $return["provider_id"] = $this->getIdentityProviderId(); - - $return["email"] = $return["email"]; - $return["is_verified"] = $this->getMailVerified(); - $return["picture"] = $this->getPicture(); - $return["first_name"] = $return["firstname"]; - $return["last_name"] = $return["lastname"]; - $return["created_at"] = ($this->getCreationDate() ? ($this->getCreationDate()->format('U') * 1000) : null); - - $return["preference"] = [ - "locale" => $this->getLanguage(), - "timezone" => $this->timezone, - ]; - - $return["status"] = trim(join(" ", $return["status_icon"])); - $return["last_activity"] = $this->getLastActivity() * 1000; - $return["deleted"] = $return["deleted"]; - //End - Compatibility with new model - - return $return; - } - - public function getIndexationArray() - { - $return = Array( - "email" => $this->getEmail(), - "username" => $this->getUsername(), - "firstname" => $this->getFirstName(), - "lastname" => $this->getLastName(), - "language" => $this->getLanguage(), - "creation_date" => ($this->getCreationDate() ? $this->getCreationDate()->format('Y-m-d') : null), - "groups_id" => $this->getGroups(), - "workspaces_id" => $this->getWorkspaces() - ); - return $return; - } - - public function setGroups($ids) - { - $this->groups = json_encode($ids); - } - - public function setWorkspaces($ids) - { - $this->workspaces = json_encode($ids); - } - - public function getGroups() - { - return json_decode($this->groups, 1); - } - - public function getWorkspaces() - { - return json_decode($this->workspaces, 1); - } - - /** - * @return mixed - */ - public function getisRobot() - { - return $this->isrobot; - } - - /** - * @param mixed $isrobot - */ - public function setIsRobot($isrobot) - { - $this->isrobot = $isrobot; - } - - /** - * @return int - */ - public function getLastActivity() - { - return $this->lastactivity; - } - - /** - * @return \DateTime|null - */ - public function getLastLogin() - { - return $this->lastlogin; - } - - - /** - * @return string - */ - public function __toString() - { - return (string)$this->getUsername(); - } - - /** - * {@inheritdoc} - */ - public function addRole($role) - { - $role = strtoupper($role); - if ($role === static::ROLE_DEFAULT) { - return $this; - } - - if (!in_array($role, $this->roles, true)) { - $this->roles[] = $role; - } - - return $this; - } - - /** - * {@inheritdoc} - */ - public function serialize() - { - return serialize(array( - $this->password, - $this->salt, - $this->usernamecanonical, - $this->username, - $this->enabled, - $this->id, - $this->email, - $this->emailcanonical, - )); - } - - /** - * {@inheritdoc} - */ - public function unserialize($serialized) - { - $data = unserialize($serialized); - - if (13 === count($data)) { - // Unserializing a User object from 1.3.x - unset($data[4], $data[5], $data[6], $data[9], $data[10]); - $data = array_values($data); - } elseif (11 === count($data)) { - // Unserializing a User from a dev version somewhere between 2.0-alpha3 and 2.0-beta1 - unset($data[4], $data[7], $data[8]); - $data = array_values($data); - } - - list( - $this->password, - $this->salt, - $this->usernamecanonical, - $this->username, - $this->enabled, - $this->id, - $this->email, - $this->emailcanonical - ) = $data; - } - - /** - * {@inheritdoc} - */ - public function eraseCredentials() - { - $this->plainpassword = null; - } - - /** - * {@inheritdoc} - */ - public function getUsername() - { - return $this->getusernameCanonical(); - } - - /** - * {@inheritdoc} - */ - public function getusernameCanonical() - { - return $this->usernamecanonical; - } - - /** - * {@inheritdoc} - */ - public function getSalt() - { - return $this->salt; - } - - /** - * @return string - */ - public function getEsType() - { - return $this->es_type; - } - - - /** - * {@inheritdoc} - */ - public function getEmail() - { - return $this->getemailCanonical(); - } - - /** - * {@inheritdoc} - */ - public function getemailCanonical() - { - return $this->emailcanonical; - } - - /** - * {@inheritdoc} - */ - public function getPassword() - { - return $this->password; - } - - /** - * {@inheritdoc} - */ - public function getConfirmationToken() - { - return $this->confirmationtoken; - } - - /** - * {@inheritdoc} - */ - public function getRoles() - { - $roles = $this->roles; - - // we need to make sure to have at least one role - $roles[] = 'ROLE_USER'; - - return array_unique($roles); - } - - /** - * {@inheritdoc} - */ - public function hasRole($role) - { - return in_array(strtoupper($role), $this->getRoles(), true); - } - - /** - * {@inheritdoc} - */ - public function isAccountNonExpired() - { - return true; - } - - /** - * {@inheritdoc} - */ - public function isAccountNonLocked() - { - return true; - } - - /** - * {@inheritdoc} - */ - public function isCredentialsNonExpired() - { - return true; - } - - public function isEnabled() - { - return $this->enabled; - } - - /** - * {@inheritdoc} - */ - public function isSuperAdmin() - { - return $this->hasRole(static::ROLE_SUPER_ADMIN); - } - - /** - * {@inheritdoc} - */ - public function removeRole($role) - { - if (false !== $key = array_search(strtoupper($role), $this->roles, true)) { - unset($this->roles[$key]); - $this->roles = array_values($this->roles); - } - - return $this; - } - - /** - * {@inheritdoc} - */ - public function setUsername($username) - { - $this->username = $username; - $this->usernamecanonical = $username; - - return $this; - } - - /** - * {@inheritdoc} - */ - public function setusernameCanonical($usernamecanonical) - { - $this->usernamecanonical = $usernamecanonical; - - return $this; - } - - /** - * {@inheritdoc} - */ - public function setSalt($salt) - { - $this->salt = $salt; - - return $this; - } - - /** - * {@inheritdoc} - */ - public function setEmail($email) - { - $this->email = trim(strtolower($email)); - $this->emailcanonical = trim(strtolower($email)); - - return $this; - } - - /** - * {@inheritdoc} - */ - public function setemailCanonical($emailcanonical) - { - $this->emailcanonical = $emailcanonical; - - return $this; - } - - /** - * {@inheritdoc} - */ - public function setEnabled($boolean) - { - $this->enabled = (bool)$boolean; - - return $this; - } - - /** - * {@inheritdoc} - */ - public function setPassword($password) - { - $this->password = $password; - - return $this; - } - - /** - * {@inheritdoc} - */ - public function setSuperAdmin($boolean) - { - if (true === $boolean) { - $this->addRole(static::ROLE_SUPER_ADMIN); - } else { - $this->removeRole(static::ROLE_SUPER_ADMIN); - } - - return $this; - } - - /** - * {@inheritdoc} - */ - public function setPlainPassword($password) - { - $this->plainpassword = $password; - - return $this; - } - - /** - * {@inheritdoc} - */ - public function setLastLogin(\DateTime $time = null) - { - $this->lastlogin = $time; - - return $this; - } - - /** - * @return mixed - */ - public function getMailVerified() - { - return $this->mail_verified; - } - - /** - * @param mixed $mail_verified - */ - public function setMailVerified($mail_verified) - { - $this->mail_verified = $mail_verified; - } - - public function getMailVerifiedExtended($mail = null, $pseudo = null) - { - //Dans tous les cas si le mail est vérifié cet utilisateur est bloqué - if ($this->getMailVerified()) { - return true; - } - - $override = (strlen($this->getMailVerificationOverride()) > 2); - - if ($override && $mail != null && $pseudo != null) { - if (trim(strtolower($mail)) == trim(strtolower($this->getemailCanonical()))) { - return false; //Cas spécial ou on authorise l'inscription et l'écrasement de l'utilisateur - } - } - - return $this->getMailVerified() || $override; - } - - /** - * @return mixed - */ - public function getMailVerificationOverride() - { - return $this->mail_verification_override; - } - - /** - * @param mixed $mail_verification_override - */ - public function setMailVerificationOverride($mail_verification_override): void - { - $this->mail_verification_override = $mail_verification_override; - } - - /** - * {@inheritdoc} - */ - public function setConfirmationToken($confirmationtoken) - { - $this->confirmationtoken = $confirmationtoken; - - return $this; - } - - /** - * {@inheritdoc} - */ - public function setPasswordRequestedAt(\DateTime $date = null) - { - $this->passwordrequestedat = $date; - - return $this; - } - - /** - * Gets the timestamp that the user requested a password reset. - * - * @return null|\DateTime - */ - public function getPasswordRequestedAt() - { - return $this->passwordrequestedat; - } - - /** - * {@inheritdoc} - */ - public function isPasswordRequestNonExpired($ttl) - { - return $this->getPasswordRequestedAt() instanceof \DateTime && - $this->getPasswordRequestedAt()->getTimestamp() + $ttl > time(); - } - - /** - * {@inheritdoc} - */ - public function setRoles(array $roles) - { - $this->roles = array(); - - foreach ($roles as $role) { - $this->addRole($role); - } - - return $this; - } - - - public function isEqualTo(User $user) - { - if (!$user instanceof self) { - return false; - } - - if ($this->password !== $user->getPassword()) { - return false; - } - - if ($this->salt !== $user->getSalt()) { - return false; - } - - if ($this->username !== $user->getUsername()) { - return false; - } - - return true; - } - - /** - * @return int - */ - public function getStatusIcon() - { - try { - $status_icon = json_decode($this->status_icon, 1); - } catch (\Exception $e) { - $status_icon = Array("", ""); - } - if (!$status_icon) { - $status_icon = Array("", ""); - } - return $status_icon; - } - - /** - * @param int $status_icon - */ - public function setStatusIcon($status_icon) - { - try { - $this->status_icon = json_encode($status_icon); - } catch (\Exception $e) { - $this->status_icon = '["", ""]'; - } - } - - /** - * @return mixed - */ - public function getWorkspacesPreference() - { - try { - $preferences = json_decode($this->workspaces_preference, 1); - } catch (\Exception $e) { - $preferences = Array(); - } - if (!$preferences) { - $preferences = Array(); - } - return $preferences; - } - - /** - * @param mixed $workspaces_preference - */ - public function setWorkspacesPreference($workspaces_preference) - { - try { - $this->workspaces_preference = json_encode($workspaces_preference); - } catch (\Exception $e) { - $this->workspaces_preference = "{}"; - } - } - - /** - * @return mixed - */ - public function getNotificationReadIncrement() - { - return $this->notification_read_increment; - } - - /** - * @param mixed $notification_read_increment - */ - public function setNotificationReadIncrement($notification_read_increment) - { - $this->notification_read_increment = $notification_read_increment; - } - - /** - * @return mixed - */ - public function getNotificationWriteIncrement() - { - return $this->notification_write_increment; - } - - /** - * @param mixed $notification_write_increment - */ - public function setNotificationWriteIncrement($notification_write_increment) - { - $this->notification_write_increment = $notification_write_increment; - } - - /** - * @return mixed - */ - public function getTimezone() - { - try{ - $this->timezone = json_decode($this->preferences, 1)["timezone"] ?: $this->timezone; - }catch(Error $err){} - return $this->timezone; - } - - /** - * @param mixed $timezone - */ - public function setTimezone($timezone) - { - $this->timezone = $timezone; - } - - /** - * @return mixed - */ - public function getRememberMeSecret() - { - return $this->remember_me_secret; - } - - /** - * @param mixed $remember_me_secret - */ - public function setRememberMeSecret($remember_me_secret) - { - $this->remember_me_secret = $remember_me_secret; - } - - /** - * {@inheritdoc} - */ - public function getDeleted() - { - return $this->deleted; - } - -} diff --git a/twake/backend/core/src/Twake/Users/Entity/VerificationNumberMail.php b/twake/backend/core/src/Twake/Users/Entity/VerificationNumberMail.php deleted file mode 100755 index 8d6e1ea6..00000000 --- a/twake/backend/core/src/Twake/Users/Entity/VerificationNumberMail.php +++ /dev/null @@ -1,163 +0,0 @@ -<?php - -namespace Twake\Users\Entity; - -use Doctrine\ORM\Mapping as ORM; - - -/** - * Mail - * - * @ORM\Table(name="verification_number_mail",options={"engine":"MyISAM"}) - * @ORM\Entity() - */ -class VerificationNumberMail -{ - /** - * @var int - * - * @ORM\Column(name="id", type="twake_timeuuid") //TO ADD FOR CASSANDRA - * @ORM\Id - * - */ - private $id; - - /** - * @var string - * - * @ORM\Column(name="mail", type="twake_no_salt_text") - */ - private $mail; - - /** - * @ORM\Column(name="verified", type="twake_boolean") - */ - private $verified = false; - - /** - * @var string - * - * @ORM\Column(name="hash_code", type="twake_text") - */ - private $hashcode; - - /** - * @var string - * - * @ORM\Column(name="token_column", type="string", length=256, options={"index": true}) - */ - private $token = ""; - - /** - * @var \DateTime - * - * @ORM\Column(name="date", type="twake_datetime") //TO ADD FOR CASSANDRA (replace datetime) - */ - private $date = ""; - - /** - * @ORM\Column(name="validity_time", type="integer") - */ - private $validitytime; - - - /** - * @ORM\Column(name="clean_code", type="twake_text") - */ - private $clean_code; - - - public function __construct($mail, $validitytime = 3600) - { - $this->mail = $mail; - $this->token = bin2hex(random_bytes(40)); - $this->hashcode = bin2hex(random_bytes(128)); - $this->date = new \DateTime(); - $this->validitytime = max(3600, $validitytime); - } - - public function getCode() - { - $code = substr(bin2hex(random_bytes(5)), 0, 9); - $this->clean_code = $code; - $this->hashcode = $this->hash($code); - //Prettify - $code = str_split($code, 3); - $code = join("-", $code); - return $code; - } - - public function verifyCode($code) - { - if ($this->date->format('U') < (new \DateTime())->format('U') - $this->validitytime) { - return false; - } - $code = preg_replace("/[^a-z0-9]/", "", strtolower($code)); - return $this->hash($code) == $this->hashcode; - } - - private function hash($str) - { - return hash("sha512", $str); - } - - /** - * @return string - */ - public function getToken() - { - return $this->token; - } - - public function getMail() - { - return $this->mail; - } - - /** - * @return int - */ - public function setId($id) - { - $this->id = $id; - } - - public function getId() - { - return $this->id; - } - - /** - * @return \DateTime - */ - public function getDate() - { - return $this->date; - } - - /** - * @return mixed - */ - public function getCleanCode() - { - return $this->clean_code; - } - - /** - * @return mixed - */ - public function getVerified() - { - return $this->verified; - } - - /** - * @param mixed $verified - */ - public function setVerified($verified) - { - $this->verified = $verified; - } - -} - diff --git a/twake/backend/core/src/Twake/Users/Resources/Routing.php b/twake/backend/core/src/Twake/Users/Resources/Routing.php deleted file mode 100755 index ae911721..00000000 --- a/twake/backend/core/src/Twake/Users/Resources/Routing.php +++ /dev/null @@ -1,73 +0,0 @@ -<?php - -namespace Twake\Users\Resources; - -use Common\BaseRouting; - -class Routing extends BaseRouting -{ - - protected $routing_prefix = "ajax/users/"; - - protected $routes = [ - "login" => ["handler" => "UsersConnections:login", "methods" => ["POST"]], - "autoLogin" => ["handler" => "UsersConnections:autoLogin", "methods" => ["POST"]], - "logout" => ["handler" => "UsersConnections:logout", "methods" => ["POST"]], - "current/isLogged" => ["handler" => "UsersConnections:isLogged", "methods" => ["POST"]], - "current/get" => ["handler" => "UsersConnections:currentUser", "methods" => ["POST"], "security" => ["user_connected_security"]], - "mobile_redirect" => ["handler" => "UsersConnections:mobileRedirect", "methods" => ["GET"]], - "alive" => ["handler" => "UsersConnections:alive", "methods" => ["POST"], "security" => ["user_connected_security"]], - "set/isNew" => ["handler" => "UsersConnections:setIsNew", "methods" => ["POST"], "security" => ["user_connected_security"]], - // Account - "account/identity" => ["handler" => "UsersAccount:setIdentity", "methods" => ["POST"], "security" => ["user_connected_security"]], - "account/username" => ["handler" => "UsersAccount:setUsername", "methods" => ["POST"], "security" => ["user_connected_security"]], - "account/password" => ["handler" => "UsersAccount:setPassword", "methods" => ["POST"], "security" => ["user_connected_security"]], - "account/mainmail" => ["handler" => "UsersAccount:setMainMail", "methods" => ["POST"], "security" => ["user_connected_security"]], - "account/removemail" => ["handler" => "UsersAccount:removeMail", "methods" => ["POST"], "security" => ["user_connected_security"]], - "account/addmail" => ["handler" => "UsersAccount:addMail", "methods" => ["POST"], "security" => ["user_connected_security"]], - "account/mails" => ["handler" => "UsersAccount:getMails", "methods" => ["POST"], "security" => ["user_connected_security"]], - "account/addmailverify" => ["handler" => "UsersAccount:addMailVerify", "methods" => ["POST"], "security" => ["user_connected_security"]], - "account/language" => ["handler" => "UsersAccount:setLanguage", "methods" => ["POST"], "security" => ["user_connected_security"]], - "account/get_notifications" => ["handler" => "UsersAccount:getNotificationPreferences", "methods" => ["POST"], "security" => ["user_connected_security"]], - "account/set_notifications" => ["handler" => "UsersAccount:setNotificationPreferences", "methods" => ["POST"], "security" => ["user_connected_security"]], - "account/update_notifications" => ["handler" => "UsersAccount:updateNotificationPreferenceByWorkspace", "methods" => ["POST"], "security" => ["user_connected_security"]], - "account/set_tutorial_status" => ["handler" => "UsersAccount:setTutorialStatus", "methods" => ["POST"], "security" => ["user_connected_security"]], - "account/update_status" => ["handler" => "UsersAccount:updateStatus", "methods" => ["POST"], "security" => ["user_connected_security"]], - // Subscribe - "subscribe/mail" => ["handler" => "UsersSubscribe:mail", "methods" => ["POST"]], - "subscribe/doverifymail" => ["handler" => "UsersSubscribe:doVerifyMail", "methods" => ["POST"]], - "subscribe/availability" => ["handler" => "UsersSubscribe:getAvaible", "methods" => ["POST"]], - "subscribe/company_subscribe" => ["handler" => "UsersSubscribe:createCompanyUser", "methods" => ["POST"]], - // Recover - "recover/mail" => ["handler" => "UsersRecover:mail", "methods" => ["POST"]], - "recover/verify" => ["handler" => "UsersRecover:codeVerification", "methods" => ["POST"]], - "recover/password" => ["handler" => "UsersRecover:newPassword", "methods" => ["POST"]], - // Get and search - "all/get" => ["handler" => "Users:getById", "methods" => ["POST"], "security" => ["user_connected_security"]], - "all/search" => ["handler" => "Users:search", "methods" => ["POST"], "security" => ["user_connected_security"]], - - // CAS - "cas/login" => ["handler" => "Adapters/CAS:login", "methods" => ["GET"]], - "cas/verify" => ["handler" => "Adapters/CAS:verify", "methods" => ["GET"]], - "cas/logout" => ["handler" => "Adapters/CAS:logout", "methods" => ["GET"]], - "cas/logout_success" => ["handler" => "Adapters/CAS:logoutSuccess", "methods" => ["GET"]], - - // OpenID - "openid/logout" => ["handler" => "Adapters/OpenID:logout", "methods" => ["GET"]], - "openid/logout_success" => ["handler" => "Adapters/OpenID:logoutSuccess", "methods" => ["GET"]], - "openid/{method?}" => ["handler" => "Adapters/OpenID:index", "methods" => ["GET", "POST"]], - "openid" => ["handler" => "Adapters/OpenID:index", "methods" => ["GET", "POST"]], - - // Console - "console/hook" => ["handler" => "Adapters/Console:hook", "methods" => ["POST"]], - "console/token" => ["handler" => "Adapters/Console:loginFromOIDCAccessToken", "methods" => ["POST"]], - "console/redirect_to_app" => ["handler" => "Adapters/Console:redirectToApp", "methods" => ["GET"]], - "console/openid/logout" => ["handler" => "Adapters/Console:logout", "methods" => ["GET"]], - "console/openid/logout_success" => ["handler" => "Adapters/Console:logoutSuccess", "methods" => ["GET"]], - "console/openid/{method?}" => ["handler" => "Adapters/Console:index", "methods" => ["GET", "POST"]], - "console/openid" => ["handler" => "Adapters/Console:index", "methods" => ["GET", "POST"]], - "console/api/verify_mail" => ["handler" => "Adapters/Console/Api:verifyMail", "methods" => ["POST"]], - "console/api/invite" => ["handler" => "Adapters/Console/Api:invite", "methods" => ["POST"]], - ]; - -} diff --git a/twake/backend/core/src/Twake/Users/Resources/Services.php b/twake/backend/core/src/Twake/Users/Resources/Services.php deleted file mode 100755 index c74f3b45..00000000 --- a/twake/backend/core/src/Twake/Users/Resources/Services.php +++ /dev/null @@ -1,17 +0,0 @@ -<?php - -namespace Twake\Users\Resources; - -use Common\BaseServices; - -class Services extends BaseServices -{ - - protected $services = [ - "app.users" => "Users", - "app.user" => "User", - "app.user_updates" => "Updates", - "app.user_provider" => "UserProvider" - ]; - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Users/Services/PasswordEncoder.php b/twake/backend/core/src/Twake/Users/Services/PasswordEncoder.php deleted file mode 100755 index 24dbff23..00000000 --- a/twake/backend/core/src/Twake/Users/Services/PasswordEncoder.php +++ /dev/null @@ -1,56 +0,0 @@ -<?php - -namespace Twake\Users\Services; - - -class PasswordEncoder -{ - private $algorithm = "sha512"; - private $encodeHashAsBase64 = true; - private $iterations = 5000; - private $encodedLength = -1; - - public function __construct() - { - $this->encodedLength = \strlen($this->encodePassword('', 'salt')); - } - - protected function mergePasswordAndSalt(string $password, ?string $salt) - { - if (empty($salt)) { - return $password; - } - - return $password . '{' . $salt . '}'; - } - - protected function isPasswordTooLong(string $password) - { - return \strlen($password) > 4096; - } - - public function encodePassword(string $raw, ?string $salt) - { - if ($this->isPasswordTooLong($raw)) { - throw new BadCredentialsException('Invalid password.'); - } - - $salted = $this->mergePasswordAndSalt($raw, $salt); - $digest = hash($this->algorithm, $salted, true); - - for ($i = 1; $i < $this->iterations; ++$i) { - $digest = hash($this->algorithm, $digest . $salted, true); - } - - return $this->encodeHashAsBase64 ? base64_encode($digest) : bin2hex($digest); - } - - public function isPasswordValid(string $encoded, string $raw, ?string $salt) - { - if (\strlen($encoded) !== $this->encodedLength || false !== strpos($encoded, '$')) { - return false; - } - - return !$this->isPasswordTooLong($raw) && hash_equals($encoded, $this->encodePassword($raw, $salt)); - } -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Users/Services/Updates.php b/twake/backend/core/src/Twake/Users/Services/Updates.php deleted file mode 100755 index a04e67ff..00000000 --- a/twake/backend/core/src/Twake/Users/Services/Updates.php +++ /dev/null @@ -1,17 +0,0 @@ -<?php - -namespace Twake\Users\Services; - -use Twake\Users\Model\ContactsInterface; -use App\App; - -class Updates -{ - - /* Used for websocket init */ - public function init($route, $data, $user) - { - return true; - } - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Users/Services/User.php b/twake/backend/core/src/Twake/Users/Services/User.php deleted file mode 100755 index 411aa12e..00000000 --- a/twake/backend/core/src/Twake/Users/Services/User.php +++ /dev/null @@ -1,1210 +0,0 @@ -<?php - -namespace Twake\Users\Services; - -use App\App; -use Common\Http\Request; -use Common\Http\Response; -use Twake\Core\Services\DoctrineAdapter\ManagerAdapter; -use Twake\Core\Services\Translate; -use Twake\Upload\Entity\File; -use Twake\Users\Entity\Device; -use Twake\Users\Entity\ExternalUserRepository; -use Twake\Users\Entity\Mail; -use Twake\Users\Entity\VerificationNumberMail; -use \Firebase\JWT\JWT; - -/** - * This service is responsible for subscribtions, unsubscribtions, request for new password - */ -class User -{ - - /** @var App */ - private $app; - - /* @var Translate $translate */ - var $translate; - /** @var ManagerAdapter */ - private $em; - private $pusher; - private $twake_mailer; - private $string_cleaner; - private $workspace_members_service; - private $group_service; - private $workspace_service; - private $restClient; - private $standalone; - private $licenceKey; - private $encoder; - - - public function __construct(App $app) - { - $this->app = $app; - $this->em = $app->getServices()->get("app.twake_doctrine"); - $this->pusher = $app->getServices()->get("app.pusher"); - $this->twake_mailer = $app->getServices()->get("app.twake_mailer"); - $this->string_cleaner = $app->getServices()->get("app.string_cleaner"); - $this->workspace_members_service = $app->getServices()->get("app.workspace_members"); - $this->group_service = $app->getServices()->get("app.groups"); - $this->workspace_service = $app->getServices()->get("app.workspaces"); - $this->restClient = $app->getServices()->get("app.restclient"); - $this->translate = $app->getServices()->get("app.translate"); - $this->standalone = $app->getContainer()->getParameter("env.standalone"); - $this->licenceKey = $app->getContainer()->getParameter("env.licence_key"); - $this->encoder = new PasswordEncoder(); - } - - public function alive($userId) - { - $userRepository = $this->em->getRepository("Twake\Users:User"); - $user = $userRepository->find($userId); - - if ($user != null) { - $user->isActive(); - $this->em->persist($user); - $this->em->flush(); - } - } - - /** - * @param $service_id - * @param $external_id - * @return null|\Twake\Users\Entity\User - */ - public function getUserFromExternalRepository($service_id, $external_id) - { - - $extRepository = $this->em->getRepository("Twake\Users:ExternalUserRepository"); - /** @var ExternalUserRepository $user_link */ - $user_link = $extRepository->findOneBy(Array("service_id" => $service_id, "external_id" => $external_id)); - - if (!$user_link) { - return null; - } else { - $user_id = $user_link->getUserId(); - $userRepository = $this->em->getRepository("Twake\Users:User"); - /** @var \Twake\Users\Entity\User $user */ - $user = $userRepository->find($user_id); - return $user; - } - - } - public function setUserFromExternalRepository($service_id, $external_id, $user_id) - { - - $extRepository = $this->em->getRepository("Twake\Users:ExternalUserRepository"); - /** @var ExternalUserRepository $user_link */ - $user_link = $extRepository->findOneBy(Array("service_id" => $service_id, "external_id" => $external_id)); - - if (!$user_link) { - $user_link = new ExternalUserRepository($service_id, $external_id, $user_id); - $this->em->persist($user_link); - } else { - $user_link->setUserId($user_id); - } - - $this->em->flush(); - return $user_link; - - } - - public function loginFromServiceWithToken($service_id, $external_id, $email, $username, $fullname, $picture) - { - $user = $this->getUserFromExternalRepository($service_id, $external_id); - - if (!$user) { - //Subscribe user - - //Find allowed username / email - $counter = 1; - $original_username = $username; - $ok = false; - $mailUsedError = false; - do { - $res = $this->getAvaibleMailPseudo($email, $username); - if ($res !== true) { - if (in_array(-1, $res)) { - //Mail used - $mailUsedError = true; - break; - } - if (in_array(-2, $res)) { - //Username used - $username = $original_username . $counter; - }else{ - $ok = true; - } - }else{ - $ok = true; - } - $counter++; - } while (!$ok && $counter < 1000); - if($mailUsedError){ - return false; - } - - $user = new \Twake\Users\Entity\User(); - $user->setSalt(bin2hex(random_bytes(40))); - $encoder = $this->encoder; - $user->setPassword($encoder->encodePassword(bin2hex(random_bytes(40)), $user->getSalt())); - $user->setUsername($username); - $user->setMailVerified(true); - $user->setEmail($email); - $user->setLanguage("en"); - $user->setPhone(""); - $user->setIdentityProvider($service_id); - - $this->em->persist($user); - $this->em->flush(); - - $this->setUserFromExternalRepository($service_id, $external_id, $user->getId()); - - $this->workspace_members_service->autoAddMemberByNewMail($email, $user->getId()); - - } - - $user->setFirstName(@explode(" ", $fullname)[0] ?: ""); - $user->setLastName(@explode(" ", $fullname)[1] ?: ""); - - if (($picture && (!$user->getThumbnail() || $user->getThumbnail()->getPublicLink() != $picture)) || ($user->getThumbnail() && !$picture)) { - if ($user->getThumbnail()) { - $this->em->remove($user->getThumbnail()); - } - if($picture){ - $thumbnail = new File(); - $thumbnail->setPublicLink($picture); - $user->setThumbnail($thumbnail); - $user->setPicture($thumbnail->getPublicURL(2)); - $this->em->persist($thumbnail); - }else{ - $user->setThumbnail(null); - $user->setPicture(""); - } - } - - $this->em->persist($user); - $this->em->flush(); - - return $this->loginWithUsernameOnlyWithToken($user->getusernameCanonical()); - } - - public function loginWithIdOnlyWithToken($userId, Response $response = null) - { - - $userRepository = $this->em->getRepository("Twake\Users:User"); - $user = $userRepository->findOneBy(Array("id" => $userId)); - - if ($user == null) { - return false; - } - - if ($user->getBanned()) { - return false; - } - - $token = bin2hex(random_bytes(64)); - - $user->setTokenLogin( - [ - "expiration" => date("U") + 120, - "token" => $token - ] - ); - - $this->em->persist($user); - $this->em->flush(); - - return ["token" => $token, "username" => $user->getEmail()]; - - } - - public function loginWithUsernameOnlyWithToken($usernameOrMail, Response $response = null) - { - - $usernameOrMail = trim(strtolower($usernameOrMail)); - - $userRepository = $this->em->getRepository("Twake\Users:User"); - $user = $userRepository->findOneBy(Array("usernamecanonical" => $this->string_cleaner->simplifyUsername($usernameOrMail))); - if ($user == null) { - $user = $userRepository->findOneBy(Array("emailcanonical" => $this->string_cleaner->simplifyMail($usernameOrMail))); - } - - if ($user == null) { - return false; - } - - if ($user->getBanned()) { - return false; - } - - $token = bin2hex(random_bytes(64)); - - $user->setTokenLogin( - [ - "expiration" => date("U") + 120, - "token" => $token - ] - ); - - $this->em->persist($user); - $this->em->flush(); - - return ["token" => $token, "username" => $user->getEmail()]; - - } - - public function login($usernameOrMail, $passwordOrToken, $rememberMe = false, $request = null, $response = null) - { - - $usernameOrMail = trim(strtolower($usernameOrMail)); - - $userRepository = $this->em->getRepository("Twake\Users:User"); - - $user = $userRepository->findOneBy(Array("usernamecanonical" => $this->string_cleaner->simplifyUsername($usernameOrMail))); - - if ($user == null) { - $user = $userRepository->findOneBy(Array("emailcanonical" => $this->string_cleaner->simplifyMail($usernameOrMail))); - } - - if ($user == null) { - return false; - } - - $tokenLogin = $user->getTokenLogin(); - - if(isset($tokenLogin["expiration"]) && $tokenLogin["expiration"] > date("U")){ - if(isset($tokenLogin["token"]) && $tokenLogin["token"] == $passwordOrToken){ - $this->app->getServices()->get("app.session_handler")->setUser($user); - return $user; - } - } - - $encoder = $this->encoder; - $passwordValid = $encoder->isPasswordValid($user->getPassword(), $passwordOrToken, $user->getSalt()); - - if ($passwordValid && !$user->getBanned() && $user->getMailVerifiedExtended()) { - - $this->app->getServices()->get("app.session_handler")->setUser($user); - return $user; - - } - - return false; - - } - - public function generateJWT($user){ - - $key = $this->app->getContainer()->getParameter("jwt.secret"); - - $expiration = date("U") + $this->app->getContainer()->getParameter("jwt.expiration"); - $payload = [ - "exp" => $expiration, - "type" => "access", - "iat" => intval(date("U")) - 60*10, - "nbf" => intval(date("U")) - 60*10, - "sub" => $user->getId(), - "email" => $user->getEmail(), - "provider_id" => $user ? $user->getIdentityProviderId() : null, - "track" => $user ? $user->getTrack() : true - ]; - $jwt = JWT::encode($payload, $key); - - $refreshExpiration = date("U") + $this->app->getContainer()->getParameter("jwt.refresh_expiration"); - $payload = [ - "exp" => $refreshExpiration, - "type" => "refresh", - "iat" => intval(date("U")) - 60*10, - "nbf" => intval(date("U")) - 60*10, - "sub" => $user->getId(), - "provider_id" => $user ? $user->getIdentityProviderId() : null, - "track" => $user ? $user->getTrack() : true - ]; - $jwt_refresh = JWT::encode($payload, $key); - - return [ - "time" => date("U"), - "expiration" => $expiration, - "refresh_expiration" => $refreshExpiration, - "value" => $jwt, - "refresh" => $jwt_refresh, - "type" => "Bearer" - ]; - - } - - public function logout(Request $request) - { - $response = new Response(); - $response->clearCookie('REMEMBERME'); - $response->sendHeaders(); - - $this->app->getServices()->get("app.session_handler")->destroySession($request); - - return true; - } - - public function ban($userId) - { - $userRepository = $this->em->getRepository("Twake\Users:User"); - $user = $userRepository->find($userId); - $user->setBanned(true); - $this->em->persist($user); - $this->em->flush(); - } - - public function unban($userId) - { - $userRepository = $this->em->getRepository("Twake\Users:User"); - $user = $userRepository->find($userId); - $user->setBanned(false); - $this->em->persist($user); - $this->em->flush(); - } - - public function requestNewPassword($mail) - { - - $mail = $this->string_cleaner->simplifyMail($mail); - - $userRepository = $this->em->getRepository("Twake\Users:User"); - /* @var \Twake\Users\Entity\User $user */ - $user = $userRepository->findOneBy(Array("emailcanonical" => $mail)); - if ($user != null) { - $verificationNumberMail = new VerificationNumberMail($mail); - - $code = $verificationNumberMail->getCode(); - - if (!defined("TESTENV")) { - error_log("recover code: " . $code); - } - - $this->twake_mailer->send($mail, "requestPassword", Array( - "_language" => $user ? $user->getLanguage() : "en", - "code" => $code, - "username" => $user->getUsername() - )); - - $this->em->persist($verificationNumberMail); - $this->em->flush(); - return $verificationNumberMail->getToken(); - } - - return false; - } - - public function checkNumberForNewPasswordRequest($token, $code) - { - $verificationRepository = $this->em->getRepository("Twake\Users:VerificationNumberMail"); - $ticket = $verificationRepository->findOneBy(Array("token" => $token)); - - if ($ticket != null) { - return $ticket->verifyCode($code); - } - - return false; - } - - public function setNewPasswordAfterNewPasswordRequest($token, $code, $password) - { - - $verificationRepository = $this->em->getRepository("Twake\Users:VerificationNumberMail"); - $userRepository = $this->em->getRepository("Twake\Users:User"); - $ticket = $verificationRepository->findOneBy(Array("token" => $token)); - $encoder = $this->encoder; - - if ($ticket != null) { - if ($ticket->verifyCode($code)) { - $user = $userRepository->findOneBy(Array("emailcanonical" => $ticket->getMail())); - if ($user != null) { - - $user->setPassword($encoder->encodePassword($password, $user->getSalt())); - $user->setMailVerified(true); - - $this->em->remove($ticket); - $this->em->persist($user); - $this->em->flush(); - - return true; - } - } - } - - return false; - } - - /** - * @param $mail - * @param $pseudo - * @return [-1, -2] | true (-1 is bad mail, -2 is bad username) - */ - public function getAvaibleMailPseudo($mail, $pseudo) - { - $mail = $this->string_cleaner->simplifyMail($mail); - $pseudo = $this->string_cleaner->simplifyUsername($pseudo); - $retour = Array(); - - if (!$this->string_cleaner->verifyMail($mail)) { - $retour[] = -1; - } else { - - if(in_array($pseudo, ["all", "here", "null", "undefined"]) || strlen($pseudo) <= 4){ - $retour[] = -2; - } - - //Check user doesn't exists - $userRepository = $this->em->getRepository("Twake\Users:User"); - $user = $userRepository->findOneBy(Array("emailcanonical" => $mail)); - //Check mail doesn't exists - $mailsRepository = $this->em->getRepository("Twake\Users:Mail"); - $mailExists = $mailsRepository->findOneBy(Array("mail" => $mail)); - - if (($user != null && $user->getMailVerifiedExtended($mail, $pseudo)) || $mailExists != null) { - $retour[] = -1; - } - - //Check pseudo doesn't exists - $userRepository = $this->em->getRepository("Twake\Users:User"); - $user = $userRepository->findOneBy(Array("usernamecanonical" => $pseudo)); - if ($user != null && $user->getMailVerifiedExtended($mail, $pseudo)) { - $retour[] = -2; - } - } - - if (count($retour) <= 0) { - return true; - } - return $retour; - } - - public function subscribeMail($mail, $pseudo, $password, $name, $firstname, $phone, $language, $newsletter = false, $sendEmail = true) - { - - $pseudo = $this->string_cleaner->simplifyUsername($pseudo); - - //Check pseudo doesn't exists - $userRepository = $this->em->getRepository("Twake\Users:User"); - $user = $userRepository->findOneBy(Array("usernamecanonical" => $pseudo)); - if ($user != null && $user->getMailVerifiedExtended($mail, $pseudo)) { - return ["error" => "usernamealreadytaken"]; - } - - $mail = $this->string_cleaner->simplifyMail($mail); - - if (!$this->string_cleaner->verifyMail($mail)) { - return ["error" => "mailalreadytaken"]; - } - - //Check mail doesn't exists - $userRepository = $this->em->getRepository("Twake\Users:User"); - $user = $userRepository->findOneBy(Array("emailcanonical" => $mail)); - if ($user != null && $user->getMailVerifiedExtended($mail, $pseudo)) { - return ["error" => "mailalreadytaken"]; - } - $mailsRepository = $this->em->getRepository("Twake\Users:Mail"); - $mailExists = $mailsRepository->findOneBy(Array("mail" => $mail)); - if ($mailExists != null) { - return ["error" => "mailalreadytaken"]; - } - - $complete_existing_user = null; - if ($user && !$user->getMailVerifiedExtended($mail, $pseudo) && $user->getisNew()) { //This user never verified his email, so we remove it. - if (strlen($user->getMailVerificationOverride()) > 2) { - $complete_existing_user = $user; - } else { - $this->em->remove($user); - $this->em->flush(); - } - } - - $auto_validate_mail = $this->app->getContainer()->getParameter("defaults.auth.internal.disable_email_verification"); - - $verificationNumberMail = new VerificationNumberMail($mail); - $code = $verificationNumberMail->getCode(); - $this->em->persist($verificationNumberMail); - - if(!$auto_validate_mail){ - - $magic_link = "/login?verifyMail&m=" . $mail . "&c=" . $code . "&token=" . $verificationNumberMail->getToken(); - - if (!defined("TESTENV")) { - error_log("sign in code: " . $magic_link); - } - - if ($sendEmail) { - $this->twake_mailer->send($mail, "subscribeMail", Array("_language" => $user ? $user->getLanguage() : "en", "code" => $code, "magic_link" => $magic_link)); - } - - } - - //Create the temporary user - $user = new \Twake\Users\Entity\User(); - $user->setSalt(bin2hex(random_bytes(40))); - $encoder = $this->encoder; - $user->setPassword($encoder->encodePassword($password, $user->getSalt())); - if (!$complete_existing_user) { - $user->setUsername($pseudo); - $user->setEmail($mail); - } else { - $user->setUsername("to_replace/" . $pseudo); - $user->setEmail("to_replace/" . $mail); - } - $user->setFirstName($firstname); - $user->setLastName($name); - $user->setPhone($phone); - $user->setLanguage($language ? $language : "en"); - $this->em->persist($user); - - $this->em->flush(); - - if ($sendEmail) { - try { - $contact_list_subscribe = $this->app->getContainer()->getParameter("mail.mailjet.contact_list_subscribe"); - if($contact_list_subscribe){ - $data = Array( - "Email" => $mail, - "Properties" => Array( - "first_name" => $firstname, - "last_name" => $name, - "language" => $language, - ), - "Action" => "addforce" - ); - $this->restClient->post($contact_list_subscribe["url"], json_encode($data), array(CURLOPT_CONNECTTIMEOUT => 60, CURLOPT_USERPWD => $contact_list_subscribe["token"], CURLOPT_HTTPHEADER => ['Content-Type: application/json'])); - } - } catch (\Exception $exception) { - error_log($exception->getMessage()); - } - } - if ($newsletter) { - try { - $contact_list_newsletter = $this->app->getContainer()->getParameter("mail.mailjet.contact_list_newsletter"); - if($contact_list_newsletter){ - $data = Array( - "Email" => $mail, - "Properties" => Array( - "first_name" => $firstname, - "last_name" => $name, - "language" => $language, - ), - "Action" => "addforce" - ); - $this->restClient->post($contact_list_newsletter["url"], json_encode($data), array(CURLOPT_CONNECTTIMEOUT => 60, CURLOPT_USERPWD => $contact_list_newsletter["token"], CURLOPT_HTTPHEADER => ['Content-Type: application/json'])); - } - } catch (\Exception $exception) { - error_log($exception->getMessage()); - } - } - - if($auto_validate_mail){ - $this->verifyMail($mail, $verificationNumberMail->getToken(), $code, true); - } - - return $verificationNumberMail->getToken(); - } - - public function verifyMail($mail, $token, $code, $force = false, $response = null, $login = true) - { - - $mail = trim(strtolower($mail)); - - $verificationRepository = $this->em->getRepository("Twake\Users:VerificationNumberMail"); - $ticket = $verificationRepository->findOneBy(Array("token" => $token)); - if (($ticket != null && $ticket->verifyCode($code) && $ticket->getMail($mail)) || $force) { - - if ($ticket) { - $ticket->setVerified(true); - $this->em->persist($ticket); - $this->em->flush(); - } - - $userRepository = $this->em->getRepository("Twake\Users:User"); - $user = $userRepository->findOneBy(Array("emailcanonical" => $mail)); - if ($user) { - - $user_to_replace = $userRepository->findOneBy(Array("emailcanonical" => "to_replace/" . $mail)); - if ($user_to_replace) { - - $username = explode("/", $user_to_replace->getUsername()); - $username = $username[1]; - - $user->setUsername($username); - - $user->setSalt($user_to_replace->getSalt()); - $user->setPassword($user_to_replace->getPassword()); - - $user->setFirstName($user_to_replace->getFirstName()); - $user->setLastName($user_to_replace->getLastName()); - $user->setPhone($user_to_replace->getPhone()); - - $this->em->remove($user_to_replace); - $this->em->flush(); - - } - - $user->setMailVerified(true); - $this->em->persist($user); - - $mailObj = new Mail(); - $mailObj->setMail($user->getEmail()); - $mailObj->setUserId($user->getId()); - - $this->em->persist($mailObj); - - $this->em->flush(); - - $this->workspace_members_service->autoAddMemberByNewMail($mail, $user->getId()); - - - // User auto log in - if($login) $this->app->getServices()->get("app.session_handler")->setUser($user); - - } - - return true; - } - return false; - } - - public function createCompanyUser($mail, $fullname, $password, $language, $workspace_id, $current_user_id) - { - - $pseudo = explode("@", $mail)[0] . "_" . date("U"); - $firstname = explode(" ", $fullname)[0]; - $lastname = explode(" ", $fullname . " ")[1]; - $override_key = $workspace_id . "_" . $current_user_id; - - $userRepository = $this->em->getRepository("Twake\Users:User"); - $user = $userRepository->findOneBy(Array("emailcanonical" => $mail)); - if ($user != null) { - if ($user->getMailVerified() || $user->getMailVerificationOverride() != $override_key) { - return ["error" => "mailalreadytaken"]; - } else if (!$user->getMailVerified() && $user->getMailVerificationOverride() == $override_key) { - - $user->setSalt(bin2hex(random_bytes(40))); - $encoder = $this->encoder; - $user->setPassword($encoder->encodePassword($password, $user->getSalt())); - $user->setUsername($pseudo); - - $this->em->persist($user); - $this->em->flush(); - - $this->verifyMail($mail, "", "", true); - - $user->setMailVerified(false); - $this->em->persist($user); - $this->em->flush(); - - return true; - - } else { - return ["error" => "mailalreadytaken"]; - } - } - $mailsRepository = $this->em->getRepository("Twake\Users:Mail"); - $mailExists = $mailsRepository->findOneBy(Array("mail" => $mail)); - if ($mailExists != null) { - return ["error" => "mailalreadytaken"]; - } - $userRepository = $this->em->getRepository("Twake\Users:User"); - $user = $userRepository->findOneBy(Array("usernamecanonical" => $pseudo)); - if ($user != null && $user->getMailVerified()) { - return ["error" => "usernamealreadytaken"]; - } - - $user = new \Twake\Users\Entity\User(); - $user->setSalt(bin2hex(random_bytes(40))); - $encoder = $this->encoder; - $user->setPassword($encoder->encodePassword($password, $user->getSalt())); - $user->setUsername($pseudo); - $user->setEmail($mail); - $user->setFirstName($firstname); - $user->setLastName($lastname); - $user->setPhone(""); - $user->setLanguage($language ? $language : "en"); - $user->setMailVerificationOverride($override_key); - $this->em->persist($user); - $this->em->flush(); - - $this->verifyMail($mail, "", "", true, null, false); - - $user->setMailVerified(false); - $this->em->persist($user); - $this->em->flush(); - - return true; - - } - - public function checkPassword($userId, $password) - { - $userRepository = $this->em->getRepository("Twake\Users:User"); - - $user = $userRepository->find($userId); - - if ($user == null) { - return false; - } - - $encoder = $this->encoder; - $passwordValid = $encoder->isPasswordValid($user->getPassword(), $password, $user->getSalt()); - - $res = false; - if ($passwordValid) { - $res = true; - } - return $res; - } - - public function addDevice($userId, $type, $value, $version = "?") - { - $devicesRepository = $this->em->getRepository("Twake\Users:Device"); - - $devices = $devicesRepository->findBy(Array("value" => $value)); - $devices = array_merge($devices, $devicesRepository->findBy(Array("user_id" => $userId))); - foreach($devices as $device){ - $this->em->remove($device); - } - - $newDevice = new Device($userId, $type, $value, $version); - $this->em->persist($newDevice); - $this->em->flush(); - - return true; - - } - - public function removeDevice($userId, $type, $value) - { - $devicesRepository = $this->em->getRepository("Twake\Users:Device"); - $devices = $devicesRepository->findBy(Array("user_id" => $userId)); - foreach($devices as $device){ - if($device->getValue() === $value){ - $this->em->remove($device); - } - } - - return true; - } - - public function getSecondaryMails($userId) - { - - $mailRepository = $this->em->getRepository("Twake\Users:Mail"); - $userRepository = $this->em->getRepository("Twake\Users:User"); - $user = $userRepository->find($userId); - - return $mailRepository->findBy(Array("user_id" => $user)); - - } - - public function addNewMail($userId, $mail) - { - - $mail = $this->string_cleaner->simplifyMail($mail); - - $userRepository = $this->em->getRepository("Twake\Users:User"); - $mailRepository = $this->em->getRepository("Twake\Users:Mail"); - $user = $userRepository->find($userId); - - $userWithThisMailAsMainMail = $userRepository->findOneBy(Array("emailcanonical" => $mail)); - - $res = false; - - if ($user != null && $userWithThisMailAsMainMail == null) { - $mailExists = $mailRepository->findOneBy(Array("mail" => $mail)); - - if ($mailExists == null) { - - $verificationNumberMail = new VerificationNumberMail($mail); - - $code = $verificationNumberMail->getCode(); - - $this->twake_mailer->send($mail, "addMail", - Array("_language" => $user ? $user->getLanguage() : "en", "code" => $code, "username" => $user->getUsername())); - - $this->em->persist($verificationNumberMail); - $this->em->flush(); - $res = $verificationNumberMail->getToken(); - - } - - } - - return $res; - } - - public function removeSecondaryMail($userId, $mailId) - { - - - $userRepository = $this->em->getRepository("Twake\Users:User"); - $mailRepository = $this->em->getRepository("Twake\Users:Mail"); - $user = $userRepository->find($userId); - - $res = false; - - if ($user != null) { - $mail = $mailRepository->findOneBy(Array("id" => $mailId)); - if ($mail && $mail->getUserId() == $userId) { - $this->em->remove($mail); - $this->em->flush(); - $res = true; - } - - } - - return $res; - } - - public function checkNumberForAddNewMail($userId, $token, $code) - { - - $verificationRepository = $this->em->getRepository("Twake\Users:VerificationNumberMail"); - $userRepository = $this->em->getRepository("Twake\Users:User"); - $mailRepository = $this->em->getRepository("Twake\Users:Mail"); - $ticket = $verificationRepository->findOneBy(Array("token" => $token)); - $user = $userRepository->find($userId); - - if ($ticket != null && $user != null) { - if ($ticket->verifyCode($code)) { - $userWithMail = $userRepository->findOneBy(Array("emailcanonical" => $ticket->getMail())); - if ($userWithMail == null || $userWithMail->getId() != $userId) { - $mailExists = $mailRepository->findOneBy(Array("mail" => $ticket->getMail())); - - if ($mailExists == null) { - $mail = new Mail(); - $mail->setMail($ticket->getMail()); - $mail->setUserId($user->getId()); - - $this->em->remove($ticket); - $this->em->persist($mail); - $this->em->flush(); - - $this->workspace_members_service->autoAddMemberByNewMail($ticket->getMail(), $user->getId()); - - return $mail->getId(); - - } - } - } - } - - return false; - } - - public function changePassword($userId, $oldPassword, $password) - { - - if (!$password) { - return false; - } - - if (!$this->string_cleaner->verifyPassword($password)) { - return false; - } - - $userRepository = $this->em->getRepository("Twake\Users:User"); - $user = $userRepository->find($userId); - $encoder = $this->encoder; - if ($user != null) { - - $passwordValid = $encoder->isPasswordValid($user->getPassword(), $oldPassword, $user->getSalt()); - - if ($passwordValid) { - - $user->setPassword($encoder->encodePassword($password, $user->getSalt())); - - $this->em->persist($user); - $this->em->flush(); - - return true; - } - - } - - return false; - } - - public function changePseudo($userId, $pseudo) - { - - $pseudo = $this->string_cleaner->simplifyUsername($pseudo); - - if (!$pseudo) { - return false; - } - - $userRepository = $this->em->getRepository("Twake\Users:User"); - $user = $userRepository->find($userId); - - $otherUser = $userRepository->findOneBy(Array("usernamecanonical" => $pseudo)); - if ($otherUser != null && $otherUser->getId() != $userId) { - return false; - } - - if ($user != null) { - - $user->setUsername($pseudo); - - $this->em->persist($user); - $this->em->flush(); - - $datatopush = Array( - "type" => "USER", - "action" => "changeUser" - ); - $this->pusher->push($datatopush, "notifications/" . $user->getId()); - - return true; - - } - - return false; - } - - /** - * @param $userId - * @param $mail - * @return bool - */ - public function changeMainMail($userId, $mailId) - { - - - $userRepository = $this->em->getRepository("Twake\Users:User"); - $mailRepository = $this->em->getRepository("Twake\Users:Mail"); - - $user = $userRepository->find($userId); - - if ($user != null) { - $mailObj = $mailRepository->findOneBy(Array("id" => $mailId)); - - - if ($mailObj != null) { - - $user->setEmail($mailObj->getMail()); - - $this->em->persist($user); - $this->em->persist($mailObj); - $this->em->flush(); - - return true; - - } - - } - - return false; - } - - public function updateUserBasicData($userId, $firstName, $lastName, $thumbnail = null, $uploader = null) - { - $userRepository = $this->em->getRepository("Twake\Users:User"); - - $user = $userRepository->find($userId); - - if ($user != null) { - - $user->setFirstName($firstName); - $user->setLastName($lastName); - if ($thumbnail == 'false' || $thumbnail == 'null') { - $user->setThumbnail(null); - $user->setPicture(""); - } else if ($thumbnail != null && !is_string($thumbnail)) { - if ($user->getThumbnail()) { - if ($uploader) { - $uploader->removeFile($user->getThumbnail(), false); - } else { - $user->getThumbnail()->deleteFromDisk(); - } - $this->em->remove($user->getThumbnail()); - } - $user->setThumbnail($thumbnail); - $user->setPicture($thumbnail->getPublicURL(2)); - } - $this->em->persist($user); - $this->em->flush(); - - $datatopush = Array( - "type" => "USER", - "action" => "changeUser" - ); - $this->pusher->push($datatopush, "notifications/" . $user->getId()); - - return $user; - - } - - } - - public function setNotificationPreferences($userId, $notification) - { - $userRepository = $this->em->getRepository("Twake\Users:User"); - - $user = $userRepository->find($userId); - - if ($user != null) { - - $all_notification = $user->getNotificationPreference(); - - foreach ($notification as $key => $value) { - $all_notification[$key] = $value; - } - - $user->setNotificationPreference($all_notification); - $this->em->persist($user); - $this->em->flush(); - - } - } - - public function getNotificationPreferences($userId) - { - $userRepository = $this->em->getRepository("Twake\Users:User"); - - $user = $userRepository->find($userId); - - if ($user != null) { - return $user->getNotificationPreference(); - } - - return false; - - } - - public function setWorkspacesPreferences($userId, $preferences) - { - $userRepository = $this->em->getRepository("Twake\Users:User"); - $user = $userRepository->find($userId); - if ($user != null) { - $user->setWorkspacesPreference($preferences); - $this->em->persist($user); - $this->em->flush(); - } - } - - public function updateStatus($userId, $status) - { - $userRepository = $this->em->getRepository("Twake\Users:User"); - $user = $userRepository->find($userId); - if ($user != null) { - $user->setStatusIcon($status); - $this->em->persist($user); - $this->em->flush(); - } - } - - public function updateLanguage($userId, $language) - { - $userRepository = $this->em->getRepository("Twake\Users:User"); - - $user = $userRepository->find($userId); - - if ($user != null) { - - $user->setLanguage($language); - $this->em->persist($user); - $this->em->flush(); - - if ($userId) { - $datatopush = Array( - "type" => "LANGUAGE" - ); - $this->pusher->push($datatopush, "notifications/" . $userId); - } - - } - } - - public function setIsNew($value, $userId) - { - $userRepository = $this->em->getRepository("Twake\Users:User"); - $user = $userRepository->find($userId); - - if ($user != null) { - - $user->setisNew($value); - $this->em->persist($user); - $this->em->flush(); - - } - } - - public function updateNotificationPreferenceByWorkspace($workspaceId, $appNotif, $user) - { - /* @var \Twake\Users\Entity\User $user */ - $pref = $user->getNotificationPreference(); - - $pref["workspace"][$workspaceId . ""] = $appNotif; - - $user->setNotificationPreference($pref); - - $this->em->persist($user); - $this->em->flush(); - - return true; - } - - public function setTutorialStatus($userId, $status) - { - $userRepository = $this->em->getRepository("Twake\Users:User"); - $user = $userRepository->find($userId); - - if ($user != null) { - $user->setTutorialStatus($status); - $this->em->persist($user); - $this->em->flush(); - } - - return true; - } - - public function updateTimezone($user, $timezone = false) - { - if ($user && $timezone !== false) { - if ($user->getTimezone() != intval($timezone)) { - $user->setTimezone(intval($timezone) . ""); - $this->em->persist($user); - $this->em->flush(); - } - } - } - - public function removeUserByUsername($username) - { - $userRepository = $this->em->getRepository("Twake\Users:User"); - $user = $userRepository->findOneBy(Array("usernamecanonical" => $username)); - - if (!$user) { - return false; - } - - $this->removeLinkedToUserRows("Twake\Users:Device", $user, "user_id"); - $this->removeLinkedToUserRows("Twake\Users:Mail", $user, "user_id"); - - $this->removeLinkedToUserRows("Twake\Workspaces:WorkspaceUser", $user, "user"); - $this->removeLinkedToUserRows("Twake\Workspaces:GroupUser", $user, "user"); - $this->removeLinkedToUserRows("Twake\Workspaces:Workspace", $user, "user"); - - $this->em->remove($user); - $this->em->flush(); - - return true; - - } - - private function removeLinkedToUserRows($entity, $user, $col = "user") - { - $repo = $this->em->getRepository($entity); - $toRemove = $repo->findBy(Array($col => $user)); - foreach ($toRemove as $r) { - $this->em->remove($r); - } - } - - - -} diff --git a/twake/backend/core/src/Twake/Users/Services/UserProvider.php b/twake/backend/core/src/Twake/Users/Services/UserProvider.php deleted file mode 100755 index ae3c994a..00000000 --- a/twake/backend/core/src/Twake/Users/Services/UserProvider.php +++ /dev/null @@ -1,93 +0,0 @@ -<?php - -namespace Twake\Users\Services; - -use App\App; -use Doctrine\ORM\NoResultException; - -class UserProvider -{ - - private $repository; - - public function __construct(App $app) - { - $this->repository = $app->getServices()->get("app.twake_doctrine")->getRepository("Twake\Core:User"); - } - - public function loadUserByUsername($username) - { - - $q = $this->repository->createQueryBuilder('u') - ->select('u') - ->where('u.usernamecanonical = :username') - ->setParameter('username', $username) - ->getQuery(); - - try { - $user = $q->getSingleResult(); - } catch (NoResultException $e) { - $message = sprintf('Unable to find active admin identified by %s', $username); - throw new \Exception($message, 0, $e); - } - - if ($user) { - $user->setIdAsString(); - } - - return $user; - } - - - public function refreshUser($user) - { - - $class = get_class($user); - if (!$this->repository->supportsClass($user)) { - $message = sprintf('Unsupported class type : %s', $class); - throw new \Exception($message); - } - - if ($user->id_as_string_for_session_handler) { - $res = $this->repository->find($user->id_as_string_for_session_handler); - } else { - $res = $this->repository->find($user->getId() . ""); - } - - if (!$res || !gettype($res) || gettype($res) == "NULL") { - error_log("refresh pass" . gettype($res) . " - " . $user->id_as_string_for_session_handler); - error_log($user->getId()); - } - - return $res; - } - - - public function supportsClass($class) - { - return true; - } - - public function find($id) - { - $res = parent::find($id); - - if ($res) { - $res->setIdAsString(); - } - - return $res; - } - - public function findOneBy(Array $arr) - { - $res = parent::findOneBy($arr); - - if ($res) { - $res->setIdAsString(); - } - - return $res; - } - -} diff --git a/twake/backend/core/src/Twake/Users/Services/Users.php b/twake/backend/core/src/Twake/Users/Services/Users.php deleted file mode 100755 index b39788e6..00000000 --- a/twake/backend/core/src/Twake/Users/Services/Users.php +++ /dev/null @@ -1,281 +0,0 @@ -<?php - -namespace Twake\Users\Services; - -use App\App; - -/** - * This service is responsible for subscribtions, unsubscribtions, request for new password - */ -class Users -{ - - private $em; - private $list_users = Array("users" => Array(), "scroll_id" => ""); - - - public function __construct(App $app) - { - $this->em = $app->getServices()->get("app.twake_doctrine"); - $this->string_cleaner = $app->getServices()->get("app.string_cleaner"); - } - - public function search($options = Array(), $entity = false){ - $res = $this->searchWithES($options, $entity); - if(!isset($res["users"]) || count($res["users"]) === 0){ - $res = $this->searchWithDB($options, $entity); - } - return $res; - } - - public function searchWithDB($options = Array(), $entity = false) - { - $name = $options["name"]; - - $scope = $options["scope"] ?: "all"; - if($scope !== "group" || $scope !== "workspace") $scope = "group"; - - $usersArray = []; - $usersEntities = []; - - $offset = null; - $limit = 100; - $iteration = 0; - - while(count($usersArray) < 5 && $iteration < 10){ - $iteration++; - - $users = []; - if($scope == "workspace"){ - $workspace_id = $options["workspace_id"]; - - $repo = $this->em->getRepository("Twake\Workspaces:WorkspaceUser"); - $links = $repo->findBy(["workspace_id" => $workspace_id], null, $limit, $offset); - - foreach($links as $link){ - $users[] = $link->getUser($this->em); - $offset = $link->getUserId(); - } - - }elseif($scope == "group"){ - $group_id = $options["group_id"]; - - $repo = $this->em->getRepository("Twake\Workspaces:GroupUser"); - $links = $repo->findBy(["group" => $group_id], null, $limit, $offset); - - foreach($links as $link){ - $users[] = $link->getUser(); - $offset = $link->getUser()->getId(); - } - - } - - foreach($users as $user){ - if($user){ - - $match = false; - foreach($user->getAsArray() as $key => $value){ - if(in_array($key, ["username", "firstname", "lastname", "email"])){ - foreach(explode(" ", $name) as $word){ - if(strpos(strtolower($value), strtolower($word)) !== false){ - $match = true; - } - } - } - } - - if($match){ - $usersArray[] = [$user->getAsArray(), 0]; - $usersEntities[] = [$user, 0]; - } - } - } - - if(count($users) < $limit){ - break; - } - - } - - return ["users" => $entity ? $usersEntities : $usersArray, "scroll_id" => ""]; - - } - - public function searchWithES($options = Array(), $entity = false) - { - - $name = $options["name"]; - - $scope = $options["scope"] === "workspace" ? "workspace" : "group"; - $workspace_id = $options["workspace_id"]; - $group_id = $options["group_id"]; - - $should = Array(); - - if (isset($name)) { - $should[] = Array( - "bool" => Array( - "filter" => Array( - "regexp" => Array( - "firstname" => ".*" . $name . ".*" - ) - ) - ) - ); - - $should[] = Array( - "bool" => Array( - "filter" => Array( - "regexp" => Array( - "email" => $name . ".*" - ) - ) - ) - ); - - $should[] = Array( - "bool" => Array( - "filter" => Array( - "regexp" => Array( - "lastname" => ".*" . $name . ".*" - ) - ) - ) - ); - - $should[] = Array( - "bool" => Array( - "filter" => Array( - "regexp" => Array( - "username" => ".*" . $name . ".*" - ) - ) - ) - ); - } - - $match = Array( - "groups_id" => $group_id - ); - - $search_bool = Array( - "should" => $should, - "minimum_should_match" => 1 - ); - - if($match){ - $search_bool["filter"] = [ - "match" => $match - ]; - } - - $options = Array( - "repository" => "Twake\Users:User", - "index" => "users", - "size" => 10, - "query" => Array( - "bool" => Array( - "must" => Array( - "bool" => $search_bool - ) - ) - ), - "sort" => Array( - "creation_date" => Array( - "order" => "desc" - ) - ) - ); - - - // search in ES - $result = $this->em->es_search($options); - - array_slice($result["result"], 0, 5); - - $scroll_id = $result["scroll_id"]; - - if($scope === "all"){ - $userRepository = $this->em->getRepository("Twake\Users:User"); - $user = $userRepository->findOneBy(Array("usernamecanonical" => strtolower($name))); - - if ($user) { - $this->list_users["users"][] = Array($entity ? $user : $user->getAsArray(), 0); - } - } - - //on traite les données recu d'Elasticsearch - foreach ($result["result"] as $user) { - - if($scope == "workspace"){ - $repo = $this->em->getRepository("Twake\Workspaces:WorkspaceUser"); - $link = $repo->findOneBy(["workspace_id" => $workspace_id, "user_id" => $user[0]->getId()]); - if(!$link){ - continue; - } - } - - if($scope == "group"){ - $repo = $this->em->getRepository("Twake\Workspaces:GroupUser"); - $link = $repo->findOneBy(["group" => $group_id, "user" => $user[0]->getId()]); - if(!$link){ - continue; - } - } - - if($user[0]){ - $this->list_users["users"][] = Array($entity ? $user[0] : $user[0]->getAsArray(), $user[1][0]); - } - } - - $this->list_users["scroll_id"] = $scroll_id; - - return $this->list_users ?: null; - } - - public function completeUserWithCompanies($user, $requester = null) - { - if(is_string($requester)){ - return $user; - } - - $membersRepository = $this->em->getRepository("Twake\Workspaces:GroupUser"); - $companies = $membersRepository->findBy(Array("user" => $user["id"])); - $user["companies"] = []; - - foreach($companies as $companyMember){ - if($requester && !$membersRepository->findBy(Array("user" => $requester, "group" => $companyMember->getGroup())) ){ - continue; - } - $user["companies"][] = [ - "role" => $companyMember->getRole() === null ? "member" : $companyMember->getRole(), - "status" => "active", - "company" => [ - "id" => $companyMember->getGroup() - ] - ]; - } - - return $user; - } - - public function getById($id, $entity = false) - { - $userRepository = $this->em->getRepository("Twake\Users:User"); - $user = $userRepository->find($id); - if ($user) { - return $entity ? $user : $user->getAsArray(); - } - return false; - } - - public function getByEmail($email, $entity = false) - { - $userRepository = $this->em->getRepository("Twake\Users:User"); - $user = $userRepository->findOneBy(Array("emailcanonical" => $this->string_cleaner->simplifyMail($email))); - if ($user) { - return $entity ? $user : $user->getAsArray(); - } - return false; - } -} diff --git a/twake/backend/core/src/Twake/Workspaces/Bundle.php b/twake/backend/core/src/Twake/Workspaces/Bundle.php deleted file mode 100755 index c4d68f97..00000000 --- a/twake/backend/core/src/Twake/Workspaces/Bundle.php +++ /dev/null @@ -1,30 +0,0 @@ -<?php - -namespace Twake\Workspaces; - -require_once __DIR__ . "/Resources/Routing.php"; -require_once __DIR__ . "/Resources/Services.php"; - -use Twake\Workspaces\Resources\Routing; -use Twake\Workspaces\Resources\Services; -use Common\BaseBundle; - -class Bundle extends BaseBundle -{ - - protected $bundle_root = __DIR__; - protected $bundle_namespace = __NAMESPACE__; - protected $routes = []; - protected $services = []; - - public function init() - { - $routing = new Routing(); - $this->routes = $routing->getRoutes(); - $this->routing_prefix = $routing->getRoutesPrefix(); - $this->initRoutes(); - - $this->services = (new Services())->getServices(); - $this->initServices(); - } -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Workspaces/Controller/Group.php b/twake/backend/core/src/Twake/Workspaces/Controller/Group.php deleted file mode 100755 index e5784504..00000000 --- a/twake/backend/core/src/Twake/Workspaces/Controller/Group.php +++ /dev/null @@ -1,187 +0,0 @@ -<?php -/** - * Created by PhpStorm. - * User: yoanf - * Date: 24/04/2018 - * Time: 16:54 - */ - -namespace Twake\Workspaces\Controller; - -use Common\BaseController; -use Common\Http\Response; -use Common\Http\Request; - -class Group extends BaseController -{ - - - public function changeName(Request $request) - { - $response = Array("errors" => Array(), "data" => Array()); - - $groupId = $request->request->get("groupId"); - $name = $request->request->get("name"); - - $res = $this->get("app.groups")->changeData($groupId, $name, $this->getUser()->getId()); - - if (!$res) { - $response["errors"][] = "notallowed"; - } else { - $response["data"][] = true; - } - - return new Response($response); - } - - public function setLogo(Request $request) - { - - $data = Array( - "errors" => Array(), - "data" => Array() - ); - - $groupId = $request->request->get("groupId"); - - if (isset($_FILES["logo"])) { - error_log("logo "); - $thumbnail = $this->getUploader()->uploadFiles($this->getUser(), $_FILES["logo"], "grouplogo"); - $thumbnail = $thumbnail[0]; - - if (count($thumbnail["errors"]) > 0) { - $data["errors"][] = "badimage"; - } else { - - $group = $this->get("app.groups")->changeLogo($groupId, $thumbnail["file"]->getPublicURL(2), $this->getUser()->getId(), $this->getUploader()); - } - } else { - $group = $this->get("app.groups")->changeLogo($groupId, null, $this->getUser()->getId(), $this->getUploader()); - } - - if ($group) { - $data["data"] = $group->getAsArray(); - } - - return new Response($data); - - } - - public function getUploader() - { - $storagemanager = $this->get("driveupload.storemanager"); - if(!$provider){ - $provider = $storagemanager->getOneProvider(); - } - $configuration = $storagemanager->getProviderConfiguration($provider); - - if ($configuration["type"] === "S3") { - $uploader = $this->get("app.aws_uploader"); - }else if ($configuration["type"] === "openstack") { - $uploader =$this->get("app.openstack_uploader"); - }else{ - $uploader = $this->get("app.uploader"); - } - $uploader->configure($configuration); - return $uploader; - } - - public function getUsers(Request $request) - { - $response = Array("errors" => Array(), "data" => Array()); - - $groupId = $request->request->get("groupId"); - $limit = $request->request->get("limit"); - $offset = $request->request->get("offset"); - $onlyExterne = $request->request->getBoolean("onlyExterne"); - - $nb = $this->get("app.groups")->countUsersGroup($groupId); - $users = $this->get("app.groups")->getUsersGroup($groupId, $onlyExterne, $limit, $offset, $this->getUser()->getId()); - - if (!is_array($users)) { - $response["errors"][] = "notallowed"; - } else { - $list = Array(); - foreach ($users as $user) { - $temp = Array(); - $temp["user"] = $user["user"]->getAsArray(); - $temp["externe"] = $user["externe"]; - $temp["groupLevel"] = $user["level"]; - $temp["nbWorkspace"] = $user["nbWorkspace"]; - $list[] = $temp; - } - $response["data"] = Array("users" => $list); - $response["data"]["nbuser"] = max($nb, count($list)); - } - - return new Response($response); - } - - public function removeUser(Request $request) - { - $response = Array("errors" => Array(), "data" => Array()); - - $groupId = $request->request->get("groupId"); - $userId = $request->request->get("userId"); - - $users = $this->get("app.groups")->removeUserFromGroup($groupId, $userId, $this->getUser()->getId()); - - if (!$users) { - $response["errors"][] = "notallowed"; - } else { - $response["data"][] = "success"; - } - - return new Response($response); - } - - public function editUser(Request $request) - { - $response = Array("errors" => Array(), "data" => Array()); - - $groupId = $request->request->get("groupId"); - $userId = $request->request->get("userId"); - $externe = $request->request->getBoolean("editExterne"); - - $users = $this->get("app.groups")->editUserFromGroup($groupId, $userId, $externe, $this->getUser()->getId()); - - if (!$users) { - $response["errors"][] = "notallowed"; - } else { - $response["data"][] = "success"; - } - - return new Response($response); - } - - public function getWorkspaces(Request $request) - { - $response = Array( - "errors" => Array(), - "data" => Array() - ); - - $groupId = $request->request->get("groupId"); - - $workspaces = $this->get("app.groups")->getWorkspaces($groupId, $this->getUser()->getId()); - - foreach ($workspaces as $workspace) { - $is_deleted = $workspace->getIsDeleted(); - - if (!$is_deleted) { - $response["data"][] = Array( - "workspace" => $workspace->getAsArray($this->get("app.twake_doctrine")) - ); - } - } - - if (count($workspaces) == 0) { - $response["errors"][] = "empty list"; - } - - - return new Response($response); - } - - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Workspaces/Controller/GroupApps.php b/twake/backend/core/src/Twake/Workspaces/Controller/GroupApps.php deleted file mode 100755 index d87867c3..00000000 --- a/twake/backend/core/src/Twake/Workspaces/Controller/GroupApps.php +++ /dev/null @@ -1,117 +0,0 @@ -<?php -/** - * Created by PhpStorm. - * User: Elliot - * Date: 11/04/2018 - * Time: 13:36 - */ - -namespace Twake\Workspaces\Controller; - -use Common\BaseController; -use Common\Http\Response; -use Common\Http\Request; - - -class GroupApps extends BaseController -{ - /** - * Récupère les applications d'un group - */ - public function getApps(Request $request) - { - - $response = Array("errors" => Array(), "data" => Array()); - - $groupId = $request->request->get("group_id"); - - $apps = $this->get("app.group_apps")->getApps($groupId); - - if (!is_array($apps)) { - $response["errors"][] = "notallowed"; - } else { - $response["data"] = $apps; - } - - return new Response($response); - } - - public function setWorkspaceDefault(Request $request) - { - $response = Array("errors" => Array(), "data" => Array()); - - $groupId = $request->request->get("group_id"); - $appid = $request->request->get("app_id"); - $boolean = $request->request->getInt("state"); - - $res = $this->get("app.group_apps")->setWorkspaceDefault($groupId, $appid, $boolean, $this->getUser()->getId()); - - if (!$res) { - $response["errors"][] = "notallowed"; - } else { - $response["data"][] = true; - } - - return new Response($response); - } - - public function removeApplication(Request $request) - { - $response = Array("errors" => Array(), "data" => Array()); - - $groupId = $request->request->get("group_id"); - $appid = $request->request->get("app_id"); - - $res = $this->get("app.group_apps")->removeApplication($groupId, $appid, $this->getUser()->getId()); - - if (!$res) { - $response["errors"][] = "notallowed"; - } else { - $response["data"][] = true; - } - - return new Response($response); - } - - public function forceApplication(Request $request) - { - $response = Array("errors" => Array(), "data" => Array()); - - $groupId = $request->request->get("group_id"); - $appid = $request->request->get("app_id"); - - $res = $this->get("app.workspaces_apps")->forceApplication($groupId, $appid, $this->getUser()->getId()); - - if (!$res) { - $response["errors"][] = "notallowed"; - } else { - $response["data"][] = true; - } - - return new Response($response); - } - - /** - * Inscrit l'utilisation d'une application pour un groupe + pour un user - */ - public function useApp(Request $request) - { - - $response = Array("errors" => Array(), "data" => Array()); - - $groupId = $request->request->get("groupId"); - $workspaceId = $request->request->get("workspaceId"); - $appid = $request->request->get("appid"); - - $res = $this->get("app.group_apps")->useApp($groupId, $workspaceId, $this->getUser()->getId(), $appid); - - if (!$res) { - $response["errors"][] = "notallowed"; - } else { - $response["data"][] = "success"; - } - - return new Response($response); - } - -} diff --git a/twake/backend/core/src/Twake/Workspaces/Controller/GroupManager.php b/twake/backend/core/src/Twake/Workspaces/Controller/GroupManager.php deleted file mode 100755 index 60dfcc89..00000000 --- a/twake/backend/core/src/Twake/Workspaces/Controller/GroupManager.php +++ /dev/null @@ -1,147 +0,0 @@ -<?php -/** - * Created by PhpStorm. - * User: Elliot - * Date: 23/04/2018 - * Time: 10:57 - */ - -namespace Twake\Workspaces\Controller; - -use Common\BaseController; -use Common\Http\Response; -use Common\Http\Request; - - -class GroupManager extends BaseController -{ - /** - * Récupère les managers d'un group - */ - public function getManagers(Request $request) - { - - $response = Array("errors" => Array(), "data" => Array()); - - $groupId = $request->request->get("groupId"); - - $managers = $this->get("app.group_managers")->getManagers($groupId, $this->getUser()->getId()); - - if (!is_array($managers)) { - $response["errors"][] = "notallowed"; - } else { - $list = Array(); - foreach ($managers as $manager) { - $list[] = Array( - "user" => $manager["user"]->getAsArray(), - "level" => $manager["level"], - ); - } - - $response["data"] = Array( - "managers" => $list - ); - } - - return new Response($response); - } - - /** - * toggle status d'un utilisateur (manager ou non) - */ - public function toggleManager(Request $request) - { - $response = Array("errors" => Array(), "data" => Array()); - - $groupId = $request->request->get("groupId"); - $userId = $request->request->get("userId"); - $isManager = $request->request->get("isManager", null); - $result = $this->get("app.group_managers")->toggleManager($groupId, $userId, $isManager, $this->getUser()->getId()); - - - if (!$result) { - $response["errors"][] = "notallowed"; - } else { - $response["data"] = "success"; - } - - return new Response($response); - } - - - /** - * Ajoute un manager au groupe - */ - public function addManagers(Request $request) - { - $response = Array("errors" => Array(), "data" => Array()); - - $groupId = $request->request->get("groupId"); - $username = $request->request->get("username"); - - $username = str_replace(Array("@", " "), "", $username); - - $userRepository = $this->get("app.twake_doctrine")->getRepository("Twake\Users:User"); - $user = $userRepository->findOneBy(Array("usernamecanonical" => $username)); - - if (!$user) { - $response["errors"][] = "usernotfound"; - return new Response($response); - } - - $result = $this->get("app.group_managers")->addManager($groupId, $user->getId(), 1, false, $this->getUser()->getId()); - - - if (!$result) { - $response["errors"][] = "notallowed"; - } else { - $response["data"] = "success"; - } - - return new Response($response); - } - - /** - * Retire un managers d'un group - */ - public function removeManagers(Request $request) - { - $response = Array("errors" => Array(), "data" => Array()); - - $groupId = $request->request->get("groupId"); - $userId = $request->request->get("userId"); - - $result = $this->get("app.group_managers")->removeManager($groupId, $userId, $this->getUser()->getId()); - - if (!$result) { - $response["errors"][] = "notallowed"; - } else { - $response["data"] = "success"; - } - - return new Response($response); - } - - /** - * edite le managers d'un group - */ - public function editManagers(Request $request) - { - $response = Array("errors" => Array(), "data" => Array()); - - $groupId = $request->request->get("groupId"); - $userId = $request->request->get("userId"); - $level = $request->request->get("level"); - - $result = $this->get("app.group_managers")->changeLevel($groupId, $userId, $level, $this->getUser()->getId()); - - if (!$result) { - $response["errors"][] = "notallowed"; - } else { - $response["data"] = "success"; - } - - return new Response($response); - } - -} diff --git a/twake/backend/core/src/Twake/Workspaces/Controller/Workspace.php b/twake/backend/core/src/Twake/Workspaces/Controller/Workspace.php deleted file mode 100755 index 470732f2..00000000 --- a/twake/backend/core/src/Twake/Workspaces/Controller/Workspace.php +++ /dev/null @@ -1,440 +0,0 @@ -<?php -/** - * Created by PhpStorm. - * User: Romaric Mourgues - * Date: 19/01/2017 - * Time: 10:38 - */ - -namespace Twake\Workspaces\Controller; - -use Common\BaseController; -use Common\Http\Response; -use Common\Http\Request; - - -class Workspace extends BaseController -{ - /** - * Récupère les informations de base d'un workspace - */ - public function getAction(Request $request) - { - - $response = Array("errors" => Array(), "data" => Array()); - - $workspaceId = $request->request->get("workspaceId"); - - $ws = $this->get("app.workspaces")->get($workspaceId, $this->getUser()->getId()); - if (!$ws) { - $response["errors"][] = "notallowed"; - } else { - - $response["data"] = $ws->getAsArray($this->get("app.twake_doctrine")); - - $level = $this->get("app.workspace_levels")->getLevel($workspaceId, $this->getUser()->getId()); - $response["data"]["user_level"] = $level ? $level->getAsArray() : null; - - $levels = $this->get("app.workspace_levels")->getLevels($workspaceId, $this->getUser()->getId()); - $response["data"]["levels"] = Array(); - foreach ($levels as $level) { - $response["data"]["levels"][] = $level->getAsArray(); - } - - $groupRepository = $this->get("app.twake_doctrine")->getRepository("Twake\Workspaces:Group"); - $workspaceRepository = $this->get("app.twake_doctrine")->getRepository("Twake\Workspaces:Workspace"); - $groupUserRepository = $this->get("app.twake_doctrine")->getRepository("Twake\Workspaces:GroupUser"); - - $wp = $workspaceRepository->findOneBy(["id"=>$workspaceId]); - if ($wp->getGroup() != null) { - $group = $groupRepository->find($wp->getGroup()); - - $level = $this->get("app.group_managers")->getLevel($group, $this->getUser()->getId()); - - $privileges = $this->get("app.group_managers")->getPrivileges($level); - $response["data"]["group"]["level"] = $privileges; - - $response["data"]["apps"] = $this->get("app.group_apps")->getApps($group->getId()); - - $this->get("app.workspace_members")->updateCountersIfEmpty($workspaceId); - if($wp->getMemberCount() < 50){ - $response["data"]["members"] = $this->get("app.workspace_members")->getMembersAndPending($workspaceId, $this->getUser()->getId()); - }else{ - $response["data"]["members"] = []; - } - - $response["data"]["maxWorkspace"] = $limit; - } - } - return new Response($response); - } - - public function getPublicData(Request $request) - { - - $response = Array("errors" => Array(), "data" => Array()); - - $workspaceId = $request->request->get("workspace_id"); - $groupRepository = $this->get("app.twake_doctrine")->getRepository("Twake\Workspaces:Group"); - - $ws = $this->get("app.workspaces")->get($workspaceId); - if (!$ws) { - $response["errors"][] = "no_such_workspace"; - } else { - - $response["data"]["workspace_name"] = $ws->getName(); - - if ($ws->getGroup() != null) { - - $group = $groupRepository->findOneBy(["id" => $ws->getGroup()]); - - $response["data"]["group_name"] = $group->getAsArray()["name"]; - $response["data"]["group_logo"] = $group->getAsArray()["logo"]; - - } - } - return new Response($response); - - } - - /** - * Récupère les informations de base d'un groupe - */ - public function create(Request $request) - { - - $response = Array("errors" => Array(), "data" => Array()); - - $name = $request->request->get("name", ""); - - if (strlen($name) == 0) { - $name = "Untitled"; - } - - $groupId = $request->request->get("groupId", 0); - - if (!$groupId) { - $group_name = $request->request->get("group_name", ""); - $group_creation_data = $request->request->get("group_creation_data", ""); - - if (!is_array($group_creation_data)) { - $group_creation_data = Array(); - } - - //Auto create group - if (!$group_name) { - $group_name = $name; - } - - $uniquename = $this->get("app.string_cleaner")->simplify($group_name); - - $group = $this->get("app.groups")->create($this->getUser()->getId(), $group_name, $uniquename, null, $group_creation_data); - $groupId = $group->getId(); - - $this->get("administration.counter")->incrementCounter("total_groups", 1); - - } - - $ws = $this->get("app.workspaces")->create($name, $groupId, $this->getUser()->getId()); - - if (!$ws || is_string($ws)) { - $response["errors"][] = "notallowed"; - $response["errors"]["max"] = $ws; - } else { - - $ws_id = $ws->getId(); - - $channels = $request->request->get("channels", false); - if ($channels && is_array($channels)) { - foreach ($channels as $channel) { - error_log("TODO automatic channel creation"); - } - } - - $response["data"]["status"] = "success"; - //$response["data"]["workspace_id"] = $ws_id; - $response["data"]["workspace"] = $ws->getAsArray($this->get("app.twake_doctrine")); - - $this->get("administration.counter")->incrementCounter("total_workspaces", 1); - - } - - return new Response($response); - } - - /** - * Récupère les informations de base d'un groupe - */ - public function duplicate(Request $request) - { - - $response = Array("errors" => Array(), "data" => Array()); - - $original_workspace_id = $request->request->get("original_workspace_id", 0); - $name = $request->request->get("config_name", ""); - - $config = Array(); - - $config["users"] = $request->request->get("config_users", "me"); - - $config["calendars"] = $request->request->get("config_calendars", 1); - $config["streams"] = $request->request->get("config_streams", 1); - $config["drive_labels"] = $request->request->get("config_drive_labels", 1); - $config["boards"] = $request->request->get("config_boards", 1); - $config["rights"] = $request->request->get("config_rights", 1); - - $ws = $this->get("app.workspaces")->duplicate($original_workspace_id, $name, $config, $this->getUser()->getId()); - - if (!$ws || is_string($ws)) { - $response["errors"][] = "notallowed"; - $response["errors"]["max"] = $ws; - } else { - $ws_id = $ws->getId(); - $response["data"]["status"] = "success"; - $response["data"]["workspace_id"] = $ws_id; - } - - return new Response($response); - } - - public function delete(Request $request) - { - $data = Array( - "errors" => Array(), - "data" => Array() - ); - - if ($this->getUser() && !is_string($this->getUser())) { - $workspaceId = $request->request->get("workspaceId"); - $ok = $this->get("app.workspaces")->remove(0, $workspaceId); - if ($ok) { - $data["data"] = "success"; - } - } else { - $data["errors"][] = "unknown"; - } - - return new Response($data); - } - - /** - * Récupère les applications d'un workspace - */ - public function getApps(Request $request) - { - - $response = Array("errors" => Array(), "data" => Array()); - - $workspaceId = $request->request->get("workspace_id"); - - $ws = $this->get("app.workspaces")->get($workspaceId, $this->getUser()->getId()); - if (!$ws) { - $response["errors"][] = "notallowed"; - } else { - $apps = $this->get("app.group_apps")->getApps($ws["group"]["id"]); - $response["data"] = $apps; - } - - return new Response($response); - } - - /** - * desactive une application d'un workspace - */ - public function disableApp(Request $request) - { - - $response = Array("errors" => Array(), "data" => Array()); - - $workspaceId = $request->request->get("workspace_id"); - $appid = $request->request->get("app_id"); - - $res = $this->get("app.workspaces_apps")->disableApp($workspaceId, $appid); - if (!$res) { - $response["errors"][] = "notauthorized"; - } else { - $response["data"][] = "success"; - } - - return new Response($response); - } - - /** - * Active une application d'un workspace - */ - public function enableApp(Request $request) - { - - $response = Array("errors" => Array(), "data" => Array()); - - $workspaceId = $request->request->get("workspace_id"); - $appid = $request->request->get("app_id"); - - $res = $this->get("app.workspaces_apps")->enableApp($workspaceId, $appid); - if (!$res) { - $response["errors"][] = "notauthorized"; - } else { - $response["data"][] = "success"; - } - - return new Response($response); - } - - public function getWorkspaceByName(Request $request) - { - $response = Array("errors" => Array(), "data" => Array()); - - $name = $request->request->get("name"); - - $res = $this->get("app.workspaces")->getWorkspaceByName($name); - if (!$res) { - $response["errors"][] = "notallowed"; - } else { - $response["data"]["workspace"] = $res; - } - - - return new Response($response); - } - - /** - * Archiver archiver un workspace - */ - public function archiveWorkspace(Request $request) - { - $response = Array( - "errors" => Array(), - "data" => Array() - ); - - $workspaceId = $request->request->get("workspaceId"); - $groupId = $request->request->get("groupId"); - - $res = $this->get("app.workspaces")->archive($groupId, $workspaceId, $this->getUser()->getId()); - - if ($res == true) { - $response["data"] = "success"; - } else { - $response["errors"] = "impossible to archive"; - } - - return new Response($response); - } - - /** - * Désarchiver archiver un workspace - */ - public function unarchiveWorkspace(Request $request) - { - $response = Array( - "errors" => Array(), - "data" => Array() - ); - - $workspaceId = $request->request->get("workspaceId"); - $groupId = $request->request->get("groupId"); - - $res = $this->get("app.workspaces")->unarchive($groupId, $workspaceId, $this->getUser()->getId()); - - if ($res == true) { - $response["data"] = "success"; - } else { - $response["errors"] = "impossible to archive"; - } - - return new Response($response); - } - - /** - * Cacher ou non un workspace - */ - public function hideOrUnhideWorkspace(Request $request) - { - $response = Array( - "errors" => Array(), - "data" => Array() - ); - - $workspaceId = $request->request->get("workspaceId"); - $wantedValue = $request->request->get("wantedValue"); - - $res = $this->get("app.workspaces")->hideOrUnhideWorkspace($workspaceId, $this->getUser()->getId(), $wantedValue); - - if ($res == true) { - $response["data"] = "success"; - } else { - $response["errors"] = "impossible to hide a workspace"; - } - - return new Response($response); - } - - /** - * Mettre un workspace en favori - */ - public function favoriteOrUnfavoriteWorkspace(Request $request) - { - $response = Array( - "errors" => Array(), - "data" => Array() - ); - - $workspaceId = $request->request->get("workspaceId"); - - $res = $this->get("app.workspaces")->favoriteOrUnfavoriteWorkspace($workspaceId, $this->getUser()->getId()); - - if ($res["answer"]) { - $response["data"] = $res["isfavorite"]; - } else { - $response["errors"] = "impossible to put as favorite a workspace"; - } - - return new Response($response); - } - - /** - * Recevoir ou non les notifications d'un workspace - */ - public function haveNotificationsOrNotWorkspace(Request $request) - { - $response = Array( - "errors" => Array(), - "data" => Array() - ); - - $workspaceId = $request->request->get("workspaceId"); - $wantedValue = $request->request->get("wantedValue"); - - $res = $this->get("app.workspaces")->haveNotificationsOrNotWorkspace($workspaceId, $this->getUser()->getId(), $wantedValue); - - if ($res == true) { - $response["data"] = "success"; - } else { - $response["errors"] = "impossible to receive notifications"; - } - - return new Response($response); - } - - - public function setIsNew(Request $request) - { - $response = Array( - "errors" => Array(), - "data" => Array() - ); - - $workspaceId = $request->request->get("workspaceId"); - $value = $request->request->get("value"); - - $res = $this->get("app.workspaces")->setIsNew($value, $workspaceId, $this->getUser()->getId()); - if ($res) { - $response["data"] = "success"; - } else { - $response["data"] = "Set has not been done"; - } - return new Response($response); - } - - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Workspaces/Controller/WorkspaceData.php b/twake/backend/core/src/Twake/Workspaces/Controller/WorkspaceData.php deleted file mode 100755 index 37305ae0..00000000 --- a/twake/backend/core/src/Twake/Workspaces/Controller/WorkspaceData.php +++ /dev/null @@ -1,137 +0,0 @@ -<?php -/** - * Created by PhpStorm. - * User: Romaric Mourgues - * Date: 19/01/2017 - * Time: 10:38 - */ - -namespace Twake\Workspaces\Controller; - -use Common\BaseController; -use Common\Http\Response; -use Common\Http\Request; - - -class WorkspaceData extends BaseController -{ - - public function setName(Request $request) - { - - $response = Array( - "errors" => Array(), - "data" => Array() - ); - - $workspaceId = $request->request->get("workspaceId"); - $name = $request->request->get("name", null); - - $ok = false; - if ($name != null) { - $ok = $this->get("app.workspaces")->changeName($workspaceId, $name, $this->getUser()->getId()); - } - - if (!$ok) { - $response["errors"][] = "error"; - } else { - $response["data"] = "success"; - } - - return new Response($response); - - } - - public function setLogo(Request $request) - { - - $data = Array( - "errors" => Array(), - "data" => Array() - ); - - $workspaceId = $request->request->get("workspaceId"); - - if (!$this->get("app.workspace_levels")->can($workspaceId, $this->getUser()->getId(), "workspace:write")) { - $data["errors"][] = "notallowed"; - } else { - - if (isset($_FILES["logo"])) { - $thumbnail = $this->getUploader()->uploadFiles($this->getUser(), $_FILES["logo"], "wslogo"); - $thumbnail = $thumbnail[0]; - - if (count($thumbnail["errors"]) > 0) { - $data["errors"][] = "badimage"; - } else { - - $workspace = $this->get("app.workspaces")->changeLogo($workspaceId, $thumbnail["file"]->getPublicURL(2), $this->getUser()->getId(), $this->getUploader()); - } - } else { - $workspace = $this->get("app.workspaces")->changeLogo($workspaceId, null, $this->getUser()->getId(), $this->getUploader()); - } - - } - - if ($workspace) { - $data["data"] = $workspace->getAsArray($this->get("app.twake_doctrine")); - } - - return new Response($data); - - } - - public function getUploader() - { - $storagemanager = $this->get("driveupload.storemanager"); - if(!$provider){ - $provider = $storagemanager->getOneProvider(); - } - $configuration = $storagemanager->getProviderConfiguration($provider); - - if ($configuration["type"] === "S3") { - $uploader = $this->get("app.aws_uploader"); - }else if ($configuration["type"] === "openstack") { - $uploader =$this->get("app.openstack_uploader"); - }else{ - $uploader = $this->get("app.uploader"); - } - $uploader->configure($configuration); - return $uploader; - } - - public function setWallpaper(Request $request) - { - - $data = Array( - "errors" => Array(), - "data" => Array() - ); - - $workspaceId = $request->request->get("workspaceId"); - - if (!$this->get("app.workspace_levels")->can($workspaceId, $this->getUser()->getId(), "workspace:write")) { - $data["errors"][] = "notallowed"; - } else { - - if (isset($_FILES["wallpaper"])) { - $thumbnail = $this->getUploader()->uploadFiles($this->getUser(), $_FILES["wallpaper"], "wswall"); - - $thumbnail = $thumbnail[0]; - - if (count($thumbnail["errors"]) > 0) { - $data["errors"][] = "badimage"; - } else { - $color = null; - $this->get("app.workspaces")->changeWallpaper($workspaceId, $thumbnail["file"], $color, $this->getUser()->getId(), $this->getUploader()); - } - } else { - $this->get("app.workspaces")->changeWallpaper($workspaceId, null, null, $this->getUser()->getId(), $this->getUploader()); - } - - } - - return new Response($data); - - } - -} diff --git a/twake/backend/core/src/Twake/Workspaces/Controller/WorkspaceLevels.php b/twake/backend/core/src/Twake/Workspaces/Controller/WorkspaceLevels.php deleted file mode 100755 index 27f21efb..00000000 --- a/twake/backend/core/src/Twake/Workspaces/Controller/WorkspaceLevels.php +++ /dev/null @@ -1,170 +0,0 @@ -<?php -/** - * Created by PhpStorm. - * User: Romaric Mourgues - * Date: 19/01/2017 - * Time: 10:38 - */ - -namespace Twake\Workspaces\Controller; - -use Common\BaseController; -use Common\Http\Response; -use Common\Http\Request; -use Twake\Workspaces\Model\WorkspaceLevelsInterface; - - -class WorkspaceLevels extends BaseController -{ - /** - * Get list of workspace levels - */ - public function getLevels(Request $request) - { - - $response = Array("errors" => Array(), "data" => Array()); - - $workspaceId = $request->request->get("workspaceId"); - - $levels = $this->get("app.workspace_levels")->getLevels($workspaceId, $this->getUser()->getId()); - $workspaceApps = $this->get("app.group_apps")->getApps($workspaceId, $this->getUser()->getId(), false, true); - - if ($levels == null) { - $response["errors"] = "notauthorized"; - return new Response($response); - } - - $list = $this->get("app.workspace_levels")->fixLevels($levels, $workspaceApps); - - $list["apps"] = Array(); - $list["apps"]["workspace"] = "Workspace"; - if ($workspaceApps != null) { - foreach ($workspaceApps as $workspaceApp) { - $list["apps"][$workspaceApp->getPublicKey()] = $workspaceApp->getName(); - } - } - - $response["data"] = $list; - - return new Response($response); - } - - /** - * Create a workspace level - */ - public function createLevel(Request $request) - { - - $response = Array("errors" => Array(), "data" => Array()); - - $workspaceId = $request->request->get("workspaceId"); - $label = $request->request->get("label", ""); - if ($label == null) { - $response["errors"] = "emptylabel"; - return new Response($response); - } - - $rights = $this->get("app.workspace_levels")->getDefaultLevel($workspaceId)->getRights(); - - $res = $this->get("app.workspace_levels")->addLevel($workspaceId, $label, $rights, $this->getUser()->getId()); - - if ($res) { - $response["data"] = "success"; - } else { - $response["errors"] = "notauthorized"; - } - - return new Response($response); - } - - /** - * Delete a workspace level - */ - public function deleteLevel(Request $request) - { - - $response = Array("errors" => Array(), "data" => Array()); - - $workspaceId = $request->request->get("workspaceId"); - $levelId = $request->request->get("levelId"); - - $res = $this->get("app.workspace_levels")->removeLevel($workspaceId, $levelId, $this->getUser()->getId()); - - if ($res) { - $response["data"] = "success"; - } else { - $response["errors"] = "notauthorized"; - } - - return new Response($response); - } - - /** - * Make a workspace levels default - */ - public function makeDefaulLevel(Request $request) - { - - $response = Array("errors" => Array(), "data" => Array()); - - $workspaceId = $request->request->get("workspaceId"); - $levelId = $request->request->get("levelId"); - - $res = $this->get("app.workspace_levels")->setDefaultLevel($workspaceId, $levelId, $this->getUser()->getId()); - - if ($res) { - $response["data"] = "success"; - } else { - $response["errors"] = "notauthorized"; - } - - return new Response($response); - } - - /** - * Edit a level (name and or rights) - */ - public function editLevel(Request $request) - { - - $response = Array("errors" => Array(), "data" => Array()); - - $workspaceId = $request->request->get("workspaceId"); - $levelId = $request->request->get("levelId"); - $rights = $request->request->get("rights"); - $label = $request->request->get("label", ""); - - $res = $this->get("app.workspace_levels")->updateLevel($workspaceId, $levelId, $label, $rights, $this->getUser()->getId()); - - if ($res) { - $response["data"] = "success"; - } else { - $response["errors"] = "notauthorized"; - } - - return new Response($response); - } - - public function getByLabel(Request $request) - { - $response = Array("errors" => Array(), "data" => Array()); - - $workspaceId = $request->request->get("workspaceId"); - $label = $request->request->get("label", ""); - - $res = $this->get("app.workspace_levels")->getByLabel($workspaceId, $label); - $labels = []; - if (!$res) { - $response["errors"] = "notauthorized"; - } else { - foreach ($res as $label) { - $labels[] = $label->getAsArray(); - } - $response["data"] = $labels; - } - - return new Response($response); - } - - -} diff --git a/twake/backend/core/src/Twake/Workspaces/Controller/WorkspaceMembers.php b/twake/backend/core/src/Twake/Workspaces/Controller/WorkspaceMembers.php deleted file mode 100755 index 5cdce4c2..00000000 --- a/twake/backend/core/src/Twake/Workspaces/Controller/WorkspaceMembers.php +++ /dev/null @@ -1,227 +0,0 @@ -<?php -/** - * Created by PhpStorm. - * User: Romaric Mourgues - * Date: 19/01/2017 - * Time: 10:38 - */ - -namespace Twake\Workspaces\Controller; - -use PHPUnit\Util\Json; -use Common\BaseController; -use Common\Http\Response; -use Common\Http\Request; - - -class WorkspaceMembers extends BaseController -{ - - public function getMembers(Request $request) - { - $response = Array("errors" => Array(), "data" => Array( - "nextPageToken" => null, - "list" => [], - )); - - $workspaceId = $request->request->get("workspaceId"); - $order = $request->request->get("order", null); - $max = $request->request->get("max", null); - $offset = $request->request->get("offset", null); - $query = $request->request->get("query", null); - - if($query){ - $all_info = $this->get("app.workspace_members")->searchMembers($workspaceId, $this->getUser()->getId(), $query); - }else{ - $all_info = $this->get("app.workspace_members")->getMembers($workspaceId, $this->getUser()->getId(), $order, $max, $offset); - } - $response["data"] = []; - - foreach($all_info as $user){ - $user["user"] = $user["user"]->getAsArray(); - $response["data"]["list"][$user["user"]["id"]] = $user; - $response["data"]["nextPageToken"] = $user["user"]["id"]; - } - - return new Response($response); - } - - public function getPending(Request $request) - { - $response = Array("errors" => Array(), "data" => Array( - "nextPageToken" => null, - "list" => [], - )); - - $workspaceId = $request->request->get("workspaceId"); - $order = $request->request->get("order", null); - $max = $request->request->get("max", null); - $offset = $request->request->get("offset", null); - - $all_info = $this->get("app.workspace_members")->getPendingMembers($workspaceId, $this->getUser()->getId(), $max, $offset); - $response["data"] = []; - - foreach($all_info as $mail){ - $object = Array( - "mail" => $mail->getMail(), - "id" => $mail->getId(), - "externe" => $mail->getExterne() - ); - $response["data"]["list"][$mail->getMail()] = $object; - $response["data"]["nextPageToken"] = $mail->getMail(); - } - - return new Response($response); - } - - /** - * Add list of usernames or mails - */ - public function addList(Request $request) - { - - $response = Array("errors" => Array(), "data" => Array()); - - $workspaceId = $request->request->get("workspaceId"); - $list = $request->request->get("list", ""); - - $list = str_replace(Array(",", ";"), " ", $list); - $list = preg_replace('!\s+!', ' ', $list); - $list = explode(" ", $list); - - $added = Array("user" => Array(), "pending" => Array()); - $not_added = Array(); - foreach ($list as $element) { - $element = trim($element); - $element = explode("|", $element); - if (!isset($element[1])) { - $element[1] = "0"; - } - $asExterne = $element[1] == "1" ? true : false; - $element = $element[0]; - if (strlen($element) > 0) { - if (strrpos($element, "@") <= 0) { //No mail or "@username" - $res = $this->get("app.workspace_members")->addMemberByUsername($workspaceId, $element, $asExterne, $this->getUser()->getId()); - if ($res) { - $added["user"][] = $element; - } else { - $not_added[] = $element; - } - } else { - $res = $this->get("app.workspace_members")->addMemberByMail($workspaceId, $element, $asExterne, $this->getUser()->getId()); - if ($res == "user") { - $added["user"][] = $element; - } elseif ($res == "mail") { - $added["pending"][] = $element; - } else { - $not_added[] = $element; - } - } - } - } - - $response["data"]["added"] = $added; - $response["data"]["not_added"] = $not_added; - - return new Response($response); - } - - /** - * Remove e-mail wainting for add - */ - public function removeMail(Request $request) - { - - $response = Array("errors" => Array(), "data" => Array()); - - $workspaceId = $request->request->get("workspaceId"); - $mail = $request->request->get("mail", ""); - - $res = $this->get("app.workspace_members") - ->removeMemberByMail($workspaceId, $mail, $this->getUser()->getId()); - - $response["data"] = $res; - - return new Response($response); - } - - /** - * Remove list of members by ids - */ - public function removeMembers(Request $request) - { - - $response = Array("errors" => Array(), "data" => Array()); - - $workspaceId = $request->request->get("workspaceId"); - $ids = $request->request->get("ids", Array()); - - $removed = 0; - foreach ($ids as $id) { - $res = $this->get("app.workspace_members") - ->removeMember($workspaceId, $id, $this->getUser()->getId()); - if ($res) { - $removed++; - } - } - - $response["data"]["removed"] = $removed; - - return new Response($response); - } - - /** - * Change level of members - */ - public function changeMembersLevel(Request $request) - { - - $response = Array("errors" => Array(), "data" => Array()); - - $workspaceId = $request->request->get("workspaceId"); - $ids = $request->request->get("usersId", Array()); - $levelId = $request->request->get("levelId"); - - $updated = 0; - foreach ($ids as $id) { - $res = $this->get("app.workspace_members") - ->changeLevel($workspaceId, $id, $levelId, $this->getUser()->getId()); - if ($res) { - $updated++; - } - } - - $response["data"]["updated"] = $updated; - - return new Response($response); - } - - - public function getWorkspaces(Request $request) - { - $response = Array( - "errors" => Array(), - "data" => Array() - ); - - $workspaces = $this->get("app.workspace_members")->getWorkspaces($this->getUser()->getId()); - - foreach ($workspaces as $workspace) { - $response["data"][] = Array( - "workspace" => $workspace["workspace"]->getAsArray(), - "last_access" => $workspace["last_access"], - "ishidden" => $workspace["ishidden"], - "isfavorite" => $workspace["isfavorite"], - "hasnotifications" => $workspace["hasnotifications"], - "isArchived" => $workspace["isArchived"]); - } - - if (count($workspaces) == 0) { - $response["errors"][] = "empty list"; - } - - - return new Response($response); - } - -} diff --git a/twake/backend/core/src/Twake/Workspaces/Entity/AppPricingInstance.php b/twake/backend/core/src/Twake/Workspaces/Entity/AppPricingInstance.php deleted file mode 100755 index 6544bbfb..00000000 --- a/twake/backend/core/src/Twake/Workspaces/Entity/AppPricingInstance.php +++ /dev/null @@ -1,153 +0,0 @@ -<?php - -namespace Twake\Workspaces\Entity; - -use Doctrine\ORM\Mapping as ORM; - - -/** - * AppPricingInstance - * - * @ORM\Table(name="app_pricing",options={"engine":"MyISAM"}) - * @ORM\Entity() - */ -class AppPricingInstance -{ - - /** - * @var int - * - * @ORM\Column(name="id", type="twake_timeuuid") - * @ORM\Id - */ - private $id; - - /** - * @ORM\ManyToOne(targetEntity="Twake\Workspaces\Entity\Group") - */ - private $group; - - /** - * @ORM\ManyToOne(targetEntity="Twake\Workspaces\Entity\GroupApp") - */ - private $groupapp; - - /** - * @ORM\Column(name="cost_monthly", type="integer") - */ - protected $costmonthly; - - /** - * @ORM\Column(name="cost_per_user", type="integer") - */ - protected $costuser; - - /** - * @ORM\Column(type="twake_datetime") - */ - private $startedat; - - - public function __construct($groupapp) - { - $this->group = $groupapp->getGroup(); - $this->groupapp = $groupapp; - $this->costmonthly = $groupapp->getApp()->getPriceMonthly(); - $this->costuser = $groupapp->getApp()->getPriceUser(); - $this->startedat = new \DateTime(); - } - - /** - * @return mixed - */ - public function getGroupapp() - { - return $this->groupapp; - } - - /** - * @param mixed $groupapp - */ - public function setGroupapp($groupapp) - { - $this->groupapp = $groupapp; - } - - /** - * @return int - */ - public function setId($id) - { - $this->id = $id; - } - - public function getId() - { - return $this->id; - } - - /** - * @return mixed - */ - public function getCostMonthly() - { - return $this->costmonthly; - } - - /** - * @param mixed $costmonthly - */ - public function setCostMonthly($costmonthly) - { - $this->costmonthly = $costmonthly; - } - - /** - * @return mixed - */ - public function getCostUser() - { - return $this->costuser; - } - - /** - * @param mixed $costuser - */ - public function setCostUser($costuser) - { - $this->costuser = $costuser; - } - - /** - * @return mixed - */ - public function getStartedAt() - { - return $this->startedat; - } - - /** - * @param mixed $startedat - */ - public function setStartedAt($startedat) - { - $this->startedat = $startedat; - } - - /** - * @return mixed - */ - public function getGroup() - { - return $this->group; - } - - /** - * @param mixed $group - */ - public function setGroup($group) - { - $this->group = $group; - } - -} diff --git a/twake/backend/core/src/Twake/Workspaces/Entity/ExternalGroupRepository.php b/twake/backend/core/src/Twake/Workspaces/Entity/ExternalGroupRepository.php deleted file mode 100755 index 2eb0e1e3..00000000 --- a/twake/backend/core/src/Twake/Workspaces/Entity/ExternalGroupRepository.php +++ /dev/null @@ -1,79 +0,0 @@ -<?php - -namespace Twake\Workspaces\Entity; - -use Doctrine\ORM\Mapping as ORM; - - -/** - * ExternalGroupRepository - * - * @ORM\Table(name="external_group_repository",options={"engine":"MyISAM", "scylladb_keys": {{"service_id":"ASC", "external_id":"ASC", "company_id":"ASC"}, {"service_id":"ASC", "company_id":"ASC", "external_id":"ASC"}} }) - * @ORM\Entity() - */ -class ExternalGroupRepository -{ - - /** - * @ORM\Column(name="service_id", type="string") - * @ORM\Id - */ - protected $service_id; - - /** - * @ORM\Column(name="external_id", type="string") - * @ORM\Id - */ - protected $external_id; - - /** - * @ORM\Column(type="string") - */ - protected $company_id; - - /** - * ExternalGroupRepository constructor. - * @param int $service_id - * @param int $external_id - * @param $company_id - */ - public function __construct($service_id, $external_id, $company_id) - { - $this->service_id = $service_id . ""; - $this->external_id = $external_id . ""; - $this->company_id = $company_id . ""; - } - - /** - * @return string - */ - public function getServiceId() - { - return $this->service_id; - } - - /** - * @return string - */ - public function getExternalId() - { - return $this->external_id; - } - - /** - * @return mixed - */ - public function getGroupId() - { - return $this->company_id; - } - - /** - * @return mixed - */ - public function setGroupId($company_id) - { - $this->company_id = $company_id . ""; - } - -} diff --git a/twake/backend/core/src/Twake/Workspaces/Entity/Group.php b/twake/backend/core/src/Twake/Workspaces/Entity/Group.php deleted file mode 100755 index 386b4752..00000000 --- a/twake/backend/core/src/Twake/Workspaces/Entity/Group.php +++ /dev/null @@ -1,407 +0,0 @@ -<?php - -namespace Twake\Workspaces\Entity; - -use Doctrine\ORM\Mapping as ORM; - -use Ramsey\Uuid\Doctrine\UuidOrderedTimeGenerator; -use Twake\Core\Entity\SearchableObject; - - -/** - * Group - * - * @ORM\Table(name="group_entity",options={"engine":"MyISAM"}) - * @ORM\Entity() - */ -class Group extends SearchableObject -{ - - protected $es_type = "group"; - - /** - * @var int - * - * @ORM\Column(name="id", type="twake_timeuuid") - * @ORM\Id - */ - protected $id; - - /** - * @ORM\Column(name="name", type="string", length=255, options={"index"=true}) - */ - protected $name; - - /** - * @ORM\Column(name="plan", type="twake_text") - */ - protected $plan; - - /** - * @ORM\Column(name="stats", type="twake_text") - */ - protected $stats; - - /** - * @ORM\Column(name="logo", type="twake_text") - */ - protected $logo; - - /** - * @ORM\Column(name="identity_provider", type="twake_text") - */ - protected $identity_provider = ""; - - /** - * @ORM\Column(name="identity_provider_id", type="twake_text") - */ - protected $identity_provider_id = ""; - - - // Twake without console fields below - - /** - * @ORM\ManyToOne(targetEntity="Twake\Upload\Entity\File") - * @ORM\JoinColumn(name="logo_id") - */ - protected $logofile; - - /** - * @ORM\Column(name="display_name", type="twake_text") - */ - protected $displayname; - - /** - * @ORM\OneToMany(targetEntity="Twake\Workspaces\Entity\Workspace", mappedBy="group") - */ - private $workspaces; - - /** - * @ORM\OneToMany(targetEntity="Twake\Workspaces\Entity\GroupUser", mappedBy="group") - */ - private $managers; - - /** - * @ORM\Column(type="twake_datetime") - */ - private $date_added; - - /** - * @ORM\Column(name="on_creation_data", type="twake_text") - */ - protected $on_creation_data = "{}"; - - /** - * @ORM\Column(name="isblocked", type="twake_boolean") - */ - private $isblocked = false; - - /** - * @ORM\Column(name="isprivate", type="twake_boolean") - */ - private $isprivate = false; - - /** - * @ORM\Column(name="member_count", type="twake_bigint") - */ - private $member_count = false; - - - public function __construct($name) - { - $this->name = $name; - $this->date_added = new \DateTime(); - } - - /** - * @return string - */ - public function getEsType() - { - return $this->es_type; - } - - - public function getIndexationArray() - { - $return = Array( - "id" => $this->getId() . "", - "name" => $this->getName(), - "creation_date" => ($this->getDateAdded() ? ($this->getDateAdded()->format('U') * 1000) : null), - ); - return $return; - } - - - public function setId($id) - { - $this->id = $id; - } - - public function getId() - { - return $this->id; - } - - /** - * @return mixed - */ - public function getName() - { - return $this->name; - } - - /** - * @param mixed $name - */ - public function setName($name) - { - $this->name = $name; - } - - /** - * @return mixed - */ - public function getDisplayName() - { - return $this->displayname; - } - - /** - * @param mixed $displayname - */ - public function setDisplayName($displayname) - { - $this->displayname = $displayname; - } - - /** - * @return mixed - */ - public function getStats() - { - $stats = []; - if ($this->stats) { - $stats = json_decode($this->stats, 1); - } - - $stats["created_at"] = ($this->getDateAdded() ? ($this->getDateAdded()->format('U') * 1000) : 0); - - return $stats; - } - - /** - * @param mixed $data - */ - public function setStats($stats) - { - $this->stats = json_encode($stats); - } - - public function getIdentityProvider() - { - return $this->identity_provider; - } - - public function setIdentityProvider($identity_provider) - { - if (!$identity_provider) { - $this->identity_provider = ""; - } - $this->identity_provider = $identity_provider; - } - - public function getIdentityProviderId() - { - return $this->identity_provider_id; - } - - public function setIdentityProviderId($identity_provider_id) - { - if (!$identity_provider_id) { - $this->identity_provider_id = ""; - } - $this->identity_provider_id = $identity_provider_id; - } - - /** - * @return mixed - */ - public function getLogoFile() - { - return $this->logofile; - } - - /** - * @return mixed - */ - public function getLogo() - { - if(!$this->logo){ - $this->setLogo($this->getLogoFile() ? $this->getLogoFile()->getPublicURL(2) : ""); - } - return $this->logo ?: ""; - } - - /** - * @param mixed $logo - */ - public function setLogo($logo) - { - $this->logo = $logo; - } - - /** - * @return mixed - */ - public function getPlan() - { - return json_decode($this->plan, 1); - } - - /** - * @param mixed $pricing_plan - */ - public function setPlan($plan) - { - $this->plan = json_encode($plan); - } - - /** - * @return mixed - */ - public function getWorkspaces() - { - return $this->workspaces; - } - - /** - * @param mixed $workspaces - */ - public function setWorkspaces($workspaces) - { - $this->workspaces = $workspaces; - } - - /** - * @return mixed - */ - public function getManagers() - { - return $this->managers; - } - - /** - * @param mixed $managers - */ - public function setManagers($managers) - { - $this->managers = $managers; - } - - /** - * @return mixed - */ - public function getDateAdded() - { - return $this->date_added; - } - - /** - * @param mixed $date_added - */ - public function setDateAdded($date_added) - { - $this->date_added = $date_added; - } - - /** - * @return mixed - */ - public function getisPrivate() - { - return $this->isprivate; - } - - /** - * @param mixed $isprivate - */ - public function setIsPrivate($isprivate) - { - $this->isprivate = $isprivate; - } - - /** - * @return mixed - */ - public function getIsBlocked() - { - return $this->isblocked; - } - - /** - * @param mixed $isblocked - */ - public function setIsBlocked($isblocked) - { - $this->isblocked = $isblocked; - } - - /** - * @return mixed - */ - public function getOnCreationData() - { - @$v = json_decode($this->on_creation_data, 1); - if (!$v) { - $v = Array(); - } - return $v; - } - - public function getOnCreationDataAsText() - { - return $this->on_creation_data; - } - - /** - * @param mixed $on_creation_data - */ - public function setOnCreationData($on_creation_data) - { - $this->on_creation_data = json_encode($on_creation_data); - } - - /** - * @return mixed - */ - public function getMemberCount() - { - if (!$this->member_count || $this->member_count < 0) { - return 0; - } - return $this->member_count; - } - - /** - * @param mixed $member_count - */ - public function setMemberCount($member_count) - { - $this->member_count = $member_count; - } - - public function getAsArray() - { - return Array( - "id" => $this->getId(), - "name" => $this->getDisplayName(), - "logo" => $this->getLogo(), - "plan" => $this->getPlan(), - "stats" => $this->getStats(), - "identity_provider" => $this->getIdentityProvider(), - "identity_provider_id" => $this->getIdentityProviderId(), - ); - } - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Workspaces/Entity/GroupApp.php b/twake/backend/core/src/Twake/Workspaces/Entity/GroupApp.php deleted file mode 100755 index 68ae9cbc..00000000 --- a/twake/backend/core/src/Twake/Workspaces/Entity/GroupApp.php +++ /dev/null @@ -1,242 +0,0 @@ -<?php - -namespace Twake\Workspaces\Entity; - -use Doctrine\ORM\Mapping as ORM; - - -/** - * GroupApp - * - * @ORM\Table(name="group_app",options={"engine":"MyISAM", "scylladb_keys": {{"group_id": "ASC", "app_id": "ASC", "id": "ASC"}, {"id":"ASC"}}}) - * @ORM\Entity() - */ -class GroupApp -{ - - /** - * @var int - * - * @ORM\Column(name="id", type="twake_timeuuid") - * @ORM\Id - */ - private $id; - - /** - * @ORM\ManyToOne(targetEntity="Twake\Workspaces\Entity\Group") - * @ORM\Id - */ - private $group; - - /** - * @ORM\Column(name="app_id", type="twake_timeuuid") - * @ORM\Id - */ - private $app_id; - - /** - * @ORM\Column(type="twake_datetime") - */ - private $date_added; - - /** - * @ORM\Column(type="twake_boolean") - */ - private $workspacedefault; - - /** - * @ORM\Column(type="integer") - */ - private $workspaces_count; - - /** - * @ORM\Column(name="privileges_capabilities_last_update", type="twake_datetime") - */ - protected $privileges_capabilities_last_update; - - /** - * @ORM\Column(name="privileges", type="twake_text") - */ - protected $privileges = "[]"; - - /** - * @ORM\Column(name="capabilities", type="twake_text") - */ - protected $capabilities = "[]"; - - /** - * @ORM\Column(name="hooks", type="twake_text") - */ - protected $hooks = "[]"; - - - public function __construct($group, $app_id) - { - $this->group = $group; - $this->app_id = $app_id; - - $this->date_added = new \DateTime(); - $this->workspacedefault = false; - - $this->setPrivilegesCapabilitiesLastRead(new \DateTime()); - } - - - public function getAsArray() - { - return Array( - "id" => $this->getId(), - "group_id" => $this->getGroup()->getId(), - "app_id" => $this->getAppId(), - "date_added" => $this->getDateAdded() ? $this->getDateAdded()->getTimestamp() : null, - "workspace_default" => $this->getWorkspaceDefault(), - "workspace_count" => $this->getWorkspacesCount() - ); - } - - /** - * @return int - */ - public function setId($id) - { - $this->id = $id; - } - - public function getId() - { - return $this->id; - } - - /** - * @return mixed - */ - public function getGroup() - { - return $this->group; - } - - /** - * @return mixed - */ - public function getDateAdded() - { - return $this->date_added; - } - - /** - * @return mixed - */ - public function getWorkspaceDefault() - { - return $this->workspacedefault; - } - - /** - * @param mixed $workspacedefault - */ - public function setWorkspaceDefault($workspacedefault) - { - $this->workspacedefault = $workspacedefault; - } - - /** - * @return mixed - */ - public function getAppId() - { - return $this->app_id; - } - - /** - * @param mixed $app_id - */ - public function setAppId($app_id) - { - $this->app_id = $app_id; - } - - /** - * @return mixed - */ - public function getWorkspacesCount() - { - return $this->workspaces_count; - } - - /** - * @param mixed $workspaces_count - */ - public function setWorkspacesCount($workspaces_count) - { - $this->workspaces_count = $workspaces_count; - } - - /** - * @return mixed - */ - public function getPrivilegesCapabilitiesLastRead() - { - return $this->privileges_capabilities_last_update; - } - - /** - * @param mixed $privileges_capabilities_last_update - */ - public function setPrivilegesCapabilitiesLastRead($privileges_capabilities_last_update) - { - $this->privileges_capabilities_last_update = $privileges_capabilities_last_update; - } - - /** - * @return mixed - */ - public function getPrivileges() - { - return json_decode($this->privileges, true); - } - - /** - * @param mixed $privileges - */ - public function setPrivileges($privileges) - { - $this->privileges = json_encode($privileges); - } - - /** - * @return mixed - */ - public function getCapabilities() - { - return json_decode($this->capabilities, true); - } - - /** - * @param mixed $capabilities - */ - public function setCapabilities($capabilities) - { - $this->capabilities = json_encode($capabilities); - } - - /** - * @return mixed - */ - public function getHooks() - { - if (!$this->hooks) { - return Array(); - } - return json_decode($this->hooks, true); - } - - /** - * @param mixed $hooks - */ - public function setHooks($hooks) - { - $this->hooks = json_encode($hooks); - } - - -} diff --git a/twake/backend/core/src/Twake/Workspaces/Entity/GroupUser.php b/twake/backend/core/src/Twake/Workspaces/Entity/GroupUser.php deleted file mode 100755 index 323251a1..00000000 --- a/twake/backend/core/src/Twake/Workspaces/Entity/GroupUser.php +++ /dev/null @@ -1,346 +0,0 @@ -<?php - -namespace Twake\Workspaces\Entity; - -use Doctrine\ORM\Mapping as ORM; - - -/** - * GroupUser - * - * @ORM\Table(name="group_user",options={"engine":"MyISAM", "scylladb_keys": {{"group_id":"ASC", "user_id":"DESC", "id":"ASC"} , {"user_id":"DESC"}}}) - * @ORM\Entity() - */ -class GroupUser -{ - /** - * @var int - * - * @ORM\Column(name="id", type="twake_timeuuid") - * @ORM\Id - */ - protected $id; - - /** - * @ORM\ManyToOne(targetEntity="Twake\Users\Entity\User") - * @ORM\Id - */ - protected $user; - - /** - * @ORM\ManyToOne(targetEntity="Twake\Workspaces\Entity\Group") - * @ORM\Id - */ - protected $group; - - /** - * @ORM\Column(name="level", type="integer") - */ - protected $level; - - /** - * @ORM\Column(name="did_connect_today", type="twake_boolean") - */ - private $didconnecttoday; - - /** - * @ORM\Column(name="is_externe", type="twake_boolean") - */ - private $externe; - - /** - * @ORM\Column(name="role", type="string", length=10) - */ - private $role = "member"; //"guest" | "admin" | "member" - - /** - * @ORM\Column(name="app_used_today", type="string", length=100000) - */ - protected $usedappstoday; - - /** - * @ORM\Column(name="nb_workspace", type="integer") - */ - protected $nbworkspace; - - /** - * @ORM\Column(type="twake_datetime") - */ - private $date_added; - - /** - * @ORM\Column(name="last_update_day", type="integer") - */ - protected $lastdayofupdate; - - /** - * @ORM\Column(name="nb_connections_period", type="integer") - */ - protected $connectionsperiod; - - /** - * @ORM\Column(name="app_used_period", type="string", length=100000) - */ - protected $appsusage_period; - - /** - * @ORM\Column(type="twake_boolean") - */ - private $hasnotifications = false; - - public function __construct($group, $user) - { - $this->group = $group; - $this->user = $user; - - $this->level = 0; - $this->date_added = new \DateTime(); - $this->nbworkspace = 0; - $this->didconnecttoday = false; - $this->usedappstoday = "[]"; - $this->lastdayofupdate = date('z') + 1; - $this->connectionsperiod = 0; - $this->appsusage_period = "[]"; - $this->externe = false; - } - - public function setId($id) - { - $this->id = $id; - } - - public function getId() - { - return $this->id; - } - - /** - * @return mixed - */ - public function getUser() - { - return $this->user; - } - - /** - * @return mixed - */ - public function getGroup() - { - return $this->group; - } - - /** - * @return mixed - */ - public function getLevel() - { - if($this->getRole() == "admin" || $this->getRole() == "owner"){ - return 2; - } - if($this->getRole() == "member"){ - return 1; - } - if($this->getRole() == "guest"){ - return 0; - } - return $this->level; - } - - /** - * @param mixed $level - */ - public function setLevel($level) - { - if($level > 1){ - $this->setRole("admin"); - }else if($this->getRole() !== "guest"){ - $this->setRole("member"); - } - $this->level = $level; - } - - /** - * @return mixed - */ - public function getRole() - { - return $this->role; - } - - /** - * @param mixed $level - */ - public function setRole($role) - { - $this->role = $role; - } - - /** - * @return mixed - */ - public function getNbWorkspace() - { - return $this->nbworkspace; - } - - /** - * @return mixed - */ - public function getConnectionsPeriod() - { - return $this->connectionsperiod; - } - - /** - * @param mixed $connectionsperiod - */ - public function setConnectionsPeriod($connectionsperiod) - { - $this->connectionsperiod = $connectionsperiod; - } - - /** - * @return mixed $connectionPeriod+1 - */ - public function increaseConnectionsPeriod() - { - return $this->connectionsperiod = $this->connectionsperiod + 1; - } - - - /** - * @param mixed $nbworkspace - */ - public function setNbWorkspace($nbworkspace) - { - $this->nbworkspace = $nbworkspace; - } - - public function increaseNbWorkspace() - { - return $this->nbworkspace = $this->nbworkspace + 1; - } - - public function decreaseNbWorkspace() - { - if ($this->nbworkspace == 0) { - return $this->nbworkspace; - } else { - return $this->nbworkspace = $this->nbworkspace - 1; - } - } - - /** - * @return mixed - */ - public function getLastDayOfUpdate() - { - if ($this->lastdayofupdate == 0) { - return date('z') + 1; - } - return $this->lastdayofupdate; - } - - /** - * @param mixed $lastdayofupdate - */ - public function setLastDayOfUpdate($lastdayofupdate) - { - $this->lastdayofupdate = $lastdayofupdate; - } - - /** - * @return mixed - */ - public function getAppsUsagePeriod() - { - if ($this->appsusage_period == null) { - return Array(); - } - return json_decode($this->appsusage_period, true); - } - - /** - * @param mixed $appsusage_period - */ - public function setAppsUsagePeriod($appsusage_period) - { - $this->appsusage_period = json_encode($appsusage_period); - } - - /** - * @return mixed - */ - public function getUsedAppsToday() - { - if ($this->usedappstoday == null) { - return Array(); - } - return json_decode($this->usedappstoday, true); - } - - /** - * @param mixed $usedapps - */ - public function setUsedAppsToday($usedapps) - { - $this->usedappstoday = json_encode($usedapps); - } - - /** - * @return mixed - */ - public function getDidConnectToday() - { - if ($this->didconnecttoday == null) { - return false; - } - return $this->didconnecttoday; - } - - /** - * @param mixed $didconnecttoday - */ - public function setDidConnectToday($didconnecttoday) - { - $this->didconnecttoday = $didconnecttoday; - } - - /** - * @return mixed - */ - public function getExterne() - { - return $this->externe; - } - - /** - * @param mixed $isclient - */ - public function setExterne($externe) - { - if($externe){ - $this->setRole("guest"); - } - $this->externe = $externe; - } - - /** - * @return mixed - */ - public function getHasNotifications() - { - return $this->hasnotifications; - } - - /** - * @param mixed $hasnotifications - */ - public function setHasNotifications($hasnotifications) - { - $this->hasnotifications = $hasnotifications; - } - - -} diff --git a/twake/backend/core/src/Twake/Workspaces/Entity/Workspace.php b/twake/backend/core/src/Twake/Workspaces/Entity/Workspace.php deleted file mode 100755 index 904b20f4..00000000 --- a/twake/backend/core/src/Twake/Workspaces/Entity/Workspace.php +++ /dev/null @@ -1,374 +0,0 @@ -<?php - -namespace Twake\Workspaces\Entity; - -use Doctrine\ORM\Mapping as ORM; - -use Twake\Core\Entity\SearchableObject; - - -/** - * Workspace - * - * @ORM\Table(name="workspaces",options={"engine":"MyISAM", "scylladb_keys": {{"company_id":"ASC", "id":"ASC"}, {"id":"ASC"}}}) - * @ORM\Entity() - */ -class Workspace extends SearchableObject -{ - - protected $es_type = "workspace"; - - /** - * @var int - * - * @ORM\Column(name="id", type="twake_timeuuid") - * @ORM\Id - */ - private $id; - - /** - * @ORM\Column(name="company_id", type="twake_timeuuid") - * @ORM\Id - */ - private $group; - - /** - * @ORM\Column(name="name", type="twake_no_salt_text", nullable=true) - */ - private $name; - - /** - * @ORM\Column(name="logo", type="twake_text") - */ - private $logo; - - /** - * @ORM\Column(name="stats", type="twake_text") - */ - protected $stats; - - - // Twake without console fields below - - - /** - * @ORM\Column(name="isdeleted", type="twake_boolean") - */ - private $isdeleted = false; - - /** - * @ORM\Column(name="isarchived", type="twake_boolean") - */ - private $isarchived = false; - - /** - * @ORM\Column(name="isdefault", type="twake_boolean") - */ - private $isdefault = false; - - /** - * @ORM\ManyToOne(targetEntity="Twake\Upload\Entity\File") - * @ORM\JoinColumn(name="logo_id") - */ - private $logofile; - - /** - * @ORM\Column(name="uniquename", type="twake_no_salt_text", nullable=true) - */ - private $uniquename; - - /** - * @ORM\Column(name="member_count", type="integer") - */ - private $member_count = 0; - - /** - * @ORM\Column(name="guest_count", type="integer") - */ - private $guest_count = 0; - - /** - * @ORM\Column(name="pending_count", type="integer") - */ - private $pending_count = 0; - - /** - * @ORM\Column(type="twake_datetime") - */ - private $date_added; - - /** - * @ORM\OneToMany(targetEntity="Twake\Workspaces\Entity\WorkspaceUser", mappedBy="workspace") - */ - private $members; - - /** - * Workspace constructor. - * @param $name - */ - public function __construct($name) - { - $this->name = $name; - $this->date_added = new \DateTime(); - } - - public function getIndexationArray() - { - $return = Array( - "id" => $this->getId() . "", - "name" => $this->getName(), - "company_id" => $this->getGroup(), - "creation_date" => ($this->getDateAdded() ? $this->getDateAdded()->format('Y-m-d') : null), - ); - return $return; - } - - /** - * @return string - */ - public function getEsType() - { - return $this->es_type; - } - - /** - * @param string $es_type - */ - public function setEsType($es_type) - { - $this->es_type = $es_type; - } - - - /** - * @return int - */ - public function setId($id) - { - $this->id = $id; - } - - public function getId() - { - return $this->id; - } - - /** - * @return mixed - */ - public function getDateAdded() - { - return $this->date_added; - } - - /** - * @return mixed - */ - public function getName() - { - return $this->name; - } - - /** - * @param mixed $name - */ - public function setName($name) - { - $this->name = $name; - } - - /** - * @return mixed - */ - public function getUniqueName() - { - return $this->uniquename; - } - - /** - * @param mixed $name - */ - public function setUniqueName($name) - { - $this->uniquename = $name; - } - - /** - * @return mixed - */ - public function getLogoFile() - { - return $this->logofile; - } - - /** - * @return mixed - */ - public function getLogo() - { - if(!$this->logo){ - $this->setLogo($this->getLogoFile() ? $this->getLogoFile()->getPublicURL(2) : ""); - } - return $this->logo ?: ""; - } - - /** - * @param mixed $logo - */ - public function setLogo($logo) - { - $this->logo = $logo; - } - - /** - * @return mixed - */ - public function getGroup() - { - return $this->group; - } - - public function getGroupEntity($em) - { - $groupRepository = $em->getRepository("Twake\Workspaces:Group"); - return $groupRepository->findOneBy(Array("id" => $this->getGroup())); - } - - /** - * @param mixed $group - */ - public function setGroup($group) - { - $this->group = $group; - } - - /** - * @return mixed - */ - public function getIsDeleted() - { - return $this->isdeleted; - } - - /** - * @param mixed $isdeleted - */ - public function setIsDeleted($isdeleted) - { - $this->isdeleted = $isdeleted; - } - - /** - * @return mixed - */ - public function getMembers() - { - return $this->members; - } - - /** - * @return mixed - */ - public function getMemberCount() - { - if (!$this->member_count || $this->member_count < 0) { - return 0; - } - return $this->member_count; - } - - /** - * @param mixed $member_count - */ - public function setMemberCount($member_count) - { - $this->member_count = $member_count; - } - - public function getGuestCount() - { - if (!$this->guest_count || $this->guest_count < 0) { - return 0; - } - return $this->guest_count; - } - - public function setGuestCount($guest_count) - { - $this->guest_count = $guest_count; - } - - public function getPendingCount() - { - if (!$this->pending_count || $this->pending_count < 0) { - return 0; - } - return $this->pending_count; - } - - public function setPendingCount($pending_count) - { - $this->pending_count = $pending_count; - } - - /** - * @return mixed - */ - public function getIsArchived() - { - return $this->isarchived; - } - - /** - * @param mixed $isarchived - */ - public function setIsArchived($isarchived) - { - $this->isarchived = $isarchived; - } - - /** - * @return mixed - */ - public function getIsDefault() - { - return $this->isdefault; - } - - /** - * @param mixed $isnew - */ - public function setIsDefault($default) - { - $this->isdefault = $default; - } - - - public function getAsArray($em = null) - { - - if($em){ - $group = $em->getRepository("Twake\Workspaces:Group")->findOneBy(["id" => $this->getGroup()]); - } - - return Array( - "id" => $this->getId(), - "company_id" => $this->getGroup(), - "name" => $this->getName(), - "logo" => $this->getLogo(), - - "default" => $this->getIsDefault(), - "archived" => $this->getIsArchived(), - - "stats" => [ - "created_at" => $this->date_added ? ($this->date_added->getTimestamp() * 1000) : 0, - "total_members" => $this->getMemberCount(), - "total_guests" => $this->getGuestCount(), - "total_pending" => $this->getPendingCount(), - ], - - "group" => ($group ? $group->getAsArray() : null), - ); - } - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Workspaces/Entity/WorkspaceActivity.php b/twake/backend/core/src/Twake/Workspaces/Entity/WorkspaceActivity.php deleted file mode 100755 index 8cff1a28..00000000 --- a/twake/backend/core/src/Twake/Workspaces/Entity/WorkspaceActivity.php +++ /dev/null @@ -1,174 +0,0 @@ -<?php - -namespace Twake\Workspaces\Entity; - - -use Doctrine\ORM\Mapping as ORM; - - -/** - * WorkspacesActivities - * - * @ORM\Table(name="workspace_activity",options={"engine":"MyISAM"}) - * @ORM\Entity() - */ -class WorkspaceActivity -{ - - /** - * @var int - * - * @ORM\Column(name="id", type="twake_timeuuid") - * @ORM\Id - */ - private $id; - - /** - * @ORM\Column(name="workspace_id", type="twake_timeuuid") - */ - private $workspace; - - /** - * @ORM\ManyToOne(targetEntity="Twake\Users\Entity\User") - */ - private $user; - - /** - * @ORM\ManyToOne(targetEntity="Twake\Market\Entity\Application") - */ - private $app; - - /** - * @ORM\Column(type="twake_datetime") - */ - private $date_added; - - /** - * @ORM\Column(type="string") - */ - private $title; - - /** - * @ORM\Column(type="string", nullable=true) - */ - private $objectrepository; - - /** - * @ORM\Column(type="twake_timeuuid", nullable=true) - */ - private $objectid = 0; - - public function __construct($workspace, $user, $app, $title, $objectrepository, $objectid) - { - $this->workspace = $workspace; - $this->date_added = new \DateTime(); - $this->user = $user; - $this->app = $app; - $this->title = $title; - $this->objectrepository = $objectrepository; - $this->objectid = $objectid; - } - - /** - * @return int - */ - public function setId($id) - { - $this->id = $id; - } - - public function getId() - { - return $this->id; - } - - /** - * @return mixed - */ - public function getWorkspace() - { - return $this->workspace; - } - - /** - * @return mixed - */ - public function getDateAdded() - { - return $this->date_added; - } - - /** - * @return mixed - */ - public function getApp() - { - return $this->app; - } - - /** - * @param mixed $app - */ - public function setApp($app) - { - $this->app = $app; - } - - /** - * @return mixed - */ - public function getTitle() - { - return $this->title; - } - - /** - * @param mixed $title - */ - public function setTitle($title) - { - $this->title = $title; - } - - /** - * @return mixed - */ - public function getUser() - { - return $this->user; - } - - /** - * @param mixed $user - */ - public function setUser($user) - { - $this->user = $user; - } - - - /** - * @return mixed - */ - public function getObjectId() - { - return $this->objectid; - } - - /** - * @param mixed $objectid - */ - public function setObjectId($objectid) - { - $this->objectid = $objectid; - } - - /** - * @return mixed - */ - public function getObjectRepository() - { - return $this->objectrepository; - } - -} diff --git a/twake/backend/core/src/Twake/Workspaces/Entity/WorkspaceApp.php b/twake/backend/core/src/Twake/Workspaces/Entity/WorkspaceApp.php deleted file mode 100755 index baf5a1a4..00000000 --- a/twake/backend/core/src/Twake/Workspaces/Entity/WorkspaceApp.php +++ /dev/null @@ -1,110 +0,0 @@ -<?php - -namespace Twake\Workspaces\Entity; - - -use Doctrine\ORM\Mapping as ORM; - - -/** - * WorkspaceApp - * - * @ORM\Table(name="workspace_app",options={"engine":"MyISAM", "scylladb_keys": {{"workspace_id": "ASC", "groupapp_id": "ASC", "app_id": "ASC", "id":"ASC"}, {"groupapp_id": "ASC"}, {"id":"ASC"}}}) - * @ORM\Entity() - */ -class WorkspaceApp -{ - - /** - * @var int - * - * @ORM\Column(name="id", type="twake_timeuuid") - * @ORM\Id - */ - private $id; - - /** - * @ORM\Column(name="workspace_id", type="twake_timeuuid") - * @ORM\Id - */ - private $workspace_id; - - /** - * @ORM\Column(name="groupapp_id", type="twake_timeuuid") - * @ORM\Id - */ - private $groupapp_id; - - /** - * @ORM\Column(name="app_id", type="twake_timeuuid") - * @ORM\Id - */ - private $app_id; - - /** - * @ORM\Column(type="twake_datetime") - */ - private $date_added; - - public function __construct($workspace_id, $groupapp_id, $app_id) - { - $this->workspace_id = $workspace_id; - $this->groupapp_id = $groupapp_id; - $this->app_id = $app_id; - $this->date_added = new \DateTime(); - } - - /** - * @return int - */ - public function setId($id) - { - $this->id = $id; - } - - public function getId() - { - return $this->id; - } - - /** - * @return mixed - */ - public function getWorkspace() - { - return $this->workspace_id; - } - - /** - * @return mixed - */ - public function getGroupApp() - { - return $this->groupapp; - } - - /** - * @return mixed - */ - public function getDateAdded() - { - return $this->date_added; - } - - /** - * @return mixed - */ - public function getAppId() - { - return $this->app_id; - } - - /** - * @param mixed $app_id - */ - public function setAppId($app_id) - { - $this->app_id = $app_id; - } - -} diff --git a/twake/backend/core/src/Twake/Workspaces/Entity/WorkspaceLevel.php b/twake/backend/core/src/Twake/Workspaces/Entity/WorkspaceLevel.php deleted file mode 100755 index 8642d75c..00000000 --- a/twake/backend/core/src/Twake/Workspaces/Entity/WorkspaceLevel.php +++ /dev/null @@ -1,159 +0,0 @@ -<?php -namespace Twake\Workspaces\Entity; - - -use Doctrine\ORM\Mapping as ORM; - - -/** - * WorkspaceLevel - * - * @ORM\Table(name="workspace_level",options={"engine":"MyISAM", "scylladb_keys": {{"workspace_id":"ASC","id":"ASC"}} } ) - * @ORM\Entity() - */ -class WorkspaceLevel -{ - /** - * @var int - * - * @ORM\Column(name="id", type="twake_timeuuid") - * @ORM\Id - */ - protected $id; - - /** - * @ORM\Column(name="label", type="twake_no_salt_text") - */ - protected $label; - - /** - * @ORM\Column(name="workspace_id", type="twake_timeuuid") - * @ORM\Id - */ - protected $workspace_id; - - /** - * @ORM\Column(name="rights", type="string", length=100000) - */ - protected $rights; - - /** - * @ORM\Column(name="is_default", type="twake_boolean", length=1) - */ - protected $isdefault = false; - - /** - * @ORM\Column(name="is_admin", type="twake_boolean", length=1) - */ - protected $isadmin = false; - - - function __construct() - { - $this->rights = "{}"; - } - - public function setId($id) - { - $this->id = $id; - } - - public function getId() - { - return $this->id; - } - - /** - * @return mixed - */ - public function getLabel() - { - return $this->label; - } - - /** - * @param mixed $label - */ - public function setLabel($label) - { - $this->label = $label; - } - - /** - * @return mixed - */ - public function getWorkspace() - { - return $this->workspace_id; - } - - /** - * @param mixed $workspace_id - */ - public function setWorkspace($workspace_id) - { - $this->workspace_id = $workspace_id; - } - - /** - * @return mixed - */ - public function getRights() - { - return json_decode($this->rights, true); - } - - /** - * @param mixed $rights - */ - public function setRights($rights) - { - $this->rights = json_encode($rights); - } - - /** - * @return mixed - */ - public function getIsDefault() - { - return $this->isdefault; - } - - /** - * @param mixed $isdefault - */ - public function setIsDefault($isdefault) - { - $this->isdefault = $isdefault; - } - - /** - * @return mixed - */ - public function getIsAdmin() - { - return $this->isadmin; - } - - /** - * @param mixed $isadmin - */ - public function setIsAdmin($isadmin) - { - $this->isadmin = $isadmin; - } - - - public function getAsArray() - { - return Array( - "id" => $this->getId(), - "name" => $this->getLabel(), - "admin" => $this->getIsAdmin(), - "default" => $this->getIsDefault(), - "rights" => $this->getRights() - ); - } -} - -?> diff --git a/twake/backend/core/src/Twake/Workspaces/Entity/WorkspaceUser.php b/twake/backend/core/src/Twake/Workspaces/Entity/WorkspaceUser.php deleted file mode 100755 index 5384c43b..00000000 --- a/twake/backend/core/src/Twake/Workspaces/Entity/WorkspaceUser.php +++ /dev/null @@ -1,284 +0,0 @@ -<?php - -namespace Twake\Workspaces\Entity; - - -use Doctrine\ORM\Mapping as ORM; - - -/** - * WorkspaceUser - * - * @ORM\Table(name="workspace_user",options={"engine":"MyISAM", "scylladb_keys": {{"workspace_id":"ASC", "user_id": "DESC", "id":"ASC"}, {"level_id":"ASC"}, {"user_id": "DESC"}} }) - * @ORM\Entity() - */ -class WorkspaceUser -{ - - /** - * @var int - * - * @ORM\Column(name="id", type="twake_timeuuid") - * @ORM\Id - */ - private $id; - - /** - * @ORM\Column(name="workspace_id", type="twake_timeuuid") - * @ORM\Id - */ - private $workspace_id; - - /** - * @ORM\Column(name="user_id", type="twake_timeuuid") - * @ORM\Id - */ - private $user_id; - - /** - * @ORM\Column(name="role", type="string") - */ - private $role = "member"; // "member" | "moderator" - - /** - * @ORM\Column(name="level_id", type="twake_timeuuid") - */ - private $level_id; //Depreciated - - /** - * @ORM\Column(type="twake_datetime") - */ - private $date_added; - - /** - * @ORM\Column(type="twake_datetime", options={"default" : "1970-01-02"}) - */ - private $last_access; - - /** - * @ORM\Column(type="twake_boolean") - */ - private $hasnotifications = false; - - /** - * @ORM\Column(name="is_externe", type="twake_boolean") - */ - private $externe; - - /** - * @ORM\Column(name="is_auto_add_externe", type="twake_boolean") - */ - private $auto_add_externe; - - public function __construct($workspace, $user, $level_id) - { - $this->workspace_id = $workspace->getId(); - $this->user_id = $user->getId(); - - $this->level_id = $level_id; - $this->date_added = new \DateTime(); - $this->last_access = new \DateTime(); - } - - /** - * @return int - */ - public function setId($id) - { - $this->id = $id; - } - - public function getId() - { - return $this->id; - } - - /** - * @return mixed - */ - public function getWorkspace($em) - { - $workspacesRepository = $em->getRepository("Twake\Workspaces:Workspace"); - return $workspacesRepository->findOneBy(["id"=>$this->workspace_id]); - } - - /** - * @return mixed - */ - public function getWorkspaceId() - { - return $this->workspace_id; - } - - /** - * @return mixed - */ - public function getUser($em) - { - $repo = $em->getRepository("Twake\Users:User"); - return $repo->find($this->user_id); - } - - /** - * @return mixed - */ - public function getUserId() - { - return $this->user_id; - } - - /** - * @return mixed - */ - public function getRole() - { - return $this->role ?: "member"; - } - - /** - * @param mixed $level - */ - public function setRole($role) - { - $this->role = $role; - } - - /** - * @return mixed - */ - public function getLevelId() - { - return $this->level_id; - } - - /** - * @param mixed $level - */ - public function setLevelId($level) - { - $this->level_id = $level; - } - - /** - * @return mixed - */ - public function getDateAdded() - { - return $this->date_added; - } - - /** - * @return mixed - */ - public function getLastAccess() - { - return $this->last_access; - } - - /** - * @param mixed $last_access - */ - public function setLastAccess() - { - $this->last_access = new \DateTime(); - } - - /** - * @return mixed - */ - public function getisHidden() - { - //return $this->ishidden; - } - - /** - * @param mixed $ishidden - */ - public function setIsHidden($ishidden) - { - //$this->ishidden = $ishidden; - } - - /** - * @return mixed - */ - public function getisFavorite() - { - //return $this->isfavorite; - } - - /** - * @param mixed $isfavorite - */ - public function setIsFavorite($isfavorite) - { - //$this->isfavorite = $isfavorite; - } - - /** - * @return mixed - */ - public function getHasNotifications() - { - return $this->hasnotifications; - } - - /** - * @param mixed $hasnotifications - */ - public function setHasNotifications($hasnotifications) - { - $this->hasnotifications = $hasnotifications; - } - - /** - * @return mixed - */ - public function getExterne() - { - return $this->externe; - } - - /** - * @param mixed $isclient - */ - public function setExterne($externe) - { - $this->externe = $externe; - } - - /** - * @return mixed - */ - public function getAutoAddExterne() - { - return $this->auto_add_externe; - } - - /** - * @param mixed $isclient - */ - public function setAutoAddExterne($auto_add_externe) - { - $this->auto_add_externe = $auto_add_externe; - } - - public function getAsArray($em) - { - return Array( - "id" => $this->getId(), - "user" => $this->getUser($em), - "user_id" => $this->getUserId(), - "workspace_id" => $this->getWorkspaceId(), - "workspace" => $this->getWorkspace($em), - "role" => $this->getRole(), - "level_id" => $this->getLevelId(), - "date_added" => $this->getDateAdded(), - "last_access" => $this->getLastAccess(), - "hasnotifications" => $this->getHasNotifications(), - "externe" => $this->getExterne(), - "auto_add_externe" => $this->getAutoAddExterne() - ); - } - -} diff --git a/twake/backend/core/src/Twake/Workspaces/Entity/WorkspaceUserByMail.php b/twake/backend/core/src/Twake/Workspaces/Entity/WorkspaceUserByMail.php deleted file mode 100755 index c600433e..00000000 --- a/twake/backend/core/src/Twake/Workspaces/Entity/WorkspaceUserByMail.php +++ /dev/null @@ -1,123 +0,0 @@ -<?php -namespace Twake\Workspaces\Entity; - - -use Doctrine\ORM\Mapping as ORM; - - -/** - * WorkspaceUserByMail - * - * @ORM\Table(name="workspace_user_by_mail",options={"engine":"MyISAM", "scylladb_keys": {{"workspace_id":"ASC", "mail": "DESC", "id":"ASC"}, {"id":"ASC"}, {"mail":"ASC"}}}) - * @ORM\Entity() - */ -class WorkspaceUserByMail -{ - /** - * @ORM\Column(name="id", type="twake_timeuuid") - * @ORM\Id - */ - private $id; - - /** - * @ORM\Column(name="workspace_id", type="twake_timeuuid") - * @ORM\Id - */ - private $workspace_id; - - /** - * @ORM\Column(name="mail", type="string", length=255) - * @ORM\Id - */ - private $mail; - - /** - * @ORM\Column(name="is_externe", type="twake_boolean") - */ - private $externe; - - /** - * @ORM\Column(name="is_auto_add_externe", type="twake_boolean") - */ - private $is_auto_add_externe; - - - function __construct($workspace, $mail) - { - $this->workspace_id = $workspace->getId(); - $this->mail = $mail; - $this->externe = false; - $this->is_auto_add_externe = false; - } - - public function setId($id) - { - $this->id = $id; - } - - public function getId() - { - return $this->id; - } - - /** - * @return mixed - */ - public function getWorkspace($em) - { - $workspacesRepository = $em->getRepository("Twake\Workspaces:Workspace"); - return $workspacesRepository->findOneBy(["id"=>$this->workspace_id]); - } - - /** - * @return mixed - */ - public function getWorkspaceId() - { - return $this->workspace_id; - } - - /** - * @return mixed - */ - public function getMail() - { - return $this->mail; - } - - /** - * @return mixed - */ - public function getExterne() - { - return $this->externe; - } - - /** - * @param mixed $isclient - */ - public function setExterne($externe) - { - $this->externe = $externe; - } - - /** - * @return mixed - */ - public function getAutoAddExterne() - { - return $this->is_auto_add_externe; - } - - /** - * @param mixed $isclient - */ - public function setAutoAddExterne($externe) - { - $this->is_auto_add_externe = $externe; - } - - -} - -?> diff --git a/twake/backend/core/src/Twake/Workspaces/Resources/Routing.php b/twake/backend/core/src/Twake/Workspaces/Resources/Routing.php deleted file mode 100755 index d0b94f55..00000000 --- a/twake/backend/core/src/Twake/Workspaces/Resources/Routing.php +++ /dev/null @@ -1,72 +0,0 @@ -<?php - -namespace Twake\Workspaces\Resources; - -use Common\BaseRouting; - -class Routing extends BaseRouting -{ - - protected $routing_prefix = "ajax/workspace/"; - - protected $routes = [ - "get" => ["handler" => "Workspace:getAction", "methods" => ["POST"], "security" => ["user_connected_security"]], - "get_public_data" => ["handler" => "Workspace:getPublicData", "methods" => ["POST"]], - "create" => ["handler" => "Workspace:create", "methods" => ["POST"], "security" => ["user_connected_security"]], - "duplicate" => ["handler" => "Workspace:duplicate", "methods" => ["POST"], "security" => ["user_connected_security"]], - "delete" => ["handler" => "Workspace:delete", "methods" => ["POST"], "security" => ["user_connected_security"]], - "archive" => ["handler" => "Workspace:archiveWorkspace", "methods" => ["POST"], "security" => ["user_connected_security"]], - "unarchive" => ["handler" => "Workspace:unarchiveWorkspace", "methods" => ["POST"], "security" => ["user_connected_security"]], - "hideOrNot" => ["handler" => "Workspace:hideOrUnhideWorkspace", "methods" => ["POST"], "security" => ["user_connected_security"]], - "favorite" => ["handler" => "Workspace:favoriteOrUnfavoriteWorkspace", "methods" => ["POST"], "security" => ["user_connected_security"]], - "notifications" => ["handler" => "Workspace:haveNotificationsOrNotWorkspace", "methods" => ["POST"], "security" => ["user_connected_security"]], - "set/isNew" => ["handler" => "Workspace:setIsNew", "methods" => ["POST"], "security" => ["user_connected_security"]], -# Edit workspace data - - "data/name" => ["handler" => "WorkspaceData:setName", "methods" => ["POST"], "security" => ["user_connected_security"]], - "data/logo" => ["handler" => "WorkspaceData:setLogo", "methods" => ["POST"], "security" => ["user_connected_security"]], - "data/wallpaper" => ["handler" => "WorkspaceData:setWallpaper", "methods" => ["POST"], "security" => ["user_connected_security"]], - "getByName" => ["handler" => "Workspace:getWorkspaceByName", "methods" => ["POST"], "security" => ["user_connected_security"]], -# Apps - - "apps/getModuleApps" => ["handler" => "Workspace:getModuleApps", "methods" => ["POST"], "security" => ["user_connected_security"]], - "apps/get" => ["handler" => "Workspace:getApps", "methods" => ["POST"], "security" => ["user_connected_security"]], - "apps/enable" => ["handler" => "Workspace:enableApp", "methods" => ["POST"], "security" => ["user_connected_security"]], - "apps/disable" => ["handler" => "Workspace:disableApp", "methods" => ["POST"], "security" => ["user_connected_security"]], -# Groups - "group/getUsers" => ["handler" => "Group:getUsers", "methods" => ["POST"], "security" => ["user_connected_security"]], - "group/edit" => ["handler" => "Group:editUser", "methods" => ["POST"], "security" => ["user_connected_security"]], - "group/removeUser" => ["handler" => "Group:removeUser", "methods" => ["POST"], "security" => ["user_connected_security"]], - "group/data/name" => ["handler" => "Group:changeName", "methods" => ["POST"], "security" => ["user_connected_security"]], - "group/data/logo" => ["handler" => "Group:setLogo", "methods" => ["POST"], "security" => ["user_connected_security"]], - "group/getWorkspaces" => ["handler" => "Group:getWorkspaces", "methods" => ["POST"], "security" => ["user_connected_security"]], - "group/app/use" => ["handler" => "GroupApps:useApp", "methods" => ["POST"], "security" => ["user_connected_security"]], - "group/apps/get" => ["handler" => "GroupApps:getApps", "methods" => ["POST"], "security" => ["user_connected_security"]], - "group/workspacedefault/set" => ["handler" => "GroupApps:setWorkspaceDefault", "methods" => ["POST"], "security" => ["user_connected_security"]], - "group/application/force" => ["handler" => "GroupApps:forceApplication", "methods" => ["POST"], "security" => ["user_connected_security"]], - "group/application/remove" => ["handler" => "GroupApps:removeApplication", "methods" => ["POST"], "security" => ["user_connected_security"]], - "group/manager/get" => ["handler" => "GroupManager:getManagers", "methods" => ["POST"], "security" => ["user_connected_security"]], - "group/manager/add" => ["handler" => "GroupManager:addManagers", "methods" => ["POST"], "security" => ["user_connected_security"]], - "group/manager/remove" => ["handler" => "GroupManager:removeManagers", "methods" => ["POST"], "security" => ["user_connected_security"]], - "group/manager/edit" => ["handler" => "GroupManager:editManagers", "methods" => ["POST"], "security" => ["user_connected_security"]], - "group/manager/toggleManager" => ["handler" => "GroupManager:toggleManager", "methods" => ["POST"], "security" => ["user_connected_security"]], -# Edit members - - "members/list" => ["handler" => "WorkspaceMembers:getMembers", "methods" => ["POST"], "security" => ["user_connected_security"]], - "members/pending" => ["handler" => "WorkspaceMembers:getPending", "methods" => ["POST"], "security" => ["user_connected_security"]], - "members/addlist" => ["handler" => "WorkspaceMembers:addList", "methods" => ["POST"], "security" => ["user_connected_security"]], - "members/removemail" => ["handler" => "WorkspaceMembers:removeMail", "methods" => ["POST"], "security" => ["user_connected_security"]], - "members/remove" => ["handler" => "WorkspaceMembers:removeMembers", "methods" => ["POST"], "security" => ["user_connected_security"]], - "members/changelevel" => ["handler" => "WorkspaceMembers:changeMembersLevel", "methods" => ["POST"], "security" => ["user_connected_security"]], -#Levels - - "levels/list" => ["handler" => "WorkspaceLevels:getLevels", "methods" => ["POST"], "security" => ["user_connected_security"]], - "levels/create" => ["handler" => "WorkspaceLevels:createLevel", "methods" => ["POST"], "security" => ["user_connected_security"]], - "levels/delete" => ["handler" => "WorkspaceLevels:deleteLevel", "methods" => ["POST"], "security" => ["user_connected_security"]], - "levels/edit" => ["handler" => "WorkspaceLevels:editLevel", "methods" => ["POST"], "security" => ["user_connected_security"]], - "levels/default" => ["handler" => "WorkspaceLevels:makeDefaulLevel", "methods" => ["POST"], "security" => ["user_connected_security"]], - "levels/getByLabel" => ["handler" => "WorkspaceLevels:getByLabel", "methods" => ["POST"], "security" => ["user_connected_security"]], - "members/getWorkspaces" => ["handler" => "WorkspaceMembers:getWorkspaces", "methods" => ["POST"], "security" => ["user_connected_security"]], - ]; - -} diff --git a/twake/backend/core/src/Twake/Workspaces/Resources/Services.php b/twake/backend/core/src/Twake/Workspaces/Resources/Services.php deleted file mode 100755 index 26b59cac..00000000 --- a/twake/backend/core/src/Twake/Workspaces/Resources/Services.php +++ /dev/null @@ -1,21 +0,0 @@ -<?php - -namespace Twake\Workspaces\Resources; - -use Common\BaseServices; - -class Services extends BaseServices -{ - - protected $services = [ - "app.group_managers" => "GroupManagers", - "app.groups" => "Groups", - "app.group_apps" => "GroupApps", - "app.workspace_levels" => "WorkspaceLevels", - "app.workspace_members" => "WorkspaceMembers", - "app.workspaces" => "Workspaces", - "app.workspaces_activities" => "WorkspacesActivities", - "app.workspaces_apps" => "WorkspacesApps", - ]; - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Workspaces/Services/GroupApps.php b/twake/backend/core/src/Twake/Workspaces/Services/GroupApps.php deleted file mode 100755 index 5dc80923..00000000 --- a/twake/backend/core/src/Twake/Workspaces/Services/GroupApps.php +++ /dev/null @@ -1,178 +0,0 @@ -<?php - -namespace Twake\Workspaces\Services; - -use App\App; -use Twake\Workspaces\Model\GroupAppsInterface; - -class GroupApps -{ - private $doctrine; - private $gms; - private $was; - - public function __construct(App $app) - { - $this->doctrine = $app->getServices()->get("app.twake_doctrine"); - $this->gms = $app->getServices()->get("app.group_managers"); - $this->was = $app->getServices()->get("app.workspaces_apps"); - } - - public function getApps($groupId, $currentUserId = null) - { - $groupRepository = $this->doctrine->getRepository("Twake\Workspaces:Group"); - $group = $groupRepository->find($groupId); - - if ($group == null) { - return false; - } - - if ($currentUserId == null - || $this->gms->hasPrivileges( - $this->gms->getLevel($groupId, $currentUserId), - "MANAGE_APPS" - ) - ) { - //Group apps - $groupappsRepository = $this->doctrine->getRepository("Twake\Workspaces:GroupApp"); - $groupapps = $groupappsRepository->findBy(Array("group" => $group)); - - $applicationRepository = $this->doctrine->getRepository("Twake\Market:Application"); - - $apps = array(); - foreach ($groupapps as $ga) { - - $app = $applicationRepository->findOneBy(Array("id" => $ga->getAppId())); - - if (!$app) { - - $this->removeApplication($group->getId(), $ga->getAppId()); - - } else { - - $workspace_app = $ga->getAsArray(); - $workspace_app["app"] = $app->getAsArray(); - - $apps[] = $workspace_app; - - } - } - - return $apps; - } - - return false; - } - - public function removeApplication($groupId, $appid, $currentUserId = null) - { - $groupRepository = $this->doctrine->getRepository("Twake\Workspaces:Group"); - $group = $groupRepository->find($groupId); - - $applicationRepository = $this->doctrine->getRepository("Twake\Market:Application"); - $application = $applicationRepository->findOneBy(Array("id" => $appid)); - - if ($group == null || $application == null) { - return false; - } - - if ($currentUserId == null - || $this->gms->hasPrivileges( - $this->gms->getLevel($groupId, $currentUserId), - "MANAGE_APPS" - ) - ) { - - //Group apps - $groupappsRepository = $this->doctrine->getRepository("Twake\Workspaces:GroupApp"); - $groupapp = $groupappsRepository->findOneBy(Array("group" => $group, "app_id" => $application->getId())); - - if (!$groupapp) { - return true; - } - - $workspaceAppsRepository = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceApp"); - $workspace_apps = $workspaceAppsRepository->findBy(Array("groupapp_id" => $groupapp->getId())); - - foreach ($workspace_apps as $workspace_app) { - $this->was->disableApp($workspace_app->getWorkspace(), $application->getId()); - } - - return true; - } - - return false; - } - - public function setWorkspaceDefault($groupId, $appid, $boolean, $currentUserId = null) - { - $groupRepository = $this->doctrine->getRepository("Twake\Workspaces:Group"); - $group = $groupRepository->find($groupId); - - if ($group == null) { - return false; - } - - if ($currentUserId == null - || $this->gms->hasPrivileges( - $this->gms->getLevel($groupId, $currentUserId), - "MANAGE_APPS" - ) - ) { - //Group apps - $groupappsRepository = $this->doctrine->getRepository("Twake\Workspaces:GroupApp"); - $groupapp = $groupappsRepository->findOneBy(Array("group" => $group, "app_id" => $appid)); - - $groupapp->setWorkspaceDefault($boolean); - $this->doctrine->persist($groupapp); - $this->doctrine->flush(); - - return true; - } - return false; - } - - //OLD CODE ? - - public function useApp($groupId, $workspaceId, $userId, $appid) - { - $groupUserRepository = $this->doctrine->getRepository("Twake\Workspaces:GroupUser"); - $groupuser = $groupUserRepository->findOneBy(Array("user" => $userId, "group" => $groupId)); - - $groupAppRepository = $this->doctrine->getRepository("Twake\Workspaces:GroupApp"); - $groupApp = $groupAppRepository->findOneBy(Array("group" => $groupId, "app" => $appid)); - - if ($groupuser == null || $groupApp == null || $groupId == null) {//if no user or app not in group app's list or private workspace - return false; - } else { - - $appUsed = $groupuser->getUsedAppsToday(); - if (in_array($appid . "", $appUsed)) { - return true; - } else { - - if ($workspaceId) { - $workspaceUserRepository = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceUser"); - $workspaceUser = $workspaceUserRepository->findOneBy(Array("workspace_id" => $workspaceId, "user_id" => $userId)); - $workspaceUser->setLastAccess(); - $this->doctrine->persist($workspaceUser); - } - - if (!$groupuser->getDidConnectToday()) { - $groupuser->setDidConnectToday(true); - } - - $appUsed[] = $appid; - $groupuser->setUsedAppsToday($appUsed); - - $this->doctrine->persist($groupuser); - $this->doctrine->flush(); - return true; - } - } - - return false; - } - - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Workspaces/Services/GroupManagers.php b/twake/backend/core/src/Twake/Workspaces/Services/GroupManagers.php deleted file mode 100755 index 3f60f2bf..00000000 --- a/twake/backend/core/src/Twake/Workspaces/Services/GroupManagers.php +++ /dev/null @@ -1,356 +0,0 @@ -<?php - -namespace Twake\Workspaces\Services; - -use App\App; -use Twake\Workspaces\Entity\GroupUser; -use Twake\Workspaces\Model\GroupManagersInterface; - - -class GroupManagers -{ - - var $doctrine; - var $privileges = Array( - 0 => Array("VIEW_USERS"), - 1 => Array("VIEW_USERS", - "VIEW_WORKSPACES", - "VIEW_MANAGERS", - "VIEW_APPS", - "VIEW_PRICINGS"), - 2 => Array("VIEW_USERS", - "VIEW_WORKSPACES", - "VIEW_MANAGERS", - "VIEW_APPS", - "VIEW_PRICINGS", - "MANAGE_USERS", - "MANAGE_WORKSPACES"), - 3 => Array("VIEW_USERS", - "VIEW_WORKSPACES", - "VIEW_MANAGERS", - "VIEW_APPS", - "VIEW_PRICINGS", - "MANAGE_USERS", - "MANAGE_WORKSPACES", - "MANAGE_MANAGERS", - "MANAGE_PRICINGS", - "MANAGE_APPS", - "MANAGE_DATA") - ); - private $twake_mailer; - private $pusher; - - public function __construct(App $app) - { - $this->doctrine = $app->getServices()->get("app.twake_doctrine"); - $this->twake_mailer = $app->getServices()->get("app.twake_mailer"); - $this->pusher = $app->getServices()->get("app.pusher"); - } - - public function changeLevel($groupId, $userId, $level, $currentUserId = null) - { - $userRepository = $this->doctrine->getRepository("Twake\Users:User"); - $groupRepository = $this->doctrine->getRepository("Twake\Workspaces:Group"); - $groupManagerRepository = $this->doctrine->getRepository("Twake\Workspaces:GroupUser"); - - if ($currentUserId == null - || $this->hasPrivileges( - $this->getLevel($groupId, $currentUserId), - "MANAGE_MANAGERS" - ) - ) { - - $user = $userRepository->find($userId); - $group = $groupRepository->find($groupId); - $manager = $groupManagerRepository->findOneBy(Array("user" => $user, "group" => $group)); - - if ($manager) { - $manager->setLevel($level); - $this->doctrine->persist($manager); - $this->doctrine->flush(); - return true; - } - - } - - return false; - - } - - public function hasPrivileges($level, $privilege) - { - $privileges = $this->getPrivileges($level); - if ($privileges == null) { - return false; - } - return in_array($privilege, $privileges); - } - - public function getPrivileges($level) - { - if ($level === null) { - return null; - } - return $this->privileges[$level]; - } - - public function getLevel($groupId, $userId, $currentUserId = null) - { - - if ($userId == null) { - return 3; // If userId == null this is the system (all rights) - } - - /* - * If currentUserId == null then we are root (system) - * If we are the current user we can access our data - * Else we verify that we can look rights - */ - - $userRepository = $this->doctrine->getRepository("Twake\Users:User"); - $groupRepository = $this->doctrine->getRepository("Twake\Workspaces:Group"); - $groupManagerRepository = $this->doctrine->getRepository("Twake\Workspaces:GroupUser"); - - $user = $userRepository->find($userId); - $group = $groupRepository->find($groupId); - $manager = $groupManagerRepository->findOneBy(Array("user" => $user, "group" => $group)); - - if (!$manager || $manager->getExterne()) { - return null; //No rights - } - - return $manager->getLevel(); - - - } - - public function toggleManager($groupId, $userId, $isManager = null, $currentUserId = null) - { - $userRepository = $this->doctrine->getRepository("Twake\Users:User"); - $groupRepository = $this->doctrine->getRepository("Twake\Workspaces:Group"); - $groupManagerRepository = $this->doctrine->getRepository("Twake\Workspaces:GroupUser"); - - if ($currentUserId == null - || $this->hasPrivileges( - $this->getLevel($groupId, $currentUserId), - "MANAGE_MANAGERS" - ) - ) { - - $user = $userRepository->find($userId); - $group = $groupRepository->find($groupId); - $manager = $groupManagerRepository->findOneBy(Array("group" => $groupId, "user" => $userId)); - if (!$manager) { // not in group - return false; - } - if ($manager->getLevel() != null && $manager->getLevel() == 3 && $isManager != null && $isManager == true) { - // is already manager; - return true; - } - if ($manager->getLevel() == null && $isManager != null && $isManager == false) { - // is already not manager; - return true; - } - if ($manager->getLevel() == null) { // si l'utilisateur n'est pas manager - $manager->setLevel(3); - - $this->doctrine->persist($manager); - $this->doctrine->flush(); - - } else { - $groupUserRepository = $this->doctrine->getRepository("Twake\Workspaces:GroupUser"); - $otherPotentialGroupAdmin = $groupUserRepository->findBy(Array("group" => $groupId)); - $hasOtherAdmin = false; - foreach ($otherPotentialGroupAdmin as $potentialAdmin) { - if ($potentialAdmin->getLevel() == 3 && $potentialAdmin->getUser()->getId() != $userId) { - $hasOtherAdmin = true; - } - } - if (!$hasOtherAdmin) { - header("twake-debug: no other group admins"); - return false; - } - $manager->setLevel(null); - $this->doctrine->persist($manager); - $this->doctrine->flush(); - } - $dataToPush = Array( - "type" => "update_group_privileges", - "group_id" => $groupId, - "privileges" => $this->getPrivileges($this->getLevel($groupId, $userId)) - ); - $this->pusher->push($dataToPush, "workspaces_of_user/" . $userId); - - return true; - - } - return false; - } - - public function addManager($groupId, $userId, $level, $createdWorkspace, $currentUserId = null) - { - $userRepository = $this->doctrine->getRepository("Twake\Users:User"); - $groupRepository = $this->doctrine->getRepository("Twake\Workspaces:Group"); - $groupManagerRepository = $this->doctrine->getRepository("Twake\Workspaces:GroupUser"); - - if ($currentUserId == null - || $this->hasPrivileges( - $this->getLevel($groupId, $currentUserId), - "MANAGE_MANAGERS" - ) - ) { - - $user = $userRepository->find($userId); - $group = $groupRepository->find($groupId); - $manager = $groupManagerRepository->findOneBy(Array("user" => $user, "group" => $group)); - - - if (!$manager) { // si on a crée un workspace et qu'on s'y ajoute soi même en admin - if ($createdWorkspace) { - $manager = new GroupUser($group, $user); - $manager->setLevel($level); - - $this->doctrine->persist($manager); - $this->doctrine->flush(); - - return true; - } else { - return false; - } - } else { - $manager->setLevel($level); - - $this->twake_mailer->send($user->getEmail(), "addedToGroupManagersMail", Array("_language" => $user ? $user->getLanguage() : "en", "group" => $group->getDisplayName(), "username" => $user->getUsername())); - - $this->doctrine->persist($manager); - $this->doctrine->flush(); - - return true; - } - - } - - return false; - } - - public function removeManager($groupId, $userId, $currentUserId = null) - { - $userRepository = $this->doctrine->getRepository("Twake\Users:User"); - $groupRepository = $this->doctrine->getRepository("Twake\Workspaces:Group"); - $groupManagerRepository = $this->doctrine->getRepository("Twake\Workspaces:GroupUser"); - - if ($currentUserId == $userId) { - return false; //Cant remove myself - } - - if ($currentUserId == null - || $this->hasPrivileges( - $this->getLevel($groupId, $currentUserId), - "MANAGE_MANAGERS" - ) - ) { - - $user = $userRepository->find($userId); - $group = $groupRepository->find($groupId); - $manager = $groupManagerRepository->findOneBy(Array("user" => $user, "group" => $group)); - - if (!$manager) { - return true; - } - - $manager->setLevel(0); - $this->doctrine->persist($manager); - $this->doctrine->flush(); - - return true; - - } - - return false; - } - - public function getManagers($groupId, $currentUserId = null) - { - $groupRepository = $this->doctrine->getRepository("Twake\Workspaces:Group"); - $groupManagerRepository = $this->doctrine->getRepository("Twake\Workspaces:GroupUser"); - - if ($currentUserId == null - || $this->hasPrivileges( - $this->getLevel($groupId, $currentUserId), - "VIEW_MANAGERS" - ) - ) { - - $group = $groupRepository->find($groupId); - $managerLinks = $groupManagerRepository->findBy(Array("group" => $group, "level" => 0)); - - $users = Array(); - foreach ($managerLinks as $managerLink) { - $users[] = Array( - "user" => $managerLink->getUser(), - "level" => $managerLink->getLevel() - ); - } - - return $users; - - } - - return false; - } - - public function getGroups($userId) - { - - $userRepository = $this->doctrine->getRepository("Twake\Users:User"); - $groupManagerRepository = $this->doctrine->getRepository("Twake\Workspaces:GroupUser"); - - $user = $userRepository->find($userId); - $groupsLinks = $groupManagerRepository->findBy(Array("user" => $user)); - - $groups = Array(); - foreach ($groupsLinks as $groupLink) { - $groups[] = Array( - "group" => $groupLink->getGroup(), - "level" => $groupLink->getLevel() - ); - } - - return $groups; - } - - public function init($group) - { - $workspaces = $group->getWorkspaces(); - $groupManagerRepository = $this->doctrine->getRepository("Twake\Workspaces:GroupUser"); - $workspaceUserRepository = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceUser"); - - foreach ($workspaces as $workspace) { - $workspace = $workspace["workspace"]; - $members = $workspace->getMembers(); - - foreach ($members as $member) { - $userEntity = $member->getUser($this->doctrine); - $manager = $groupManagerRepository->findBy(Array("user" => $userEntity, "group" => $group)); - - if ($manager == null) { //si user n'est pas repertorié on l'ajoute au rang super-admin - - $wss = $workspaceUserRepository->findBy(Array("user_id" => $userEntity->getId())); - $nbWs = 0; - foreach ($wss as $ws) { - if ($ws->getWorkspace($this->doctrine)->getGroup() && $ws->getWorkspace($this->doctrine)->getGroup() == $group->getId()) { - $nbWs++; - } - } - - $newManager = new GroupUser($group, $userEntity); - $newManager->setLevel(3); - $newManager->setNbWorkspace($nbWs); - $this->doctrine->persist($newManager); - $this->doctrine->flush(); - } - } - } - } - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Workspaces/Services/Groups.php b/twake/backend/core/src/Twake/Workspaces/Services/Groups.php deleted file mode 100755 index adf171fc..00000000 --- a/twake/backend/core/src/Twake/Workspaces/Services/Groups.php +++ /dev/null @@ -1,348 +0,0 @@ -<?php - -namespace Twake\Workspaces\Services; - -use Twake\Workspaces\Entity\Group; -use Twake\Workspaces\Entity\GroupApp; -use Twake\Workspaces\Entity\GroupManager; -use Twake\Workspaces\Model\GroupsInterface; -use App\App; - -class Groups -{ - - private $doctrine; - private $gms; - private $market; - private $string_cleaner; - private $wms; - private $pusher; - - public function __construct(App $app) - { - $this->doctrine = $app->getServices()->get("app.twake_doctrine"); - $this->gms = $app->getServices()->get("app.group_managers"); - $this->market = $app->getServices()->get("app.applications"); - $this->string_cleaner = $app->getServices()->get("app.string_cleaner"); - $this->wms = $app->getServices()->get("app.workspace_members"); - $this->pusher = $app->getServices()->get("app.pusher"); - } - - public function create($userId, $name, $uniquename, $planId, $group_data_on_create = Array()) - { - $userRepository = $this->doctrine->getRepository("Twake\Users:User"); - $groupRepository = $this->doctrine->getRepository("Twake\Workspaces:Group"); - - $user = $userRepository->find($userId); - - //Find a name - $groupUsingThisName = $groupRepository->findOneBy(Array("name" => $uniquename)); - $increment = 0; - $uniquenameIncremented = $uniquename; - while ($groupUsingThisName != null) { - $groupUsingThisName = $groupRepository->findOneBy(Array("name" => $uniquenameIncremented)); - $increment += 1; - if ($groupUsingThisName != null) { - $uniquenameIncremented = $uniquename . "-" . $increment; - } - } - - - $group = new Group($uniquenameIncremented); - $group->setDisplayName($name); - $group->setOnCreationData($group_data_on_create); - - $this->doctrine->persist($group); - $this->doctrine->flush(); - - $this->gms->addManager($group->getId(), $userId, 3, true); - - $this->init($group); - - return $group; - - } - - public function init($group) - { - $appRepository = $this->doctrine->getRepository("Twake\Market:Application"); - $groupAppRepository = $this->doctrine->getRepository("Twake\Workspaces:GroupApp"); - - $groupApps = $groupAppRepository->findBy(Array("group" => $group)); - - $listApps = $appRepository->findBy(Array("is_default" => true)); - - if (count($groupApps) != 0) { - return false; - } else { - foreach ($listApps as $app) { - $groupapp = new GroupApp($group, $app->getId()); - $groupapp->setWorkspaceDefault(true); - $this->doctrine->persist($groupapp); - } - $this->doctrine->flush(); - return true; - } - return true; - } - - public function changeData($groupId, $name, $currentUserId = null) - { - if ($currentUserId != null || $this->gms->hasPrivileges($this->gms->getLevel($groupId, $currentUserId), "MANAGE_DATA")) { - - $groupRepository = $this->doctrine->getRepository("Twake\Workspaces:Group"); - $group = $groupRepository->find($groupId); - - $group->setDisplayName($name); - - //Find a name - $groupUsingThisName = $groupRepository->findOneBy(Array("name" => $name)); - $increment = 0; - $uniquenameIncremented = $this->string_cleaner->simplify($name); - - while ($groupUsingThisName != null) { - $groupUsingThisName = $groupRepository->findOneBy(Array("name" => $uniquenameIncremented)); - $increment += 1; - if ($groupUsingThisName != null) { - $uniquenameIncremented = $name . "-" . $increment; - } - } - - $group->setName($uniquenameIncremented); - - $this->doctrine->persist($group); - $this->doctrine->flush(); - - return true; - } else { - error_log("NOT ALLOWED"); - } - - return false; - } - - public function removeUserFromGroup($groupId, $userId, $currentUserId = null) - { - if ($currentUserId == null || $this->gms->hasPrivileges($this->gms->getLevel($groupId, $currentUserId), "MANAGE_USERS")) { - - $ws = $this->getWorkspaces($groupId); - - foreach ($ws as $workspace) { - $this->wms->removeMember($workspace->getId(), $userId, $currentUserId); - } - - return true; - } - - return false; - } - - public function getWorkspaces($groupId, $currentUserId = null) - { - if ($currentUserId != null || $this->gms->hasPrivileges($this->gms->getLevel($groupId, $currentUserId), "VIEW_WORKSPACES")) { - - $groupRepository = $this->doctrine->getRepository("Twake\Workspaces:Group"); - $group = $groupRepository->findBy(Array("id" => $groupId)); - - $workspaceRepository = $this->doctrine->getRepository("Twake\Workspaces:Workspace"); - - return $workspaceRepository->findBy(Array("group" => $group)); - } - - return false; - } - - public function getUsers($groupId, $currentUserId = null) - { - if ($currentUserId == null || $this->gms->hasPrivileges($this->gms->getLevel($groupId, $currentUserId), "VIEW_WORKSPACES")) { - - $ws = $this->getWorkspaces($groupId);//TODO remove users from all workspaces - - $workspace_ids = Array(); - foreach ($ws as $workspace) { - $workspace = $workspace["workspace"]; - $workspace_ids[] = $workspace->getId(); - } - - $userLinks = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceUser")->getUsersFromGroup($workspace_ids); - - $users = Array(); - foreach ($userLinks as $userLink) { - $users[] = $userLink->getUser(); - } - - return $users; - } - - return false; - } - - public function changeLogo($groupId, $logo, $currentUserId = null, $uploader = null) - { - if ($currentUserId != null || $this->gms->hasPrivileges($this->gms->getLevel($groupId, $currentUserId), "MANAGE_DATA")) { - - $groupRepository = $this->doctrine->getRepository("Twake\Workspaces:Group"); - $group = $groupRepository->find($groupId); - - $group->setLogo($logo); - - $this->doctrine->persist($group); - $this->doctrine->flush(); - - return $group; - } - - return false; - } - - public function remove($group) - { - - //TODO REMOVE USERS FROM WORKSPACE - if ($group != null) { - $groupappsRepository = $this->get("app.twake_doctrine")->getRepository("Twake\Workspaces:GroupApp"); - $groupapps = $groupappsRepository->findBy(Array("group" => $group)); - - $workspaceRepository = $this->get("app.twake_doctrine")->getRepository("Twake\Workspaces:Workspace"); - $workspace = $workspaceRepository->findOneBy(Array("name" => "phpunit")); - - $workspaceUserRepository = $this->get("app.twake_doctrine")->getRepository("Twake\Workspaces:WorkspaceUser"); - $workspaceUsers = $workspaceUserRepository->findBy(Array("workspace_id" => $workspace->getId())); - - $workspaceappsRepository = $this->get("app.twake_doctrine")->getRepository("Twake\Workspaces:WorkspaceApp"); - $workspaceapps = $workspaceappsRepository->findBy(Array("workspace_id" => $workspace)); - - $workspacelevelRepository = $this->get("app.twake_doctrine")->getRepository("Twake\Workspaces:WorkspaceLevel"); - $workspacelevels = $workspacelevelRepository->findBy(Array("workspace_id" => $workspace)); - - $workspacestatsRepository = $this->get("app.twake_doctrine")->getRepository("Twake\Workspaces:WorkspaceStats"); - $workspacestats = $workspacestatsRepository->findOneBy(Array("workspace" => $workspace)); - - $streamRepository = $this->get("app.twake_doctrine")->getRepository("Twake\Discussion:Stream"); - $streams = $streamRepository->findBy(Array("workspace" => $workspace)); - - $groupUserdRepository = $this->get("app.twake_doctrine")->getRepository("Twake\Workspaces:GroupUser"); - $groupUsers = $groupUserdRepository->findBy(Array("group" => $group)); - - $groupPricingRepository = $this->get("app.twake_doctrine")->getRepository("Twake\Workspaces:GroupPricingInstance"); - $groupPricing = $groupPricingRepository->findOneBy(Array("group" => $group)); - } - - //TODO DOCTRINE REMOVE USERS FROM WORKSPACE - - if ($group != null) { - if ($groupapps != null) { - if (is_array($groupapps)) { - foreach ($groupapps as $groupapp) { - $this->get("app.twake_doctrine")->remove($groupapp); - } - } - } - if ($workspaceapps != null) { - if (is_array($workspaceapps)) { - foreach ($workspaceapps as $workspaceapp) { - $this->get("app.twake_doctrine")->remove($workspaceapp); - } - } - } - if ($workspaceUsers != null) { - if (is_array($workspaceUsers)) { - foreach ($workspaceUsers as $workspaceUser) { - $this->get("app.twake_doctrine")->remove($workspaceUser); - } - } - } - if ($groupPricing != null) { - $this->get("app.twake_doctrine")->remove($groupPricing); - } - if ($workspacelevels != null) { - if (is_array($workspacelevels)) { - foreach ($workspacelevels as $workspacelevel) { - $this->get("app.twake_doctrine")->remove($workspacelevel); - } - } - } - if ($streams != null) { - if (is_array($streams)) { - foreach ($streams as $stream) { - $this->get("app.twake_doctrine")->remove($stream); - } - } - } - if ($workspacestats != null) { - $this->get("app.twake_doctrine")->remove($workspacestats); - } - if ($workspace != null) { - $this->get("app.twake_doctrine")->remove($workspace); - } - if (is_array($groupUsers)) { - foreach ($groupUsers as $groupuser) { - $this->get("app.twake_doctrine")->remove($groupuser); - } - } - if ($groupPeriod != null) { - $this->get("app.twake_doctrine")->remove($groupPeriod); - } - } - - if ($group != null) { - $this->get("app.twake_doctrine")->remove($group); - } - - $this->get("app.twake_doctrine")->flush(); - } - - public function countUsersGroup($groupId) - { - $groupRepository = $this->doctrine->getRepository("Twake\Workspaces:Group"); - $group = $groupRepository->find($groupId); - return $group->getMemberCount(); - } - - public function getUsersGroup($groupId, $onlyExterne, $limit = 100, $offset = 0, $currentUserId = null) - { - if ($currentUserId == null || $this->gms->hasPrivileges($this->gms->getLevel($groupId, $currentUserId), "VIEW_USERS")) { - - $groupRepository = $this->doctrine->getRepository("Twake\Workspaces:Group"); - $groupManagerRepository = $this->doctrine->getRepository("Twake\Workspaces:GroupUser"); - - $group = $groupRepository->find($groupId); - $groupLinks = $groupManagerRepository->findBy(Array("group" => $group), null, $max, $offset); - $users = Array(); - foreach ($groupLinks as $link) { - if (!$onlyExterne || $link->getExterne()) { - $users[] = Array( - "user" => $link->getUser(), - "externe" => $link->getExterne(), - "level" => $link->getLevel(), - "nbWorkspace" => $link->getNbWorkspace() - ); - } - } - return $users; - } - return false; - - - } - - public function editUserFromGroup($groupId, $userId, $externe, $currentUserId = null) - { - if ($currentUserId == null || $this->gms->hasPrivileges($this->gms->getLevel($groupId, $currentUserId), "MANAGE_USERS")) { - - $groupRepository = $this->doctrine->getRepository("Twake\Workspaces:Group"); - $groupManagerRepository = $this->doctrine->getRepository("Twake\Workspaces:GroupUser"); - - $group = $groupRepository->find($groupId); - $user = $groupManagerRepository->findOneBy(Array("user" => $user->getId(), "group" => $groupId)); - - $user->setExterne($externe); - $this->doctrine->persist($user); - $this->doctrine->flush(); - return true; - } - - return false; - } - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Workspaces/Services/WorkspaceLevels.php b/twake/backend/core/src/Twake/Workspaces/Services/WorkspaceLevels.php deleted file mode 100755 index 040fa0c4..00000000 --- a/twake/backend/core/src/Twake/Workspaces/Services/WorkspaceLevels.php +++ /dev/null @@ -1,398 +0,0 @@ -<?php - -namespace Twake\Workspaces\Services; - - -use Twake\Workspaces\Entity\WorkspaceLevel; -use Twake\Workspaces\Model\WorkspaceLevelsInterface; -use App\App; - -class WorkspaceLevels -{ - - private $doctrine; - private $pusher; - - public function __construct(App $app) - { - $this->doctrine = $app->getServices()->get("app.twake_doctrine"); - $this->pusher = $app->getServices()->get("app.pusher"); - } - - public function getLevel($workspaceId, $userId, $currentUserId = null) - { - if ($currentUserId == null - || $currentUserId == $userId - || $this->can($workspaceId, $currentUserId, "") - ) { - - $userRepository = $this->doctrine->getRepository("Twake\Users:User"); - $workspaceRepository = $this->doctrine->getRepository("Twake\Workspaces:Workspace"); - $workspaceUserRepository = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceUser"); - - $user = $userRepository->find($userId); - $workspace = $workspaceRepository->findOneBy(["id"=>$workspaceId]); - $link = $workspaceUserRepository->findOneBy(Array("workspace_id" => $workspace->getId(), "user_id" => $user->getId())); - - if (!$link) { - return null; //No level because no member - } - $level = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceLevel")->findOneBy(Array("workspace_id" => $workspace->getId(), "id" => $link->getLevelId())); - - return $level; - - } - - return null; //Cant look this info - } - - public function can($workspaceId, $userId, $action) - { - - if (!$userId) { - return false; - } - - //Load rights for this users - - $workspaceRepository = $this->doctrine->getRepository("Twake\Workspaces:Workspace"); - $workspaceUserRepository = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceUser"); - $companyUserRepository = $this->doctrine->getRepository("Twake\Workspaces:GroupUser"); - - $user = $this->convertToEntity($userId, "Twake\Users:User"); - $workspace = $workspaceRepository->findOneBy(["id"=>$workspaceId]); - - if (!$user || !$workspace) { - error_log("no user / ws "); - return false; - } - - $companyLink = $companyUserRepository->findOneBy(Array("group" => $workspace->getGroup(), "user" => $user->getId())); - $link = $workspaceUserRepository->findOneBy(Array("workspace_id" => $workspace->getId(), "user_id" => $user->getId())); - if ($link) { - - if($link->getRole() === "moderator" || $companyLink->getRole() === "admin" || $companyLink->getRole() === "owner"){ - return true; //Admin can do everything - } - - $level = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceLevel")->findOneBy(Array("workspace_id" => $workspace->getId(), "id" => $link->getLevelId())); - if ($level && $level->getIsAdmin()) { - return true; //Admin can do everything - } - - if($action === "admin"){ - return false; - } - - if ($action == "" || $action == null) { - return true; - } - - return false; - } - - return false; - - } - - private function convertToEntity($var, $repository) - { - if (is_string($var)) { - $var = $var; // Cassandra id do nothing - } - - if (is_int($var) || is_string($var) || get_class($var) == "Ramsey\Uuid\Uuid") { - return $this->doctrine->getRepository($repository)->find($var); - } else if (is_object($var)) { - return $var; - } else { - return null; - } - - } - - public function updateLevel($workspaceId, $levelId, $label, $rights, $currentUserId = null) - { - if ($currentUserId == null - || $this->can($workspaceId, $currentUserId, "workspace:write") - ) { - - $levelRepository = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceLevel"); - - $level = $levelRepository->findBy(Array("workspace_id" => $workspaceId, "level" => $levelId)); - if (!$level) { - return false; - } - - if ($level->getWorkspace()->getId() != $workspaceId) { - return false; - } - - $level->setRights($rights); - $level->setLabel($label); - - $this->doctrine->persist($level); - $this->doctrine->flush(); - - $datatopush = Array( - "type" => "CHANGE_LEVEL", - "data" => Array( - "workspaceId" => $workspaceId, - ) - ); - $this->pusher->push($datatopush, "group/" . $workspaceId); - - return true; - - } - - return false; - } - - public function getDefaultLevel($workspaceId) - { - - $choosen = null; - - $levelRepository = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceLevel"); - - $levels = $levelRepository->findBy(Array("workspace_id" => $workspaceId)); - - - foreach ($levels as $level) { - if ($level->getIsDefault()) { - $choosen = $level; - } - } - - //No default level ! - if (!$choosen) { - - $levelD = new WorkspaceLevel(); - $levelD->setWorkspace($workspaceId); - $levelD->setLabel("Default"); - $levelD->setIsAdmin(false); - $levelD->setIsDefault(true); - $this->doctrine->persist($levelD); - $this->doctrine->flush(); - - $choosen = $levelD; - - } - - return $choosen; - - } - - public function setDefaultLevel($workspaceId, $levelId, $currentUserId = null) - { - if ($currentUserId == null - || $this->can($workspaceId, $currentUserId, "workspace:write") - ) { - - $levelRepository = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceLevel"); - - $oldLevelDefault = $levelRepository->findOneBy(Array("workspace_id" => $workspaceId, "isdefault" => true)); - - if ($oldLevelDefault) { - $oldLevelDefault->setisDefault(false); - $this->doctrine->persist($oldLevelDefault); - } - - $levelDefault = $levelRepository->find($levelId); - if (!$levelDefault) { - return false; - } - if ($levelDefault->getWorkspace()->getId() != $workspaceId) { - return false; - } - $levelDefault->setisDefault(true); - - - $this->doctrine->persist($levelDefault); - $this->doctrine->flush(); - - return true; - - } - - return false; - } - - public function addLevel($workspaceId, $label, $rights, $currentUserId = null) - { - if ($currentUserId == null - || $this->can($workspaceId, $currentUserId, "workspace:write") - ) { - $workspaceRepository = $this->doctrine->getRepository("Twake\Workspaces:Workspace"); - $workspace = $workspaceRepository->findOneBy(["id"=>$workspaceId]); - - $level = new WorkspaceLevel(); - - $level->setWorkspace($workspaceId); - $level->setRights($rights); - $level->setLabel($label); - - $this->doctrine->persist($level); - $this->doctrine->flush(); - - return true; - - } - - return false; - } - - public function removeLevel($workspaceId, $levelId, $currentUserId = null) - { - if ($currentUserId == null - || $this->can($workspaceId, $currentUserId, "workspace:write") - ) { - - $levelRepository = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceLevel"); - $workspaceRepository = $this->doctrine->getRepository("Twake\Workspaces:Workspace"); - $workspaceUserRepository = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceUser"); - - $level = $levelRepository->findBy(Array("workspace_id" => $workspaceId, "level" => $levelId)); - if ($level->getWorkspace()->getId() != $workspaceId) { - return false; - } - - if ($level->getIsDefault()) { - return false; //Can't remove default level - } - - if ($level->getIsAdmin()) { - return false; //Can't remove admin level - } - - $levelDefault = $levelRepository->findOneBy(Array("workspace_id" => $workspaceId, "isdefault" => true)); - - if (!$levelDefault) { - return false; - } - - $affectedUsers = $workspaceUserRepository->findBy(Array("workspace_id" => $workspaceId, "level" => $level)); - foreach ($affectedUsers as $affectedUser) { - $affectedUser->setLevel($levelDefault); - $this->doctrine->persist($affectedUser); - } - - $this->doctrine->remove($level); - $this->doctrine->flush(); - - $datatopush = Array( - "type" => "CHANGE_LEVEL", - "data" => Array( - "workspaceId" => $workspaceId(), - ) - ); - $this->pusher->push($datatopush, "group/" . $workspaceId()); - - return true; - - } - - return false; - } - - public function getUsers($workspaceId, $levelId, $currentUserId = null) - { - if ($currentUserId == null - || $this->can($workspaceId, $currentUserId, "workspace:read") - ) { - - $levelRepository = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceLevel"); - $workspaceRepository = $this->doctrine->getRepository("Twake\Workspaces:Workspace"); - $workspaceUserRepository = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceUser"); - - $level = $levelRepository->findBy(Array("workspace_id" => $workspaceId, "level" => $levelId)); - $workspace = $workspaceRepository->findOneBy(["id"=>$workspaceId]); - - if (!$level || !$workspace) { - return false; - } - - $link = $workspaceUserRepository->findBy(Array("level" => $level, "workspace_id" => $workspaceId)); - - $users = Array(); - foreach ($link as $user) { - $users[] = $user->getUser($this->doctrine); - } - - return $users; - } - - return false; - } - - public function getLevels($workspaceId, $currentUserId = null) - { - $levelRepository = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceLevel"); - $workspaceRepository = $this->doctrine->getRepository("Twake\Workspaces:Workspace"); - - $workspace = $workspaceRepository->findOneBy(["id"=>$workspaceId]); - - if (!$workspace) { - return false; - } - - $levels = $levelRepository->findBy(Array("workspace_id" => $workspaceId)); - - return $levels; - } - - public function getByLabel($workspaceId, $label, $currentUserId = null) - { - if ($currentUserId == null - || $this->can($workspaceId, $currentUserId, "workspace:read") - ) { - - $levelRepository = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceLevel"); - $workspaceRepository = $this->doctrine->getRepository("Twake\Workspaces:Workspace"); - - $workspace = $workspaceRepository->findOneBy(["id"=>$workspaceId]); - - if (!$workspace) { - return false; - } - - $levels = $levelRepository->findBy(["label" => $label, "workspace_id" => $workspaceId]); - - return $levels; - } - - return false; - } - - - // @Depreciated - public function hasRight($userId, $workspaceId, $rightAsked) - { - $userId = $this->convertToEntity($userId, "Twake\Users:User"); - $userId = $userId->getId(); - - $workspaceId = $this->convertToEntity($workspaceId, "Twake\Workspaces:Workspace"); - $workspaceId = $workspaceId->getId(); - - return $this->can($workspaceId, $userId, $rightAsked); - } - - // @Depreciated - public function errorsAccess($userId, $workspaceId, $right) - { - $userId = $this->convertToEntity($userId, "Twake\Users:User"); - $userId = $userId->getId(); - - $workspaceId = $this->convertToEntity($workspaceId, "Twake\Workspaces:Workspace"); - $workspaceId = $workspaceId->getId(); - - if ($this->can($workspaceId, $userId, $right)) { - return []; - } - return ["notallowed"]; - } - -} - -?> diff --git a/twake/backend/core/src/Twake/Workspaces/Services/WorkspaceMembers.php b/twake/backend/core/src/Twake/Workspaces/Services/WorkspaceMembers.php deleted file mode 100755 index a27dbfea..00000000 --- a/twake/backend/core/src/Twake/Workspaces/Services/WorkspaceMembers.php +++ /dev/null @@ -1,764 +0,0 @@ -<?php - -namespace Twake\Workspaces\Services; - -use Twake\Users\Entity\User; -use Twake\Workspaces\Entity\GroupUser; -use Twake\Workspaces\Entity\WorkspaceUser; -use Twake\Workspaces\Entity\WorkspaceUserByMail; -use Twake\Workspaces\Model\WorkspaceMembersInterface; -use App\App; - -class WorkspaceMembers -{ - - /* @var WorkspacesActivities $workspacesActivities */ - var $workspacesActivities; - var $groupManager; - private $app; - private $wls; - private $string_cleaner; - private $doctrine; - private $pusher; - private $calendar; - private $queues; - - public function __construct(App $app) - { - $this->app = $app; - $this->doctrine = $app->getServices()->get("app.twake_doctrine"); - $this->wls = $app->getServices()->get("app.workspace_levels"); - $this->string_cleaner = $app->getServices()->get("app.string_cleaner"); - $this->pusher = $app->getServices()->get("app.pusher"); - $this->calendar = $app->getServices()->get("app.calendar.calendar"); - $this->workspacesActivities = $app->getServices()->get("app.workspaces_activities"); - $this->groupManager = $app->getServices()->get("app.group_managers"); - $this->queues = $app->getServices()->get('app.queues')->getAdapter(); - } - - public function changeLevel($workspaceId, $userId, $levelId, $currentUserId = null) - { - if ($currentUserId == null - || $this->wls->can($workspaceId, $currentUserId, "workspace:write") - ) { - - $userRepository = $this->doctrine->getRepository("Twake\Users:User"); - $workspaceRepository = $this->doctrine->getRepository("Twake\Workspaces:Workspace"); - $levelRepository = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceLevel"); - - $level = $levelRepository->findOneBy(Array("workspace_id" => $workspaceId, "id" => $levelId)); - $user = $userRepository->find($userId); - $workspace = $workspaceRepository->findOneBy(["id"=>$workspaceId]); - - $workspaceUserRepository = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceUser"); - $member = $workspaceUserRepository->findOneBy(Array("workspace_id" => $workspace->getId(), "user_id" => $user->getId())); - - $member->setLevelId($level->getId()); - if($level->getIsAdmin()){ - $member->setRole("moderator"); - }else{ - $member->setRole("member"); - } - - $this->doctrine->persist($member); - $this->doctrine->flush(); - - $workspaceUser = $member->getAsArray($this->doctrine); - $workspaceUser["groupLevel"] = $this->groupManager->getLevel($workspace->getGroup(), $userId, $currentUserId); - $dataToPush = Array( - "type" => "update_workspace_level", - "workspace_user" => $workspaceUser - ); - $this->pusher->push($dataToPush, "workspace_users/" . $workspace->getId()); - - $dataToPush = Array( - "type" => "update_workspace_level", - "level" => $level->getAsArray() - ); - $this->pusher->push($dataToPush, "workspaces_of_user/" . $userId); - - return true; - } - return false; - } - - public function addMemberByUsername($workspaceId, $username, $asExterne, $currentUserId = null) - { - if ($currentUserId == null - || $this->wls->can($workspaceId, $currentUserId, "workspace:write") - ) { - $username = $this->string_cleaner->simplifyUsername($username); - - $userRepository = $this->doctrine->getRepository("Twake\Users:User"); - $user = $userRepository->findOneBy(Array("usernamecanonical" => $username)); - if ($user) { - return $this->addMember($workspaceId, $user->getId(), $asExterne); - } - - } - return false; - } - - // return false if error, user if user already have an account, mail if invitation mail sent - - public function addMember($workspaceId, $userId, $asExterne = false, $levelId = null, $currentUserId = null) - { - if ($currentUserId == null || $this->wls->can($workspaceId, $currentUserId, "workspace:write")) { - $userRepository = $this->doctrine->getRepository("Twake\Users:User"); - $workspaceRepository = $this->doctrine->getRepository("Twake\Workspaces:Workspace"); - $groupRepository = $this->doctrine->getRepository("Twake\Workspaces:Group"); - - $user = $userRepository->find($userId); - $workspace = $workspaceRepository->findOneBy(["id"=>$workspaceId]); - - if ($workspace->getGroup() != null) { - $groupUserRepository = $this->doctrine->getRepository("Twake\Workspaces:GroupUser"); - $nbuserGroup = $groupUserRepository->findBy(Array("group" => $workspace->getGroup())); - } - $workspaceUserRepository = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceUser"); - $member = $workspaceUserRepository->findOneBy(Array("workspace_id" => $workspace->getId(), "user_id" => $user->getId())); - - - if ($member != null) { - return false; //Already added - } - - if (!$levelId || $levelId == null) { - $level = $this->wls->getDefaultLevel($workspaceId); - } else { - $levelRepository = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceLevel"); - $level = $levelRepository->findOneBy(Array("workspace_id" => $workspaceId, "id" => $levelId)); - } - $member = new WorkspaceUser($workspace, $user, $level->getId()); - $member->setExterne($asExterne); - - if($asExterne){ - $workspace->setGuestCount($workspace->getGuestCount() + 1); - }else{ - $workspace->setMemberCount($workspace->getMemberCount() + 1); - } - - $groupUserRepository = $this->doctrine->getRepository("Twake\Workspaces:GroupUser"); - $groupmember = $groupUserRepository->findOneBy(Array("group" => $workspace->getGroup(), "user" => $user)); - $group = $groupRepository->findOneBy(["id" => $workspace->getGroup()]); - - if (!$groupmember) { - $groupmember = new GroupUser($workspace->getGroup(), $user); - $groupmember->increaseNbWorkspace(); - $groupmember->setLevel(0); - $group->setMemberCount($group->getMemberCount() + 1); - } else { - $groupmember->increaseNbWorkspace(); - } - $groupmember->setExterne(false); - - $this->doctrine->persist($workspace); - $this->doctrine->persist($member); - $this->doctrine->persist($groupmember); - $this->doctrine->persist($group); - $this->doctrine->flush(); - - - $dataToPush = Array( - "type" => "add", - "workspace_user" => $member->getAsArray($this->doctrine) - ); - $this->pusher->push($dataToPush, "workspace_users/" . $workspace->getId()); - - $dataToPush = Array( - "type" => "add", - "workspace" => $workspace->getAsArray($this->doctrine) - ); - $this->pusher->push($dataToPush, "workspaces_of_user/" . $userId); - - $this->queues->push("workspace:member:added", [ - "company_id" => $workspace->getGroup(), - "workspace_id" => $workspaceId, - "user_id" => $userId - ], ["exchange_type" => "fanout"]); - - $this->updateChannelAfterAddWorkspaceMember($workspace, $user); - - $this->updateUser($user); - - return true; - } - - return false; - } - - public function updateChannelAfterAddWorkspaceMember($workspace, $user) - { - $workspaceMember = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceUser")->findOneBy(Array("workspace_id" => $workspace->getId(), "user_id" => $user->getId())); - if ($workspaceMember) { - $channels = $this->doctrine->getRepository("Twake\Channels:Channel")->findBy( - Array("original_workspace_id" => $workspace->getId(), "direct" => false) - ); - - foreach ($channels as $channel_entity) { - - $isInChannel = false; - $mails = $this->doctrine->getRepository("Twake\Users:Mail")->findBy(Array("user_id" => $user)); - $channelExt = $channel_entity->getExtMembers(); - if (!$channelExt) { - $channelExt = Array(); - } - foreach ($mails as $mail) { - if (in_array($mail->getMail(), $channelExt)) { - $isInChannel = true; - } - } - if (!$channel_entity->getPrivate() && (!$workspaceMember->getExterne() || $workspaceMember->getExterne() && $workspaceMember->getAutoAddExterne() || $workspaceMember->getExterne() && (in_array($user->getId(), $channel_entity->getExtMembers()) || $isInChannel))) { - $member = new \Twake\Channels\Entity\ChannelMember($user->getId() . "", $channel_entity); - $member->setLastMessagesIncrement($channel_entity->getMessagesIncrement()); - $this->doctrine->persist($member); - if (!$workspaceMember->getExterne()) { - //membre du ws - $channel_entity->setMembers(array_merge($channel_entity->getMembers(), [$user->getId()])); - } else { - // externe - if (array_search($user->getId(), $channelExt) === false) { - $channel_entity->setExtMembers(array_merge($channel_entity->getExtMembers(), [$user->getId()])); - } - if (!$workspaceMember->getAutoAddExterne()) { - // c'est un chaviter d'espace - $mails = $this->doctrine->getRepository("Twake\Users:Mail")->findBy(Array("user_id" => $user->getId())); - $channelExt = $channel_entity->getExtMembers(); - foreach ($mails as $mail) { - if (($index = array_search($mail->getMail(), $channelExt)) !== false) { - array_splice($channelExt, $index, 1); - } - } - $channel_entity->setExtMembers($channelExt); - } - } - $this->doctrine->persist($channel_entity); - } - } - $this->doctrine->flush(); - } - } - - public function addMemberByMail($workspaceId, $mail, $asExterne, $currentUserId = null, $sendEmail = true) - { - if ($currentUserId == null - || $this->wls->can($workspaceId, $currentUserId, "workspace:write") - ) { - - $mail = $this->string_cleaner->simplifyMail($mail); - - if (!$this->string_cleaner->verifyMail($mail)) { - return false; - } - - $userRepository = $this->doctrine->getRepository("Twake\Users:User"); - $currentUser = null; - if ($currentUserId) { - $currentUser = $userRepository->find($currentUserId); - } - $user = $userRepository->findOneBy(Array("emailcanonical" => $mail)); - - if ($user) { - $uOk = $this->addMember($workspaceId, $user->getId(), $asExterne); - if ($uOk) { - return "user"; - } - return false; - } - - $mailsRepository = $this->doctrine->getRepository("Twake\Users:Mail"); - $userMail = $mailsRepository->findOneBy(Array("mail" => $mail)); - - if ($userMail) { - $user_id = $userMail->getUserId(); - $user = $userRepository->find($user_id); - $mOk = $this->addMember($workspaceId, $user, $asExterne); - if ($mOk) { - return "user"; - } - return false; - } - - $retour = false; - $workspaceRepository = $this->doctrine->getRepository("Twake\Workspaces:Workspace"); - $workspace = $workspaceRepository->findOneBy(["id"=>$workspaceId]); - - $workspaceUserByMailRepository = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceUserByMail"); - $mailObj = $workspaceUserByMailRepository->findOneBy(Array("workspace_id" => $workspaceId, "mail" => $mail)); - - if ($mailObj == null) { - //Mail not in tables - $userByMail = new WorkspaceUserByMail($workspace, $mail); - $userByMail->setExterne($asExterne); - $userByMail->setAutoAddExterne(false); - $workspace->setPendingCount($workspace->getPendingCount()+1); - $this->doctrine->persist($workspace); - $this->doctrine->persist($userByMail); - $this->doctrine->flush(); - $retour = "mail"; - } - return $retour; - } - - return false; - } - - public function removeMemberByMail($workspaceId, $mail, $currentUserId = null) - { - if ($currentUserId == null - || $this->wls->can($workspaceId, $currentUserId, "workspace:write") - ) { - $mail = $this->string_cleaner->simplifyMail($mail); - - $workspaceRepository = $this->doctrine->getRepository("Twake\Workspaces:Workspace"); - $workspace = $workspaceRepository->findOneBy(["id"=>$workspaceId]); - - $workspaceUserByMailRepository = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceUserByMail"); - $mails = $workspaceUserByMailRepository->findBy(Array("workspace_id" => $workspaceId, "mail" => $mail)); - foreach($mails as $mailguest){ - $this->doctrine->remove($mailguest); - $workspace->setPendingCount($workspace->getPendingCount() - 1); - } - - $userRepository = $this->doctrine->getRepository("Twake\Users:User"); - $user = $userRepository->findOneBy(Array("emailcanonical" => $mail)); - - if ($user) { - return "user " . $this->removeMember($workspaceId, $user->getId()); - } - - $mailsRepository = $this->doctrine->getRepository("Twake\Users:Mail"); - $userMail = $mailsRepository->findOneBy(Array("mail" => $mail)); - - if ($userMail) { - $user_id = $userMail->getUserId(); - $user = $userRepository->find($user_id); - return "mail " . $this->removeMember($workspaceId, $user); - } - - $this->doctrine->flush(); - - return "ok"; - - } - - return "not allowed"; - } - - public function removeMember($workspaceId, $userId, $currentUserId = null) - { - if ($currentUserId == null - || $userId == $currentUserId - || $this->wls->can($workspaceId, $currentUserId, "workspace:write") - ) { - - $total_membres = $this->doctrine->getRepository("Twake\Workspaces:Workspace")->findOneBy(Array("id" => $workspaceId))->getMemberCount(); - - if ($userId == $currentUserId) { - if ($total_membres == 1) { - return false; // can't remove myself if I'm the last - } - } - - $userRepository = $this->doctrine->getRepository("Twake\Users:User"); - $workspaceRepository = $this->doctrine->getRepository("Twake\Workspaces:Workspace"); - - $user = $userRepository->find($userId); - $workspace = $workspaceRepository->findOneBy(["id"=>$workspaceId]); - - $workspaceUserRepository = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceUser"); - $member = $workspaceUserRepository->findOneBy(Array("workspace_id" => $workspace->getId(), "user_id" => $user->getId())); - - if (!$member) { - return false; - } - - $groupUserRepository = $this->doctrine->getRepository("Twake\Workspaces:GroupUser"); - $groupmember = $groupUserRepository->findOneBy(Array("group" => $workspace->getGroup(), "user" => $user)); - $groupmember->decreaseNbWorkspace(); - $this->doctrine->persist($groupmember); - - //If multiple users - if ($total_membres > 1) { - - //Test if other workspace administrators are present - $level = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceLevel")->findOneBy(Array("workspace_id" => $workspace->getId(), "id" => $member->getLevelId())); - - if ($currentUserId != null && $level->getIsAdmin()) { - $other_workspace_admins = $workspaceUserRepository->findBy(Array("level_id" => $member->getLevelId())); - if (count($other_workspace_admins) <= 1) { - header("twake-debug: no other workspace admins"); - return false; - } - } - } - - //Test if other group administrators are present in case this is the last workspace of the user - if ($groupmember->getNbWorkspace() <= 0) { - if ($currentUserId != null && $groupmember->getLevel() == 3) { - $otherGroupAdmin = $groupUserRepository->findBy(Array("group" => $workspace->getGroup(), "level" => 3)); - if (count($otherGroupAdmin) == 1) { - header("twake-debug: no other group admins"); - return false; - } - } - if ($groupmember) { - $this->doctrine->remove($groupmember); - } - $groupmember = null; - } - - - $workspace_user = $member->getAsArray($this->doctrine); - $workspace_user["nbWorkspace"] = $groupmember != null ? $groupmember->getNbWorkspace() : 0; - - $dataToPush = Array( - "type" => "remove", - "workspace_user" => $workspace_user, - ); - $this->pusher->push($dataToPush, "workspace_users/" . $workspace->getId()); - $dataToPush = Array( - "type" => "remove", - "workspace" => $workspace->getAsArray($this->doctrine), - ); - $this->pusher->push($dataToPush, "workspaces_of_user/" . $userId); - - $this->queues->push("workspace:member:removed", [ - "company_id" => $workspace->getGroup(), - "workspace_id" => $workspaceId, - "user_id" => $userId - ], ["exchange_type" => "fanout"]); - - if ($member) { - if($member->getExterne()){ - $workspace->setGuestCount($workspace->getGuestCount() - 1); - }else{ - $workspace->setMemberCount($workspace->getMemberCount() - 1); - } - $this->doctrine->persist($workspace); - $this->doctrine->remove($member); - } - $this->doctrine->flush(); - - $this->delWorkspaceMember_temp($workspace, $user); - - $this->updateUser($user); - - return true; - } - - return false; - } - - public function delWorkspaceMember_temp($workspace, $user) - { - $membersRepo = $this->doctrine->getRepository("Twake\Channels:ChannelMember"); - $channels = $this->doctrine->getRepository("Twake\Channels:Channel")->findBy( - Array("original_workspace_id" => $workspace->getId(), "direct" => false) - ); - - foreach ($channels as $channel_entity) { - - $member = $membersRepo->findOneBy(Array("direct" => $channel_entity->getDirect(), "channel_id" => $channel_entity->getId() . "", "user_id" => $user->getId())); - if ($member) { - $this->doctrine->remove($member); - $channel_entity->setMembers(array_diff($channel_entity->getMembers(), [$user->getId()])); - $channel_entity->setExtMembers(array_diff($channel_entity->getExtMembers(), [$user->getId()])); - } - $this->doctrine->persist($channel_entity); - } - $this->doctrine->flush(); - } - - public function autoAddMemberByNewMail($mail, $userId) - { - $mail = $this->string_cleaner->simplifyMail($mail); - $workspaceUerByMailRepository = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceUserByMail"); - $invitations = $workspaceUerByMailRepository->findBy(Array("mail" => $mail)); - - foreach ($invitations as $userByMail) { - $this->doctrine->remove($userByMail); - $this->doctrine->flush(); - $this->addMember($userByMail->getWorkspaceId(), $userId, $userByMail->getExterne()); - } - - return true; - } - - public function removeAllMember($workspaceId) - { - $workspaceRepository = $this->doctrine->getRepository("Twake\Workspaces:Workspace"); - $workspace = $workspaceRepository->findOneBy(["id"=>$workspaceId]); - - if (!$workspace) { - return false; //Private workspace, only one user - } - - $workspaceUserRepository = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceUser"); - $members = $workspaceUserRepository->findBy(Array("workspace_id" => $workspace->getId())); - - foreach ($members as $member) { - $this->removeMember($workspaceId, $member->getUserId()); - } - - $this->doctrine->flush(); - return true; - - } - - public function getMembersAndPending($workspaceId, $currentUserId, $order = Array("user" => "DESC"), $max = 100, $offset = 0) - { - - $members = $this->getMembers($workspaceId, $currentUserId, $order, $max, $offset); - $list = Array(); - foreach ($members as $member) { - $user = $member["user"]->getAsArray(); - $list[] = Array( - "user" => $user, - "last_access" => $member["last_access"], - "level" => $member["level"], - "externe" => $member["externe"], - "groupLevel" => $member["groupLevel"] - ); - } - - $pendingMails = $this->getPendingMembers($workspaceId, $currentUserId); - - $listMails = Array(); - foreach ($pendingMails as $mail) { - $listMails[] = Array( - "mail" => $mail->getMail(), - "externe" => $mail->getExterne() - ); - } - - return Array( - "mails" => $listMails, - "members" => $list - ); - - } - - public function searchMembers($workspaceId, $currentUserId = null, $query) - { - if ($currentUserId == null - || $this->wls->can($workspaceId, $currentUserId, "") - ) { - $workspaceRepository = $this->doctrine->getRepository("Twake\Workspaces:Workspace"); - $workspaceUserRepository = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceUser"); - - $workspace = $workspaceRepository->findOneBy(["id"=>$workspaceId]); - - if (!$workspace) { - return false; - } - - $usersService = $this->app->getServices()->get("app.users"); - - $results = $usersService->search([ - "name" => $query, - "workspace_id" => $workspaceId, - "scope" => "workspace" - ], true); - - if($results){ - $results = $results["users"]; - }else{ - $results = []; - } - - $members = []; - foreach($results as $user){ - if($user[0]){ - $link = $workspaceUserRepository->findOneBy(Array("workspace_id" => $workspace->getId(), "user_id" => $user[0]->getId())); - $v = $this->memberFromLink($workspace, $currentUserId, $user[0], $link); - if($v){ - $members[] = $v; - } - } - } - - return $members; - - } - - return false; - - } - - public function getMembers($workspaceId, $currentUserId = null, $order = Array("user" => "DESC"), $max = 100, $offset = 0) - { - if ($currentUserId == null - || $this->wls->can($workspaceId, $currentUserId, "") - ) { - $workspaceRepository = $this->doctrine->getRepository("Twake\Workspaces:Workspace"); - $workspaceUserRepository = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceUser"); - $groupUserRepository = $this->doctrine->getRepository("Twake\Workspaces:GroupUser"); - - $workspace = $workspaceRepository->findOneBy(["id"=>$workspaceId]); - - if (!$workspace) { - return false; - } - - $links = $workspaceUserRepository->findBy(Array("workspace_id" => $workspace->getId()), Array(), $max, $offset, "user_id", "ASC"); - $users = Array(); - foreach ($links as $link) { - $userEntity = $link->getUser($this->doctrine); - if($userEntity){ - $v = $this->memberFromLink($workspace, $currentUserId, $userEntity, $link); - if($v){ - $users[] = $v; - } - } - - } - - return $users; - } - - return false; - } - - private function memberFromLink($workspace, $currentUserId, $userEntity, $link){ - $groupUserRepository = $this->doctrine->getRepository("Twake\Workspaces:GroupUser"); - $group_user = $groupUserRepository->findOneBy(Array("user" => $link->getUserId(), "group" => $workspace->getGroup())); - $groupId = $workspace->getGroup(); - - $value = null; - if ($group_user) { - $value = Array( - "user" => $userEntity, - "last_access" => $link->getLastAccess() ? $link->getLastAccess()->getTimestamp() : null, - "level" => $link->getLevelId(), - "externe" => $link->getExterne(), - "workspace_member_id" => $link->getId(), - "groupLevel" => $this->groupManager->getLevel($groupId, $link->getUserId(), $currentUserId) - ); - - } else { - error_log("error group user, " . $link->getUserId() . "," . $workspace->getGroup()); - } - return $value; - } - - public function getPendingMembers($workspaceId, $currentUserId = null, $max = 100, $offset = 0) - { - if ($currentUserId == null - || $this->wls->can($workspaceId, $currentUserId, "") - ) { - $workspaceRepository = $this->doctrine->getRepository("Twake\Workspaces:Workspace"); - $workspaceUserByMailRepository = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceUserByMail"); - - $workspace = $workspaceRepository->findOneBy(["id"=>$workspaceId]); - - if (!$workspace) { - return false; - } - - $mails = $workspaceUserByMailRepository->findBy(Array("workspace_id" => $workspace->getId()), Array(), $max, $offset, "mail", "ASC"); - - return $mails; - } - - return false; - } - - public function getWorkspaces($userId) - { - $groupUserRepository = $this->doctrine->getRepository("Twake\Workspaces:GroupUser"); - $workspaceUserRepository = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceUser"); - $userRepository = $this->doctrine->getRepository("Twake\Users:User"); - $user = $userRepository->find($userId); - if (!$user) { - return false; - } - $link = $workspaceUserRepository->findBy(Array("user_id" => $user->getId())); - $workspaces = Array(); - foreach ($link as $workspaceMember) { - $workspace = $workspaceMember->getWorkspace($this->doctrine); - if ($workspace && !$workspace->getIsDeleted() && $workspace->getGroup()) { - - $levels = $this->wls->getLevels($workspace->getId(), $userId); - $isAdmin = false; - foreach ($levels as $level) { - if($level->getId() === $workspaceMember->getLevelId() && $level->getIsAdmin()){ - $isAdmin = true; - } - } - - if($isAdmin){ - $workspaceMember->setRole("moderator"); - $this->doctrine->persist($workspaceMember); - } - - $groupUser = $groupUserRepository->findOneBy(Array("user" => $user->getId(), "group" => $workspace->getGroup())); - - $companyAdmin = $groupUser ?( $groupUser->getLevel() === 3 || $groupUser->getRole() === "admin" || $groupUser->getRole() === "owner"): false; - - $workspaces[] = Array( - "last_access" => $workspaceMember->getLastAccess(), - "workspace" => $workspace, - "ishidden" => $workspaceMember->getisHidden(), - "isfavorite" => $workspaceMember->getisFavorite(), - "role" => $companyAdmin ? "moderator" : $workspaceMember->getRole(), - "_user_is_admin" => $isAdmin || $companyAdmin || ($workspaceMember->getRole() === "moderator"), - "_user_is_guest" => $groupUser ? $groupUser->getExterne() : $workspaceMember->getExterne(), - "_user_is_organization_administrator" => $companyAdmin, - "hasnotifications" => $workspaceMember->getHasNotifications(), - "isArchived" => $workspaceMember->getWorkspace($this->doctrine)->getIsArchived() - ); - } - } - - return $workspaces; - } - - public function updateCountersIfEmpty($workspaceId){ - $workspaceRepository = $this->doctrine->getRepository("Twake\Workspaces:Workspace"); - $workspace = $workspaceRepository->findOneBy(["id"=>$workspaceId]); - - $update = false; - - if($workspace->getMemberCount() === 0){ - $workspace->setMemberCount(count($this->getMembers($workspaceId))); - $update = true; - } - - if($workspace->getPendingCount() === 0){ - $count = count($this->getPendingMembers($workspaceId)); - $workspace->setPendingCount($count); - $update = $update || ($count > 0); - } - - if($update){ - $this->doctrine->persist($workspace); - $this->doctrine->flush(); - } - - } - - public function updateUser(User $user, $workspaces_ids = null, $groups_ids = null){ - - if(!$workspaces_ids){ - $workspaces_obj = $this->getWorkspaces($user->getId() . ""); - $workspaces_ids = Array(); - $groups_ids = Array(); - foreach ($workspaces_obj as $value) { - if($value && $value["workspace"] && $value["workspace"]->getGroup()){ - $workspaces_ids[] = $value["workspace"]->getId(); - $groups_ids[] = $value["workspace"]->getGroup(); - } - } - $workspaces_ids = array_values(array_unique($workspaces_ids)); - $groups_ids = array_values(array_unique($groups_ids)); - } - - $user->setWorkspaces($workspaces_ids); - $user->setGroups($groups_ids); - $user->setEsIndexed(false); - $this->doctrine->persist($user); - $this->doctrine->flush(); - } - -} diff --git a/twake/backend/core/src/Twake/Workspaces/Services/Workspaces.php b/twake/backend/core/src/Twake/Workspaces/Services/Workspaces.php deleted file mode 100755 index 3db1c322..00000000 --- a/twake/backend/core/src/Twake/Workspaces/Services/Workspaces.php +++ /dev/null @@ -1,793 +0,0 @@ -<?php - -namespace Twake\Workspaces\Services; - - -use Twake\_old_Calendar\Entity\Calendar; -use Twake\_old_Calendar\Entity\LinkCalendarWorkspace; -use Twake\Channels\Entity\Channel; -use Twake\Drive\Entity\DriveLabel; -use Twake\Workspaces\Entity\Workspace; -use Twake\Workspaces\Entity\WorkspaceApp; -use Twake\Workspaces\Entity\WorkspaceLevel; -use Twake\Workspaces\Model\WorkspacesInterface; -use App\App; - -class Workspaces -{ - - /* @var WorkspacesActivities $workspacesActivities */ - var $workspacesActivities; - var $calendarEventService; - var $calendarService; - var $workspaces_service; - private $wls; - private $wms; - private $app; - private $gms; - private $gas; - private $rest; - private $gs; - private $doctrine; - private $string_cleaner; - private $pusher; - private $translate; - - public function __construct(App $app) - { - $this->app = $app; - $this->doctrine = $app->getServices()->get("app.twake_doctrine"); - $this->wls = $app->getServices()->get("app.workspace_levels"); - $this->wms = $app->getServices()->get("app.workspace_members"); - $this->gms = $app->getServices()->get("app.group_managers"); - $this->gas = $app->getServices()->get("app.group_apps"); - $this->gs = $app->getServices()->get("app.groups"); - $this->string_cleaner = $app->getServices()->get("app.string_cleaner"); - $this->pusher = $app->getServices()->get("app.pusher"); - $this->workspacesActivities = $app->getServices()->get("app.workspaces_activities"); - $this->translate = $app->getServices()->get("app.translate"); - $this->calendarService = $app->getServices()->get("app.calendar.calendar"); - $this->calendarEventService = $app->getServices()->get("app.calendar.event"); - $this->workspaces_service = $app->getServices()->get("app.workspaces_apps"); - $this->rest = $app->getServices()->get("app.restclient"); - } - - public function create($name, $groupId = null, $userId = null, $default = false) - { - - if ($groupId == null && $userId == null) { - return false; - } - - if ($name == "") { - return false; - } - - $workspaceRepository = $this->doctrine->getRepository("Twake\Workspaces:Workspace"); - - $workspace = new Workspace($name); - - $uniquename = $this->string_cleaner->simplify($name); - $uniquenameIncremented = $uniquename . "-" . substr(md5(date("U") . rand()), 0, 10); - - $userRepository = $this->doctrine->getRepository("Twake\Users:User"); - $user = $userRepository->find($userId); - - if ($groupId != null) { - $groupRepository = $this->doctrine->getRepository("Twake\Workspaces:Group"); - $group = $groupRepository->find($groupId); - - - $groupUserdRepository = $this->doctrine->getRepository("Twake\Workspaces:GroupUser"); - $group_user = $groupUserdRepository->findOneBy(Array("group" => $group, "user" => $user)); - - if (!$group_user || $group_user->getExterne()) { - return false; - } - - } - - $workspace->setUniqueName($uniquenameIncremented); - - $workspace->setIsDefault($default); - - if ($groupId != null) { - $workspace->setGroup($groupId); - } - - $this->doctrine->persist($workspace); - $this->doctrine->flush(); - - - $this->translate->setDefaultLanguage($user->getLanguage()); - - $this->doctrine->flush(); - - - //Create admin level - $levelAdmin = new WorkspaceLevel(); - $levelAdmin->setWorkspace($workspace->getId()); - $levelAdmin->setLabel("Administrator"); - $levelAdmin->setIsAdmin(true); - $levelAdmin->setIsDefault(false); - - $levelUser = new WorkspaceLevel(); - $levelUser->setWorkspace($workspace->getId()); - $levelUser->setLabel("User"); - $levelUser->setIsAdmin(false); - $levelUser->setIsDefault(true); - - $this->doctrine->persist($levelAdmin); - $this->doctrine->persist($levelUser); - $this->doctrine->flush(); - - //init default apps - $this->init($workspace); - - //Add user in workspace - if ($userId != null) { - $this->wms->addMember($workspace->getId(), $userId, false, $levelAdmin->getId()); - } - - //Create default channels - $secret = $this->app->getContainer()->getParameter("node.secret"); - $uri = $this->app->getContainer()->getParameter("node.api") . - "companies/".$groupId."/workspaces/".$workspace->getId()."/". - "channels/defaultchannel"; - - $data = [ - "resource" => [ - "icon" => "💬", - "name" => "General", - "description" => "", - "visibility" => "public", - "is_default" => true - ], - "options" => [], - "user_id" => $userId - ]; - - $res = $this->rest->post($uri, json_encode($data), [ - CURLOPT_HTTPHEADER => Array( - "Authorization: Token ".$secret, - "Content-Type: application/json" - ), - CURLOPT_CONNECTTIMEOUT => 1, - CURLOPT_TIMEOUT => 1 - ]); - - return $workspace; - - } - - public function init(Workspace $workspace) - { - $groupappsRepository = $this->doctrine->getRepository("Twake\Workspaces:GroupApp"); - $grouppaceapps = $groupappsRepository->findBy(Array("group" => $workspace->getGroup())); - - $workspaceappRepository = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceApp"); - $workspaceapps = $workspaceappRepository->findBy(Array("workspace" => $workspace)); - - if (count($grouppaceapps) != 0 && count($workspaceapps) == 0) { - - foreach ($grouppaceapps as $ga) { - if ($ga->getWorkspaceDefault()) { - - $this->workspaces_service->enableApp($workspace->getId(), $ga->getAppId()); - - } - } - - $this->doctrine->flush(); - } - - if ($workspace->getMemberCount() == 0) { - - $members = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceUser")->findBy(Array("workspace_id" => $workspace->getId())); - $workspace->setMemberCount(count($members)); - $this->doctrine->persist($workspace); - - $this->doctrine->flush(); - } - - //Déjà initialisé - return false; - } - - public function duplicate($original_workspace_id, $name, $config, $currentUserId = null) - { - - $workspaceRepository = $this->doctrine->getRepository("Twake\Workspaces:Workspace"); - $original_workspace = $workspaceRepository->findOneBy(["id"=>$original_workspace_id]); - - if (!$original_workspace) { - return false; - } - - //Verify we have right to access this workspace - if ($currentUserId == null - || $this->wls->can($original_workspace_id, $currentUserId, "workspace:manage") - ) { - - $groupId = $original_workspace->getGroup(); - - $workspace = $this->create($name, $groupId, $currentUserId); - $this->doctrine->persist($workspace); - - if ($workspace && $workspace->getGroup() && !$workspace->getIsArchived() && !$workspace->getisDeleted()) { - - $workspacelevelRepository = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceLevel"); - $original_workspacelevels = $workspacelevelRepository->findBy(Array("workspace_id" => $original_workspace)); - $adminLevelId = 0; - foreach ($original_workspacelevels as $level) { - if ($level->getIsAdmin()) { - $adminLevelId = $level->getId(); - } - } - - //Duplicate Rights - $old_levels_id_to_new_levels = Array(); - $workspacelevels = $workspacelevelRepository->findBy(Array("workspace" => $workspace)); - foreach ($workspacelevels as $level) { - if ($level->getIsAdmin()) { - $old_levels_id_to_new_levels[$adminLevelId . ""] = $level; - } - } - if ($config["users"] == "all" || $config["rights"]) { - foreach ($original_workspacelevels as $level) { - if (!$level->getIsAdmin()) { - $level = new WorkspaceLevel(); - $level->setWorkspace($workspace); - $level->setLabel($level->getLabel()); - $level->setIsAdmin($level->getIsAdmin()); - $level->setIsDefault($level->getIsDefault()); - $this->doctrine->persist($level); - $old_levels_id_to_new_levels[$level->getId() . ""] = $level; - } - } - $this->doctrine->flush(); - } - - //Duplicate users - if ($config["users"] == "all" || $config["users"] == "admins") { - $members = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceUser")->findBy(Array("workspace_id" => $original_workspace->getId())); - foreach ($members as $member) { - if ($member->getUserId() != $currentUserId && ($config["users"] == "all" || ($config["users"] == "admins" && $member->getLevelId() == $adminLevelId))) { - - //Add user with good level - if (isset($old_levels_id_to_new_levels[$member->getLevelId() . ""])) { - $level_id = $old_levels_id_to_new_levels[$member->getLevelId() . ""]->getId(); - $this->wms->addMember($workspace->getId(), $member->getUserId(), false, $level_id); - } - - } - } - } - - //Duplicate applications - $old_applications = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceApp")->findBy(Array("workspace" => $original_workspace)); - $new_applications = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceApp")->findBy(Array("workspace" => $workspace)); - foreach ($old_applications as $old_application) { - $found = false; - foreach ($new_applications as $new_application) { - if ($new_application->getGroupApp()->getId() == $old_application->getGroupApp()->getId()) { - $found = true; - break; - } - } - if (!$found) { - $app = new WorkspaceApp($workspace->getId(), $old_application->getGroupApp()->getId(), $old_application->getAppId()); - $this->doctrine->persist($app); - } - } - foreach ($new_applications as $new_application) { - $found = false; - foreach ($old_applications as $old_application) { - if ($new_application->getGroupApp()->getId() == $old_application->getGroupApp()->getId()) { - $found = true; - break; - } - } - if (!$found) { - $this->doctrine->remove($new_application); - } - } - $this->doctrine->flush(); - - - //Duplicate calendars - if ($config["calendars"]) { - $old_calendarLinks = $this->doctrine->getRepository("Twake\Calendar:LinkCalendarWorkspace")->findBy(Array("workspace" => $original_workspace)); - foreach ($old_calendarLinks as $calendarLink) { - $calendar = $calendarLink->getCalendar(); - if ($calendarLink->getOwner()) { - $new_calendar = new Calendar($calendar->getTitle(), $calendar->getColor(), $calendar->getIcsLink()); - $this->doctrine->persist($new_calendar); - $new_link = new LinkCalendarWorkspace($workspace, $new_calendar, true); - $new_link->setApplication($calendarLink->getApplication()); - } else { - $new_link = new LinkCalendarWorkspace($workspace, $calendar, false, $calendarLink->getCalendarRight()); - } - $this->doctrine->persist($new_link); - } - $this->doctrine->flush(); - } - - - //Duplicate channels - if ($config["streams"]) { - $current_streams = $this->doctrine->getRepository("Twake\Discussion:Stream")->findBy(Array("workspace" => $workspace)); - foreach ($current_streams as $stream) { - $this->doctrine->remove($stream); - } - $old_streams = $this->doctrine->getRepository("Twake\Discussion:Stream")->findBy(Array("workspace" => $original_workspace)); - foreach ($old_streams as $stream) { - $new_stream = new Channel($workspace, $stream->getName(), $stream->getIsPrivate(), $stream->getDescription()); - $new_stream->setType("stream"); - $this->doctrine->persist($new_stream); - - foreach ($stream->getMembers() as $member) { - $new_link = $new_stream->addMember($member); - $this->doctrine->persist($new_link); - } - } - $this->doctrine->flush(); - } - - //Duplicate labels - if ($config["drive_labels"]) { - $old_labels = $this->doctrine->getRepository("Twake\Drive:DriveLabel")->findBy(Array("workspace" => $original_workspace)); - foreach ($old_labels as $label) { - $new_label = new DriveLabel($workspace, $label->getName(), $label->getColor()); - $this->doctrine->persist($new_label); - } - $this->doctrine->flush(); - } - - //Duplicate boards - /*if ($config["boards"]) { - $old_boardLinks = $this->doctrine->getRepository("Twake\Project:LinkBoardWorkspace")->findBy(Array("workspace" => $original_workspace)); - foreach ($old_boardLinks as $boardLink) { - $board = $boardLink->getBoard(); - if ($boardLink->getOwner()) { - $new_board = new Board($board->getTitle(), $board->getDescription(), $board->getisPrivate()); - $new_board->setParticipants($board->getParticipants()); - $this->doctrine->persist($new_board); - - //Add lists - $listOfTasks = $this->doctrine->getRepository("Twake\Project:ListOfTasks")->findBy(Array("board" => $board)); - foreach ($listOfTasks as $listOfTask) { - $new_listOfTask = new ListOfTasks($new_board, $listOfTask->getTitle(), $listOfTask->getColor(), $listOfTask->getUserIdToNotify()); - $this->doctrine->persist($new_listOfTask); - } - - $new_link = new LinkBoardWorkspace($workspace, $new_board, true); - } else { - $new_link = new LinkBoardWorkspace($workspace, $board, false, $boardLink->getBoardRight()); - } - $this->doctrine->persist($new_link); - } - $this->doctrine->flush(); - }*/ - - } - - return $workspace; - - } - - return false; - - } - - public function remove($groupId, $workspaceId, $currentUserId = null) - { - if ($currentUserId == null - || ($this->wls->can($workspaceId, $currentUserId, "workspace:write") - && count($this->wms->getMembers($workspaceId)) <= 1 - ) - || $this->gms->hasPrivileges($this->gms->getLevel($groupId, $currentUserId), "MANAGE_WORKSPACES") - ) { - $workspaceRepository = $this->doctrine->getRepository("Twake\Workspaces:Workspace"); - $workspace = $workspaceRepository->findOneBy(["id"=>$workspaceId]); - - $this->wms->removeAllMember($workspaceId); - - if(!$workspace){ - return true; - } - - $workspace->setIsDeleted(true); - - $this->doctrine->persist($workspace); - $this->doctrine->flush(); - - return true; - } - return false; - } - - public function changeName($workspaceId, $name, $currentUserId = null) - { - if ($currentUserId == null - || $this->wls->can($workspaceId, $currentUserId, "workspace:write") - ) { - - $workspaceRepository = $this->doctrine->getRepository("Twake\Workspaces:Workspace"); - $workspace = $workspaceRepository->findOneBy(["id"=>$workspaceId]); - - $workspace->setName($name); - - $uniquename = $this->string_cleaner->simplify($name); - $uniquenameIncremented = $uniquename . "-" . substr(md5(date("U") . rand()), 0, 10); - - $workspace->setUniqueName($uniquenameIncremented); - $this->doctrine->persist($workspace); - $this->doctrine->flush(); - - return true; - } - - return false; - } - - public function changeLogo($workspaceId, $logo, $currentUserId = null, $uploader = null) - { - if ($currentUserId == null - || $this->wls->can($workspaceId, $currentUserId, "workspace:write") - ) { - - $workspaceRepository = $this->doctrine->getRepository("Twake\Workspaces:Workspace"); - $workspace = $workspaceRepository->findOneBy(["id"=>$workspaceId]); - - $workspace->setLogo($logo); - - $this->doctrine->persist($workspace); - $this->doctrine->flush(); - - return $workspace; - } - - return false; - } - - public function changeWallpaper($workspaceId, $wallpaper, $color = null, $currentUserId = null, $uploader = null) - { - - if ($color == null) { - $color = "#7E7A6D"; - } - - if ($currentUserId == null - || $this->wls->can($workspaceId, $currentUserId, "workspace:write") - ) { - - $workspaceRepository = $this->doctrine->getRepository("Twake\Workspaces:Workspace"); - $workspace = $workspaceRepository->findOneBy(["id"=>$workspaceId]); - - if ($workspace->getWallpaper()) { - if ($uploader) { - $uploader->removeFile($workspace->getWallpaper(), false); - } else { - $workspace->getWallpaper()->deleteFromDisk(); - } - $this->doctrine->remove($workspace->getWallpaper()); - } - $workspace->setWallpaper($wallpaper); - $workspace->setColor($color); - - $this->doctrine->persist($workspace); - $this->doctrine->flush(); - - $datatopush = Array( - "type" => "CHANGE_WORKSPACE", - "data" => Array( - "workspaceId" => $workspace->getId(), - ) - ); - $this->workspacesActivities->recordActivity($workspace, $currentUserId, "workspace", "workspace.activity.workspace.change_wallpaper", "Twake\Workspaces:Workspace", $workspaceId); - $this->pusher->push($datatopush, "group/" . $workspace->getId()); - - return true; - } - - return false; - } - - public function get($workspaceId, $currentUserId = null) - { - - if ($currentUserId == null - || $this->wls->can($workspaceId, $currentUserId, "") - ) { - $workspaceRepository = $this->doctrine->getRepository("Twake\Workspaces:Workspace"); - $workspace = $workspaceRepository->findOneBy(["id"=>$workspaceId]); - - return $workspace; - } - - return false; - } - - public function getWorkspaceByName($string, $currentUserId = null) - { - - $arr = explode("@", $string, 2); - - if (count($arr) != 2) { - return false; - } - - $groupName = $arr[0]; - $workspaceName = $arr[1]; - - - $groupRepository = $this->doctrine->getRepository("Twake\Workspaces:Group"); - $group = $groupRepository->findOneBy(Array("name" => $groupName)); - - if ($group == null) { - return false; - } - - $workspaceRepository = $this->doctrine->getRepository("Twake\Workspaces:Workspace"); - $workspace = $workspaceRepository->findOneBy(Array("uniquename" => $workspaceName, "group" => $group, "is_deleted" => 0)); - - if ($workspace != null) { - return $workspace->getAsArray($this->doctrine); - } else { - return false; - } - - } - - public function archive($groupId, $workspaceId, $currentUserId = null) - { - - if ($currentUserId == null - || ($this->wls->can($workspaceId, $currentUserId, "workspace:write") - && count($this->wms->getMembers($workspaceId)) <= 1 - ) - || $this->gms->hasPrivileges($this->gms->getLevel($groupId, $currentUserId), "MANAGE_WORKSPACES") - ) { - $workspaceRepository = $this->doctrine->getRepository("Twake\Workspaces:Workspace"); - $workspace = $workspaceRepository->findOneBy(["id"=>$workspaceId]); - - $isArchived = $workspace->getIsArchived(); - $is_deleted = $workspace->getIsDeleted(); - - if ($is_deleted == false && $isArchived == false) { - $workspace->setIsArchived(true); - $this->workspacesActivities->recordActivity($workspace, $currentUserId, "workspace", "workspace.activity.workspace.archive", "Twake\Workspaces:Workspace", $workspaceId); - } - - $this->doctrine->persist($workspace); - $this->doctrine->flush(); - - $datatopush = Array( - "type" => "CHANGE_WORKSPACE", - "data" => Array( - "workspaceId" => $workspace->getId(), - ) - ); - $this->pusher->push($datatopush, "group/" . $workspace->getId()); - - return true; - } - return false; - - } - - public function unarchive($groupId, $workspaceId, $currentUserId = null) - { - - if ($currentUserId == null - || ($this->wls->can($workspaceId, $currentUserId, "workspace:write") - && count($this->wms->getMembers($workspaceId)) <= 1 - ) - || $this->gms->hasPrivileges($this->gms->getLevel($groupId, $currentUserId), "MANAGE_WORKSPACES") - ) { - $workspaceRepository = $this->doctrine->getRepository("Twake\Workspaces:Workspace"); - $workspace = $workspaceRepository->findOneBy(["id"=>$workspaceId]); - - $isArchived = $workspace->getIsArchived(); - $is_deleted = $workspace->getIsDeleted(); - - if ($is_deleted == false && $isArchived == true) { - $workspace->setIsArchived(false); - $this->workspacesActivities->recordActivity($workspace, $currentUserId, "workspace", "workspace.activity.workspace.unarchive", "Twake\Workspaces:Workspace", $workspaceId); - } - - $this->doctrine->persist($workspace); - $this->doctrine->flush(); - - $datatopush = Array( - "type" => "CHANGE_WORKSPACE", - "data" => Array( - "workspaceId" => $workspace->getId(), - ) - ); - $this->pusher->push($datatopush, "group/" . $workspace->getId()); - - return true; - } - return false; - - } - - - public function hideOrUnhideWorkspace($workspaceId, $currentUserId = null, $wanted_value = null) - { - if ($currentUserId != null) { - $workspaceRepository = $this->doctrine->getRepository("Twake\Workspaces:Workspace"); - $workspace = $workspaceRepository->findOneBy(Array("id" => $workspaceId)); - - $userRepository = $this->doctrine->getRepository("Twake\Users:User"); - $currentUser = $userRepository->findOneBy(Array("id" => $currentUserId)); - - $workspaceUserRepository = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceUser"); - $workspaceUser = $workspaceUserRepository->findOneBy(Array("workspace_id" => $workspace->getId(), "user_id" => $currentUser->getId())); - - if ($wanted_value === null) { - $ishidden = $workspaceUser->getisHidden(); - $workspaceUser->setisHidden(!$ishidden); - } - $workspaceUser->setisHidden($wanted_value); - - $this->doctrine->persist($workspaceUser); - $this->doctrine->flush(); - - if ($currentUserId) { - $datatopush = Array( - "type" => "USER_WORKSPACES", - "data" => Array( - "workspaceId" => $workspace->getId(), - ) - ); - $this->pusher->push($datatopush, "notifications/" . $currentUserId); - } - - return true; - } - return false; - } - - public function haveNotificationsOrNotWorkspace($workspaceId, $currentUserId = null, $wanted_value = null) - { - if ($currentUserId != null) { - $workspaceRepository = $this->doctrine->getRepository("Twake\Workspaces:Workspace"); - $workspace = $workspaceRepository->findOneBy(Array("id" => $workspaceId)); - - $userRepository = $this->doctrine->getRepository("Twake\Users:User"); - $currentUser = $userRepository->findOneBy(Array("id" => $currentUserId)); - - $workspaceUserRepository = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceUser"); - $workspaceUser = $workspaceUserRepository->findOneBy(Array("workspace_id" => $workspace->getId(), "user_id" => $currentUser->getId())); - - if ($wanted_value === null) { - $hasnotifications = $workspaceUser->getHasNotifications(); - $workspaceUser->setHasNotifications(!$hasnotifications); - } - $workspaceUser->setHasNotifications($wanted_value); - - $notificationPreference = $currentUser->getNotificationPreference(); - $disabled_ws = $notificationPreference["disabled_workspaces"]; - if (in_array($workspaceId . "", $disabled_ws) && $workspaceUser->getHasNotifications()) { - $position = array_search($workspaceId, $disabled_ws); - unset($disabled_ws[$position]); - } - - if (!in_array($workspaceId . "", $disabled_ws) && !$workspaceUser->getHasNotifications()) { - array_push($disabled_ws, $workspaceId); - } - - $this->doctrine->persist($workspaceUser); - $this->doctrine->flush(); - return true; - } - return false; - } - - public function favoriteOrUnfavoriteWorkspace($workspaceId, $currentUserId = null) - { - $result = Array(); - - if ($currentUserId != null) { - $workspaceRepository = $this->doctrine->getRepository("Twake\Workspaces:Workspace"); - $workspace = $workspaceRepository->findOneBy(Array("id" => $workspaceId)); - - $userRepository = $this->doctrine->getRepository("Twake\Users:User"); - $currentUser = $userRepository->findOneBy(Array("id" => $currentUserId)); - - $workspaceUserRepository = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceUser"); - $workspaceUser = $workspaceUserRepository->findOneBy(Array("workspace_id" => $workspace->getId(), "user_id" => $currentUser->getId())); - - $isfavorite = $workspaceUser->getisFavorite(); - $workspaceUser->setisFavorite(!$isfavorite); - $this->doctrine->persist($workspaceUser); - - $this->doctrine->flush(); - - - if ($currentUserId) { - $datatopush = Array( - "type" => "USER_WORKSPACES", - "data" => Array( - "workspaceId" => $workspace->getId(), - ) - ); - $this->pusher->push($datatopush, "notifications/" . $currentUserId); - } - - $result["answer"] = true; - $result["isfavorite"] = $workspaceUser->getisFavorite(); - - return $result; - } - $result["answer"] = false; - return $result; - } - - public function setIsNew($value, $workspaceId, $currentUserId = null) - { - if ($currentUserId != null) { - $workspaceRepository = $this->doctrine->getRepository("Twake\Workspaces:Workspace"); - $workspace = $workspaceRepository->findOneBy(Array("id" => $workspaceId)); - - if ($workspace != null) { - - $workspace->setisNew($value); - $this->doctrine->persist($workspace); - $this->doctrine->flush(); - - return true; - } - return false; - } - return false; - } - - public function search($group_id) - { - -// $terms = Array(); -// foreach ($words as $word){ -// $terms[] = Array( -// "bool" => Array( -// "filter" => Array( -// "regexp" => Array( -// "name" => ".*".$word.".*" -// ) -// ) -// ) -// ); -// } - - $options = Array( - "repository" => "Twake\Workspaces:Workspace", - "index" => "workspace", - "query" => Array( - "bool" => Array( - "must" => Array( - "match_phrase" => Array( - "company_id" => $group_id - ) - ) -// "should" => $terms, -// "minimum_should_match" => 1 - ) - ) - ); - - - $workspaces = $this->doctrine->es_search($options); - $result = []; - - foreach ($workspaces["result"] as $workspace) { - $result[] = $workspace[0]->getAsArray(); - } - - return $result; - - } - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Workspaces/Services/WorkspacesActivities.php b/twake/backend/core/src/Twake/Workspaces/Services/WorkspacesActivities.php deleted file mode 100755 index d1f0aaf9..00000000 --- a/twake/backend/core/src/Twake/Workspaces/Services/WorkspacesActivities.php +++ /dev/null @@ -1,159 +0,0 @@ -<?php -/** - * Created by PhpStorm. - * User: ehlnofey - * Date: 31/07/18 - * Time: 14:45 - */ - -namespace Twake\Workspaces\Services; - - -use Doctrine\ORM\ORMException; -use Dompdf\Exception; -use Twake\Market\Services\MarketApplication; -use Twake\Workspaces\Entity\WorkspaceActivity; -use App\App; - -class WorkspacesActivities -{ - /* @var MarketApplication $applicationManager */ - var $applicationManager; - private $doctrine; - - public function __construct(App $app) - { - $this->doctrine = $app->getServices()->get("app.twake_doctrine"); - $this->applicationManager = $app->getServices()->get("app.applications"); - } - - public static function cmpResumed($a, $b) - { - return $b["date"] - $a["date"]; - } - - public function recordActivity($workspace, $user, $appPublicKey, $title, $objectrepository = null, $objectid = null) - { - $workspace = $this->convertToEntity($workspace, "Twake\Workspaces:Workspace"); - $user = $this->convertToEntity($user, "Twake\Users:User"); - $app = $this->applicationManager->getAppByPublicKey($appPublicKey); - - $workspaceActivity = new WorkspaceActivity($workspace->getId(), $user, $app, $title, $objectrepository, $objectid); - - $this->doctrine->persist($workspaceActivity); - $this->doctrine->flush(); - } - - private function convertToEntity($var, $repository) - { - if (is_string($var)) { - $var = $var; // Cassandra id do nothing - } - - if (is_int($var) || is_string($var) || get_class($var) == "Ramsey\Uuid\Uuid") { - try { - $r = $this->doctrine->getRepository($repository)->find($var); - } catch (ORMException $e) { - $r = null; - } - } else if (is_object($var)) { - $r = $var; - } else { - $r = null; - } - return $r; - - } - - public function getRecordByWorkspace($workspace) - { - $workspace = $this->convertToEntity($workspace, "Twake\Workspaces:Workspace"); - return $this->doctrine->getRepository("Twake\Workspaces:WorkspaceActivity")->findBy(Array("workspace" => $workspace)); - } - - public function getWorkspaceActivityResumed($workspace, $userIdsList, $limit = 100, $offset = 0) - { - $workspace = $this->convertToEntity($workspace, "Twake\Workspaces:Workspace"); - $users = []; - - foreach ($userIdsList as $user) { - $users[] = $this->convertToEntity($user["user"], "Twake\Users:User"); - } - - /* @var WorkspaceActivity[] $activities */ - $activities = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceActivity")->findBy(Array("workspace" => $workspace), Array("id" => "desc"), $limit, $offset); - - // Get activity by unique user/app id - $activities_by_user_app = Array(); - $last_date_by_user_app = Array(); - foreach ($activities as $activity) { - - $key = ($activity->getApp() ? $activity->getApp()->getId() : "") . "_" . ($activity->getUser() ? $activity->getUser()->getId() : ""); - - if (!isset($activities_by_user_app[$key])) { - $activities_by_user_app[$key] = Array(); - } - $addToPrevious = false; - if (isset($last_date_by_user_app[$key]) && abs($activity->getDateAdded()->getTimestamp() - $last_date_by_user_app[$key]) < 60) { - $addToPrevious = true; - } - if ($addToPrevious) { - end($activities_by_user_app[$key]); - $end_pos = key($activities_by_user_app[$key]); - if ($activity->getObjectRepository()) { - try { - $obj = $this->convertToEntity($activity->getObjectId(), $activity->getObjectRepository()); - if ($obj && isset($activities_by_user_app[$key][$end_pos]["objects"])) { - $found = false; - foreach ($activities_by_user_app[$key][$end_pos]["objects"] as $o) { - if ($o["id"] == $obj->getId()) { - $found = true; - break; - } - } - if (!$found && method_exists($obj, "getAsArrayFormated")) { - $activities_by_user_app[$key][$end_pos]["objects"][] = $obj->getAsArrayFormated(); - } - } - } catch (\Exception $e) { - error_log($e); - } - } - } else { - $objects = Array(); - if ($activity->getObjectRepository()) { - try { - $obj = $this->convertToEntity($activity->getObjectId(), $activity->getObjectRepository()); - if ($obj && method_exists($obj, "getAsArrayFormated")) { - $objects[] = $obj->getAsArrayFormated(); - } - } catch (\Exception $e) { - error_log($e); - } - } - if (count($objects) > 0) { - $activities_by_user_app[$key][] = Array( - "user" => ($activity->getUser() ? $activity->getUser()->getAsArray() : null), - "app" => ($activity->getApp() ? $activity->getApp()->getAsSimpleArray() : null), - "date" => $activity->getDateAdded()->getTimestamp(), - "title" => $activity->getTitle(), - "objects" => $objects - ); - } - } - - $last_date_by_user_app[$key] = $activity->getDateAdded()->getTimestamp(); - - } - - - $resumed = Array(); - foreach ($activities_by_user_app as $grouped_activity) { - $resumed = array_merge($resumed, $grouped_activity); - } - - usort($resumed, "self::cmpResumed"); - - return $resumed; - } -} diff --git a/twake/backend/core/src/Twake/Workspaces/Services/WorkspacesApps.php b/twake/backend/core/src/Twake/Workspaces/Services/WorkspacesApps.php deleted file mode 100755 index 6f129a57..00000000 --- a/twake/backend/core/src/Twake/Workspaces/Services/WorkspacesApps.php +++ /dev/null @@ -1,259 +0,0 @@ -<?php - -namespace Twake\Workspaces\Services; - -use Twake\Discussion\Entity\Channel; -use Twake\Workspaces\Entity\GroupApp; -use Twake\Workspaces\Entity\WorkspaceApp; -use Twake\Workspaces\Model\WorkspacesAppsInterface; -use Twake\Workspaces\Model\WorkspacesInterface; -use App\App; - -class WorkspacesApps -{ - - private $wls; - private $doctrine; - private $gms; - private $pusher; - private $channel_system; - private $application_api; - - public function __construct(App $app) - { - $this->doctrine = $app->getServices()->get("app.twake_doctrine"); - $this->wls = $app->getServices()->get("app.workspace_levels"); - $this->gms = $app->getServices()->get("app.group_managers"); - $this->pusher = $app->getServices()->get("app.pusher"); - $this->channel_system = $app->getServices()->get("app.channels.channels_system"); - $this->application_api = $app->getServices()->get("app.applications_api"); - } - - public function getApps($workspaceId, $currentUserId = null, $onlymessageModule = false, $onlyEditableRights = false) - { - - $workspaceRepository = $this->doctrine->getRepository("Twake\Workspaces:Workspace"); - $workspace = $workspaceRepository->findOneBy(["id"=>$workspaceId]); - - if ($workspace == null) { - return false; - } - - if ($currentUserId == null - || $this->wls->can($workspaceId, $currentUserId, "")) { - - //Group apps - $workspaceappsRepository = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceApp"); - $workspaceapps = $workspaceappsRepository->findBy(Array("workspace_id" => $workspace)); - - $applicationRepository = $this->doctrine->getRepository("Twake\Market:Application"); - $groupappsRepository = $this->doctrine->getRepository("Twake\Workspaces:GroupApp"); - - $apps = array(); - foreach ($workspaceapps as $wa) { - - $app = $applicationRepository->findOneBy(Array("id" => $wa->getAppId())); - - if (!$app) { - - $this->disableApp($workspace->getId(), $wa->getAppId()); - - } else { - - - $groupapp = $groupappsRepository->findOneBy(Array("group" => $workspace->getGroupEntity($this->doctrine), "app_id" => $app->getId())); - - if($groupapp){ - - $workspace_app = $groupapp->getAsArray(); - $workspace_app["workspace_id"] = $workspace->getId(); - $workspace_app["app"] = $app->getAsArray(); - - $apps[] = $workspace_app; - - } - - } - } - return $apps; - } - - return false; - - } - - public function disableApp($workspaceId, $applicationId, $currentUserId = null) - { - $current_user_id = $currentUserId; - - $workspaceRepository = $this->doctrine->getRepository("Twake\Workspaces:Workspace"); - $workspace = $workspaceRepository->findOneBy(Array("id" => $workspaceId)); - - $appRepository = $this->doctrine->getRepository("Twake\Market:Application"); - $app = $appRepository->findOneBy(Array("id" => $applicationId)); - - if ($workspace == null || $app == null) { - return false; - } - - if ($currentUserId == null - || $this->wls->can($workspaceId, $currentUserId, "workspace:write")) { - - //Search WorkspaceApp targeting the app - $groupappsRepository = $this->doctrine->getRepository("Twake\Workspaces:GroupApp"); - $groupapp = $groupappsRepository->findOneBy(Array("group" => $workspace->getGroupEntity($this->doctrine), "app_id" => $app->getId())); - - - $groupapp->setWorkspacesCount($groupapp->getWorkspacesCount() - 1); - - $app->setInstallCount($app->getInstallCount() - 1); - $this->doctrine->persist($app); - - $workspaceappsRepository = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceApp"); - $workspaceapp = $workspaceappsRepository->findOneBy(Array("workspace_id" => $workspace, "groupapp_id" => $groupapp->getId())); - - if ($groupapp->getWorkspacesCount() <= 0) { - $this->doctrine->remove($groupapp); - } - - $this->doctrine->remove($workspaceapp); - $this->doctrine->flush(); - - //Remove resource access to workspace - $this->application_api->removeResource($app->getId(), $workspace->getId(), "workspace", $workspace->getId(), $current_user_id); - - $workspace_app = $groupapp->getAsArray(); - $workspace_app["workspace_id"] = $workspace->getId(); - $workspace_app["app"] = $app->getAsArray(); - - $datatopush = Array( - "type" => "remove", - "workspace_app" => $workspace_app - ); - $this->pusher->push($datatopush, "workspace_apps/" . $workspace->getId()); - - $this->channel_system->removeApplicationChannel($app, $workspace); - - return true; - } - - return false; - } - - public function forceApplication($groupId, $appid, $currentUserId = null) - { - $groupRepository = $this->doctrine->getRepository("Twake\Workspaces:Group"); - $group = $groupRepository->find($groupId); - - $applicationRepository = $this->doctrine->getRepository("Twake\Market:Application"); - $application = $applicationRepository->findOneBy(Array("id" => $appid)); - - if ($group == null || $application == null) { - return false; - } - - if ($currentUserId == null - || $this->gms->hasPrivileges( - $this->gms->getLevel($groupId, $currentUserId), - "MANAGE_APPS" - ) - ) { - $workspaces = $group->getWorkspaces(); - foreach ($workspaces as $workspace) { - - $this->enableApp($workspace->getId(), $appid, null); - - } - - return true; - } - return false; - } - - public function enableApp($workspaceId, $applicationId, $currentUserId = null) - { - - - - $current_user_id = $currentUserId; - - $workspaceRepository = $this->doctrine->getRepository("Twake\Workspaces:Workspace"); - $workspace = $workspaceRepository->findOneBy(Array("id" => $workspaceId)); - - $appRepository = $this->doctrine->getRepository("Twake\Market:Application"); - $app = $appRepository->findOneBy(Array("id" => $applicationId)); - - if ($workspace == null || $app == null) { - error_log("hello 2"); - error_log($applicationId); - return false; - } - - if ($currentUserId == null - || $this->wls->can($workspaceId, $currentUserId, "workspace:write")) { - - //Search in GroupApp if the targeted app exists - $groupappsRepository = $this->doctrine->getRepository("Twake\Workspaces:GroupApp"); - $groupapp = $groupappsRepository->findOneBy(Array("group" => $workspace->getGroupEntity($this->doctrine), "app_id" => $app->getId())); - - if ($groupapp == null) { - $groupapp = new GroupApp($workspace->getGroupEntity($this->doctrine), $app->getId()); - $this->doctrine->persist($groupapp); - } - - $groupapp->setPrivilegesCapabilitiesLastRead(new \DateTime()); - $groupapp->setCapabilities($app->getCapabilities()); - $groupapp->setPrivileges($app->getPrivileges()); - $groupapp->setHooks($app->getHooks()); - - //Search if the App is already enabled - $workspaceappsRepository = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceApp"); - $workspaceapp = $workspaceappsRepository->findOneBy(Array("workspace_id" => $workspace, "groupapp_id" => $groupapp->getId())); - - if ($workspaceapp) { - $this->doctrine->persist($groupapp); - $this->doctrine->flush(); - return true; - } - - $groupapp->setWorkspacesCount($groupapp->getWorkspacesCount() + 1); - $this->doctrine->persist($groupapp); - - $app->setInstallCount($app->getInstallCount() + 1); - $this->doctrine->persist($app); - - $workspaceapp = new WorkspaceApp($workspace->getId(), $groupapp->getId(), $groupapp->getAppId()); - $this->doctrine->persist($workspaceapp); - $this->doctrine->flush(); - - //Add resource access to workspace if workspace privilege is requested - if (in_array("workspace", $app->getPrivileges())) { - $this->application_api->addResource($app->getId(), $workspace->getId(), "workspace", $workspace->getId(), $current_user_id); - } - if (in_array("workspace_calendar", $app->getPrivileges())) { - $this->application_api->addResource($app->getId(), $workspace->getId(), "workspace_calendar", $workspace->getId(), $current_user_id); - } - if (in_array("workspace_drive", $app->getPrivileges())) { - $this->application_api->addResource($app->getId(), $workspace->getId(), "workspace_drive", $workspace->getId(), $current_user_id); - } - - $workspace_app = $groupapp->getAsArray(); - $workspace_app["workspace_id"] = $workspace->getId(); - $workspace_app["app"] = $app->getAsArray(); - - $datatopush = Array( - "type" => "add", - "workspace_app" => $workspace_app - ); - $this->pusher->push($datatopush, "workspace_apps/" . $workspace->getId()); - - $this->channel_system->getApplicationChannel($app, $workspace); - - return true; - } - - return false; - } - - -} \ No newline at end of file diff --git a/twake/backend/core/tests/AccessBundle/AccessTest.php b/twake/backend/core/tests/AccessBundle/AccessTest.php deleted file mode 100755 index 6e3f0737..00000000 --- a/twake/backend/core/tests/AccessBundle/AccessTest.php +++ /dev/null @@ -1,821 +0,0 @@ -<?php - -namespace Tests\AccessBundle; - - -require_once __DIR__ . "/../WebTestCaseExtended.php"; - -use Tests\WebTestCaseExtended; -use Twake\Calendar\Entity\Calendar; -use Twake\Channels\Entity\Channel; -use Twake\Discussion\Entity\Message; -use Twake\Users\Entity\User; -use Twake\Workspaces\Entity\WorkspaceUser; -use Twake\Workspaces\Entity\Workspace; -use Twake\Workspaces\Entity\Group; - -class AccessTest extends WebTestCaseExtended -{ - public function testAccess() - { - - -//// ================================================================================================================================================= -//// ================================================================================================================================================= - - // ON CREE UN GROUP POUR CREER NOS DEUX WORKSPACES - $group = new Group("group_for_test"); - $this->get("app.twake_doctrine")->persist($group); - $this->get("app.twake_doctrine")->flush(); - - // ON CREE NOS DEUX WORKSPACES POUR FAIRE NOS TESTS - - //creation du premier workspace - $workspace1 = new Workspace("workspace1_for_test"); - $workspace1->setGroup($group); - $this->get("app.twake_doctrine")->persist($workspace1); - $this->get("app.twake_doctrine")->flush(); - $workspace1_id = $workspace1->getId() . ""; - - //creation du deuxieme workspace - $workspace2 = new Workspace("workspace2_for_test"); - $workspace2->setGroup($group); - $this->get("app.twake_doctrine")->persist($workspace2); - $this->get("app.twake_doctrine")->flush(); - $workspace2_id = $workspace2->getId() . ""; - -//// ================================================================================================================================================= -//// ================================================================================================================================================= - - //ON CREE LES USERS - - $this->removeUserByName("usertest003"); - $this->newUserByName("usertest003"); - - $this->doPost("/ajax/users/login", Array( - "_username" => "usertest003", - "_password" => "usertest003" - )); - $result = $this->doPost("/ajax/users/current/get", Array()); - $user3_id = $result["data"]["id"]; - - - $result = $this->doPost("/ajax/users/logout", Array()); - $this->clearClient(); - - $this->removeUserByName("usertest002"); - $this->newUserByName("usertest002"); - - $this->doPost("/ajax/users/login", Array( - "_username" => "usertest002", - "_password" => "usertest002" - )); - $result = $this->doPost("/ajax/users/current/get", Array()); - $user2_id = $result["data"]["id"]; - - $result = $this->doPost("/ajax/users/logout", Array()); - $this->clearClient(); - - $this->removeUserByName("usertest001"); - $this->newUserByName("usertest001"); - - $this->doPost("/ajax/users/login", Array( - "_username" => "usertest001", - "_password" => "usertest001" - )); - $result = $this->doPost("/ajax/users/current/get", Array()); - $user1_id = $result["data"]["id"]; - - $user1 = $this->get("app.twake_doctrine")->getRepository("Twake\Users:User")->findOneBy(Array("id" => $user1_id)); - $user2 = $this->get("app.twake_doctrine")->getRepository("Twake\Users:User")->findOneBy(Array("id" => $user2_id)); - $user3 = $this->get("app.twake_doctrine")->getRepository("Twake\Users:User")->findOneBy(Array("id" => $user3_id)); - -//// ================================================================================================================================================= -//// ================================================================================================================================================= - - // POUR FAIRE LE LIEN ENTRE LE USER1 ET LE WORKSPACE 1 (RESPECTIVEMENT USER2 WORKSPACE2) -> ON CREE DEUX WORKSPACEUSERS - $workspace1 = $this->get("app.twake_doctrine")->getRepository("Twake\Workspaces:Workspace")->findOneBy(Array("id" => $workspace1_id)); - $workspace2 = $this->get("app.twake_doctrine")->getRepository("Twake\Workspaces:Workspace")->findOneBy(Array("id" => $workspace2_id)); - -// //creation workspaceUser1 - $workspaceUser1 = new WorkspaceUser($workspace1, $user1, null); - $this->get("app.twake_doctrine")->persist($workspaceUser1); - $this->get("app.twake_doctrine")->flush(); - - //creation workspaceUser2 - $workspaceUser2 = new WorkspaceUser($workspace2, $user2, null); - $this->get("app.twake_doctrine")->persist($workspaceUser2); - $this->get("app.twake_doctrine")->flush(); - - //creation workspaceUser3 - $workspaceUser3 = new WorkspaceUser($workspace1, $user3, null); - $this->get("app.twake_doctrine")->persist($workspaceUser3); - $this->get("app.twake_doctrine")->flush(); - -//// ================================================================================================================================================= -//// ================================================================================================================================================= - - //POUR CHAQUE WORKSPACE, ON CREE DEUX CHANNELS - - //pour le workspace1 - $channel1 = new Channel(); - $channel1->setOriginalWorkspaceId($workspace1_id); - $channel1->setMembers(Array($user1_id)); // pour donner acces a user1 au channel1 - $channel1->setExtMembers(Array($user3_id)); - $this->get("app.twake_doctrine")->persist($channel1); - $this->get("app.twake_doctrine")->flush(); - $channel1_ID = $channel1->getId(); - - $channel2 = new Channel(); - $channel2->setOriginalWorkspaceId($workspace1_id); - $channel2->setMembers(Array($user1_id)); // pour donner acces a user1 au channel2 - - $this->get("app.twake_doctrine")->persist($channel2); - $this->get("app.twake_doctrine")->flush(); - $channel2_ID = $channel2->getId(); - - //pour le workspace2 - $channel3 = new Channel(); - $channel3->setOriginalWorkspaceId($workspace2_id); - $channel3->setMembers(Array($user2_id)); // pour donner acces a user2 au channel3 - $this->get("app.twake_doctrine")->persist($channel3); - $this->get("app.twake_doctrine")->flush(); - $channel3_ID = $channel3->getId(); - - $channel4 = new Channel(); - $channel4->setOriginalWorkspaceId($workspace2_id); - $channel4->setMembers(Array($user2_id)); // pour donner acces a user2 au channel4 - $this->get("app.twake_doctrine")->persist($channel4); - $this->get("app.twake_doctrine")->flush(); - $channel4_ID = $channel4->getId(); - -//// ================================================================================================================================================= -//// ================================================================================================================================================= - - // ON CREE DEUX MESSAGES PAR CHANNEL - - //pour le channel 1 - $message1 = new Message($channel1_ID, "null"); - $this->get("app.twake_doctrine")->persist($message1); - $this->get("app.twake_doctrine")->flush(); - $message1_ID = $message1->getId(); - - $message2 = new Message($channel1_ID, "null"); - $this->get("app.twake_doctrine")->persist($message2); - $this->get("app.twake_doctrine")->flush(); - $message2_ID = $message2->getId(); - - //pour le channel 2 - $message3 = new Message($channel2_ID, "null"); - $this->get("app.twake_doctrine")->persist($message3); - $this->get("app.twake_doctrine")->flush(); - $message3_ID = $message3->getId(); - - $message4 = new Message($channel2_ID, "null"); - $this->get("app.twake_doctrine")->persist($message4); - $this->get("app.twake_doctrine")->flush(); - $message4_ID = $message4->getId(); - - //pour le channel 3 - $message5 = new Message($channel3_ID, "null"); - $this->get("app.twake_doctrine")->persist($message5); - $this->get("app.twake_doctrine")->flush(); - $message5_ID = $message5->getId(); - - $message6 = new Message($channel3_ID, "null"); - $this->get("app.twake_doctrine")->persist($message6); - $this->get("app.twake_doctrine")->flush(); - $message6_ID = $message6->getId(); - - //pour le channel 4 - $message7 = new Message($channel4_ID, "null"); - $this->get("app.twake_doctrine")->persist($message7); - $this->get("app.twake_doctrine")->flush(); - $message7_ID = $message7->getId(); - - $message8 = new Message($channel4_ID, "null"); - $this->get("app.twake_doctrine")->persist($message8); - $this->get("app.twake_doctrine")->flush(); - $message8_ID = $message8->getId(); - -//// ================================================================================================================================================= -//// ================================================================================================================================================= - - // ON RECUPERE LA RACINE DE CE NOUVEAU WORKSPACE ET ON CREE DEUX FICHIER - $root = $this->get("app.drive")->getRootEntity($workspace1_id); - $root_id = $root->getId() . ""; - - $object = Array("parent_id" => $root_id, "workspace_id" => $workspace1_id . "", "front_id" => "14005200-48b1-11e9-a0b4-0242ac120005", "name" => "filefortest", "is_directory" => false); - $data = Array("upload_mode" => "chunk", "identifier" => "identifier", "nb_chunk" => 1); - $options = Array("new" => true, "data" => $data, "version" => true); - $result = $this->doPost("/ajax/drive/v2/save", Array( - "object" => $object, - "options" => $options - )); - $idtofind_parent = $result["data"]["object"]["id"]; - - $object = Array("workspace_id" => $workspace1_id, "front_id" => "14005200-48b1-11e9-a0b4-0242ac120005", "name" => "filefortest", "detached" => true, "is_directory" => false); - $options = Array("new" => true, "data" => $data, "version" => true); - $result = $this->doPost("/ajax/drive/v2/save", Array( - "object" => $object, - "options" => $options - )); - $idtofind_detached = $result["data"]["object"]["id"]; - - $object = Array("parent_id" => $root_id, "workspace_id" => $workspace1_id, "front_id" => "14005200-48b1-11e9-a0b4-0242ac120005", "name" => "filefortest", "is_directory" => false); - $data = Array("upload_mode" => "chunk", "identifier" => "identifier", "nb_chunk" => 1); - $options = Array("new" => true, "data" => $data, "version" => true); - $result = $this->doPost("/ajax/drive/v2/save", Array( - "object" => $object, - "options" => $options - )); - $idtofind_shared = $result["data"]["object"]["id"]; - //error_log(print_r($idtofind_shared,true)); - - //$file = $this->get("app.twake_doctrine")->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $idtofind_shared)); -// $file->setShared(true); -// $this->get("app.twake_doctrine")->persist($file); -// $this->get("app.twake_doctrine")->flush(); - - /* - $result = $this->doPost("/ajax/drive/publicaccess", Array( - "file_id" => $idtofind_shared, - "is_editable" => false, - "authorized_members" => Array($user3_id), - "authorized_channels" => Array() - )); - - $file = $this->get("app.twake_doctrine")->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $idtofind_shared)); - $publicdata = $file->getAccesInfo(); - // error_log(print_r($publicdata, true)); - - $this->assertEquals(true, in_array($user3_id, $publicdata["authorized_members"]), "User 3 id is not inside the public data of file shared"); - */ - -//// ================================================================================================================================================= -//// ================================================================================================================================================= - - $calendar = new Calendar($workspace1_id, "calendarfortest", "red"); - $this->get("app.twake_doctrine")->persist($calendar); - $this->get("app.twake_doctrine")->flush(); - - $id_calendar = $calendar->getId(); - -//// ================================================================================================================================================= -//// ================================================================================================================================================= - - //ON VERIFIE ... - - //test que le user1 a acces au workspace1 - $data = Array("type" => "Workspace", "object_id" => $workspace1_id); - - $result = $this->doPost("/ajax/core/access", Array( - "data" => $data - )); - - $this->assertEquals(true, $result["data"], "User 1 don't have acces to the workspace 1 , he should"); - - //test que le user1 n'a pas acces au workspace2 - $data = Array("type" => "Workspace", "object_id" => $workspace2_id); - - $result = $this->doPost("/ajax/core/access", Array( - "data" => $data - )); - - $this->assertEquals(false, $result["data"], "User 1 have acces to the workspace 2 , he shouldn't"); - - - //test que le user1 a acces au channel 1 et 2 du workspace 1 - - $data = Array("type" => "Channel", "object_id" => $channel1_ID); - - $result = $this->doPost("/ajax/core/access", Array( - "data" => $data - )); - - $this->assertEquals(true, $result["data"], "User 1 don't have acces to the channel 1 , he should"); - - - $data = Array("type" => "Channel", "object_id" => $channel2_ID); - - $result = $this->doPost("/ajax/core/access", Array( - "data" => $data - )); - - $this->assertEquals(true, $result["data"], "User 1 don't have acces to the channel 2 , he should"); - - - // test que le user1 n'a pas acces au channel 2 et 3 du workspace 2 - $data = Array("type" => "Channel", "object_id" => $channel3_ID); - - $result = $this->doPost("/ajax/core/access", Array( - "data" => $data - )); - - $this->assertEquals(false, $result["data"], "User 1 have acces to the channel 3 , he shouldn't"); - - - $data = Array("type" => "Channel", "object_id" => $channel4_ID); - - $result = $this->doPost("/ajax/core/access", Array( - "data" => $data - )); - - $this->assertEquals(false, $result["data"], "User 1 have acces to the channel 4 , he shouldn't"); - - //test que le user1 a acces au message 1 par exemple (doit aussi fonctionner avec les messages 2, 3 et 4) - $data = Array("type" => "Message", "object_id" => $message1_ID); - $result = $this->doPost("/ajax/core/access", Array( - "data" => $data - )); - $this->assertEquals(true, $result["data"], "User 1 don't have acces to the message 1 , he should"); - - //test que le user 1 n'a pas acces au message 5 par exemple (doit aussi fonctionner aves les messages 6, 7 et 8) - $data = Array("type" => "Message", "object_id" => $message5_ID); - $result = $this->doPost("/ajax/core/access", Array( - "data" => $data - )); - $this->assertEquals(false, $result["data"], "User 1 have acces to the message 1 , he shouldn't"); - - $data = Array("type" => "DriveFile", "object_id" => $idtofind_parent); - $result = $this->doPost("/ajax/core/access", Array( - "data" => $data - )); - $this->assertEquals(true, $result["data"], "User 1 don't have access to filefortest , he should"); - - $data = Array("type" => "DriveFile", "object_id" => $idtofind_detached); - $result = $this->doPost("/ajax/core/access", Array( - "data" => $data - )); - $this->assertEquals(true, $result["data"], "User 1 doesnt have access to detached file , he should"); - - $result = $this->doPost("/ajax/core/workspaceaccess", Array( - "workspace_id" => $workspace1_id, - )); - - $this->assertEquals(true, $result["data"], "User 1 have access to workspace 1 with special function , he shouldn't"); - - $data = Array("type" => "Calendar", "object_id" => $id_calendar); - - $result = $this->doPost("/ajax/core/access", Array( - "data" => $data - )); - - $this->assertEquals(true, $result["data"], "User 1 don't have access to calendar , he should"); - -//// ================================================================================================================================================= -//// ================================================================================================================================================= - - //FOR USER 2testSaveFiletestSaveFile - - $result = $this->doPost("/ajax/users/logout", Array()); - $this->clearClient(); - - $this->doPost("/ajax/users/login", Array( - "_username" => "usertest002", - "_password" => "usertest002" - )); - - $result = $this->doPost("/ajax/users/current/get", Array()); - $user2_id = $result["data"]["id"]; - - - //test que le user2 a acces au workspace2 - $data = Array("type" => "Workspace", "object_id" => $workspace2_id); - - $result = $this->doPost("/ajax/core/access", Array( - "data" => $data - )); - - $this->assertEquals(true, $result["data"], "User 2 don't have acces to the workspace 2 , he should"); - - //test que le user2 n'a pas acces au workspace1 - $data = Array("type" => "Workspace", "object_id" => $workspace1_id); - - $result = $this->doPost("/ajax/core/access", Array( - "data" => $data - )); - - $this->assertEquals(false, $result["data"], "User 2 have acces to the workspace 1 , he shouldn't"); - - - // test que le user2 a acces au channel 3 et 4 du workspace 2 - - - $data = Array("type" => "Channel", "object_id" => $channel3_ID); - - $result = $this->doPost("/ajax/core/access", Array( - "data" => $data - )); - - $this->assertEquals(true, $result["data"], "User 2 don't have acces to the channel 3 , he should"); - - - $data = Array("type" => "Channel", "object_id" => $channel4_ID); - - $result = $this->doPost("/ajax/core/access", Array( - "data" => $data - )); - - $this->assertEquals(true, $result["data"], "User 2 don't have acces to the channel 4 , he should"); - - - // test que le user2 n'a pas acces au channel 1 et 2 du workspace 1 - $data = Array("type" => "Channel", "object_id" => $channel1_ID); - - $result = $this->doPost("/ajax/core/access", Array( - "data" => $data - )); - - $this->assertEquals(false, $result["data"], "User 2 have acces to the channel 1 , he shouldn't"); - - - $data = Array("type" => "Channel", "object_id" => $channel2_ID); - - $result = $this->doPost("/ajax/core/access", Array( - "data" => $data - )); - - $this->assertEquals(false, $result["data"], "User 2 have acces to the channel 2 , he shouldn't"); - - //test que le user2 a acces au message 5 par exemple (doit aussi fonctionner avec les messages 6, 7 et 8) - $data = Array("type" => "Message", "object_id" => $message5_ID); - - $result = $this->doPost("/ajax/core/access", Array( - "data" => $data - )); - - $this->assertEquals(true, $result["data"], "User 2 don't have acces to the message 5 , he should"); - - //test que le user 2 n'a pas acces au message 1 par exemple (doit aussi fonctionner aves les messages 1, 2 et 3) - $data = Array("type" => "Message", "object_id" => $message1_ID); - - $result = $this->doPost("/ajax/core/access", Array( - "data" => $data - )); - - $this->assertEquals(false, $result["data"], "User 2 have acces to the message 1 , he shouldn't"); - - $data = Array("type" => "DriveFile", "object_id" => $idtofind_parent); - - $result = $this->doPost("/ajax/core/access", Array( - "data" => $data - )); - - $this->assertEquals(false, $result["data"], "User 2 have access to filefortest , he should not"); - - - $data = Array("type" => "Calendar", "object_id" => $id_calendar); - - $result = $this->doPost("/ajax/core/access", Array( - "data" => $data - )); - - $this->assertEquals(false, $result["data"], "User 2 have access to calendar , he should not"); - -//// ================================================================================================================================================= -//// ================================================================================================================================================= - - //FOR USER 3 - - $result = $this->doPost("/ajax/users/logout", Array()); - $this->clearClient(); - - $this->doPost("/ajax/users/login", Array( - "_username" => "usertest003", - "_password" => "usertest003" - )); - - $result = $this->doPost("/ajax/users/current/get", Array()); - $user3_id = $result["data"]["id"]; - - //test que le user1 a acces au workspace1 - $data = Array("type" => "Workspace", "object_id" => $workspace1_id); - - $result = $this->doPost("/ajax/core/access", Array( - "data" => $data - )); - - $this->assertEquals(true, $result["data"], "User 3 don't have acces to the workspace 1 , he should"); - - //test que le user1 n'a pas acces au workspace2 - $data = Array("type" => "Workspace", "object_id" => $workspace2_id); - - $result = $this->doPost("/ajax/core/access", Array( - "data" => $data - )); - - $this->assertEquals(false, $result["data"], "User 3 have acces to the workspace 2 , he shouldn't"); - - - //test que le user1 a acces au channel 1 et 2 du workspace 1 - - $data = Array("type" => "Channel", "object_id" => $channel1_ID); - - $result = $this->doPost("/ajax/core/access", Array( - "data" => $data - )); - - $this->assertEquals(true, $result["data"], "User 3 don't have acces to the channel 1 , he should"); - - - $data = Array("type" => "Channel", "object_id" => $channel2_ID); - - $result = $this->doPost("/ajax/core/access", Array( - "data" => $data - )); - - $this->assertEquals(false, $result["data"], "User 3 have acces to the channel 2 , he should not"); - - - // test que le user1 n'a pas acces au channel 2 et 3 du workspace 2 - $data = Array("type" => "Channel", "object_id" => $channel3_ID); - - $result = $this->doPost("/ajax/core/access", Array( - "data" => $data - )); - - $this->assertEquals(false, $result["data"], "User 3 have acces to the channel 3 , he shouldn't"); - - - $data = Array("type" => "Channel", "object_id" => $channel4_ID); - - $result = $this->doPost("/ajax/core/access", Array( - "data" => $data - )); - - $this->assertEquals(false, $result["data"], "User 3 have acces to the channel 4 , he shouldn't"); - - //test que le user1 a acces au message 1 par exemple (doit aussi fonctionner avec les messages 2, 3 et 4) - $data = Array("type" => "Message", "object_id" => $message1_ID); - - $result = $this->doPost("/ajax/core/access", Array( - "data" => $data - )); - - $this->assertEquals(true, $result["data"], "User 3 don't have acces to the message 1 , he should"); - - $data = Array("type" => "Message", "object_id" => $message3_ID); - - $result = $this->doPost("/ajax/core/access", Array( - "data" => $data - )); - - $this->assertEquals(false, $result["data"], "User 3 have acces to the message 3 , he shouldn't"); - - $data = Array("type" => "Message", "object_id" => $message5_ID); - - $result = $this->doPost("/ajax/core/access", Array( - "data" => $data - )); - - $this->assertEquals(false, $result["data"], "User 3 have acces to the message 5 , he shouldn't"); - - $data = Array("type" => "DriveFile", "object_id" => $idtofind_parent); - - $result = $this->doPost("/ajax/core/access", Array( - "data" => $data - )); - - $this->assertEquals(true, $result["data"], "User 3 don't have access to filefortest , he should"); - - $data = Array("type" => "DriveFile", "object_id" => $idtofind_detached); - - $result = $this->doPost("/ajax/core/access", Array( - "data" => $data - )); - - $this->assertEquals(true, $result["data"], "User 3 doesnt have access to detached file , he should"); - - -//// ================================================================================================================================================= -//// ================================================================================================================================================= - - // ON SUPPRIME TOUT CE QU ON A CREE ET ON VERIFIE QUE LES ENTITES SUPPRIMEES N EXISTENT PLUS - - // pour les messages - $message1 = $this->get("app.twake_doctrine")->getRepository("Twake\Discussion:Message")->findOneBy(Array("id" => $message1->getId() . "")); - $this->get("app.twake_doctrine")->remove($message1); - $this->get("app.twake_doctrine")->flush(); - - $message1 = $this->get("app.twake_doctrine")->getRepository("Twake\Discussion:Message")->findOneBy(Array("id" => $message1->getId() . "")); - $this->assertEquals(null, $message1); - - $message2 = $this->get("app.twake_doctrine")->getRepository("Twake\Discussion:Message")->findOneBy(Array("id" => $message2->getId() . "")); - $this->get("app.twake_doctrine")->remove($message2); - $this->get("app.twake_doctrine")->flush(); - - $message2 = $this->get("app.twake_doctrine")->getRepository("Twake\Discussion:Message")->findOneBy(Array("id" => $message2->getId() . "")); - $this->assertEquals(null, $message2); - - $message3 = $this->get("app.twake_doctrine")->getRepository("Twake\Discussion:Message")->findOneBy(Array("id" => $message3->getId() . "")); - $this->get("app.twake_doctrine")->remove($message3); - $this->get("app.twake_doctrine")->flush(); - - $message3 = $this->get("app.twake_doctrine")->getRepository("Twake\Discussion:Message")->findOneBy(Array("id" => $message3->getId() . "")); - $this->assertEquals(null, $message3); - - $message4 = $this->get("app.twake_doctrine")->getRepository("Twake\Discussion:Message")->findOneBy(Array("id" => $message4->getId() . "")); - $this->get("app.twake_doctrine")->remove($message4); - $this->get("app.twake_doctrine")->flush(); - - $message4 = $this->get("app.twake_doctrine")->getRepository("Twake\Discussion:Message")->findOneBy(Array("id" => $message4->getId() . "")); - $this->assertEquals(null, $message4); - - $message5 = $this->get("app.twake_doctrine")->getRepository("Twake\Discussion:Message")->findOneBy(Array("id" => $message5->getId() . "")); - $this->get("app.twake_doctrine")->remove($message5); - $this->get("app.twake_doctrine")->flush(); - - $message5 = $this->get("app.twake_doctrine")->getRepository("Twake\Discussion:Message")->findOneBy(Array("id" => $message5->getId() . "")); - $this->assertEquals(null, $message5); - - $message6 = $this->get("app.twake_doctrine")->getRepository("Twake\Discussion:Message")->findOneBy(Array("id" => $message6->getId() . "")); - $this->get("app.twake_doctrine")->remove($message6); - $this->get("app.twake_doctrine")->flush(); - - $message6 = $this->get("app.twake_doctrine")->getRepository("Twake\Discussion:Message")->findOneBy(Array("id" => $message6->getId() . "")); - $this->assertEquals(null, $message6); - - $message7 = $this->get("app.twake_doctrine")->getRepository("Twake\Discussion:Message")->findOneBy(Array("id" => $message7->getId() . "")); - $this->get("app.twake_doctrine")->remove($message7); - $this->get("app.twake_doctrine")->flush(); - - $message7 = $this->get("app.twake_doctrine")->getRepository("Twake\Discussion:Message")->findOneBy(Array("id" => $message7->getId() . "")); - $this->assertEquals(null, $message7); - - $message8 = $this->get("app.twake_doctrine")->getRepository("Twake\Discussion:Message")->findOneBy(Array("id" => $message8->getId() . "")); - $this->get("app.twake_doctrine")->remove($message8); - $this->get("app.twake_doctrine")->flush(); - - $message8 = $this->get("app.twake_doctrine")->getRepository("Twake\Discussion:Message")->findOneBy(Array("id" => $message8->getId() . "")); - $this->assertEquals(null, $message8); - - - // pour les channels - $channel1 = $this->get("app.twake_doctrine")->getRepository("Twake\Channels:Channel")->findOneBy(Array("id" => $channel1->getId() . "")); - $this->get("app.twake_doctrine")->remove($channel1); - $this->get("app.twake_doctrine")->flush(); - - $channel1 = $this->get("app.twake_doctrine")->getRepository("Twake\Channels:Channel")->findOneBy(Array("id" => $channel1->getId() . "")); - $this->assertEquals(null, $channel1); - - $channel2 = $this->get("app.twake_doctrine")->getRepository("Twake\Channels:Channel")->findOneBy(Array("id" => $channel2->getId() . "")); - $this->get("app.twake_doctrine")->remove($channel2); - $this->get("app.twake_doctrine")->flush(); - - $channel2 = $this->get("app.twake_doctrine")->getRepository("Twake\Channels:Channel")->findOneBy(Array("id" => $channel2->getId() . "")); - $this->assertEquals(null, $channel2); - - $channel3 = $this->get("app.twake_doctrine")->getRepository("Twake\Channels:Channel")->findOneBy(Array("id" => $channel3->getId() . "")); - $this->get("app.twake_doctrine")->remove($channel3); - $this->get("app.twake_doctrine")->flush(); - - $channel3 = $this->get("app.twake_doctrine")->getRepository("Twake\Channels:Channel")->findOneBy(Array("id" => $channel3->getId() . "")); - $this->assertEquals(null, $channel3); - - $channel4 = $this->get("app.twake_doctrine")->getRepository("Twake\Channels:Channel")->findOneBy(Array("id" => $channel4->getId() . "")); - $this->get("app.twake_doctrine")->remove($channel4); - $this->get("app.twake_doctrine")->flush(); - - $channel4 = $this->get("app.twake_doctrine")->getRepository("Twake\Channels:Channel")->findOneBy(Array("id" => $channel4->getId() . "")); - $this->assertEquals(null, $channel4); - - // pour les worskspaceUser - $workspaceUser1 = $this->get("app.twake_doctrine")->getRepository("Twake\Workspaces:WorkspaceUser")->findBy(Array("workspace_id" => $workspace1_id)); - foreach ($workspaceUser1 as $wp) { - $this->get("app.twake_doctrine")->remove($wp); - $this->get("app.twake_doctrine")->flush(); - } - - $workspaceUser1 = $this->get("app.twake_doctrine")->getRepository("Twake\Workspaces:WorkspaceUser")->findOneBy(Array("workspace_id" => $workspace1_id)); - $this->assertEquals(null, $workspaceUser1); - - $workspaceUser2 = $this->get("app.twake_doctrine")->getRepository("Twake\Workspaces:WorkspaceUser")->findOneBy(Array("workspace_id" => $workspace2_id)); - $this->get("app.twake_doctrine")->remove($workspaceUser2); - $this->get("app.twake_doctrine")->flush(); - - $workspaceUser2 = $this->get("app.twake_doctrine")->getRepository("Twake\Workspaces:WorkspaceUSer")->findOneBy(Array("workspace_id" => $workspace2_id)); - $this->assertEquals(null, $workspaceUser2); - - //pour les fichiers - - $version = $this->get("app.twake_doctrine")->getRepository("Twake\Drive:DriveFileVersion")->findBy(Array("file_id" => $idtofind_parent)); - foreach ($version as $v) { - $this->get("app.twake_doctrine")->remove($v); - $this->get("app.twake_doctrine")->flush(); - } - $version = $this->get("app.twake_doctrine")->getRepository("Twake\Drive:DriveFileVersion")->findBy(Array("file_id" => $idtofind_parent)); - $this->assertEquals(Array(), $version); - - $version = $this->get("app.twake_doctrine")->getRepository("Twake\Drive:DriveFileVersion")->findBy(Array("file_id" => $idtofind_shared)); - foreach ($version as $v) { - $this->get("app.twake_doctrine")->remove($v); - $this->get("app.twake_doctrine")->flush(); - } - $version = $this->get("app.twake_doctrine")->getRepository("Twake\Drive:DriveFileVersion")->findBy(Array("file_id" => $idtofind_shared)); - $this->assertEquals(Array(), $version); - - $version = $this->get("app.twake_doctrine")->getRepository("Twake\Drive:DriveFileVersion")->findBy(Array("file_id" => $idtofind_detached)); - foreach ($version as $v) { - $this->get("app.twake_doctrine")->remove($v); - $this->get("app.twake_doctrine")->flush(); - } - $version = $this->get("app.twake_doctrine")->getRepository("Twake\Drive:DriveFileVersion")->findBy(Array("file_id" => $idtofind_detached)); - $this->assertEquals(Array(), $version); - - $file = $this->get("app.twake_doctrine")->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $idtofind_parent)); - $this->get("app.twake_doctrine")->remove($file); - $this->get("app.twake_doctrine")->flush(); - - $file = $this->get("app.twake_doctrine")->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $idtofind_parent)); - $this->assertEquals(null, $file); - - $file = $this->get("app.twake_doctrine")->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $idtofind_detached)); - $this->get("app.twake_doctrine")->remove($file); - $this->get("app.twake_doctrine")->flush(); - - $file = $this->get("app.twake_doctrine")->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $idtofind_detached)); - $this->assertEquals(null, $file); - - $file = $this->get("app.twake_doctrine")->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $idtofind_shared)); - $this->get("app.twake_doctrine")->remove($file); - $this->get("app.twake_doctrine")->flush(); - - $file = $this->get("app.twake_doctrine")->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $idtofind_shared)); - $this->assertEquals(null, $file); - - //pour calendar - - $calendar = $this->get("app.twake_doctrine")->getRepository("Twake\Calendar:Calendar")->findOneBy(Array("id" => $id_calendar)); - $this->get("app.twake_doctrine")->remove($calendar); - $this->get("app.twake_doctrine")->flush(); - - $calendar = $this->get("app.twake_doctrine")->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $id_calendar)); - $this->assertEquals(null, $calendar); - - // pour les users - $mail1 = $this->get("app.twake_doctrine")->getRepository("Twake\Users:Mail")->findOneBy(Array("user_id" => $user1_id)); - $this->get("app.twake_doctrine")->remove($mail1); - $this->get("app.twake_doctrine")->flush(); - - $mail2 = $this->get("app.twake_doctrine")->getRepository("Twake\Users:Mail")->findOneBy(Array("user_id" => $user2_id)); - $this->get("app.twake_doctrine")->remove($mail2); - $this->get("app.twake_doctrine")->flush(); - - $mail3 = $this->get("app.twake_doctrine")->getRepository("Twake\Users:Mail")->findOneBy(Array("user_id" => $user3_id)); - $this->get("app.twake_doctrine")->remove($mail3); - $this->get("app.twake_doctrine")->flush(); - - $mail1 = $this->get("app.twake_doctrine")->getRepository("Twake\Users:Mail")->findOneBy(Array("user_id" => $user1_id)); - $this->assertEquals(null, $mail1); - - $mail2 = $this->get("app.twake_doctrine")->getRepository("Twake\Users:Mail")->findOneBy(Array("user_id" => $user2_id)); - $this->assertEquals(null, $mail2); - - $mail3 = $this->get("app.twake_doctrine")->getRepository("Twake\Users:Mail")->findOneBy(Array("user_id" => $user3_id)); - $this->assertEquals(null, $mail3); - - $user1 = $this->get("app.twake_doctrine")->getRepository("Twake\Users:User")->findOneBy(Array("id" => $user1_id)); - $this->get("app.twake_doctrine")->remove($user1); - $this->get("app.twake_doctrine")->flush(); - - $user1 = $this->get("app.twake_doctrine")->getRepository("Twake\Users:User")->findOneBy(Array("id" => $user1_id)); - $this->assertEquals(null, $user1); - - $user2 = $this->get("app.twake_doctrine")->getRepository("Twake\Users:User")->findOneBy(Array("id" => $user2_id)); - $this->get("app.twake_doctrine")->remove($user2); - $this->get("app.twake_doctrine")->flush(); - - $user2 = $this->get("app.twake_doctrine")->getRepository("Twake\Users:User")->findOneBy(Array("id" => $user2_id)); - $this->assertEquals(null, $user2); - - $user3 = $this->get("app.twake_doctrine")->getRepository("Twake\Users:User")->findOneBy(Array("id" => $user3_id)); - $this->get("app.twake_doctrine")->remove($user3); - $this->get("app.twake_doctrine")->flush(); - - $user3 = $this->get("app.twake_doctrine")->getRepository("Twake\Users:User")->findOneBy(Array("id" => $user3_id)); - $this->assertEquals(null, $user3); - - // pour les worskspaces - $workspace1 = $this->get("app.twake_doctrine")->getRepository("Twake\Workspaces:Workspace")->findOneBy(Array("id" => $workspace1->getId() . "")); - $this->get("app.twake_doctrine")->remove($workspace1); - - $workspace2 = $this->get("app.twake_doctrine")->getRepository("Twake\Workspaces:Workspace")->findOneBy(Array("id" => $workspace2->getId() . "")); - $this->get("app.twake_doctrine")->remove($workspace2); - - // pour le groupe - $group = $this->get("app.twake_doctrine")->getRepository("Twake\Workspaces:Group")->findOneBy(Array("id" => $group->getId() . "")); - $this->get("app.twake_doctrine")->remove($group); - $this->get("app.twake_doctrine")->flush(); - - $group = $this->get("app.twake_doctrine")->getRepository("Twake\Workspaces:Group")->findOneBy(Array("id" => $group->getId() . "")); - $this->assertEquals(null, $group); - - $workspace1 = $this->get("app.twake_doctrine")->getRepository("Twake\Workspaces:Workspace")->findOneBy(Array("id" => $workspace1->getId() . "")); - $this->assertEquals(null, $workspace1); - - $workspace2 = $this->get("app.twake_doctrine")->getRepository("Twake\Workspaces:Workspace")->findOneBy(Array("id" => $workspace2->getId() . "")); - $this->assertEquals(null, $workspace2); - - } -} \ No newline at end of file diff --git a/twake/backend/core/tests/DriveBundle/DriveCollectionTest.php b/twake/backend/core/tests/DriveBundle/DriveCollectionTest.php deleted file mode 100755 index 983f14a3..00000000 --- a/twake/backend/core/tests/DriveBundle/DriveCollectionTest.php +++ /dev/null @@ -1,506 +0,0 @@ -<?php - -namespace Tests\DriveBundle; - -require_once __DIR__ . "/../WebTestCaseExtended.php"; - -use Tests\WebTestCaseExtended; -use Twake\Workspaces\Entity\Workspace; -use Twake\Workspaces\Entity\Group; -use Twake\Workspaces\Entity\WorkspaceUser; -use Twake\Workspaces\Entity\GroupUser; - -class DriveCollectionTest extends WebTestCaseExtended -{ - public function testSaveFile() - { - - // ON CREE UN GROUP POUR CREER NOTRE WORKSPACE - $group = new Group("group_for_test"); - $this->getDoctrine()->persist($group); - - // ON CREE UN WORKSPACE POUR FAIRE NOS TESTS SUR LES FICHIERS - $workspace = new Workspace("workspace_for_test"); - $workspace->setGroup($group); - $this->getDoctrine()->persist($workspace); - $this->getDoctrine()->persist($group); - $this->getDoctrine()->flush(); - $workspace_id = $workspace->getId() . ""; - - // ON RECUPERE LA RACINE DE CE NOUVEAU WORKSPACE - $root = $this->get("app.drive")->getRootEntity($workspace_id); - $root_id = $root->getId() . ""; - //error_log(print_r("root id: " . $root_id,true)); - - - //ON RECUPERE LA CORBEILLE DE CE NOUVEAU WORKSPACE - $trash = $this->get("app.drive")->getTrashEntity($workspace_id); - $trash_id = $trash->getId() . ""; - //error_log(print_r("trash id: " .$trash_id,true)); - - //ON CREEE UN USER POUR FAIRE NOS TEST ET ON LE CONNECTE - - $this->removeUserByName("usertest001"); - $user1 = $this->newUserByName("usertest001"); - - $this->login($user1->getUsernameCanonical()); - $result = $this->doPost("/ajax/users/current/get", Array()); - $user1_id = $result["data"]["id"]; - $current_date = new \DateTime(); - $current_date = $current_date->getTimestamp(); - - $workspaceUser1 = new WorkspaceUser($workspace, $user1, null); - $groupUser1 = new GroupUser($group, $user1); - $this->getDoctrine()->persist($workspaceUser1); - $this->getDoctrine()->persist($workspace); - $this->getDoctrine()->persist($user1); - $this->getDoctrine()->persist($groupUser1); - $this->getDoctrine()->persist($group); - $this->getDoctrine()->flush(); - - -// ================================================================================================================================================= -// ================================================================================================================================================= - - //ON CREE UN FICHIER QUI VA SE TROUVER A LA RACINE DU WORKSPACE EN SPECIFIANT UN PARENT - - $object = Array("parent_id" => $root_id, "trash" => false, "workspace_id" => $workspace_id, "front_id" => "14005200-48b1-11e9-a0b4-0242ac120005", "name" => "filefortest", "is_directory" => false); - $data = Array("upload_mode" => "chunk", "identifier" => "identifier", "nb_chunk" => 1); - $options = Array(); - $result = $this->doPost("/ajax/drive/save", Array( - "object" => $object, - "options" => $options, - )); - $idtofind_parent = $result["data"]["object"]["id"]; - - $this->assertEquals($workspace_id, $result["data"]["object"]["workspace_id"], "Wrong workspace id for file create with a parent " . json_encode($result)); - $this->assertEquals($root_id, $result["data"]["object"]["parent_id"], "Wrong parent id for file create with a parent"); - $this->assertEquals("14005200-48b1-11e9-a0b4-0242ac120005", $result["data"]["object"]["front_id"], "Wrong front id for file create with a parent"); - $this->assertEquals("filefortest", $result["data"]["object"]["name"], "Wrong name for file create with a parent"); - $this->assertEquals(false, $result["data"]["object"]["trash"], "Wrong is in trash attribut for file create with a parent"); - $this->assertEquals($user1_id, $result["data"]["object"]["last_user"], "Wrong last user for file create with a parent"); - - $added_parent = $result["data"]["object"]["added"]; - $modified_parent = $result["data"]["object"]["modified"]; - $this->assertLessThan(60, $modified_parent - $current_date, "Problem with date modified of filed create with a parent"); - $this->assertLessThan(60, $added_parent - $current_date, "Problem with date added of filed create with a parent"); - $this->assertEquals($modified_parent, $added_parent, "Added date and modified date should be the same"); - - - $fileordirectory = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $idtofind_parent)); - $this->assertEquals($workspace_id, $fileordirectory->getWorkspaceId() . "", "Wrong workspace id for file create with a parent in database"); - $this->assertEquals($root_id, $fileordirectory->getParentId() . "", "Wrong parent id for file create with a parent in database"); - $this->assertEquals("14005200-48b1-11e9-a0b4-0242ac120005", $fileordirectory->getFrontId() . "", "Wrong front id for file create with a parent in database"); - $this->assertEquals("filefortest", $fileordirectory->getName(), "Wrong name for file create with a parent in database"); - $this->assertEquals(false, $fileordirectory->getIsInTrash(), "Wrong is in trash attribut for file create with a parent in database"); - - -// ================================================================================================================================================= -// ================================================================================================================================================= - - // ON CREE UN FICHIER QUI VA SE TROUVER A LA RACINE DU WORKSPACE SANS SPECIFIER UN PARENT - - $object = Array("parent_id" => $root_id, "trash" => false, "workspace_id" => $workspace_id, "front_id" => "14005200-48b1-11e9-a0b4-0242ac120005", "name" => "filefortest-randomothername", "is_directory" => false); - $options = Array(); - $result = $this->doPost("/ajax/drive/save", Array( - "object" => $object, - "options" => $options - )); - $idtofind_root = $result["data"]["object"]["id"]; - - $this->assertEquals($workspace_id, $result["data"]["object"]["workspace_id"], "Wrong workspace id for file create without a parent"); - $this->assertEquals($root_id, $result["data"]["object"]["parent_id"], "Wrong parent id for file create without a parent"); - $this->assertEquals("14005200-48b1-11e9-a0b4-0242ac120005", $result["data"]["object"]["front_id"], "Wrong front id for file create without a parent"); - $this->assertEquals("filefortest-randomothername", $result["data"]["object"]["name"], "Wrong name for file create without a parent"); - $this->assertEquals(false, $result["data"]["object"]["trash"], "Wrong is in trash attribut for file create without a parent"); - $this->assertEquals($user1_id, $result["data"]["object"]["last_user"], "Wrong last user for file create without a parent"); - - $added = $result["data"]["object"]["added"]; - $modified = $result["data"]["object"]["modified"]; - $this->assertLessThan(60, $modified - $current_date, "Problem with date modified of filed create with a parent"); - $this->assertLessThan(60, $added - $current_date, "Problem with date added of filed create with a parent"); - $this->assertEquals($modified, $added, "Added date and modified date should be the same"); - - - $fileordirectory = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $idtofind_root)); - $this->assertEquals($workspace_id, $fileordirectory->getWorkspaceId() . "", "Wrong workspace id for file create without a parent in database"); - $this->assertEquals($root_id, $fileordirectory->getParentId() . "", "Wrong parent id for file create without a parent in database"); - $this->assertEquals("14005200-48b1-11e9-a0b4-0242ac120005", $fileordirectory->getFrontId() . "", "Wrong front id for file create without a parent in database"); - $this->assertEquals(false, $fileordirectory->getIsInTrash(), "Wrong is in trash attribut for file create with a parent in database"); - - -// ================================================================================================================================================= -// ================================================================================================================================================= - // ON CREE UN FICHIER DETACHED - - $object = Array("workspace_id" => $workspace_id, "trash" => false, "front_id" => "14005200-48b1-11e9-a0b4-0242ac120005", "name" => "filefortest-randomothername2", "detached" => true, "is_directory" => false); - $options = Array("new" => true, "data" => $data, "version" => true); - $result = $this->doPost("/ajax/drive/save", Array( - "object" => $object, - "options" => $options - - )); - $idtofind_detached = $result["data"]["object"]["id"]; - - $this->assertEquals($workspace_id, $result["data"]["object"]["workspace_id"], "Wrong workspace id for file create detached"); - $this->assertEquals("detached", $result["data"]["object"]["parent_id"], "Wrong parent id for file create detached"); - $this->assertEquals("14005200-48b1-11e9-a0b4-0242ac120005", $result["data"]["object"]["front_id"], "Wrong front id for file create detached"); - $this->assertEquals(true, $result["data"]["object"]["detached"], "Wrong detached bool for file create without a parent detached"); - $this->assertEquals("filefortest-randomothername2", $result["data"]["object"]["name"], "Wrong name for file create detached"); - $this->assertEquals(false, $result["data"]["object"]["trash"], "Wrong is in trash attribut for file create detached"); - $this->assertEquals($user1_id, $result["data"]["object"]["last_user"], "Wrong last user for file create detached"); - - /*$fileordirectory = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $root_id)); - $this->assertEquals(200000, $fileordirectory->getAsArray()["size"], "Wrong size for the file root"); - $fileordirectory = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $trash_id)); - $this->assertEquals(0, $fileordirectory->getAsArray()["size"], "Wrong size for the file in trash"); -*/ - - $added = $result["data"]["object"]["added"]; - $modified = $result["data"]["object"]["modified"]; - $this->assertLessThan(60, $modified - $current_date, "Problem with date modified of filed create with a parent"); - $this->assertLessThan(60, $added - $current_date, "Problem with date added of filed create with a parent"); - $this->assertEquals($modified, $added, "Added date and modified date should be the same"); - - - $fileordirectory = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $idtofind_detached)); - $this->assertEquals($workspace_id, $fileordirectory->getWorkspaceId() . "", "Wrong workspace id for file create without a parent in database"); - $this->assertEquals("detached", $fileordirectory->getParentId() . "", "Wrong parent id for file create without a parent in database"); - $this->assertEquals("14005200-48b1-11e9-a0b4-0242ac120005", $fileordirectory->getFrontId() . "", "Wrong front id for file create without a parent in database"); - $this->assertEquals(true, $fileordirectory->getDetachedFile(), "Wrong detached bool for file create without a parent detached in database"); - $this->assertEquals(false, $fileordirectory->getIsInTrash(), "Wrong is in trash attribut for file create with a parent in database"); - -// ================================================================================================================================================= -// ================================================================================================================================================= - - //ON VA ATTACHER LE FICHIER DETACHED CREE PRECEDEMENT A LA RACINE - - $object = Array("id" => $idtofind_detached, "parent_id" => $root_id); - $options = Array(); - $result = $this->doPost("/ajax/drive/save", Array( - "object" => $object, - "options" => $options - )); - - $this->assertEquals($workspace_id, $result["data"]["object"]["workspace_id"], "Wrong workspace id for file reatached"); - $this->assertEquals($root_id, $result["data"]["object"]["parent_id"], "Wrong parent id for file reatached"); - $this->assertEquals("14005200-48b1-11e9-a0b4-0242ac120005", $result["data"]["object"]["front_id"], "Wrong front id for file reatached"); - $this->assertEquals(false, $result["data"]["object"]["detached"], "Wrong detached bool for file reatached"); - $this->assertEquals(false, $result["data"]["object"]["trash"], "Wrong is in trash attribut for file create with a parent"); - - //error_log(print_r(json_decode($result->getContent(),true),true)); - /*$this->assertEquals(100000,$result["data"]["object"]["size"], "Wrong size for file create without a parent"); - $fileordirectory = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $root_id)); - $this->assertEquals(300000, $fileordirectory->getAsArray()["size"], "Wrong size for the file root"); - $fileordirectory = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $trash_id)); - $this->assertEquals(0, $fileordirectory->getAsArray()["size"], "Wrong size for the file in trash");*/ - - $fileordirectory = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $idtofind_detached)); - $this->assertEquals($workspace_id, $fileordirectory->getWorkspaceId() . "", "Wrong workspace id for file reatached"); - $this->assertEquals($root_id, $fileordirectory->getParentId() . "", "Wrong parent id for file reatached"); - $this->assertEquals("14005200-48b1-11e9-a0b4-0242ac120005", $fileordirectory->getFrontId() . "", "Wrong front id for file reatached"); - $this->assertEquals(false, $fileordirectory->getDetachedFile(), "Wrong detached bool for file reatached"); - $this->assertEquals(false, $fileordirectory->getIsInTrash(), "Wrong is in trash attribut for file create with a parent in database"); - -// ================================================================================================================================================= -// ================================================================================================================================================= - //ON VA METTRE LE FICHIER PARENT A LA CORBEILLE ET REGARDER SI LES TAILLES SONT CORRECTES - - $object = Array("id" => $idtofind_parent, "trash" => true); - $options = Array(); - $result = $this->doPost("/ajax/drive/save", Array( - "object" => $object, - "options" => $options - )); - - //error_log(print_r($result->getContent(),true)); - $this->assertEquals(true, $result["data"]["object"]["trash"], "File should be in trash he is not"); - - $fileordirectory = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $idtofind_parent)); - $this->assertEquals($trash_id, $fileordirectory->getParentId(), "File has nottrash as parent"); - $this->assertEquals($root_id, $fileordirectory->getOldParent(), "File has nottrash as parent"); - - /*$this->assertEquals(100000,$result["data"]["object"]["size"], "Wrong size for the file"); - $fileordirectory = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $idtofind_parent)); - $this->assertEquals(100000, $fileordirectory->getAsArray()["size"], "Wrong size for the file in database"); - $fileordirectory = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $root_id)); - $this->assertEquals(200000, $fileordirectory->getAsArray()["size"], "Wrong size for the file root"); - $fileordirectory = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $trash_id)); - $this->assertEquals(100000, $fileordirectory->getAsArray()["size"], "Wrong size for the file in trash");*/ - - -// ================================================================================================================================================= -// ================================================================================================================================================= - //ON VA RESTAURER LE FICHIER DEPLACE SUR SON PARENT ET REGARDER SI LES TAILLES SONT CORRECTES - - $object = Array("id" => $idtofind_parent, "trash" => false); - $options = Array(); - $result = $this->doPost("/ajax/drive/save", Array( - "object" => $object, - "options" => $options - )); - - $this->assertEquals(false, $result["data"]["object"]["trash"], "File should not be in trash he is "); - - $fileordirectory = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $idtofind_parent)); - $this->assertEquals($root_id, $fileordirectory->getParentId(), "File has notroot as parent"); - $this->assertEquals("", $fileordirectory->getOldParent(), "File got old parent he should not"); - - /*$this->assertEquals(100000,$result["data"]["object"]["size"], "Wrong size for the file"); - $fileordirectory = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $idtofind_parent)); - $this->assertEquals(100000, $fileordirectory->getAsArray()["size"], "Wrong size for the file in database"); - $fileordirectory = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $root_id)); - $this->assertEquals(300000, $fileordirectory->getAsArray()["size"], "Wrong size for the file root"); - $fileordirectory = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $trash_id)); - $this->assertEquals(0, $fileordirectory->getAsArray()["size"], "Wrong size for the file trash");*/ - - -// ================================================================================================================================================= -// ================================================================================================================================================= - // ON CREE UN DOSSIER A LA RACINE - - $object = Array("workspace_id" => $workspace_id, "front_id" => "14005200-48b1-11e9-a0b4-0242ac120005", "name" => "folderfortest", "is_directory" => true); - $options = Array("new" => true, "data" => $data, "version" => true); - $result = $this->doPost("/ajax/drive/save", Array( - "object" => $object, - "options" => $options, - )); - $idtofind_folder = $result["data"]["object"]["id"]; - - $this->assertEquals($workspace_id, $result["data"]["object"]["workspace_id"], "Wrong workspace id for the folder "); - $this->assertEquals($root_id, $result["data"]["object"]["parent_id"], "Wrong parent id for the folder"); - $this->assertEquals("14005200-48b1-11e9-a0b4-0242ac120005", $result["data"]["object"]["front_id"], "Wrong front id for the folder"); - $this->assertEquals("folderfortest", $result["data"]["object"]["name"], "Wrong name for the folder"); - $this->assertEquals(false, $result["data"]["object"]["trash"], "Wrong is in trash attribut for the folder"); - $this->assertEquals($user1_id, $result["data"]["object"]["last_user"], "Wrong last user for the folder"); - $this->assertEquals(0, $result["data"]["object"]["size"], "Wrong size for the folder"); - - /*$this->assertEquals(0,$result["data"]["object"]["size"], "Wrong size for the folder"); - $fileordirectory = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $idtofind_parent)); - $this->assertEquals(100000, $fileordirectory->getAsArray()["size"], "Wrong size for the file in database"); - $fileordirectory = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $root_id)); - $this->assertEquals(300000, $fileordirectory->getAsArray()["size"], "Wrong size for the file root"); - $fileordirectory = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $trash_id)); - $this->assertEquals(0, $fileordirectory->getAsArray()["size"], "Wrong size for the file trash");*/ - -// ================================================================================================================================================= -// ================================================================================================================================================= - - //ON VA ATTACHER LE FICHIER DETACHED CREE PRECEDEMENT AU DOSSIER QU ON VIENT DE CREER - - $object = Array("id" => $idtofind_detached, "parent_id" => $idtofind_folder); - $options = Array(); - $result = $this->doPost("/ajax/drive/save", Array( - "object" => $object, - "options" => $options - )); - - $this->assertEquals($workspace_id, $result["data"]["object"]["workspace_id"], "Wrong workspace id for file reatached"); - $this->assertEquals($idtofind_folder, $result["data"]["object"]["parent_id"], "Wrong parent id for file reatached"); - $this->assertEquals("14005200-48b1-11e9-a0b4-0242ac120005", $result["data"]["object"]["front_id"], "Wrong front id for file reatached"); - $this->assertEquals(false, $result["data"]["object"]["detached"], "Wrong detached bool for file reatached"); - $this->assertEquals(false, $result["data"]["object"]["trash"], "Wrong is in trash attribut for file create with a parent"); - - $fileordirectory = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $idtofind_detached)); - $this->assertEquals($idtofind_folder, $fileordirectory->getParentId() . "", "Wrong parent for the file which should be in folder"); - - //error_log(print_r($result,true)); - /*$this->assertEquals(100000,$result["data"]["object"]["size"], "Wrong size for file detached"); - $fileordirectory = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $root_id)); - $this->assertEquals(300000, $fileordirectory->getAsArray()["size"], "Wrong size for the file root"); - $fileordirectory = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $trash_id)); - $this->assertEquals(0, $fileordirectory->getAsArray()["size"], "Wrong size for the file in trash"); - $fileordirectory = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $idtofind_folder)); - $this->assertEquals(100000, $fileordirectory->getAsArray()["size"], "Wrong size for the folder");*/ - -// ================================================================================================================================================= -// ================================================================================================================================================= - - //ON MET LE DOSSIER CREE A LA CORBEILLE ET DONC LE FICHIER DETACHED EN MEME TEMPS - - $object = Array("id" => $idtofind_folder, "trash" => true); - $options = Array(); - $result = $this->doPost("/ajax/drive/save", Array( - "object" => $object, - "options" => $options - )); - - $this->assertEquals(true, $result["data"]["object"]["trash"], "Folder should be in trash he is not"); - - $fileordirectory = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $idtofind_folder)); - $this->assertEquals($trash_id, $fileordirectory->getParentId(), "Folder as not trash as parent"); - $this->assertEquals($root_id, $fileordirectory->getOldParent(), "Folder as not trash as parent"); - $this->assertEquals(true, $fileordirectory->getIsInTrash(), "Folder as not trash as parent"); - - $fileordirectory = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $idtofind_detached)); - $this->assertEquals($idtofind_folder, $fileordirectory->getParentId(), "Folder as not trash as parent"); - $this->assertEquals("", $fileordirectory->getOldParent(), "Folder as not trash as parent"); - $this->assertEquals(true, $fileordirectory->getIsInTrash(), "Folder as not trash as parent"); - - /*$this->assertEquals(100000,$result["data"]["object"]["size"], "Wrong size for the folder"); - $fileordirectory = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $idtofind_detached)); - $this->assertEquals(100000, $fileordirectory->getAsArray()["size"], "Wrong size for the file in database"); - $fileordirectory = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $root_id)); - $this->assertEquals(200000, $fileordirectory->getAsArray()["size"], "Wrong size for the file root"); - $fileordirectory = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $trash_id)); - $this->assertEquals(100000, $fileordirectory->getAsArray()["size"], "Wrong size for the file in trash");*/ - -// ================================================================================================================================================= -// ================================================================================================================================================= - - //ON VA RESTAURER LE FICHIER DETACHED QUI SE TROUVE DANS LE DOSSIER LUI MEME A LA CORBEILLE ET VOIR SI IL SE RESTAURE A LA RACINE - - $object = Array("id" => $idtofind_detached, "trash" => false); - $options = Array(); - $result = $this->doPost("/ajax/drive/save", Array( - "object" => $object, - "options" => $options - )); - - $fileson = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findBy(Array("workspace_id" => $workspace_id, "parent_id" => $idtofind_detached)); - - $this->assertEquals(false, $result["data"]["object"]["trash"], "Detached file should not be in trash he is "); - - $fileordirectory = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $idtofind_detached)); - $this->assertEquals($root_id, $fileordirectory->getParentId(), "Detached file as not trash as parent"); - $this->assertEquals("", $fileordirectory->getOldParent(), "Detached file as not trash as parent"); - $this->assertEquals(false, $fileordirectory->getIsInTrash(), "Detached file as not trash as parent"); - - $fileordirectory = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $idtofind_folder)); - $this->assertEquals($trash_id, $fileordirectory->getParentId(), "Folder as not trash as parent"); - $this->assertEquals($root_id, $fileordirectory->getOldParent(), "Folder as not trash as parent"); - $this->assertEquals(true, $fileordirectory->getIsInTrash(), "Folder as not trash as parent"); - - /*$this->assertEquals(100000,$result["data"]["object"]["size"], "Wrong size for the file"); - $fileordirectory = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $idtofind_detached)); - $this->assertEquals(100000, $fileordirectory->getAsArray()["size"], "Wrong size for the file in database"); - $fileordirectory = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $root_id)); - $this->assertEquals(300000, $fileordirectory->getAsArray()["size"], "Wrong size for the file root"); - $fileordirectory = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $trash_id)); - $this->assertEquals(0, $fileordirectory->getAsArray()["size"], "Wrong size for the file in trash"); - $fileordirectory = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $idtofind_folder)); - $this->assertEquals(0, $fileordirectory->getAsArray()["size"], "Wrong size for the file in trash");*/ - -// ================================================================================================================================================= -// ================================================================================================================================================= - - //ON SUPPRIME LE FICHIER DETACHED - - $object = Array("id" => $idtofind_detached); - $options = Array(); - $result = $this->doPost("/ajax/drive/remove", Array( - "object" => $object, - "options" => $options - )); - - $fileordirectory = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $idtofind_detached)); - $this->assertEquals(null, $fileordirectory, "The deleted file still exist"); - - /*$fileordirectory = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $root_id)); - $this->assertEquals(200000, $fileordirectory->getAsArray()["size"], "Wrong size for the file root"); - $fileordirectory = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $trash_id)); - $this->assertEquals(0, $fileordirectory->getAsArray()["size"], "Wrong size for the file trash");*/ - -// ================================================================================================================================================= -// ================================================================================================================================================= - - // ON DEPLACE LE FICHIER PARENT EN LE RATACHANT A UN FICHIER DE LA CORBEILLE - - $object = Array("id" => $idtofind_parent, "parent_id" => $idtofind_folder); - $options = Array(); - $result = $this->doPost("/ajax/drive/save", Array( - "object" => $object, - "options" => $options - )); - - - $fileordirectory = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $idtofind_parent)); - $this->assertEquals($idtofind_folder, $fileordirectory->getParentId(), "File has nottrash as parent"); - $this->assertEquals($root_id, $fileordirectory->getOldParent(), "File has notroot as old parent"); - $this->assertEquals(true, $fileordirectory->getIsInTrash(), "File is not in trash"); - - $fileordirectory = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $idtofind_folder)); - $this->assertEquals($trash_id, $fileordirectory->getParentId(), "Folder is not trash as parent"); - $this->assertEquals(true, $fileordirectory->getIsInTrash(), "Folder is not in trash"); - - $this->assertEquals(true, $result["data"]["object"]["trash"], "Folder should be in trash he is not"); - - /*$fileordirectory = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $idtofind_folder)); - $this->assertEquals(100000, $fileordirectory->getAsArray()["size"], "Wrong size for the file in trash"); - $this->assertEquals(100000,$result["data"]["object"]["size"], "Wrong size for the folder"); - $fileordirectory = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $idtofind_parent)); - $this->assertEquals(100000, $fileordirectory->getAsArray()["size"], "Wrong size for the file in database"); - $fileordirectory = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $root_id)); - $this->assertEquals(100000, $fileordirectory->getAsArray()["size"], "Wrong size for the file root"); - $fileordirectory = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $trash_id)); - $this->assertEquals(100000, $fileordirectory->getAsArray()["size"], "Wrong size for the file in trash");*/ - - //ET ON LE SUPPRIME - - $object = Array("id" => $idtofind_parent); - $options = Array(); - $result = $this->doPost("/ajax/drive/remove", Array( - "object" => $object, - "options" => $options - )); - - $fileordirectory = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $idtofind_parent)); - $this->assertEquals(null, $fileordirectory, "The deleted file still exist"); - - /*$fileordirectory = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $trash_id)); - $this->assertEquals(0, $fileordirectory->getAsArray()["size"], "Wrong size for the file trash"); - $fileordirectory = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $root_id)); - $this->assertEquals(100000, $fileordirectory->getAsArray()["size"], "Wrong size for the file root");*/ - -// ================================================================================================================================================= -// ================================================================================================================================================= - - // ON SUPPRIME TOUS LES FICHIERS DU WORKSPACE, LE WORKSPACE EN LUI MEME AINSI QUE LE GROUPE - - $fileordirectory = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findBy(Array("workspace_id" => $workspace_id)); - foreach ($fileordirectory as $item) { - $this->getDoctrine()->remove($item); - } - $workspace = $this->getDoctrine()->getRepository("Twake\Workspaces:Workspace")->findOneBy(Array("id" => $workspace_id)); - $this->getDoctrine()->remove($workspace); - $group = $this->getDoctrine()->getRepository("Twake\Workspaces:Group")->findOneBy(Array("id" => $group->getId() . "")); - $this->getDoctrine()->remove($group); - $this->getDoctrine()->flush(); - - - $group = $this->getDoctrine()->getRepository("Twake\Workspaces:Group")->findOneBy(Array("id" => $group->getId() . "")); - $this->assertEquals(null, $group); - $workspace = $this->getDoctrine()->getRepository("Twake\Workspaces:Workspace")->findOneBy(Array("id" => $workspace_id)); - $this->assertEquals(null, $workspace); - $fileordirectory = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("workspace_id" => $workspace_id)); - $this->assertEquals(null, $fileordirectory); - - - //ON SUPPRIME TOUTE LES VERSIONS QUI ONT ETE CREE - $version = $this->getDoctrine()->getRepository("Twake\Drive:DriveFileVersion")->findBy(Array("file_id" => $idtofind_parent)); - foreach ($version as $v) { - $this->getDoctrine()->remove($v); - $this->getDoctrine()->flush(); - } - $version = $this->getDoctrine()->getRepository("Twake\Drive:DriveFileVersion")->findBy(Array("file_id" => $idtofind_parent)); - $this->assertEquals(Array(), $version); - - - $version = $this->getDoctrine()->getRepository("Twake\Drive:DriveFileVersion")->findBy(Array("file_id" => $idtofind_root)); - foreach ($version as $v) { - $this->getDoctrine()->remove($v); - $this->getDoctrine()->flush(); - } - $version = $this->getDoctrine()->getRepository("Twake\Drive:DriveFileVersion")->findBy(Array("file_id" => $idtofind_root)); - $this->assertEquals(Array(), $version); - - $version = $this->getDoctrine()->getRepository("Twake\Drive:DriveFileVersion")->findBy(Array("file_id" => $idtofind_detached)); - foreach ($version as $v) { - $this->getDoctrine()->remove($v); - $this->getDoctrine()->flush(); - } - $version = $this->getDoctrine()->getRepository("Twake\Drive:DriveFileVersion")->findBy(Array("file_id" => $idtofind_detached)); - $this->assertEquals(Array(), $version); - - } -} \ No newline at end of file diff --git a/twake/backend/core/tests/UsersBundle/Error200Test.php b/twake/backend/core/tests/UsersBundle/Error200Test.php deleted file mode 100755 index be45346b..00000000 --- a/twake/backend/core/tests/UsersBundle/Error200Test.php +++ /dev/null @@ -1,53 +0,0 @@ -<?php - -namespace Tests\UsersBundle; - -require_once __DIR__ . "/../WebTestCaseExtended.php"; - -use Tests\WebTestCaseExtended; - -class Error200Test extends WebTestCaseExtended - -{ - public function testErrorRemoveSecondaryMail() - { - - $this->removeUserByName("usertest001"); - $user = $this->newUserByName("usertest001"); - - - $result = $this->login($user->getUsernameCanonical()); - - $result = $this->doPost("/ajax/users/account/removemail", Array( - "mail" => "14005200-48b1-11e9-a0b4-0242ac120005" - )); - - $this->assertEquals(Array("badmail"), $result["errors"]); - } - - - public function testCheckNumberForAddNewMail() - { - - $this->removeUserByName("usertest001"); - $user = $this->newUserByName("usertest001", "usertest001@twake_phpunit.fr"); - $this->login($user->getUsernameCanonical()); - - $result = $this->doPost("/ajax/users/account/addmail", Array( - "mail" => "usertest0021@twake_phpunit.fr" - )); - - $token = $result["data"]["token"]; - - $verif = $this->get("app.twake_doctrine")->getRepository("Twake\Users:VerificationNumberMail")->findOneBy(Array("token" => $token)); - $code = $verif->getCleanCode(); - - $result = $this->doPost("/ajax/users/account/addmailverify", Array( - "token" => $token, - "code" => $code - )); - $this->assertEquals(Array(), $result["errors"]); - - } - -} \ No newline at end of file diff --git a/twake/backend/core/tests/UsersBundle/ExterneUserTest.php b/twake/backend/core/tests/UsersBundle/ExterneUserTest.php deleted file mode 100755 index 4e6d597b..00000000 --- a/twake/backend/core/tests/UsersBundle/ExterneUserTest.php +++ /dev/null @@ -1,238 +0,0 @@ -<?php - -namespace Tests\AccessBundle; - -require_once __DIR__ . "/../WebTestCaseExtended.php"; - -use Tests\WebTestCaseExtended; -use Twake\Channels\Entity\Channel; -use Twake\Channels\Entity\ChannelMember; -use Twake\Users\Entity\User; -use Twake\Workspaces\Entity\WorkspaceUser; -use Twake\Workspaces\Entity\Workspace; -use Twake\Workspaces\Entity\Group; -use Twake\Workspaces\Entity\WorkspaceLevel; - -class ExterneUserTest extends WebTestCaseExtended -{ - public function testWexterne() - { - list($g1, $w1, $c1, $u1) = $this->getStuff(); - $u2 = $this->newUserByName("usertest002"); - $this->login($u1->getUsernameCanonical()); - $result = $this->doPost("/ajax/workspace/members/addlist", Array("list" => $u2->getUsernameCanonical() . "|1", "workspaceId" => $w1->getId())); - $this->assertEquals(Array($u2->getUsernameCanonical()), $result["data"]["added"]["user"], "User2 not invited"); - // on se connecte à u2 pour voir ce qu'il en est - $this->assertEquals(true, $this->verifyIfUserIsInChannel($u2, $w1, $c1, true), "u2 is not invited as wexterne"); - } - - public function testChainvite() - { - list($g1, $w1, $c1, $u1) = $this->getStuff(); - $u3 = $this->newUserByName("usertest003"); - $this->login($u1->getUsernameCanonical()); - $result = $this->updateChainviteFromFront($w1, $c1, $u1, [$u3->getId()], []); - $this->assertEquals(true, $this->verifyIfUserIsInChannel($u3, $w1, $c1, true), "u3 is not invited as chanvité"); - $this->updateChainviteFromFront($w1, $c1, $u1, [], [$u3->getId()]); - $this->assertEquals(false, $this->verifyIfUserIsInChannel($u3, $w1, $c1, true), "u3 is still invited as chanvité"); - } - - public function testChainviteMail() - { - list($g1, $w1, $c1, $u1) = $this->getStuff(); - $mail1 = "mail1@benoit.best"; - $mailEntity = $this->getDoctrine()->getRepository("Twake\Users:Mail")->findOneBy(Array("mail" => $mail1)); - if ($mailEntity) { - if ($mailEntity->getUserId()) { - $groupUsers = $this->getDoctrine()->getRepository("Twake\Workspaces:GroupUser")->findBy(Array("user" => $mailEntity->getUserId())); - foreach ($groupUsers as $groupUser) { - $this->getDoctrine()->remove($groupUser); - } - $user = $this->getDoctrine()->getRepository("Twake\Users:User")->find($mailEntity->getUserId()); - $this->getDoctrine()->remove($user); - } - $this->getDoctrine()->remove($mailEntity); - } - $this->getDoctrine()->flush(); - $this->updateChainviteFromFront($w1, $c1, $u1, [$mail1], []); - $u4 = $this->newUserByName("usertest004", $mail1); - $this->assertEquals(true, $this->verifyIfUserIsInChannel($u4, $w1, $c1, true), "u4 is not invited as chanvité"); - // on vérifi que $mail1 n'est plus dans la liste - $this->assertEquals(false, $this->verifyIfUserIsInChannel($u4, $w1, $c1, true, $mail1), "mail1 is still invited as chanvité"); - } - - public function testRemoveAutoAddFromChannel() - { - list($g1, $w1, $c1, $u1) = $this->getStuff(); - $u2 = $this->newUserByName("usertest002"); - $this->login($u1->getUsernameCanonical()); - $result = $this->doPost("/ajax/workspace/members/addlist", Array("list" => $u2->getUsernameCanonical() . "|1", "workspaceId" => $w1->getId())); - $this->updateChainviteFromFront($w1, $c1, $u1, [], [$u2->getId()]); - $this->assertEquals(true, $this->verifyIfUserIsInChannel($u2, $w1, $c1, true), "User can be remove from channel as wexterne"); - } - - public function testRemoveAutoAddFromPrivateChannel() - { - list($g1, $w1, $c1, $u1) = $this->getStuff(); - $c1->setPrivate(true); - $this->getDoctrine()->persist($c1); - $this->getDoctrine()->flush(); - $u2 = $this->newUserByName("usertest002"); - $this->login($u1->getUsernameCanonical()); - $result = $this->doPost("/ajax/workspace/members/addlist", Array("list" => $u2->getUsernameCanonical() . "|1", "workspaceId" => $w1->getId())); - $this->assertEquals(false, $this->verifyIfUserIsInChannel($u2, $w1, $c1, true), "Wexterne is auto add in private channel"); - $this->updateChainviteFromFront($w1, $c1, $u1, [$u2->getId()], []); - $this->assertEquals(true, $this->verifyIfUserIsInChannel($u2, $w1, $c1, true), "Wexterne can't be add in private channel"); - $this->updateChainviteFromFront($w1, $c1, $u1, [], [$u2->getId()]); - $this->assertEquals(false, $this->verifyIfUserIsInChannel($u2, $w1, $c1, true), "Wexterne can't be remove from private channel"); - } - - public function testRemoveUserWexterne() - { - list($g1, $w1, $c1, $u1) = $this->getStuff(); - $this->login($u1->getUsernameCanonical()); - - $u2 = $this->newUserByName("usertest002"); - $result = $this->doPost("/ajax/workspace/members/addlist", Array("list" => $u2->getUsernameCanonical() . "|1", "workspaceId" => $w1->getId())); - - $this->assertEquals(true, $this->verifyIfUserIsInChannel($u2, $w1, $c1, true), "Wexterne was not added in private channel"); - - $this->login($u1->getUsernameCanonical()); - $result = $this->doPost("/ajax/workspace/members/remove", Array("ids" => Array($u2->getId()), "workspaceId" => $w1->getId())); - - - $this->assertEquals(Array("removed" => 1), $result["data"]); - $linkChannel = $this->getDoctrine()->getRepository("Twake\Channels:ChannelMember")->findOneBy(Array("direct" => false, "user_id" => $u2->getId() . "", "channel_id" => $c1->getId())); - $this->assertNull($linkChannel, "Wexterne is still in channel (entity) on remove from workspace"); - $this->assertEquals(false, $this->verifyIfUserIsInChannel($u1, $w1, $c1, true, $u2->getUsernameCanonical()), "Wexterne is still in channel (front) on remove from workspace"); - $this->logout(); - } - - - private function getStuff() - { - $u1 = $this->newUserByName("usertest001"); - $g1 = $this->newGroup($u1->getId(), "grptest1"); - $w1 = $this->newWorkspace("workspace1", $g1); - $w1->setMemberCount(1); - $this->getDoctrine()->persist($w1); - $rightAdmin = new WorkspaceLevel(); - $rightAdmin->setIsAdmin(true); - $rightAdmin->setWorkspace($w1); - $this->getDoctrine()->persist($rightAdmin); - $linkWorkspaceUser = new WorkspaceUser($w1, $u1, $rightAdmin->getId()); - $this->getDoctrine()->persist($linkWorkspaceUser); - - $c1 = $this->newChannel($g1, $w1, $u1); - - return Array($g1, $w1, $c1, $u1); - } - - private function getChannelsFromFront($workspace, $channel, $user) - { - $this->login($user->getUsernameCanonical()); - $result = $this->doPost("/ajax/core/collections/init", Array( - "collection_id" => "channels/workspace/" . $workspace->getId(), - "options" => Array( - "type" => "channels/workspace", - "get_options" => Array( - "workspace_id" => $workspace->getId(), - ), - "_grouped" => true, - ) - )); - if (!isset($result["data"])) { - return []; - } - $channels = $result["data"]["get"]; - return $channels; - } - - private function updateChainviteFromFront($workspace, $channel, $user, $toAdd = [], $toRemove = []) - { - $channels = $this->getChannelsFromFront($workspace, $channel, $user); - $frontChan = $this->getChannelById($channels, $channel->getId()); - if ($frontChan) { - $members = $frontChan["ext_members"]; - foreach ($toAdd as $adding) { - if (!in_array($adding, $members)) { - $members[] = $adding; - } - } - foreach ($toRemove as $removing) { - if (($index = array_search($removing . "", $members)) !== false) { - array_splice($members, $index, 1); - } - } - $frontChan["ext_members"] = $members; - $result = $this->doPost("/ajax/channels/save", Array( - "collection_id" => "", - "object" => $frontChan, - )); - return true; - } - return false; - } - - private function verifyIfUserIsInChannel($user, $workspace, $channel, $hasToBeExterne, $mailOrUsername = null) - { - $this->login($user->getUsernameCanonical()); - $result = $this->doPost("/ajax/core/collections/init", Array( - "collection_id" => "channels/workspace/" . $workspace->getId(), - "options" => Array( - "type" => "channels/workspace", - "get_options" => Array( - "workspace_id" => $workspace->getId(), - ), - "_grouped" => true, - ) - )); - if (isset($result["data"]["get"])) { - $channels = $result["data"]["get"]; - } else { - $channels = []; - } - $isOk = $this->isInChannel($channels, $user, $channel, $hasToBeExterne, $mailOrUsername); - $this->logout(); - return $isOk; - } - - private function isInChannel($channelInWorkspace, $user, $channel, $hasToBeExterne, $mailOrUsername = null) - { - $chan = $this->getChannelById($channelInWorkspace, $channel->getId()); - if ($chan) { - if ($hasToBeExterne) { - $externeMembers = $chan["ext_members"]; - foreach ($externeMembers as $ext) { - if ($mailOrUsername) { - if ($ext == $mailOrUsername) { - return true; - } - } elseif ($ext == $user->getId()) { - return true; - } - } - } else { - $members = $chan["members"]; - foreach ($members as $memb) { - if ($memb == $user->getId()) { - return true; - } - } - } - } - return false; - } - - private function getChannelById($channelList, $channelId) - { - if (is_array($channelList)) { - foreach ($channelList as $chan) { - if ($chan["id"] == $channelId) { - return $chan; - } - } - } - return false; - } -} \ No newline at end of file diff --git a/twake/backend/core/tests/UsersBundle/UserAccountTest.php b/twake/backend/core/tests/UsersBundle/UserAccountTest.php deleted file mode 100755 index 010ebc22..00000000 --- a/twake/backend/core/tests/UsersBundle/UserAccountTest.php +++ /dev/null @@ -1,420 +0,0 @@ -<?php - -namespace Tests\UsersBundle; - -require_once __DIR__ . "/../WebTestCaseExtended.php"; - -use Tests\WebTestCaseExtended; -use Twake\Users\Entity\Mail; - -class UserAccountTest extends WebTestCaseExtended - -//Tests when the user is already connected - -{ - - public function testAlive() - { - - $this->removeUserByName("usertest001"); - $user = $this->newUserByName("usertest001"); - - $alive = $this->get("app.user")->Alive($user->getId()); - - - $lastActivityUser = $user->getLastActivity(); - $currentDate = date("U"); - - $difference = $currentDate - $lastActivityUser; - - $this->assertLessThanOrEqual(10, $difference); - - } - - public function testChangePassword() - - { - - $this->removeUserByName("usertest001"); - $user = $this->newUserByName("usertest001"); - - $result = $this->get("app.user")->changePassword($user->getId(), "usertest001", "newPassword"); - $this->assertEquals(true, $result); - - $result = $this->get("app.user")->checkPassword($user->getId(), "newPassword"); - $this->assertEquals(true, $result); - - $result = $this->get("app.user")->changePassword($user->getId(), "usertest001", "3"); - $this->assertEquals(false, $result); - - $result = $this->get("app.user")->checkPassword($user->getId(), "newPassword"); - $this->assertEquals(true, $result); - - $result = $this->get("app.user")->changePassword($user->getId(), "usertest001", null); - $this->assertEquals(false, $result); - - $result = $this->get("app.user")->checkPassword($user->getId(), "newPassword"); - $this->assertEquals(true, $result); - - $result = $this->get("app.user")->changePassword("14005200-48b1-11e9-a0b4-0242ac120005", "usertest001", "newpasswordbis"); - $this->assertEquals(false, $result); - - $result = $this->get("app.user")->checkPassword($user->getId(), "newPassword"); - $this->assertEquals(true, $result); - - - } - - public function testChangePseudo() - - { - $this->removeUserByName("usertest001"); - $user = $this->newUserByName("usertest001"); - - $result = $this->get("app.user")->changePseudo($user->getId(), "newpseudo"); - $this->assertEquals(true, $result); - $this->assertEquals("newpseudo", $user->getUsername()); - - $this->removeUserByName("newpseudo"); - - - $user2 = $this->newUserByName("usertest002"); - $user = $this->newUserByName("usertest001"); - $result = $this->get("app.user")->changePseudo($user->getId(), "usertest002"); - $this->assertEquals(false, $result); - $this->removeUserByName("usertest002"); - - $result = $this->get("app.user")->changePseudo($user->getId(), null); - $this->assertEquals(false, $result); - - - $result = $this->get("app.user")->changePseudo("14005200-48b1-11e9-a0b4-0242ac120005", "newPseudoBis"); - $this->assertEquals(false, $result); - - - } - - public function testChangeMainMail() - { - - $user = $this->newUserByName("usertest001"); - - $mail = new Mail(); - $mail->setMail("emailforphpunittest@twake_phpunit.fr"); - $mail->setUserId($user->getId()); - $this->getDoctrine()->persist($mail); - $this->getDoctrine()->flush(); - - $id = $mail->getId() . ""; - - $result = $this->get("app.user")->changeMainMail($user->getId(), $id); - - $this->assertEquals(true, $result); - - $this->assertEquals("emailforphpunittest@twake_phpunit.fr", $user->getEmail()); - - $this->getDoctrine()->remove($mail); - $this->removeUserByName("usertest001"); - $this->getDoctrine()->flush(); - - $result = $this->get("app.user")->changeMainMail("14005200-48b1-11e9-a0b4-0242ac120005", $id); - $this->assertEquals(false, $result); - - $user = $this->newUserByName("usertest001"); - $user = $this->getDoctrine()->getRepository("Twake\Users:User")->findOneBy(Array("usernamecanonical" => "usertest001")); - $result = $this->get("app.user")->changeMainMail($user->getId(), "14005200-48b1-11e9-a0b4-0242ac120005"); - $this->assertEquals(false, $result); - - - } - - public function testSetNotificationPreferences() - { - $user = $this->newUserByName("usertest001"); - $notif = Array( - "key1" => "notif1", - "key2" => "notif2" - ); - $result = $this->get("app.user")->setNotificationPreferences($user->getId(), $notif); - $i = 1; - foreach ($notif as $key => $value) { - - $this->assertArrayHasKey($key, $user->getNotificationPreference()); - $this->assertEquals("notif" . $i, $user->getNotificationPreference()[$key]); - $i++; - } - } - - public function testGetNotificationPreferences() - { - $user = $this->newUserByName("usertest001"); - - $result = $this->get("app.user")->getNotificationPreferences($user->getId()); - - $bool = is_array($result); - $this->assertEquals(true, $bool); - - $result = $this->get("app.user")->getNotificationPreferences("14005200-48b1-11e9-a0b4-0242ac120005"); - $this->assertEquals(false, $result); - } - - public function testSetWorkspacesPreferences() - { - $user = $this->newUserByName("usertest001"); - - $preferences = Array( - "key1" => "pref1", - "key2" => "pref2" - ); - - $result = $this->get("app.user")->setWorkspacesPreferences($user->getId(), $preferences); - - $i = 1; - foreach ($preferences as $key => $value) { - - $this->assertArrayHasKey($key, $user->getWorkspacesPreference()); - $this->assertEquals("pref" . $i, $user->getWorkspacesPreference()[$key]); - $i++; - } - - } - - public function testUpdateTutorialStatus() - { - $user = $this->newUserByName("usertest001"); - - $status = Array( - "key1" => "status1", - "key2" => "status2" - ); - - $result = $this->get("app.user")->setTutorialStatus($user->getId(), $status); - $i = 1; - foreach ($status as $key => $value) { - - $this->assertArrayHasKey($key, $user->getTutorialStatus()); - $this->assertEquals("status" . $i, $user->getTutorialStatus()[$key]); - $i++; - } - } - - public function testUpdateLanguage() - { - - $user = $this->newUserByName("usertest001"); - - $result = $this->get("app.user")->updateLanguage($user->getId(), "langage"); - $this->assertEquals("langage", $user->getLanguage()); - - } - - public function testSetIsNew() - { - $user = $this->newUserByName("usertest001"); - $this->assertEquals(true, $user->getisNew()); - - - $result = $this->get("app.user")->setIsNew(false, $user->getId()); - $this->assertEquals(false, $user->getisNew()); - } - - /*public function testUpdateNotificationPreferenceByWorkspace() - { - $user = $this->newUserByName("usertest001"); - $result = $this->login($user->getUsernameCanonical()); - - $result = $this->doPost("/ajax/users/account/update_notifications", Array( - "workspaceId" => "14005200-48b1-11e9-a0b4-0242ac120005", - "appNotification" => Array() - )); - $this->assertEquals("success", $result["data"]); - $this->assertArrayHasKey("14005200-48b1-11e9-a0b4-0242ac120005", $user->getNotificationPreference()["workspace"]); - $this->assertEquals(Array(), $user->getNotificationPreference()["workspace"]["14005200-48b1-11e9-a0b4-0242ac120005"]); - - }*/ - - public function testRemoveUserByUsername() - { - - $user = $this->newUserByName("usertest001"); - - $result = $this->get("app.user")->removeUserByUsername($user->getUsername()); - - $result = $this->doPost("/ajax/users/current/get", Array()); - - $this->assertEquals("disconnected", $result["errors"]["0"]); - - $this->assertEquals(false, $this->get("app.user")->removeUserByUsername($user->getUsername())); - - - } - - public function testThreeNewPassword() - { - - $user = $this->newUserByName("usertest001"); - $result = $this->doPost("/ajax/users/recover/mail", Array( - "email" => "usertest001@twake_phpunit.fr" - )); - $token = $result["data"]["token"]; - $boolean = false; - if (is_string($token) && strlen($result["data"]["token"]) > 5) { - $boolean = true; - } - $this->assertEquals(true, $boolean); - -//--------------------------------------------------------------------------- - - $result = $this->doPost("/ajax/users/recover/mail", Array( - "email" => "emai1fortest@twake_phpunit.fr" - )); - $this->assertEquals("nosuchmail", $result["errors"][0]); - - $verif = $this->getDoctrine()->getRepository("Twake\Users:VerificationNumberMail")->findOneBy(Array("token" => $token)); - $code = $verif->getcode(); - $this->getDoctrine()->persist($verif); - $this->getDoctrine()->flush(); - - - $result = $this->doPost("/ajax/users/recover/verify", Array( - "code" => $code, - "token" => $token - )); - - $res = $result["data"]["status"]; - $this->assertEquals("success", $res); - - $result = $this->doPost("/ajax/users/recover/verify", Array( - "code" => $code, - "token" => "tokenfortest" - )); - - $res = $result["errors"][0]; - $this->assertEquals("badcodeortoken", $res); - - -//------------------------------------------------------------------------------- - - $result = $this->doPost("/ajax/users/recover/password", Array( - "code" => $code, - "token" => $token, - "password" => "usertest001" - )); - - $res = $result["data"]["status"]; - $this->assertEquals("success", $res); - - $result = $this->doPost("/ajax/users/recover/password", Array( - "code" => $code, - "token" => "tokenfortest", - "password" => "usertest001" - )); - - $res = $result["errors"][0]; - $this->assertEquals("badcodeortoken", $res); - - } - - public function testSubscribeMail() - { - - $user = $this->newUserByName("usertest001"); - $user->setMailVerified(false); - $user->setisNew(true); - $this->getDoctrine()->persist($user); - $mail = $this->getDoctrine()->getRepository("Twake\Users:Mail")->findOneBy(Array("mail" => "usertest001@twake_phpunit.fr")); - $this->getDoctrine()->remove($mail); - $this->getDoctrine()->flush(); - - - $result = $this->doPost("/ajax/users/subscribe/mail", Array( - "email" => "usertest001@twake_phpunit.fr", - "username" => "usertestfortest", - "password" => "usertest001", - "name" => "namefortest", - "firstname" => "firstnamefortest", - "phone" => "phonefortest" - )); - - $result = $this->doPost("/ajax/users/current/get", Array()); - $this->assertEquals("disconnected", $result["errors"]["0"]); - $this->assertEquals(Array(), $result["data"]); - - - $this->removeUserByName("usertest001"); - $result = $this->doPost("/ajax/users/subscribe/mail", Array( - "email" => "usertest001@twake_phpunit.fr", - "username" => "usertest001", - "password" => "usertest001", - "name" => "namefortest", - "firstname" => "firstnamefortest", - "phone" => "phonefortest" - )); - - $token = $result["data"]["token"]; - - $boolean = false; - if (is_string($token) && strlen($result["data"]["token"]) > 5) { - $boolean = true; - } - $this->assertEquals(true, $boolean); - - $user = $this->newUserByName("usertest001"); - $user = $this->getDoctrine()->getRepository("Twake\Users:User")->findOneBy(Array("usernamecanonical" => "usertest001")); - - $result = $this->doPost("/ajax/users/subscribe/mail", Array( - "email" => "usertest001_notused@twake_phpunit.fr", - "username" => "usertest001", - "password" => "usertest001", - "name" => "namefortest", - "firstname" => "firstnamefortest", - "phone" => "phonefortest" - )); - - $result = $result["errors"][0]; - $this->assertEquals("usernamealreadytaken", $result, "testing username available"); - - $result = $this->doPost("/ajax/users/subscribe/mail", Array( - "email" => "12345678", - "username" => "usertestfortest", - "password" => "usertest00D222", - "name" => "namefortest", - "firstname" => "firstnamefortest", - "phone" => "phonefortest" - )); - $result = $result["errors"][0]; - $this->assertEquals("mailalreadytaken", $result, "Testing wrong mail format"); - - - $result = $this->doPost("/ajax/users/subscribe/mail", Array( - "email" => "usertest001@twake_phpunit.fr", - "username" => "usertestfortest", - "password" => "usertest001", - "name" => "namefortest", - "firstname" => "firstnamefortest", - "phone" => "phonefortest" - )); - $result = $result["errors"][0]; - $this->assertEquals("mailalreadytaken", $result, "testing mail available"); - - - $mailfortest = new Mail(); - $mailfortest->setMail("emailforphpunittest@twake_phpunit.fr"); - $this->getDoctrine()->persist($mailfortest); - $this->getDoctrine()->flush(); - - $result = $this->doPost("/ajax/users/subscribe/mail", Array( - "email" => "emailforphpunittest@twake_phpunit.fr", - "username" => "usertestfortest", - "password" => "usertest001", - "name" => "namefortest", - "firstname" => "firstnamefortest", - "phone" => "phonefortest" - )); - - $this->removeUserByName("usertest001"); - - - } - -} \ No newline at end of file diff --git a/twake/backend/core/tests/UsersBundle/UserLoginTest.php b/twake/backend/core/tests/UsersBundle/UserLoginTest.php deleted file mode 100755 index a06d581e..00000000 --- a/twake/backend/core/tests/UsersBundle/UserLoginTest.php +++ /dev/null @@ -1,355 +0,0 @@ -<?php - -namespace Tests\UsersBundle; - -require_once __DIR__ . "/../WebTestCaseExtended.php"; - -use Tests\WebTestCaseExtended; -use Twake\Users\Entity\Device; - -class UserLoginTest extends WebTestCaseExtended - -//Tests when the user is not connected yet - -{ - - public function testLoginCorrect() - - { - $user = $this->newUserByName("usertest001"); - - - $this->login("usertest001"); - $result = $this->doPost("/ajax/users/current/get", Array()); - - $name = $result["data"]["username"]; - $this->assertEquals("usertest001", $name); - - - } - - public function testLoginIncorrect() - { - $user = $this->newUserByName("usertest001"); - $result = $this->doPost("/ajax/users/login", Array( - "_username" => "wrong email", - - )); - - $result = $this->doPost("/ajax/users/current/get", Array()); - - $this->assertEquals("disconnected", $result["errors"]["0"]); - $this->assertEquals(Array(), $result["data"]); - - } - - public function testEmailCorrect() - { - $user = $this->newUserByName("usertest001"); - - $result = $this->doPost("/ajax/users/login", Array( - "_username" => "usertest001@twake_phpunit.fr", - "_password" => "usertest001" - )); - - - $result = $this->doPost("/ajax/users/current/get", Array()); - $email = $result["data"]["mails"][0]["email"]; - $this->assertEquals("usertest001@twake_phpunit.fr", $email); - } - - public function testPasswordIncorrect() - { - $user = $this->newUserByName("usertest001"); - - - $result = $this->doPost("/ajax/users/login", Array( - "_username" => "usertest001", - "_password" => "wrong password" - )); - - $result = $this->doPost("/ajax/users/current/get", Array()); - $this->assertEquals("disconnected", $result["errors"]["0"]); - $this->assertEquals(Array(), $result["data"]);; - - } - - public function testBanuser() - { - - $user = $this->newUserByName("usertest001"); - - $user = $this->getDoctrine()->getRepository("Twake\Users:User")->findOneBy(Array("usernamecanonical" => "usertest001")); - - $this->assertEquals(false, $user->getBanned()); - - $ban = $this->get("app.user")->ban($user->getId()); - - $user = $this->getDoctrine()->getRepository("Twake\Users:User")->findOneBy(Array("usernamecanonical" => "usertest001")); - - $this->assertEquals(true, $user->getBanned()); - - $result = $this->doPost("/ajax/users/login", Array( - "_username" => "usertest001", - "_password" => "usertest001" - )); - $this->assertEquals("disconnected", $result["data"]["status"]); - - - //test for unban - - $unban = $this->get("app.user")->unban($user->getId()); - - $result = $this->doPost("/ajax/users/login", Array( - "_username" => "usertest001", - "_password" => "usertest001" - )); - $this->assertEquals("connected", $result["data"]["status"]); - - } - - public function testPassword() - { - $user = $this->newUserByName("usertest001"); - - $user = $this->getDoctrine()->getRepository("Twake\Users:User")->findOneBy(Array("usernamecanonical" => "usertest001")); - - $checkPass = $this->get("app.user")->checkPassword($user->getId(), "usertest001"); - - - $user = $this->getDoctrine()->getRepository("Twake\Users:User")->findOneBy(Array("usernamecanonical" => "usertest001")); - $this->assertEquals(true, $checkPass); - - $checkPass = $this->get("app.user")->checkPassword($user->getId(), "wrong password"); - $this->assertEquals(false, $checkPass); - - - } - - public function testPasswordNoExistingUser() - { - - $this->removeUserByName("usertest001"); - - $user = $this->getDoctrine()->getRepository("Twake\Users:User")->findOneBy(Array("usernamecanonical" => "usertest001")); - $checkPass = $this->get("app.user")->checkPassword("14005200-48b1-11e9-a0b4-0242ac120005", "usertest001"); - $user = $this->getDoctrine()->getRepository("Twake\Users:User")->findOneBy(Array("usernamecanonical" => "usertest001")); - $this->assertEquals(false, $checkPass); - - } - - public function testAvailableMail() - { - - $this->removeUserByName("usertest001"); - $result = $this->get("app.user")->getAvaibleMailPseudo("usertest001@twake_phpunit.fr", "usertest001"); - $this->assertEquals(true, $result); - - $user = $this->newUserByName("usertest001"); - $result = $this->get("app.user")->getAvaibleMailPseudo("usertest001@twake_phpunit.fr", "usertest001"); - $this->assertGreaterThan(0, count($result)); - - $result = $this->get("app.user")->getAvaibleMailPseudo("wrong email", "usertest001"); - $this->assertGreaterThan(0, count($result)); - } - - public function testLogoutCorrect() - - { - $this->removeUserByName("usertest001"); - $user = $this->newUserByName("usertest001"); - - - $result = $this->doPost("/ajax/users/login", Array( - "_username" => "usertest001", - "_password" => "usertest001" - )); - - $result = $this->doPost("/ajax/users/current/get", Array()); - - $name = $result["data"]["username"]; - $this->assertEquals("usertest001", $name); - - $result = $this->doPost("/ajax/users/logout", Array()); - $this->clearClient(); - - $result = $this->doPost("/ajax/users/current/get", Array()); - $this->assertEquals(Array(), $result["data"]); - } - - public function testVerifyMail() - { - - $this->removeUserByName("usertest001"); - $user = $this->newUserByName("usertest001"); - $user = $this->getDoctrine()->getRepository("Twake\Users:User")->findOneBy(Array("usernamecanonical" => "usertest001")); - - $result = $this->doPost("/ajax/users/recover/mail", Array( - "email" => "usertest001@twake_phpunit.fr" - )); - $token = $result["data"]["token"]; - - $verif = $this->getDoctrine()->getRepository("Twake\Users:VerificationNumberMail")->findOneBy(Array("token" => $token)); - $code = $verif->getcode(); - $this->getDoctrine()->persist($verif); - $this->getDoctrine()->flush(); - - - $res = $this->doPost("/ajax/users/subscribe/doverifymail", Array( - "code" => $code, - "token" => $token, - "mail" => "usertest001@twake_phpunit.fr" - )); - - - $verificationRepository = $this->getDoctrine()->getRepository("Twake\Users:VerificationNumberMail"); - - $ticket = $verificationRepository->findOneBy(Array("token" => $token)); - $mail = trim(strtolower("usertest001@twake_phpunit.fr")); - - $this->assertEquals(true, $ticket->getVerified()); - - - $this->assertEquals(true, $user->getMailVerifiedExtended()); - - $email = $this->getDoctrine()->getRepository("Twake\Users:Mail")->findOneBy(Array("mail" => "usertest001@twake_phpunit.fr")); - $email = $email->getMail(); - $this->assertEquals("usertest001@twake_phpunit.fr", $email); - - - $workspaceUerByMailRepository = $this->getDoctrine()->getRepository("Twake\Workspaces:WorkspaceUserByMail")->findOneBy(Array("mail" => "usertest001@twake_phpunit.fr")); - $this->assertEquals(null, $workspaceUerByMailRepository); - - - $res = $this->doPost("/ajax/users/subscribe/doverifymail", Array( - "code" => "ftvg", - "token" => "bgfsdngfn", - "mail" => "usertest001@twake_phpunit.fr" - )); - } - - public function testAddDevice() - { - - - $this->removeUserByName("usertest001"); - $user = $this->newUserByName("usertest001"); - $user = $this->getDoctrine()->getRepository("Twake\Users:User")->findOneBy(Array("usernamecanonical" => "usertest001")); - - $result = $this->doPost("/ajax/users/login", Array( - "_username" => "usertest001", - "_password" => "usertest001" - )); - - $device = Array( - "type" => "APNS", - "value" => "AZERTYUIOPQSDFGHJKLMWXCVBN134567890", - "version" => "1.2.0" - - ); - - - $existedDevice = $this->getDoctrine()->getRepository("Twake\Users:Device")->findOneBy(Array("value" => "AZERTYUIOPQSDFGHJKLMWXCVBN134567890")); - if (isset($existedDevice)) { - $this->getDoctrine()->remove($existedDevice); - $this->getDoctrine()->flush(); - } - - - $res = $this->doPost("/ajax/users/current/get", Array( - "device" => $device - )); - - - $existedDevice = $this->getDoctrine()->getRepository("Twake\Users:Device")->findOneBy(Array("value" => "AZERTYUIOPQSDFGHJKLMWXCVBN134567890")); - $existedDeviceValue = $existedDevice->getValue(); - $this->assertEquals("AZERTYUIOPQSDFGHJKLMWXCVBN134567890", $existedDeviceValue); - - - $device = Array( - "type" => "APNS", - "value" => "AZERTYUIOPQSDFGHJKLMWXCVBN134567890", - "version" => "1.3.0" - - ); - - $res = $this->doPost("/ajax/users/current/get", Array( - "device" => $device - )); - - $existedDevice = $this->getDoctrine()->getRepository("Twake\Users:Device")->findOneBy(Array("value" => "AZERTYUIOPQSDFGHJKLMWXCVBN134567890")); - $existedDeviceValue = $existedDevice->getValue(); - $this->assertEquals("1.3.0", $existedDevice->getVersion()); - - - $this->removeUserByName("usertest002"); - $user = $this->newUserByName("usertest002"); - $user = $this->getDoctrine()->getRepository("Twake\Users:User")->findOneBy(Array("usernamecanonical" => "usertest002")); - - $result = $this->doPost("/ajax/users/login", Array( - "_username" => "usertest002", - "_password" => "usertest002" - )); - - $res = $this->doPost("/ajax/users/current/get", Array( - "device" => $device - )); - - $existedDevice = $this->getDoctrine()->getRepository("Twake\Users:Device")->findOneBy(Array("value" => "AZERTYUIOPQSDFGHJKLMWXCVBN134567890")); - - $this->assertEquals($user->getId(), $existedDevice->getUserId()); - - } - - public function testRemoveDevice() - { - - $this->removeUserByName("usertest001"); - $user = $this->newUserByName("usertest001"); - $user = $this->getDoctrine()->getRepository("Twake\Users:User")->findOneBy(Array("usernamecanonical" => "usertest001")); - - $result = $this->doPost("/ajax/users/login", Array( - "_username" => "usertest002", - "_password" => "usertest002" - )); - - $device_array = Array( - "type" => "APNS", - "value" => "AZERTYUIOPQSDFGHJKLMWXCVBN134567890", - "version" => "1.2.0" - ); - - - $device = $this->getDoctrine()->getRepository("Twake\Users:Device")->findOneBy(Array("value" => "AZERTYUIOPQSDFGHJKLMWXCVBN134567890")); - $deviceValue = $device->getValue(); - $this->assertEquals("AZERTYUIOPQSDFGHJKLMWXCVBN134567890", $deviceValue); - - $res = $this->doPost("/ajax/users/logout", Array( - "device" => $device_array - )); - - $device = $this->getDoctrine()->getRepository("Twake\Users:Device")->findOneBy(Array("value" => "AZERTYUIOPQSDFGHJKLMWXCVBN134567890")); - $this->assertEquals(null, $device); - - } - - public function testAddNewMail() - { - - $this->removeUserByName("usertest001"); - $user = $this->newUserByName("usertest001"); - $user = $this->getDoctrine()->getRepository("Twake\Users:User")->findOneBy(Array("usernamecanonical" => "usertest001")); - - $result = $this->doPost("/ajax/users/login", Array( - "_username" => "usertest001", - "_password" => "usertest001" - )); - - $result = $this->doPost("/ajax/users/account/addmail", Array( - "mail" => "usertest001secondmail@twake_phpunit.fr" - )); - - - } - -} \ No newline at end of file diff --git a/twake/backend/core/tests/WebTestCaseExtended.php b/twake/backend/core/tests/WebTestCaseExtended.php deleted file mode 100755 index 193a30a7..00000000 --- a/twake/backend/core/tests/WebTestCaseExtended.php +++ /dev/null @@ -1,209 +0,0 @@ -<?php - -namespace Tests; - -use App\App; -use Common\Http\Request; -use Twake\Workspaces\Entity\Group; -use Twake\Workspaces\Entity\Workspace; -use Twake\Channels\Entity\Channel; -use Twake\Channels\Entity\ChannelMember; -use Twake\Users\Entity\User; -use Twake\Workspaces\Entity\WorkspaceUser; -use Twake\Workspaces\Entity\WorkspaceLevel; - -class WebTestCaseExtended extends \PHPUnit\Framework\TestCase -{ - - var $client; - - /** @var App */ - public $app; - - public $cookies = []; - - - public function __construct() - { - error_reporting(E_ERROR | E_PARSE); - # Warning: - \PHPUnit_Framework_Error_Warning::$enabled = FALSE; - # notice, strict: - \PHPUnit_Framework_Error_Notice::$enabled = FALSE; - define("TESTENV", true); - } - - protected function getDoctrine() - { - return $this->get("app.twake_doctrine"); - } - - protected function get($service) - { - return $this->getClient()->getServices()->get($service); - } - - protected function clearApp() - { - $this->app = null; - } - - protected function clearClient() - { - $this->cookies = []; - } - - protected function getClient(): App - { - if (!isset($this->app) || !$this->app) { - $this->app = new App(); - } - return $this->app; - } - - protected function doPost($route, $data = Array()) - { - $this->clearApp(); - $request = new Request(); - $query_data = $this->getQueryFromUrl($route); - $request->cookies->reset($this->cookies); - $request->request->reset($data); - $request->query->reset($query_data["query"]); - $response = $this->getClient()->getRouting()->execute("post", $query_data["route"], $request); - $this->cookies = array_merge($this->cookies, $response->getCookiesValues()); - return json_decode($response->getContent(), 1); - } - - protected function doGet($route) - { - $this->clearApp(); - $request = new Request(); - $request->cookies->reset($this->cookies); - $query_data = $this->getQueryFromUrl($route); - $request->query->reset($query_data["query"]); - $response = $this->getClient()->getRouting()->execute("get", $query_data["route"], $request); - $this->cookies = array_merge($this->cookies, $response->getCookiesValues()); - return json_decode($response->getContent(), 1); - } - - private function getQueryFromUrl($route) - { - $route = explode("?", $route); - if (count($route) == 1) { - return ["route" => $route[0], "query" => []]; - } - $parts = $route[1]; - parse_str($parts, $query); - - return ["route" => $route[0], "query" => $query]; - } - - - public function newUserByName($name, $mail = null) - { - - $user = $this->get("app.twake_doctrine")->getRepository("Twake\Users:User")->findOneBy(Array("usernamecanonical" => $name)); - - if ($user) { - $this->removeUserByName($name); - } - - if (!$mail) { - $mail = $name . "@twake_phpunit.fr"; - } - - $userWithMail = $this->get("app.twake_doctrine")->getRepository("Twake\Users:User")->findOneBy(Array("emailcanonical" => $mail)); - if ($userWithMail) { - $this->removeUserByName($userWithMail->getUsername()); - } - - $mails = $this->get("app.twake_doctrine")->getRepository("Twake\Users:Mail")->findBy(Array("mail" => $mail)); - foreach ($mails as $mail) { - $this->get("app.twake_doctrine")->remove($mail); - $this->get("app.twake_doctrine")->flush(); - } - $token = $this->get("app.user")->subscribeMail($mail, $name, $name, "", "", "", "en", false); - $this->get("app.user")->verifyMail($mail, $token, "", true); - - $user = $this->get("app.twake_doctrine")->getRepository("Twake\Users:User")->findOneBy(Array("usernamecanonical" => $name)); - - return $user; - } - - public function removeUserByName($name) - { - $user = $this->get("app.twake_doctrine")->getRepository("Twake\Users:User")->findOneBy(Array("usernamecanonical" => $name)); - - if (isset($user)) { - - $mails = $this->get("app.twake_doctrine")->getRepository("Twake\Users:Mail")->findBy(Array("user_id" => $user)); - - foreach ($mails as $mail) { - $this->get("app.twake_doctrine")->remove($mail); - } - - $this->get("app.twake_doctrine")->remove($user); - $this->get("app.twake_doctrine")->flush(); - } - } - - public function newGroup($userId, $name) - { - $group = new Group($name); - $this->get("app.twake_doctrine")->persist($group); - $this->get("app.twake_doctrine")->flush(); - return $group; - } - - public function newWorkspace($name, $group) - { - $work = new Workspace($name); - $work->setGroup($group); - $this->get("app.twake_doctrine")->persist($work); - $this->get("app.twake_doctrine")->flush(); - - return $work; - } - - public function newChannel($group, $workspace, $user) - { - $channel = new Channel(); - $channel->setDirect(false); - $channel->setOriginalWorkspaceId($workspace->getId()); - $channel->setOriginalGroupId($group->getId()); - - $this->getDoctrine()->persist($channel); - $this->getDoctrine()->flush(); - - $linkUserChannel = new ChannelMember($user->getId() . "", $channel); - $this->getDoctrine()->persist($linkUserChannel); - $this->getDoctrine()->flush(); - return $channel; - } - - public function newSubscription($group, $pricing_plan, $balanceInit, $start_date, $end_date, $autowithdraw, $autorenew) - { - - $sub = $this->get("app.subscription_system")->create($group, $pricing_plan, $balanceInit, $start_date, $end_date, $autowithdraw, $autorenew); - - return $sub; - } - - public function login($username, $password = null) - { - if (!$password) { - $password = $username; - } - $result = $this->doPost("/ajax/users/login", Array( - "_username" => $username, - "_password" => $password - )); - return $result; - } - - public function logout() - { - $this->clearClient(); - $this->doPost("/ajax/users/logout", Array()); - } -} diff --git a/twake/backend/core/tests/autoload.php b/twake/backend/core/tests/autoload.php deleted file mode 100755 index 6d4cdd8b..00000000 --- a/twake/backend/core/tests/autoload.php +++ /dev/null @@ -1,3 +0,0 @@ -<?php - -include_once __DIR__ . '/../vendor/autoload.php'; \ No newline at end of file diff --git a/twake/backend/core/web/app.php b/twake/backend/core/web/app.php deleted file mode 100755 index 413df3b7..00000000 --- a/twake/backend/core/web/app.php +++ /dev/null @@ -1,49 +0,0 @@ -<?php - -use App\App; -function getDefaultHeaders() -{ - if(headers_sent()){ - return; - } - if (isset($_SERVER['HTTP_ORIGIN']) && strpos("http://localhost", $_SERVER['HTTP_ORIGIN']) == 0) { - @header('Access-Control-Allow-Origin: ' . $_SERVER['HTTP_ORIGIN'], true); - } - @header('Access-Control-Allow-Headers: ' . 'authorization, Content-Type, *', true); - @header('Access-Control-Allow-Credentials: true', true); - @header('Access-Control-Allow-Methods: GET, POST', true); - @header('Access-Control-Max-Age: 600', true); -} - -if ($_SERVER['REQUEST_METHOD'] !== 'OPTIONS') { - - try { - - require_once __DIR__ . '/../vendor/autoload.php'; - require_once __DIR__ . '/../app/App.php'; - - if(!headers_sent()){ - @header('X-Frame-Options: SAMEORIGIN'); - } - - $app = new App(); - - $app->getCounter()->startTimer("main_run"); - if (php_sapi_name() != "cli") { - $app->run(); - } - $app->getCounter()->stopTimer("main_run"); - - $app->getCounter()->showResults(); - - return $app; - - } catch (\Exception $e) { - getDefaultHeaders(); - } - -} else { - - getDefaultHeaders(); - -} diff --git a/twake/backend/node/package.json b/twake/backend/node/package.json index 9728281f..5caaa195 100644 --- a/twake/backend/node/package.json +++ b/twake/backend/node/package.json @@ -104,7 +104,7 @@ "form-auto-content": "^2.2.0", "jest": "^26.6.3", "nodemon": "2.0.4", - "pino-pretty": "^4.7.1", + "pino-pretty": "^10.0.0", "prettier": "^2.1.2", "rimraf": "^3.0.2", "supertest": "4.0.2", @@ -176,6 +176,7 @@ "pdf-parse": "^1.1.1", "pdf2pic": "^2.1.4", "pino": "^6.8.0", + "pino-std-serializers": "^6.1.0", "probe-image-size": "^7.2.3", "pump": "^3.0.0", "random-useragent": "^0.5.0", diff --git a/twake/backend/node/yarn.lock b/twake/backend/node/yarn.lock index f02992f8..0809e4ef 100644 --- a/twake/backend/node/yarn.lock +++ b/twake/backend/node/yarn.lock @@ -1179,11 +1179,6 @@ resolved "https://registry.yarnpkg.com/@ffprobe-installer/win32-x64/-/win32-x64-5.0.0.tgz#8ed741260b7db346c7bfe77d2fd9acbe3bd70d2f" integrity sha512-P4ZMRFxVMnfMsOyTfBM/+nkTodLeOUfXNPo+X1bKEWBiZxRErqX/IHS5sLA0yAH8XmtKZcL7Cu6M26ztGcQYxw== -"@hapi/bourne@^2.0.0": - version "2.1.0" - resolved "https://registry.npmjs.org/@hapi/bourne/-/bourne-2.1.0.tgz" - integrity sha512-i1BpaNDVLJdRBEKeJWkVO6tYX6DMFBuwMhSuWqLsY4ufeTKGVuV5rBsUhxPayXqnnWHgXUAmWK16H/ykO5Wj4Q== - "@humanwhocodes/config-array@^0.5.0": version "0.5.0" resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.5.0.tgz#1407967d4c6eecd7388f83acf1eaf4d0c6e58ef9" @@ -1941,6 +1936,11 @@ resolved "https://registry.yarnpkg.com/@types/pdf-image/-/pdf-image-2.0.1.tgz#c05af33ba65d70e9dad2da99b33c9c027d0686f7" integrity sha512-WSG+F90yd53I2iA3/MiRolRmP0hT0GLkfdq2CYg1sW1AmsWK9bitc9v0EaakkMvFebESzoU/P4vsUhYnDz/OYw== +"@types/pdf-parse@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@types/pdf-parse/-/pdf-parse-1.1.1.tgz#3715b90896724af75b37757228a8eb527d4657cb" + integrity sha512-lDBKAslCwvfK2uvS1Uk+UCpGvw+JRy5vnBFANPKFSY92n/iEnunXi0KVBjPJXhsM4jtdcPnS7tuZ0zjA9x6piQ== + "@types/pino-pretty@*": version "4.7.5" resolved "https://registry.npmjs.org/@types/pino-pretty/-/pino-pretty-4.7.5.tgz" @@ -2228,6 +2228,13 @@ abbrev@1: resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== +abort-controller@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" + integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== + dependencies: + event-target-shim "^5.0.0" + abstract-cache@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/abstract-cache/-/abstract-cache-1.0.1.tgz#136151becf5c32e0ea27f78728d073d8fe07932a" @@ -2474,16 +2481,6 @@ args-js@~0.10.12: resolved "https://registry.yarnpkg.com/args-js/-/args-js-0.10.12.tgz#a327aea80e41072a3d85f9c274db6511eb95e49c" integrity sha512-tR5vYVPA1lIqK4xr8F9ysseHuqgpqHhYe7i1iCW0Vh3zGjrqL9Fti/y5McZkRga2pWOC9Z9rnLIKW1l6I6AVgw== -args@^5.0.1: - version "5.0.3" - resolved "https://registry.npmjs.org/args/-/args-5.0.3.tgz" - integrity sha512-h6k/zfFgusnv3i5TU08KQkVKuCPBtL/PWQbWkHUxvJrZ2nAyeaUupneemcrgn1xmqxPQsPIzwkUhOpoqPDRZuA== - dependencies: - camelcase "5.0.0" - chalk "2.4.2" - leven "2.1.0" - mri "1.1.4" - arr-diff@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz" @@ -3001,6 +2998,14 @@ buffer@^5.5.0, buffer@^5.6.0: base64-js "^1.3.1" ieee754 "^1.1.13" +buffer@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" + integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.2.1" + cache-base@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" @@ -3070,11 +3075,6 @@ camelcase-keys@^7.0.0: quick-lru "^5.1.1" type-fest "^1.2.1" -camelcase@5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.0.0.tgz#03295527d58bd3cd4aa75363f35b2e8d97be2f42" - integrity sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA== - camelcase@^5.0.0, camelcase@^5.3.1: version "5.3.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" @@ -3128,7 +3128,7 @@ chai@^4.2.0: pathval "^1.1.1" type-detect "^4.0.5" -chalk@2.4.2, chalk@^2.0.0: +chalk@^2.0.0: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -3385,6 +3385,11 @@ color@^4.2.3: color-convert "^2.0.1" color-string "^1.9.0" +colorette@^2.0.7: + version "2.0.19" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.19.tgz#cdf044f47ad41a0f4b56b3a0d5b4e6e1a2d5a798" + integrity sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ== + colors@1.0.3: version "1.0.3" resolved "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz" @@ -3700,9 +3705,9 @@ data-urls@^2.0.0: whatwg-mimetype "^2.3.0" whatwg-url "^8.0.0" -dateformat@^4.5.1: +dateformat@^4.6.3: version "4.6.3" - resolved "https://registry.npmjs.org/dateformat/-/dateformat-4.6.3.tgz" + resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-4.6.3.tgz#556fa6497e5217fedb78821424f8a1c22fa3f4b5" integrity sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA== debug@2, debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@~2.6.9: @@ -4430,6 +4435,16 @@ event-stream@=3.3.4: stream-combiner "~0.0.4" through "~2.3.1" +event-target-shim@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" + integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== + +events@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" + integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== + evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: version "1.0.3" resolved "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz" @@ -4540,6 +4555,11 @@ extglob@^2.0.4: snapdragon "^0.8.1" to-regex "^3.0.1" +fast-copy@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/fast-copy/-/fast-copy-3.0.1.tgz#9e89ef498b8c04c1cd76b33b8e14271658a732aa" + integrity sha512-Knr7NOtK3HWRYGtHoJrjkaWepqT8thIVGAwt0p0aUs1zqkAzXZV4vo9fFNwyb5fcqK1GKYFYxldQdIDVKhUAfA== + fast-decode-uri-component@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/fast-decode-uri-component/-/fast-decode-uri-component-1.0.1.tgz#46f8b6c22b30ff7a81357d4f59abfae938202543" @@ -4613,7 +4633,7 @@ fast-redact@^3.0.0: resolved "https://registry.npmjs.org/fast-redact/-/fast-redact-3.1.1.tgz" integrity sha512-odVmjC8x8jNeMZ3C+rPMESzXVSEU8tSWSHv9HFxP2mm89G/1WwqhrerJDQm9Zus8X6aoRgQDThKqptdNA6bt+A== -fast-safe-stringify@^2.0.7, fast-safe-stringify@^2.0.8, fast-safe-stringify@~2.1.0: +fast-safe-stringify@^2.0.8, fast-safe-stringify@^2.1.1, fast-safe-stringify@~2.1.0: version "2.1.1" resolved "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz" integrity sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA== @@ -5187,6 +5207,17 @@ glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: once "^1.3.0" path-is-absolute "^1.0.0" +glob@^8.0.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" + integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^5.0.1" + once "^1.3.0" + global-dirs@^2.0.1: version "2.1.0" resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-2.1.0.tgz#e9046a49c806ff04d6c1825e196c8f0091e8df4d" @@ -5397,6 +5428,14 @@ he@1.2.0, he@^1.2.0: resolved "https://registry.npmjs.org/he/-/he-1.2.0.tgz" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== +help-me@^4.0.1: + version "4.2.0" + resolved "https://registry.yarnpkg.com/help-me/-/help-me-4.2.0.tgz#50712bfd799ff1854ae1d312c36eafcea85b0563" + integrity sha512-TAOnTB8Tz5Dw8penUuzHVrKNKlCIbwwbHnXraNJxPwf8LRtE2HlM84RYuezMFcwOJmoYOCWVDyJ8TQGxn9PgxA== + dependencies: + glob "^8.0.0" + readable-stream "^3.6.0" + hexoid@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/hexoid/-/hexoid-1.0.0.tgz#ad10c6573fb907de23d9ec63a711267d9dc9bc18" @@ -5533,7 +5572,7 @@ iconv-lite@0.4.24, iconv-lite@^0.4.4: dependencies: safer-buffer ">= 2.1.2 < 3" -ieee754@^1.1.13: +ieee754@^1.1.13, ieee754@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== @@ -6431,20 +6470,15 @@ jest@^26.6.3: import-local "^3.0.2" jest-cli "^26.6.3" -jmespath@^0.15.0: - version "0.15.0" - resolved "https://registry.npmjs.org/jmespath/-/jmespath-0.15.0.tgz" - integrity sha512-+kHj8HXArPfpPEKGLZ+kB5ONRTCiGQXo8RQYL0hH8t6pWXUBBK5KkkQmTNOwKK4LEsd0yTsgtjJVm4UBSZea4w== - join-component@^1.1.0: version "1.1.0" resolved "https://registry.npmjs.org/join-component/-/join-component-1.1.0.tgz" integrity sha512-bF7vcQxbODoGK1imE2P9GS9aw4zD0Sd+Hni68IMZLj7zRnquH7dXUmMw9hDI5S/Jzt7q+IyTXN0rSg2GI0IKhQ== -joycon@^2.2.5: - version "2.2.5" - resolved "https://registry.yarnpkg.com/joycon/-/joycon-2.2.5.tgz#8d4cf4cbb2544d7b7583c216fcdfec19f6be1615" - integrity sha512-YqvUxoOcVPnCp0VU1/56f+iKSdvIRJYPznH22BdXV3xMk75SFXhWeJkZ8C9XxUWt1b5x2X1SxuFygW1U0FmkEQ== +joycon@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/joycon/-/joycon-3.1.1.tgz#bce8596d6ae808f8b68168f5fc69280996894f03" + integrity sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw== js-tokens@^4.0.0: version "4.0.0" @@ -6682,11 +6716,6 @@ lazystream@^1.0.0: dependencies: readable-stream "^2.0.5" -leven@2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz" - integrity sha512-nvVPLpIHUxCUoRLrFqTgSxXJ614d8AgQoWl7zPe/2VadE8+1dpU3LBhowRuBAcuwruWtOdD8oYC9jDNJjXDPyA== - leven@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" @@ -7097,7 +7126,7 @@ minimatch@^3.0.4, minimatch@^3.1.1: dependencies: brace-expansion "^1.1.7" -minimatch@^5.1.0: +minimatch@^5.0.1, minimatch@^5.1.0: version "5.1.6" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== @@ -7211,11 +7240,6 @@ moo@^0.5.0, moo@^0.5.1: resolved "https://registry.yarnpkg.com/moo/-/moo-0.5.1.tgz#7aae7f384b9b09f620b6abf6f74ebbcd1b65dbc4" integrity sha512-I1mnb5xn4fO80BH9BLcF0yLypy2UKl+Cb01Fu0hJRkJjlCRtxZMWkTdAtDd5ZqCOxtCkhmRwyI57vWT+1iZ67w== -mri@1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/mri/-/mri-1.1.4.tgz#7cb1dd1b9b40905f1fac053abe25b6720f44744a" - integrity sha512-6y7IjGPm8AzlvoUrwAaw1tLnUBudaS3752vcd8JtrpGGQn+rXIe63LFVHm/YMwtqAuh+LJPCFdlLYPWM1nYn6w== - ms@2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" @@ -7339,6 +7363,11 @@ node-cron@^3.0.0: resolved "https://registry.npmjs.org/node-cron/-/node-cron-3.0.1.tgz" integrity sha512-RAWZTNn2M5KDIUV/389UX0EXsqvdFAwc9QwHQceh0Ga56dygqSRthqIjwpgZsoDspHGt2rkHdk9Z4RgfPMdALw== +node-ensure@^0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/node-ensure/-/node-ensure-0.0.0.tgz#ecae764150de99861ec5c810fd5d096b183932a7" + integrity sha512-DRI60hzo2oKN1ma0ckc6nQWlHU69RH6xN0sjQTjMpChPfTYvKZdcQFfdYK2RWbJcKyUizSIy/l8OTGxMAM1QDw== + node-fetch@^2.6.7: version "2.6.7" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" @@ -7550,6 +7579,11 @@ object.pick@^1.3.0: dependencies: isobject "^3.0.1" +on-exit-leak-free@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/on-exit-leak-free/-/on-exit-leak-free-2.1.0.tgz#5c703c968f7e7f851885f6459bf8a8a57edc9cc4" + integrity sha512-VuCaZZAjReZ3vUwgOB8LxAosIurDiAW0s13rI1YwmaP++jvcxP77AWoQvenZebpCA2m8WC1/EosPYPMjnRAp/w== + on-finished@~2.3.0: version "2.3.0" resolved "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz" @@ -7830,6 +7864,14 @@ pbkdf2@^3.0.3: safe-buffer "^5.0.1" sha.js "^2.4.8" +pdf-parse@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/pdf-parse/-/pdf-parse-1.1.1.tgz#745e07408679548b3995ff896fd38e96e19d14a7" + integrity sha512-v6ZJ/efsBpGrGGknjtq9J/oC8tZWq0KWL5vQrk2GlzLEQPUDB1ex+13Rmidl1neNN358Jn9EHZw5y07FFtaC7A== + dependencies: + debug "^3.1.0" + node-ensure "^0.0.0" + pdf2pic@^2.1.4: version "2.1.4" resolved "https://registry.yarnpkg.com/pdf2pic/-/pdf2pic-2.1.4.tgz#5c6cbd7809a60b11f6504eb85c386aa2012b1dcf" @@ -7848,22 +7890,32 @@ picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== -pino-pretty@^4.7.1: - version "4.8.0" - resolved "https://registry.yarnpkg.com/pino-pretty/-/pino-pretty-4.8.0.tgz#f2f3055bf222456217b14ffb04d8be0a0cc17fce" - integrity sha512-mhQfHG4rw5ZFpWL44m0Utjo4GC2+HMfdNvxyA8lLw0sIqn6fCf7uQe6dPckUcW/obly+OQHD7B/MTso6LNizYw== +pino-abstract-transport@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/pino-abstract-transport/-/pino-abstract-transport-1.0.0.tgz#cc0d6955fffcadb91b7b49ef220a6cc111d48bb3" + integrity sha512-c7vo5OpW4wIS42hUVcT5REsL8ZljsUfBjqV/e2sFxmFEFZiq1XLUp5EYLtuDH6PEHq9W1egWqRbnLUP5FuZmOA== dependencies: - "@hapi/bourne" "^2.0.0" - args "^5.0.1" - chalk "^4.0.0" - dateformat "^4.5.1" - fast-safe-stringify "^2.0.7" - jmespath "^0.15.0" - joycon "^2.2.5" + readable-stream "^4.0.0" + split2 "^4.0.0" + +pino-pretty@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/pino-pretty/-/pino-pretty-10.0.0.tgz#fd2f307ee897289f63d09b0b804ac2ecc9a18516" + integrity sha512-zKFjYXBzLaLTEAN1ayKpHXtL5UeRQC7R3lvhKe7fWs7hIVEjKGG/qIXwQt9HmeUp71ogUd/YcW+LmMwRp4KT6Q== + dependencies: + colorette "^2.0.7" + dateformat "^4.6.3" + fast-copy "^3.0.0" + fast-safe-stringify "^2.1.1" + help-me "^4.0.1" + joycon "^3.1.1" + minimist "^1.2.6" + on-exit-leak-free "^2.1.0" + pino-abstract-transport "^1.0.0" pump "^3.0.0" - readable-stream "^3.6.0" - rfdc "^1.3.0" - split2 "^3.1.1" + readable-stream "^4.0.0" + secure-json-parse "^2.4.0" + sonic-boom "^3.0.0" strip-json-comments "^3.1.1" pino-std-serializers@^3.1.0: @@ -7871,6 +7923,11 @@ pino-std-serializers@^3.1.0: resolved "https://registry.yarnpkg.com/pino-std-serializers/-/pino-std-serializers-3.2.0.tgz#b56487c402d882eb96cd67c257868016b61ad671" integrity sha512-EqX4pwDPrt3MuOAAUBMU0Tk5kR/YcCM5fNPEzgCO2zJ5HfX0vbiH9HbJglnyeQsN96Kznae6MWD47pZB5avTrg== +pino-std-serializers@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/pino-std-serializers/-/pino-std-serializers-6.1.0.tgz#307490fd426eefc95e06067e85d8558603e8e844" + integrity sha512-KO0m2f1HkrPe9S0ldjx7za9BJjeHqBku5Ch8JyxETxT8dEFGz1PwgrHaOQupVYitpzbFSYm7nnljxD8dik2c+g== + pino@^6.13.0, pino@^6.8.0: version "6.14.0" resolved "https://registry.npmjs.org/pino/-/pino-6.14.0.tgz" @@ -7975,6 +8032,11 @@ process-warning@^1.0.0: resolved "https://registry.yarnpkg.com/process-warning/-/process-warning-1.0.0.tgz#980a0b25dc38cd6034181be4b7726d89066b4616" integrity sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q== +process@^0.11.10: + version "0.11.10" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== + progress@^2.0.0: version "2.0.3" resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" @@ -8209,7 +8271,7 @@ read-pkg@^6.0.0: isarray "0.0.1" string_decoder "~0.10.x" -"readable-stream@2 || 3", readable-stream@^3.0.0, readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: +"readable-stream@2 || 3", readable-stream@^3.1.1, readable-stream@^3.4.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== @@ -8231,6 +8293,16 @@ readable-stream@^2.0.0, readable-stream@^2.0.5, readable-stream@^2.3.5: string_decoder "~1.1.1" util-deprecate "~1.0.1" +readable-stream@^4.0.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-4.3.0.tgz#0914d0c72db03b316c9733bb3461d64a3cc50cba" + integrity sha512-MuEnA0lbSi7JS8XM+WNJlWZkHAAdm7gETHdFK//Q/mChGyj2akEFtdLZh32jSdkWGbRwCW9pn6g3LWDdDeZnBQ== + dependencies: + abort-controller "^3.0.0" + buffer "^6.0.3" + events "^3.3.0" + process "^0.11.10" + readdir-glob@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/readdir-glob/-/readdir-glob-1.1.2.tgz#b185789b8e6a43491635b6953295c5c5e3fd224c" @@ -8494,7 +8566,7 @@ reusify@^1.0.0, reusify@^1.0.4: resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== -rfdc@^1.1.4, rfdc@^1.2.0, rfdc@^1.3.0: +rfdc@^1.1.4, rfdc@^1.2.0: version "1.3.0" resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.3.0.tgz#d0b7c441ab2720d05dc4cf26e01c89631d9da08b" integrity sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA== @@ -8913,6 +8985,13 @@ sonic-boom@^2.1.0: dependencies: atomic-sleep "^1.0.0" +sonic-boom@^3.0.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/sonic-boom/-/sonic-boom-3.3.0.tgz#cffab6dafee3b2bcb88d08d589394198bee1838c" + integrity sha512-LYxp34KlZ1a2Jb8ZQgFCK3niIHzibdwtwNUWKg0qQRzsDoJ3Gfgkf8KdBTFU3SkejDEIlWwnSnpVdOZIhFMl/g== + dependencies: + atomic-sleep "^1.0.0" + sort-keys@^4.0.0: version "4.2.0" resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-4.2.0.tgz#6b7638cee42c506fff8c1cecde7376d21315be18" @@ -8999,12 +9078,10 @@ split-string@^3.0.1, split-string@^3.0.2: dependencies: extend-shallow "^3.0.0" -split2@^3.1.1: - version "3.2.2" - resolved "https://registry.yarnpkg.com/split2/-/split2-3.2.2.tgz#bf2cf2a37d838312c249c89206fd7a17dd12365f" - integrity sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg== - dependencies: - readable-stream "^3.0.0" +split2@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/split2/-/split2-4.1.0.tgz#101907a24370f85bb782f08adaabe4e281ecf809" + integrity sha512-VBiJxFkxiXRlUIeyMQi8s4hgvKCSjtknJv/LVYbrgALPwf5zSKmEwV9Lst25AkvMDnvxODugjdl6KZgwKM1WYQ== split@0.3: version "0.3.3" @@ -10141,4 +10218,4 @@ zip-stream@^4.1.0: dependencies: archiver-utils "^2.1.0" compress-commons "^4.1.0" - readable-stream "^3.6.0" \ No newline at end of file + readable-stream "^3.6.0" diff --git a/twake/docker-compose.dev.mongo.yml b/twake/docker-compose.dev.mongo.yml index 8b2f14fc..989ca128 100644 --- a/twake/docker-compose.dev.mongo.yml +++ b/twake/docker-compose.dev.mongo.yml @@ -11,21 +11,6 @@ services: networks: - twake_network - plugins: - container_name: plugins - image: twaketech/twake-plugins - privileged: true - volumes: - - ./plugins/plugins:/usr/src/app/plugins - - ./plugins/plugins.json:/usr/src/app/plugins.json - build: - context: . - dockerfile: ./docker/twake-plugins/Dockerfile - ports: - - 8080:8080 - networks: - - twake_network - node: image: twaketech/twake-node container_name: node @@ -38,12 +23,14 @@ services: - SEARCH_DRIVER=mongodb - DB_DRIVER=mongodb - PUBSUB_TYPE=local + - STATIC_ROOT=/frontend build: context: . dockerfile: ./docker/twake-node/Dockerfile target: development volumes: - ./backend/node:/usr/src/app + - ./frontend/dist:/frontend - ./docker-data/documents/:/storage/ depends_on: - mongo @@ -55,8 +42,4 @@ services: networks: twake_network: driver: bridge - ipam: - config: - - subnet: 172.21.0.0/16 - gateway: 172.21.0.1 diff --git a/twake/docker/integration-test/Dockerfile b/twake/docker/integration-test/Dockerfile deleted file mode 100644 index 3be2cdbd..00000000 --- a/twake/docker/integration-test/Dockerfile +++ /dev/null @@ -1,20 +0,0 @@ -FROM node:slim - -# We don't need the standalone Chromium -ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD true - -# Install Google Chrome Stable and fonts -# Note: this installs the necessary libs to make the browser work with Puppeteer. -RUN apt-get update && apt-get install curl gnupg -y \ - && curl --location --silent https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - \ - && sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list' \ - && apt-get update \ - && apt-get install google-chrome-stable -y --no-install-recommends \ - && rm -rf /var/lib/apt/lists/* - -WORKDIR /app -COPY integration-test /app - -RUN npm install - -ENTRYPOINT npm run test:all \ No newline at end of file diff --git a/twake/docker/php7.1-cassandra/Dockerfile b/twake/docker/php7.1-cassandra/Dockerfile deleted file mode 100644 index 25aab596..00000000 --- a/twake/docker/php7.1-cassandra/Dockerfile +++ /dev/null @@ -1,133 +0,0 @@ -# MUST BE BUILT FROM . -# docker build . -t php7.1-cassandra -f ./Dockerfile -FROM php:7.4-fpm - -MAINTAINER Romaric Mourgues <romaric.mourgues@twakeapp.com> - -ARG TIMEZONE -ARG APCU_VERSION=5.1.11 - -# Set timezone -RUN ln -snf /usr/share/zoneinfo/${TIMEZONE} /etc/localtime -RUN echo ${TIMEZONE} > /etc/timezone -RUN printf '[PHP]\ndate.timezone = "%s"\n', ${TIMEZONE} > /usr/local/etc/php/conf.d/tzone.ini -RUN "date" - -RUN apt-get update && apt-get install -y cron - -RUN apt-get update && apt-get install -y \ - openssl \ - git \ - unzip - -RUN apt-get update && apt-get install -y libpng-dev - -#MBSTRING -RUN docker-php-ext-install mbstring - -RUN apt-get update && apt-get install -y \ - libfreetype6-dev \ - libjpeg62-turbo-dev \ - libmcrypt-dev \ - libpng-dev \ - && docker-php-ext-install -j$(nproc) iconv mcrypt \ - && docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \ - && docker-php-ext-install -j$(nproc) gd - -#ZIP -RUN apt-get update && apt-get install -y zlib1g-dev -RUN docker-php-ext-install zip - -#GD images -RUN apt-get update && apt-get install -y \ - libfreetype6-dev \ - libjpeg62-turbo-dev \ - libpng-dev \ - && docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \ - && docker-php-ext-install -j$(nproc) gd - -#ZMQ -RUN apt-get update && apt-get install -y zlib1g-dev libzmq3-dev wget git \ - && pecl install zmq-beta \ - && docker-php-ext-install zip \ - && docker-php-ext-enable zmq - -#Imagick -RUN apt-get update && apt-get install -y ghostscript && apt-get clean -RUN apt-get update && apt-get install -y libmagickwand-dev --no-install-recommends && rm -rf /var/lib/apt/lists/* -RUN pecl install imagick && docker-php-ext-enable imagick - -#Unoconv -RUN apt-get update && apt-get install -y --force-yes unoconv libxml2-dev -RUN docker-php-ext-install soap -RUN apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* - -# Install Composer -RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer -RUN composer --version - -# Type docker-php-ext-install to see available extensions -RUN docker-php-ext-install pdo pdo_mysql - -ENV CASSANDRA_PHP_DRIVER_VERSION 1.3.2 - -RUN rm /var/lib/apt/lists/* -vrf && \ - apt-get clean && apt-get update - -RUN apt-get update && \ - apt-get install -y git wget libssl-dev zlib1g-dev libicu-dev g++ make cmake libuv-dev libgmp-dev uuid-dev && \ - apt-get autoclean -y && \ - apt-get clean -y - -# Install datastax php-driver fox cassandra -RUN git clone https://github.com/datastax/php-driver.git /usr/src/datastax-php-driver && \ - cd /usr/src/datastax-php-driver && \ - git checkout --detach v${CASSANDRA_PHP_DRIVER_VERSION} && \ - git submodule update --init && \ - cd ext && \ - ./install.sh && \ - echo extension=cassandra.so > /usr/local/etc/php/conf.d/cassandra.ini - -# Install PHP extensions -RUN docker-php-ext-install zip mbstring intl opcache bcmath && \ - echo extension=bcmath.so > /usr/local/etc/php/conf.d/docker-php-ext-bcmath.ini && \ - apt-get install -y php5-xdebug && \ - echo zend_extension=xdebug.so > /usr/local/etc/php/conf.d/xdebug.ini && \ - pecl install apcu-5.1.5 && \ - echo extension=apcu.so > /usr/local/etc/php/conf.d/apcu.ini && \ - pecl install uuid && \ - echo extension=uuid.so > /usr/local/etc/php/conf.d/uuid.ini - - -RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" \ - && php composer-setup.php && php -r "unlink('composer-setup.php');" \ - && mv composer.phar /usr/local/bin/composer - -## Cleanup -RUN apt-get purge -y \ - g++ \ - git \ - && rm -rf /var/lib/apt/lists/* - -#ACPU -RUN pecl install apcu-${APCU_VERSION} && docker-php-ext-enable apcu -RUN echo "extension=apcu.so" >> /usr/local/etc/php/php.ini -RUN echo "apc.enable_cli=1" >> /usr/local/etc/php/php.ini -RUN echo "apc.enable=1" >> /usr/local/etc/php/php.ini - -RUN echo 'alias sf="php app/console"' >> ~/.bashrc -RUN echo 'alias sf3="php bin/console"' >> ~/.bashrc - -ADD ./uploads.ini /usr/local/etc/php/conf.d/uploads.ini - -ADD ./www.conf /usr/local/etc/php-fpm.d/ - -#ENCRYPTION -RUN apt-get update && apt-get install -y git -RUN git clone https://github.com/jedisct1/libsodium --branch stable -RUN cd libsodium && ./configure && make && make check && make install -RUN pecl install -f libsodium -RUN echo "extension = sodium.so" >> /usr/local/etc/php/php.ini - -#Sockets for amqp -RUN docker-php-ext-install sockets \ No newline at end of file diff --git a/twake/docker/php7.1-cassandra/uploads.ini b/twake/docker/php7.1-cassandra/uploads.ini deleted file mode 100644 index 15ef60b7..00000000 --- a/twake/docker/php7.1-cassandra/uploads.ini +++ /dev/null @@ -1,5 +0,0 @@ -file_uploads = On -memory_limit = 5G -upload_max_filesize = 5G -post_max_size = 5G -max_execution_time = 600 diff --git a/twake/docker/php7.1-cassandra/www.conf b/twake/docker/php7.1-cassandra/www.conf deleted file mode 100644 index e57f7e4f..00000000 --- a/twake/docker/php7.1-cassandra/www.conf +++ /dev/null @@ -1,20 +0,0 @@ -[www] - -user = www-data -group = www-data - -listen = /run/php/php7.0-fpm.sock - -listen.owner = www-data -listen.group = www-data - -; 30 childen if php is alone on 2cpu + 2go ram: --> 2go ram available - 0.5 (margin) divided by 50mo (average ram by process) -pm = ondemand -pm.max_children = 50 -pm.process_idle_timeout = 10s -pm.max_requests = 100 - -catch_workers_output = yes -php_flag[display_errors] = on -php_admin_value[error_log] = /var/log/fpm-php.www.log -php_admin_flag[log_errors] = on diff --git a/twake/docker/twake-nginx-php-only/Dockerfile b/twake/docker/twake-nginx-php-only/Dockerfile deleted file mode 100644 index 97aa8eab..00000000 --- a/twake/docker/twake-nginx-php-only/Dockerfile +++ /dev/null @@ -1,52 +0,0 @@ - -FROM debian:11 - -RUN apt-get update && apt-get -y install cron - -RUN apt-get update && apt-get install -y \ - nginx - -RUN apt-get update && apt-get install -y wget - -RUN rm /etc/nginx/sites-enabled/default - -RUN usermod -u 1000 www-data - -RUN apt-get remove certbot -RUN apt-get install -y python3 python3-venv libaugeas0 -RUN python3 -m venv /opt/certbot/ -RUN /opt/certbot/bin/pip install --upgrade pip -RUN /opt/certbot/bin/pip install certbot -RUN ln -s /opt/certbot/bin/certbot /usr/bin/certbot - -ADD docker/twake-nginx-php-only/nginx.conf /etc/nginx/nginx.conf - -# Install yarn -RUN apt-get update -RUN apt-get -y install curl -RUN apt-get -y install apt-transport-https ca-certificates apt-utils gnupg -RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - -RUN echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list -RUN apt-get update -RUN apt-get -y install yarn -RUN curl -sL https://deb.nodesource.com/setup_14.x | bash - -RUN apt-get install -y nodejs -RUN yarn global add webpack -RUN yarn global add webpack-cli -RUN apt-get update -RUN apt-get -y install git - -# Install php - -ADD docker/twake-nginx/site.conf /etc/nginx/sites-available/site.template -ADD docker/twake-nginx-php-only/nginx.conf /etc/nginx/nginx.conf -RUN apt-get update && apt-get install gettext-base - -RUN echo "upstream php-upstream { server php:9000; }" > /etc/nginx/conf.d/upstream.conf - -COPY docker/twake-nginx-php-only/entrypoint.sh / -RUN chmod 0777 /entrypoint.sh -ENTRYPOINT /entrypoint.sh - -EXPOSE 80 -EXPOSE 443 diff --git a/twake/docker/twake-nginx-php-only/entrypoint.sh b/twake/docker/twake-nginx-php-only/entrypoint.sh deleted file mode 100644 index 6aea2e40..00000000 --- a/twake/docker/twake-nginx-php-only/entrypoint.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash - -NODE_HOST="${NODE_HOST:-http://node:3000}" -PHP_UPSTREAM="${PHP_UPSTREAM:-php:9000}" -export NODE_HOST -export PHP_UPSTREAM -envsubst '$${NODE_HOST}' < /etc/nginx/sites-available/site.template > /etc/nginx/sites-enabled/site -echo "upstream php-upstream { server ${PHP_UPSTREAM}; }" > /etc/nginx/conf.d/upstream.conf - -cron -f & -nginx -g "daemon off;" diff --git a/twake/docker/twake-nginx-php-only/nginx.conf b/twake/docker/twake-nginx-php-only/nginx.conf deleted file mode 100644 index 4e801068..00000000 --- a/twake/docker/twake-nginx-php-only/nginx.conf +++ /dev/null @@ -1,65 +0,0 @@ -user www-data; -worker_processes 4; -pid /run/nginx.pid; - -events { - worker_connections 768; - # multi_accept on; -} - -http { - - client_max_body_size 200M; - - ## - # Basic Settings - ## - - sendfile on; - tcp_nopush on; - tcp_nodelay on; - keepalive_timeout 65; - types_hash_max_size 2048; - # server_tokens off; - - # server_names_hash_bucket_size 64; - # server_name_in_redirect off; - - include /etc/nginx/mime.types; - default_type application/octet-stream; - - ## - # SSL Settings - ## - - ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE - ssl_prefer_server_ciphers on; - - ## - # Logging Settings - ## - - access_log /var/log/nginx/access.log; - error_log /var/log/nginx/error.log; - - ## - # Gzip Settings - ## - - gzip on; - gzip_disable "msie6"; - - # gzip_vary on; - # gzip_proxied any; - # gzip_comp_level 6; - # gzip_buffers 16 8k; - # gzip_http_version 1.1; - # gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript; - - ## - # Virtual Host Configs - ## - - include /etc/nginx/conf.d/*.conf; - include /etc/nginx/sites-enabled/*; -} diff --git a/twake/docker/twake-nginx-php-only/site.conf b/twake/docker/twake-nginx-php-only/site.conf deleted file mode 100644 index 5a0ae1e4..00000000 --- a/twake/docker/twake-nginx-php-only/site.conf +++ /dev/null @@ -1,66 +0,0 @@ -server { - - listen 80; - server_name localhost; - root /twake-core/web; - - add_header Strict-Transport-Security "max-age=31536000"; - - location / { - return 302 https://web.twake.app/; - } - - location ~ ^/(internal|plugins).* { - proxy_pass http://node:3000; - } - - location ~ ^/(api|administration)/v2/.* { - proxy_pass http://node:3000; - } - - location ~ ^/socket/.* { - proxy_pass http://node:3000; - # this magic is needed for WebSocket - proxy_http_version 1.1; - proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection "upgrade"; - proxy_set_header Host $http_host; - proxy_set_header X-Real-IP $remote_addr; - proxy_connect_timeout 7d; - proxy_send_timeout 7d; - proxy_read_timeout 7d; - } - - location ~ ^/(ajax|api|administration|upload|bundle|medias).* { - # try to serve file directly, fallback to rewrite - try_files $uri @rewriteapp; - } - - location @rewriteapp { - # rewrite all to app.php - rewrite ^(.*)$ /app.php/$1 last; - } - - location ~ /.well-known { - allow all; - } - - location ~ ^/(app|app_dev|config|dev\/.*)\.php(/|$) { - fastcgi_pass php-upstream; - fastcgi_split_path_info ^(.+\.php)(/.*)$; - include fastcgi_params; - fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; - fastcgi_param HTTPS off; - fastcgi_buffer_size 128k; - fastcgi_buffers 4 256k; - fastcgi_busy_buffers_size 256k; - } - - location ~ /.well-known { - allow all; - } - - error_log /var/log/nginx/twakeapp_dev_error.log; - access_log /var/log/nginx/twakeapp_dev_access.log; - -} diff --git a/twake/docker/twake-php/Dockerfile b/twake/docker/twake-php/Dockerfile deleted file mode 100755 index dd57e7bd..00000000 --- a/twake/docker/twake-php/Dockerfile +++ /dev/null @@ -1,18 +0,0 @@ -FROM twaketech/php7.1-cassandra - -LABEL org.opencontainers.image.authors="Romaric Mourgues <romaric.mourgues@twakeapp.com>,Nguyen Thai <tknguyen@linagora.com>" - -#Crontab -ADD docker/twake-php/crontab /etc/cron.d/twake-cron -COPY backend/core/ /twake-core/ -COPY docker/twake-php/entrypoint.sh / - -RUN chmod 0644 /etc/cron.d/twake-cron && \ - touch /var/log/cron.log && \ - cd /twake-core/ && php composer.phar install && \ - chmod +x /entrypoint.sh - -#For exec -WORKDIR /twake-core/ - -ENTRYPOINT ["/entrypoint.sh", "$DEV"] diff --git a/twake/docker/twake-php/crontab b/twake/docker/twake-php/crontab deleted file mode 100644 index a9b9a00c..00000000 --- a/twake/docker/twake-php/crontab +++ /dev/null @@ -1,30 +0,0 @@ -# /etc/crontab: system-wide crontab -# Unlike any other crontab you don't have to run the `crontab' -# command to install the new version when you edit this file -# and files in /etc/cron.d. These files also have username fields, -# that none of the other crontabs do. - -SHELL=/bin/sh -PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin - -# m h dom mon dow user command -* * * * * root cd /twake-core/; php bin/console twake:mails_queue; -* * * * * root cd /twake-core/; php bin/console twake:node:push_mobile; -* * * * * root cd /twake-core/; php bin/console twake:node:push_channel_activity; - -* * * * * root cd /twake-core/; php bin/console twake:calendar_check; -* * * * * root cd /twake-core/; php bin/console twake:tasks_check_reminders; - -* * * * * root cd /twake-core/; php bin/console twake:notifications_mail; - -* * * * * root cd /twake-core/; php bin/console twake:preview_worker; - -* * * * * root cd /twake-core/; php bin/console twake:scheduled_notifications_consume_timetable -* * * * * root cd /twake-core/; php bin/console twake:scheduled_notifications_consume_shard - -* * * * * root chmod -R 777 /twake-core/cache; - -32 * * * * root kill -USR2 1; -# -# - diff --git a/twake/docker/twake-php/entrypoint.sh b/twake/docker/twake-php/entrypoint.sh deleted file mode 100644 index acd4aa39..00000000 --- a/twake/docker/twake-php/entrypoint.sh +++ /dev/null @@ -1,48 +0,0 @@ -#!/bin/sh - -if [ -z "$TIMEZONE" ]; then - TIMEZONE=Etc/UTC -fi - -echo $TIMEZONE > /etc/timezone && \ -dpkg-reconfigure -f noninteractive tzdata - -sed -i "s|;date.timezone =.*|date.timezone = $TIMEZONE|" /etc/php5/*/php.ini - -if [ -n "$PHP_MEMORY_LIMIT" ]; then - sed -i "s/^memory_limit =.*/memory_limit = $PHP_MEMORY_LIMIT/" /etc/php5/*/php.ini -fi - -chmod -R 777 /var/www & -chmod -R 777 /tmp/ -rm -R /tmp/* -chmod -R 777 /twake-core/ & -mkdir /twake-core/cache -chmod -R 777 /twake-core/cache & - -if [ "$1" = "dev" ] -then - if test -f "/twake-core/app/Configuration/Parameters.php"; then - echo "Configuration exists, doing nothing." - else - cp /twake-core/app/Configuration/Parameters.php.dist /twake-core/app/Configuration/Parameters.php - fi - - php composer.phar install -else - if test -f "/configuration/Parameters.php"; then - cp /configuration/Parameters.php /twake-core/app/Configuration/Parameters.php - else - cp /twake-core/app/Configuration/Parameters.php.dist /twake-core/app/Configuration/Parameters.php - fi -fi - -(php composer.phar dump-autoload --optimize; php composer.phar dump-autoload --classmap-authoritative; php composer.phar dump-autoload --apcu; php bin/console twake:schema:update; php bin/console twake:init; php bin/console twake:init_connector; php bin/console twake:mapping) & - -mkdir /twake-core/cache -chmod -R 777 /twake-core/cache & - -echo "" >> /etc/cron.d/twake-cron - -cron -f & -docker-php-entrypoint php-fpm diff --git a/twake/docker/twake-plugins/Dockerfile b/twake/docker/twake-plugins/Dockerfile deleted file mode 100644 index 06eca58d..00000000 --- a/twake/docker/twake-plugins/Dockerfile +++ /dev/null @@ -1,26 +0,0 @@ -# syntax=docker/dockerfile:1 - - -FROM docker:20.10.17-dind-alpine3.16 - - -RUN apk add --update nodejs-current npm bash curl - -WORKDIR /usr/src/app - -COPY plugins/ . - -VOLUME /usr/src/app -RUN chmod -R +x scripts -RUN mv scripts/* /bin -RUN apk update -RUN apk add git - - - - - - - - - diff --git a/twake/frontend/yarn.lock b/twake/frontend/yarn.lock index afcc711b..fdd017c8 100644 --- a/twake/frontend/yarn.lock +++ b/twake/frontend/yarn.lock @@ -3,86 +3,130 @@ "@ampproject/remapping@^2.1.0": - "integrity" "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==" - "resolved" "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz" - "version" "2.2.0" + version "2.2.0" + resolved "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz" + integrity sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w== dependencies: "@jridgewell/gen-mapping" "^0.1.0" "@jridgewell/trace-mapping" "^0.3.9" "@ant-design/colors@^6.0.0": - "integrity" "sha512-qAZRvPzfdWHtfameEGP2Qvuf838NhergR35o+EuVyB5XvSA98xod5r4utvi4TJ3ywmevm290g9nsCG5MryrdWQ==" - "resolved" "https://registry.npmjs.org/@ant-design/colors/-/colors-6.0.0.tgz" - "version" "6.0.0" + version "6.0.0" + resolved "https://registry.npmjs.org/@ant-design/colors/-/colors-6.0.0.tgz" + integrity sha512-qAZRvPzfdWHtfameEGP2Qvuf838NhergR35o+EuVyB5XvSA98xod5r4utvi4TJ3ywmevm290g9nsCG5MryrdWQ== dependencies: "@ctrl/tinycolor" "^3.4.0" "@ant-design/icons-svg@^4.2.1": - "integrity" "sha512-EB0iwlKDGpG93hW8f85CTJTs4SvMX7tt5ceupvhALp1IF44SeUFOMhKUOYqpsoYWQKAOuTRDMqn75rEaKDp0Xw==" - "resolved" "https://registry.npmjs.org/@ant-design/icons-svg/-/icons-svg-4.2.1.tgz" - "version" "4.2.1" + version "4.2.1" + resolved "https://registry.npmjs.org/@ant-design/icons-svg/-/icons-svg-4.2.1.tgz" + integrity sha512-EB0iwlKDGpG93hW8f85CTJTs4SvMX7tt5ceupvhALp1IF44SeUFOMhKUOYqpsoYWQKAOuTRDMqn75rEaKDp0Xw== "@ant-design/icons@^4.2.2", "@ant-design/icons@^4.7.0": - "integrity" "sha512-T89P2jG2vM7OJ0IfGx2+9FC5sQjtTzRSz+mCHTXkFn/ELZc2YpfStmYHmqzq2Jx55J0F7+O6i5/ZKFSVNWCKNg==" - "resolved" "https://registry.npmjs.org/@ant-design/icons/-/icons-4.8.0.tgz" - "version" "4.8.0" + version "4.8.0" + resolved "https://registry.npmjs.org/@ant-design/icons/-/icons-4.8.0.tgz" + integrity sha512-T89P2jG2vM7OJ0IfGx2+9FC5sQjtTzRSz+mCHTXkFn/ELZc2YpfStmYHmqzq2Jx55J0F7+O6i5/ZKFSVNWCKNg== dependencies: "@ant-design/colors" "^6.0.0" "@ant-design/icons-svg" "^4.2.1" "@babel/runtime" "^7.11.2" - "classnames" "^2.2.6" - "rc-util" "^5.9.4" + classnames "^2.2.6" + rc-util "^5.9.4" "@ant-design/react-slick@~0.29.1": - "integrity" "sha512-kgjtKmkGHa19FW21lHnAfyyH9AAoh35pBdcJ53rHmQ3O+cfFHGHnUbj/HFrRNJ5vIts09FKJVAD8RpaC+RaWfA==" - "resolved" "https://registry.npmjs.org/@ant-design/react-slick/-/react-slick-0.29.2.tgz" - "version" "0.29.2" + version "0.29.2" + resolved "https://registry.npmjs.org/@ant-design/react-slick/-/react-slick-0.29.2.tgz" + integrity sha512-kgjtKmkGHa19FW21lHnAfyyH9AAoh35pBdcJ53rHmQ3O+cfFHGHnUbj/HFrRNJ5vIts09FKJVAD8RpaC+RaWfA== dependencies: "@babel/runtime" "^7.10.4" - "classnames" "^2.2.5" - "json2mq" "^0.2.0" - "lodash" "^4.17.21" - "resize-observer-polyfill" "^1.5.1" + classnames "^2.2.5" + json2mq "^0.2.0" + lodash "^4.17.21" + resize-observer-polyfill "^1.5.1" "@apideck/better-ajv-errors@^0.3.1": - "integrity" "sha512-P+ZygBLZtkp0qqOAJJVX4oX/sFo5JR3eBWwwuqHHhK0GIgQOKWrAfiAaWX0aArHkRWHMuggFEgAZNxVPwPZYaA==" - "resolved" "https://registry.npmjs.org/@apideck/better-ajv-errors/-/better-ajv-errors-0.3.6.tgz" - "version" "0.3.6" + version "0.3.6" + resolved "https://registry.npmjs.org/@apideck/better-ajv-errors/-/better-ajv-errors-0.3.6.tgz" + integrity sha512-P+ZygBLZtkp0qqOAJJVX4oX/sFo5JR3eBWwwuqHHhK0GIgQOKWrAfiAaWX0aArHkRWHMuggFEgAZNxVPwPZYaA== dependencies: - "json-schema" "^0.4.0" - "jsonpointer" "^5.0.0" - "leven" "^3.1.0" - -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.0", "@babel/code-frame@^7.18.6", "@babel/code-frame@^7.5.5", "@babel/code-frame@^7.8.3": - "integrity" "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==" - "resolved" "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/highlight" "^7.18.6" + json-schema "^0.4.0" + jsonpointer "^5.0.0" + leven "^3.1.0" "@babel/code-frame@7.0.0-beta.53": - "integrity" "sha512-6o6EnDfG+zQqfrYDLPc5kGp6+klZFFFqGucljRcUa7IZuTBpvALWG0O+7rtOGFF1sYhr4jBib995RvFuNFxDMw==" - "resolved" "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.53.tgz" - "version" "7.0.0-beta.53" + version "7.0.0-beta.53" + resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.53.tgz" + integrity sha512-6o6EnDfG+zQqfrYDLPc5kGp6+klZFFFqGucljRcUa7IZuTBpvALWG0O+7rtOGFF1sYhr4jBib995RvFuNFxDMw== dependencies: "@babel/highlight" "7.0.0-beta.53" "@babel/code-frame@7.10.4": - "integrity" "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==" - "resolved" "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz" - "version" "7.10.4" + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz" + integrity sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg== dependencies: "@babel/highlight" "^7.10.4" -"@babel/compat-data@^7.17.7", "@babel/compat-data@^7.20.0", "@babel/compat-data@^7.20.1", "@babel/compat-data@^7.9.0": - "integrity" "sha512-EWZ4mE2diW3QALKvDMiXnbZpRvlj+nayZ112nK93SnhqOtpdsbVD4W+2tEoT3YNBAG9RBR0ISY758ZkOgsn6pQ==" - "resolved" "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.1.tgz" - "version" "7.20.1" +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.0", "@babel/code-frame@^7.18.6", "@babel/code-frame@^7.5.5", "@babel/code-frame@^7.8.3": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz" + integrity sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q== + dependencies: + "@babel/highlight" "^7.18.6" -"@babel/core@*", "@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.1.0", "@babel/core@^7.11.1", "@babel/core@^7.11.5", "@babel/core@^7.11.6", "@babel/core@^7.12.0", "@babel/core@^7.12.10", "@babel/core@^7.12.3", "@babel/core@^7.13.0", "@babel/core@^7.13.16", "@babel/core@^7.16.0", "@babel/core@^7.4.0-0", "@babel/core@^7.4.5", "@babel/core@^7.7.2", "@babel/core@^7.7.5", "@babel/core@^7.8.0", "@babel/core@^7.8.7", "@babel/core@^7.9.6", "@babel/core@>=7.0.0-beta.50 <7.0.0-rc.0", "@babel/core@>=7.11.0": - "integrity" "sha512-w7DbG8DtMrJcFOi4VrLm+8QM4az8Mo+PuLBKLp2zrYRCow8W/f9xiXm5sN53C8HksCyDQwCKha9JiDoIyPjT2g==" - "resolved" "https://registry.npmjs.org/@babel/core/-/core-7.20.2.tgz" - "version" "7.20.2" +"@babel/compat-data@^7.17.7", "@babel/compat-data@^7.20.0", "@babel/compat-data@^7.20.1", "@babel/compat-data@^7.9.0": + version "7.20.1" + resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.1.tgz" + integrity sha512-EWZ4mE2diW3QALKvDMiXnbZpRvlj+nayZ112nK93SnhqOtpdsbVD4W+2tEoT3YNBAG9RBR0ISY758ZkOgsn6pQ== + +"@babel/core@7.12.9": + version "7.12.9" + resolved "https://registry.npmjs.org/@babel/core/-/core-7.12.9.tgz" + integrity sha512-gTXYh3M5wb7FRXQy+FErKFAv90BnlOuNn1QkCK2lREoPAjrQCO49+HVSrFoe5uakFAF5eenS75KbO2vQiLrTMQ== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/generator" "^7.12.5" + "@babel/helper-module-transforms" "^7.12.1" + "@babel/helpers" "^7.12.5" + "@babel/parser" "^7.12.7" + "@babel/template" "^7.12.7" + "@babel/traverse" "^7.12.9" + "@babel/types" "^7.12.7" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.1" + json5 "^2.1.2" + lodash "^4.17.19" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + +"@babel/core@7.9.0": + version "7.9.0" + resolved "https://registry.npmjs.org/@babel/core/-/core-7.9.0.tgz" + integrity sha512-kWc7L0fw1xwvI0zi8OKVBuxRVefwGOrKSQMvrQ3dW+bIIavBY3/NpXmpjMy7bQnLgwgzWQZ8TlM57YHpHNHz4w== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/generator" "^7.9.0" + "@babel/helper-module-transforms" "^7.9.0" + "@babel/helpers" "^7.9.0" + "@babel/parser" "^7.9.0" + "@babel/template" "^7.8.6" + "@babel/traverse" "^7.9.0" + "@babel/types" "^7.9.0" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.1" + json5 "^2.1.2" + lodash "^4.17.13" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + +"@babel/core@^7.1.0", "@babel/core@^7.11.1", "@babel/core@^7.12.10", "@babel/core@^7.12.3", "@babel/core@^7.13.16", "@babel/core@^7.16.0", "@babel/core@^7.4.5", "@babel/core@^7.7.2", "@babel/core@^7.7.5", "@babel/core@^7.8.0", "@babel/core@^7.8.7": + version "7.20.2" + resolved "https://registry.npmjs.org/@babel/core/-/core-7.20.2.tgz" + integrity sha512-w7DbG8DtMrJcFOi4VrLm+8QM4az8Mo+PuLBKLp2zrYRCow8W/f9xiXm5sN53C8HksCyDQwCKha9JiDoIyPjT2g== dependencies: "@ampproject/remapping" "^2.1.0" "@babel/code-frame" "^7.18.6" @@ -94,121 +138,77 @@ "@babel/template" "^7.18.10" "@babel/traverse" "^7.20.1" "@babel/types" "^7.20.2" - "convert-source-map" "^1.7.0" - "debug" "^4.1.0" - "gensync" "^1.0.0-beta.2" - "json5" "^2.2.1" - "semver" "^6.3.0" - -"@babel/core@7.12.9": - "integrity" "sha512-gTXYh3M5wb7FRXQy+FErKFAv90BnlOuNn1QkCK2lREoPAjrQCO49+HVSrFoe5uakFAF5eenS75KbO2vQiLrTMQ==" - "resolved" "https://registry.npmjs.org/@babel/core/-/core-7.12.9.tgz" - "version" "7.12.9" - dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/generator" "^7.12.5" - "@babel/helper-module-transforms" "^7.12.1" - "@babel/helpers" "^7.12.5" - "@babel/parser" "^7.12.7" - "@babel/template" "^7.12.7" - "@babel/traverse" "^7.12.9" - "@babel/types" "^7.12.7" - "convert-source-map" "^1.7.0" - "debug" "^4.1.0" - "gensync" "^1.0.0-beta.1" - "json5" "^2.1.2" - "lodash" "^4.17.19" - "resolve" "^1.3.2" - "semver" "^5.4.1" - "source-map" "^0.5.0" - -"@babel/core@7.9.0": - "integrity" "sha512-kWc7L0fw1xwvI0zi8OKVBuxRVefwGOrKSQMvrQ3dW+bIIavBY3/NpXmpjMy7bQnLgwgzWQZ8TlM57YHpHNHz4w==" - "resolved" "https://registry.npmjs.org/@babel/core/-/core-7.9.0.tgz" - "version" "7.9.0" - dependencies: - "@babel/code-frame" "^7.8.3" - "@babel/generator" "^7.9.0" - "@babel/helper-module-transforms" "^7.9.0" - "@babel/helpers" "^7.9.0" - "@babel/parser" "^7.9.0" - "@babel/template" "^7.8.6" - "@babel/traverse" "^7.9.0" - "@babel/types" "^7.9.0" - "convert-source-map" "^1.7.0" - "debug" "^4.1.0" - "gensync" "^1.0.0-beta.1" - "json5" "^2.1.2" - "lodash" "^4.17.13" - "resolve" "^1.3.2" - "semver" "^5.4.1" - "source-map" "^0.5.0" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.1" + semver "^6.3.0" "@babel/eslint-parser@^7.16.3": - "integrity" "sha512-AqNf2QWt1rtu2/1rLswy6CDP7H9Oh3mMhk177Y67Rg8d7RD9WfOLLv8CGn6tisFvS2htm86yIe1yLF6I1UDaGQ==" - "resolved" "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.19.1.tgz" - "version" "7.19.1" + version "7.19.1" + resolved "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.19.1.tgz" + integrity sha512-AqNf2QWt1rtu2/1rLswy6CDP7H9Oh3mMhk177Y67Rg8d7RD9WfOLLv8CGn6tisFvS2htm86yIe1yLF6I1UDaGQ== dependencies: "@nicolo-ribaudo/eslint-scope-5-internals" "5.1.1-v1" - "eslint-visitor-keys" "^2.1.0" - "semver" "^6.3.0" + eslint-visitor-keys "^2.1.0" + semver "^6.3.0" + +"@babel/generator@7.0.0-beta.53": + version "7.0.0-beta.53" + resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.0.0-beta.53.tgz" + integrity sha512-XnfdZ6oFVC4cE4+7jbEa1MLFSXrGY/SfSE6onUyyPSrRbjYs9sdrYKi/JgKGSJX65A8GFswHwWcBPCynfVEr5g== + dependencies: + "@babel/types" "7.0.0-beta.53" + jsesc "^2.5.1" + lodash "^4.17.5" + source-map "^0.5.0" + trim-right "^1.0.1" "@babel/generator@^7.12.11", "@babel/generator@^7.12.5", "@babel/generator@^7.20.2", "@babel/generator@^7.20.7", "@babel/generator@^7.4.0", "@babel/generator@^7.7.2", "@babel/generator@^7.9.0": - "integrity" "sha512-AEmuXHdcD3A52HHXxaTmYlb8q/xMEhoRP67B3T4Oq7lbmSoqroMZzjnGj3+i1io3pdnF8iBYVu4Ilj+c4hBxYg==" - "resolved" "https://registry.npmjs.org/@babel/generator/-/generator-7.20.14.tgz" - "version" "7.20.14" + version "7.20.14" + resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.20.14.tgz" + integrity sha512-AEmuXHdcD3A52HHXxaTmYlb8q/xMEhoRP67B3T4Oq7lbmSoqroMZzjnGj3+i1io3pdnF8iBYVu4Ilj+c4hBxYg== dependencies: "@babel/types" "^7.20.7" "@jridgewell/gen-mapping" "^0.3.2" - "jsesc" "^2.5.1" + jsesc "^2.5.1" -"@babel/generator@7.0.0-beta.53": - "integrity" "sha512-XnfdZ6oFVC4cE4+7jbEa1MLFSXrGY/SfSE6onUyyPSrRbjYs9sdrYKi/JgKGSJX65A8GFswHwWcBPCynfVEr5g==" - "resolved" "https://registry.npmjs.org/@babel/generator/-/generator-7.0.0-beta.53.tgz" - "version" "7.0.0-beta.53" +"@babel/helper-annotate-as-pure@7.0.0-beta.53": + version "7.0.0-beta.53" + resolved "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0-beta.53.tgz" + integrity sha512-HVsEm3wjSe3BCXWxnyqrTWWQAxvtHR35F4q84jS68aS8R3WfbOnFEwlqsrWX5quZL0ArR68REOWRDCyG+JBSlQ== dependencies: "@babel/types" "7.0.0-beta.53" - "jsesc" "^2.5.1" - "lodash" "^4.17.5" - "source-map" "^0.5.0" - "trim-right" "^1.0.1" "@babel/helper-annotate-as-pure@^7.18.6": - "integrity" "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==" - "resolved" "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz" + integrity sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA== dependencies: "@babel/types" "^7.18.6" -"@babel/helper-annotate-as-pure@7.0.0-beta.53": - "integrity" "sha512-HVsEm3wjSe3BCXWxnyqrTWWQAxvtHR35F4q84jS68aS8R3WfbOnFEwlqsrWX5quZL0ArR68REOWRDCyG+JBSlQ==" - "resolved" "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0-beta.53.tgz" - "version" "7.0.0-beta.53" - dependencies: - "@babel/types" "7.0.0-beta.53" - "@babel/helper-builder-binary-assignment-operator-visitor@^7.18.6": - "integrity" "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==" - "resolved" "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz" - "version" "7.18.9" + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz" + integrity sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw== dependencies: "@babel/helper-explode-assignable-expression" "^7.18.6" "@babel/types" "^7.18.9" "@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.9", "@babel/helper-compilation-targets@^7.20.0", "@babel/helper-compilation-targets@^7.8.7": - "integrity" "sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==" - "resolved" "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz" - "version" "7.20.0" + version "7.20.0" + resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz" + integrity sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ== dependencies: "@babel/compat-data" "^7.20.0" "@babel/helper-validator-option" "^7.18.6" - "browserslist" "^4.21.3" - "semver" "^6.3.0" + browserslist "^4.21.3" + semver "^6.3.0" "@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.20.12", "@babel/helper-create-class-features-plugin@^7.20.2", "@babel/helper-create-class-features-plugin@^7.8.3": - "integrity" "sha512-9OunRkbT0JQcednL0UFvbfXpAsUXiGjUk0a7sN8fUXX7Mue79cUSMjHGDRRi/Vz9vYlpIhLV5fMD5dKoMhhsNQ==" - "resolved" "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.12.tgz" - "version" "7.20.12" + version "7.20.12" + resolved "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.12.tgz" + integrity sha512-9OunRkbT0JQcednL0UFvbfXpAsUXiGjUk0a7sN8fUXX7Mue79cUSMjHGDRRi/Vz9vYlpIhLV5fMD5dKoMhhsNQ== dependencies: "@babel/helper-annotate-as-pure" "^7.18.6" "@babel/helper-environment-visitor" "^7.18.9" @@ -220,108 +220,108 @@ "@babel/helper-split-export-declaration" "^7.18.6" "@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.19.0": - "integrity" "sha512-htnV+mHX32DF81amCDrwIDr8nrp1PTm+3wfBN9/v8QJOLEioOCOG7qNyq0nHeFiWbT3Eb7gsPwEmV64UCQ1jzw==" - "resolved" "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.19.0.tgz" - "version" "7.19.0" + version "7.19.0" + resolved "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.19.0.tgz" + integrity sha512-htnV+mHX32DF81amCDrwIDr8nrp1PTm+3wfBN9/v8QJOLEioOCOG7qNyq0nHeFiWbT3Eb7gsPwEmV64UCQ1jzw== dependencies: "@babel/helper-annotate-as-pure" "^7.18.6" - "regexpu-core" "^5.1.0" + regexpu-core "^5.1.0" "@babel/helper-define-polyfill-provider@^0.1.5": - "integrity" "sha512-nXuzCSwlJ/WKr8qxzW816gwyT6VZgiJG17zR40fou70yfAcqjoNyTLl/DQ+FExw5Hx5KNqshmN8Ldl/r2N7cTg==" - "resolved" "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.1.5.tgz" - "version" "0.1.5" + version "0.1.5" + resolved "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.1.5.tgz" + integrity sha512-nXuzCSwlJ/WKr8qxzW816gwyT6VZgiJG17zR40fou70yfAcqjoNyTLl/DQ+FExw5Hx5KNqshmN8Ldl/r2N7cTg== dependencies: "@babel/helper-compilation-targets" "^7.13.0" "@babel/helper-module-imports" "^7.12.13" "@babel/helper-plugin-utils" "^7.13.0" "@babel/traverse" "^7.13.0" - "debug" "^4.1.1" - "lodash.debounce" "^4.0.8" - "resolve" "^1.14.2" - "semver" "^6.1.2" + debug "^4.1.1" + lodash.debounce "^4.0.8" + resolve "^1.14.2" + semver "^6.1.2" "@babel/helper-define-polyfill-provider@^0.3.3": - "integrity" "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==" - "resolved" "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz" - "version" "0.3.3" + version "0.3.3" + resolved "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz" + integrity sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww== dependencies: "@babel/helper-compilation-targets" "^7.17.7" "@babel/helper-plugin-utils" "^7.16.7" - "debug" "^4.1.1" - "lodash.debounce" "^4.0.8" - "resolve" "^1.14.2" - "semver" "^6.1.2" + debug "^4.1.1" + lodash.debounce "^4.0.8" + resolve "^1.14.2" + semver "^6.1.2" "@babel/helper-environment-visitor@^7.18.9": - "integrity" "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==" - "resolved" "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz" - "version" "7.18.9" + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz" + integrity sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg== "@babel/helper-explode-assignable-expression@^7.18.6": - "integrity" "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==" - "resolved" "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz" + integrity sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg== dependencies: "@babel/types" "^7.18.6" -"@babel/helper-function-name@^7.18.9", "@babel/helper-function-name@^7.19.0": - "integrity" "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==" - "resolved" "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz" - "version" "7.19.0" - dependencies: - "@babel/template" "^7.18.10" - "@babel/types" "^7.19.0" - "@babel/helper-function-name@7.0.0-beta.53": - "integrity" "sha512-vmdaNg17OWa0lFVJqZLQcvc59KIOcJDpyvqr3EJT9BYsjh/JxDlYq/JpBzLpWv9AkXeBdY4NevZXD37gdsLu0Q==" - "resolved" "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.53.tgz" - "version" "7.0.0-beta.53" + version "7.0.0-beta.53" + resolved "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.53.tgz" + integrity sha512-vmdaNg17OWa0lFVJqZLQcvc59KIOcJDpyvqr3EJT9BYsjh/JxDlYq/JpBzLpWv9AkXeBdY4NevZXD37gdsLu0Q== dependencies: "@babel/helper-get-function-arity" "7.0.0-beta.53" "@babel/template" "7.0.0-beta.53" "@babel/types" "7.0.0-beta.53" +"@babel/helper-function-name@^7.18.9", "@babel/helper-function-name@^7.19.0": + version "7.19.0" + resolved "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz" + integrity sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w== + dependencies: + "@babel/template" "^7.18.10" + "@babel/types" "^7.19.0" + "@babel/helper-get-function-arity@7.0.0-beta.53": - "integrity" "sha512-jLbME3MfCVT88GLuUDJ1X+ErDeWi59aeBb/O6pyhp5C+eVRRiLxzptRmpvJqG+Va6aOBWSoJ8uBNKJ1ghT/ONg==" - "resolved" "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.53.tgz" - "version" "7.0.0-beta.53" + version "7.0.0-beta.53" + resolved "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.53.tgz" + integrity sha512-jLbME3MfCVT88GLuUDJ1X+ErDeWi59aeBb/O6pyhp5C+eVRRiLxzptRmpvJqG+Va6aOBWSoJ8uBNKJ1ghT/ONg== dependencies: "@babel/types" "7.0.0-beta.53" "@babel/helper-hoist-variables@^7.18.6": - "integrity" "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==" - "resolved" "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz" + integrity sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q== dependencies: "@babel/types" "^7.18.6" "@babel/helper-member-expression-to-functions@^7.20.7": - "integrity" "sha512-9J0CxJLq315fEdi4s7xK5TQaNYjZw+nDVpVqr1axNGKzdrdwYBD5b4uKv3n75aABG0rCCTK8Im8Ww7eYfMrZgw==" - "resolved" "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.20.7.tgz" - "version" "7.20.7" + version "7.20.7" + resolved "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.20.7.tgz" + integrity sha512-9J0CxJLq315fEdi4s7xK5TQaNYjZw+nDVpVqr1axNGKzdrdwYBD5b4uKv3n75aABG0rCCTK8Im8Ww7eYfMrZgw== dependencies: "@babel/types" "^7.20.7" +"@babel/helper-module-imports@7.0.0-beta.53": + version "7.0.0-beta.53" + resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.0.0-beta.53.tgz" + integrity sha512-nyyERQH7kRCy0OR2Ek0+sD+wxZEhCmaLAVE7SylPYmCce1Dq8XGmibT1eQVekRkr78utXnDKMe4A269SBVlIRA== + dependencies: + "@babel/types" "7.0.0-beta.53" + lodash "^4.17.5" + "@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.18.6", "@babel/helper-module-imports@^7.8.3": - "integrity" "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==" - "resolved" "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz" + integrity sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA== dependencies: "@babel/types" "^7.18.6" -"@babel/helper-module-imports@7.0.0-beta.53": - "integrity" "sha512-nyyERQH7kRCy0OR2Ek0+sD+wxZEhCmaLAVE7SylPYmCce1Dq8XGmibT1eQVekRkr78utXnDKMe4A269SBVlIRA==" - "resolved" "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.0.0-beta.53.tgz" - "version" "7.0.0-beta.53" - dependencies: - "@babel/types" "7.0.0-beta.53" - "lodash" "^4.17.5" - "@babel/helper-module-transforms@^7.12.1", "@babel/helper-module-transforms@^7.18.6", "@babel/helper-module-transforms@^7.19.6", "@babel/helper-module-transforms@^7.20.2", "@babel/helper-module-transforms@^7.9.0": - "integrity" "sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA==" - "resolved" "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.2.tgz" - "version" "7.20.2" + version "7.20.2" + resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.2.tgz" + integrity sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA== dependencies: "@babel/helper-environment-visitor" "^7.18.9" "@babel/helper-module-imports" "^7.18.6" @@ -333,41 +333,31 @@ "@babel/types" "^7.20.2" "@babel/helper-optimise-call-expression@^7.18.6": - "integrity" "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==" - "resolved" "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz" + integrity sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA== dependencies: "@babel/types" "^7.18.6" -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.18.9", "@babel/helper-plugin-utils@^7.19.0", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - "integrity" "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==" - "resolved" "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz" - "version" "7.20.2" - "@babel/helper-plugin-utils@7.0.0-beta.53": - "integrity" "sha512-ziTIzKm3Hj8LvmV6HwyPC2t2NgSNg2T72Cifqaw3zo44ATRUeNI/nH7NoQZChNNwye97pbzs+UAHq6fCTt3uFg==" - "resolved" "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0-beta.53.tgz" - "version" "7.0.0-beta.53" + version "7.0.0-beta.53" + resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0-beta.53.tgz" + integrity sha512-ziTIzKm3Hj8LvmV6HwyPC2t2NgSNg2T72Cifqaw3zo44ATRUeNI/nH7NoQZChNNwye97pbzs+UAHq6fCTt3uFg== "@babel/helper-plugin-utils@7.10.4": - "integrity" "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==" - "resolved" "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz" - "version" "7.10.4" + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz" + integrity sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg== -"@babel/helper-remap-async-to-generator@^7.18.6", "@babel/helper-remap-async-to-generator@^7.18.9": - "integrity" "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==" - "resolved" "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz" - "version" "7.18.9" - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-wrap-function" "^7.18.9" - "@babel/types" "^7.18.9" +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.18.9", "@babel/helper-plugin-utils@^7.19.0", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.20.2" + resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz" + integrity sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ== "@babel/helper-remap-async-to-generator@7.0.0-beta.53": - "integrity" "sha512-yVndfFtBJjwX1QuE1ks8FEHyJkxAXKZfykk/PPprhd4zWJZRBh0UgtV6uHcb302s2wPQ/6cUgB4GEF8z9aN2DQ==" - "resolved" "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.0.0-beta.53.tgz" - "version" "7.0.0-beta.53" + version "7.0.0-beta.53" + resolved "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.0.0-beta.53.tgz" + integrity sha512-yVndfFtBJjwX1QuE1ks8FEHyJkxAXKZfykk/PPprhd4zWJZRBh0UgtV6uHcb302s2wPQ/6cUgB4GEF8z9aN2DQ== dependencies: "@babel/helper-annotate-as-pure" "7.0.0-beta.53" "@babel/helper-wrap-function" "7.0.0-beta.53" @@ -375,10 +365,20 @@ "@babel/traverse" "7.0.0-beta.53" "@babel/types" "7.0.0-beta.53" +"@babel/helper-remap-async-to-generator@^7.18.6", "@babel/helper-remap-async-to-generator@^7.18.9": + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz" + integrity sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-wrap-function" "^7.18.9" + "@babel/types" "^7.18.9" + "@babel/helper-replace-supers@^7.18.6", "@babel/helper-replace-supers@^7.19.1", "@babel/helper-replace-supers@^7.20.7": - "integrity" "sha512-vujDMtB6LVfNW13jhlCrp48QNslK6JXi7lQG736HVbHz/mbf4Dc7tIRh1Xf5C0rF7BP8iiSxGMCmY6Ci1ven3A==" - "resolved" "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.20.7.tgz" - "version" "7.20.7" + version "7.20.7" + resolved "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.20.7.tgz" + integrity sha512-vujDMtB6LVfNW13jhlCrp48QNslK6JXi7lQG736HVbHz/mbf4Dc7tIRh1Xf5C0rF7BP8iiSxGMCmY6Ci1ven3A== dependencies: "@babel/helper-environment-visitor" "^7.18.9" "@babel/helper-member-expression-to-functions" "^7.20.7" @@ -388,160 +388,169 @@ "@babel/types" "^7.20.7" "@babel/helper-simple-access@^7.19.4", "@babel/helper-simple-access@^7.20.2": - "integrity" "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==" - "resolved" "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz" - "version" "7.20.2" + version "7.20.2" + resolved "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz" + integrity sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA== dependencies: "@babel/types" "^7.20.2" "@babel/helper-skip-transparent-expression-wrappers@^7.18.9", "@babel/helper-skip-transparent-expression-wrappers@^7.20.0": - "integrity" "sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==" - "resolved" "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz" - "version" "7.20.0" + version "7.20.0" + resolved "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz" + integrity sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg== dependencies: "@babel/types" "^7.20.0" -"@babel/helper-split-export-declaration@^7.18.6": - "integrity" "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==" - "resolved" "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/types" "^7.18.6" - "@babel/helper-split-export-declaration@7.0.0-beta.53": - "integrity" "sha512-7twjNOXZFIuiGpfkaf2j1WuGFbfrmHS5ES9GXXXT0xbQ5UmyX9nvaTJHMt11t6pvIjv1xvtBVuDyMCrvyd+E/w==" - "resolved" "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0-beta.53.tgz" - "version" "7.0.0-beta.53" + version "7.0.0-beta.53" + resolved "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0-beta.53.tgz" + integrity sha512-7twjNOXZFIuiGpfkaf2j1WuGFbfrmHS5ES9GXXXT0xbQ5UmyX9nvaTJHMt11t6pvIjv1xvtBVuDyMCrvyd+E/w== dependencies: "@babel/types" "7.0.0-beta.53" +"@babel/helper-split-export-declaration@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz" + integrity sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA== + dependencies: + "@babel/types" "^7.18.6" + "@babel/helper-string-parser@^7.19.4": - "integrity" "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==" - "resolved" "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz" - "version" "7.19.4" + version "7.19.4" + resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz" + integrity sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw== "@babel/helper-validator-identifier@^7.18.6", "@babel/helper-validator-identifier@^7.19.1": - "integrity" "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==" - "resolved" "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz" - "version" "7.19.1" + version "7.19.1" + resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz" + integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w== "@babel/helper-validator-option@^7.18.6": - "integrity" "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==" - "resolved" "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz" - "version" "7.18.6" - -"@babel/helper-wrap-function@^7.18.9": - "integrity" "sha512-txX8aN8CZyYGTwcLhlk87KRqncAzhh5TpQamZUa0/u3an36NtDpUP6bQgBCBcLeBs09R/OwQu3OjK0k/HwfNDg==" - "resolved" "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.19.0.tgz" - "version" "7.19.0" - dependencies: - "@babel/helper-function-name" "^7.19.0" - "@babel/template" "^7.18.10" - "@babel/traverse" "^7.19.0" - "@babel/types" "^7.19.0" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz" + integrity sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw== "@babel/helper-wrap-function@7.0.0-beta.53": - "integrity" "sha512-BAjHzqq+lkhepz79vY0eZ7WfBl09XGDsHrqfCN2fg2PLipWZYJR0O8rP94YUTpS0gy1AIB4lCQl/5dV4SvMV9A==" - "resolved" "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.0.0-beta.53.tgz" - "version" "7.0.0-beta.53" + version "7.0.0-beta.53" + resolved "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.0.0-beta.53.tgz" + integrity sha512-BAjHzqq+lkhepz79vY0eZ7WfBl09XGDsHrqfCN2fg2PLipWZYJR0O8rP94YUTpS0gy1AIB4lCQl/5dV4SvMV9A== dependencies: "@babel/helper-function-name" "7.0.0-beta.53" "@babel/template" "7.0.0-beta.53" "@babel/traverse" "7.0.0-beta.53" "@babel/types" "7.0.0-beta.53" +"@babel/helper-wrap-function@^7.18.9": + version "7.19.0" + resolved "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.19.0.tgz" + integrity sha512-txX8aN8CZyYGTwcLhlk87KRqncAzhh5TpQamZUa0/u3an36NtDpUP6bQgBCBcLeBs09R/OwQu3OjK0k/HwfNDg== + dependencies: + "@babel/helper-function-name" "^7.19.0" + "@babel/template" "^7.18.10" + "@babel/traverse" "^7.19.0" + "@babel/types" "^7.19.0" + "@babel/helpers@^7.12.5", "@babel/helpers@^7.20.1", "@babel/helpers@^7.9.0": - "integrity" "sha512-J77mUVaDTUJFZ5BpP6mMn6OIl3rEWymk2ZxDBQJUG3P+PbmyMcF3bYWvz0ma69Af1oobDqT/iAsvzhB58xhQUg==" - "resolved" "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.1.tgz" - "version" "7.20.1" + version "7.20.1" + resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.1.tgz" + integrity sha512-J77mUVaDTUJFZ5BpP6mMn6OIl3rEWymk2ZxDBQJUG3P+PbmyMcF3bYWvz0ma69Af1oobDqT/iAsvzhB58xhQUg== dependencies: "@babel/template" "^7.18.10" "@babel/traverse" "^7.20.1" "@babel/types" "^7.20.0" +"@babel/highlight@7.0.0-beta.53": + version "7.0.0-beta.53" + resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.53.tgz" + integrity sha512-5wvZd8RHAOzmTJ5bpupKM6x5OWXlViUK5ACDAUn7YXDd/JqQQZXi0CxDb8pH5IFV79mt6r5A/bZ/+NLhxpcZ5g== + dependencies: + chalk "^2.0.0" + esutils "^2.0.2" + js-tokens "^3.0.0" + "@babel/highlight@^7.10.4", "@babel/highlight@^7.18.6": - "integrity" "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==" - "resolved" "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz" + integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g== dependencies: "@babel/helper-validator-identifier" "^7.18.6" - "chalk" "^2.0.0" - "js-tokens" "^4.0.0" - -"@babel/highlight@7.0.0-beta.53": - "integrity" "sha512-5wvZd8RHAOzmTJ5bpupKM6x5OWXlViUK5ACDAUn7YXDd/JqQQZXi0CxDb8pH5IFV79mt6r5A/bZ/+NLhxpcZ5g==" - "resolved" "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.53.tgz" - "version" "7.0.0-beta.53" - dependencies: - "chalk" "^2.0.0" - "esutils" "^2.0.2" - "js-tokens" "^3.0.0" - -"@babel/parser@^7.1.0", "@babel/parser@^7.12.11", "@babel/parser@^7.12.7", "@babel/parser@^7.13.16", "@babel/parser@^7.14.7", "@babel/parser@^7.20.13", "@babel/parser@^7.20.2", "@babel/parser@^7.20.7", "@babel/parser@^7.4.3", "@babel/parser@^7.9.0": - "integrity" "sha512-DI4a1oZuf8wC+oAJA9RW6ga3Zbe8RZFt7kD9i4qAspz3I/yHet1VvC3DiSy/fsUvv5pvJuNPh0LPOdCcqinDPg==" - "resolved" "https://registry.npmjs.org/@babel/parser/-/parser-7.20.15.tgz" - "version" "7.20.15" + chalk "^2.0.0" + js-tokens "^4.0.0" "@babel/parser@7.0.0-beta.53": - "integrity" "sha512-SYoyLjcE+D28Ly2kkPXP6eIVy4YwViRSffri5WHi8PRxy8ngnx6mTXFzGAsSSPzUN3DK+sf8qBsdDGeQz1SJEw==" - "resolved" "https://registry.npmjs.org/@babel/parser/-/parser-7.0.0-beta.53.tgz" - "version" "7.0.0-beta.53" + version "7.0.0-beta.53" + resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.0.0-beta.53.tgz" + integrity sha512-SYoyLjcE+D28Ly2kkPXP6eIVy4YwViRSffri5WHi8PRxy8ngnx6mTXFzGAsSSPzUN3DK+sf8qBsdDGeQz1SJEw== + +"@babel/parser@^7.1.0", "@babel/parser@^7.12.11", "@babel/parser@^7.12.7", "@babel/parser@^7.13.16", "@babel/parser@^7.14.7", "@babel/parser@^7.20.13", "@babel/parser@^7.20.2", "@babel/parser@^7.20.7", "@babel/parser@^7.4.3", "@babel/parser@^7.9.0": + version "7.20.15" + resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.20.15.tgz" + integrity sha512-DI4a1oZuf8wC+oAJA9RW6ga3Zbe8RZFt7kD9i4qAspz3I/yHet1VvC3DiSy/fsUvv5pvJuNPh0LPOdCcqinDPg== "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6": - "integrity" "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz" + integrity sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.18.9": - "integrity" "sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz" - "version" "7.18.9" + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz" + integrity sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg== dependencies: "@babel/helper-plugin-utils" "^7.18.9" "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" "@babel/plugin-proposal-optional-chaining" "^7.18.9" "@babel/plugin-proposal-async-generator-functions@^7.20.1", "@babel/plugin-proposal-async-generator-functions@^7.8.3": - "integrity" "sha512-Gh5rchzSwE4kC+o/6T8waD0WHEQIsDmjltY8WnWRXHUdH8axZhuH86Ov9M72YhJfDrZseQwuuWaaIT/TmePp3g==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.1.tgz" - "version" "7.20.1" + version "7.20.1" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.1.tgz" + integrity sha512-Gh5rchzSwE4kC+o/6T8waD0WHEQIsDmjltY8WnWRXHUdH8axZhuH86Ov9M72YhJfDrZseQwuuWaaIT/TmePp3g== dependencies: "@babel/helper-environment-visitor" "^7.18.9" "@babel/helper-plugin-utils" "^7.19.0" "@babel/helper-remap-async-to-generator" "^7.18.9" "@babel/plugin-syntax-async-generators" "^7.8.4" -"@babel/plugin-proposal-class-properties@^7.12.1", "@babel/plugin-proposal-class-properties@^7.13.0", "@babel/plugin-proposal-class-properties@^7.16.0", "@babel/plugin-proposal-class-properties@^7.18.6": - "integrity" "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-create-class-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-proposal-class-properties@7.8.3": - "integrity" "sha512-EqFhbo7IosdgPgZggHaNObkmO1kNUe3slaKu54d5OWvy+p9QIKOzK1GAEpAIsZtWVtPXUHSMcT4smvDrCfY4AA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.8.3.tgz" - "version" "7.8.3" + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.8.3.tgz" + integrity sha512-EqFhbo7IosdgPgZggHaNObkmO1kNUe3slaKu54d5OWvy+p9QIKOzK1GAEpAIsZtWVtPXUHSMcT4smvDrCfY4AA== dependencies: "@babel/helper-create-class-features-plugin" "^7.8.3" "@babel/helper-plugin-utils" "^7.8.3" +"@babel/plugin-proposal-class-properties@^7.12.1", "@babel/plugin-proposal-class-properties@^7.13.0", "@babel/plugin-proposal-class-properties@^7.16.0", "@babel/plugin-proposal-class-properties@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz" + integrity sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-proposal-class-static-block@^7.18.6": - "integrity" "sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz" + integrity sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw== dependencies: "@babel/helper-create-class-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-class-static-block" "^7.14.5" +"@babel/plugin-proposal-decorators@7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.8.3.tgz" + integrity sha512-e3RvdvS4qPJVTe288DlXjwKflpfy1hr0j5dz5WpIYYeP7vQZg2WfAEIp8k5/Lwis/m5REXEteIz6rrcDtXXG7w== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-decorators" "^7.8.3" + "@babel/plugin-proposal-decorators@^7.12.12": - "integrity" "sha512-7T6BKHa9Cpd7lCueHBBzP0nkXNina+h5giOZw+a8ZpMfPFY19VjJAjIxyFHuWkhCWgL6QMqRiY/wB1fLXzm6Mw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.20.13.tgz" - "version" "7.20.13" + version "7.20.13" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.20.13.tgz" + integrity sha512-7T6BKHa9Cpd7lCueHBBzP0nkXNina+h5giOZw+a8ZpMfPFY19VjJAjIxyFHuWkhCWgL6QMqRiY/wB1fLXzm6Mw== dependencies: "@babel/helper-create-class-features-plugin" "^7.20.12" "@babel/helper-plugin-utils" "^7.20.2" @@ -550,9 +559,9 @@ "@babel/plugin-syntax-decorators" "^7.19.0" "@babel/plugin-proposal-decorators@^7.16.4": - "integrity" "sha512-nkBH96IBmgKnbHQ5gXFrcmez+Z9S2EIDKDQGp005ROqBigc88Tky4rzCnlP/lnlj245dCEQl4/YyV0V1kYh5dw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.20.2.tgz" - "version" "7.20.2" + version "7.20.2" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.20.2.tgz" + integrity sha512-nkBH96IBmgKnbHQ5gXFrcmez+Z9S2EIDKDQGp005ROqBigc88Tky4rzCnlP/lnlj245dCEQl4/YyV0V1kYh5dw== dependencies: "@babel/helper-create-class-features-plugin" "^7.20.2" "@babel/helper-plugin-utils" "^7.20.2" @@ -560,91 +569,91 @@ "@babel/helper-split-export-declaration" "^7.18.6" "@babel/plugin-syntax-decorators" "^7.19.0" -"@babel/plugin-proposal-decorators@7.8.3": - "integrity" "sha512-e3RvdvS4qPJVTe288DlXjwKflpfy1hr0j5dz5WpIYYeP7vQZg2WfAEIp8k5/Lwis/m5REXEteIz6rrcDtXXG7w==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.8.3.tgz" - "version" "7.8.3" - dependencies: - "@babel/helper-create-class-features-plugin" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-decorators" "^7.8.3" - "@babel/plugin-proposal-dynamic-import@^7.18.6", "@babel/plugin-proposal-dynamic-import@^7.8.3": - "integrity" "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz" + integrity sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-dynamic-import" "^7.8.3" "@babel/plugin-proposal-export-default-from@^7.12.1": - "integrity" "sha512-5H2N3R2aQFxkV4PIBUR/i7PUSwgTZjouJKzI8eKswfIjT0PhvzkPn0t0wIS5zn6maQuvtT0t1oHtMUz61LOuow==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.18.10.tgz" - "version" "7.18.10" + version "7.18.10" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.18.10.tgz" + integrity sha512-5H2N3R2aQFxkV4PIBUR/i7PUSwgTZjouJKzI8eKswfIjT0PhvzkPn0t0wIS5zn6maQuvtT0t1oHtMUz61LOuow== dependencies: "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-syntax-export-default-from" "^7.18.6" "@babel/plugin-proposal-export-namespace-from@^7.18.9": - "integrity" "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz" - "version" "7.18.9" + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz" + integrity sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA== dependencies: "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" "@babel/plugin-proposal-json-strings@^7.18.6", "@babel/plugin-proposal-json-strings@^7.8.3": - "integrity" "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz" + integrity sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-json-strings" "^7.8.3" "@babel/plugin-proposal-logical-assignment-operators@^7.18.9": - "integrity" "sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz" - "version" "7.18.9" + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz" + integrity sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q== dependencies: "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" -"@babel/plugin-proposal-nullish-coalescing-operator@^7.12.1", "@babel/plugin-proposal-nullish-coalescing-operator@^7.13.8", "@babel/plugin-proposal-nullish-coalescing-operator@^7.16.0", "@babel/plugin-proposal-nullish-coalescing-operator@^7.18.6": - "integrity" "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - -"@babel/plugin-proposal-nullish-coalescing-operator@^7.8.3", "@babel/plugin-proposal-nullish-coalescing-operator@7.8.3": - "integrity" "sha512-TS9MlfzXpXKt6YYomudb/KU7nQI6/xnapG6in1uZxoxDghuSMZsPb6D2fyUwNYSAp4l1iR7QtFOjkqcRYcUsfw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.8.3.tgz" - "version" "7.8.3" +"@babel/plugin-proposal-nullish-coalescing-operator@7.8.3", "@babel/plugin-proposal-nullish-coalescing-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.8.3.tgz" + integrity sha512-TS9MlfzXpXKt6YYomudb/KU7nQI6/xnapG6in1uZxoxDghuSMZsPb6D2fyUwNYSAp4l1iR7QtFOjkqcRYcUsfw== dependencies: "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" -"@babel/plugin-proposal-numeric-separator@^7.16.0", "@babel/plugin-proposal-numeric-separator@^7.18.6": - "integrity" "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz" - "version" "7.18.6" +"@babel/plugin-proposal-nullish-coalescing-operator@^7.12.1", "@babel/plugin-proposal-nullish-coalescing-operator@^7.13.8", "@babel/plugin-proposal-nullish-coalescing-operator@^7.16.0", "@babel/plugin-proposal-nullish-coalescing-operator@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz" + integrity sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA== dependencies: "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" -"@babel/plugin-proposal-numeric-separator@^7.8.3", "@babel/plugin-proposal-numeric-separator@7.8.3": - "integrity" "sha512-jWioO1s6R/R+wEHizfaScNsAx+xKgwTLNXSh7tTC4Usj3ItsPEhYkEpU4h+lpnBwq7NBVOJXfO6cRFYcX69JUQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.8.3.tgz" - "version" "7.8.3" +"@babel/plugin-proposal-numeric-separator@7.8.3", "@babel/plugin-proposal-numeric-separator@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.8.3.tgz" + integrity sha512-jWioO1s6R/R+wEHizfaScNsAx+xKgwTLNXSh7tTC4Usj3ItsPEhYkEpU4h+lpnBwq7NBVOJXfO6cRFYcX69JUQ== dependencies: "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-syntax-numeric-separator" "^7.8.3" +"@babel/plugin-proposal-numeric-separator@^7.16.0", "@babel/plugin-proposal-numeric-separator@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz" + integrity sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + +"@babel/plugin-proposal-object-rest-spread@7.12.1": + version "7.12.1" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz" + integrity sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + "@babel/plugin-transform-parameters" "^7.12.1" + "@babel/plugin-proposal-object-rest-spread@^7.12.1", "@babel/plugin-proposal-object-rest-spread@^7.20.2", "@babel/plugin-proposal-object-rest-spread@^7.9.0": - "integrity" "sha512-Ks6uej9WFK+fvIMesSqbAto5dD8Dz4VuuFvGJFKgIGSkJuRGcrwGECPA1fDgQK3/DbExBJpEkTeYeB8geIFCSQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.2.tgz" - "version" "7.20.2" + version "7.20.2" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.2.tgz" + integrity sha512-Ks6uej9WFK+fvIMesSqbAto5dD8Dz4VuuFvGJFKgIGSkJuRGcrwGECPA1fDgQK3/DbExBJpEkTeYeB8geIFCSQ== dependencies: "@babel/compat-data" "^7.20.1" "@babel/helper-compilation-targets" "^7.20.0" @@ -652,52 +661,43 @@ "@babel/plugin-syntax-object-rest-spread" "^7.8.3" "@babel/plugin-transform-parameters" "^7.20.1" -"@babel/plugin-proposal-object-rest-spread@7.12.1": - "integrity" "sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz" - "version" "7.12.1" - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-object-rest-spread" "^7.8.0" - "@babel/plugin-transform-parameters" "^7.12.1" - "@babel/plugin-proposal-optional-catch-binding@^7.18.6", "@babel/plugin-proposal-optional-catch-binding@^7.8.3": - "integrity" "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz" + integrity sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" +"@babel/plugin-proposal-optional-chaining@7.9.0", "@babel/plugin-proposal-optional-chaining@^7.9.0": + version "7.9.0" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.9.0.tgz" + integrity sha512-NDn5tu3tcv4W30jNhmc2hyD5c56G6cXx4TesJubhxrJeCvuuMpttxr0OnNCqbZGhFjLrg+NIhxxC+BK5F6yS3w== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" + "@babel/plugin-proposal-optional-chaining@^7.12.7", "@babel/plugin-proposal-optional-chaining@^7.13.12", "@babel/plugin-proposal-optional-chaining@^7.16.0", "@babel/plugin-proposal-optional-chaining@^7.18.9": - "integrity" "sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz" - "version" "7.18.9" + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz" + integrity sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w== dependencies: "@babel/helper-plugin-utils" "^7.18.9" "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" "@babel/plugin-syntax-optional-chaining" "^7.8.3" -"@babel/plugin-proposal-optional-chaining@^7.9.0", "@babel/plugin-proposal-optional-chaining@7.9.0": - "integrity" "sha512-NDn5tu3tcv4W30jNhmc2hyD5c56G6cXx4TesJubhxrJeCvuuMpttxr0OnNCqbZGhFjLrg+NIhxxC+BK5F6yS3w==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.9.0.tgz" - "version" "7.9.0" - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.0" - "@babel/plugin-proposal-private-methods@^7.12.1", "@babel/plugin-proposal-private-methods@^7.16.0", "@babel/plugin-proposal-private-methods@^7.18.6": - "integrity" "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz" + integrity sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA== dependencies: "@babel/helper-create-class-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-proposal-private-property-in-object@^7.12.1", "@babel/plugin-proposal-private-property-in-object@^7.18.6": - "integrity" "sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz" + integrity sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw== dependencies: "@babel/helper-annotate-as-pure" "^7.18.6" "@babel/helper-create-class-features-plugin" "^7.18.6" @@ -705,217 +705,217 @@ "@babel/plugin-syntax-private-property-in-object" "^7.14.5" "@babel/plugin-proposal-unicode-property-regex@^7.18.6", "@babel/plugin-proposal-unicode-property-regex@^7.4.4", "@babel/plugin-proposal-unicode-property-regex@^7.8.3": - "integrity" "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz" + integrity sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w== dependencies: "@babel/helper-create-regexp-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-async-generators@^7.8.0", "@babel/plugin-syntax-async-generators@^7.8.4": - "integrity" "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz" - "version" "7.8.4" + version "7.8.4" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz" + integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-bigint@^7.8.3": - "integrity" "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz" - "version" "7.8.3" + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz" + integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-class-properties@^7.12.13", "@babel/plugin-syntax-class-properties@^7.8.3": - "integrity" "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz" - "version" "7.12.13" + version "7.12.13" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz" + integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== dependencies: "@babel/helper-plugin-utils" "^7.12.13" "@babel/plugin-syntax-class-static-block@^7.14.5": - "integrity" "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz" - "version" "7.14.5" + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz" + integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== dependencies: "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-decorators@^7.19.0", "@babel/plugin-syntax-decorators@^7.8.3": - "integrity" "sha512-xaBZUEDntt4faL1yN8oIFlhfXeQAWJW7CLKYsHTUqriCUbj8xOra8bfxxKGi/UwExPFBuPdH4XfHc9rGQhrVkQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.19.0.tgz" - "version" "7.19.0" + version "7.19.0" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.19.0.tgz" + integrity sha512-xaBZUEDntt4faL1yN8oIFlhfXeQAWJW7CLKYsHTUqriCUbj8xOra8bfxxKGi/UwExPFBuPdH4XfHc9rGQhrVkQ== dependencies: "@babel/helper-plugin-utils" "^7.19.0" "@babel/plugin-syntax-dynamic-import@^7.8.0", "@babel/plugin-syntax-dynamic-import@^7.8.3": - "integrity" "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz" - "version" "7.8.3" + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz" + integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-export-default-from@^7.18.6": - "integrity" "sha512-Kr//z3ujSVNx6E9z9ih5xXXMqK07VVTuqPmqGe6Mss/zW5XPeLZeSDZoP9ab/hT4wPKqAgjl2PnhPrcpk8Seew==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.18.6.tgz" + integrity sha512-Kr//z3ujSVNx6E9z9ih5xXXMqK07VVTuqPmqGe6Mss/zW5XPeLZeSDZoP9ab/hT4wPKqAgjl2PnhPrcpk8Seew== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-export-namespace-from@^7.8.3": - "integrity" "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz" - "version" "7.8.3" + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz" + integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== dependencies: "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-syntax-flow@^7.14.5", "@babel/plugin-syntax-flow@^7.18.6", "@babel/plugin-syntax-flow@^7.8.3": - "integrity" "sha512-LUbR+KNTBWCUAqRG9ex5Gnzu2IOkt8jRJbHHXFT9q+L9zm7M/QQbEqXyw1n1pohYvOyWC8CjeyjrSaIwiYjK7A==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.18.6.tgz" - "version" "7.18.6" +"@babel/plugin-syntax-flow@^7.18.6", "@babel/plugin-syntax-flow@^7.8.3": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.18.6.tgz" + integrity sha512-LUbR+KNTBWCUAqRG9ex5Gnzu2IOkt8jRJbHHXFT9q+L9zm7M/QQbEqXyw1n1pohYvOyWC8CjeyjrSaIwiYjK7A== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-import-assertions@^7.20.0": - "integrity" "sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz" - "version" "7.20.0" + version "7.20.0" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz" + integrity sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ== dependencies: "@babel/helper-plugin-utils" "^7.19.0" "@babel/plugin-syntax-import-meta@^7.8.3": - "integrity" "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz" - "version" "7.10.4" + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz" + integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-json-strings@^7.8.0", "@babel/plugin-syntax-json-strings@^7.8.3": - "integrity" "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz" - "version" "7.8.3" + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz" + integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-jsx@^7.18.6": - "integrity" "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-jsx@7.12.1": - "integrity" "sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.1.tgz" - "version" "7.12.1" + version "7.12.1" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.1.tgz" + integrity sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg== dependencies: "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-syntax-jsx@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz" + integrity sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": - "integrity" "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz" - "version" "7.10.4" + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz" + integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.0", "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": - "integrity" "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz" - "version" "7.8.3" + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz" + integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-numeric-separator@^7.10.4", "@babel/plugin-syntax-numeric-separator@^7.8.0", "@babel/plugin-syntax-numeric-separator@^7.8.3": - "integrity" "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz" - "version" "7.10.4" + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz" + integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-syntax-object-rest-spread@^7.8.0", "@babel/plugin-syntax-object-rest-spread@^7.8.3", "@babel/plugin-syntax-object-rest-spread@7.8.3": - "integrity" "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz" - "version" "7.8.3" +"@babel/plugin-syntax-object-rest-spread@7.8.3", "@babel/plugin-syntax-object-rest-spread@^7.8.0", "@babel/plugin-syntax-object-rest-spread@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz" + integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-optional-catch-binding@^7.8.0", "@babel/plugin-syntax-optional-catch-binding@^7.8.3": - "integrity" "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz" - "version" "7.8.3" + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz" + integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-optional-chaining@^7.8.0", "@babel/plugin-syntax-optional-chaining@^7.8.3": - "integrity" "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz" - "version" "7.8.3" + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz" + integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-private-property-in-object@^7.14.5": - "integrity" "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz" - "version" "7.14.5" + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz" + integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== dependencies: "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-top-level-await@^7.14.5", "@babel/plugin-syntax-top-level-await@^7.8.3": - "integrity" "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz" - "version" "7.14.5" + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz" + integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== dependencies: "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-typescript@^7.20.0", "@babel/plugin-syntax-typescript@^7.7.2": - "integrity" "sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.20.0.tgz" - "version" "7.20.0" + version "7.20.0" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.20.0.tgz" + integrity sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ== dependencies: "@babel/helper-plugin-utils" "^7.19.0" "@babel/plugin-transform-arrow-functions@^7.12.1", "@babel/plugin-transform-arrow-functions@^7.18.6", "@babel/plugin-transform-arrow-functions@^7.8.3": - "integrity" "sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz" + integrity sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ== dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-async-to-generator@^7.18.6", "@babel/plugin-transform-async-to-generator@^7.8.3": - "integrity" "sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-remap-async-to-generator" "^7.18.6" - "@babel/plugin-transform-async-to-generator@7.0.0-beta.53": - "integrity" "sha512-CQQJkRgY/Zt6ezbk4yk1offtvjGzX8MsZC8q39PMj3zKfmawzfRqcBO5O00vw3MgoeAju4/ZZ1gtCzhhNqtgYg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.0.0-beta.53.tgz" - "version" "7.0.0-beta.53" + version "7.0.0-beta.53" + resolved "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.0.0-beta.53.tgz" + integrity sha512-CQQJkRgY/Zt6ezbk4yk1offtvjGzX8MsZC8q39PMj3zKfmawzfRqcBO5O00vw3MgoeAju4/ZZ1gtCzhhNqtgYg== dependencies: "@babel/helper-module-imports" "7.0.0-beta.53" "@babel/helper-plugin-utils" "7.0.0-beta.53" "@babel/helper-remap-async-to-generator" "7.0.0-beta.53" +"@babel/plugin-transform-async-to-generator@^7.18.6", "@babel/plugin-transform-async-to-generator@^7.8.3": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz" + integrity sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag== + dependencies: + "@babel/helper-module-imports" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-remap-async-to-generator" "^7.18.6" + "@babel/plugin-transform-block-scoped-functions@^7.18.6", "@babel/plugin-transform-block-scoped-functions@^7.8.3": - "integrity" "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz" + integrity sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-block-scoping@^7.12.12", "@babel/plugin-transform-block-scoping@^7.20.2", "@babel/plugin-transform-block-scoping@^7.8.3": - "integrity" "sha512-y5V15+04ry69OV2wULmwhEA6jwSWXO1TwAtIwiPXcvHcoOQUqpyMVd2bDsQJMW8AurjulIyUV8kDqtjSwHy1uQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.2.tgz" - "version" "7.20.2" + version "7.20.2" + resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.2.tgz" + integrity sha512-y5V15+04ry69OV2wULmwhEA6jwSWXO1TwAtIwiPXcvHcoOQUqpyMVd2bDsQJMW8AurjulIyUV8kDqtjSwHy1uQ== dependencies: "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-transform-classes@^7.12.1", "@babel/plugin-transform-classes@^7.20.2", "@babel/plugin-transform-classes@^7.9.0": - "integrity" "sha512-9rbPp0lCVVoagvtEyQKSo5L8oo0nQS/iif+lwlAz29MccX2642vWDlSZK+2T2buxbopotId2ld7zZAzRfz9j1g==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.2.tgz" - "version" "7.20.2" + version "7.20.2" + resolved "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.2.tgz" + integrity sha512-9rbPp0lCVVoagvtEyQKSo5L8oo0nQS/iif+lwlAz29MccX2642vWDlSZK+2T2buxbopotId2ld7zZAzRfz9j1g== dependencies: "@babel/helper-annotate-as-pure" "^7.18.6" "@babel/helper-compilation-targets" "^7.20.0" @@ -925,120 +925,112 @@ "@babel/helper-plugin-utils" "^7.20.2" "@babel/helper-replace-supers" "^7.19.1" "@babel/helper-split-export-declaration" "^7.18.6" - "globals" "^11.1.0" + globals "^11.1.0" "@babel/plugin-transform-computed-properties@^7.18.9", "@babel/plugin-transform-computed-properties@^7.8.3": - "integrity" "sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz" - "version" "7.18.9" + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz" + integrity sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw== dependencies: "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-transform-destructuring@^7.12.1", "@babel/plugin-transform-destructuring@^7.20.2", "@babel/plugin-transform-destructuring@^7.8.3": - "integrity" "sha512-mENM+ZHrvEgxLTBXUiQ621rRXZes3KWUv6NdQlrnr1TkWVw+hUjQBZuP2X32qKlrlG2BzgR95gkuCRSkJl8vIw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.2.tgz" - "version" "7.20.2" + version "7.20.2" + resolved "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.2.tgz" + integrity sha512-mENM+ZHrvEgxLTBXUiQ621rRXZes3KWUv6NdQlrnr1TkWVw+hUjQBZuP2X32qKlrlG2BzgR95gkuCRSkJl8vIw== dependencies: "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-transform-dotall-regex@^7.18.6", "@babel/plugin-transform-dotall-regex@^7.4.4", "@babel/plugin-transform-dotall-regex@^7.8.3": - "integrity" "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz" + integrity sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg== dependencies: "@babel/helper-create-regexp-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-duplicate-keys@^7.18.9", "@babel/plugin-transform-duplicate-keys@^7.8.3": - "integrity" "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz" - "version" "7.18.9" + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz" + integrity sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw== dependencies: "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-transform-exponentiation-operator@^7.18.6", "@babel/plugin-transform-exponentiation-operator@^7.8.3": - "integrity" "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz" + integrity sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw== dependencies: "@babel/helper-builder-binary-assignment-operator-visitor" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-flow-strip-types@^7.16.0": - "integrity" "sha512-sgeMlNaQVbCSpgLSKP4ZZKfsJVnFnNQlUSk6gPYzR/q7tzCgQF2t8RBKAP6cKJeZdveei7Q7Jm527xepI8lNLg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.19.0.tgz" - "version" "7.19.0" - dependencies: - "@babel/helper-plugin-utils" "^7.19.0" - "@babel/plugin-syntax-flow" "^7.18.6" - -"@babel/plugin-transform-flow-strip-types@^7.18.6": - "integrity" "sha512-sgeMlNaQVbCSpgLSKP4ZZKfsJVnFnNQlUSk6gPYzR/q7tzCgQF2t8RBKAP6cKJeZdveei7Q7Jm527xepI8lNLg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.19.0.tgz" - "version" "7.19.0" - dependencies: - "@babel/helper-plugin-utils" "^7.19.0" - "@babel/plugin-syntax-flow" "^7.18.6" - "@babel/plugin-transform-flow-strip-types@7.9.0": - "integrity" "sha512-7Qfg0lKQhEHs93FChxVLAvhBshOPQDtJUTVHr/ZwQNRccCm4O9D79r9tVSoV8iNwjP1YgfD+e/fgHcPkN1qEQg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.9.0.tgz" - "version" "7.9.0" + version "7.9.0" + resolved "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.9.0.tgz" + integrity sha512-7Qfg0lKQhEHs93FChxVLAvhBshOPQDtJUTVHr/ZwQNRccCm4O9D79r9tVSoV8iNwjP1YgfD+e/fgHcPkN1qEQg== dependencies: "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-syntax-flow" "^7.8.3" +"@babel/plugin-transform-flow-strip-types@^7.16.0", "@babel/plugin-transform-flow-strip-types@^7.18.6": + version "7.19.0" + resolved "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.19.0.tgz" + integrity sha512-sgeMlNaQVbCSpgLSKP4ZZKfsJVnFnNQlUSk6gPYzR/q7tzCgQF2t8RBKAP6cKJeZdveei7Q7Jm527xepI8lNLg== + dependencies: + "@babel/helper-plugin-utils" "^7.19.0" + "@babel/plugin-syntax-flow" "^7.18.6" + "@babel/plugin-transform-for-of@^7.12.1", "@babel/plugin-transform-for-of@^7.18.8", "@babel/plugin-transform-for-of@^7.9.0": - "integrity" "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz" - "version" "7.18.8" + version "7.18.8" + resolved "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz" + integrity sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-function-name@^7.18.9", "@babel/plugin-transform-function-name@^7.8.3": - "integrity" "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz" - "version" "7.18.9" + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz" + integrity sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ== dependencies: "@babel/helper-compilation-targets" "^7.18.9" "@babel/helper-function-name" "^7.18.9" "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-transform-literals@^7.18.9", "@babel/plugin-transform-literals@^7.8.3": - "integrity" "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz" - "version" "7.18.9" + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz" + integrity sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg== dependencies: "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-transform-member-expression-literals@^7.18.6", "@babel/plugin-transform-member-expression-literals@^7.8.3": - "integrity" "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz" + integrity sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-modules-amd@^7.19.6", "@babel/plugin-transform-modules-amd@^7.9.0": - "integrity" "sha512-uG3od2mXvAtIFQIh0xrpLH6r5fpSQN04gIVovl+ODLdUMANokxQLZnPBHcjmv3GxRjnqwLuHvppjjcelqUFZvg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.19.6.tgz" - "version" "7.19.6" + version "7.19.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.19.6.tgz" + integrity sha512-uG3od2mXvAtIFQIh0xrpLH6r5fpSQN04gIVovl+ODLdUMANokxQLZnPBHcjmv3GxRjnqwLuHvppjjcelqUFZvg== dependencies: "@babel/helper-module-transforms" "^7.19.6" "@babel/helper-plugin-utils" "^7.19.0" "@babel/plugin-transform-modules-commonjs@^7.13.8", "@babel/plugin-transform-modules-commonjs@^7.19.6", "@babel/plugin-transform-modules-commonjs@^7.9.0": - "integrity" "sha512-8PIa1ym4XRTKuSsOUXqDG0YaOlEuTVvHMe5JCfgBMOtHvJKw/4NGovEGN33viISshG/rZNVrACiBmPQLvWN8xQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.19.6.tgz" - "version" "7.19.6" + version "7.19.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.19.6.tgz" + integrity sha512-8PIa1ym4XRTKuSsOUXqDG0YaOlEuTVvHMe5JCfgBMOtHvJKw/4NGovEGN33viISshG/rZNVrACiBmPQLvWN8xQ== dependencies: "@babel/helper-module-transforms" "^7.19.6" "@babel/helper-plugin-utils" "^7.19.0" "@babel/helper-simple-access" "^7.19.4" "@babel/plugin-transform-modules-systemjs@^7.19.6", "@babel/plugin-transform-modules-systemjs@^7.9.0": - "integrity" "sha512-fqGLBepcc3kErfR9R3DnVpURmckXP7gj7bAlrTQyBxrigFqszZCkFkcoxzCp2v32XmwXLvbw+8Yq9/b+QqksjQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.6.tgz" - "version" "7.19.6" + version "7.19.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.6.tgz" + integrity sha512-fqGLBepcc3kErfR9R3DnVpURmckXP7gj7bAlrTQyBxrigFqszZCkFkcoxzCp2v32XmwXLvbw+8Yq9/b+QqksjQ== dependencies: "@babel/helper-hoist-variables" "^7.18.6" "@babel/helper-module-transforms" "^7.19.6" @@ -1046,96 +1038,96 @@ "@babel/helper-validator-identifier" "^7.19.1" "@babel/plugin-transform-modules-umd@^7.18.6", "@babel/plugin-transform-modules-umd@^7.9.0": - "integrity" "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz" + integrity sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ== dependencies: "@babel/helper-module-transforms" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-named-capturing-groups-regex@^7.19.1", "@babel/plugin-transform-named-capturing-groups-regex@^7.8.3": - "integrity" "sha512-oWk9l9WItWBQYS4FgXD4Uyy5kq898lvkXpXQxoJEY1RnvPk4R/Dvu2ebXU9q8lP+rlMwUQTFf2Ok6d78ODa0kw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.19.1.tgz" - "version" "7.19.1" + version "7.19.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.19.1.tgz" + integrity sha512-oWk9l9WItWBQYS4FgXD4Uyy5kq898lvkXpXQxoJEY1RnvPk4R/Dvu2ebXU9q8lP+rlMwUQTFf2Ok6d78ODa0kw== dependencies: "@babel/helper-create-regexp-features-plugin" "^7.19.0" "@babel/helper-plugin-utils" "^7.19.0" "@babel/plugin-transform-new-target@^7.18.6", "@babel/plugin-transform-new-target@^7.8.3": - "integrity" "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz" + integrity sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-object-super@^7.18.6", "@babel/plugin-transform-object-super@^7.8.3": - "integrity" "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz" + integrity sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/helper-replace-supers" "^7.18.6" "@babel/plugin-transform-parameters@^7.12.1", "@babel/plugin-transform-parameters@^7.20.1", "@babel/plugin-transform-parameters@^7.8.7": - "integrity" "sha512-oZg/Fpx0YDrj13KsLyO8I/CX3Zdw7z0O9qOd95SqcoIzuqy/WTGWvePeHAnZCN54SfdyjHcb1S30gc8zlzlHcA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.3.tgz" - "version" "7.20.3" + version "7.20.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.3.tgz" + integrity sha512-oZg/Fpx0YDrj13KsLyO8I/CX3Zdw7z0O9qOd95SqcoIzuqy/WTGWvePeHAnZCN54SfdyjHcb1S30gc8zlzlHcA== dependencies: "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-transform-property-literals@^7.18.6", "@babel/plugin-transform-property-literals@^7.8.3": - "integrity" "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz" + integrity sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-react-constant-elements@^7.0.0", "@babel/plugin-transform-react-constant-elements@^7.12.1": - "integrity" "sha512-KS/G8YI8uwMGKErLFOHS/ekhqdHhpEloxs43NecQHVgo2QuQSyJhGIY1fL8UGl9wy5ItVwwoUL4YxVqsplGq2g==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.20.2.tgz" - "version" "7.20.2" + version "7.20.2" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.20.2.tgz" + integrity sha512-KS/G8YI8uwMGKErLFOHS/ekhqdHhpEloxs43NecQHVgo2QuQSyJhGIY1fL8UGl9wy5ItVwwoUL4YxVqsplGq2g== dependencies: "@babel/helper-plugin-utils" "^7.20.2" -"@babel/plugin-transform-react-display-name@^7.16.0", "@babel/plugin-transform-react-display-name@^7.18.6": - "integrity" "sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-react-display-name@^7.8.3", "@babel/plugin-transform-react-display-name@7.8.3": - "integrity" "sha512-3Jy/PCw8Fe6uBKtEgz3M82ljt+lTg+xJaM4og+eyu83qLT87ZUSckn0wy7r31jflURWLO83TW6Ylf7lyXj3m5A==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.8.3.tgz" - "version" "7.8.3" +"@babel/plugin-transform-react-display-name@7.8.3", "@babel/plugin-transform-react-display-name@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.8.3.tgz" + integrity sha512-3Jy/PCw8Fe6uBKtEgz3M82ljt+lTg+xJaM4og+eyu83qLT87ZUSckn0wy7r31jflURWLO83TW6Ylf7lyXj3m5A== dependencies: "@babel/helper-plugin-utils" "^7.8.3" +"@babel/plugin-transform-react-display-name@^7.16.0", "@babel/plugin-transform-react-display-name@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.18.6.tgz" + integrity sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-transform-react-jsx-development@^7.18.6", "@babel/plugin-transform-react-jsx-development@^7.9.0": - "integrity" "sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz" + integrity sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA== dependencies: "@babel/plugin-transform-react-jsx" "^7.18.6" "@babel/plugin-transform-react-jsx-self@^7.9.0": - "integrity" "sha512-A0LQGx4+4Jv7u/tWzoJF7alZwnBDQd6cGLh9P+Ttk4dpiL+J5p7NSNv/9tlEFFJDq3kjxOavWmbm6t0Gk+A3Ig==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.18.6.tgz" + integrity sha512-A0LQGx4+4Jv7u/tWzoJF7alZwnBDQd6cGLh9P+Ttk4dpiL+J5p7NSNv/9tlEFFJDq3kjxOavWmbm6t0Gk+A3Ig== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-react-jsx-source@^7.9.0": - "integrity" "sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.19.6.tgz" - "version" "7.19.6" + version "7.19.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.19.6.tgz" + integrity sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ== dependencies: "@babel/helper-plugin-utils" "^7.19.0" -"@babel/plugin-transform-react-jsx@^7.12.12", "@babel/plugin-transform-react-jsx@^7.14.9", "@babel/plugin-transform-react-jsx@^7.18.6", "@babel/plugin-transform-react-jsx@^7.9.1": - "integrity" "sha512-UVEvX3tXie3Szm3emi1+G63jyw1w5IcMY0FSKM+CRnKRI5Mr1YbCNgsSTwoTwKphQEG9P+QqmuRFneJPZuHNhg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.19.0.tgz" - "version" "7.19.0" +"@babel/plugin-transform-react-jsx@^7.12.12", "@babel/plugin-transform-react-jsx@^7.18.6", "@babel/plugin-transform-react-jsx@^7.9.1": + version "7.19.0" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.19.0.tgz" + integrity sha512-UVEvX3tXie3Szm3emi1+G63jyw1w5IcMY0FSKM+CRnKRI5Mr1YbCNgsSTwoTwKphQEG9P+QqmuRFneJPZuHNhg== dependencies: "@babel/helper-annotate-as-pure" "^7.18.6" "@babel/helper-module-imports" "^7.18.6" @@ -1144,114 +1136,180 @@ "@babel/types" "^7.19.0" "@babel/plugin-transform-react-pure-annotations@^7.18.6": - "integrity" "sha512-I8VfEPg9r2TRDdvnHgPepTKvuRomzA8+u+nhY7qSI1fR2hRNebasZEETLyM5mAUr0Ku56OkXJ0I7NHJnO6cJiQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.18.6.tgz" + integrity sha512-I8VfEPg9r2TRDdvnHgPepTKvuRomzA8+u+nhY7qSI1fR2hRNebasZEETLyM5mAUr0Ku56OkXJ0I7NHJnO6cJiQ== dependencies: "@babel/helper-annotate-as-pure" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-regenerator@^7.18.6", "@babel/plugin-transform-regenerator@^7.8.7": - "integrity" "sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz" + integrity sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ== dependencies: "@babel/helper-plugin-utils" "^7.18.6" - "regenerator-transform" "^0.15.0" + regenerator-transform "^0.15.0" "@babel/plugin-transform-reserved-words@^7.18.6", "@babel/plugin-transform-reserved-words@^7.8.3": - "integrity" "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz" + integrity sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA== dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-runtime@^7.16.4": - "integrity" "sha512-PRH37lz4JU156lYFW1p8OxE5i7d6Sl/zV58ooyr+q1J1lnQPyg5tIiXlIwNVhJaY4W3TmOtdc8jqdXQcB1v5Yw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.19.6.tgz" - "version" "7.19.6" - dependencies: - "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-plugin-utils" "^7.19.0" - "babel-plugin-polyfill-corejs2" "^0.3.3" - "babel-plugin-polyfill-corejs3" "^0.6.0" - "babel-plugin-polyfill-regenerator" "^0.4.1" - "semver" "^6.3.0" - "@babel/plugin-transform-runtime@7.9.0": - "integrity" "sha512-pUu9VSf3kI1OqbWINQ7MaugnitRss1z533436waNXp+0N3ur3zfut37sXiQMxkuCF4VUjwZucen/quskCh7NHw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.9.0.tgz" - "version" "7.9.0" + version "7.9.0" + resolved "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.9.0.tgz" + integrity sha512-pUu9VSf3kI1OqbWINQ7MaugnitRss1z533436waNXp+0N3ur3zfut37sXiQMxkuCF4VUjwZucen/quskCh7NHw== dependencies: "@babel/helper-module-imports" "^7.8.3" "@babel/helper-plugin-utils" "^7.8.3" - "resolve" "^1.8.1" - "semver" "^5.5.1" + resolve "^1.8.1" + semver "^5.5.1" + +"@babel/plugin-transform-runtime@^7.16.4": + version "7.19.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.19.6.tgz" + integrity sha512-PRH37lz4JU156lYFW1p8OxE5i7d6Sl/zV58ooyr+q1J1lnQPyg5tIiXlIwNVhJaY4W3TmOtdc8jqdXQcB1v5Yw== + dependencies: + "@babel/helper-module-imports" "^7.18.6" + "@babel/helper-plugin-utils" "^7.19.0" + babel-plugin-polyfill-corejs2 "^0.3.3" + babel-plugin-polyfill-corejs3 "^0.6.0" + babel-plugin-polyfill-regenerator "^0.4.1" + semver "^6.3.0" "@babel/plugin-transform-shorthand-properties@^7.12.1", "@babel/plugin-transform-shorthand-properties@^7.18.6", "@babel/plugin-transform-shorthand-properties@^7.8.3": - "integrity" "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz" + integrity sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-spread@^7.12.1", "@babel/plugin-transform-spread@^7.19.0", "@babel/plugin-transform-spread@^7.8.3": - "integrity" "sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.19.0.tgz" - "version" "7.19.0" + version "7.19.0" + resolved "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.19.0.tgz" + integrity sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w== dependencies: "@babel/helper-plugin-utils" "^7.19.0" "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" "@babel/plugin-transform-sticky-regex@^7.18.6", "@babel/plugin-transform-sticky-regex@^7.8.3": - "integrity" "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz" + integrity sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-template-literals@^7.12.1", "@babel/plugin-transform-template-literals@^7.18.9", "@babel/plugin-transform-template-literals@^7.8.3": - "integrity" "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz" - "version" "7.18.9" + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz" + integrity sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA== dependencies: "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-transform-typeof-symbol@^7.18.9", "@babel/plugin-transform-typeof-symbol@^7.8.4": - "integrity" "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz" - "version" "7.18.9" + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz" + integrity sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw== dependencies: "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-transform-typescript@^7.18.6", "@babel/plugin-transform-typescript@^7.9.0": - "integrity" "sha512-jvS+ngBfrnTUBfOQq8NfGnSbF9BrqlR6hjJ2yVxMkmO5nL/cdifNbI30EfjRlN4g5wYWNnMPyj5Sa6R1pbLeag==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.20.2.tgz" - "version" "7.20.2" + version "7.20.2" + resolved "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.20.2.tgz" + integrity sha512-jvS+ngBfrnTUBfOQq8NfGnSbF9BrqlR6hjJ2yVxMkmO5nL/cdifNbI30EfjRlN4g5wYWNnMPyj5Sa6R1pbLeag== dependencies: "@babel/helper-create-class-features-plugin" "^7.20.2" "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-syntax-typescript" "^7.20.0" "@babel/plugin-transform-unicode-escapes@^7.18.10": - "integrity" "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz" - "version" "7.18.10" + version "7.18.10" + resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz" + integrity sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ== dependencies: "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-transform-unicode-regex@^7.18.6", "@babel/plugin-transform-unicode-regex@^7.8.3": - "integrity" "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz" + integrity sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA== dependencies: "@babel/helper-create-regexp-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/preset-env@^7.1.6", "@babel/preset-env@^7.11.0", "@babel/preset-env@^7.12.1", "@babel/preset-env@^7.12.11", "@babel/preset-env@^7.16.4", "@babel/preset-env@^7.4.5", "@babel/preset-env@^7.8.7": - "integrity" "sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg==" - "resolved" "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.20.2.tgz" - "version" "7.20.2" +"@babel/preset-env@7.9.0": + version "7.9.0" + resolved "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.9.0.tgz" + integrity sha512-712DeRXT6dyKAM/FMbQTV/FvRCms2hPCx+3weRjZ8iQVQWZejWWk1wwG6ViWMyqb/ouBbGOl5b6aCk0+j1NmsQ== + dependencies: + "@babel/compat-data" "^7.9.0" + "@babel/helper-compilation-targets" "^7.8.7" + "@babel/helper-module-imports" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-proposal-async-generator-functions" "^7.8.3" + "@babel/plugin-proposal-dynamic-import" "^7.8.3" + "@babel/plugin-proposal-json-strings" "^7.8.3" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-proposal-numeric-separator" "^7.8.3" + "@babel/plugin-proposal-object-rest-spread" "^7.9.0" + "@babel/plugin-proposal-optional-catch-binding" "^7.8.3" + "@babel/plugin-proposal-optional-chaining" "^7.9.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.8.3" + "@babel/plugin-syntax-async-generators" "^7.8.0" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" + "@babel/plugin-syntax-json-strings" "^7.8.0" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + "@babel/plugin-syntax-numeric-separator" "^7.8.0" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" + "@babel/plugin-syntax-top-level-await" "^7.8.3" + "@babel/plugin-transform-arrow-functions" "^7.8.3" + "@babel/plugin-transform-async-to-generator" "^7.8.3" + "@babel/plugin-transform-block-scoped-functions" "^7.8.3" + "@babel/plugin-transform-block-scoping" "^7.8.3" + "@babel/plugin-transform-classes" "^7.9.0" + "@babel/plugin-transform-computed-properties" "^7.8.3" + "@babel/plugin-transform-destructuring" "^7.8.3" + "@babel/plugin-transform-dotall-regex" "^7.8.3" + "@babel/plugin-transform-duplicate-keys" "^7.8.3" + "@babel/plugin-transform-exponentiation-operator" "^7.8.3" + "@babel/plugin-transform-for-of" "^7.9.0" + "@babel/plugin-transform-function-name" "^7.8.3" + "@babel/plugin-transform-literals" "^7.8.3" + "@babel/plugin-transform-member-expression-literals" "^7.8.3" + "@babel/plugin-transform-modules-amd" "^7.9.0" + "@babel/plugin-transform-modules-commonjs" "^7.9.0" + "@babel/plugin-transform-modules-systemjs" "^7.9.0" + "@babel/plugin-transform-modules-umd" "^7.9.0" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.8.3" + "@babel/plugin-transform-new-target" "^7.8.3" + "@babel/plugin-transform-object-super" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.8.7" + "@babel/plugin-transform-property-literals" "^7.8.3" + "@babel/plugin-transform-regenerator" "^7.8.7" + "@babel/plugin-transform-reserved-words" "^7.8.3" + "@babel/plugin-transform-shorthand-properties" "^7.8.3" + "@babel/plugin-transform-spread" "^7.8.3" + "@babel/plugin-transform-sticky-regex" "^7.8.3" + "@babel/plugin-transform-template-literals" "^7.8.3" + "@babel/plugin-transform-typeof-symbol" "^7.8.4" + "@babel/plugin-transform-unicode-regex" "^7.8.3" + "@babel/preset-modules" "^0.1.3" + "@babel/types" "^7.9.0" + browserslist "^4.9.1" + core-js-compat "^3.6.2" + invariant "^2.2.2" + levenary "^1.1.1" + semver "^5.5.0" + +"@babel/preset-env@^7.11.0", "@babel/preset-env@^7.12.1", "@babel/preset-env@^7.12.11", "@babel/preset-env@^7.16.4", "@babel/preset-env@^7.4.5", "@babel/preset-env@^7.8.7": + version "7.20.2" + resolved "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.20.2.tgz" + integrity sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg== dependencies: "@babel/compat-data" "^7.20.1" "@babel/helper-compilation-targets" "^7.20.0" @@ -1323,122 +1381,44 @@ "@babel/plugin-transform-unicode-regex" "^7.18.6" "@babel/preset-modules" "^0.1.5" "@babel/types" "^7.20.2" - "babel-plugin-polyfill-corejs2" "^0.3.3" - "babel-plugin-polyfill-corejs3" "^0.6.0" - "babel-plugin-polyfill-regenerator" "^0.4.1" - "core-js-compat" "^3.25.1" - "semver" "^6.3.0" - -"@babel/preset-env@7.9.0": - "integrity" "sha512-712DeRXT6dyKAM/FMbQTV/FvRCms2hPCx+3weRjZ8iQVQWZejWWk1wwG6ViWMyqb/ouBbGOl5b6aCk0+j1NmsQ==" - "resolved" "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.9.0.tgz" - "version" "7.9.0" - dependencies: - "@babel/compat-data" "^7.9.0" - "@babel/helper-compilation-targets" "^7.8.7" - "@babel/helper-module-imports" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-proposal-async-generator-functions" "^7.8.3" - "@babel/plugin-proposal-dynamic-import" "^7.8.3" - "@babel/plugin-proposal-json-strings" "^7.8.3" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-proposal-numeric-separator" "^7.8.3" - "@babel/plugin-proposal-object-rest-spread" "^7.9.0" - "@babel/plugin-proposal-optional-catch-binding" "^7.8.3" - "@babel/plugin-proposal-optional-chaining" "^7.9.0" - "@babel/plugin-proposal-unicode-property-regex" "^7.8.3" - "@babel/plugin-syntax-async-generators" "^7.8.0" - "@babel/plugin-syntax-dynamic-import" "^7.8.0" - "@babel/plugin-syntax-json-strings" "^7.8.0" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" - "@babel/plugin-syntax-numeric-separator" "^7.8.0" - "@babel/plugin-syntax-object-rest-spread" "^7.8.0" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" - "@babel/plugin-syntax-optional-chaining" "^7.8.0" - "@babel/plugin-syntax-top-level-await" "^7.8.3" - "@babel/plugin-transform-arrow-functions" "^7.8.3" - "@babel/plugin-transform-async-to-generator" "^7.8.3" - "@babel/plugin-transform-block-scoped-functions" "^7.8.3" - "@babel/plugin-transform-block-scoping" "^7.8.3" - "@babel/plugin-transform-classes" "^7.9.0" - "@babel/plugin-transform-computed-properties" "^7.8.3" - "@babel/plugin-transform-destructuring" "^7.8.3" - "@babel/plugin-transform-dotall-regex" "^7.8.3" - "@babel/plugin-transform-duplicate-keys" "^7.8.3" - "@babel/plugin-transform-exponentiation-operator" "^7.8.3" - "@babel/plugin-transform-for-of" "^7.9.0" - "@babel/plugin-transform-function-name" "^7.8.3" - "@babel/plugin-transform-literals" "^7.8.3" - "@babel/plugin-transform-member-expression-literals" "^7.8.3" - "@babel/plugin-transform-modules-amd" "^7.9.0" - "@babel/plugin-transform-modules-commonjs" "^7.9.0" - "@babel/plugin-transform-modules-systemjs" "^7.9.0" - "@babel/plugin-transform-modules-umd" "^7.9.0" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.8.3" - "@babel/plugin-transform-new-target" "^7.8.3" - "@babel/plugin-transform-object-super" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.8.7" - "@babel/plugin-transform-property-literals" "^7.8.3" - "@babel/plugin-transform-regenerator" "^7.8.7" - "@babel/plugin-transform-reserved-words" "^7.8.3" - "@babel/plugin-transform-shorthand-properties" "^7.8.3" - "@babel/plugin-transform-spread" "^7.8.3" - "@babel/plugin-transform-sticky-regex" "^7.8.3" - "@babel/plugin-transform-template-literals" "^7.8.3" - "@babel/plugin-transform-typeof-symbol" "^7.8.4" - "@babel/plugin-transform-unicode-regex" "^7.8.3" - "@babel/preset-modules" "^0.1.3" - "@babel/types" "^7.9.0" - "browserslist" "^4.9.1" - "core-js-compat" "^3.6.2" - "invariant" "^2.2.2" - "levenary" "^1.1.1" - "semver" "^5.5.0" + babel-plugin-polyfill-corejs2 "^0.3.3" + babel-plugin-polyfill-corejs3 "^0.6.0" + babel-plugin-polyfill-regenerator "^0.4.1" + core-js-compat "^3.25.1" + semver "^6.3.0" "@babel/preset-es2017@^7.0.0-beta.53": - "integrity" "sha512-kFRWUrg0Fd9+R7uBP5T/MwzdheKCvBtTgyFh/gMlNKQqoV3l2qMJpetDzR4iBrtBCC/xwWS7HO2tK3RV7uJRPw==" - "resolved" "https://registry.npmjs.org/@babel/preset-es2017/-/preset-es2017-7.0.0-beta.53.tgz" - "version" "7.0.0-beta.53" + version "7.0.0-beta.53" + resolved "https://registry.npmjs.org/@babel/preset-es2017/-/preset-es2017-7.0.0-beta.53.tgz" + integrity sha512-kFRWUrg0Fd9+R7uBP5T/MwzdheKCvBtTgyFh/gMlNKQqoV3l2qMJpetDzR4iBrtBCC/xwWS7HO2tK3RV7uJRPw== dependencies: "@babel/helper-plugin-utils" "7.0.0-beta.53" "@babel/plugin-transform-async-to-generator" "7.0.0-beta.53" "@babel/preset-flow@^7.12.1", "@babel/preset-flow@^7.13.13": - "integrity" "sha512-E7BDhL64W6OUqpuyHnSroLnqyRTcG6ZdOBl1OKI/QK/HJfplqK/S3sq1Cckx7oTodJ5yOXyfw7rEADJ6UjoQDQ==" - "resolved" "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.18.6.tgz" + integrity sha512-E7BDhL64W6OUqpuyHnSroLnqyRTcG6ZdOBl1OKI/QK/HJfplqK/S3sq1Cckx7oTodJ5yOXyfw7rEADJ6UjoQDQ== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/helper-validator-option" "^7.18.6" "@babel/plugin-transform-flow-strip-types" "^7.18.6" "@babel/preset-modules@^0.1.3", "@babel/preset-modules@^0.1.5": - "integrity" "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==" - "resolved" "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz" - "version" "0.1.5" + version "0.1.5" + resolved "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz" + integrity sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" "@babel/plugin-transform-dotall-regex" "^7.4.4" "@babel/types" "^7.4.4" - "esutils" "^2.0.2" - -"@babel/preset-react@^7.0.0", "@babel/preset-react@^7.12.10", "@babel/preset-react@^7.12.5", "@babel/preset-react@^7.16.0": - "integrity" "sha512-zXr6atUmyYdiWRVLOZahakYmOBHtWc2WGCkP8PYTgZi0iJXDY2CN180TdrIW4OGOAdLc7TifzDIvtx6izaRIzg==" - "resolved" "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-validator-option" "^7.18.6" - "@babel/plugin-transform-react-display-name" "^7.18.6" - "@babel/plugin-transform-react-jsx" "^7.18.6" - "@babel/plugin-transform-react-jsx-development" "^7.18.6" - "@babel/plugin-transform-react-pure-annotations" "^7.18.6" + esutils "^2.0.2" "@babel/preset-react@7.9.1": - "integrity" "sha512-aJBYF23MPj0RNdp/4bHnAP0NVqqZRr9kl0NAOP4nJCex6OYVio59+dnQzsAWFuogdLyeaKA1hmfUIVZkY5J+TQ==" - "resolved" "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.9.1.tgz" - "version" "7.9.1" + version "7.9.1" + resolved "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.9.1.tgz" + integrity sha512-aJBYF23MPj0RNdp/4bHnAP0NVqqZRr9kl0NAOP4nJCex6OYVio59+dnQzsAWFuogdLyeaKA1hmfUIVZkY5J+TQ== dependencies: "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-transform-react-display-name" "^7.8.3" @@ -1447,119 +1427,129 @@ "@babel/plugin-transform-react-jsx-self" "^7.9.0" "@babel/plugin-transform-react-jsx-source" "^7.9.0" -"@babel/preset-typescript@^7.12.7": - "integrity" "sha512-s9ik86kXBAnD760aybBucdpnLsAt0jK1xqJn2juOn9lkOvSHV60os5hxoVJsPzMQxvnUJFAlkont2DvvaYEBtQ==" - "resolved" "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.18.6.tgz" - "version" "7.18.6" +"@babel/preset-react@^7.0.0", "@babel/preset-react@^7.12.10", "@babel/preset-react@^7.12.5", "@babel/preset-react@^7.16.0": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.18.6.tgz" + integrity sha512-zXr6atUmyYdiWRVLOZahakYmOBHtWc2WGCkP8PYTgZi0iJXDY2CN180TdrIW4OGOAdLc7TifzDIvtx6izaRIzg== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/helper-validator-option" "^7.18.6" - "@babel/plugin-transform-typescript" "^7.18.6" - -"@babel/preset-typescript@^7.13.0": - "integrity" "sha512-s9ik86kXBAnD760aybBucdpnLsAt0jK1xqJn2juOn9lkOvSHV60os5hxoVJsPzMQxvnUJFAlkont2DvvaYEBtQ==" - "resolved" "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-validator-option" "^7.18.6" - "@babel/plugin-transform-typescript" "^7.18.6" - -"@babel/preset-typescript@^7.16.0": - "integrity" "sha512-s9ik86kXBAnD760aybBucdpnLsAt0jK1xqJn2juOn9lkOvSHV60os5hxoVJsPzMQxvnUJFAlkont2DvvaYEBtQ==" - "resolved" "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-validator-option" "^7.18.6" - "@babel/plugin-transform-typescript" "^7.18.6" + "@babel/plugin-transform-react-display-name" "^7.18.6" + "@babel/plugin-transform-react-jsx" "^7.18.6" + "@babel/plugin-transform-react-jsx-development" "^7.18.6" + "@babel/plugin-transform-react-pure-annotations" "^7.18.6" "@babel/preset-typescript@7.9.0": - "integrity" "sha512-S4cueFnGrIbvYJgwsVFKdvOmpiL0XGw9MFW9D0vgRys5g36PBhZRL8NX8Gr2akz8XRtzq6HuDXPD/1nniagNUg==" - "resolved" "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.9.0.tgz" - "version" "7.9.0" + version "7.9.0" + resolved "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.9.0.tgz" + integrity sha512-S4cueFnGrIbvYJgwsVFKdvOmpiL0XGw9MFW9D0vgRys5g36PBhZRL8NX8Gr2akz8XRtzq6HuDXPD/1nniagNUg== dependencies: "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-transform-typescript" "^7.9.0" -"@babel/register@^7.12.1", "@babel/register@^7.13.16": - "integrity" "sha512-ZlbnXDcNYHMR25ITwwNKT88JiaukkdVj/nG7r3wnuXkOTHc60Uy05PwMCPre0hSkY68E6zK3xz+vUJSP2jWmcw==" - "resolved" "https://registry.npmjs.org/@babel/register/-/register-7.18.9.tgz" - "version" "7.18.9" +"@babel/preset-typescript@^7.12.7", "@babel/preset-typescript@^7.13.0", "@babel/preset-typescript@^7.16.0": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.18.6.tgz" + integrity sha512-s9ik86kXBAnD760aybBucdpnLsAt0jK1xqJn2juOn9lkOvSHV60os5hxoVJsPzMQxvnUJFAlkont2DvvaYEBtQ== dependencies: - "clone-deep" "^4.0.1" - "find-cache-dir" "^2.0.0" - "make-dir" "^2.1.0" - "pirates" "^4.0.5" - "source-map-support" "^0.5.16" + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-validator-option" "^7.18.6" + "@babel/plugin-transform-typescript" "^7.18.6" + +"@babel/register@^7.12.1", "@babel/register@^7.13.16": + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/register/-/register-7.18.9.tgz" + integrity sha512-ZlbnXDcNYHMR25ITwwNKT88JiaukkdVj/nG7r3wnuXkOTHc60Uy05PwMCPre0hSkY68E6zK3xz+vUJSP2jWmcw== + dependencies: + clone-deep "^4.0.1" + find-cache-dir "^2.0.0" + make-dir "^2.1.0" + pirates "^4.0.5" + source-map-support "^0.5.16" "@babel/runtime-corejs2@^7.3.4": - "integrity" "sha512-9hxzcvnXxG38gZ3ycsZ91+PNbpWwPVXmTsKaaS6mvJyXs49XziitKsj2SHCpTVwcedRc3hmYrzjGSs+9aAQe7Q==" - "resolved" "https://registry.npmjs.org/@babel/runtime-corejs2/-/runtime-corejs2-7.20.1.tgz" - "version" "7.20.1" + version "7.20.1" + resolved "https://registry.npmjs.org/@babel/runtime-corejs2/-/runtime-corejs2-7.20.1.tgz" + integrity sha512-9hxzcvnXxG38gZ3ycsZ91+PNbpWwPVXmTsKaaS6mvJyXs49XziitKsj2SHCpTVwcedRc3hmYrzjGSs+9aAQe7Q== dependencies: - "core-js" "^2.6.12" - "regenerator-runtime" "^0.13.10" + core-js "^2.6.12" + regenerator-runtime "^0.13.10" "@babel/runtime-corejs3@^7.10.2": - "integrity" "sha512-CGulbEDcg/ND1Im7fUNRZdGXmX2MTWVVZacQi/6DiKE5HNwZ3aVTm5PV4lO8HHz0B2h8WQyvKKjbX5XgTtydsg==" - "resolved" "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.20.1.tgz" - "version" "7.20.1" + version "7.20.1" + resolved "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.20.1.tgz" + integrity sha512-CGulbEDcg/ND1Im7fUNRZdGXmX2MTWVVZacQi/6DiKE5HNwZ3aVTm5PV4lO8HHz0B2h8WQyvKKjbX5XgTtydsg== dependencies: - "core-js-pure" "^3.25.1" - "regenerator-runtime" "^0.13.10" - -"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.1", "@babel/runtime@^7.10.2", "@babel/runtime@^7.10.4", "@babel/runtime@^7.11.1", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.0", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.14.5", "@babel/runtime@^7.15.4", "@babel/runtime@^7.16.3", "@babel/runtime@^7.16.7", "@babel/runtime@^7.17.8", "@babel/runtime@^7.18.0", "@babel/runtime@^7.18.3", "@babel/runtime@^7.18.9", "@babel/runtime@^7.19.0", "@babel/runtime@^7.2.0", "@babel/runtime@^7.20.0", "@babel/runtime@^7.3.1", "@babel/runtime@^7.3.4", "@babel/runtime@^7.4.4", "@babel/runtime@^7.5.0", "@babel/runtime@^7.5.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.3", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2", "@babel/runtime@>=7.0.0-beta.56": - "integrity" "sha512-mrzLkl6U9YLF8qpqI7TB82PESyEGjm/0Ly91jG575eVxMMlb8fYfOXFZIJ8XfLrJZQbm7dlKry2bJmXBUEkdFg==" - "resolved" "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.1.tgz" - "version" "7.20.1" - dependencies: - "regenerator-runtime" "^0.13.10" - -"@babel/runtime@~7.5.4": - "integrity" "sha512-28QvEGyQyNkB0/m2B4FU7IEZGK2NUrcMtT6BZEFALTguLk+AUT6ofsHtPk5QyjAdUkpMJ+/Em+quwz4HOt30AQ==" - "resolved" "https://registry.npmjs.org/@babel/runtime/-/runtime-7.5.5.tgz" - "version" "7.5.5" - dependencies: - "regenerator-runtime" "^0.13.2" + core-js-pure "^3.25.1" + regenerator-runtime "^0.13.10" "@babel/runtime@7.7.2": - "integrity" "sha512-JONRbXbTXc9WQE2mAZd1p0Z3DZ/6vaQIkgYMSTP3KjRCyd7rCZCcfhCyX+YjwcKxcZ82UrxbRD358bpExNgrjw==" - "resolved" "https://registry.npmjs.org/@babel/runtime/-/runtime-7.7.2.tgz" - "version" "7.7.2" + version "7.7.2" + resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.7.2.tgz" + integrity sha512-JONRbXbTXc9WQE2mAZd1p0Z3DZ/6vaQIkgYMSTP3KjRCyd7rCZCcfhCyX+YjwcKxcZ82UrxbRD358bpExNgrjw== dependencies: - "regenerator-runtime" "^0.13.2" + regenerator-runtime "^0.13.2" "@babel/runtime@7.9.0": - "integrity" "sha512-cTIudHnzuWLS56ik4DnRnqqNf8MkdUzV4iFFI1h7Jo9xvrpQROYaAnaSd2mHLQAzzZAPfATynX5ord6YlNYNMA==" - "resolved" "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.0.tgz" - "version" "7.9.0" + version "7.9.0" + resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.0.tgz" + integrity sha512-cTIudHnzuWLS56ik4DnRnqqNf8MkdUzV4iFFI1h7Jo9xvrpQROYaAnaSd2mHLQAzzZAPfATynX5ord6YlNYNMA== dependencies: - "regenerator-runtime" "^0.13.4" + regenerator-runtime "^0.13.4" + +"@babel/runtime@>=7.0.0-beta.56", "@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.1", "@babel/runtime@^7.10.2", "@babel/runtime@^7.10.4", "@babel/runtime@^7.11.1", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.0", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.14.5", "@babel/runtime@^7.15.4", "@babel/runtime@^7.16.3", "@babel/runtime@^7.16.7", "@babel/runtime@^7.17.8", "@babel/runtime@^7.18.0", "@babel/runtime@^7.18.3", "@babel/runtime@^7.18.9", "@babel/runtime@^7.19.0", "@babel/runtime@^7.2.0", "@babel/runtime@^7.20.0", "@babel/runtime@^7.3.1", "@babel/runtime@^7.3.4", "@babel/runtime@^7.4.4", "@babel/runtime@^7.5.0", "@babel/runtime@^7.5.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.3", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": + version "7.20.1" + resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.1.tgz" + integrity sha512-mrzLkl6U9YLF8qpqI7TB82PESyEGjm/0Ly91jG575eVxMMlb8fYfOXFZIJ8XfLrJZQbm7dlKry2bJmXBUEkdFg== + dependencies: + regenerator-runtime "^0.13.10" + +"@babel/runtime@~7.5.4": + version "7.5.5" + resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.5.5.tgz" + integrity sha512-28QvEGyQyNkB0/m2B4FU7IEZGK2NUrcMtT6BZEFALTguLk+AUT6ofsHtPk5QyjAdUkpMJ+/Em+quwz4HOt30AQ== + dependencies: + regenerator-runtime "^0.13.2" + +"@babel/template@7.0.0-beta.53": + version "7.0.0-beta.53" + resolved "https://registry.npmjs.org/@babel/template/-/template-7.0.0-beta.53.tgz" + integrity sha512-MCZLPfGfNBHdE5wNfY5eK1hpY3fyq8zq+NfbfFCUtIzHl7SfUzHzH8rKPBXSB2Ypetq2sBHdDyslSSgnG0Watg== + dependencies: + "@babel/code-frame" "7.0.0-beta.53" + "@babel/parser" "7.0.0-beta.53" + "@babel/types" "7.0.0-beta.53" + lodash "^4.17.5" "@babel/template@^7.12.7", "@babel/template@^7.18.10", "@babel/template@^7.20.7", "@babel/template@^7.3.3", "@babel/template@^7.4.0", "@babel/template@^7.8.6": - "integrity" "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==" - "resolved" "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz" - "version" "7.20.7" + version "7.20.7" + resolved "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz" + integrity sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw== dependencies: "@babel/code-frame" "^7.18.6" "@babel/parser" "^7.20.7" "@babel/types" "^7.20.7" -"@babel/template@7.0.0-beta.53": - "integrity" "sha512-MCZLPfGfNBHdE5wNfY5eK1hpY3fyq8zq+NfbfFCUtIzHl7SfUzHzH8rKPBXSB2Ypetq2sBHdDyslSSgnG0Watg==" - "resolved" "https://registry.npmjs.org/@babel/template/-/template-7.0.0-beta.53.tgz" - "version" "7.0.0-beta.53" +"@babel/traverse@7.0.0-beta.53": + version "7.0.0-beta.53" + resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.0.0-beta.53.tgz" + integrity sha512-JZh3vX/9ox9aoub2gLlpPRm8LM0yJuqzmp5MrbwD57SPh1dHMDWjGen9exbaITAe03t9MJV5PAacv0K2UJBffg== dependencies: "@babel/code-frame" "7.0.0-beta.53" + "@babel/generator" "7.0.0-beta.53" + "@babel/helper-function-name" "7.0.0-beta.53" + "@babel/helper-split-export-declaration" "7.0.0-beta.53" "@babel/parser" "7.0.0-beta.53" "@babel/types" "7.0.0-beta.53" - "lodash" "^4.17.5" + debug "^3.1.0" + globals "^11.1.0" + invariant "^2.2.0" + lodash "^4.17.5" "@babel/traverse@^7.1.6", "@babel/traverse@^7.12.11", "@babel/traverse@^7.12.9", "@babel/traverse@^7.13.0", "@babel/traverse@^7.19.0", "@babel/traverse@^7.20.1", "@babel/traverse@^7.20.7", "@babel/traverse@^7.4.3", "@babel/traverse@^7.7.2", "@babel/traverse@^7.9.0": - "integrity" "sha512-kMJXfF0T6DIS9E8cgdLCSAL+cuCK+YEZHWiLK0SXpTo8YRj5lpJu3CDNKiIBCne4m9hhTIqUg6SYTAI39tAiVQ==" - "resolved" "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.13.tgz" - "version" "7.20.13" + version "7.20.13" + resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.13.tgz" + integrity sha512-kMJXfF0T6DIS9E8cgdLCSAL+cuCK+YEZHWiLK0SXpTo8YRj5lpJu3CDNKiIBCne4m9hhTIqUg6SYTAI39tAiVQ== dependencies: "@babel/code-frame" "^7.18.6" "@babel/generator" "^7.20.7" @@ -1569,372 +1559,356 @@ "@babel/helper-split-export-declaration" "^7.18.6" "@babel/parser" "^7.20.13" "@babel/types" "^7.20.7" - "debug" "^4.1.0" - "globals" "^11.1.0" + debug "^4.1.0" + globals "^11.1.0" -"@babel/traverse@7.0.0-beta.53": - "integrity" "sha512-JZh3vX/9ox9aoub2gLlpPRm8LM0yJuqzmp5MrbwD57SPh1dHMDWjGen9exbaITAe03t9MJV5PAacv0K2UJBffg==" - "resolved" "https://registry.npmjs.org/@babel/traverse/-/traverse-7.0.0-beta.53.tgz" - "version" "7.0.0-beta.53" +"@babel/types@7.0.0-beta.53": + version "7.0.0-beta.53" + resolved "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.53.tgz" + integrity sha512-iL3DSWjQ890rA97uR5F1PhGtYniVGjqaRoRZtLz76bZhNNqmALftafrUnuJNzWC9z0eoaNcAtk7ZT/26mW/6Tg== dependencies: - "@babel/code-frame" "7.0.0-beta.53" - "@babel/generator" "7.0.0-beta.53" - "@babel/helper-function-name" "7.0.0-beta.53" - "@babel/helper-split-export-declaration" "7.0.0-beta.53" - "@babel/parser" "7.0.0-beta.53" - "@babel/types" "7.0.0-beta.53" - "debug" "^3.1.0" - "globals" "^11.1.0" - "invariant" "^2.2.0" - "lodash" "^4.17.5" + esutils "^2.0.2" + lodash "^4.17.5" + to-fast-properties "^2.0.0" "@babel/types@^7.0.0", "@babel/types@^7.12.11", "@babel/types@^7.12.6", "@babel/types@^7.12.7", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.19.0", "@babel/types@^7.2.0", "@babel/types@^7.20.0", "@babel/types@^7.20.2", "@babel/types@^7.20.7", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.0", "@babel/types@^7.4.4", "@babel/types@^7.9.0": - "integrity" "sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==" - "resolved" "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz" - "version" "7.20.7" + version "7.20.7" + resolved "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz" + integrity sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg== dependencies: "@babel/helper-string-parser" "^7.19.4" "@babel/helper-validator-identifier" "^7.19.1" - "to-fast-properties" "^2.0.0" - -"@babel/types@7.0.0-beta.53": - "integrity" "sha512-iL3DSWjQ890rA97uR5F1PhGtYniVGjqaRoRZtLz76bZhNNqmALftafrUnuJNzWC9z0eoaNcAtk7ZT/26mW/6Tg==" - "resolved" "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.53.tgz" - "version" "7.0.0-beta.53" - dependencies: - "esutils" "^2.0.2" - "lodash" "^4.17.5" - "to-fast-properties" "^2.0.0" + to-fast-properties "^2.0.0" "@base2/pretty-print-object@1.0.1": - "integrity" "sha512-4iri8i1AqYHJE2DstZYkyEprg6Pq6sKx3xn5FpySk9sNhH7qN2LLlHJCfDTZRILNwQNPD7mATWM0TBui7uC1pA==" - "resolved" "https://registry.npmjs.org/@base2/pretty-print-object/-/pretty-print-object-1.0.1.tgz" - "version" "1.0.1" + version "1.0.1" + resolved "https://registry.npmjs.org/@base2/pretty-print-object/-/pretty-print-object-1.0.1.tgz" + integrity sha512-4iri8i1AqYHJE2DstZYkyEprg6Pq6sKx3xn5FpySk9sNhH7qN2LLlHJCfDTZRILNwQNPD7mATWM0TBui7uC1pA== "@bcoe/v8-coverage@^0.2.3": - "integrity" "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==" - "resolved" "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz" - "version" "0.2.3" + version "0.2.3" + resolved "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz" + integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== "@cnakazawa/watch@^1.0.3": - "integrity" "sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==" - "resolved" "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz" - "version" "1.0.4" + version "1.0.4" + resolved "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz" + integrity sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ== dependencies: - "exec-sh" "^0.3.2" - "minimist" "^1.2.0" + exec-sh "^0.3.2" + minimist "^1.2.0" "@colors/colors@1.5.0": - "integrity" "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==" - "resolved" "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz" - "version" "1.5.0" + version "1.5.0" + resolved "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz" + integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== -"@craco/craco@^6.0.0", "@craco/craco@^6.4.3", "@craco/craco@>=5.0.0": - "integrity" "sha512-8F2rIAao8sEh0FPP52ViEvDM9GjJ7acq0knu1c8UgI+EuZMD5/ZB270ol6jV4iNY7it9Umg/RoGBvNRUNr8U8w==" - "resolved" "https://registry.npmjs.org/@craco/craco/-/craco-6.4.5.tgz" - "version" "6.4.5" +"@craco/craco@^6.4.3": + version "6.4.5" + resolved "https://registry.npmjs.org/@craco/craco/-/craco-6.4.5.tgz" + integrity sha512-8F2rIAao8sEh0FPP52ViEvDM9GjJ7acq0knu1c8UgI+EuZMD5/ZB270ol6jV4iNY7it9Umg/RoGBvNRUNr8U8w== dependencies: - "cosmiconfig" "^7.0.1" - "cosmiconfig-typescript-loader" "^1.0.0" - "cross-spawn" "^7.0.0" - "lodash" "^4.17.15" - "semver" "^7.3.2" - "webpack-merge" "^4.2.2" + cosmiconfig "^7.0.1" + cosmiconfig-typescript-loader "^1.0.0" + cross-spawn "^7.0.0" + lodash "^4.17.15" + semver "^7.3.2" + webpack-merge "^4.2.2" "@cspotcode/source-map-support@^0.8.0": - "integrity" "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==" - "resolved" "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz" - "version" "0.8.1" + version "0.8.1" + resolved "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz" + integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== dependencies: "@jridgewell/trace-mapping" "0.3.9" "@csstools/convert-colors@^1.4.0": - "integrity" "sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw==" - "resolved" "https://registry.npmjs.org/@csstools/convert-colors/-/convert-colors-1.4.0.tgz" - "version" "1.4.0" + version "1.4.0" + resolved "https://registry.npmjs.org/@csstools/convert-colors/-/convert-colors-1.4.0.tgz" + integrity sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw== "@csstools/normalize.css@*", "@csstools/normalize.css@^10.1.0": - "integrity" "sha512-ij4wRiunFfaJxjB0BdrYHIH8FxBJpOwNPhhAcunlmPdXudL1WQV1qoP9un6JsEBAgQH+7UXyyjh0g7jTxXK6tg==" - "resolved" "https://registry.npmjs.org/@csstools/normalize.css/-/normalize.css-10.1.0.tgz" - "version" "10.1.0" + version "10.1.0" + resolved "https://registry.npmjs.org/@csstools/normalize.css/-/normalize.css-10.1.0.tgz" + integrity sha512-ij4wRiunFfaJxjB0BdrYHIH8FxBJpOwNPhhAcunlmPdXudL1WQV1qoP9un6JsEBAgQH+7UXyyjh0g7jTxXK6tg== "@csstools/postcss-cascade-layers@^1.1.1": - "integrity" "sha512-+KdYrpKC5TgomQr2DlZF4lDEpHcoxnj5IGddYYfBWJAKfj1JtuHUIqMa+E1pJJ+z3kvDViWMqyqPlG4Ja7amQA==" - "resolved" "https://registry.npmjs.org/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-1.1.1.tgz" - "version" "1.1.1" + version "1.1.1" + resolved "https://registry.npmjs.org/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-1.1.1.tgz" + integrity sha512-+KdYrpKC5TgomQr2DlZF4lDEpHcoxnj5IGddYYfBWJAKfj1JtuHUIqMa+E1pJJ+z3kvDViWMqyqPlG4Ja7amQA== dependencies: "@csstools/selector-specificity" "^2.0.2" - "postcss-selector-parser" "^6.0.10" + postcss-selector-parser "^6.0.10" "@csstools/postcss-color-function@^1.1.1": - "integrity" "sha512-Bc0f62WmHdtRDjf5f3e2STwRAl89N2CLb+9iAwzrv4L2hncrbDwnQD9PCq0gtAt7pOI2leIV08HIBUd4jxD8cw==" - "resolved" "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-1.1.1.tgz" - "version" "1.1.1" + version "1.1.1" + resolved "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-1.1.1.tgz" + integrity sha512-Bc0f62WmHdtRDjf5f3e2STwRAl89N2CLb+9iAwzrv4L2hncrbDwnQD9PCq0gtAt7pOI2leIV08HIBUd4jxD8cw== dependencies: "@csstools/postcss-progressive-custom-properties" "^1.1.0" - "postcss-value-parser" "^4.2.0" + postcss-value-parser "^4.2.0" "@csstools/postcss-font-format-keywords@^1.0.1": - "integrity" "sha512-ZgrlzuUAjXIOc2JueK0X5sZDjCtgimVp/O5CEqTcs5ShWBa6smhWYbS0x5cVc/+rycTDbjjzoP0KTDnUneZGOg==" - "resolved" "https://registry.npmjs.org/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-1.0.1.tgz" - "version" "1.0.1" + version "1.0.1" + resolved "https://registry.npmjs.org/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-1.0.1.tgz" + integrity sha512-ZgrlzuUAjXIOc2JueK0X5sZDjCtgimVp/O5CEqTcs5ShWBa6smhWYbS0x5cVc/+rycTDbjjzoP0KTDnUneZGOg== dependencies: - "postcss-value-parser" "^4.2.0" + postcss-value-parser "^4.2.0" "@csstools/postcss-hwb-function@^1.0.2": - "integrity" "sha512-YHdEru4o3Rsbjmu6vHy4UKOXZD+Rn2zmkAmLRfPet6+Jz4Ojw8cbWxe1n42VaXQhD3CQUXXTooIy8OkVbUcL+w==" - "resolved" "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-1.0.2.tgz" - "version" "1.0.2" + version "1.0.2" + resolved "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-1.0.2.tgz" + integrity sha512-YHdEru4o3Rsbjmu6vHy4UKOXZD+Rn2zmkAmLRfPet6+Jz4Ojw8cbWxe1n42VaXQhD3CQUXXTooIy8OkVbUcL+w== dependencies: - "postcss-value-parser" "^4.2.0" + postcss-value-parser "^4.2.0" "@csstools/postcss-ic-unit@^1.0.1": - "integrity" "sha512-Ot1rcwRAaRHNKC9tAqoqNZhjdYBzKk1POgWfhN4uCOE47ebGcLRqXjKkApVDpjifL6u2/55ekkpnFcp+s/OZUw==" - "resolved" "https://registry.npmjs.org/@csstools/postcss-ic-unit/-/postcss-ic-unit-1.0.1.tgz" - "version" "1.0.1" + version "1.0.1" + resolved "https://registry.npmjs.org/@csstools/postcss-ic-unit/-/postcss-ic-unit-1.0.1.tgz" + integrity sha512-Ot1rcwRAaRHNKC9tAqoqNZhjdYBzKk1POgWfhN4uCOE47ebGcLRqXjKkApVDpjifL6u2/55ekkpnFcp+s/OZUw== dependencies: "@csstools/postcss-progressive-custom-properties" "^1.1.0" - "postcss-value-parser" "^4.2.0" + postcss-value-parser "^4.2.0" "@csstools/postcss-is-pseudo-class@^2.0.7": - "integrity" "sha512-7JPeVVZHd+jxYdULl87lvjgvWldYu+Bc62s9vD/ED6/QTGjy0jy0US/f6BG53sVMTBJ1lzKZFpYmofBN9eaRiA==" - "resolved" "https://registry.npmjs.org/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-2.0.7.tgz" - "version" "2.0.7" + version "2.0.7" + resolved "https://registry.npmjs.org/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-2.0.7.tgz" + integrity sha512-7JPeVVZHd+jxYdULl87lvjgvWldYu+Bc62s9vD/ED6/QTGjy0jy0US/f6BG53sVMTBJ1lzKZFpYmofBN9eaRiA== dependencies: "@csstools/selector-specificity" "^2.0.0" - "postcss-selector-parser" "^6.0.10" + postcss-selector-parser "^6.0.10" "@csstools/postcss-nested-calc@^1.0.0": - "integrity" "sha512-JCsQsw1wjYwv1bJmgjKSoZNvf7R6+wuHDAbi5f/7MbFhl2d/+v+TvBTU4BJH3G1X1H87dHl0mh6TfYogbT/dJQ==" - "resolved" "https://registry.npmjs.org/@csstools/postcss-nested-calc/-/postcss-nested-calc-1.0.0.tgz" - "version" "1.0.0" + version "1.0.0" + resolved "https://registry.npmjs.org/@csstools/postcss-nested-calc/-/postcss-nested-calc-1.0.0.tgz" + integrity sha512-JCsQsw1wjYwv1bJmgjKSoZNvf7R6+wuHDAbi5f/7MbFhl2d/+v+TvBTU4BJH3G1X1H87dHl0mh6TfYogbT/dJQ== dependencies: - "postcss-value-parser" "^4.2.0" + postcss-value-parser "^4.2.0" "@csstools/postcss-normalize-display-values@^1.0.1": - "integrity" "sha512-jcOanIbv55OFKQ3sYeFD/T0Ti7AMXc9nM1hZWu8m/2722gOTxFg7xYu4RDLJLeZmPUVQlGzo4jhzvTUq3x4ZUw==" - "resolved" "https://registry.npmjs.org/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-1.0.1.tgz" - "version" "1.0.1" + version "1.0.1" + resolved "https://registry.npmjs.org/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-1.0.1.tgz" + integrity sha512-jcOanIbv55OFKQ3sYeFD/T0Ti7AMXc9nM1hZWu8m/2722gOTxFg7xYu4RDLJLeZmPUVQlGzo4jhzvTUq3x4ZUw== dependencies: - "postcss-value-parser" "^4.2.0" + postcss-value-parser "^4.2.0" "@csstools/postcss-oklab-function@^1.1.1": - "integrity" "sha512-nJpJgsdA3dA9y5pgyb/UfEzE7W5Ka7u0CX0/HIMVBNWzWemdcTH3XwANECU6anWv/ao4vVNLTMxhiPNZsTK6iA==" - "resolved" "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-1.1.1.tgz" - "version" "1.1.1" + version "1.1.1" + resolved "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-1.1.1.tgz" + integrity sha512-nJpJgsdA3dA9y5pgyb/UfEzE7W5Ka7u0CX0/HIMVBNWzWemdcTH3XwANECU6anWv/ao4vVNLTMxhiPNZsTK6iA== dependencies: "@csstools/postcss-progressive-custom-properties" "^1.1.0" - "postcss-value-parser" "^4.2.0" + postcss-value-parser "^4.2.0" "@csstools/postcss-progressive-custom-properties@^1.1.0", "@csstools/postcss-progressive-custom-properties@^1.3.0": - "integrity" "sha512-ASA9W1aIy5ygskZYuWams4BzafD12ULvSypmaLJT2jvQ8G0M3I8PRQhC0h7mG0Z3LI05+agZjqSR9+K9yaQQjA==" - "resolved" "https://registry.npmjs.org/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-1.3.0.tgz" - "version" "1.3.0" + version "1.3.0" + resolved "https://registry.npmjs.org/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-1.3.0.tgz" + integrity sha512-ASA9W1aIy5ygskZYuWams4BzafD12ULvSypmaLJT2jvQ8G0M3I8PRQhC0h7mG0Z3LI05+agZjqSR9+K9yaQQjA== dependencies: - "postcss-value-parser" "^4.2.0" + postcss-value-parser "^4.2.0" "@csstools/postcss-stepped-value-functions@^1.0.1": - "integrity" "sha512-dz0LNoo3ijpTOQqEJLY8nyaapl6umbmDcgj4AD0lgVQ572b2eqA1iGZYTTWhrcrHztWDDRAX2DGYyw2VBjvCvQ==" - "resolved" "https://registry.npmjs.org/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-1.0.1.tgz" - "version" "1.0.1" + version "1.0.1" + resolved "https://registry.npmjs.org/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-1.0.1.tgz" + integrity sha512-dz0LNoo3ijpTOQqEJLY8nyaapl6umbmDcgj4AD0lgVQ572b2eqA1iGZYTTWhrcrHztWDDRAX2DGYyw2VBjvCvQ== dependencies: - "postcss-value-parser" "^4.2.0" + postcss-value-parser "^4.2.0" "@csstools/postcss-text-decoration-shorthand@^1.0.0": - "integrity" "sha512-c1XwKJ2eMIWrzQenN0XbcfzckOLLJiczqy+YvfGmzoVXd7pT9FfObiSEfzs84bpE/VqfpEuAZ9tCRbZkZxxbdw==" - "resolved" "https://registry.npmjs.org/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-1.0.0.tgz" - "version" "1.0.0" + version "1.0.0" + resolved "https://registry.npmjs.org/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-1.0.0.tgz" + integrity sha512-c1XwKJ2eMIWrzQenN0XbcfzckOLLJiczqy+YvfGmzoVXd7pT9FfObiSEfzs84bpE/VqfpEuAZ9tCRbZkZxxbdw== dependencies: - "postcss-value-parser" "^4.2.0" + postcss-value-parser "^4.2.0" "@csstools/postcss-trigonometric-functions@^1.0.2": - "integrity" "sha512-woKaLO///4bb+zZC2s80l+7cm07M7268MsyG3M0ActXXEFi6SuhvriQYcb58iiKGbjwwIU7n45iRLEHypB47Og==" - "resolved" "https://registry.npmjs.org/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-1.0.2.tgz" - "version" "1.0.2" + version "1.0.2" + resolved "https://registry.npmjs.org/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-1.0.2.tgz" + integrity sha512-woKaLO///4bb+zZC2s80l+7cm07M7268MsyG3M0ActXXEFi6SuhvriQYcb58iiKGbjwwIU7n45iRLEHypB47Og== dependencies: - "postcss-value-parser" "^4.2.0" + postcss-value-parser "^4.2.0" "@csstools/postcss-unset-value@^1.0.2": - "integrity" "sha512-c8J4roPBILnelAsdLr4XOAR/GsTm0GJi4XpcfvoWk3U6KiTCqiFYc63KhRMQQX35jYMp4Ao8Ij9+IZRgMfJp1g==" - "resolved" "https://registry.npmjs.org/@csstools/postcss-unset-value/-/postcss-unset-value-1.0.2.tgz" - "version" "1.0.2" + version "1.0.2" + resolved "https://registry.npmjs.org/@csstools/postcss-unset-value/-/postcss-unset-value-1.0.2.tgz" + integrity sha512-c8J4roPBILnelAsdLr4XOAR/GsTm0GJi4XpcfvoWk3U6KiTCqiFYc63KhRMQQX35jYMp4Ao8Ij9+IZRgMfJp1g== "@csstools/selector-specificity@^2.0.0", "@csstools/selector-specificity@^2.0.2": - "integrity" "sha512-IkpVW/ehM1hWKln4fCA3NzJU8KwD+kIOvPZA4cqxoJHtE21CCzjyp+Kxbu0i5I4tBNOlXPL9mjwnWlL0VEG4Fg==" - "resolved" "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.0.2.tgz" - "version" "2.0.2" + version "2.0.2" + resolved "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.0.2.tgz" + integrity sha512-IkpVW/ehM1hWKln4fCA3NzJU8KwD+kIOvPZA4cqxoJHtE21CCzjyp+Kxbu0i5I4tBNOlXPL9mjwnWlL0VEG4Fg== "@ctrl/tinycolor@^3.4.0": - "integrity" "sha512-ej5oVy6lykXsvieQtqZxCOaLT+xD4+QNarq78cIYISHmZXshCvROLudpQN3lfL8G0NL7plMSSK+zlyvCaIJ4Iw==" - "resolved" "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-3.4.1.tgz" - "version" "3.4.1" + version "3.4.1" + resolved "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-3.4.1.tgz" + integrity sha512-ej5oVy6lykXsvieQtqZxCOaLT+xD4+QNarq78cIYISHmZXshCvROLudpQN3lfL8G0NL7plMSSK+zlyvCaIJ4Iw== "@design-systems/utils@2.12.0": - "integrity" "sha512-Y/d2Zzr+JJfN6u1gbuBUb1ufBuLMJJRZQk+dRmw8GaTpqKx5uf7cGUYGTwN02dIb3I+Tf+cW8jcGBTRiFxdYFg==" - "resolved" "https://registry.npmjs.org/@design-systems/utils/-/utils-2.12.0.tgz" - "version" "2.12.0" + version "2.12.0" + resolved "https://registry.npmjs.org/@design-systems/utils/-/utils-2.12.0.tgz" + integrity sha512-Y/d2Zzr+JJfN6u1gbuBUb1ufBuLMJJRZQk+dRmw8GaTpqKx5uf7cGUYGTwN02dIb3I+Tf+cW8jcGBTRiFxdYFg== dependencies: "@babel/runtime" "^7.11.2" - "clsx" "^1.0.4" - "focus-lock" "^0.8.0" - "react-merge-refs" "^1.0.0" + clsx "^1.0.4" + focus-lock "^0.8.0" + react-merge-refs "^1.0.0" "@devtools-ds/object-inspector@^1.1.2": - "integrity" "sha512-VztcwqVwScSvYdvJVZBJYsVO/2Pew3JPpFV3T9fuCHQLlHcLYOV3aU/kBS2ScuE2O1JN0ZbobLqFLa3vQF54Fw==" - "resolved" "https://registry.npmjs.org/@devtools-ds/object-inspector/-/object-inspector-1.2.0.tgz" - "version" "1.2.0" + version "1.2.0" + resolved "https://registry.npmjs.org/@devtools-ds/object-inspector/-/object-inspector-1.2.0.tgz" + integrity sha512-VztcwqVwScSvYdvJVZBJYsVO/2Pew3JPpFV3T9fuCHQLlHcLYOV3aU/kBS2ScuE2O1JN0ZbobLqFLa3vQF54Fw== dependencies: "@babel/runtime" "7.7.2" "@devtools-ds/object-parser" "^1.2.0" "@devtools-ds/themes" "^1.2.0" "@devtools-ds/tree" "^1.2.0" - "clsx" "1.1.0" + clsx "1.1.0" "@devtools-ds/object-parser@^1.2.0": - "integrity" "sha512-SjGGyiFFY8dtUpiWXAvRSzRT+hE11EAAysrq2PsC/GVLf2ZLyT2nHlQO5kDStywyTz+fjw7S7pyDRj1HG9YTTA==" - "resolved" "https://registry.npmjs.org/@devtools-ds/object-parser/-/object-parser-1.2.0.tgz" - "version" "1.2.0" + version "1.2.0" + resolved "https://registry.npmjs.org/@devtools-ds/object-parser/-/object-parser-1.2.0.tgz" + integrity sha512-SjGGyiFFY8dtUpiWXAvRSzRT+hE11EAAysrq2PsC/GVLf2ZLyT2nHlQO5kDStywyTz+fjw7S7pyDRj1HG9YTTA== dependencies: "@babel/runtime" "~7.5.4" "@devtools-ds/themes@^1.2.0": - "integrity" "sha512-LimEITorE6yWZWWuMc6OiBfLQgPrQqWbyMEmfRUDPa3PHXoAY4SpDxczfg31fgyRDUNWnZhjaJH5bBbu8VEbIw==" - "resolved" "https://registry.npmjs.org/@devtools-ds/themes/-/themes-1.2.0.tgz" - "version" "1.2.0" + version "1.2.0" + resolved "https://registry.npmjs.org/@devtools-ds/themes/-/themes-1.2.0.tgz" + integrity sha512-LimEITorE6yWZWWuMc6OiBfLQgPrQqWbyMEmfRUDPa3PHXoAY4SpDxczfg31fgyRDUNWnZhjaJH5bBbu8VEbIw== dependencies: "@babel/runtime" "~7.5.4" "@design-systems/utils" "2.12.0" - "clsx" "1.1.0" + clsx "1.1.0" "@devtools-ds/tree@^1.2.0": - "integrity" "sha512-hC4g4ocuo2eg7jsnzKdauxH0sDQiPW3KSM2+uK3kRgcmr9PzpBD5Kob+Y/WFSVKswFleftOGKL4BQLuRv0sPxA==" - "resolved" "https://registry.npmjs.org/@devtools-ds/tree/-/tree-1.2.0.tgz" - "version" "1.2.0" + version "1.2.0" + resolved "https://registry.npmjs.org/@devtools-ds/tree/-/tree-1.2.0.tgz" + integrity sha512-hC4g4ocuo2eg7jsnzKdauxH0sDQiPW3KSM2+uK3kRgcmr9PzpBD5Kob+Y/WFSVKswFleftOGKL4BQLuRv0sPxA== dependencies: "@babel/runtime" "7.7.2" "@devtools-ds/themes" "^1.2.0" - "clsx" "1.1.0" + clsx "1.1.0" "@discoveryjs/json-ext@^0.5.3": - "integrity" "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==" - "resolved" "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz" - "version" "0.5.7" + version "0.5.7" + resolved "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz" + integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== "@emotion/hash@^0.8.0": - "integrity" "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==" - "resolved" "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz" - "version" "0.8.0" + version "0.8.0" + resolved "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz" + integrity sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow== "@eslint/eslintrc@^1.3.3": - "integrity" "sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==" - "resolved" "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz" - "version" "1.3.3" + version "1.3.3" + resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz" + 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" + 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" "@fortawesome/fontawesome-common-types@6.2.1": - "integrity" "sha512-Sz07mnQrTekFWLz5BMjOzHl/+NooTdW8F8kDQxjWwbpOJcnoSg4vUDng8d/WR1wOxM0O+CY9Zw0nR054riNYtQ==" - "resolved" "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.2.1.tgz" - "version" "6.2.1" + version "6.2.1" + resolved "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.2.1.tgz" + integrity sha512-Sz07mnQrTekFWLz5BMjOzHl/+NooTdW8F8kDQxjWwbpOJcnoSg4vUDng8d/WR1wOxM0O+CY9Zw0nR054riNYtQ== -"@fortawesome/fontawesome-svg-core@^6.1.2", "@fortawesome/fontawesome-svg-core@~1 || ~6": - "integrity" "sha512-HELwwbCz6C1XEcjzyT1Jugmz2NNklMrSPjZOWMlc+ZsHIVk+XOvOXLGGQtFBwSyqfJDNgRq4xBCwWOaZ/d9DEA==" - "resolved" "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.2.1.tgz" - "version" "6.2.1" +"@fortawesome/fontawesome-svg-core@^6.1.2": + version "6.2.1" + resolved "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.2.1.tgz" + integrity sha512-HELwwbCz6C1XEcjzyT1Jugmz2NNklMrSPjZOWMlc+ZsHIVk+XOvOXLGGQtFBwSyqfJDNgRq4xBCwWOaZ/d9DEA== dependencies: "@fortawesome/fontawesome-common-types" "6.2.1" "@fortawesome/free-solid-svg-icons@^6.1.2": - "integrity" "sha512-oKuqrP5jbfEPJWTij4sM+/RvgX+RMFwx3QZCZcK9PrBDgxC35zuc7AOFsyMjMd/PIFPeB2JxyqDr5zs/DZFPPw==" - "resolved" "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.2.1.tgz" - "version" "6.2.1" + version "6.2.1" + resolved "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.2.1.tgz" + integrity sha512-oKuqrP5jbfEPJWTij4sM+/RvgX+RMFwx3QZCZcK9PrBDgxC35zuc7AOFsyMjMd/PIFPeB2JxyqDr5zs/DZFPPw== dependencies: "@fortawesome/fontawesome-common-types" "6.2.1" "@fortawesome/react-fontawesome@^0.2.0": - "integrity" "sha512-uHg75Rb/XORTtVt7OS9WoK8uM276Ufi7gCzshVWkUJbHhh3svsUUeqXerrM96Wm7fRiDzfKRwSoahhMIkGAYHw==" - "resolved" "https://registry.npmjs.org/@fortawesome/react-fontawesome/-/react-fontawesome-0.2.0.tgz" - "version" "0.2.0" + version "0.2.0" + resolved "https://registry.npmjs.org/@fortawesome/react-fontawesome/-/react-fontawesome-0.2.0.tgz" + integrity sha512-uHg75Rb/XORTtVt7OS9WoK8uM276Ufi7gCzshVWkUJbHhh3svsUUeqXerrM96Wm7fRiDzfKRwSoahhMIkGAYHw== dependencies: - "prop-types" "^15.8.1" + prop-types "^15.8.1" -"@fullcalendar/core@~4.4.0", "@fullcalendar/core@4.4.2": - "integrity" "sha512-vq7KQGuAJ1ieFG5tUqwxwUwmXYtblFOTjHaLAVHo6iEPB52mS7DS45VJfkhaQmX4+5/+BHRpg82G1qkuAINwtg==" - "resolved" "https://registry.npmjs.org/@fullcalendar/core/-/core-4.4.2.tgz" - "version" "4.4.2" +"@fullcalendar/core@4.4.2", "@fullcalendar/core@~4.4.0": + version "4.4.2" + resolved "https://registry.npmjs.org/@fullcalendar/core/-/core-4.4.2.tgz" + integrity sha512-vq7KQGuAJ1ieFG5tUqwxwUwmXYtblFOTjHaLAVHo6iEPB52mS7DS45VJfkhaQmX4+5/+BHRpg82G1qkuAINwtg== -"@fullcalendar/daygrid@~4.4.0", "@fullcalendar/daygrid@4.4.2": - "integrity" "sha512-axjfMhxEXHShV3r2TZjf+2niJ1C6LdAxkHKmg7mVq4jXtUQHOldU5XsjV0v2lUAt1urJBFi2zajfK8798ukL3Q==" - "resolved" "https://registry.npmjs.org/@fullcalendar/daygrid/-/daygrid-4.4.2.tgz" - "version" "4.4.2" +"@fullcalendar/daygrid@4.4.2", "@fullcalendar/daygrid@~4.4.0": + version "4.4.2" + resolved "https://registry.npmjs.org/@fullcalendar/daygrid/-/daygrid-4.4.2.tgz" + integrity sha512-axjfMhxEXHShV3r2TZjf+2niJ1C6LdAxkHKmg7mVq4jXtUQHOldU5XsjV0v2lUAt1urJBFi2zajfK8798ukL3Q== "@fullcalendar/interaction@4.4.2": - "integrity" "sha512-3ItpGFnxcYQT4NClqhq93QTQwOI8x3mlMf5M4DgK5avVaSzpv9g8p+opqeotK2yzpFeINps06cuQyB1h7vcv1Q==" - "resolved" "https://registry.npmjs.org/@fullcalendar/interaction/-/interaction-4.4.2.tgz" - "version" "4.4.2" + version "4.4.2" + resolved "https://registry.npmjs.org/@fullcalendar/interaction/-/interaction-4.4.2.tgz" + integrity sha512-3ItpGFnxcYQT4NClqhq93QTQwOI8x3mlMf5M4DgK5avVaSzpv9g8p+opqeotK2yzpFeINps06cuQyB1h7vcv1Q== "@fullcalendar/list@4.4.2": - "integrity" "sha512-buhfd0w0PavH3EVZ6DR6kvjb+wPDe16XEpNcPkTpvIxnAziwGBvcUeHUBd9KvtEhOcvs9sAKoYKbU4xwHFK0Wg==" - "resolved" "https://registry.npmjs.org/@fullcalendar/list/-/list-4.4.2.tgz" - "version" "4.4.2" + version "4.4.2" + resolved "https://registry.npmjs.org/@fullcalendar/list/-/list-4.4.2.tgz" + integrity sha512-buhfd0w0PavH3EVZ6DR6kvjb+wPDe16XEpNcPkTpvIxnAziwGBvcUeHUBd9KvtEhOcvs9sAKoYKbU4xwHFK0Wg== "@fullcalendar/moment-timezone@4.4.2": - "integrity" "sha512-8CjGpBdrQqDh60y6BQJScR2OcCNghPrMFNXd5L9PkU6ktfoYJapTyPZNddCXPPFiPJJdEmarU+RxPxgkl/EP9g==" - "resolved" "https://registry.npmjs.org/@fullcalendar/moment-timezone/-/moment-timezone-4.4.2.tgz" - "version" "4.4.2" + version "4.4.2" + resolved "https://registry.npmjs.org/@fullcalendar/moment-timezone/-/moment-timezone-4.4.2.tgz" + integrity sha512-8CjGpBdrQqDh60y6BQJScR2OcCNghPrMFNXd5L9PkU6ktfoYJapTyPZNddCXPPFiPJJdEmarU+RxPxgkl/EP9g== "@fullcalendar/moment@4.4.2": - "integrity" "sha512-PBrjxxDEG3RO+8SOA3a1YA7yoGI3bgnltiGY3ehOtJwFIMsUQDSSr5aMoWyRpz7MXgp2YOQY5rzMEIp2A8eK9w==" - "resolved" "https://registry.npmjs.org/@fullcalendar/moment/-/moment-4.4.2.tgz" - "version" "4.4.2" + version "4.4.2" + resolved "https://registry.npmjs.org/@fullcalendar/moment/-/moment-4.4.2.tgz" + integrity sha512-PBrjxxDEG3RO+8SOA3a1YA7yoGI3bgnltiGY3ehOtJwFIMsUQDSSr5aMoWyRpz7MXgp2YOQY5rzMEIp2A8eK9w== "@fullcalendar/react@4.4.2": - "integrity" "sha512-CObyC53Ph2wer83XOm2ae7gEDP5YuENbycetnKgXPLrUVx94hxJGo+G8lZFI4LeUG1nkecfNCpazoa3+x0yKsQ==" - "resolved" "https://registry.npmjs.org/@fullcalendar/react/-/react-4.4.2.tgz" - "version" "4.4.2" + version "4.4.2" + resolved "https://registry.npmjs.org/@fullcalendar/react/-/react-4.4.2.tgz" + integrity sha512-CObyC53Ph2wer83XOm2ae7gEDP5YuENbycetnKgXPLrUVx94hxJGo+G8lZFI4LeUG1nkecfNCpazoa3+x0yKsQ== dependencies: "@fullcalendar/core" "~4.4.0" - "fast-deep-equal" "^2.0.1" + fast-deep-equal "^2.0.1" "@fullcalendar/timegrid@4.4.2": - "integrity" "sha512-M5an7qii8OUmI4ogY47k5pn2j/qUbLp6sa6Vo0gO182HR5pb9YtrEZnoQhnScok+I0BkDkLFzMQoiAMTjBm2PQ==" - "resolved" "https://registry.npmjs.org/@fullcalendar/timegrid/-/timegrid-4.4.2.tgz" - "version" "4.4.2" + version "4.4.2" + resolved "https://registry.npmjs.org/@fullcalendar/timegrid/-/timegrid-4.4.2.tgz" + integrity sha512-M5an7qii8OUmI4ogY47k5pn2j/qUbLp6sa6Vo0gO182HR5pb9YtrEZnoQhnScok+I0BkDkLFzMQoiAMTjBm2PQ== dependencies: "@fullcalendar/daygrid" "~4.4.0" "@gar/promisify@^1.0.1": - "integrity" "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==" - "resolved" "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz" - "version" "1.1.3" + version "1.1.3" + resolved "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz" + integrity sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw== "@hapi/address@2.x.x": - "integrity" "sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ==" - "resolved" "https://registry.npmjs.org/@hapi/address/-/address-2.1.4.tgz" - "version" "2.1.4" + version "2.1.4" + resolved "https://registry.npmjs.org/@hapi/address/-/address-2.1.4.tgz" + integrity sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ== "@hapi/bourne@1.x.x": - "integrity" "sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA==" - "resolved" "https://registry.npmjs.org/@hapi/bourne/-/bourne-1.3.2.tgz" - "version" "1.3.2" + version "1.3.2" + resolved "https://registry.npmjs.org/@hapi/bourne/-/bourne-1.3.2.tgz" + integrity sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA== -"@hapi/hoek@^8.3.0", "@hapi/hoek@8.x.x": - "integrity" "sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow==" - "resolved" "https://registry.npmjs.org/@hapi/hoek/-/hoek-8.5.1.tgz" - "version" "8.5.1" +"@hapi/hoek@8.x.x", "@hapi/hoek@^8.3.0": + version "8.5.1" + resolved "https://registry.npmjs.org/@hapi/hoek/-/hoek-8.5.1.tgz" + integrity sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow== "@hapi/joi@^15.0.0": - "integrity" "sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ==" - "resolved" "https://registry.npmjs.org/@hapi/joi/-/joi-15.1.1.tgz" - "version" "15.1.1" + version "15.1.1" + resolved "https://registry.npmjs.org/@hapi/joi/-/joi-15.1.1.tgz" + integrity sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ== dependencies: "@hapi/address" "2.x.x" "@hapi/bourne" "1.x.x" @@ -1942,115 +1916,115 @@ "@hapi/topo" "3.x.x" "@hapi/topo@3.x.x": - "integrity" "sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ==" - "resolved" "https://registry.npmjs.org/@hapi/topo/-/topo-3.1.6.tgz" - "version" "3.1.6" + version "3.1.6" + resolved "https://registry.npmjs.org/@hapi/topo/-/topo-3.1.6.tgz" + integrity sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ== dependencies: "@hapi/hoek" "^8.3.0" "@headlessui/react@^1.6.4": - "integrity" "sha512-D8n5yGCF3WIkPsjEYeM8knn9jQ70bigGGb5aUvN6y4BGxcT3OcOQOKcM3zRGllRCZCFxCZyQvYJF6ZE7bQUOyQ==" - "resolved" "https://registry.npmjs.org/@headlessui/react/-/react-1.7.4.tgz" - "version" "1.7.4" + version "1.7.4" + resolved "https://registry.npmjs.org/@headlessui/react/-/react-1.7.4.tgz" + integrity sha512-D8n5yGCF3WIkPsjEYeM8knn9jQ70bigGGb5aUvN6y4BGxcT3OcOQOKcM3zRGllRCZCFxCZyQvYJF6ZE7bQUOyQ== dependencies: - "client-only" "^0.0.1" + client-only "^0.0.1" "@heroicons/react@^1.0.6": - "integrity" "sha512-JJCXydOFWMDpCP4q13iEplA503MQO3xLoZiKum+955ZCtHINWnx26CUxVxxFQu/uLb4LW3ge15ZpzIkXKkJ8oQ==" - "resolved" "https://registry.npmjs.org/@heroicons/react/-/react-1.0.6.tgz" - "version" "1.0.6" + version "1.0.6" + resolved "https://registry.npmjs.org/@heroicons/react/-/react-1.0.6.tgz" + integrity sha512-JJCXydOFWMDpCP4q13iEplA503MQO3xLoZiKum+955ZCtHINWnx26CUxVxxFQu/uLb4LW3ge15ZpzIkXKkJ8oQ== "@humanwhocodes/config-array@^0.11.6": - "integrity" "sha512-kBbPWzN8oVMLb0hOUYXhmxggL/1cJE6ydvjDIGi9EnAGUyA7cLVKQg+d/Dsm+KZwx2czGHrCmMVLiyg8s5JPKw==" - "resolved" "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.7.tgz" - "version" "0.11.7" + version "0.11.7" + resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.7.tgz" + integrity sha512-kBbPWzN8oVMLb0hOUYXhmxggL/1cJE6ydvjDIGi9EnAGUyA7cLVKQg+d/Dsm+KZwx2czGHrCmMVLiyg8s5JPKw== dependencies: "@humanwhocodes/object-schema" "^1.2.1" - "debug" "^4.1.1" - "minimatch" "^3.0.5" + debug "^4.1.1" + minimatch "^3.0.5" "@humanwhocodes/module-importer@^1.0.1": - "integrity" "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==" - "resolved" "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz" - "version" "1.0.1" + version "1.0.1" + resolved "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz" + integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== "@humanwhocodes/object-schema@^1.2.1": - "integrity" "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==" - "resolved" "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz" - "version" "1.2.1" + version "1.2.1" + resolved "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz" + integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== "@iconscout/react-unicons@^1.1.5": - "integrity" "sha512-BnyVvBew7Vm1lvL8+qyqjchUbkVHlDyNAlN+r5b+0P0KrkQ66BHPBuJEJ2faT89L8qRu+TohE7dHMV+bndje3Q==" - "resolved" "https://registry.npmjs.org/@iconscout/react-unicons/-/react-unicons-1.1.6.tgz" - "version" "1.1.6" + version "1.1.6" + resolved "https://registry.npmjs.org/@iconscout/react-unicons/-/react-unicons-1.1.6.tgz" + integrity sha512-BnyVvBew7Vm1lvL8+qyqjchUbkVHlDyNAlN+r5b+0P0KrkQ66BHPBuJEJ2faT89L8qRu+TohE7dHMV+bndje3Q== dependencies: - "react" ">=15.0.0 <17.0.0" + react ">=15.0.0 <17.0.0" "@istanbuljs/load-nyc-config@^1.0.0": - "integrity" "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==" - "resolved" "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz" - "version" "1.1.0" + version "1.1.0" + resolved "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz" + integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== dependencies: - "camelcase" "^5.3.1" - "find-up" "^4.1.0" - "get-package-type" "^0.1.0" - "js-yaml" "^3.13.1" - "resolve-from" "^5.0.0" + camelcase "^5.3.1" + find-up "^4.1.0" + get-package-type "^0.1.0" + js-yaml "^3.13.1" + resolve-from "^5.0.0" "@istanbuljs/schema@^0.1.2", "@istanbuljs/schema@^0.1.3": - "integrity" "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==" - "resolved" "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz" - "version" "0.1.3" + version "0.1.3" + resolved "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz" + integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== "@jest/console@^24.9.0": - "integrity" "sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ==" - "resolved" "https://registry.npmjs.org/@jest/console/-/console-24.9.0.tgz" - "version" "24.9.0" + version "24.9.0" + resolved "https://registry.npmjs.org/@jest/console/-/console-24.9.0.tgz" + integrity sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ== dependencies: "@jest/source-map" "^24.9.0" - "chalk" "^2.0.1" - "slash" "^2.0.0" + chalk "^2.0.1" + slash "^2.0.0" "@jest/console@^26.6.2": - "integrity" "sha512-IY1R2i2aLsLr7Id3S6p2BA82GNWryt4oSvEXLAKc+L2zdi89dSkE8xC1C+0kpATG4JhBJREnQOH7/zmccM2B0g==" - "resolved" "https://registry.npmjs.org/@jest/console/-/console-26.6.2.tgz" - "version" "26.6.2" + version "26.6.2" + resolved "https://registry.npmjs.org/@jest/console/-/console-26.6.2.tgz" + integrity sha512-IY1R2i2aLsLr7Id3S6p2BA82GNWryt4oSvEXLAKc+L2zdi89dSkE8xC1C+0kpATG4JhBJREnQOH7/zmccM2B0g== dependencies: "@jest/types" "^26.6.2" "@types/node" "*" - "chalk" "^4.0.0" - "jest-message-util" "^26.6.2" - "jest-util" "^26.6.2" - "slash" "^3.0.0" + chalk "^4.0.0" + jest-message-util "^26.6.2" + jest-util "^26.6.2" + slash "^3.0.0" "@jest/console@^27.5.1": - "integrity" "sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==" - "resolved" "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz" - "version" "27.5.1" + version "27.5.1" + resolved "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz" + integrity sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg== dependencies: "@jest/types" "^27.5.1" "@types/node" "*" - "chalk" "^4.0.0" - "jest-message-util" "^27.5.1" - "jest-util" "^27.5.1" - "slash" "^3.0.0" + chalk "^4.0.0" + jest-message-util "^27.5.1" + jest-util "^27.5.1" + slash "^3.0.0" "@jest/console@^28.1.3": - "integrity" "sha512-QPAkP5EwKdK/bxIr6C1I4Vs0rm2nHiANzj/Z5X2JQkrZo6IqvC4ldZ9K95tF0HdidhA8Bo6egxSzUFPYKcEXLw==" - "resolved" "https://registry.npmjs.org/@jest/console/-/console-28.1.3.tgz" - "version" "28.1.3" + version "28.1.3" + resolved "https://registry.npmjs.org/@jest/console/-/console-28.1.3.tgz" + integrity sha512-QPAkP5EwKdK/bxIr6C1I4Vs0rm2nHiANzj/Z5X2JQkrZo6IqvC4ldZ9K95tF0HdidhA8Bo6egxSzUFPYKcEXLw== dependencies: "@jest/types" "^28.1.3" "@types/node" "*" - "chalk" "^4.0.0" - "jest-message-util" "^28.1.3" - "jest-util" "^28.1.3" - "slash" "^3.0.0" + chalk "^4.0.0" + jest-message-util "^28.1.3" + jest-util "^28.1.3" + slash "^3.0.0" "@jest/core@^27.5.1": - "integrity" "sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==" - "resolved" "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz" - "version" "27.5.1" + version "27.5.1" + resolved "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz" + integrity sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ== dependencies: "@jest/console" "^27.5.1" "@jest/reporters" "^27.5.1" @@ -2058,83 +2032,83 @@ "@jest/transform" "^27.5.1" "@jest/types" "^27.5.1" "@types/node" "*" - "ansi-escapes" "^4.2.1" - "chalk" "^4.0.0" - "emittery" "^0.8.1" - "exit" "^0.1.2" - "graceful-fs" "^4.2.9" - "jest-changed-files" "^27.5.1" - "jest-config" "^27.5.1" - "jest-haste-map" "^27.5.1" - "jest-message-util" "^27.5.1" - "jest-regex-util" "^27.5.1" - "jest-resolve" "^27.5.1" - "jest-resolve-dependencies" "^27.5.1" - "jest-runner" "^27.5.1" - "jest-runtime" "^27.5.1" - "jest-snapshot" "^27.5.1" - "jest-util" "^27.5.1" - "jest-validate" "^27.5.1" - "jest-watcher" "^27.5.1" - "micromatch" "^4.0.4" - "rimraf" "^3.0.0" - "slash" "^3.0.0" - "strip-ansi" "^6.0.0" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + emittery "^0.8.1" + exit "^0.1.2" + graceful-fs "^4.2.9" + jest-changed-files "^27.5.1" + jest-config "^27.5.1" + jest-haste-map "^27.5.1" + jest-message-util "^27.5.1" + jest-regex-util "^27.5.1" + jest-resolve "^27.5.1" + jest-resolve-dependencies "^27.5.1" + jest-runner "^27.5.1" + jest-runtime "^27.5.1" + jest-snapshot "^27.5.1" + jest-util "^27.5.1" + jest-validate "^27.5.1" + jest-watcher "^27.5.1" + micromatch "^4.0.4" + rimraf "^3.0.0" + slash "^3.0.0" + strip-ansi "^6.0.0" "@jest/environment@^24.3.0": - "integrity" "sha512-5A1QluTPhvdIPFYnO3sZC3smkNeXPVELz7ikPbhUj0bQjB07EoE9qtLrem14ZUYWdVayYbsjVwIiL4WBIMV4aQ==" - "resolved" "https://registry.npmjs.org/@jest/environment/-/environment-24.9.0.tgz" - "version" "24.9.0" + version "24.9.0" + resolved "https://registry.npmjs.org/@jest/environment/-/environment-24.9.0.tgz" + integrity sha512-5A1QluTPhvdIPFYnO3sZC3smkNeXPVELz7ikPbhUj0bQjB07EoE9qtLrem14ZUYWdVayYbsjVwIiL4WBIMV4aQ== dependencies: "@jest/fake-timers" "^24.9.0" "@jest/transform" "^24.9.0" "@jest/types" "^24.9.0" - "jest-mock" "^24.9.0" + jest-mock "^24.9.0" "@jest/environment@^27.5.1": - "integrity" "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==" - "resolved" "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz" - "version" "27.5.1" + version "27.5.1" + resolved "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz" + integrity sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA== dependencies: "@jest/fake-timers" "^27.5.1" "@jest/types" "^27.5.1" "@types/node" "*" - "jest-mock" "^27.5.1" + jest-mock "^27.5.1" "@jest/fake-timers@^24.3.0", "@jest/fake-timers@^24.9.0": - "integrity" "sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A==" - "resolved" "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-24.9.0.tgz" - "version" "24.9.0" + version "24.9.0" + resolved "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-24.9.0.tgz" + integrity sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A== dependencies: "@jest/types" "^24.9.0" - "jest-message-util" "^24.9.0" - "jest-mock" "^24.9.0" + jest-message-util "^24.9.0" + jest-mock "^24.9.0" "@jest/fake-timers@^27.5.1": - "integrity" "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==" - "resolved" "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz" - "version" "27.5.1" + version "27.5.1" + resolved "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz" + integrity sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ== dependencies: "@jest/types" "^27.5.1" "@sinonjs/fake-timers" "^8.0.1" "@types/node" "*" - "jest-message-util" "^27.5.1" - "jest-mock" "^27.5.1" - "jest-util" "^27.5.1" + jest-message-util "^27.5.1" + jest-mock "^27.5.1" + jest-util "^27.5.1" "@jest/globals@^27.5.1": - "integrity" "sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==" - "resolved" "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz" - "version" "27.5.1" + version "27.5.1" + resolved "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz" + integrity sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q== dependencies: "@jest/environment" "^27.5.1" "@jest/types" "^27.5.1" - "expect" "^27.5.1" + expect "^27.5.1" "@jest/reporters@^27.5.1": - "integrity" "sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==" - "resolved" "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz" - "version" "27.5.1" + version "27.5.1" + resolved "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz" + integrity sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw== dependencies: "@bcoe/v8-coverage" "^0.2.3" "@jest/console" "^27.5.1" @@ -2142,282 +2116,282 @@ "@jest/transform" "^27.5.1" "@jest/types" "^27.5.1" "@types/node" "*" - "chalk" "^4.0.0" - "collect-v8-coverage" "^1.0.0" - "exit" "^0.1.2" - "glob" "^7.1.2" - "graceful-fs" "^4.2.9" - "istanbul-lib-coverage" "^3.0.0" - "istanbul-lib-instrument" "^5.1.0" - "istanbul-lib-report" "^3.0.0" - "istanbul-lib-source-maps" "^4.0.0" - "istanbul-reports" "^3.1.3" - "jest-haste-map" "^27.5.1" - "jest-resolve" "^27.5.1" - "jest-util" "^27.5.1" - "jest-worker" "^27.5.1" - "slash" "^3.0.0" - "source-map" "^0.6.0" - "string-length" "^4.0.1" - "terminal-link" "^2.0.0" - "v8-to-istanbul" "^8.1.0" + chalk "^4.0.0" + collect-v8-coverage "^1.0.0" + exit "^0.1.2" + glob "^7.1.2" + graceful-fs "^4.2.9" + istanbul-lib-coverage "^3.0.0" + istanbul-lib-instrument "^5.1.0" + istanbul-lib-report "^3.0.0" + istanbul-lib-source-maps "^4.0.0" + istanbul-reports "^3.1.3" + jest-haste-map "^27.5.1" + jest-resolve "^27.5.1" + jest-util "^27.5.1" + jest-worker "^27.5.1" + slash "^3.0.0" + source-map "^0.6.0" + string-length "^4.0.1" + terminal-link "^2.0.0" + v8-to-istanbul "^8.1.0" "@jest/schemas@^28.1.3": - "integrity" "sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==" - "resolved" "https://registry.npmjs.org/@jest/schemas/-/schemas-28.1.3.tgz" - "version" "28.1.3" + version "28.1.3" + resolved "https://registry.npmjs.org/@jest/schemas/-/schemas-28.1.3.tgz" + integrity sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg== dependencies: "@sinclair/typebox" "^0.24.1" "@jest/source-map@^24.9.0": - "integrity" "sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg==" - "resolved" "https://registry.npmjs.org/@jest/source-map/-/source-map-24.9.0.tgz" - "version" "24.9.0" + version "24.9.0" + resolved "https://registry.npmjs.org/@jest/source-map/-/source-map-24.9.0.tgz" + integrity sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg== dependencies: - "callsites" "^3.0.0" - "graceful-fs" "^4.1.15" - "source-map" "^0.6.0" + callsites "^3.0.0" + graceful-fs "^4.1.15" + source-map "^0.6.0" "@jest/source-map@^27.5.1": - "integrity" "sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==" - "resolved" "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz" - "version" "27.5.1" + version "27.5.1" + resolved "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz" + integrity sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg== dependencies: - "callsites" "^3.0.0" - "graceful-fs" "^4.2.9" - "source-map" "^0.6.0" + callsites "^3.0.0" + graceful-fs "^4.2.9" + source-map "^0.6.0" "@jest/test-result@^24.9.0": - "integrity" "sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA==" - "resolved" "https://registry.npmjs.org/@jest/test-result/-/test-result-24.9.0.tgz" - "version" "24.9.0" + version "24.9.0" + resolved "https://registry.npmjs.org/@jest/test-result/-/test-result-24.9.0.tgz" + integrity sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA== dependencies: "@jest/console" "^24.9.0" "@jest/types" "^24.9.0" "@types/istanbul-lib-coverage" "^2.0.0" "@jest/test-result@^26.6.2": - "integrity" "sha512-5O7H5c/7YlojphYNrK02LlDIV2GNPYisKwHm2QTKjNZeEzezCbwYs9swJySv2UfPMyZ0VdsmMv7jIlD/IKYQpQ==" - "resolved" "https://registry.npmjs.org/@jest/test-result/-/test-result-26.6.2.tgz" - "version" "26.6.2" + version "26.6.2" + resolved "https://registry.npmjs.org/@jest/test-result/-/test-result-26.6.2.tgz" + integrity sha512-5O7H5c/7YlojphYNrK02LlDIV2GNPYisKwHm2QTKjNZeEzezCbwYs9swJySv2UfPMyZ0VdsmMv7jIlD/IKYQpQ== dependencies: "@jest/console" "^26.6.2" "@jest/types" "^26.6.2" "@types/istanbul-lib-coverage" "^2.0.0" - "collect-v8-coverage" "^1.0.0" + collect-v8-coverage "^1.0.0" "@jest/test-result@^27.5.1": - "integrity" "sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==" - "resolved" "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz" - "version" "27.5.1" + version "27.5.1" + resolved "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz" + integrity sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag== dependencies: "@jest/console" "^27.5.1" "@jest/types" "^27.5.1" "@types/istanbul-lib-coverage" "^2.0.0" - "collect-v8-coverage" "^1.0.0" + collect-v8-coverage "^1.0.0" "@jest/test-result@^28.1.3": - "integrity" "sha512-kZAkxnSE+FqE8YjW8gNuoVkkC9I7S1qmenl8sGcDOLropASP+BkcGKwhXoyqQuGOGeYY0y/ixjrd/iERpEXHNg==" - "resolved" "https://registry.npmjs.org/@jest/test-result/-/test-result-28.1.3.tgz" - "version" "28.1.3" + version "28.1.3" + resolved "https://registry.npmjs.org/@jest/test-result/-/test-result-28.1.3.tgz" + integrity sha512-kZAkxnSE+FqE8YjW8gNuoVkkC9I7S1qmenl8sGcDOLropASP+BkcGKwhXoyqQuGOGeYY0y/ixjrd/iERpEXHNg== dependencies: "@jest/console" "^28.1.3" "@jest/types" "^28.1.3" "@types/istanbul-lib-coverage" "^2.0.0" - "collect-v8-coverage" "^1.0.0" + collect-v8-coverage "^1.0.0" "@jest/test-sequencer@^27.5.1": - "integrity" "sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==" - "resolved" "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz" - "version" "27.5.1" + version "27.5.1" + resolved "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz" + integrity sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ== dependencies: "@jest/test-result" "^27.5.1" - "graceful-fs" "^4.2.9" - "jest-haste-map" "^27.5.1" - "jest-runtime" "^27.5.1" + graceful-fs "^4.2.9" + jest-haste-map "^27.5.1" + jest-runtime "^27.5.1" "@jest/transform@^24.9.0": - "integrity" "sha512-TcQUmyNRxV94S0QpMOnZl0++6RMiqpbH/ZMccFB/amku6Uwvyb1cjYX7xkp5nGNkbX4QPH/FcB6q1HBTHynLmQ==" - "resolved" "https://registry.npmjs.org/@jest/transform/-/transform-24.9.0.tgz" - "version" "24.9.0" + version "24.9.0" + resolved "https://registry.npmjs.org/@jest/transform/-/transform-24.9.0.tgz" + integrity sha512-TcQUmyNRxV94S0QpMOnZl0++6RMiqpbH/ZMccFB/amku6Uwvyb1cjYX7xkp5nGNkbX4QPH/FcB6q1HBTHynLmQ== dependencies: "@babel/core" "^7.1.0" "@jest/types" "^24.9.0" - "babel-plugin-istanbul" "^5.1.0" - "chalk" "^2.0.1" - "convert-source-map" "^1.4.0" - "fast-json-stable-stringify" "^2.0.0" - "graceful-fs" "^4.1.15" - "jest-haste-map" "^24.9.0" - "jest-regex-util" "^24.9.0" - "jest-util" "^24.9.0" - "micromatch" "^3.1.10" - "pirates" "^4.0.1" - "realpath-native" "^1.1.0" - "slash" "^2.0.0" - "source-map" "^0.6.1" - "write-file-atomic" "2.4.1" + babel-plugin-istanbul "^5.1.0" + chalk "^2.0.1" + convert-source-map "^1.4.0" + fast-json-stable-stringify "^2.0.0" + graceful-fs "^4.1.15" + jest-haste-map "^24.9.0" + jest-regex-util "^24.9.0" + jest-util "^24.9.0" + micromatch "^3.1.10" + pirates "^4.0.1" + realpath-native "^1.1.0" + slash "^2.0.0" + source-map "^0.6.1" + write-file-atomic "2.4.1" "@jest/transform@^26.6.2": - "integrity" "sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA==" - "resolved" "https://registry.npmjs.org/@jest/transform/-/transform-26.6.2.tgz" - "version" "26.6.2" + version "26.6.2" + resolved "https://registry.npmjs.org/@jest/transform/-/transform-26.6.2.tgz" + integrity sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA== dependencies: "@babel/core" "^7.1.0" "@jest/types" "^26.6.2" - "babel-plugin-istanbul" "^6.0.0" - "chalk" "^4.0.0" - "convert-source-map" "^1.4.0" - "fast-json-stable-stringify" "^2.0.0" - "graceful-fs" "^4.2.4" - "jest-haste-map" "^26.6.2" - "jest-regex-util" "^26.0.0" - "jest-util" "^26.6.2" - "micromatch" "^4.0.2" - "pirates" "^4.0.1" - "slash" "^3.0.0" - "source-map" "^0.6.1" - "write-file-atomic" "^3.0.0" + babel-plugin-istanbul "^6.0.0" + chalk "^4.0.0" + convert-source-map "^1.4.0" + fast-json-stable-stringify "^2.0.0" + graceful-fs "^4.2.4" + jest-haste-map "^26.6.2" + jest-regex-util "^26.0.0" + jest-util "^26.6.2" + micromatch "^4.0.2" + pirates "^4.0.1" + slash "^3.0.0" + source-map "^0.6.1" + write-file-atomic "^3.0.0" "@jest/transform@^27.5.1": - "integrity" "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==" - "resolved" "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz" - "version" "27.5.1" + version "27.5.1" + resolved "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz" + integrity sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw== dependencies: "@babel/core" "^7.1.0" "@jest/types" "^27.5.1" - "babel-plugin-istanbul" "^6.1.1" - "chalk" "^4.0.0" - "convert-source-map" "^1.4.0" - "fast-json-stable-stringify" "^2.0.0" - "graceful-fs" "^4.2.9" - "jest-haste-map" "^27.5.1" - "jest-regex-util" "^27.5.1" - "jest-util" "^27.5.1" - "micromatch" "^4.0.4" - "pirates" "^4.0.4" - "slash" "^3.0.0" - "source-map" "^0.6.1" - "write-file-atomic" "^3.0.0" + babel-plugin-istanbul "^6.1.1" + chalk "^4.0.0" + convert-source-map "^1.4.0" + fast-json-stable-stringify "^2.0.0" + graceful-fs "^4.2.9" + jest-haste-map "^27.5.1" + jest-regex-util "^27.5.1" + jest-util "^27.5.1" + micromatch "^4.0.4" + pirates "^4.0.4" + slash "^3.0.0" + source-map "^0.6.1" + write-file-atomic "^3.0.0" "@jest/types@^24.3.0", "@jest/types@^24.9.0": - "integrity" "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==" - "resolved" "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz" - "version" "24.9.0" + version "24.9.0" + resolved "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz" + integrity sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw== dependencies: "@types/istanbul-lib-coverage" "^2.0.0" "@types/istanbul-reports" "^1.1.1" "@types/yargs" "^13.0.0" "@jest/types@^25.5.0": - "integrity" "sha512-OXD0RgQ86Tu3MazKo8bnrkDRaDXXMGUqd+kTtLtK1Zb7CRzQcaSRPPPV37SvYTdevXEBVxe0HXylEjs8ibkmCw==" - "resolved" "https://registry.npmjs.org/@jest/types/-/types-25.5.0.tgz" - "version" "25.5.0" + version "25.5.0" + resolved "https://registry.npmjs.org/@jest/types/-/types-25.5.0.tgz" + integrity sha512-OXD0RgQ86Tu3MazKo8bnrkDRaDXXMGUqd+kTtLtK1Zb7CRzQcaSRPPPV37SvYTdevXEBVxe0HXylEjs8ibkmCw== dependencies: "@types/istanbul-lib-coverage" "^2.0.0" "@types/istanbul-reports" "^1.1.1" "@types/yargs" "^15.0.0" - "chalk" "^3.0.0" + chalk "^3.0.0" "@jest/types@^26.6.2": - "integrity" "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==" - "resolved" "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz" - "version" "26.6.2" + version "26.6.2" + resolved "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz" + integrity sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ== dependencies: "@types/istanbul-lib-coverage" "^2.0.0" "@types/istanbul-reports" "^3.0.0" "@types/node" "*" "@types/yargs" "^15.0.0" - "chalk" "^4.0.0" + chalk "^4.0.0" "@jest/types@^27.5.1": - "integrity" "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==" - "resolved" "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz" - "version" "27.5.1" + version "27.5.1" + resolved "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz" + integrity sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw== dependencies: "@types/istanbul-lib-coverage" "^2.0.0" "@types/istanbul-reports" "^3.0.0" "@types/node" "*" "@types/yargs" "^16.0.0" - "chalk" "^4.0.0" + chalk "^4.0.0" "@jest/types@^28.1.3": - "integrity" "sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==" - "resolved" "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz" - "version" "28.1.3" + version "28.1.3" + resolved "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz" + integrity sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ== dependencies: "@jest/schemas" "^28.1.3" "@types/istanbul-lib-coverage" "^2.0.0" "@types/istanbul-reports" "^3.0.0" "@types/node" "*" "@types/yargs" "^17.0.8" - "chalk" "^4.0.0" + chalk "^4.0.0" "@jridgewell/gen-mapping@^0.1.0": - "integrity" "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==" - "resolved" "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz" - "version" "0.1.1" + version "0.1.1" + resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz" + integrity sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w== dependencies: "@jridgewell/set-array" "^1.0.0" "@jridgewell/sourcemap-codec" "^1.4.10" "@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": - "integrity" "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==" - "resolved" "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz" - "version" "0.3.2" + version "0.3.2" + resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz" + integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A== dependencies: "@jridgewell/set-array" "^1.0.1" "@jridgewell/sourcemap-codec" "^1.4.10" "@jridgewell/trace-mapping" "^0.3.9" -"@jridgewell/resolve-uri@^3.0.3", "@jridgewell/resolve-uri@3.1.0": - "integrity" "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==" - "resolved" "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz" - "version" "3.1.0" +"@jridgewell/resolve-uri@3.1.0", "@jridgewell/resolve-uri@^3.0.3": + version "3.1.0" + resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz" + integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== "@jridgewell/set-array@^1.0.0", "@jridgewell/set-array@^1.0.1": - "integrity" "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==" - "resolved" "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz" - "version" "1.1.2" + version "1.1.2" + resolved "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz" + integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== "@jridgewell/source-map@^0.3.2": - "integrity" "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==" - "resolved" "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz" - "version" "0.3.2" + version "0.3.2" + resolved "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz" + integrity sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw== dependencies: "@jridgewell/gen-mapping" "^0.3.0" "@jridgewell/trace-mapping" "^0.3.9" -"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@1.4.14": - "integrity" "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" - "resolved" "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz" - "version" "1.4.14" - -"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.14", "@jridgewell/trace-mapping@^0.3.9": - "integrity" "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==" - "resolved" "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz" - "version" "0.3.17" - dependencies: - "@jridgewell/resolve-uri" "3.1.0" - "@jridgewell/sourcemap-codec" "1.4.14" +"@jridgewell/sourcemap-codec@1.4.14", "@jridgewell/sourcemap-codec@^1.4.10": + version "1.4.14" + resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz" + integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== "@jridgewell/trace-mapping@0.3.9": - "integrity" "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==" - "resolved" "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz" - "version" "0.3.9" + version "0.3.9" + resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz" + integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== dependencies: "@jridgewell/resolve-uri" "^3.0.3" "@jridgewell/sourcemap-codec" "^1.4.10" -"@leichtgewicht/ip-codec@^2.0.1": - "integrity" "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==" - "resolved" "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz" - "version" "2.0.4" +"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.14", "@jridgewell/trace-mapping@^0.3.9": + version "0.3.17" + resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz" + integrity sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g== + dependencies: + "@jridgewell/resolve-uri" "3.1.0" + "@jridgewell/sourcemap-codec" "1.4.14" -"@material-ui/core@^4.0.0", "@material-ui/core@^4.11.0": - "integrity" "sha512-tr7xekNlM9LjA6pagJmL8QCgZXaubWUwkJnoYcMKd4gw/t4XiyvnTkjdGrUVicyB2BsdaAv1tvow45bPM4sSwQ==" - "resolved" "https://registry.npmjs.org/@material-ui/core/-/core-4.12.4.tgz" - "version" "4.12.4" +"@leichtgewicht/ip-codec@^2.0.1": + version "2.0.4" + resolved "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz" + integrity sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A== + +"@material-ui/core@^4.11.0": + version "4.12.4" + resolved "https://registry.npmjs.org/@material-ui/core/-/core-4.12.4.tgz" + integrity sha512-tr7xekNlM9LjA6pagJmL8QCgZXaubWUwkJnoYcMKd4gw/t4XiyvnTkjdGrUVicyB2BsdaAv1tvow45bPM4sSwQ== dependencies: "@babel/runtime" "^7.4.4" "@material-ui/styles" "^4.11.5" @@ -2425,335 +2399,335 @@ "@material-ui/types" "5.1.0" "@material-ui/utils" "^4.11.3" "@types/react-transition-group" "^4.2.0" - "clsx" "^1.0.4" - "hoist-non-react-statics" "^3.3.2" - "popper.js" "1.16.1-lts" - "prop-types" "^15.7.2" - "react-is" "^16.8.0 || ^17.0.0" - "react-transition-group" "^4.4.0" + clsx "^1.0.4" + hoist-non-react-statics "^3.3.2" + popper.js "1.16.1-lts" + prop-types "^15.7.2" + react-is "^16.8.0 || ^17.0.0" + react-transition-group "^4.4.0" "@material-ui/icons@^4.9.1": - "integrity" "sha512-IKHlyx6LDh8n19vzwH5RtHIOHl9Tu90aAAxcbWME6kp4dmvODM3UvOHJeMIDzUbd4muuJKHmlNoBN+mDY4XkBA==" - "resolved" "https://registry.npmjs.org/@material-ui/icons/-/icons-4.11.3.tgz" - "version" "4.11.3" + version "4.11.3" + resolved "https://registry.npmjs.org/@material-ui/icons/-/icons-4.11.3.tgz" + integrity sha512-IKHlyx6LDh8n19vzwH5RtHIOHl9Tu90aAAxcbWME6kp4dmvODM3UvOHJeMIDzUbd4muuJKHmlNoBN+mDY4XkBA== dependencies: "@babel/runtime" "^7.4.4" "@material-ui/styles@^4.10.0", "@material-ui/styles@^4.11.5": - "integrity" "sha512-o/41ot5JJiUsIETME9wVLAJrmIWL3j0R0Bj2kCOLbSfqEkKf0fmaPt+5vtblUh5eXr2S+J/8J3DaCb10+CzPGA==" - "resolved" "https://registry.npmjs.org/@material-ui/styles/-/styles-4.11.5.tgz" - "version" "4.11.5" + version "4.11.5" + resolved "https://registry.npmjs.org/@material-ui/styles/-/styles-4.11.5.tgz" + integrity sha512-o/41ot5JJiUsIETME9wVLAJrmIWL3j0R0Bj2kCOLbSfqEkKf0fmaPt+5vtblUh5eXr2S+J/8J3DaCb10+CzPGA== dependencies: "@babel/runtime" "^7.4.4" "@emotion/hash" "^0.8.0" "@material-ui/types" "5.1.0" "@material-ui/utils" "^4.11.3" - "clsx" "^1.0.4" - "csstype" "^2.5.2" - "hoist-non-react-statics" "^3.3.2" - "jss" "^10.5.1" - "jss-plugin-camel-case" "^10.5.1" - "jss-plugin-default-unit" "^10.5.1" - "jss-plugin-global" "^10.5.1" - "jss-plugin-nested" "^10.5.1" - "jss-plugin-props-sort" "^10.5.1" - "jss-plugin-rule-value-function" "^10.5.1" - "jss-plugin-vendor-prefixer" "^10.5.1" - "prop-types" "^15.7.2" + clsx "^1.0.4" + csstype "^2.5.2" + hoist-non-react-statics "^3.3.2" + jss "^10.5.1" + jss-plugin-camel-case "^10.5.1" + jss-plugin-default-unit "^10.5.1" + jss-plugin-global "^10.5.1" + jss-plugin-nested "^10.5.1" + jss-plugin-props-sort "^10.5.1" + jss-plugin-rule-value-function "^10.5.1" + jss-plugin-vendor-prefixer "^10.5.1" + prop-types "^15.7.2" "@material-ui/system@^4.12.2": - "integrity" "sha512-6CSKu2MtmiJgcCGf6nBQpM8fLkuB9F55EKfbdTC80NND5wpTmKzwdhLYLH3zL4cLlK0gVaaltW7/wMuyTnN0Lw==" - "resolved" "https://registry.npmjs.org/@material-ui/system/-/system-4.12.2.tgz" - "version" "4.12.2" + version "4.12.2" + resolved "https://registry.npmjs.org/@material-ui/system/-/system-4.12.2.tgz" + integrity sha512-6CSKu2MtmiJgcCGf6nBQpM8fLkuB9F55EKfbdTC80NND5wpTmKzwdhLYLH3zL4cLlK0gVaaltW7/wMuyTnN0Lw== dependencies: "@babel/runtime" "^7.4.4" "@material-ui/utils" "^4.11.3" - "csstype" "^2.5.2" - "prop-types" "^15.7.2" + csstype "^2.5.2" + prop-types "^15.7.2" "@material-ui/types@5.1.0": - "integrity" "sha512-7cqRjrY50b8QzRSYyhSpx4WRw2YuO0KKIGQEVk5J8uoz2BanawykgZGoWEqKm7pVIbzFDN0SpPcVV4IhOFkl8A==" - "resolved" "https://registry.npmjs.org/@material-ui/types/-/types-5.1.0.tgz" - "version" "5.1.0" + version "5.1.0" + resolved "https://registry.npmjs.org/@material-ui/types/-/types-5.1.0.tgz" + integrity sha512-7cqRjrY50b8QzRSYyhSpx4WRw2YuO0KKIGQEVk5J8uoz2BanawykgZGoWEqKm7pVIbzFDN0SpPcVV4IhOFkl8A== "@material-ui/utils@^4.11.3": - "integrity" "sha512-ZuQPV4rBK/V1j2dIkSSEcH5uT6AaHuKWFfotADHsC0wVL1NLd2WkFCm4ZZbX33iO4ydl6V0GPngKm8HZQ2oujg==" - "resolved" "https://registry.npmjs.org/@material-ui/utils/-/utils-4.11.3.tgz" - "version" "4.11.3" + version "4.11.3" + resolved "https://registry.npmjs.org/@material-ui/utils/-/utils-4.11.3.tgz" + integrity sha512-ZuQPV4rBK/V1j2dIkSSEcH5uT6AaHuKWFfotADHsC0wVL1NLd2WkFCm4ZZbX33iO4ydl6V0GPngKm8HZQ2oujg== dependencies: "@babel/runtime" "^7.4.4" - "prop-types" "^15.7.2" - "react-is" "^16.8.0 || ^17.0.0" + prop-types "^15.7.2" + react-is "^16.8.0 || ^17.0.0" "@mdx-js/mdx@^1.6.22": - "integrity" "sha512-AMxuLxPz2j5/6TpF/XSdKpQP1NlG0z11dFOlq+2IP/lSgl11GY8ji6S/rgsViN/L0BDvHvUMruRb7ub+24LUYA==" - "resolved" "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-1.6.22.tgz" - "version" "1.6.22" + version "1.6.22" + resolved "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-1.6.22.tgz" + integrity sha512-AMxuLxPz2j5/6TpF/XSdKpQP1NlG0z11dFOlq+2IP/lSgl11GY8ji6S/rgsViN/L0BDvHvUMruRb7ub+24LUYA== dependencies: "@babel/core" "7.12.9" "@babel/plugin-syntax-jsx" "7.12.1" "@babel/plugin-syntax-object-rest-spread" "7.8.3" "@mdx-js/util" "1.6.22" - "babel-plugin-apply-mdx-type-prop" "1.6.22" - "babel-plugin-extract-import-names" "1.6.22" - "camelcase-css" "2.0.1" - "detab" "2.0.4" - "hast-util-raw" "6.0.1" - "lodash.uniq" "4.5.0" - "mdast-util-to-hast" "10.0.1" - "remark-footnotes" "2.0.0" - "remark-mdx" "1.6.22" - "remark-parse" "8.0.3" - "remark-squeeze-paragraphs" "4.0.0" - "style-to-object" "0.3.0" - "unified" "9.2.0" - "unist-builder" "2.0.3" - "unist-util-visit" "2.0.3" + babel-plugin-apply-mdx-type-prop "1.6.22" + babel-plugin-extract-import-names "1.6.22" + camelcase-css "2.0.1" + detab "2.0.4" + hast-util-raw "6.0.1" + lodash.uniq "4.5.0" + mdast-util-to-hast "10.0.1" + remark-footnotes "2.0.0" + remark-mdx "1.6.22" + remark-parse "8.0.3" + remark-squeeze-paragraphs "4.0.0" + style-to-object "0.3.0" + unified "9.2.0" + unist-builder "2.0.3" + unist-util-visit "2.0.3" "@mdx-js/react@^1.6.22": - "integrity" "sha512-TDoPum4SHdfPiGSAaRBw7ECyI8VaHpK8GJugbJIJuqyh6kzw9ZLJZW3HGL3NNrJGxcAixUvqROm+YuQOo5eXtg==" - "resolved" "https://registry.npmjs.org/@mdx-js/react/-/react-1.6.22.tgz" - "version" "1.6.22" + version "1.6.22" + resolved "https://registry.npmjs.org/@mdx-js/react/-/react-1.6.22.tgz" + integrity sha512-TDoPum4SHdfPiGSAaRBw7ECyI8VaHpK8GJugbJIJuqyh6kzw9ZLJZW3HGL3NNrJGxcAixUvqROm+YuQOo5eXtg== "@mdx-js/util@1.6.22": - "integrity" "sha512-H1rQc1ZOHANWBvPcW+JpGwr+juXSxM8Q8YCkm3GhZd8REu1fHR3z99CErO1p9pkcfcxZnMdIZdIsXkOHY0NilA==" - "resolved" "https://registry.npmjs.org/@mdx-js/util/-/util-1.6.22.tgz" - "version" "1.6.22" + version "1.6.22" + resolved "https://registry.npmjs.org/@mdx-js/util/-/util-1.6.22.tgz" + integrity sha512-H1rQc1ZOHANWBvPcW+JpGwr+juXSxM8Q8YCkm3GhZd8REu1fHR3z99CErO1p9pkcfcxZnMdIZdIsXkOHY0NilA== "@mrmlnc/readdir-enhanced@^2.2.1": - "integrity" "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==" - "resolved" "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz" - "version" "2.2.1" + version "2.2.1" + resolved "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz" + integrity sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g== dependencies: - "call-me-maybe" "^1.0.1" - "glob-to-regexp" "^0.3.0" + call-me-maybe "^1.0.1" + glob-to-regexp "^0.3.0" "@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1": - "integrity" "sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==" - "resolved" "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz" - "version" "5.1.1-v1" + version "5.1.1-v1" + resolved "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz" + integrity sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg== dependencies: - "eslint-scope" "5.1.1" + eslint-scope "5.1.1" "@nodelib/fs.scandir@2.1.5": - "integrity" "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==" - "resolved" "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz" - "version" "2.1.5" + version "2.1.5" + resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== dependencies: "@nodelib/fs.stat" "2.0.5" - "run-parallel" "^1.1.9" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== "@nodelib/fs.stat@^1.1.2": - "integrity" "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==" - "resolved" "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz" - "version" "1.1.3" - -"@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5": - "integrity" "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==" - "resolved" "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" - "version" "2.0.5" + version "1.1.3" + resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz" + integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== "@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": - "integrity" "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==" - "resolved" "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz" - "version" "1.2.8" + version "1.2.8" + resolved "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== dependencies: "@nodelib/fs.scandir" "2.1.5" - "fastq" "^1.6.0" + fastq "^1.6.0" "@npmcli/fs@^1.0.0": - "integrity" "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==" - "resolved" "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz" - "version" "1.1.1" + version "1.1.1" + resolved "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz" + integrity sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ== dependencies: "@gar/promisify" "^1.0.1" - "semver" "^7.3.5" + semver "^7.3.5" "@npmcli/move-file@^1.0.1": - "integrity" "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==" - "resolved" "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz" - "version" "1.1.2" + version "1.1.2" + resolved "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz" + integrity sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg== dependencies: - "mkdirp" "^1.0.4" - "rimraf" "^3.0.2" + mkdirp "^1.0.4" + rimraf "^3.0.2" "@paralleldrive/feature-toggles@^1.0.4": - "integrity" "sha512-TFKftasIaymFv7ZUWvdyZDSbaxYzhDH6hP5Rv+zfMThZxEsJqaVbw5oToyh1Y+A439f2z2XRHVUF/0lEKKGbVQ==" - "resolved" "https://registry.npmjs.org/@paralleldrive/feature-toggles/-/feature-toggles-1.0.4.tgz" - "version" "1.0.4" + version "1.0.4" + resolved "https://registry.npmjs.org/@paralleldrive/feature-toggles/-/feature-toggles-1.0.4.tgz" + integrity sha512-TFKftasIaymFv7ZUWvdyZDSbaxYzhDH6hP5Rv+zfMThZxEsJqaVbw5oToyh1Y+A439f2z2XRHVUF/0lEKKGbVQ== dependencies: - "lodash" "4.17.11" - "ramda" "0.26.1" - "url-parse" "1.4.4" + lodash "4.17.11" + ramda "0.26.1" + url-parse "1.4.4" "@paralleldrive/react-feature-toggles@^2.3.1": - "integrity" "sha512-GJbpD2R+h2s1SjlZgFGSlAMHSMJLJYuGk/0GMiVzubOchOun/dIZXp8HqYvNXvr4yOFU4Ocsgd8BgribBZIGrw==" - "resolved" "https://registry.npmjs.org/@paralleldrive/react-feature-toggles/-/react-feature-toggles-2.3.1.tgz" - "version" "2.3.1" + version "2.3.1" + resolved "https://registry.npmjs.org/@paralleldrive/react-feature-toggles/-/react-feature-toggles-2.3.1.tgz" + integrity sha512-GJbpD2R+h2s1SjlZgFGSlAMHSMJLJYuGk/0GMiVzubOchOun/dIZXp8HqYvNXvr4yOFU4Ocsgd8BgribBZIGrw== "@pmmmwh/react-refresh-webpack-plugin@^0.4.3": - "integrity" "sha512-br5Qwvh8D2OQqSXpd1g/xqXKnK0r+Jz6qVKBbWmpUcrbGOxUrf39V5oZ1876084CGn18uMdR5uvPqBv9UqtBjQ==" - "resolved" "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.4.3.tgz" - "version" "0.4.3" + version "0.4.3" + resolved "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.4.3.tgz" + integrity sha512-br5Qwvh8D2OQqSXpd1g/xqXKnK0r+Jz6qVKBbWmpUcrbGOxUrf39V5oZ1876084CGn18uMdR5uvPqBv9UqtBjQ== dependencies: - "ansi-html" "^0.0.7" - "error-stack-parser" "^2.0.6" - "html-entities" "^1.2.1" - "native-url" "^0.2.6" - "schema-utils" "^2.6.5" - "source-map" "^0.7.3" + ansi-html "^0.0.7" + error-stack-parser "^2.0.6" + html-entities "^1.2.1" + native-url "^0.2.6" + schema-utils "^2.6.5" + source-map "^0.7.3" "@pmmmwh/react-refresh-webpack-plugin@^0.5.1", "@pmmmwh/react-refresh-webpack-plugin@^0.5.3": - "integrity" "sha512-7QV4cqUwhkDIHpMAZ9mestSJ2DMIotVTbOUwbiudhjCRTAWWKIaBecELiEM2LT3AHFeOAaHIcFu4dbXjX+9GBA==" - "resolved" "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.9.tgz" - "version" "0.5.9" + version "0.5.9" + resolved "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.9.tgz" + integrity sha512-7QV4cqUwhkDIHpMAZ9mestSJ2DMIotVTbOUwbiudhjCRTAWWKIaBecELiEM2LT3AHFeOAaHIcFu4dbXjX+9GBA== dependencies: - "ansi-html-community" "^0.0.8" - "common-path-prefix" "^3.0.0" - "core-js-pure" "^3.23.3" - "error-stack-parser" "^2.0.6" - "find-up" "^5.0.0" - "html-entities" "^2.1.0" - "loader-utils" "^2.0.3" - "schema-utils" "^3.0.0" - "source-map" "^0.7.3" + ansi-html-community "^0.0.8" + common-path-prefix "^3.0.0" + core-js-pure "^3.23.3" + error-stack-parser "^2.0.6" + find-up "^5.0.0" + html-entities "^2.1.0" + loader-utils "^2.0.3" + schema-utils "^3.0.0" + source-map "^0.7.3" "@rc-component/portal@^1.0.0-6", "@rc-component/portal@^1.0.0-8", "@rc-component/portal@^1.0.2": - "integrity" "sha512-rG9j7OMiI9eLFLF6G0B4OcfLac9W8Z7Vjeizbjt/A6R+zzw7vhHbJ4GIkrDpUqXDvFdEEzdxfICpb8/noLwG+w==" - "resolved" "https://registry.npmjs.org/@rc-component/portal/-/portal-1.0.3.tgz" - "version" "1.0.3" + version "1.0.3" + resolved "https://registry.npmjs.org/@rc-component/portal/-/portal-1.0.3.tgz" + integrity sha512-rG9j7OMiI9eLFLF6G0B4OcfLac9W8Z7Vjeizbjt/A6R+zzw7vhHbJ4GIkrDpUqXDvFdEEzdxfICpb8/noLwG+w== dependencies: "@babel/runtime" "^7.18.0" - "classnames" "^2.3.2" - "rc-util" "^5.24.4" + classnames "^2.3.2" + rc-util "^5.24.4" "@rollup/plugin-babel@^5.2.0": - "integrity" "sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==" - "resolved" "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz" - "version" "5.3.1" + version "5.3.1" + resolved "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz" + integrity sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q== dependencies: "@babel/helper-module-imports" "^7.10.4" "@rollup/pluginutils" "^3.1.0" "@rollup/plugin-node-resolve@^11.2.1": - "integrity" "sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==" - "resolved" "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz" - "version" "11.2.1" + version "11.2.1" + resolved "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz" + integrity sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg== dependencies: "@rollup/pluginutils" "^3.1.0" "@types/resolve" "1.17.1" - "builtin-modules" "^3.1.0" - "deepmerge" "^4.2.2" - "is-module" "^1.0.0" - "resolve" "^1.19.0" + builtin-modules "^3.1.0" + deepmerge "^4.2.2" + is-module "^1.0.0" + resolve "^1.19.0" "@rollup/plugin-replace@^2.4.1": - "integrity" "sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==" - "resolved" "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz" - "version" "2.4.2" + version "2.4.2" + resolved "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz" + integrity sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg== dependencies: "@rollup/pluginutils" "^3.1.0" - "magic-string" "^0.25.7" + magic-string "^0.25.7" "@rollup/pluginutils@^3.1.0": - "integrity" "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==" - "resolved" "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz" - "version" "3.1.0" + version "3.1.0" + resolved "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz" + integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== dependencies: "@types/estree" "0.0.39" - "estree-walker" "^1.0.1" - "picomatch" "^2.2.2" + estree-walker "^1.0.1" + picomatch "^2.2.2" "@rushstack/eslint-patch@^1.1.0": - "integrity" "sha512-sXo/qW2/pAcmT43VoRKOJbDOfV3cYpq3szSVfIThQXNt+E4DfKj361vaAt3c88U5tPUxzEswam7GW48PJqtKAg==" - "resolved" "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.2.0.tgz" - "version" "1.2.0" + version "1.2.0" + resolved "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.2.0.tgz" + integrity sha512-sXo/qW2/pAcmT43VoRKOJbDOfV3cYpq3szSVfIThQXNt+E4DfKj361vaAt3c88U5tPUxzEswam7GW48PJqtKAg== "@sentry/browser@^5.19.0": - "integrity" "sha512-rOb58ZNVJWh1VuMuBG1mL9r54nZqKeaIlwSlvzJfc89vyfd7n6tQ1UXMN383QBz/MS5H5z44Hy5eE+7pCrYAfw==" - "resolved" "https://registry.npmjs.org/@sentry/browser/-/browser-5.30.0.tgz" - "version" "5.30.0" + version "5.30.0" + resolved "https://registry.npmjs.org/@sentry/browser/-/browser-5.30.0.tgz" + integrity sha512-rOb58ZNVJWh1VuMuBG1mL9r54nZqKeaIlwSlvzJfc89vyfd7n6tQ1UXMN383QBz/MS5H5z44Hy5eE+7pCrYAfw== dependencies: "@sentry/core" "5.30.0" "@sentry/types" "5.30.0" "@sentry/utils" "5.30.0" - "tslib" "^1.9.3" + tslib "^1.9.3" "@sentry/core@5.30.0": - "integrity" "sha512-TmfrII8w1PQZSZgPpUESqjB+jC6MvZJZdLtE/0hZ+SrnKhW3x5WlYLvTXZpcWePYBku7rl2wn1RZu6uT0qCTeg==" - "resolved" "https://registry.npmjs.org/@sentry/core/-/core-5.30.0.tgz" - "version" "5.30.0" + version "5.30.0" + resolved "https://registry.npmjs.org/@sentry/core/-/core-5.30.0.tgz" + integrity sha512-TmfrII8w1PQZSZgPpUESqjB+jC6MvZJZdLtE/0hZ+SrnKhW3x5WlYLvTXZpcWePYBku7rl2wn1RZu6uT0qCTeg== dependencies: "@sentry/hub" "5.30.0" "@sentry/minimal" "5.30.0" "@sentry/types" "5.30.0" "@sentry/utils" "5.30.0" - "tslib" "^1.9.3" + tslib "^1.9.3" "@sentry/hub@5.30.0": - "integrity" "sha512-2tYrGnzb1gKz2EkMDQcfLrDTvmGcQPuWxLnJKXJvYTQDGLlEvi2tWz1VIHjunmOvJrB5aIQLhm+dcMRwFZDCqQ==" - "resolved" "https://registry.npmjs.org/@sentry/hub/-/hub-5.30.0.tgz" - "version" "5.30.0" + version "5.30.0" + resolved "https://registry.npmjs.org/@sentry/hub/-/hub-5.30.0.tgz" + integrity sha512-2tYrGnzb1gKz2EkMDQcfLrDTvmGcQPuWxLnJKXJvYTQDGLlEvi2tWz1VIHjunmOvJrB5aIQLhm+dcMRwFZDCqQ== dependencies: "@sentry/types" "5.30.0" "@sentry/utils" "5.30.0" - "tslib" "^1.9.3" + tslib "^1.9.3" "@sentry/minimal@5.30.0": - "integrity" "sha512-BwWb/owZKtkDX+Sc4zCSTNcvZUq7YcH3uAVlmh/gtR9rmUvbzAA3ewLuB3myi4wWRAMEtny6+J/FN/x+2wn9Xw==" - "resolved" "https://registry.npmjs.org/@sentry/minimal/-/minimal-5.30.0.tgz" - "version" "5.30.0" + version "5.30.0" + resolved "https://registry.npmjs.org/@sentry/minimal/-/minimal-5.30.0.tgz" + integrity sha512-BwWb/owZKtkDX+Sc4zCSTNcvZUq7YcH3uAVlmh/gtR9rmUvbzAA3ewLuB3myi4wWRAMEtny6+J/FN/x+2wn9Xw== dependencies: "@sentry/hub" "5.30.0" "@sentry/types" "5.30.0" - "tslib" "^1.9.3" + tslib "^1.9.3" "@sentry/types@5.30.0": - "integrity" "sha512-R8xOqlSTZ+htqrfteCWU5Nk0CDN5ApUTvrlvBuiH1DyP6czDZ4ktbZB0hAgBlVcK0U+qpD3ag3Tqqpa5Q67rPw==" - "resolved" "https://registry.npmjs.org/@sentry/types/-/types-5.30.0.tgz" - "version" "5.30.0" + version "5.30.0" + resolved "https://registry.npmjs.org/@sentry/types/-/types-5.30.0.tgz" + integrity sha512-R8xOqlSTZ+htqrfteCWU5Nk0CDN5ApUTvrlvBuiH1DyP6czDZ4ktbZB0hAgBlVcK0U+qpD3ag3Tqqpa5Q67rPw== "@sentry/utils@5.30.0": - "integrity" "sha512-zaYmoH0NWWtvnJjC9/CBseXMtKHm/tm40sz3YfJRxeQjyzRqNQPgivpd9R/oDJCYj999mzdW382p/qi2ypjLww==" - "resolved" "https://registry.npmjs.org/@sentry/utils/-/utils-5.30.0.tgz" - "version" "5.30.0" + version "5.30.0" + resolved "https://registry.npmjs.org/@sentry/utils/-/utils-5.30.0.tgz" + integrity sha512-zaYmoH0NWWtvnJjC9/CBseXMtKHm/tm40sz3YfJRxeQjyzRqNQPgivpd9R/oDJCYj999mzdW382p/qi2ypjLww== dependencies: "@sentry/types" "5.30.0" - "tslib" "^1.9.3" + tslib "^1.9.3" "@sheerun/mutationobserver-shim@^0.3.2": - "integrity" "sha512-DetpxZw1fzPD5xUBrIAoplLChO2VB8DlL5Gg+I1IR9b2wPqYIca2WSUxL5g1vLeR4MsQq1NeWriXAVffV+U1Fw==" - "resolved" "https://registry.npmjs.org/@sheerun/mutationobserver-shim/-/mutationobserver-shim-0.3.3.tgz" - "version" "0.3.3" + version "0.3.3" + resolved "https://registry.npmjs.org/@sheerun/mutationobserver-shim/-/mutationobserver-shim-0.3.3.tgz" + integrity sha512-DetpxZw1fzPD5xUBrIAoplLChO2VB8DlL5Gg+I1IR9b2wPqYIca2WSUxL5g1vLeR4MsQq1NeWriXAVffV+U1Fw== "@sinclair/typebox@^0.24.1": - "integrity" "sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==" - "resolved" "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.51.tgz" - "version" "0.24.51" + version "0.24.51" + resolved "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.51.tgz" + integrity sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA== "@sindresorhus/is@^0.14.0": - "integrity" "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==" - "resolved" "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz" - "version" "0.14.0" + version "0.14.0" + resolved "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz" + integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== "@sinonjs/commons@^1.7.0": - "integrity" "sha512-rTpCA0wG1wUxglBSFdMMY0oTrKYvgf4fNgv/sXbfCVAdf+FnPBdKJR/7XbpTCwbCrvCbdPYnlWaUUYz4V2fPDA==" - "resolved" "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.5.tgz" - "version" "1.8.5" + version "1.8.5" + resolved "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.5.tgz" + integrity sha512-rTpCA0wG1wUxglBSFdMMY0oTrKYvgf4fNgv/sXbfCVAdf+FnPBdKJR/7XbpTCwbCrvCbdPYnlWaUUYz4V2fPDA== dependencies: - "type-detect" "4.0.8" + type-detect "4.0.8" "@sinonjs/fake-timers@^8.0.1": - "integrity" "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==" - "resolved" "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz" - "version" "8.1.0" + version "8.1.0" + resolved "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz" + integrity sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg== dependencies: "@sinonjs/commons" "^1.7.0" -"@storybook/addon-actions@=6.5.9", "@storybook/addon-actions@6.5.9": - "integrity" "sha512-wDYm3M1bN+zcYZV3Q24M03b/P8DDpvj1oSoY6VLlxDAi56h8qZB/voeIS2I6vWXOB79C5tbwljYNQO0GsufS0g==" - "resolved" "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-6.5.9.tgz" - "version" "6.5.9" +"@storybook/addon-actions@6.5.9", "@storybook/addon-actions@=6.5.9": + version "6.5.9" + resolved "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-6.5.9.tgz" + integrity sha512-wDYm3M1bN+zcYZV3Q24M03b/P8DDpvj1oSoY6VLlxDAi56h8qZB/voeIS2I6vWXOB79C5tbwljYNQO0GsufS0g== dependencies: "@storybook/addons" "6.5.9" "@storybook/api" "6.5.9" @@ -2762,23 +2736,23 @@ "@storybook/core-events" "6.5.9" "@storybook/csf" "0.0.2--canary.4566f4d.1" "@storybook/theming" "6.5.9" - "core-js" "^3.8.2" - "fast-deep-equal" "^3.1.3" - "global" "^4.4.0" - "lodash" "^4.17.21" - "polished" "^4.2.2" - "prop-types" "^15.7.2" - "react-inspector" "^5.1.0" - "regenerator-runtime" "^0.13.7" - "telejson" "^6.0.8" - "ts-dedent" "^2.0.0" - "util-deprecate" "^1.0.2" - "uuid-browser" "^3.1.0" + core-js "^3.8.2" + fast-deep-equal "^3.1.3" + global "^4.4.0" + lodash "^4.17.21" + polished "^4.2.2" + prop-types "^15.7.2" + react-inspector "^5.1.0" + regenerator-runtime "^0.13.7" + telejson "^6.0.8" + ts-dedent "^2.0.0" + util-deprecate "^1.0.2" + uuid-browser "^3.1.0" "@storybook/addon-backgrounds@6.5.9": - "integrity" "sha512-9k+GiY5aiANLOct34ar29jqgdi5ZpCqpZ86zPH0GsEC6ifH6nzP4trLU0vFUe260XDCvB4g8YaI7JZKPhozERg==" - "resolved" "https://registry.npmjs.org/@storybook/addon-backgrounds/-/addon-backgrounds-6.5.9.tgz" - "version" "6.5.9" + version "6.5.9" + resolved "https://registry.npmjs.org/@storybook/addon-backgrounds/-/addon-backgrounds-6.5.9.tgz" + integrity sha512-9k+GiY5aiANLOct34ar29jqgdi5ZpCqpZ86zPH0GsEC6ifH6nzP4trLU0vFUe260XDCvB4g8YaI7JZKPhozERg== dependencies: "@storybook/addons" "6.5.9" "@storybook/api" "6.5.9" @@ -2787,17 +2761,17 @@ "@storybook/core-events" "6.5.9" "@storybook/csf" "0.0.2--canary.4566f4d.1" "@storybook/theming" "6.5.9" - "core-js" "^3.8.2" - "global" "^4.4.0" - "memoizerific" "^1.11.3" - "regenerator-runtime" "^0.13.7" - "ts-dedent" "^2.0.0" - "util-deprecate" "^1.0.2" + core-js "^3.8.2" + global "^4.4.0" + memoizerific "^1.11.3" + regenerator-runtime "^0.13.7" + ts-dedent "^2.0.0" + util-deprecate "^1.0.2" "@storybook/addon-controls@6.5.9": - "integrity" "sha512-VvjkgK32bGURKyWU2No6Q2B0RQZjLZk8D3neVNCnrWxwrl1G82StegxjRPn/UZm9+MZVPvTvI46nj1VdgOktnw==" - "resolved" "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-6.5.9.tgz" - "version" "6.5.9" + version "6.5.9" + resolved "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-6.5.9.tgz" + integrity sha512-VvjkgK32bGURKyWU2No6Q2B0RQZjLZk8D3neVNCnrWxwrl1G82StegxjRPn/UZm9+MZVPvTvI46nj1VdgOktnw== dependencies: "@storybook/addons" "6.5.9" "@storybook/api" "6.5.9" @@ -2808,14 +2782,14 @@ "@storybook/node-logger" "6.5.9" "@storybook/store" "6.5.9" "@storybook/theming" "6.5.9" - "core-js" "^3.8.2" - "lodash" "^4.17.21" - "ts-dedent" "^2.0.0" + core-js "^3.8.2" + lodash "^4.17.21" + ts-dedent "^2.0.0" -"@storybook/addon-docs@=6.5.9", "@storybook/addon-docs@6.5.9": - "integrity" "sha512-9lwOZyiOJFUgGd9ADVfcgpels5o0XOXqGMeVLuzT1160nopbZjNjo/3+YLJ0pyHRPpMJ4rmq2+vxRQR6PVRgPg==" - "resolved" "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-6.5.9.tgz" - "version" "6.5.9" +"@storybook/addon-docs@6.5.9", "@storybook/addon-docs@=6.5.9": + version "6.5.9" + resolved "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-6.5.9.tgz" + integrity sha512-9lwOZyiOJFUgGd9ADVfcgpels5o0XOXqGMeVLuzT1160nopbZjNjo/3+YLJ0pyHRPpMJ4rmq2+vxRQR6PVRgPg== dependencies: "@babel/plugin-transform-react-jsx" "^7.12.12" "@babel/preset-env" "^7.12.11" @@ -2835,21 +2809,21 @@ "@storybook/source-loader" "6.5.9" "@storybook/store" "6.5.9" "@storybook/theming" "6.5.9" - "babel-loader" "^8.0.0" - "core-js" "^3.8.2" - "fast-deep-equal" "^3.1.3" - "global" "^4.4.0" - "lodash" "^4.17.21" - "regenerator-runtime" "^0.13.7" - "remark-external-links" "^8.0.0" - "remark-slug" "^6.0.0" - "ts-dedent" "^2.0.0" - "util-deprecate" "^1.0.2" + babel-loader "^8.0.0" + core-js "^3.8.2" + fast-deep-equal "^3.1.3" + global "^4.4.0" + lodash "^4.17.21" + regenerator-runtime "^0.13.7" + remark-external-links "^8.0.0" + remark-slug "^6.0.0" + ts-dedent "^2.0.0" + util-deprecate "^1.0.2" "@storybook/addon-essentials@=6.5.9": - "integrity" "sha512-V9ThjKQsde4A2Es20pLFBsn0MWx2KCJuoTcTsANP4JDcbvEmj8UjbDWbs8jAU+yzJT5r+CI6NoWmQudv12ZOgw==" - "resolved" "https://registry.npmjs.org/@storybook/addon-essentials/-/addon-essentials-6.5.9.tgz" - "version" "6.5.9" + version "6.5.9" + resolved "https://registry.npmjs.org/@storybook/addon-essentials/-/addon-essentials-6.5.9.tgz" + integrity sha512-V9ThjKQsde4A2Es20pLFBsn0MWx2KCJuoTcTsANP4JDcbvEmj8UjbDWbs8jAU+yzJT5r+CI6NoWmQudv12ZOgw== dependencies: "@storybook/addon-actions" "6.5.9" "@storybook/addon-backgrounds" "6.5.9" @@ -2863,14 +2837,14 @@ "@storybook/api" "6.5.9" "@storybook/core-common" "6.5.9" "@storybook/node-logger" "6.5.9" - "core-js" "^3.8.2" - "regenerator-runtime" "^0.13.7" - "ts-dedent" "^2.0.0" + core-js "^3.8.2" + regenerator-runtime "^0.13.7" + ts-dedent "^2.0.0" "@storybook/addon-interactions@=6.5.9": - "integrity" "sha512-p3xBbrhmYTHvRO8MqAIr2DucgrXt38nJE71rogLNLsJ01rUN4JsLI8OkQAMQbqfIpwC27irMjQxJTp4HSzkFJA==" - "resolved" "https://registry.npmjs.org/@storybook/addon-interactions/-/addon-interactions-6.5.9.tgz" - "version" "6.5.9" + version "6.5.9" + resolved "https://registry.npmjs.org/@storybook/addon-interactions/-/addon-interactions-6.5.9.tgz" + integrity sha512-p3xBbrhmYTHvRO8MqAIr2DucgrXt38nJE71rogLNLsJ01rUN4JsLI8OkQAMQbqfIpwC27irMjQxJTp4HSzkFJA== dependencies: "@devtools-ds/object-inspector" "^1.1.2" "@storybook/addons" "6.5.9" @@ -2882,16 +2856,16 @@ "@storybook/csf" "0.0.2--canary.4566f4d.1" "@storybook/instrumenter" "6.5.9" "@storybook/theming" "6.5.9" - "core-js" "^3.8.2" - "global" "^4.4.0" - "jest-mock" "^27.0.6" - "polished" "^4.2.2" - "ts-dedent" "^2.2.0" + core-js "^3.8.2" + global "^4.4.0" + jest-mock "^27.0.6" + polished "^4.2.2" + ts-dedent "^2.2.0" "@storybook/addon-links@=6.5.9": - "integrity" "sha512-4BYC7pkxL3NLRnEgTA9jpIkObQKril+XFj1WtmY/lngF90vvK0Kc/TtvTA2/5tSgrHfxEuPevIdxMIyLJ4ejWQ==" - "resolved" "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-6.5.9.tgz" - "version" "6.5.9" + version "6.5.9" + resolved "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-6.5.9.tgz" + integrity sha512-4BYC7pkxL3NLRnEgTA9jpIkObQKril+XFj1WtmY/lngF90vvK0Kc/TtvTA2/5tSgrHfxEuPevIdxMIyLJ4ejWQ== dependencies: "@storybook/addons" "6.5.9" "@storybook/client-logger" "6.5.9" @@ -2899,17 +2873,17 @@ "@storybook/csf" "0.0.2--canary.4566f4d.1" "@storybook/router" "6.5.9" "@types/qs" "^6.9.5" - "core-js" "^3.8.2" - "global" "^4.4.0" - "prop-types" "^15.7.2" - "qs" "^6.10.0" - "regenerator-runtime" "^0.13.7" - "ts-dedent" "^2.0.0" + core-js "^3.8.2" + global "^4.4.0" + prop-types "^15.7.2" + qs "^6.10.0" + regenerator-runtime "^0.13.7" + ts-dedent "^2.0.0" "@storybook/addon-measure@6.5.9": - "integrity" "sha512-0aA22wD0CIEUccsEbWkckCOXOwr4VffofMH1ToVCOeqBoyLOMB0gxFubESeprqM54CWsYh2DN1uujgD6508cwA==" - "resolved" "https://registry.npmjs.org/@storybook/addon-measure/-/addon-measure-6.5.9.tgz" - "version" "6.5.9" + version "6.5.9" + resolved "https://registry.npmjs.org/@storybook/addon-measure/-/addon-measure-6.5.9.tgz" + integrity sha512-0aA22wD0CIEUccsEbWkckCOXOwr4VffofMH1ToVCOeqBoyLOMB0gxFubESeprqM54CWsYh2DN1uujgD6508cwA== dependencies: "@storybook/addons" "6.5.9" "@storybook/api" "6.5.9" @@ -2917,13 +2891,13 @@ "@storybook/components" "6.5.9" "@storybook/core-events" "6.5.9" "@storybook/csf" "0.0.2--canary.4566f4d.1" - "core-js" "^3.8.2" - "global" "^4.4.0" + core-js "^3.8.2" + global "^4.4.0" "@storybook/addon-outline@6.5.9": - "integrity" "sha512-oJ1DK3BDJr6aTlZc9axfOxV1oDkZO7hOohgUQDaKO1RZrSpyQsx2ViK2X6p/W7JhFJHKh7rv+nGCaVlLz3YIZA==" - "resolved" "https://registry.npmjs.org/@storybook/addon-outline/-/addon-outline-6.5.9.tgz" - "version" "6.5.9" + version "6.5.9" + resolved "https://registry.npmjs.org/@storybook/addon-outline/-/addon-outline-6.5.9.tgz" + integrity sha512-oJ1DK3BDJr6aTlZc9axfOxV1oDkZO7hOohgUQDaKO1RZrSpyQsx2ViK2X6p/W7JhFJHKh7rv+nGCaVlLz3YIZA== dependencies: "@storybook/addons" "6.5.9" "@storybook/api" "6.5.9" @@ -2931,39 +2905,39 @@ "@storybook/components" "6.5.9" "@storybook/core-events" "6.5.9" "@storybook/csf" "0.0.2--canary.4566f4d.1" - "core-js" "^3.8.2" - "global" "^4.4.0" - "regenerator-runtime" "^0.13.7" - "ts-dedent" "^2.0.0" + core-js "^3.8.2" + global "^4.4.0" + regenerator-runtime "^0.13.7" + ts-dedent "^2.0.0" "@storybook/addon-postcss@=2.0.0": - "integrity" "sha512-Nt82A7e9zJH4+A+VzLKKswUfru+T6FJTakj4dccP0i8DSn7a0CkzRPrLuZBq8tg4voV6gD74bcDf3gViCVBGtA==" - "resolved" "https://registry.npmjs.org/@storybook/addon-postcss/-/addon-postcss-2.0.0.tgz" - "version" "2.0.0" + version "2.0.0" + resolved "https://registry.npmjs.org/@storybook/addon-postcss/-/addon-postcss-2.0.0.tgz" + integrity sha512-Nt82A7e9zJH4+A+VzLKKswUfru+T6FJTakj4dccP0i8DSn7a0CkzRPrLuZBq8tg4voV6gD74bcDf3gViCVBGtA== dependencies: "@storybook/node-logger" "^6.1.14" - "css-loader" "^3.6.0" - "postcss" "^7.0.35" - "postcss-loader" "^4.2.0" - "style-loader" "^1.3.0" + css-loader "^3.6.0" + postcss "^7.0.35" + postcss-loader "^4.2.0" + style-loader "^1.3.0" "@storybook/addon-toolbars@6.5.9": - "integrity" "sha512-6JFQNHYVZUwp17p5rppc+iQJ2QOIWPTF+ni1GMMThjc84mzXs2+899Sf1aPFTvrFJTklmT+bPX6x4aUTouVa1w==" - "resolved" "https://registry.npmjs.org/@storybook/addon-toolbars/-/addon-toolbars-6.5.9.tgz" - "version" "6.5.9" + version "6.5.9" + resolved "https://registry.npmjs.org/@storybook/addon-toolbars/-/addon-toolbars-6.5.9.tgz" + integrity sha512-6JFQNHYVZUwp17p5rppc+iQJ2QOIWPTF+ni1GMMThjc84mzXs2+899Sf1aPFTvrFJTklmT+bPX6x4aUTouVa1w== dependencies: "@storybook/addons" "6.5.9" "@storybook/api" "6.5.9" "@storybook/client-logger" "6.5.9" "@storybook/components" "6.5.9" "@storybook/theming" "6.5.9" - "core-js" "^3.8.2" - "regenerator-runtime" "^0.13.7" + core-js "^3.8.2" + regenerator-runtime "^0.13.7" "@storybook/addon-viewport@6.5.9": - "integrity" "sha512-thKS+iw6M7ueDQQ7M66STZ5rgtJKliAcIX6UCopo0Ffh4RaRYmX6MCjqtvBKk8joyXUvm9SpWQemJD9uBQrjgw==" - "resolved" "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-6.5.9.tgz" - "version" "6.5.9" + version "6.5.9" + resolved "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-6.5.9.tgz" + integrity sha512-thKS+iw6M7ueDQQ7M66STZ5rgtJKliAcIX6UCopo0Ffh4RaRYmX6MCjqtvBKk8joyXUvm9SpWQemJD9uBQrjgw== dependencies: "@storybook/addons" "6.5.9" "@storybook/api" "6.5.9" @@ -2971,16 +2945,16 @@ "@storybook/components" "6.5.9" "@storybook/core-events" "6.5.9" "@storybook/theming" "6.5.9" - "core-js" "^3.8.2" - "global" "^4.4.0" - "memoizerific" "^1.11.3" - "prop-types" "^15.7.2" - "regenerator-runtime" "^0.13.7" + core-js "^3.8.2" + global "^4.4.0" + memoizerific "^1.11.3" + prop-types "^15.7.2" + regenerator-runtime "^0.13.7" -"@storybook/addons@^6.0.0", "@storybook/addons@6.5.13": - "integrity" "sha512-18CqzNnrGMfeZtiKz+R/3rHtSNnfNwz6y6prIQIbWseK16jY8ELTfIFGviwO5V2OqpbHDQi5+xQQ63QAIb89YA==" - "resolved" "https://registry.npmjs.org/@storybook/addons/-/addons-6.5.13.tgz" - "version" "6.5.13" +"@storybook/addons@6.5.13": + version "6.5.13" + resolved "https://registry.npmjs.org/@storybook/addons/-/addons-6.5.13.tgz" + integrity sha512-18CqzNnrGMfeZtiKz+R/3rHtSNnfNwz6y6prIQIbWseK16jY8ELTfIFGviwO5V2OqpbHDQi5+xQQ63QAIb89YA== dependencies: "@storybook/api" "6.5.13" "@storybook/channels" "6.5.13" @@ -2990,14 +2964,14 @@ "@storybook/router" "6.5.13" "@storybook/theming" "6.5.13" "@types/webpack-env" "^1.16.0" - "core-js" "^3.8.2" - "global" "^4.4.0" - "regenerator-runtime" "^0.13.7" + core-js "^3.8.2" + global "^4.4.0" + regenerator-runtime "^0.13.7" "@storybook/addons@6.5.9": - "integrity" "sha512-adwdiXg+mntfPocLc1KXjZXyLgGk7Aac699Fwe+OUYPEC5tW347Rm/kFatcE556d42o5czcRiq3ZSIGWnm9ieQ==" - "resolved" "https://registry.npmjs.org/@storybook/addons/-/addons-6.5.9.tgz" - "version" "6.5.9" + version "6.5.9" + resolved "https://registry.npmjs.org/@storybook/addons/-/addons-6.5.9.tgz" + integrity sha512-adwdiXg+mntfPocLc1KXjZXyLgGk7Aac699Fwe+OUYPEC5tW347Rm/kFatcE556d42o5czcRiq3ZSIGWnm9ieQ== dependencies: "@storybook/api" "6.5.9" "@storybook/channels" "6.5.9" @@ -3007,14 +2981,14 @@ "@storybook/router" "6.5.9" "@storybook/theming" "6.5.9" "@types/webpack-env" "^1.16.0" - "core-js" "^3.8.2" - "global" "^4.4.0" - "regenerator-runtime" "^0.13.7" + core-js "^3.8.2" + global "^4.4.0" + regenerator-runtime "^0.13.7" -"@storybook/api@^6.0.0", "@storybook/api@6.5.13": - "integrity" "sha512-xVSmB7/IuFd6G7eiJjbI2MuS7SZunoUM6d+YCWpjiehfMeX47MXt1gZtOwFrgJC1ShZlefXFahq/dvxwtmWs+w==" - "resolved" "https://registry.npmjs.org/@storybook/api/-/api-6.5.13.tgz" - "version" "6.5.13" +"@storybook/api@6.5.13": + version "6.5.13" + resolved "https://registry.npmjs.org/@storybook/api/-/api-6.5.13.tgz" + integrity sha512-xVSmB7/IuFd6G7eiJjbI2MuS7SZunoUM6d+YCWpjiehfMeX47MXt1gZtOwFrgJC1ShZlefXFahq/dvxwtmWs+w== dependencies: "@storybook/channels" "6.5.13" "@storybook/client-logger" "6.5.13" @@ -3023,21 +2997,21 @@ "@storybook/router" "6.5.13" "@storybook/semver" "^7.3.2" "@storybook/theming" "6.5.13" - "core-js" "^3.8.2" - "fast-deep-equal" "^3.1.3" - "global" "^4.4.0" - "lodash" "^4.17.21" - "memoizerific" "^1.11.3" - "regenerator-runtime" "^0.13.7" - "store2" "^2.12.0" - "telejson" "^6.0.8" - "ts-dedent" "^2.0.0" - "util-deprecate" "^1.0.2" + core-js "^3.8.2" + fast-deep-equal "^3.1.3" + global "^4.4.0" + lodash "^4.17.21" + memoizerific "^1.11.3" + regenerator-runtime "^0.13.7" + store2 "^2.12.0" + telejson "^6.0.8" + ts-dedent "^2.0.0" + util-deprecate "^1.0.2" "@storybook/api@6.5.9": - "integrity" "sha512-9ylztnty4Y+ALU/ehW3BML9czjCAFsWvrwuCi6UgcwNjswwjSX3VRLhfD1KT3pl16ho//95LgZ0LnSwROCcPOA==" - "resolved" "https://registry.npmjs.org/@storybook/api/-/api-6.5.9.tgz" - "version" "6.5.9" + version "6.5.9" + resolved "https://registry.npmjs.org/@storybook/api/-/api-6.5.9.tgz" + integrity sha512-9ylztnty4Y+ALU/ehW3BML9czjCAFsWvrwuCi6UgcwNjswwjSX3VRLhfD1KT3pl16ho//95LgZ0LnSwROCcPOA== dependencies: "@storybook/channels" "6.5.9" "@storybook/client-logger" "6.5.9" @@ -3046,21 +3020,21 @@ "@storybook/router" "6.5.9" "@storybook/semver" "^7.3.2" "@storybook/theming" "6.5.9" - "core-js" "^3.8.2" - "fast-deep-equal" "^3.1.3" - "global" "^4.4.0" - "lodash" "^4.17.21" - "memoizerific" "^1.11.3" - "regenerator-runtime" "^0.13.7" - "store2" "^2.12.0" - "telejson" "^6.0.8" - "ts-dedent" "^2.0.0" - "util-deprecate" "^1.0.2" + core-js "^3.8.2" + fast-deep-equal "^3.1.3" + global "^4.4.0" + lodash "^4.17.21" + memoizerific "^1.11.3" + regenerator-runtime "^0.13.7" + store2 "^2.12.0" + telejson "^6.0.8" + ts-dedent "^2.0.0" + util-deprecate "^1.0.2" "@storybook/builder-webpack4@6.5.9": - "integrity" "sha512-YOeA4++9uRZ8Hog1wC60yjaxBOiI1FRQNtax7b9E7g+kP8UlSCPCGcv4gls9hFmzbzTOPfQTWnToA9Oa6jzRVw==" - "resolved" "https://registry.npmjs.org/@storybook/builder-webpack4/-/builder-webpack4-6.5.9.tgz" - "version" "6.5.9" + version "6.5.9" + resolved "https://registry.npmjs.org/@storybook/builder-webpack4/-/builder-webpack4-6.5.9.tgz" + integrity sha512-YOeA4++9uRZ8Hog1wC60yjaxBOiI1FRQNtax7b9E7g+kP8UlSCPCGcv4gls9hFmzbzTOPfQTWnToA9Oa6jzRVw== dependencies: "@babel/core" "^7.12.10" "@storybook/addons" "6.5.9" @@ -3081,39 +3055,39 @@ "@storybook/ui" "6.5.9" "@types/node" "^14.0.10 || ^16.0.0" "@types/webpack" "^4.41.26" - "autoprefixer" "^9.8.6" - "babel-loader" "^8.0.0" - "case-sensitive-paths-webpack-plugin" "^2.3.0" - "core-js" "^3.8.2" - "css-loader" "^3.6.0" - "file-loader" "^6.2.0" - "find-up" "^5.0.0" - "fork-ts-checker-webpack-plugin" "^4.1.6" - "glob" "^7.1.6" - "glob-promise" "^3.4.0" - "global" "^4.4.0" - "html-webpack-plugin" "^4.0.0" - "pnp-webpack-plugin" "1.6.4" - "postcss" "^7.0.36" - "postcss-flexbugs-fixes" "^4.2.1" - "postcss-loader" "^4.2.0" - "raw-loader" "^4.0.2" - "stable" "^0.1.8" - "style-loader" "^1.3.0" - "terser-webpack-plugin" "^4.2.3" - "ts-dedent" "^2.0.0" - "url-loader" "^4.1.1" - "util-deprecate" "^1.0.2" - "webpack" "4" - "webpack-dev-middleware" "^3.7.3" - "webpack-filter-warnings-plugin" "^1.2.1" - "webpack-hot-middleware" "^2.25.1" - "webpack-virtual-modules" "^0.2.2" + autoprefixer "^9.8.6" + babel-loader "^8.0.0" + case-sensitive-paths-webpack-plugin "^2.3.0" + core-js "^3.8.2" + css-loader "^3.6.0" + file-loader "^6.2.0" + find-up "^5.0.0" + fork-ts-checker-webpack-plugin "^4.1.6" + glob "^7.1.6" + glob-promise "^3.4.0" + global "^4.4.0" + html-webpack-plugin "^4.0.0" + pnp-webpack-plugin "1.6.4" + postcss "^7.0.36" + postcss-flexbugs-fixes "^4.2.1" + postcss-loader "^4.2.0" + raw-loader "^4.0.2" + stable "^0.1.8" + style-loader "^1.3.0" + terser-webpack-plugin "^4.2.3" + ts-dedent "^2.0.0" + url-loader "^4.1.1" + util-deprecate "^1.0.2" + webpack "4" + webpack-dev-middleware "^3.7.3" + webpack-filter-warnings-plugin "^1.2.1" + webpack-hot-middleware "^2.25.1" + webpack-virtual-modules "^0.2.2" "@storybook/builder-webpack5@=6.5.9": - "integrity" "sha512-NUVZ4Qci6HWPuoH8U/zQkdBO5soGgu7QYrGC/LWU0tRfmmZxkjr7IUU14ppDpGPYgx3r7jkaQI1J/E1YEmSCWQ==" - "resolved" "https://registry.npmjs.org/@storybook/builder-webpack5/-/builder-webpack5-6.5.9.tgz" - "version" "6.5.9" + version "6.5.9" + resolved "https://registry.npmjs.org/@storybook/builder-webpack5/-/builder-webpack5-6.5.9.tgz" + integrity sha512-NUVZ4Qci6HWPuoH8U/zQkdBO5soGgu7QYrGC/LWU0tRfmmZxkjr7IUU14ppDpGPYgx3r7jkaQI1J/E1YEmSCWQ== dependencies: "@babel/core" "^7.12.10" "@storybook/addons" "6.5.9" @@ -3132,74 +3106,74 @@ "@storybook/store" "6.5.9" "@storybook/theming" "6.5.9" "@types/node" "^14.0.10 || ^16.0.0" - "babel-loader" "^8.0.0" - "babel-plugin-named-exports-order" "^0.0.2" - "browser-assert" "^1.2.1" - "case-sensitive-paths-webpack-plugin" "^2.3.0" - "core-js" "^3.8.2" - "css-loader" "^5.0.1" - "fork-ts-checker-webpack-plugin" "^6.0.4" - "glob" "^7.1.6" - "glob-promise" "^3.4.0" - "html-webpack-plugin" "^5.0.0" - "path-browserify" "^1.0.1" - "process" "^0.11.10" - "stable" "^0.1.8" - "style-loader" "^2.0.0" - "terser-webpack-plugin" "^5.0.3" - "ts-dedent" "^2.0.0" - "util-deprecate" "^1.0.2" - "webpack" "^5.9.0" - "webpack-dev-middleware" "^4.1.0" - "webpack-hot-middleware" "^2.25.1" - "webpack-virtual-modules" "^0.4.1" + babel-loader "^8.0.0" + babel-plugin-named-exports-order "^0.0.2" + browser-assert "^1.2.1" + case-sensitive-paths-webpack-plugin "^2.3.0" + core-js "^3.8.2" + css-loader "^5.0.1" + fork-ts-checker-webpack-plugin "^6.0.4" + glob "^7.1.6" + glob-promise "^3.4.0" + html-webpack-plugin "^5.0.0" + path-browserify "^1.0.1" + process "^0.11.10" + stable "^0.1.8" + style-loader "^2.0.0" + terser-webpack-plugin "^5.0.3" + ts-dedent "^2.0.0" + util-deprecate "^1.0.2" + webpack "^5.9.0" + webpack-dev-middleware "^4.1.0" + webpack-hot-middleware "^2.25.1" + webpack-virtual-modules "^0.4.1" "@storybook/channel-postmessage@6.5.9": - "integrity" "sha512-pX/0R8UW7ezBhCrafRaL20OvMRcmESYvQQCDgjqSzJyHkcG51GOhsd6Ge93eJ6QvRMm9+w0Zs93N2VKjVtz0Qw==" - "resolved" "https://registry.npmjs.org/@storybook/channel-postmessage/-/channel-postmessage-6.5.9.tgz" - "version" "6.5.9" + version "6.5.9" + resolved "https://registry.npmjs.org/@storybook/channel-postmessage/-/channel-postmessage-6.5.9.tgz" + integrity sha512-pX/0R8UW7ezBhCrafRaL20OvMRcmESYvQQCDgjqSzJyHkcG51GOhsd6Ge93eJ6QvRMm9+w0Zs93N2VKjVtz0Qw== dependencies: "@storybook/channels" "6.5.9" "@storybook/client-logger" "6.5.9" "@storybook/core-events" "6.5.9" - "core-js" "^3.8.2" - "global" "^4.4.0" - "qs" "^6.10.0" - "telejson" "^6.0.8" + core-js "^3.8.2" + global "^4.4.0" + qs "^6.10.0" + telejson "^6.0.8" "@storybook/channel-websocket@6.5.9": - "integrity" "sha512-xtHvSNwuOhkgALwVshKWsoFhDmuvcosdYfxcfFGEiYKXIu46tRS5ZXmpmgEC/0JAVkVoFj5nL8bV7IY5np6oaA==" - "resolved" "https://registry.npmjs.org/@storybook/channel-websocket/-/channel-websocket-6.5.9.tgz" - "version" "6.5.9" + version "6.5.9" + resolved "https://registry.npmjs.org/@storybook/channel-websocket/-/channel-websocket-6.5.9.tgz" + integrity sha512-xtHvSNwuOhkgALwVshKWsoFhDmuvcosdYfxcfFGEiYKXIu46tRS5ZXmpmgEC/0JAVkVoFj5nL8bV7IY5np6oaA== dependencies: "@storybook/channels" "6.5.9" "@storybook/client-logger" "6.5.9" - "core-js" "^3.8.2" - "global" "^4.4.0" - "telejson" "^6.0.8" + core-js "^3.8.2" + global "^4.4.0" + telejson "^6.0.8" "@storybook/channels@6.5.13": - "integrity" "sha512-sGYSilE30bz0jG+HdHnkv0B4XkAv2hP+KRZr4xmnv+MOOQpRnZpJ5Z3HVU16s17cj/83NWihKj6BuKcEVzyilg==" - "resolved" "https://registry.npmjs.org/@storybook/channels/-/channels-6.5.13.tgz" - "version" "6.5.13" + version "6.5.13" + resolved "https://registry.npmjs.org/@storybook/channels/-/channels-6.5.13.tgz" + integrity sha512-sGYSilE30bz0jG+HdHnkv0B4XkAv2hP+KRZr4xmnv+MOOQpRnZpJ5Z3HVU16s17cj/83NWihKj6BuKcEVzyilg== dependencies: - "core-js" "^3.8.2" - "ts-dedent" "^2.0.0" - "util-deprecate" "^1.0.2" + core-js "^3.8.2" + ts-dedent "^2.0.0" + util-deprecate "^1.0.2" "@storybook/channels@6.5.9": - "integrity" "sha512-FvGA35nV38UPXWOl9ERapFTJaxwSTamQ339s2Ev7E9riyRG+GRkgTWzf5kECJgS1PAYKd/7m/RqKJT9BVv6A5g==" - "resolved" "https://registry.npmjs.org/@storybook/channels/-/channels-6.5.9.tgz" - "version" "6.5.9" + version "6.5.9" + resolved "https://registry.npmjs.org/@storybook/channels/-/channels-6.5.9.tgz" + integrity sha512-FvGA35nV38UPXWOl9ERapFTJaxwSTamQ339s2Ev7E9riyRG+GRkgTWzf5kECJgS1PAYKd/7m/RqKJT9BVv6A5g== dependencies: - "core-js" "^3.8.2" - "ts-dedent" "^2.0.0" - "util-deprecate" "^1.0.2" + core-js "^3.8.2" + ts-dedent "^2.0.0" + util-deprecate "^1.0.2" "@storybook/cli@=6.5.9": - "integrity" "sha512-0X5Va3mfJWdFBgtNQTQhw1Dhfpnkw4UYs5koR/c1CCWKB13nGD3nI/f2INNqbRaNcDmPFAyv6BynLQeY4G3JEA==" - "resolved" "https://registry.npmjs.org/@storybook/cli/-/cli-6.5.9.tgz" - "version" "6.5.9" + version "6.5.9" + resolved "https://registry.npmjs.org/@storybook/cli/-/cli-6.5.9.tgz" + integrity sha512-0X5Va3mfJWdFBgtNQTQhw1Dhfpnkw4UYs5koR/c1CCWKB13nGD3nI/f2INNqbRaNcDmPFAyv6BynLQeY4G3JEA== dependencies: "@babel/core" "^7.12.10" "@babel/preset-env" "^7.12.11" @@ -3209,32 +3183,32 @@ "@storybook/node-logger" "6.5.9" "@storybook/semver" "^7.3.2" "@storybook/telemetry" "6.5.9" - "boxen" "^5.1.2" - "chalk" "^4.1.0" - "commander" "^6.2.1" - "core-js" "^3.8.2" - "cross-spawn" "^7.0.3" - "envinfo" "^7.7.3" - "express" "^4.17.1" - "find-up" "^5.0.0" - "fs-extra" "^9.0.1" - "get-port" "^5.1.1" - "globby" "^11.0.2" - "jscodeshift" "^0.13.1" - "json5" "^2.1.3" - "leven" "^3.1.0" - "prompts" "^2.4.0" - "puppeteer-core" "^2.1.1" - "read-pkg-up" "^7.0.1" - "shelljs" "^0.8.5" - "strip-json-comments" "^3.0.1" - "ts-dedent" "^2.0.0" - "update-notifier" "^5.0.1" + boxen "^5.1.2" + chalk "^4.1.0" + commander "^6.2.1" + core-js "^3.8.2" + cross-spawn "^7.0.3" + envinfo "^7.7.3" + express "^4.17.1" + find-up "^5.0.0" + fs-extra "^9.0.1" + get-port "^5.1.1" + globby "^11.0.2" + jscodeshift "^0.13.1" + json5 "^2.1.3" + leven "^3.1.0" + prompts "^2.4.0" + puppeteer-core "^2.1.1" + read-pkg-up "^7.0.1" + shelljs "^0.8.5" + strip-json-comments "^3.0.1" + ts-dedent "^2.0.0" + update-notifier "^5.0.1" "@storybook/client-api@6.5.9": - "integrity" "sha512-pc7JKJoWLesixUKvG2nV36HukUuYoGRyAgD3PpIV7qSBS4JixqZ3VAHFUtqV1UzfOSQTovLSl4a0rIRnpie6gA==" - "resolved" "https://registry.npmjs.org/@storybook/client-api/-/client-api-6.5.9.tgz" - "version" "6.5.9" + version "6.5.9" + resolved "https://registry.npmjs.org/@storybook/client-api/-/client-api-6.5.9.tgz" + integrity sha512-pc7JKJoWLesixUKvG2nV36HukUuYoGRyAgD3PpIV7qSBS4JixqZ3VAHFUtqV1UzfOSQTovLSl4a0rIRnpie6gA== dependencies: "@storybook/addons" "6.5.9" "@storybook/channel-postmessage" "6.5.9" @@ -3245,87 +3219,73 @@ "@storybook/store" "6.5.9" "@types/qs" "^6.9.5" "@types/webpack-env" "^1.16.0" - "core-js" "^3.8.2" - "fast-deep-equal" "^3.1.3" - "global" "^4.4.0" - "lodash" "^4.17.21" - "memoizerific" "^1.11.3" - "qs" "^6.10.0" - "regenerator-runtime" "^0.13.7" - "store2" "^2.12.0" - "synchronous-promise" "^2.0.15" - "ts-dedent" "^2.0.0" - "util-deprecate" "^1.0.2" + core-js "^3.8.2" + fast-deep-equal "^3.1.3" + global "^4.4.0" + lodash "^4.17.21" + memoizerific "^1.11.3" + qs "^6.10.0" + regenerator-runtime "^0.13.7" + store2 "^2.12.0" + synchronous-promise "^2.0.15" + ts-dedent "^2.0.0" + util-deprecate "^1.0.2" -"@storybook/client-logger@^6.4.0", "@storybook/client-logger@6.5.13": - "integrity" "sha512-F2SMW3LWFGXLm2ENTwTitrLWJgmMXRf3CWQXdN2EbkNCIBHy5Zcbt+91K4OX8e2e5h9gjGfrdYbyYDYOoUCEfA==" - "resolved" "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.5.13.tgz" - "version" "6.5.13" +"@storybook/client-logger@6.5.13", "@storybook/client-logger@^6.4.0": + version "6.5.13" + resolved "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.5.13.tgz" + integrity sha512-F2SMW3LWFGXLm2ENTwTitrLWJgmMXRf3CWQXdN2EbkNCIBHy5Zcbt+91K4OX8e2e5h9gjGfrdYbyYDYOoUCEfA== dependencies: - "core-js" "^3.8.2" - "global" "^4.4.0" + core-js "^3.8.2" + global "^4.4.0" "@storybook/client-logger@6.5.9": - "integrity" "sha512-DOHL6p0uiDd3gV/Sb2FR+Vh6OiPrrf8BrA06uvXWsMRIIvEEvnparxv9EvPg7FlmUX0T3nq7d3juwjx4F8Wbcg==" - "resolved" "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.5.9.tgz" - "version" "6.5.9" + version "6.5.9" + resolved "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.5.9.tgz" + integrity sha512-DOHL6p0uiDd3gV/Sb2FR+Vh6OiPrrf8BrA06uvXWsMRIIvEEvnparxv9EvPg7FlmUX0T3nq7d3juwjx4F8Wbcg== dependencies: - "core-js" "^3.8.2" - "global" "^4.4.0" + core-js "^3.8.2" + global "^4.4.0" "@storybook/codemod@6.5.9": - "integrity" "sha512-R/YpzYckM1JnScRMsm1q9Fr07DXlgOEgMZgFywCLIwWLiCLHuItik2+DoxCyhzrJzgsH1KZiBR52E56tVK7L2w==" - "resolved" "https://registry.npmjs.org/@storybook/codemod/-/codemod-6.5.9.tgz" - "version" "6.5.9" + version "6.5.9" + resolved "https://registry.npmjs.org/@storybook/codemod/-/codemod-6.5.9.tgz" + integrity sha512-R/YpzYckM1JnScRMsm1q9Fr07DXlgOEgMZgFywCLIwWLiCLHuItik2+DoxCyhzrJzgsH1KZiBR52E56tVK7L2w== dependencies: "@babel/types" "^7.12.11" "@mdx-js/mdx" "^1.6.22" "@storybook/csf" "0.0.2--canary.4566f4d.1" "@storybook/csf-tools" "6.5.9" "@storybook/node-logger" "6.5.9" - "core-js" "^3.8.2" - "cross-spawn" "^7.0.3" - "globby" "^11.0.2" - "jscodeshift" "^0.13.1" - "lodash" "^4.17.21" - "prettier" ">=2.2.1 <=2.3.0" - "recast" "^0.19.0" - "regenerator-runtime" "^0.13.7" - -"@storybook/components@^6.0.0": - "integrity" "sha512-6Hhx70JK5pGfKCkqMU4yq/BBH+vRTmzj7tZKfPwba+f8VmTMoOr/2ysTQFRtXryiHB6Z15xBYgfq5x2pIwQzLQ==" - "resolved" "https://registry.npmjs.org/@storybook/components/-/components-6.5.13.tgz" - "version" "6.5.13" - dependencies: - "@storybook/client-logger" "6.5.13" - "@storybook/csf" "0.0.2--canary.4566f4d.1" - "@storybook/theming" "6.5.13" - "core-js" "^3.8.2" - "memoizerific" "^1.11.3" - "qs" "^6.10.0" - "regenerator-runtime" "^0.13.7" - "util-deprecate" "^1.0.2" + core-js "^3.8.2" + cross-spawn "^7.0.3" + globby "^11.0.2" + jscodeshift "^0.13.1" + lodash "^4.17.21" + prettier ">=2.2.1 <=2.3.0" + recast "^0.19.0" + regenerator-runtime "^0.13.7" "@storybook/components@6.5.9": - "integrity" "sha512-BhfX980O9zn/1J4FNMeDo8ZvL1m5Ml3T4HRpfYmEBnf8oW5b5BeF6S2K2cwFStZRjWqm1feUcwNpZxCBVMkQnQ==" - "resolved" "https://registry.npmjs.org/@storybook/components/-/components-6.5.9.tgz" - "version" "6.5.9" + version "6.5.9" + resolved "https://registry.npmjs.org/@storybook/components/-/components-6.5.9.tgz" + integrity sha512-BhfX980O9zn/1J4FNMeDo8ZvL1m5Ml3T4HRpfYmEBnf8oW5b5BeF6S2K2cwFStZRjWqm1feUcwNpZxCBVMkQnQ== dependencies: "@storybook/client-logger" "6.5.9" "@storybook/csf" "0.0.2--canary.4566f4d.1" "@storybook/theming" "6.5.9" "@types/react-syntax-highlighter" "11.0.5" - "core-js" "^3.8.2" - "memoizerific" "^1.11.3" - "qs" "^6.10.0" - "react-syntax-highlighter" "^15.4.5" - "regenerator-runtime" "^0.13.7" - "util-deprecate" "^1.0.2" + core-js "^3.8.2" + memoizerific "^1.11.3" + qs "^6.10.0" + react-syntax-highlighter "^15.4.5" + regenerator-runtime "^0.13.7" + util-deprecate "^1.0.2" "@storybook/core-client@6.5.9": - "integrity" "sha512-LY0QbhShowO+PQx3gao3wdVjpKMH1AaSLmuI95FrcjoMmSXGf96jVLKQp9mJRGeHIsAa93EQBYuCihZycM3Kbg==" - "resolved" "https://registry.npmjs.org/@storybook/core-client/-/core-client-6.5.9.tgz" - "version" "6.5.9" + version "6.5.9" + resolved "https://registry.npmjs.org/@storybook/core-client/-/core-client-6.5.9.tgz" + integrity sha512-LY0QbhShowO+PQx3gao3wdVjpKMH1AaSLmuI95FrcjoMmSXGf96jVLKQp9mJRGeHIsAa93EQBYuCihZycM3Kbg== dependencies: "@storybook/addons" "6.5.9" "@storybook/channel-postmessage" "6.5.9" @@ -3337,21 +3297,21 @@ "@storybook/preview-web" "6.5.9" "@storybook/store" "6.5.9" "@storybook/ui" "6.5.9" - "airbnb-js-shims" "^2.2.1" - "ansi-to-html" "^0.6.11" - "core-js" "^3.8.2" - "global" "^4.4.0" - "lodash" "^4.17.21" - "qs" "^6.10.0" - "regenerator-runtime" "^0.13.7" - "ts-dedent" "^2.0.0" - "unfetch" "^4.2.0" - "util-deprecate" "^1.0.2" + airbnb-js-shims "^2.2.1" + ansi-to-html "^0.6.11" + core-js "^3.8.2" + global "^4.4.0" + lodash "^4.17.21" + qs "^6.10.0" + regenerator-runtime "^0.13.7" + ts-dedent "^2.0.0" + unfetch "^4.2.0" + util-deprecate "^1.0.2" "@storybook/core-common@6.5.9": - "integrity" "sha512-NxOK0mrOCo0TWZ7Npc5HU66EKoRHlrtg18/ZixblLDWQMIqY9XCck8K1kJ8QYpYCHla+aHIsYUArFe2vhlEfZA==" - "resolved" "https://registry.npmjs.org/@storybook/core-common/-/core-common-6.5.9.tgz" - "version" "6.5.9" + version "6.5.9" + resolved "https://registry.npmjs.org/@storybook/core-common/-/core-common-6.5.9.tgz" + integrity sha512-NxOK0mrOCo0TWZ7Npc5HU66EKoRHlrtg18/ZixblLDWQMIqY9XCck8K1kJ8QYpYCHla+aHIsYUArFe2vhlEfZA== dependencies: "@babel/core" "^7.12.10" "@babel/plugin-proposal-class-properties" "^7.12.1" @@ -3379,49 +3339,49 @@ "@storybook/semver" "^7.3.2" "@types/node" "^14.0.10 || ^16.0.0" "@types/pretty-hrtime" "^1.0.0" - "babel-loader" "^8.0.0" - "babel-plugin-macros" "^3.0.1" - "babel-plugin-polyfill-corejs3" "^0.1.0" - "chalk" "^4.1.0" - "core-js" "^3.8.2" - "express" "^4.17.1" - "file-system-cache" "^1.0.5" - "find-up" "^5.0.0" - "fork-ts-checker-webpack-plugin" "^6.0.4" - "fs-extra" "^9.0.1" - "glob" "^7.1.6" - "handlebars" "^4.7.7" - "interpret" "^2.2.0" - "json5" "^2.1.3" - "lazy-universal-dotenv" "^3.0.1" - "picomatch" "^2.3.0" - "pkg-dir" "^5.0.0" - "pretty-hrtime" "^1.0.3" - "resolve-from" "^5.0.0" - "slash" "^3.0.0" - "telejson" "^6.0.8" - "ts-dedent" "^2.0.0" - "util-deprecate" "^1.0.2" - "webpack" "4" + babel-loader "^8.0.0" + babel-plugin-macros "^3.0.1" + babel-plugin-polyfill-corejs3 "^0.1.0" + chalk "^4.1.0" + core-js "^3.8.2" + express "^4.17.1" + file-system-cache "^1.0.5" + find-up "^5.0.0" + fork-ts-checker-webpack-plugin "^6.0.4" + fs-extra "^9.0.1" + glob "^7.1.6" + handlebars "^4.7.7" + interpret "^2.2.0" + json5 "^2.1.3" + lazy-universal-dotenv "^3.0.1" + picomatch "^2.3.0" + pkg-dir "^5.0.0" + pretty-hrtime "^1.0.3" + resolve-from "^5.0.0" + slash "^3.0.0" + telejson "^6.0.8" + ts-dedent "^2.0.0" + util-deprecate "^1.0.2" + webpack "4" -"@storybook/core-events@^6.0.0", "@storybook/core-events@6.5.13": - "integrity" "sha512-kL745tPpRKejzHToA3/CoBNbI+NPRVk186vGxXBmk95OEg0TlwgQExP8BnqEtLlRZMbW08e4+6kilc1M1M4N5w==" - "resolved" "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.5.13.tgz" - "version" "6.5.13" +"@storybook/core-events@6.5.13": + version "6.5.13" + resolved "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.5.13.tgz" + integrity sha512-kL745tPpRKejzHToA3/CoBNbI+NPRVk186vGxXBmk95OEg0TlwgQExP8BnqEtLlRZMbW08e4+6kilc1M1M4N5w== dependencies: - "core-js" "^3.8.2" + core-js "^3.8.2" "@storybook/core-events@6.5.9": - "integrity" "sha512-tXt7a3ZvJOCeEKpNa/B5rQM5VI7UJLlOh3IHOImWn4HqoBRrZvbourmac+PRZAtXpos0h3c6554Hjapj/Sny5Q==" - "resolved" "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.5.9.tgz" - "version" "6.5.9" + version "6.5.9" + resolved "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.5.9.tgz" + integrity sha512-tXt7a3ZvJOCeEKpNa/B5rQM5VI7UJLlOh3IHOImWn4HqoBRrZvbourmac+PRZAtXpos0h3c6554Hjapj/Sny5Q== dependencies: - "core-js" "^3.8.2" + core-js "^3.8.2" "@storybook/core-server@6.5.9": - "integrity" "sha512-YeePGUrd5fQPvGzMhowh124KrcZURFpFXg1VB0Op3ESqCIsInoMZeObci4Gc+binMXC7vcv7aw3EwSLU37qJzQ==" - "resolved" "https://registry.npmjs.org/@storybook/core-server/-/core-server-6.5.9.tgz" - "version" "6.5.9" + version "6.5.9" + resolved "https://registry.npmjs.org/@storybook/core-server/-/core-server-6.5.9.tgz" + integrity sha512-YeePGUrd5fQPvGzMhowh124KrcZURFpFXg1VB0Op3ESqCIsInoMZeObci4Gc+binMXC7vcv7aw3EwSLU37qJzQ== dependencies: "@discoveryjs/json-ext" "^0.5.3" "@storybook/builder-webpack4" "6.5.9" @@ -3439,48 +3399,48 @@ "@types/node-fetch" "^2.5.7" "@types/pretty-hrtime" "^1.0.0" "@types/webpack" "^4.41.26" - "better-opn" "^2.1.1" - "boxen" "^5.1.2" - "chalk" "^4.1.0" - "cli-table3" "^0.6.1" - "commander" "^6.2.1" - "compression" "^1.7.4" - "core-js" "^3.8.2" - "cpy" "^8.1.2" - "detect-port" "^1.3.0" - "express" "^4.17.1" - "fs-extra" "^9.0.1" - "global" "^4.4.0" - "globby" "^11.0.2" - "ip" "^2.0.0" - "lodash" "^4.17.21" - "node-fetch" "^2.6.7" - "open" "^8.4.0" - "pretty-hrtime" "^1.0.3" - "prompts" "^2.4.0" - "regenerator-runtime" "^0.13.7" - "serve-favicon" "^2.5.0" - "slash" "^3.0.0" - "telejson" "^6.0.8" - "ts-dedent" "^2.0.0" - "util-deprecate" "^1.0.2" - "watchpack" "^2.2.0" - "webpack" "4" - "ws" "^8.2.3" - "x-default-browser" "^0.4.0" + better-opn "^2.1.1" + boxen "^5.1.2" + chalk "^4.1.0" + cli-table3 "^0.6.1" + commander "^6.2.1" + compression "^1.7.4" + core-js "^3.8.2" + cpy "^8.1.2" + detect-port "^1.3.0" + express "^4.17.1" + fs-extra "^9.0.1" + global "^4.4.0" + globby "^11.0.2" + ip "^2.0.0" + lodash "^4.17.21" + node-fetch "^2.6.7" + open "^8.4.0" + pretty-hrtime "^1.0.3" + prompts "^2.4.0" + regenerator-runtime "^0.13.7" + serve-favicon "^2.5.0" + slash "^3.0.0" + telejson "^6.0.8" + ts-dedent "^2.0.0" + util-deprecate "^1.0.2" + watchpack "^2.2.0" + webpack "4" + ws "^8.2.3" + x-default-browser "^0.4.0" "@storybook/core@6.5.9": - "integrity" "sha512-Mt3TTQnjQt2/pa60A+bqDsAOrYpohapdtt4DDZEbS8h0V6u11KyYYh3w7FCySlL+sPEyogj63l5Ec76Jah3l2w==" - "resolved" "https://registry.npmjs.org/@storybook/core/-/core-6.5.9.tgz" - "version" "6.5.9" + version "6.5.9" + resolved "https://registry.npmjs.org/@storybook/core/-/core-6.5.9.tgz" + integrity sha512-Mt3TTQnjQt2/pa60A+bqDsAOrYpohapdtt4DDZEbS8h0V6u11KyYYh3w7FCySlL+sPEyogj63l5Ec76Jah3l2w== dependencies: "@storybook/core-client" "6.5.9" "@storybook/core-server" "6.5.9" "@storybook/csf-tools@6.5.9": - "integrity" "sha512-RAdhsO2XmEDyWy0qNQvdKMLeIZAuyfD+tYlUwBHRU6DbByDucvwgMOGy5dF97YNJFmyo93EUYJzXjUrJs3U1LQ==" - "resolved" "https://registry.npmjs.org/@storybook/csf-tools/-/csf-tools-6.5.9.tgz" - "version" "6.5.9" + version "6.5.9" + resolved "https://registry.npmjs.org/@storybook/csf-tools/-/csf-tools-6.5.9.tgz" + integrity sha512-RAdhsO2XmEDyWy0qNQvdKMLeIZAuyfD+tYlUwBHRU6DbByDucvwgMOGy5dF97YNJFmyo93EUYJzXjUrJs3U1LQ== dependencies: "@babel/core" "^7.12.10" "@babel/generator" "^7.12.11" @@ -3491,65 +3451,65 @@ "@babel/types" "^7.12.11" "@storybook/csf" "0.0.2--canary.4566f4d.1" "@storybook/mdx1-csf" "^0.0.1" - "core-js" "^3.8.2" - "fs-extra" "^9.0.1" - "global" "^4.4.0" - "regenerator-runtime" "^0.13.7" - "ts-dedent" "^2.0.0" - -"@storybook/csf@^0.0.1": - "integrity" "sha512-USTLkZze5gkel8MYCujSRBVIrUQ3YPBrLOx7GNk/0wttvVtlzWXAq9eLbQ4p/NicGxP+3T7KPEMVV//g+yubpw==" - "resolved" "https://registry.npmjs.org/@storybook/csf/-/csf-0.0.1.tgz" - "version" "0.0.1" - dependencies: - "lodash" "^4.17.15" + core-js "^3.8.2" + fs-extra "^9.0.1" + global "^4.4.0" + regenerator-runtime "^0.13.7" + ts-dedent "^2.0.0" "@storybook/csf@0.0.2--canary.4566f4d.1": - "integrity" "sha512-9OVvMVh3t9znYZwb0Svf/YQoxX2gVOeQTGe2bses2yj+a3+OJnCrUF3/hGv6Em7KujtOdL2LL+JnG49oMVGFgQ==" - "resolved" "https://registry.npmjs.org/@storybook/csf/-/csf-0.0.2--canary.4566f4d.1.tgz" - "version" "0.0.2--canary.4566f4d.1" + version "0.0.2--canary.4566f4d.1" + resolved "https://registry.npmjs.org/@storybook/csf/-/csf-0.0.2--canary.4566f4d.1.tgz" + integrity sha512-9OVvMVh3t9znYZwb0Svf/YQoxX2gVOeQTGe2bses2yj+a3+OJnCrUF3/hGv6Em7KujtOdL2LL+JnG49oMVGFgQ== dependencies: - "lodash" "^4.17.15" + lodash "^4.17.15" + +"@storybook/csf@^0.0.1": + version "0.0.1" + resolved "https://registry.npmjs.org/@storybook/csf/-/csf-0.0.1.tgz" + integrity sha512-USTLkZze5gkel8MYCujSRBVIrUQ3YPBrLOx7GNk/0wttvVtlzWXAq9eLbQ4p/NicGxP+3T7KPEMVV//g+yubpw== + dependencies: + lodash "^4.17.15" "@storybook/docs-tools@6.5.9": - "integrity" "sha512-UoTaXLvec8x+q+4oYIk/t8DBju9C3ZTGklqOxDIt+0kS3TFAqEgI3JhKXqQOXgN5zDcvLVSxi8dbVAeSxk2ktA==" - "resolved" "https://registry.npmjs.org/@storybook/docs-tools/-/docs-tools-6.5.9.tgz" - "version" "6.5.9" + version "6.5.9" + resolved "https://registry.npmjs.org/@storybook/docs-tools/-/docs-tools-6.5.9.tgz" + integrity sha512-UoTaXLvec8x+q+4oYIk/t8DBju9C3ZTGklqOxDIt+0kS3TFAqEgI3JhKXqQOXgN5zDcvLVSxi8dbVAeSxk2ktA== dependencies: "@babel/core" "^7.12.10" "@storybook/csf" "0.0.2--canary.4566f4d.1" "@storybook/store" "6.5.9" - "core-js" "^3.8.2" - "doctrine" "^3.0.0" - "lodash" "^4.17.21" - "regenerator-runtime" "^0.13.7" - -"@storybook/instrumenter@^6.4.0": - "integrity" "sha512-izRF64BU+gGCP7qE1N3kOVLSv5Xk4M0OWcRmFIXoIS46qNDzmd8hmbkkx3M9wrvw0kcQ97kIyADF+UInbcr/dQ==" - "resolved" "https://registry.npmjs.org/@storybook/instrumenter/-/instrumenter-6.5.13.tgz" - "version" "6.5.13" - dependencies: - "@storybook/addons" "6.5.13" - "@storybook/client-logger" "6.5.13" - "@storybook/core-events" "6.5.13" - "core-js" "^3.8.2" - "global" "^4.4.0" + core-js "^3.8.2" + doctrine "^3.0.0" + lodash "^4.17.21" + regenerator-runtime "^0.13.7" "@storybook/instrumenter@6.5.9": - "integrity" "sha512-I2nu/6H0MAy8d+d3LY/G6oYEFyWlc8f2Qs2DhpYh5FiCgIpzvY0DMN05Lf8oaXdKHL3lPF/YLJH17FttekXs1w==" - "resolved" "https://registry.npmjs.org/@storybook/instrumenter/-/instrumenter-6.5.9.tgz" - "version" "6.5.9" + version "6.5.9" + resolved "https://registry.npmjs.org/@storybook/instrumenter/-/instrumenter-6.5.9.tgz" + integrity sha512-I2nu/6H0MAy8d+d3LY/G6oYEFyWlc8f2Qs2DhpYh5FiCgIpzvY0DMN05Lf8oaXdKHL3lPF/YLJH17FttekXs1w== dependencies: "@storybook/addons" "6.5.9" "@storybook/client-logger" "6.5.9" "@storybook/core-events" "6.5.9" - "core-js" "^3.8.2" - "global" "^4.4.0" + core-js "^3.8.2" + global "^4.4.0" + +"@storybook/instrumenter@^6.4.0": + version "6.5.13" + resolved "https://registry.npmjs.org/@storybook/instrumenter/-/instrumenter-6.5.13.tgz" + integrity sha512-izRF64BU+gGCP7qE1N3kOVLSv5Xk4M0OWcRmFIXoIS46qNDzmd8hmbkkx3M9wrvw0kcQ97kIyADF+UInbcr/dQ== + dependencies: + "@storybook/addons" "6.5.13" + "@storybook/client-logger" "6.5.13" + "@storybook/core-events" "6.5.13" + core-js "^3.8.2" + global "^4.4.0" "@storybook/manager-webpack4@6.5.9": - "integrity" "sha512-49LZlHqWc7zj9tQfOOANixPYmLxqWTTZceA6DSXnKd9xDiO2Gl23Y+l/CSPXNZGDB8QFAwpimwqyKJj/NLH45A==" - "resolved" "https://registry.npmjs.org/@storybook/manager-webpack4/-/manager-webpack4-6.5.9.tgz" - "version" "6.5.9" + version "6.5.9" + resolved "https://registry.npmjs.org/@storybook/manager-webpack4/-/manager-webpack4-6.5.9.tgz" + integrity sha512-49LZlHqWc7zj9tQfOOANixPYmLxqWTTZceA6DSXnKd9xDiO2Gl23Y+l/CSPXNZGDB8QFAwpimwqyKJj/NLH45A== dependencies: "@babel/core" "^7.12.10" "@babel/plugin-transform-template-literals" "^7.12.1" @@ -3562,35 +3522,35 @@ "@storybook/ui" "6.5.9" "@types/node" "^14.0.10 || ^16.0.0" "@types/webpack" "^4.41.26" - "babel-loader" "^8.0.0" - "case-sensitive-paths-webpack-plugin" "^2.3.0" - "chalk" "^4.1.0" - "core-js" "^3.8.2" - "css-loader" "^3.6.0" - "express" "^4.17.1" - "file-loader" "^6.2.0" - "find-up" "^5.0.0" - "fs-extra" "^9.0.1" - "html-webpack-plugin" "^4.0.0" - "node-fetch" "^2.6.7" - "pnp-webpack-plugin" "1.6.4" - "read-pkg-up" "^7.0.1" - "regenerator-runtime" "^0.13.7" - "resolve-from" "^5.0.0" - "style-loader" "^1.3.0" - "telejson" "^6.0.8" - "terser-webpack-plugin" "^4.2.3" - "ts-dedent" "^2.0.0" - "url-loader" "^4.1.1" - "util-deprecate" "^1.0.2" - "webpack" "4" - "webpack-dev-middleware" "^3.7.3" - "webpack-virtual-modules" "^0.2.2" + babel-loader "^8.0.0" + case-sensitive-paths-webpack-plugin "^2.3.0" + chalk "^4.1.0" + core-js "^3.8.2" + css-loader "^3.6.0" + express "^4.17.1" + file-loader "^6.2.0" + find-up "^5.0.0" + fs-extra "^9.0.1" + html-webpack-plugin "^4.0.0" + node-fetch "^2.6.7" + pnp-webpack-plugin "1.6.4" + read-pkg-up "^7.0.1" + regenerator-runtime "^0.13.7" + resolve-from "^5.0.0" + style-loader "^1.3.0" + telejson "^6.0.8" + terser-webpack-plugin "^4.2.3" + ts-dedent "^2.0.0" + url-loader "^4.1.1" + util-deprecate "^1.0.2" + webpack "4" + webpack-dev-middleware "^3.7.3" + webpack-virtual-modules "^0.2.2" "@storybook/manager-webpack5@=6.5.9": - "integrity" "sha512-J1GamphSsaZLNBEhn1awgxzOS8KfvzrHtVlAm2VHwW7j1E1DItROFJhGCgduYYuBiN9eqm+KIYrxcr6cRuoolQ==" - "resolved" "https://registry.npmjs.org/@storybook/manager-webpack5/-/manager-webpack5-6.5.9.tgz" - "version" "6.5.9" + version "6.5.9" + resolved "https://registry.npmjs.org/@storybook/manager-webpack5/-/manager-webpack5-6.5.9.tgz" + integrity sha512-J1GamphSsaZLNBEhn1awgxzOS8KfvzrHtVlAm2VHwW7j1E1DItROFJhGCgduYYuBiN9eqm+KIYrxcr6cRuoolQ== dependencies: "@babel/core" "^7.12.10" "@babel/plugin-transform-template-literals" "^7.12.1" @@ -3602,33 +3562,33 @@ "@storybook/theming" "6.5.9" "@storybook/ui" "6.5.9" "@types/node" "^14.0.10 || ^16.0.0" - "babel-loader" "^8.0.0" - "case-sensitive-paths-webpack-plugin" "^2.3.0" - "chalk" "^4.1.0" - "core-js" "^3.8.2" - "css-loader" "^5.0.1" - "express" "^4.17.1" - "find-up" "^5.0.0" - "fs-extra" "^9.0.1" - "html-webpack-plugin" "^5.0.0" - "node-fetch" "^2.6.7" - "process" "^0.11.10" - "read-pkg-up" "^7.0.1" - "regenerator-runtime" "^0.13.7" - "resolve-from" "^5.0.0" - "style-loader" "^2.0.0" - "telejson" "^6.0.8" - "terser-webpack-plugin" "^5.0.3" - "ts-dedent" "^2.0.0" - "util-deprecate" "^1.0.2" - "webpack" "^5.9.0" - "webpack-dev-middleware" "^4.1.0" - "webpack-virtual-modules" "^0.4.1" + babel-loader "^8.0.0" + case-sensitive-paths-webpack-plugin "^2.3.0" + chalk "^4.1.0" + core-js "^3.8.2" + css-loader "^5.0.1" + express "^4.17.1" + find-up "^5.0.0" + fs-extra "^9.0.1" + html-webpack-plugin "^5.0.0" + node-fetch "^2.6.7" + process "^0.11.10" + read-pkg-up "^7.0.1" + regenerator-runtime "^0.13.7" + resolve-from "^5.0.0" + style-loader "^2.0.0" + telejson "^6.0.8" + terser-webpack-plugin "^5.0.3" + ts-dedent "^2.0.0" + util-deprecate "^1.0.2" + webpack "^5.9.0" + webpack-dev-middleware "^4.1.0" + webpack-virtual-modules "^0.4.1" "@storybook/mdx1-csf@^0.0.1": - "integrity" "sha512-4biZIWWzoWlCarMZmTpqcJNgo/RBesYZwGFbQeXiGYsswuvfWARZnW9RE9aUEMZ4XPn7B1N3EKkWcdcWe/K2tg==" - "resolved" "https://registry.npmjs.org/@storybook/mdx1-csf/-/mdx1-csf-0.0.1.tgz" - "version" "0.0.1" + version "0.0.1" + resolved "https://registry.npmjs.org/@storybook/mdx1-csf/-/mdx1-csf-0.0.1.tgz" + integrity sha512-4biZIWWzoWlCarMZmTpqcJNgo/RBesYZwGFbQeXiGYsswuvfWARZnW9RE9aUEMZ4XPn7B1N3EKkWcdcWe/K2tg== dependencies: "@babel/generator" "^7.12.11" "@babel/parser" "^7.12.11" @@ -3636,59 +3596,59 @@ "@babel/types" "^7.12.11" "@mdx-js/mdx" "^1.6.22" "@types/lodash" "^4.14.167" - "js-string-escape" "^1.0.1" - "loader-utils" "^2.0.0" - "lodash" "^4.17.21" - "prettier" ">=2.2.1 <=2.3.0" - "ts-dedent" "^2.0.0" + js-string-escape "^1.0.1" + loader-utils "^2.0.0" + lodash "^4.17.21" + prettier ">=2.2.1 <=2.3.0" + ts-dedent "^2.0.0" -"@storybook/node-logger@*", "@storybook/node-logger@^6.1.14", "@storybook/node-logger@=6.5.9", "@storybook/node-logger@6.5.9": - "integrity" "sha512-nZZNZG2Wtwv6Trxi3FrnIqUmB55xO+X/WQGPT5iKlqNjdRIu/T72mE7addcp4rbuWCQfZUhcDDGpBOwKtBxaGg==" - "resolved" "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-6.5.9.tgz" - "version" "6.5.9" +"@storybook/node-logger@6.5.9", "@storybook/node-logger@=6.5.9", "@storybook/node-logger@^6.1.14": + version "6.5.9" + resolved "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-6.5.9.tgz" + integrity sha512-nZZNZG2Wtwv6Trxi3FrnIqUmB55xO+X/WQGPT5iKlqNjdRIu/T72mE7addcp4rbuWCQfZUhcDDGpBOwKtBxaGg== dependencies: "@types/npmlog" "^4.1.2" - "chalk" "^4.1.0" - "core-js" "^3.8.2" - "npmlog" "^5.0.1" - "pretty-hrtime" "^1.0.3" + chalk "^4.1.0" + core-js "^3.8.2" + npmlog "^5.0.1" + pretty-hrtime "^1.0.3" "@storybook/postinstall@6.5.9": - "integrity" "sha512-KQBupK+FMRrtSt8IL0MzCZ/w9qbd25Yxxp/+ajfWgZTRgsWgVFOqcDyMhS16eNbBp5qKIBCBDXfEF+/mK8HwQQ==" - "resolved" "https://registry.npmjs.org/@storybook/postinstall/-/postinstall-6.5.9.tgz" - "version" "6.5.9" + version "6.5.9" + resolved "https://registry.npmjs.org/@storybook/postinstall/-/postinstall-6.5.9.tgz" + integrity sha512-KQBupK+FMRrtSt8IL0MzCZ/w9qbd25Yxxp/+ajfWgZTRgsWgVFOqcDyMhS16eNbBp5qKIBCBDXfEF+/mK8HwQQ== dependencies: - "core-js" "^3.8.2" + core-js "^3.8.2" "@storybook/preset-create-react-app@^3.1.5": - "integrity" "sha512-lLoWCGr5cV+JNDRKYHC2gD+P2eyBqdN8qhmBa+PxDgPSNKfgUf9Wnoh+C7WTG5q2DEeR9SvUpQpZomX9DDQa4Q==" - "resolved" "https://registry.npmjs.org/@storybook/preset-create-react-app/-/preset-create-react-app-3.2.0.tgz" - "version" "3.2.0" + version "3.2.0" + resolved "https://registry.npmjs.org/@storybook/preset-create-react-app/-/preset-create-react-app-3.2.0.tgz" + integrity sha512-lLoWCGr5cV+JNDRKYHC2gD+P2eyBqdN8qhmBa+PxDgPSNKfgUf9Wnoh+C7WTG5q2DEeR9SvUpQpZomX9DDQa4Q== dependencies: "@pmmmwh/react-refresh-webpack-plugin" "^0.4.3" "@types/babel__core" "^7.1.7" "@types/webpack" "^4.41.13" - "babel-plugin-react-docgen" "^4.1.0" - "pnp-webpack-plugin" "^1.6.4" - "react-docgen-typescript-plugin" "^1.0.0" - "semver" "^7.3.5" + babel-plugin-react-docgen "^4.1.0" + pnp-webpack-plugin "^1.6.4" + react-docgen-typescript-plugin "^1.0.0" + semver "^7.3.5" "@storybook/preset-create-react-app@^4.1.2": - "integrity" "sha512-5uBZPhuyXx4APgLZnhiZ/PqYYprBua5CabQCfAlk+/9V4vSpX+ww+XP4Rl8Ifc/nf/HktgwtJFH4HXrZGRKC4w==" - "resolved" "https://registry.npmjs.org/@storybook/preset-create-react-app/-/preset-create-react-app-4.1.2.tgz" - "version" "4.1.2" + version "4.1.2" + resolved "https://registry.npmjs.org/@storybook/preset-create-react-app/-/preset-create-react-app-4.1.2.tgz" + integrity sha512-5uBZPhuyXx4APgLZnhiZ/PqYYprBua5CabQCfAlk+/9V4vSpX+ww+XP4Rl8Ifc/nf/HktgwtJFH4HXrZGRKC4w== dependencies: "@pmmmwh/react-refresh-webpack-plugin" "^0.5.1" - "@storybook/react-docgen-typescript-plugin" "canary" + "@storybook/react-docgen-typescript-plugin" canary "@types/babel__core" "^7.1.7" - "babel-plugin-react-docgen" "^4.1.0" - "pnp-webpack-plugin" "^1.7.0" - "semver" "^7.3.5" + babel-plugin-react-docgen "^4.1.0" + pnp-webpack-plugin "^1.7.0" + semver "^7.3.5" "@storybook/preview-web@6.5.9": - "integrity" "sha512-4eMrO2HJyZUYyL/j+gUaDvry6iGedshwT5MQqe7J9FaA+Q2pNARQRB1X53f410w7S4sObRmYIAIluWPYdWym9w==" - "resolved" "https://registry.npmjs.org/@storybook/preview-web/-/preview-web-6.5.9.tgz" - "version" "6.5.9" + version "6.5.9" + resolved "https://registry.npmjs.org/@storybook/preview-web/-/preview-web-6.5.9.tgz" + integrity sha512-4eMrO2HJyZUYyL/j+gUaDvry6iGedshwT5MQqe7J9FaA+Q2pNARQRB1X53f410w7S4sObRmYIAIluWPYdWym9w== dependencies: "@storybook/addons" "6.5.9" "@storybook/channel-postmessage" "6.5.9" @@ -3696,47 +3656,47 @@ "@storybook/core-events" "6.5.9" "@storybook/csf" "0.0.2--canary.4566f4d.1" "@storybook/store" "6.5.9" - "ansi-to-html" "^0.6.11" - "core-js" "^3.8.2" - "global" "^4.4.0" - "lodash" "^4.17.21" - "qs" "^6.10.0" - "regenerator-runtime" "^0.13.7" - "synchronous-promise" "^2.0.15" - "ts-dedent" "^2.0.0" - "unfetch" "^4.2.0" - "util-deprecate" "^1.0.2" + ansi-to-html "^0.6.11" + core-js "^3.8.2" + global "^4.4.0" + lodash "^4.17.21" + qs "^6.10.0" + regenerator-runtime "^0.13.7" + synchronous-promise "^2.0.15" + ts-dedent "^2.0.0" + unfetch "^4.2.0" + util-deprecate "^1.0.2" "@storybook/react-docgen-typescript-plugin@1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0": - "integrity" "sha512-eVg3BxlOm2P+chijHBTByr90IZVUtgRW56qEOLX7xlww2NBuKrcavBlcmn+HH7GIUktquWkMPtvy6e0W0NgA5w==" - "resolved" "https://registry.npmjs.org/@storybook/react-docgen-typescript-plugin/-/react-docgen-typescript-plugin-1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0.tgz" - "version" "1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0" + version "1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0" + resolved "https://registry.npmjs.org/@storybook/react-docgen-typescript-plugin/-/react-docgen-typescript-plugin-1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0.tgz" + integrity sha512-eVg3BxlOm2P+chijHBTByr90IZVUtgRW56qEOLX7xlww2NBuKrcavBlcmn+HH7GIUktquWkMPtvy6e0W0NgA5w== dependencies: - "debug" "^4.1.1" - "endent" "^2.0.1" - "find-cache-dir" "^3.3.1" - "flat-cache" "^3.0.4" - "micromatch" "^4.0.2" - "react-docgen-typescript" "^2.1.1" - "tslib" "^2.0.0" + debug "^4.1.1" + endent "^2.0.1" + find-cache-dir "^3.3.1" + flat-cache "^3.0.4" + micromatch "^4.0.2" + react-docgen-typescript "^2.1.1" + tslib "^2.0.0" "@storybook/react-docgen-typescript-plugin@canary": - "integrity" "sha512-tnaT0VqSGhmMi/I880aMOToSrNd7XCr1avS/M1tk/+FDO+0GqHXo9abC5sos705ly3Hmi1FxFvHnzV/cvU1JTg==" - "resolved" "https://registry.npmjs.org/@storybook/react-docgen-typescript-plugin/-/react-docgen-typescript-plugin-1.0.2--canary.7.324a727c65a1819f7f3ede5abc1f32d440e4530a.0.tgz" - "version" "1.0.2--canary.7.324a727c65a1819f7f3ede5abc1f32d440e4530a.0" + version "1.0.2--canary.7.324a727c65a1819f7f3ede5abc1f32d440e4530a.0" + resolved "https://registry.npmjs.org/@storybook/react-docgen-typescript-plugin/-/react-docgen-typescript-plugin-1.0.2--canary.7.324a727c65a1819f7f3ede5abc1f32d440e4530a.0.tgz" + integrity sha512-tnaT0VqSGhmMi/I880aMOToSrNd7XCr1avS/M1tk/+FDO+0GqHXo9abC5sos705ly3Hmi1FxFvHnzV/cvU1JTg== dependencies: - "debug" "^4.1.1" - "endent" "^2.0.1" - "find-cache-dir" "^3.3.1" - "flat-cache" "^3.0.4" - "micromatch" "^4.0.2" - "react-docgen-typescript" "^2.1.1" - "tslib" "^2.0.0" + debug "^4.1.1" + endent "^2.0.1" + find-cache-dir "^3.3.1" + flat-cache "^3.0.4" + micromatch "^4.0.2" + react-docgen-typescript "^2.1.1" + tslib "^2.0.0" -"@storybook/react@=6.5.9", "@storybook/react@>=5.2": - "integrity" "sha512-Rp+QaTQAzxJhwuzJXVd49mnIBLQRlF8llTxPT2YoGHdrGkku/zl/HblQ6H2yzEf15367VyzaAv/BpLsO9Jlfxg==" - "resolved" "https://registry.npmjs.org/@storybook/react/-/react-6.5.9.tgz" - "version" "6.5.9" +"@storybook/react@=6.5.9": + version "6.5.9" + resolved "https://registry.npmjs.org/@storybook/react/-/react-6.5.9.tgz" + integrity sha512-Rp+QaTQAzxJhwuzJXVd49mnIBLQRlF8llTxPT2YoGHdrGkku/zl/HblQ6H2yzEf15367VyzaAv/BpLsO9Jlfxg== dependencies: "@babel/preset-flow" "^7.12.1" "@babel/preset-react" "^7.12.10" @@ -3754,146 +3714,146 @@ "@types/estree" "^0.0.51" "@types/node" "^14.14.20 || ^16.0.0" "@types/webpack-env" "^1.16.0" - "acorn" "^7.4.1" - "acorn-jsx" "^5.3.1" - "acorn-walk" "^7.2.0" - "babel-plugin-add-react-displayname" "^0.0.5" - "babel-plugin-react-docgen" "^4.2.1" - "core-js" "^3.8.2" - "escodegen" "^2.0.0" - "fs-extra" "^9.0.1" - "global" "^4.4.0" - "html-tags" "^3.1.0" - "lodash" "^4.17.21" - "prop-types" "^15.7.2" - "react-element-to-jsx-string" "^14.3.4" - "react-refresh" "^0.11.0" - "read-pkg-up" "^7.0.1" - "regenerator-runtime" "^0.13.7" - "ts-dedent" "^2.0.0" - "util-deprecate" "^1.0.2" - "webpack" ">=4.43.0 <6.0.0" + acorn "^7.4.1" + acorn-jsx "^5.3.1" + acorn-walk "^7.2.0" + babel-plugin-add-react-displayname "^0.0.5" + babel-plugin-react-docgen "^4.2.1" + core-js "^3.8.2" + escodegen "^2.0.0" + fs-extra "^9.0.1" + global "^4.4.0" + html-tags "^3.1.0" + lodash "^4.17.21" + prop-types "^15.7.2" + react-element-to-jsx-string "^14.3.4" + react-refresh "^0.11.0" + read-pkg-up "^7.0.1" + regenerator-runtime "^0.13.7" + ts-dedent "^2.0.0" + util-deprecate "^1.0.2" + webpack ">=4.43.0 <6.0.0" "@storybook/router@6.5.13": - "integrity" "sha512-sf5aogfirH5ucD0d0hc2mKf2iyWsZsvXhr5kjxUQmgkcoflkGUWhc34sbSQVRQ1i8K5lkLIDH/q2s1Zr2SbzhQ==" - "resolved" "https://registry.npmjs.org/@storybook/router/-/router-6.5.13.tgz" - "version" "6.5.13" + version "6.5.13" + resolved "https://registry.npmjs.org/@storybook/router/-/router-6.5.13.tgz" + integrity sha512-sf5aogfirH5ucD0d0hc2mKf2iyWsZsvXhr5kjxUQmgkcoflkGUWhc34sbSQVRQ1i8K5lkLIDH/q2s1Zr2SbzhQ== dependencies: "@storybook/client-logger" "6.5.13" - "core-js" "^3.8.2" - "memoizerific" "^1.11.3" - "qs" "^6.10.0" - "regenerator-runtime" "^0.13.7" + core-js "^3.8.2" + memoizerific "^1.11.3" + qs "^6.10.0" + regenerator-runtime "^0.13.7" "@storybook/router@6.5.9": - "integrity" "sha512-G2Xp/2r8vU2O34eelE+G5VbEEVFDeHcCURrVJEROh6dq2asFJAPbzslVXSeCqgOTNLSpRDJ2NcN5BckkNqmqJg==" - "resolved" "https://registry.npmjs.org/@storybook/router/-/router-6.5.9.tgz" - "version" "6.5.9" + version "6.5.9" + resolved "https://registry.npmjs.org/@storybook/router/-/router-6.5.9.tgz" + integrity sha512-G2Xp/2r8vU2O34eelE+G5VbEEVFDeHcCURrVJEROh6dq2asFJAPbzslVXSeCqgOTNLSpRDJ2NcN5BckkNqmqJg== dependencies: "@storybook/client-logger" "6.5.9" - "core-js" "^3.8.2" - "memoizerific" "^1.11.3" - "qs" "^6.10.0" - "regenerator-runtime" "^0.13.7" + core-js "^3.8.2" + memoizerific "^1.11.3" + qs "^6.10.0" + regenerator-runtime "^0.13.7" "@storybook/semver@^7.3.2": - "integrity" "sha512-SWeszlsiPsMI0Ps0jVNtH64cI5c0UF3f7KgjVKJoNP30crQ6wUSddY2hsdeczZXEKVJGEn50Q60flcGsQGIcrg==" - "resolved" "https://registry.npmjs.org/@storybook/semver/-/semver-7.3.2.tgz" - "version" "7.3.2" + version "7.3.2" + resolved "https://registry.npmjs.org/@storybook/semver/-/semver-7.3.2.tgz" + integrity sha512-SWeszlsiPsMI0Ps0jVNtH64cI5c0UF3f7KgjVKJoNP30crQ6wUSddY2hsdeczZXEKVJGEn50Q60flcGsQGIcrg== dependencies: - "core-js" "^3.6.5" - "find-up" "^4.1.0" + core-js "^3.6.5" + find-up "^4.1.0" "@storybook/source-loader@6.5.9": - "integrity" "sha512-H03nFKaP6borfWMTTa9igBA+Jm2ph+FoVJImWC/X+LAmLSJYYSXuqSgmiZ/DZvbjxS4k8vccE2HXogne1IvaRA==" - "resolved" "https://registry.npmjs.org/@storybook/source-loader/-/source-loader-6.5.9.tgz" - "version" "6.5.9" + version "6.5.9" + resolved "https://registry.npmjs.org/@storybook/source-loader/-/source-loader-6.5.9.tgz" + integrity sha512-H03nFKaP6borfWMTTa9igBA+Jm2ph+FoVJImWC/X+LAmLSJYYSXuqSgmiZ/DZvbjxS4k8vccE2HXogne1IvaRA== dependencies: "@storybook/addons" "6.5.9" "@storybook/client-logger" "6.5.9" "@storybook/csf" "0.0.2--canary.4566f4d.1" - "core-js" "^3.8.2" - "estraverse" "^5.2.0" - "global" "^4.4.0" - "loader-utils" "^2.0.0" - "lodash" "^4.17.21" - "prettier" ">=2.2.1 <=2.3.0" - "regenerator-runtime" "^0.13.7" + core-js "^3.8.2" + estraverse "^5.2.0" + global "^4.4.0" + loader-utils "^2.0.0" + lodash "^4.17.21" + prettier ">=2.2.1 <=2.3.0" + regenerator-runtime "^0.13.7" "@storybook/store@6.5.9": - "integrity" "sha512-80pcDTcCwK6wUA63aWOp13urI77jfipIVee9mpVvbNyfrNN8kGv1BS0z/JHDxuV6rC4g7LG1fb+BurR0yki7BA==" - "resolved" "https://registry.npmjs.org/@storybook/store/-/store-6.5.9.tgz" - "version" "6.5.9" + version "6.5.9" + resolved "https://registry.npmjs.org/@storybook/store/-/store-6.5.9.tgz" + integrity sha512-80pcDTcCwK6wUA63aWOp13urI77jfipIVee9mpVvbNyfrNN8kGv1BS0z/JHDxuV6rC4g7LG1fb+BurR0yki7BA== dependencies: "@storybook/addons" "6.5.9" "@storybook/client-logger" "6.5.9" "@storybook/core-events" "6.5.9" "@storybook/csf" "0.0.2--canary.4566f4d.1" - "core-js" "^3.8.2" - "fast-deep-equal" "^3.1.3" - "global" "^4.4.0" - "lodash" "^4.17.21" - "memoizerific" "^1.11.3" - "regenerator-runtime" "^0.13.7" - "slash" "^3.0.0" - "stable" "^0.1.8" - "synchronous-promise" "^2.0.15" - "ts-dedent" "^2.0.0" - "util-deprecate" "^1.0.2" + core-js "^3.8.2" + fast-deep-equal "^3.1.3" + global "^4.4.0" + lodash "^4.17.21" + memoizerific "^1.11.3" + regenerator-runtime "^0.13.7" + slash "^3.0.0" + stable "^0.1.8" + synchronous-promise "^2.0.15" + ts-dedent "^2.0.0" + util-deprecate "^1.0.2" "@storybook/telemetry@6.5.9": - "integrity" "sha512-JluoHCRhHAr4X0eUNVBSBi1JIBA92404Tu1TPdbN7x6gCZxHXXPTSUTAnspXp/21cTdMhY2x+kfZQ8fmlGK4MQ==" - "resolved" "https://registry.npmjs.org/@storybook/telemetry/-/telemetry-6.5.9.tgz" - "version" "6.5.9" + version "6.5.9" + resolved "https://registry.npmjs.org/@storybook/telemetry/-/telemetry-6.5.9.tgz" + integrity sha512-JluoHCRhHAr4X0eUNVBSBi1JIBA92404Tu1TPdbN7x6gCZxHXXPTSUTAnspXp/21cTdMhY2x+kfZQ8fmlGK4MQ== dependencies: "@storybook/client-logger" "6.5.9" "@storybook/core-common" "6.5.9" - "chalk" "^4.1.0" - "core-js" "^3.8.2" - "detect-package-manager" "^2.0.1" - "fetch-retry" "^5.0.2" - "fs-extra" "^9.0.1" - "global" "^4.4.0" - "isomorphic-unfetch" "^3.1.0" - "nanoid" "^3.3.1" - "read-pkg-up" "^7.0.1" - "regenerator-runtime" "^0.13.7" + chalk "^4.1.0" + core-js "^3.8.2" + detect-package-manager "^2.0.1" + fetch-retry "^5.0.2" + fs-extra "^9.0.1" + global "^4.4.0" + isomorphic-unfetch "^3.1.0" + nanoid "^3.3.1" + read-pkg-up "^7.0.1" + regenerator-runtime "^0.13.7" "@storybook/testing-library@=0.0.13": - "integrity" "sha512-vRMeIGer4EjJkTgI8sQyK9W431ekPWYCWL//OmSDJ64IT3h7FnW7Xg6p+eqM3oII98/O5pcya5049GxnjaPtxw==" - "resolved" "https://registry.npmjs.org/@storybook/testing-library/-/testing-library-0.0.13.tgz" - "version" "0.0.13" + version "0.0.13" + resolved "https://registry.npmjs.org/@storybook/testing-library/-/testing-library-0.0.13.tgz" + integrity sha512-vRMeIGer4EjJkTgI8sQyK9W431ekPWYCWL//OmSDJ64IT3h7FnW7Xg6p+eqM3oII98/O5pcya5049GxnjaPtxw== dependencies: "@storybook/client-logger" "^6.4.0" "@storybook/instrumenter" "^6.4.0" "@testing-library/dom" "^8.3.0" "@testing-library/user-event" "^13.2.1" - "ts-dedent" "^2.2.0" + ts-dedent "^2.2.0" -"@storybook/theming@^6.0.0", "@storybook/theming@6.5.13": - "integrity" "sha512-oif5NGFAUQhizo50r+ctw2hZNLWV4dPHai+L/gFvbaSeRBeHSNkIcMoZ2FlrO566HdGZTDutYXcR+xus8rI28g==" - "resolved" "https://registry.npmjs.org/@storybook/theming/-/theming-6.5.13.tgz" - "version" "6.5.13" +"@storybook/theming@6.5.13": + version "6.5.13" + resolved "https://registry.npmjs.org/@storybook/theming/-/theming-6.5.13.tgz" + integrity sha512-oif5NGFAUQhizo50r+ctw2hZNLWV4dPHai+L/gFvbaSeRBeHSNkIcMoZ2FlrO566HdGZTDutYXcR+xus8rI28g== dependencies: "@storybook/client-logger" "6.5.13" - "core-js" "^3.8.2" - "memoizerific" "^1.11.3" - "regenerator-runtime" "^0.13.7" + core-js "^3.8.2" + memoizerific "^1.11.3" + regenerator-runtime "^0.13.7" "@storybook/theming@6.5.9": - "integrity" "sha512-KM0AMP5jMQPAdaO8tlbFCYqx9uYM/hZXGSVUhznhLYu7bhNAIK7ZVmXxyE/z/khM++8eUHzRoZGiO/cwCkg9Xw==" - "resolved" "https://registry.npmjs.org/@storybook/theming/-/theming-6.5.9.tgz" - "version" "6.5.9" + version "6.5.9" + resolved "https://registry.npmjs.org/@storybook/theming/-/theming-6.5.9.tgz" + integrity sha512-KM0AMP5jMQPAdaO8tlbFCYqx9uYM/hZXGSVUhznhLYu7bhNAIK7ZVmXxyE/z/khM++8eUHzRoZGiO/cwCkg9Xw== dependencies: "@storybook/client-logger" "6.5.9" - "core-js" "^3.8.2" - "memoizerific" "^1.11.3" - "regenerator-runtime" "^0.13.7" + core-js "^3.8.2" + memoizerific "^1.11.3" + regenerator-runtime "^0.13.7" "@storybook/ui@6.5.9": - "integrity" "sha512-ryuPxJgtbb0gPXKGgGAUC+Z185xGAd1IvQ0jM5fJ0SisHXI8jteG3RaWhntOehi9qCg+64Vv6eH/cj9QYNHt1Q==" - "resolved" "https://registry.npmjs.org/@storybook/ui/-/ui-6.5.9.tgz" - "version" "6.5.9" + version "6.5.9" + resolved "https://registry.npmjs.org/@storybook/ui/-/ui-6.5.9.tgz" + integrity sha512-ryuPxJgtbb0gPXKGgGAUC+Z185xGAd1IvQ0jM5fJ0SisHXI8jteG3RaWhntOehi9qCg+64Vv6eH/cj9QYNHt1Q== dependencies: "@storybook/addons" "6.5.9" "@storybook/api" "6.5.9" @@ -3904,118 +3864,118 @@ "@storybook/router" "6.5.9" "@storybook/semver" "^7.3.2" "@storybook/theming" "6.5.9" - "core-js" "^3.8.2" - "memoizerific" "^1.11.3" - "qs" "^6.10.0" - "regenerator-runtime" "^0.13.7" - "resolve-from" "^5.0.0" + core-js "^3.8.2" + memoizerific "^1.11.3" + qs "^6.10.0" + regenerator-runtime "^0.13.7" + resolve-from "^5.0.0" "@stripe/react-stripe-js@^1.0.3": - "integrity" "sha512-nqIOuAbbAN1p/zj2d2vykMzd097ZiHbu0+EpPRcfiswBRQIQIZaPrUwmj6HGD8BRA6Wp89mZen1UJbqtsfc3ZA==" - "resolved" "https://registry.npmjs.org/@stripe/react-stripe-js/-/react-stripe-js-1.15.0.tgz" - "version" "1.15.0" + version "1.15.0" + resolved "https://registry.npmjs.org/@stripe/react-stripe-js/-/react-stripe-js-1.15.0.tgz" + integrity sha512-nqIOuAbbAN1p/zj2d2vykMzd097ZiHbu0+EpPRcfiswBRQIQIZaPrUwmj6HGD8BRA6Wp89mZen1UJbqtsfc3ZA== dependencies: - "prop-types" "^15.7.2" + prop-types "^15.7.2" -"@stripe/stripe-js@^1.0.3", "@stripe/stripe-js@^1.44.1": - "integrity" "sha512-DKj3U6tS+sCNsSXsoZbOl5gDrAVD3cAZ9QCiVSykLC3iJo085kkmw/3BAACRH54Bq2bN34yySuH6G1SLh2xHXA==" - "resolved" "https://registry.npmjs.org/@stripe/stripe-js/-/stripe-js-1.44.1.tgz" - "version" "1.44.1" +"@stripe/stripe-js@^1.0.3": + version "1.44.1" + resolved "https://registry.npmjs.org/@stripe/stripe-js/-/stripe-js-1.44.1.tgz" + integrity sha512-DKj3U6tS+sCNsSXsoZbOl5gDrAVD3cAZ9QCiVSykLC3iJo085kkmw/3BAACRH54Bq2bN34yySuH6G1SLh2xHXA== "@surma/rollup-plugin-off-main-thread@^2.2.3": - "integrity" "sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ==" - "resolved" "https://registry.npmjs.org/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz" - "version" "2.2.3" + version "2.2.3" + resolved "https://registry.npmjs.org/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz" + integrity sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ== dependencies: - "ejs" "^3.1.6" - "json5" "^2.2.0" - "magic-string" "^0.25.0" - "string.prototype.matchall" "^4.0.6" + ejs "^3.1.6" + json5 "^2.2.0" + magic-string "^0.25.0" + string.prototype.matchall "^4.0.6" "@svgr/babel-plugin-add-jsx-attribute@^4.2.0": - "integrity" "sha512-j7KnilGyZzYr/jhcrSYS3FGWMZVaqyCG0vzMCwzvei0coIkczuYMcniK07nI0aHJINciujjH11T72ICW5eL5Ig==" - "resolved" "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-4.2.0.tgz" - "version" "4.2.0" + version "4.2.0" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-4.2.0.tgz" + integrity sha512-j7KnilGyZzYr/jhcrSYS3FGWMZVaqyCG0vzMCwzvei0coIkczuYMcniK07nI0aHJINciujjH11T72ICW5eL5Ig== "@svgr/babel-plugin-add-jsx-attribute@^5.4.0": - "integrity" "sha512-ZFf2gs/8/6B8PnSofI0inYXr2SDNTDScPXhN7k5EqD4aZ3gi6u+rbmZHVB8IM3wDyx8ntKACZbtXSm7oZGRqVg==" - "resolved" "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-5.4.0.tgz" - "version" "5.4.0" + version "5.4.0" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-5.4.0.tgz" + integrity sha512-ZFf2gs/8/6B8PnSofI0inYXr2SDNTDScPXhN7k5EqD4aZ3gi6u+rbmZHVB8IM3wDyx8ntKACZbtXSm7oZGRqVg== "@svgr/babel-plugin-remove-jsx-attribute@^4.2.0": - "integrity" "sha512-3XHLtJ+HbRCH4n28S7y/yZoEQnRpl0tvTZQsHqvaeNXPra+6vE5tbRliH3ox1yZYPCxrlqaJT/Mg+75GpDKlvQ==" - "resolved" "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-4.2.0.tgz" - "version" "4.2.0" + version "4.2.0" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-4.2.0.tgz" + integrity sha512-3XHLtJ+HbRCH4n28S7y/yZoEQnRpl0tvTZQsHqvaeNXPra+6vE5tbRliH3ox1yZYPCxrlqaJT/Mg+75GpDKlvQ== "@svgr/babel-plugin-remove-jsx-attribute@^5.4.0": - "integrity" "sha512-yaS4o2PgUtwLFGTKbsiAy6D0o3ugcUhWK0Z45umJ66EPWunAz9fuFw2gJuje6wqQvQWOTJvIahUwndOXb7QCPg==" - "resolved" "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-5.4.0.tgz" - "version" "5.4.0" + version "5.4.0" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-5.4.0.tgz" + integrity sha512-yaS4o2PgUtwLFGTKbsiAy6D0o3ugcUhWK0Z45umJ66EPWunAz9fuFw2gJuje6wqQvQWOTJvIahUwndOXb7QCPg== "@svgr/babel-plugin-remove-jsx-empty-expression@^4.2.0": - "integrity" "sha512-yTr2iLdf6oEuUE9MsRdvt0NmdpMBAkgK8Bjhl6epb+eQWk6abBaX3d65UZ3E3FWaOwePyUgNyNCMVG61gGCQ7w==" - "resolved" "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-4.2.0.tgz" - "version" "4.2.0" + version "4.2.0" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-4.2.0.tgz" + integrity sha512-yTr2iLdf6oEuUE9MsRdvt0NmdpMBAkgK8Bjhl6epb+eQWk6abBaX3d65UZ3E3FWaOwePyUgNyNCMVG61gGCQ7w== "@svgr/babel-plugin-remove-jsx-empty-expression@^5.0.1": - "integrity" "sha512-LA72+88A11ND/yFIMzyuLRSMJ+tRKeYKeQ+mR3DcAZ5I4h5CPWN9AHyUzJbWSYp/u2u0xhmgOe0+E41+GjEueA==" - "resolved" "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-5.0.1.tgz" - "version" "5.0.1" + version "5.0.1" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-5.0.1.tgz" + integrity sha512-LA72+88A11ND/yFIMzyuLRSMJ+tRKeYKeQ+mR3DcAZ5I4h5CPWN9AHyUzJbWSYp/u2u0xhmgOe0+E41+GjEueA== "@svgr/babel-plugin-replace-jsx-attribute-value@^4.2.0": - "integrity" "sha512-U9m870Kqm0ko8beHawRXLGLvSi/ZMrl89gJ5BNcT452fAjtF2p4uRzXkdzvGJJJYBgx7BmqlDjBN/eCp5AAX2w==" - "resolved" "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-4.2.0.tgz" - "version" "4.2.0" + version "4.2.0" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-4.2.0.tgz" + integrity sha512-U9m870Kqm0ko8beHawRXLGLvSi/ZMrl89gJ5BNcT452fAjtF2p4uRzXkdzvGJJJYBgx7BmqlDjBN/eCp5AAX2w== "@svgr/babel-plugin-replace-jsx-attribute-value@^5.0.1": - "integrity" "sha512-PoiE6ZD2Eiy5mK+fjHqwGOS+IXX0wq/YDtNyIgOrc6ejFnxN4b13pRpiIPbtPwHEc+NT2KCjteAcq33/F1Y9KQ==" - "resolved" "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-5.0.1.tgz" - "version" "5.0.1" + version "5.0.1" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-5.0.1.tgz" + integrity sha512-PoiE6ZD2Eiy5mK+fjHqwGOS+IXX0wq/YDtNyIgOrc6ejFnxN4b13pRpiIPbtPwHEc+NT2KCjteAcq33/F1Y9KQ== "@svgr/babel-plugin-svg-dynamic-title@^4.3.3": - "integrity" "sha512-w3Be6xUNdwgParsvxkkeZb545VhXEwjGMwExMVBIdPQJeyMQHqm9Msnb2a1teHBqUYL66qtwfhNkbj1iarCG7w==" - "resolved" "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-4.3.3.tgz" - "version" "4.3.3" + version "4.3.3" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-4.3.3.tgz" + integrity sha512-w3Be6xUNdwgParsvxkkeZb545VhXEwjGMwExMVBIdPQJeyMQHqm9Msnb2a1teHBqUYL66qtwfhNkbj1iarCG7w== "@svgr/babel-plugin-svg-dynamic-title@^5.4.0": - "integrity" "sha512-zSOZH8PdZOpuG1ZVx/cLVePB2ibo3WPpqo7gFIjLV9a0QsuQAzJiwwqmuEdTaW2pegyBE17Uu15mOgOcgabQZg==" - "resolved" "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-5.4.0.tgz" - "version" "5.4.0" + version "5.4.0" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-5.4.0.tgz" + integrity sha512-zSOZH8PdZOpuG1ZVx/cLVePB2ibo3WPpqo7gFIjLV9a0QsuQAzJiwwqmuEdTaW2pegyBE17Uu15mOgOcgabQZg== "@svgr/babel-plugin-svg-em-dimensions@^4.2.0": - "integrity" "sha512-C0Uy+BHolCHGOZ8Dnr1zXy/KgpBOkEUYY9kI/HseHVPeMbluaX3CijJr7D4C5uR8zrc1T64nnq/k63ydQuGt4w==" - "resolved" "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-4.2.0.tgz" - "version" "4.2.0" + version "4.2.0" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-4.2.0.tgz" + integrity sha512-C0Uy+BHolCHGOZ8Dnr1zXy/KgpBOkEUYY9kI/HseHVPeMbluaX3CijJr7D4C5uR8zrc1T64nnq/k63ydQuGt4w== "@svgr/babel-plugin-svg-em-dimensions@^5.4.0": - "integrity" "sha512-cPzDbDA5oT/sPXDCUYoVXEmm3VIoAWAPT6mSPTJNbQaBNUuEKVKyGH93oDY4e42PYHRW67N5alJx/eEol20abw==" - "resolved" "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-5.4.0.tgz" - "version" "5.4.0" + version "5.4.0" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-5.4.0.tgz" + integrity sha512-cPzDbDA5oT/sPXDCUYoVXEmm3VIoAWAPT6mSPTJNbQaBNUuEKVKyGH93oDY4e42PYHRW67N5alJx/eEol20abw== "@svgr/babel-plugin-transform-react-native-svg@^4.2.0": - "integrity" "sha512-7YvynOpZDpCOUoIVlaaOUU87J4Z6RdD6spYN4eUb5tfPoKGSF9OG2NuhgYnq4jSkAxcpMaXWPf1cePkzmqTPNw==" - "resolved" "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-4.2.0.tgz" - "version" "4.2.0" + version "4.2.0" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-4.2.0.tgz" + integrity sha512-7YvynOpZDpCOUoIVlaaOUU87J4Z6RdD6spYN4eUb5tfPoKGSF9OG2NuhgYnq4jSkAxcpMaXWPf1cePkzmqTPNw== "@svgr/babel-plugin-transform-react-native-svg@^5.4.0": - "integrity" "sha512-3eYP/SaopZ41GHwXma7Rmxcv9uRslRDTY1estspeB1w1ueZWd/tPlMfEOoccYpEMZU3jD4OU7YitnXcF5hLW2Q==" - "resolved" "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-5.4.0.tgz" - "version" "5.4.0" + version "5.4.0" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-5.4.0.tgz" + integrity sha512-3eYP/SaopZ41GHwXma7Rmxcv9uRslRDTY1estspeB1w1ueZWd/tPlMfEOoccYpEMZU3jD4OU7YitnXcF5hLW2Q== "@svgr/babel-plugin-transform-svg-component@^4.2.0": - "integrity" "sha512-hYfYuZhQPCBVotABsXKSCfel2slf/yvJY8heTVX1PCTaq/IgASq1IyxPPKJ0chWREEKewIU/JMSsIGBtK1KKxw==" - "resolved" "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-4.2.0.tgz" - "version" "4.2.0" + version "4.2.0" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-4.2.0.tgz" + integrity sha512-hYfYuZhQPCBVotABsXKSCfel2slf/yvJY8heTVX1PCTaq/IgASq1IyxPPKJ0chWREEKewIU/JMSsIGBtK1KKxw== "@svgr/babel-plugin-transform-svg-component@^5.5.0": - "integrity" "sha512-q4jSH1UUvbrsOtlo/tKcgSeiCHRSBdXoIoqX1pgcKK/aU3JD27wmMKwGtpB8qRYUYoyXvfGxUVKchLuR5pB3rQ==" - "resolved" "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-5.5.0.tgz" - "version" "5.5.0" + version "5.5.0" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-5.5.0.tgz" + integrity sha512-q4jSH1UUvbrsOtlo/tKcgSeiCHRSBdXoIoqX1pgcKK/aU3JD27wmMKwGtpB8qRYUYoyXvfGxUVKchLuR5pB3rQ== "@svgr/babel-preset@^4.3.3": - "integrity" "sha512-6PG80tdz4eAlYUN3g5GZiUjg2FMcp+Wn6rtnz5WJG9ITGEF1pmFdzq02597Hn0OmnQuCVaBYQE1OVFAnwOl+0A==" - "resolved" "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-4.3.3.tgz" - "version" "4.3.3" + version "4.3.3" + resolved "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-4.3.3.tgz" + integrity sha512-6PG80tdz4eAlYUN3g5GZiUjg2FMcp+Wn6rtnz5WJG9ITGEF1pmFdzq02597Hn0OmnQuCVaBYQE1OVFAnwOl+0A== dependencies: "@svgr/babel-plugin-add-jsx-attribute" "^4.2.0" "@svgr/babel-plugin-remove-jsx-attribute" "^4.2.0" @@ -4027,9 +3987,9 @@ "@svgr/babel-plugin-transform-svg-component" "^4.2.0" "@svgr/babel-preset@^5.5.0": - "integrity" "sha512-4FiXBjvQ+z2j7yASeGPEi8VD/5rrGQk4Xrq3EdJmoZgz/tpqChpo5hgXDvmEauwtvOc52q8ghhZK4Oy7qph4ig==" - "resolved" "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-5.5.0.tgz" - "version" "5.5.0" + version "5.5.0" + resolved "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-5.5.0.tgz" + integrity sha512-4FiXBjvQ+z2j7yASeGPEi8VD/5rrGQk4Xrq3EdJmoZgz/tpqChpo5hgXDvmEauwtvOc52q8ghhZK4Oy7qph4ig== dependencies: "@svgr/babel-plugin-add-jsx-attribute" "^5.4.0" "@svgr/babel-plugin-remove-jsx-attribute" "^5.4.0" @@ -4041,93 +4001,79 @@ "@svgr/babel-plugin-transform-svg-component" "^5.5.0" "@svgr/core@^4.3.3": - "integrity" "sha512-qNuGF1QON1626UCaZamWt5yedpgOytvLj5BQZe2j1k1B8DUG4OyugZyfEwBeXozCUwhLEpsrgPrE+eCu4fY17w==" - "resolved" "https://registry.npmjs.org/@svgr/core/-/core-4.3.3.tgz" - "version" "4.3.3" + version "4.3.3" + resolved "https://registry.npmjs.org/@svgr/core/-/core-4.3.3.tgz" + integrity sha512-qNuGF1QON1626UCaZamWt5yedpgOytvLj5BQZe2j1k1B8DUG4OyugZyfEwBeXozCUwhLEpsrgPrE+eCu4fY17w== dependencies: "@svgr/plugin-jsx" "^4.3.3" - "camelcase" "^5.3.1" - "cosmiconfig" "^5.2.1" + camelcase "^5.3.1" + cosmiconfig "^5.2.1" "@svgr/core@^5.5.0": - "integrity" "sha512-q52VOcsJPvV3jO1wkPtzTuKlvX7Y3xIcWRpCMtBF3MrteZJtBfQw/+u0B1BHy5ColpQc1/YVTrPEtSYIMNZlrQ==" - "resolved" "https://registry.npmjs.org/@svgr/core/-/core-5.5.0.tgz" - "version" "5.5.0" + version "5.5.0" + resolved "https://registry.npmjs.org/@svgr/core/-/core-5.5.0.tgz" + integrity sha512-q52VOcsJPvV3jO1wkPtzTuKlvX7Y3xIcWRpCMtBF3MrteZJtBfQw/+u0B1BHy5ColpQc1/YVTrPEtSYIMNZlrQ== dependencies: "@svgr/plugin-jsx" "^5.5.0" - "camelcase" "^6.2.0" - "cosmiconfig" "^7.0.0" + camelcase "^6.2.0" + cosmiconfig "^7.0.0" "@svgr/hast-util-to-babel-ast@^4.3.2": - "integrity" "sha512-JioXclZGhFIDL3ddn4Kiq8qEqYM2PyDKV0aYno8+IXTLuYt6TOgHUbUAAFvqtb0Xn37NwP0BTHglejFoYr8RZg==" - "resolved" "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-4.3.2.tgz" - "version" "4.3.2" + version "4.3.2" + resolved "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-4.3.2.tgz" + integrity sha512-JioXclZGhFIDL3ddn4Kiq8qEqYM2PyDKV0aYno8+IXTLuYt6TOgHUbUAAFvqtb0Xn37NwP0BTHglejFoYr8RZg== dependencies: "@babel/types" "^7.4.4" "@svgr/hast-util-to-babel-ast@^5.5.0": - "integrity" "sha512-cAaR/CAiZRB8GP32N+1jocovUtvlj0+e65TB50/6Lcime+EA49m/8l+P2ko+XPJ4dw3xaPS3jOL4F2X4KWxoeQ==" - "resolved" "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-5.5.0.tgz" - "version" "5.5.0" + version "5.5.0" + resolved "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-5.5.0.tgz" + integrity sha512-cAaR/CAiZRB8GP32N+1jocovUtvlj0+e65TB50/6Lcime+EA49m/8l+P2ko+XPJ4dw3xaPS3jOL4F2X4KWxoeQ== dependencies: "@babel/types" "^7.12.6" "@svgr/plugin-jsx@^4.3.3": - "integrity" "sha512-cLOCSpNWQnDB1/v+SUENHH7a0XY09bfuMKdq9+gYvtuwzC2rU4I0wKGFEp1i24holdQdwodCtDQdFtJiTCWc+w==" - "resolved" "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-4.3.3.tgz" - "version" "4.3.3" + version "4.3.3" + resolved "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-4.3.3.tgz" + integrity sha512-cLOCSpNWQnDB1/v+SUENHH7a0XY09bfuMKdq9+gYvtuwzC2rU4I0wKGFEp1i24holdQdwodCtDQdFtJiTCWc+w== dependencies: "@babel/core" "^7.4.5" "@svgr/babel-preset" "^4.3.3" "@svgr/hast-util-to-babel-ast" "^4.3.2" - "svg-parser" "^2.0.0" + svg-parser "^2.0.0" "@svgr/plugin-jsx@^5.5.0": - "integrity" "sha512-V/wVh33j12hGh05IDg8GpIUXbjAPnTdPTKuP4VNLggnwaHMPNQNae2pRnyTAILWCQdz5GyMqtO488g7CKM8CBA==" - "resolved" "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-5.5.0.tgz" - "version" "5.5.0" + version "5.5.0" + resolved "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-5.5.0.tgz" + integrity sha512-V/wVh33j12hGh05IDg8GpIUXbjAPnTdPTKuP4VNLggnwaHMPNQNae2pRnyTAILWCQdz5GyMqtO488g7CKM8CBA== dependencies: "@babel/core" "^7.12.3" "@svgr/babel-preset" "^5.5.0" "@svgr/hast-util-to-babel-ast" "^5.5.0" - "svg-parser" "^2.0.2" + svg-parser "^2.0.2" "@svgr/plugin-svgo@^4.3.1": - "integrity" "sha512-PrMtEDUWjX3Ea65JsVCwTIXuSqa3CG9px+DluF1/eo9mlDrgrtFE7NE/DjdhjJgSM9wenlVBzkzneSIUgfUI/w==" - "resolved" "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-4.3.1.tgz" - "version" "4.3.1" + version "4.3.1" + resolved "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-4.3.1.tgz" + integrity sha512-PrMtEDUWjX3Ea65JsVCwTIXuSqa3CG9px+DluF1/eo9mlDrgrtFE7NE/DjdhjJgSM9wenlVBzkzneSIUgfUI/w== dependencies: - "cosmiconfig" "^5.2.1" - "merge-deep" "^3.0.2" - "svgo" "^1.2.2" + cosmiconfig "^5.2.1" + merge-deep "^3.0.2" + svgo "^1.2.2" "@svgr/plugin-svgo@^5.5.0": - "integrity" "sha512-r5swKk46GuQl4RrVejVwpeeJaydoxkdwkM1mBKOgJLBUJPGaLci6ylg/IjhrRsREKDkr4kbMWdgOtbXEh0fyLQ==" - "resolved" "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-5.5.0.tgz" - "version" "5.5.0" + version "5.5.0" + resolved "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-5.5.0.tgz" + integrity sha512-r5swKk46GuQl4RrVejVwpeeJaydoxkdwkM1mBKOgJLBUJPGaLci6ylg/IjhrRsREKDkr4kbMWdgOtbXEh0fyLQ== dependencies: - "cosmiconfig" "^7.0.0" - "deepmerge" "^4.2.2" - "svgo" "^1.2.2" - -"@svgr/webpack@^5.5.0": - "integrity" "sha512-DOBOK255wfQxguUta2INKkzPj6AIS6iafZYiYmHn6W3pHlycSRRlvWKCfLDG10fXfLWqE3DJHgRUOyJYmARa7g==" - "resolved" "https://registry.npmjs.org/@svgr/webpack/-/webpack-5.5.0.tgz" - "version" "5.5.0" - dependencies: - "@babel/core" "^7.12.3" - "@babel/plugin-transform-react-constant-elements" "^7.12.1" - "@babel/preset-env" "^7.12.1" - "@babel/preset-react" "^7.12.5" - "@svgr/core" "^5.5.0" - "@svgr/plugin-jsx" "^5.5.0" - "@svgr/plugin-svgo" "^5.5.0" - "loader-utils" "^2.0.0" + cosmiconfig "^7.0.0" + deepmerge "^4.2.2" + svgo "^1.2.2" "@svgr/webpack@4.3.3": - "integrity" "sha512-bjnWolZ6KVsHhgyCoYRFmbd26p8XVbulCzSG53BDQqAr+JOAderYK7CuYrB3bDjHJuF6LJ7Wrr42+goLRV9qIg==" - "resolved" "https://registry.npmjs.org/@svgr/webpack/-/webpack-4.3.3.tgz" - "version" "4.3.3" + version "4.3.3" + resolved "https://registry.npmjs.org/@svgr/webpack/-/webpack-4.3.3.tgz" + integrity sha512-bjnWolZ6KVsHhgyCoYRFmbd26p8XVbulCzSG53BDQqAr+JOAderYK7CuYrB3bDjHJuF6LJ7Wrr42+goLRV9qIg== dependencies: "@babel/core" "^7.4.5" "@babel/plugin-transform-react-constant-elements" "^7.0.0" @@ -4136,136 +4082,150 @@ "@svgr/core" "^4.3.3" "@svgr/plugin-jsx" "^4.3.3" "@svgr/plugin-svgo" "^4.3.1" - "loader-utils" "^1.2.3" + loader-utils "^1.2.3" + +"@svgr/webpack@^5.5.0": + version "5.5.0" + resolved "https://registry.npmjs.org/@svgr/webpack/-/webpack-5.5.0.tgz" + integrity sha512-DOBOK255wfQxguUta2INKkzPj6AIS6iafZYiYmHn6W3pHlycSRRlvWKCfLDG10fXfLWqE3DJHgRUOyJYmARa7g== + dependencies: + "@babel/core" "^7.12.3" + "@babel/plugin-transform-react-constant-elements" "^7.12.1" + "@babel/preset-env" "^7.12.1" + "@babel/preset-react" "^7.12.5" + "@svgr/core" "^5.5.0" + "@svgr/plugin-jsx" "^5.5.0" + "@svgr/plugin-svgo" "^5.5.0" + loader-utils "^2.0.0" "@szmarczak/http-timer@^1.1.2": - "integrity" "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==" - "resolved" "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz" - "version" "1.1.2" + version "1.1.2" + resolved "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz" + integrity sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA== dependencies: - "defer-to-connect" "^1.0.1" + defer-to-connect "^1.0.1" "@tailwindcss/forms@^0.5.2": - "integrity" "sha512-y5mb86JUoiUgBjY/o6FJSFZSEttfb3Q5gllE4xoKjAAD+vBrnIhE4dViwUuow3va8mpH4s9jyUbUbrRGoRdc2Q==" - "resolved" "https://registry.npmjs.org/@tailwindcss/forms/-/forms-0.5.3.tgz" - "version" "0.5.3" + version "0.5.3" + resolved "https://registry.npmjs.org/@tailwindcss/forms/-/forms-0.5.3.tgz" + integrity sha512-y5mb86JUoiUgBjY/o6FJSFZSEttfb3Q5gllE4xoKjAAD+vBrnIhE4dViwUuow3va8mpH4s9jyUbUbrRGoRdc2Q== dependencies: - "mini-svg-data-uri" "^1.2.3" + mini-svg-data-uri "^1.2.3" "@tanem/svg-injector@^8.2.4": - "integrity" "sha512-jQ6UPPY2oSu2d0YLngtvnOIoKheYsB/s2bNP/QdsLrsvlz+PzUUO4RUWBN3+8clZPi2SI5OMF/YoTiTKt5v2xw==" - "resolved" "https://registry.npmjs.org/@tanem/svg-injector/-/svg-injector-8.2.5.tgz" - "version" "8.2.5" + version "8.2.5" + resolved "https://registry.npmjs.org/@tanem/svg-injector/-/svg-injector-8.2.5.tgz" + integrity sha512-jQ6UPPY2oSu2d0YLngtvnOIoKheYsB/s2bNP/QdsLrsvlz+PzUUO4RUWBN3+8clZPi2SI5OMF/YoTiTKt5v2xw== dependencies: "@babel/runtime" "^7.12.13" - "content-type" "^1.0.4" - "tslib" "^2.1.0" + content-type "^1.0.4" + tslib "^2.1.0" -"@testing-library/dom@^6.15.0", "@testing-library/dom@>=5": - "integrity" "sha512-lBD88ssxqEfz0wFL6MeUyyWZfV/2cjEZZV3YRpb2IoJRej/4f1jB0TzqIOznTpfR1r34CNesrubxwIlAQ8zgPA==" - "resolved" "https://registry.npmjs.org/@testing-library/dom/-/dom-6.16.0.tgz" - "version" "6.16.0" +"@testing-library/dom@^6.15.0": + version "6.16.0" + resolved "https://registry.npmjs.org/@testing-library/dom/-/dom-6.16.0.tgz" + integrity sha512-lBD88ssxqEfz0wFL6MeUyyWZfV/2cjEZZV3YRpb2IoJRej/4f1jB0TzqIOznTpfR1r34CNesrubxwIlAQ8zgPA== dependencies: "@babel/runtime" "^7.8.4" "@sheerun/mutationobserver-shim" "^0.3.2" "@types/testing-library__dom" "^6.12.1" - "aria-query" "^4.0.2" - "dom-accessibility-api" "^0.3.0" - "pretty-format" "^25.1.0" - "wait-for-expect" "^3.0.2" + aria-query "^4.0.2" + dom-accessibility-api "^0.3.0" + pretty-format "^25.1.0" + wait-for-expect "^3.0.2" -"@testing-library/dom@^8.3.0", "@testing-library/dom@>=7.21.4": - "integrity" "sha512-6YWYPPpxG3e/xOo6HIWwB/58HukkwIVTOaZ0VwdMVjhRUX/01E4FtQbck9GazOOj7MXHc5RBzMrU86iBJHbI+A==" - "resolved" "https://registry.npmjs.org/@testing-library/dom/-/dom-8.19.0.tgz" - "version" "8.19.0" +"@testing-library/dom@^8.3.0": + version "8.19.0" + resolved "https://registry.npmjs.org/@testing-library/dom/-/dom-8.19.0.tgz" + integrity sha512-6YWYPPpxG3e/xOo6HIWwB/58HukkwIVTOaZ0VwdMVjhRUX/01E4FtQbck9GazOOj7MXHc5RBzMrU86iBJHbI+A== dependencies: "@babel/code-frame" "^7.10.4" "@babel/runtime" "^7.12.5" "@types/aria-query" "^4.2.0" - "aria-query" "^5.0.0" - "chalk" "^4.1.0" - "dom-accessibility-api" "^0.5.9" - "lz-string" "^1.4.4" - "pretty-format" "^27.0.2" + aria-query "^5.0.0" + chalk "^4.1.0" + dom-accessibility-api "^0.5.9" + lz-string "^1.4.4" + pretty-format "^27.0.2" "@testing-library/jest-dom@^4.2.4": - "integrity" "sha512-j31Bn0rQo12fhCWOUWy9fl7wtqkp7In/YP2p5ZFyRuiiB9Qs3g+hS4gAmDWONbAHcRmVooNJ5eOHQDCOmUFXHg==" - "resolved" "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-4.2.4.tgz" - "version" "4.2.4" + version "4.2.4" + resolved "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-4.2.4.tgz" + integrity sha512-j31Bn0rQo12fhCWOUWy9fl7wtqkp7In/YP2p5ZFyRuiiB9Qs3g+hS4gAmDWONbAHcRmVooNJ5eOHQDCOmUFXHg== dependencies: "@babel/runtime" "^7.5.1" - "chalk" "^2.4.1" - "css" "^2.2.3" - "css.escape" "^1.5.1" - "jest-diff" "^24.0.0" - "jest-matcher-utils" "^24.0.0" - "lodash" "^4.17.11" - "pretty-format" "^24.0.0" - "redent" "^3.0.0" + chalk "^2.4.1" + css "^2.2.3" + css.escape "^1.5.1" + jest-diff "^24.0.0" + jest-matcher-utils "^24.0.0" + lodash "^4.17.11" + pretty-format "^24.0.0" + redent "^3.0.0" "@testing-library/react@^9.3.2": - "integrity" "sha512-di1b+D0p+rfeboHO5W7gTVeZDIK5+maEgstrZbWZSSvxDyfDRkkyBE1AJR5Psd6doNldluXlCWqXriUfqu/9Qg==" - "resolved" "https://registry.npmjs.org/@testing-library/react/-/react-9.5.0.tgz" - "version" "9.5.0" + version "9.5.0" + resolved "https://registry.npmjs.org/@testing-library/react/-/react-9.5.0.tgz" + integrity sha512-di1b+D0p+rfeboHO5W7gTVeZDIK5+maEgstrZbWZSSvxDyfDRkkyBE1AJR5Psd6doNldluXlCWqXriUfqu/9Qg== dependencies: "@babel/runtime" "^7.8.4" "@testing-library/dom" "^6.15.0" "@types/testing-library__react" "^9.1.2" "@testing-library/user-event@^13.2.1": - "integrity" "sha512-5Kwtbo3Y/NowpkbRuSepbyMFkZmHgD+vPzYB/RJ4oxt5Gj/avFFBYjhw27cqSVPVw/3a67NK1PbiIr9k4Gwmdg==" - "resolved" "https://registry.npmjs.org/@testing-library/user-event/-/user-event-13.5.0.tgz" - "version" "13.5.0" + version "13.5.0" + resolved "https://registry.npmjs.org/@testing-library/user-event/-/user-event-13.5.0.tgz" + integrity sha512-5Kwtbo3Y/NowpkbRuSepbyMFkZmHgD+vPzYB/RJ4oxt5Gj/avFFBYjhw27cqSVPVw/3a67NK1PbiIr9k4Gwmdg== dependencies: "@babel/runtime" "^7.12.5" "@testing-library/user-event@^7.1.2": - "integrity" "sha512-oZ0Ib5I4Z2pUEcoo95cT1cr6slco9WY7yiPpG+RGNkj8YcYgJnM7pXmYmorNOReh8MIGcKSqXyeGjxnr8YiZbA==" - "resolved" "https://registry.npmjs.org/@testing-library/user-event/-/user-event-7.2.1.tgz" - "version" "7.2.1" + version "7.2.1" + resolved "https://registry.npmjs.org/@testing-library/user-event/-/user-event-7.2.1.tgz" + integrity sha512-oZ0Ib5I4Z2pUEcoo95cT1cr6slco9WY7yiPpG+RGNkj8YcYgJnM7pXmYmorNOReh8MIGcKSqXyeGjxnr8YiZbA== "@tootallnate/once@1": - "integrity" "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==" - "resolved" "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz" - "version" "1.1.2" + version "1.1.2" + resolved "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz" + integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== "@trysound/sax@0.2.0": - "integrity" "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==" - "resolved" "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz" - "version" "0.2.0" + version "0.2.0" + resolved "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz" + integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA== "@tsconfig/node10@^1.0.7": - "integrity" "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==" - "resolved" "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz" - "version" "1.0.9" + version "1.0.9" + resolved "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz" + integrity sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA== "@tsconfig/node12@^1.0.7": - "integrity" "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==" - "resolved" "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz" - "version" "1.0.11" + version "1.0.11" + resolved "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz" + integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== "@tsconfig/node14@^1.0.0": - "integrity" "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==" - "resolved" "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz" - "version" "1.0.3" + version "1.0.3" + resolved "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz" + integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== "@tsconfig/node16@^1.0.2": - "integrity" "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==" - "resolved" "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz" - "version" "1.0.3" + version "1.0.3" + resolved "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz" + integrity sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ== "@turf/bbox@*", "@turf/bbox@^6.5.0": - "integrity" "sha512-RBbLaao5hXTYyyg577iuMtDB8ehxMlUqHEJiMs8jT1GHkFhr6sYre3lmLsPeYEi/ZKj5TP5tt7fkzNdJ4GIVyw==" - "resolved" "https://registry.npmjs.org/@turf/bbox/-/bbox-6.5.0.tgz" - "version" "6.5.0" + version "6.5.0" + resolved "https://registry.npmjs.org/@turf/bbox/-/bbox-6.5.0.tgz" + integrity sha512-RBbLaao5hXTYyyg577iuMtDB8ehxMlUqHEJiMs8jT1GHkFhr6sYre3lmLsPeYEi/ZKj5TP5tt7fkzNdJ4GIVyw== dependencies: "@turf/helpers" "^6.5.0" "@turf/meta" "^6.5.0" "@turf/boolean-crosses@^6.0.1": - "integrity" "sha512-gvshbTPhAHporTlQwBJqyfW+2yV8q/mOTxG6PzRVl6ARsqNoqYQWkd4MLug7OmAqVyBzLK3201uAeBjxbGw0Ng==" - "resolved" "https://registry.npmjs.org/@turf/boolean-crosses/-/boolean-crosses-6.5.0.tgz" - "version" "6.5.0" + version "6.5.0" + resolved "https://registry.npmjs.org/@turf/boolean-crosses/-/boolean-crosses-6.5.0.tgz" + integrity sha512-gvshbTPhAHporTlQwBJqyfW+2yV8q/mOTxG6PzRVl6ARsqNoqYQWkd4MLug7OmAqVyBzLK3201uAeBjxbGw0Ng== dependencies: "@turf/boolean-point-in-polygon" "^6.5.0" "@turf/helpers" "^6.5.0" @@ -4274,25 +4234,25 @@ "@turf/polygon-to-line" "^6.5.0" "@turf/boolean-point-in-polygon@^6.0.1", "@turf/boolean-point-in-polygon@^6.5.0": - "integrity" "sha512-DtSuVFB26SI+hj0SjrvXowGTUCHlgevPAIsukssW6BG5MlNSBQAo70wpICBNJL6RjukXg8d2eXaAWuD/CqL00A==" - "resolved" "https://registry.npmjs.org/@turf/boolean-point-in-polygon/-/boolean-point-in-polygon-6.5.0.tgz" - "version" "6.5.0" + version "6.5.0" + resolved "https://registry.npmjs.org/@turf/boolean-point-in-polygon/-/boolean-point-in-polygon-6.5.0.tgz" + integrity sha512-DtSuVFB26SI+hj0SjrvXowGTUCHlgevPAIsukssW6BG5MlNSBQAo70wpICBNJL6RjukXg8d2eXaAWuD/CqL00A== dependencies: "@turf/helpers" "^6.5.0" "@turf/invariant" "^6.5.0" "@turf/boolean-point-on-line@^6.5.0": - "integrity" "sha512-A1BbuQ0LceLHvq7F/P7w3QvfpmZqbmViIUPHdNLvZimFNLo4e6IQunmzbe+8aSStH9QRZm3VOflyvNeXvvpZEQ==" - "resolved" "https://registry.npmjs.org/@turf/boolean-point-on-line/-/boolean-point-on-line-6.5.0.tgz" - "version" "6.5.0" + version "6.5.0" + resolved "https://registry.npmjs.org/@turf/boolean-point-on-line/-/boolean-point-on-line-6.5.0.tgz" + integrity sha512-A1BbuQ0LceLHvq7F/P7w3QvfpmZqbmViIUPHdNLvZimFNLo4e6IQunmzbe+8aSStH9QRZm3VOflyvNeXvvpZEQ== dependencies: "@turf/helpers" "^6.5.0" "@turf/invariant" "^6.5.0" "@turf/boolean-within@^6.0.1": - "integrity" "sha512-YQB3oU18Inx35C/LU930D36RAVe7LDXk1kWsQ8mLmuqYn9YdPsDQTMTkLJMhoQ8EbN7QTdy333xRQ4MYgToteQ==" - "resolved" "https://registry.npmjs.org/@turf/boolean-within/-/boolean-within-6.5.0.tgz" - "version" "6.5.0" + version "6.5.0" + resolved "https://registry.npmjs.org/@turf/boolean-within/-/boolean-within-6.5.0.tgz" + integrity sha512-YQB3oU18Inx35C/LU930D36RAVe7LDXk1kWsQ8mLmuqYn9YdPsDQTMTkLJMhoQ8EbN7QTdy333xRQ4MYgToteQ== dependencies: "@turf/bbox" "^6.5.0" "@turf/boolean-point-in-polygon" "^6.5.0" @@ -4300,71 +4260,71 @@ "@turf/helpers" "^6.5.0" "@turf/invariant" "^6.5.0" -"@turf/helpers@^6.5.0", "@turf/helpers@6.x": - "integrity" "sha512-VbI1dV5bLFzohYYdgqwikdMVpe7pJ9X3E+dlr425wa2/sMJqYDhTO++ec38/pcPvPE6oD9WEEeU3Xu3gza+VPw==" - "resolved" "https://registry.npmjs.org/@turf/helpers/-/helpers-6.5.0.tgz" - "version" "6.5.0" +"@turf/helpers@6.x", "@turf/helpers@^6.5.0": + version "6.5.0" + resolved "https://registry.npmjs.org/@turf/helpers/-/helpers-6.5.0.tgz" + integrity sha512-VbI1dV5bLFzohYYdgqwikdMVpe7pJ9X3E+dlr425wa2/sMJqYDhTO++ec38/pcPvPE6oD9WEEeU3Xu3gza+VPw== "@turf/intersect@^6.1.3": - "integrity" "sha512-2legGJeKrfFkzntcd4GouPugoqPUjexPZnOvfez+3SfIMrHvulw8qV8u7pfVyn2Yqs53yoVCEjS5sEpvQ5YRQg==" - "resolved" "https://registry.npmjs.org/@turf/intersect/-/intersect-6.5.0.tgz" - "version" "6.5.0" + version "6.5.0" + resolved "https://registry.npmjs.org/@turf/intersect/-/intersect-6.5.0.tgz" + integrity sha512-2legGJeKrfFkzntcd4GouPugoqPUjexPZnOvfez+3SfIMrHvulw8qV8u7pfVyn2Yqs53yoVCEjS5sEpvQ5YRQg== dependencies: "@turf/helpers" "^6.5.0" "@turf/invariant" "^6.5.0" - "polygon-clipping" "^0.15.3" + polygon-clipping "^0.15.3" "@turf/invariant@^6.5.0": - "integrity" "sha512-Wv8PRNCtPD31UVbdJE/KVAWKe7l6US+lJItRR/HOEW3eh+U/JwRCSUl/KZ7bmjM/C+zLNoreM2TU6OoLACs4eg==" - "resolved" "https://registry.npmjs.org/@turf/invariant/-/invariant-6.5.0.tgz" - "version" "6.5.0" + version "6.5.0" + resolved "https://registry.npmjs.org/@turf/invariant/-/invariant-6.5.0.tgz" + integrity sha512-Wv8PRNCtPD31UVbdJE/KVAWKe7l6US+lJItRR/HOEW3eh+U/JwRCSUl/KZ7bmjM/C+zLNoreM2TU6OoLACs4eg== dependencies: "@turf/helpers" "^6.5.0" "@turf/line-intersect@^6.5.0": - "integrity" "sha512-CS6R1tZvVQD390G9Ea4pmpM6mJGPWoL82jD46y0q1KSor9s6HupMIo1kY4Ny+AEYQl9jd21V3Scz20eldpbTVA==" - "resolved" "https://registry.npmjs.org/@turf/line-intersect/-/line-intersect-6.5.0.tgz" - "version" "6.5.0" + version "6.5.0" + resolved "https://registry.npmjs.org/@turf/line-intersect/-/line-intersect-6.5.0.tgz" + integrity sha512-CS6R1tZvVQD390G9Ea4pmpM6mJGPWoL82jD46y0q1KSor9s6HupMIo1kY4Ny+AEYQl9jd21V3Scz20eldpbTVA== dependencies: "@turf/helpers" "^6.5.0" "@turf/invariant" "^6.5.0" "@turf/line-segment" "^6.5.0" "@turf/meta" "^6.5.0" - "geojson-rbush" "3.x" + geojson-rbush "3.x" "@turf/line-segment@^6.5.0": - "integrity" "sha512-jI625Ho4jSuJESNq66Mmi290ZJ5pPZiQZruPVpmHkUw257Pew0alMmb6YrqYNnLUuiVVONxAAKXUVeeUGtycfw==" - "resolved" "https://registry.npmjs.org/@turf/line-segment/-/line-segment-6.5.0.tgz" - "version" "6.5.0" + version "6.5.0" + resolved "https://registry.npmjs.org/@turf/line-segment/-/line-segment-6.5.0.tgz" + integrity sha512-jI625Ho4jSuJESNq66Mmi290ZJ5pPZiQZruPVpmHkUw257Pew0alMmb6YrqYNnLUuiVVONxAAKXUVeeUGtycfw== dependencies: "@turf/helpers" "^6.5.0" "@turf/invariant" "^6.5.0" "@turf/meta" "^6.5.0" -"@turf/meta@^6.5.0", "@turf/meta@6.x": - "integrity" "sha512-RrArvtsV0vdsCBegoBtOalgdSOfkBrTJ07VkpiCnq/491W67hnMWmDu7e6Ztw0C3WldRYTXkg3SumfdzZxLBHA==" - "resolved" "https://registry.npmjs.org/@turf/meta/-/meta-6.5.0.tgz" - "version" "6.5.0" +"@turf/meta@6.x", "@turf/meta@^6.5.0": + version "6.5.0" + resolved "https://registry.npmjs.org/@turf/meta/-/meta-6.5.0.tgz" + integrity sha512-RrArvtsV0vdsCBegoBtOalgdSOfkBrTJ07VkpiCnq/491W67hnMWmDu7e6Ztw0C3WldRYTXkg3SumfdzZxLBHA== dependencies: "@turf/helpers" "^6.5.0" "@turf/polygon-to-line@^6.5.0": - "integrity" "sha512-5p4n/ij97EIttAq+ewSnKt0ruvuM+LIDzuczSzuHTpq4oS7Oq8yqg5TQ4nzMVuK41r/tALCk7nAoBuw3Su4Gcw==" - "resolved" "https://registry.npmjs.org/@turf/polygon-to-line/-/polygon-to-line-6.5.0.tgz" - "version" "6.5.0" + version "6.5.0" + resolved "https://registry.npmjs.org/@turf/polygon-to-line/-/polygon-to-line-6.5.0.tgz" + integrity sha512-5p4n/ij97EIttAq+ewSnKt0ruvuM+LIDzuczSzuHTpq4oS7Oq8yqg5TQ4nzMVuK41r/tALCk7nAoBuw3Su4Gcw== dependencies: "@turf/helpers" "^6.5.0" "@turf/invariant" "^6.5.0" "@types/aria-query@^4.2.0": - "integrity" "sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig==" - "resolved" "https://registry.npmjs.org/@types/aria-query/-/aria-query-4.2.2.tgz" - "version" "4.2.2" + version "4.2.2" + resolved "https://registry.npmjs.org/@types/aria-query/-/aria-query-4.2.2.tgz" + integrity sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig== -"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14", "@types/babel__core@^7.1.7", "@types/babel__core@^7.1.9": - "integrity" "sha512-PVb6Bg2QuscZ30FvOU7z4guG6c926D9YRvOxEaelzndpMsvP+YM74Q/dAFASpg2l6+XLalxSGxcq/lrgYWZtyQ==" - "resolved" "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.20.tgz" - "version" "7.1.20" +"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14", "@types/babel__core@^7.1.7": + version "7.1.20" + resolved "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.20.tgz" + integrity sha512-PVb6Bg2QuscZ30FvOU7z4guG6c926D9YRvOxEaelzndpMsvP+YM74Q/dAFASpg2l6+XLalxSGxcq/lrgYWZtyQ== dependencies: "@babel/parser" "^7.1.0" "@babel/types" "^7.0.0" @@ -4373,153 +4333,153 @@ "@types/babel__traverse" "*" "@types/babel__generator@*": - "integrity" "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==" - "resolved" "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz" - "version" "7.6.4" + version "7.6.4" + resolved "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz" + integrity sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg== dependencies: "@babel/types" "^7.0.0" "@types/babel__template@*": - "integrity" "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==" - "resolved" "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz" - "version" "7.4.1" + version "7.4.1" + resolved "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz" + integrity sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g== dependencies: "@babel/parser" "^7.1.0" "@babel/types" "^7.0.0" "@types/babel__traverse@*", "@types/babel__traverse@^7.0.4", "@types/babel__traverse@^7.0.6": - "integrity" "sha512-FcFaxOr2V5KZCviw1TnutEMVUVsGt4D2hP1TAfXZAMKuHYW3xQhe3jTxNPWutgCJ3/X1c5yX8ZoGVEItxKbwBg==" - "resolved" "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.2.tgz" - "version" "7.18.2" + version "7.18.2" + resolved "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.2.tgz" + integrity sha512-FcFaxOr2V5KZCviw1TnutEMVUVsGt4D2hP1TAfXZAMKuHYW3xQhe3jTxNPWutgCJ3/X1c5yX8ZoGVEItxKbwBg== dependencies: "@babel/types" "^7.3.0" "@types/body-parser@*": - "integrity" "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==" - "resolved" "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz" - "version" "1.19.2" + version "1.19.2" + resolved "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz" + integrity sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g== dependencies: "@types/connect" "*" "@types/node" "*" "@types/bonjour@^3.5.9": - "integrity" "sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==" - "resolved" "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.10.tgz" - "version" "3.5.10" + version "3.5.10" + resolved "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.10.tgz" + integrity sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw== dependencies: "@types/node" "*" "@types/cheerio@*": - "integrity" "sha512-Kt7Cdjjdi2XWSfrZ53v4Of0wG3ZcmaegFXjMmz9tfNrZSkzzo36G0AL1YqSdcIA78Etjt6E609pt5h1xnQkPUw==" - "resolved" "https://registry.npmjs.org/@types/cheerio/-/cheerio-0.22.31.tgz" - "version" "0.22.31" + version "0.22.31" + resolved "https://registry.npmjs.org/@types/cheerio/-/cheerio-0.22.31.tgz" + integrity sha512-Kt7Cdjjdi2XWSfrZ53v4Of0wG3ZcmaegFXjMmz9tfNrZSkzzo36G0AL1YqSdcIA78Etjt6E609pt5h1xnQkPUw== dependencies: "@types/node" "*" "@types/connect-history-api-fallback@^1.3.5": - "integrity" "sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==" - "resolved" "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz" - "version" "1.3.5" + version "1.3.5" + resolved "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz" + integrity sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw== dependencies: "@types/express-serve-static-core" "*" "@types/node" "*" "@types/connect@*": - "integrity" "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==" - "resolved" "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz" - "version" "3.4.35" + version "3.4.35" + resolved "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz" + integrity sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ== dependencies: "@types/node" "*" "@types/cookie@^0.3.3": - "integrity" "sha512-LKVP3cgXBT9RYj+t+9FDKwS5tdI+rPBXaNSkma7hvqy35lc7mAokC2zsqWJH0LaqIt3B962nuYI77hsJoT1gow==" - "resolved" "https://registry.npmjs.org/@types/cookie/-/cookie-0.3.3.tgz" - "version" "0.3.3" + version "0.3.3" + resolved "https://registry.npmjs.org/@types/cookie/-/cookie-0.3.3.tgz" + integrity sha512-LKVP3cgXBT9RYj+t+9FDKwS5tdI+rPBXaNSkma7hvqy35lc7mAokC2zsqWJH0LaqIt3B962nuYI77hsJoT1gow== "@types/crypto-js@^3.1.43": - "integrity" "sha512-eI6gvpcGHLk3dAuHYnRCAjX+41gMv1nz/VP55wAe5HtmAKDOoPSfr3f6vkMc08ov1S0NsjvUBxDtHHxqQY1LGA==" - "resolved" "https://registry.npmjs.org/@types/crypto-js/-/crypto-js-3.1.47.tgz" - "version" "3.1.47" + version "3.1.47" + resolved "https://registry.npmjs.org/@types/crypto-js/-/crypto-js-3.1.47.tgz" + integrity sha512-eI6gvpcGHLk3dAuHYnRCAjX+41gMv1nz/VP55wAe5HtmAKDOoPSfr3f6vkMc08ov1S0NsjvUBxDtHHxqQY1LGA== "@types/draft-js@*", "@types/draft-js@^0.11.2": - "integrity" "sha512-cQJBZjjIlGaPA1tOY+wGz2KhlPtAAZOIXpUvGPxPRw5uzZ2tcj8m6Yu1QDV9YgP36+cqE3cUvgkARBzgUiuI/Q==" - "resolved" "https://registry.npmjs.org/@types/draft-js/-/draft-js-0.11.9.tgz" - "version" "0.11.9" + version "0.11.9" + resolved "https://registry.npmjs.org/@types/draft-js/-/draft-js-0.11.9.tgz" + integrity sha512-cQJBZjjIlGaPA1tOY+wGz2KhlPtAAZOIXpUvGPxPRw5uzZ2tcj8m6Yu1QDV9YgP36+cqE3cUvgkARBzgUiuI/Q== dependencies: "@types/react" "*" - "immutable" "~3.7.4" + immutable "~3.7.4" "@types/emoji-mart@^3.0.2": - "integrity" "sha512-qdBo/2Y8MXaJ/2spKjDZocuq79GpnOhkwMHnK2GnVFa8WYFgfA+ei6sil3aeWQPCreOKIx9ogPpR5+7MaOqYAA==" - "resolved" "https://registry.npmjs.org/@types/emoji-mart/-/emoji-mart-3.0.9.tgz" - "version" "3.0.9" + version "3.0.9" + resolved "https://registry.npmjs.org/@types/emoji-mart/-/emoji-mart-3.0.9.tgz" + integrity sha512-qdBo/2Y8MXaJ/2spKjDZocuq79GpnOhkwMHnK2GnVFa8WYFgfA+ei6sil3aeWQPCreOKIx9ogPpR5+7MaOqYAA== dependencies: "@types/react" "*" "@types/emojione@^2.2.6": - "integrity" "sha512-2OJGfbqLOFFawMp61cxpJ+QsLA/2LDUdqWb2YMVNP8q/FXSxdkv0hdqm3EcjNfyfcpZ0HjOjMATwXdx/xpTlOA==" - "resolved" "https://registry.npmjs.org/@types/emojione/-/emojione-2.2.6.tgz" - "version" "2.2.6" + version "2.2.6" + resolved "https://registry.npmjs.org/@types/emojione/-/emojione-2.2.6.tgz" + integrity sha512-2OJGfbqLOFFawMp61cxpJ+QsLA/2LDUdqWb2YMVNP8q/FXSxdkv0hdqm3EcjNfyfcpZ0HjOjMATwXdx/xpTlOA== "@types/enzyme-adapter-react-16@^1.0.6": - "integrity" "sha512-VonDkZ15jzqDWL8mPFIQnnLtjwebuL9YnDkqeCDYnB4IVgwUm0mwKkqhrxLL6mb05xm7qqa3IE95m8CZE9imCg==" - "resolved" "https://registry.npmjs.org/@types/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.0.6.tgz" - "version" "1.0.6" + version "1.0.6" + resolved "https://registry.npmjs.org/@types/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.0.6.tgz" + integrity sha512-VonDkZ15jzqDWL8mPFIQnnLtjwebuL9YnDkqeCDYnB4IVgwUm0mwKkqhrxLL6mb05xm7qqa3IE95m8CZE9imCg== dependencies: "@types/enzyme" "*" "@types/enzyme@*", "@types/enzyme@^3.10.7": - "integrity" "sha512-xryQlOEIe1TduDWAOphR0ihfebKFSWOXpIsk+70JskCfRfW+xALdnJ0r1ZOTo85F9Qsjk6vtlU7edTYHbls9tA==" - "resolved" "https://registry.npmjs.org/@types/enzyme/-/enzyme-3.10.12.tgz" - "version" "3.10.12" + version "3.10.12" + resolved "https://registry.npmjs.org/@types/enzyme/-/enzyme-3.10.12.tgz" + integrity sha512-xryQlOEIe1TduDWAOphR0ihfebKFSWOXpIsk+70JskCfRfW+xALdnJ0r1ZOTo85F9Qsjk6vtlU7edTYHbls9tA== dependencies: "@types/cheerio" "*" "@types/react" "*" "@types/eslint-scope@^3.7.3": - "integrity" "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==" - "resolved" "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz" - "version" "3.7.4" + version "3.7.4" + resolved "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz" + integrity sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA== dependencies: "@types/eslint" "*" "@types/estree" "*" "@types/eslint@*", "@types/eslint@^7.29.0 || ^8.4.1": - "integrity" "sha512-Sl/HOqN8NKPmhWo2VBEPm0nvHnu2LL3v9vKo8MEq0EtbJ4eVzGPl41VNPvn5E1i5poMk4/XD8UriLHpJvEP/Nw==" - "resolved" "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.10.tgz" - "version" "8.4.10" + version "8.4.10" + resolved "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.10.tgz" + integrity sha512-Sl/HOqN8NKPmhWo2VBEPm0nvHnu2LL3v9vKo8MEq0EtbJ4eVzGPl41VNPvn5E1i5poMk4/XD8UriLHpJvEP/Nw== dependencies: "@types/estree" "*" "@types/json-schema" "*" "@types/estree@*": - "integrity" "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==" - "resolved" "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz" - "version" "1.0.0" - -"@types/estree@^0.0.51": - "integrity" "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==" - "resolved" "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz" - "version" "0.0.51" + version "1.0.0" + resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz" + integrity sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ== "@types/estree@0.0.39": - "integrity" "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==" - "resolved" "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz" - "version" "0.0.39" + version "0.0.39" + resolved "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz" + integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== + +"@types/estree@^0.0.51": + version "0.0.51" + resolved "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz" + integrity sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ== "@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.18": - "integrity" "sha512-DxMhY+NAsTwMMFHBTtJFNp5qiHKJ7TeqOo23zVEM9alT1Ml27Q3xcTH0xwxn7Q0BbMcVEJOs/7aQtUWupUQN3Q==" - "resolved" "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.31.tgz" - "version" "4.17.31" + version "4.17.31" + resolved "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.31.tgz" + integrity sha512-DxMhY+NAsTwMMFHBTtJFNp5qiHKJ7TeqOo23zVEM9alT1Ml27Q3xcTH0xwxn7Q0BbMcVEJOs/7aQtUWupUQN3Q== dependencies: "@types/node" "*" "@types/qs" "*" "@types/range-parser" "*" "@types/express@*", "@types/express@^4.17.13": - "integrity" "sha512-TEbt+vaPFQ+xpxFLFssxUDXj5cWCxZJjIcB7Yg0k0GMHGtgtQgpvx/MUQUeAkNbA9AAGrwkAsoeItdTgS7FMyg==" - "resolved" "https://registry.npmjs.org/@types/express/-/express-4.17.14.tgz" - "version" "4.17.14" + version "4.17.14" + resolved "https://registry.npmjs.org/@types/express/-/express-4.17.14.tgz" + integrity sha512-TEbt+vaPFQ+xpxFLFssxUDXj5cWCxZJjIcB7Yg0k0GMHGtgtQgpvx/MUQUeAkNbA9AAGrwkAsoeItdTgS7FMyg== dependencies: "@types/body-parser" "*" "@types/express-serve-static-core" "^4.17.18" @@ -4527,692 +4487,692 @@ "@types/serve-static" "*" "@types/geojson@7946.0.8": - "integrity" "sha512-1rkryxURpr6aWP7R786/UQOkJ3PcpQiWkAXBmdWc7ryFWqN6a4xfK7BtjXvFBKO9LjQ+MWQSWxYeZX1OApnArA==" - "resolved" "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.8.tgz" - "version" "7946.0.8" + version "7946.0.8" + resolved "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.8.tgz" + integrity sha512-1rkryxURpr6aWP7R786/UQOkJ3PcpQiWkAXBmdWc7ryFWqN6a4xfK7BtjXvFBKO9LjQ+MWQSWxYeZX1OApnArA== "@types/glob@*": - "integrity" "sha512-l6NQsDDyQUVeoTynNpC9uRvCUint/gSUXQA2euwmTuWGvPY5LSDUu6tkCtJB2SvGQlJQzLaKqcGZP4//7EDveA==" - "resolved" "https://registry.npmjs.org/@types/glob/-/glob-8.0.0.tgz" - "version" "8.0.0" + version "8.0.0" + resolved "https://registry.npmjs.org/@types/glob/-/glob-8.0.0.tgz" + integrity sha512-l6NQsDDyQUVeoTynNpC9uRvCUint/gSUXQA2euwmTuWGvPY5LSDUu6tkCtJB2SvGQlJQzLaKqcGZP4//7EDveA== dependencies: "@types/minimatch" "*" "@types/node" "*" "@types/glob@^7.1.1": - "integrity" "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==" - "resolved" "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz" - "version" "7.2.0" + version "7.2.0" + resolved "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz" + integrity sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA== dependencies: "@types/minimatch" "*" "@types/node" "*" "@types/graceful-fs@^4.1.2": - "integrity" "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==" - "resolved" "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz" - "version" "4.1.5" + version "4.1.5" + resolved "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz" + integrity sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw== dependencies: "@types/node" "*" "@types/hast@^2.0.0": - "integrity" "sha512-wLEm0QvaoawEDoTRwzTXp4b4jpwiJDvR5KMnFnVodm3scufTlBOWRD6N1OBf9TZMhjlNsSfcO5V+7AF4+Vy+9g==" - "resolved" "https://registry.npmjs.org/@types/hast/-/hast-2.3.4.tgz" - "version" "2.3.4" + version "2.3.4" + resolved "https://registry.npmjs.org/@types/hast/-/hast-2.3.4.tgz" + integrity sha512-wLEm0QvaoawEDoTRwzTXp4b4jpwiJDvR5KMnFnVodm3scufTlBOWRD6N1OBf9TZMhjlNsSfcO5V+7AF4+Vy+9g== dependencies: "@types/unist" "*" "@types/history@^4.7.11": - "integrity" "sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA==" - "resolved" "https://registry.npmjs.org/@types/history/-/history-4.7.11.tgz" - "version" "4.7.11" + version "4.7.11" + resolved "https://registry.npmjs.org/@types/history/-/history-4.7.11.tgz" + integrity sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA== "@types/hoist-non-react-statics@^3.0.1", "@types/hoist-non-react-statics@^3.3.0": - "integrity" "sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==" - "resolved" "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz" - "version" "3.3.1" + version "3.3.1" + resolved "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz" + integrity sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA== dependencies: "@types/react" "*" - "hoist-non-react-statics" "^3.3.0" + hoist-non-react-statics "^3.3.0" "@types/html-minifier-terser@^5.0.0": - "integrity" "sha512-h4lTMgMJctJybDp8CQrxTUiiYmedihHWkjnF/8Pxseu2S6Nlfcy8kwboQ8yejh456rP2yWoEVm1sS/FVsfM48w==" - "resolved" "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-5.1.2.tgz" - "version" "5.1.2" + version "5.1.2" + resolved "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-5.1.2.tgz" + integrity sha512-h4lTMgMJctJybDp8CQrxTUiiYmedihHWkjnF/8Pxseu2S6Nlfcy8kwboQ8yejh456rP2yWoEVm1sS/FVsfM48w== "@types/html-minifier-terser@^6.0.0": - "integrity" "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==" - "resolved" "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz" - "version" "6.1.0" + version "6.1.0" + resolved "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz" + integrity sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg== "@types/http-proxy@^1.17.5", "@types/http-proxy@^1.17.8": - "integrity" "sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==" - "resolved" "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.9.tgz" - "version" "1.17.9" + version "1.17.9" + resolved "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.9.tgz" + integrity sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw== dependencies: "@types/node" "*" "@types/is-function@^1.0.0": - "integrity" "sha512-A79HEEiwXTFtfY+Bcbo58M2GRYzCr9itHWzbzHVFNEYCcoU/MMGwYYf721gBrnhpj1s6RGVVha/IgNFnR0Iw/Q==" - "resolved" "https://registry.npmjs.org/@types/is-function/-/is-function-1.0.1.tgz" - "version" "1.0.1" + version "1.0.1" + resolved "https://registry.npmjs.org/@types/is-function/-/is-function-1.0.1.tgz" + integrity sha512-A79HEEiwXTFtfY+Bcbo58M2GRYzCr9itHWzbzHVFNEYCcoU/MMGwYYf721gBrnhpj1s6RGVVha/IgNFnR0Iw/Q== "@types/is-url@^1.2.28": - "integrity" "sha512-AnlNFwjzC8XLda5VjRl4ItSd8qp8pSNowvsut0WwQyBWHpOxjxRJm8iO6uETWqEyLdYdb9/1j+Qd9gQ4l5I4fw==" - "resolved" "https://registry.npmjs.org/@types/is-url/-/is-url-1.2.30.tgz" - "version" "1.2.30" + version "1.2.30" + resolved "https://registry.npmjs.org/@types/is-url/-/is-url-1.2.30.tgz" + integrity sha512-AnlNFwjzC8XLda5VjRl4ItSd8qp8pSNowvsut0WwQyBWHpOxjxRJm8iO6uETWqEyLdYdb9/1j+Qd9gQ4l5I4fw== "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": - "integrity" "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==" - "resolved" "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz" - "version" "2.0.4" + version "2.0.4" + resolved "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz" + integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== "@types/istanbul-lib-report@*": - "integrity" "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==" - "resolved" "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz" - "version" "3.0.0" + version "3.0.0" + resolved "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz" + integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== dependencies: "@types/istanbul-lib-coverage" "*" "@types/istanbul-reports@^1.1.1": - "integrity" "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==" - "resolved" "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz" - "version" "1.1.2" + version "1.1.2" + resolved "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz" + integrity sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw== dependencies: "@types/istanbul-lib-coverage" "*" "@types/istanbul-lib-report" "*" "@types/istanbul-reports@^3.0.0": - "integrity" "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==" - "resolved" "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz" - "version" "3.0.1" + version "3.0.1" + resolved "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz" + integrity sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw== dependencies: "@types/istanbul-lib-report" "*" "@types/jest@^24.0.0": - "integrity" "sha512-Fb38HkXSVA4L8fGKEZ6le5bB8r6MRWlOCZbVuWZcmOMSCd2wCYOwN1ibj8daIoV9naq7aaOZjrLCoCMptKU/4Q==" - "resolved" "https://registry.npmjs.org/@types/jest/-/jest-24.9.1.tgz" - "version" "24.9.1" + version "24.9.1" + resolved "https://registry.npmjs.org/@types/jest/-/jest-24.9.1.tgz" + integrity sha512-Fb38HkXSVA4L8fGKEZ6le5bB8r6MRWlOCZbVuWZcmOMSCd2wCYOwN1ibj8daIoV9naq7aaOZjrLCoCMptKU/4Q== dependencies: - "jest-diff" "^24.3.0" + jest-diff "^24.3.0" "@types/json-schema@*", "@types/json-schema@^7.0.4", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": - "integrity" "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==" - "resolved" "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz" - "version" "7.0.11" + version "7.0.11" + resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz" + integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== "@types/json5@^0.0.29": - "integrity" "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==" - "resolved" "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz" - "version" "0.0.29" + version "0.0.29" + resolved "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz" + integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== "@types/lodash@^4.14.167", "@types/lodash@^4.14.172": - "integrity" "sha512-kb9/98N6X8gyME9Cf7YaqIMvYGnBSWqEci6tiettE6iJWH1XdJz/PO8LB0GtLCG7x8dU3KWhZT+lA1a35127tA==" - "resolved" "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.189.tgz" - "version" "4.14.189" + version "4.14.189" + resolved "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.189.tgz" + integrity sha512-kb9/98N6X8gyME9Cf7YaqIMvYGnBSWqEci6tiettE6iJWH1XdJz/PO8LB0GtLCG7x8dU3KWhZT+lA1a35127tA== "@types/markdown-draft-js@^2.2.3": - "integrity" "sha512-sEb5/uYSl12mnBXF5lgycEJZnzy9BtOQYJJW+UP/prdy2fjTIAm4c1MFRUqSunWocPAhcm6BvjLinGb2awtwOA==" - "resolved" "https://registry.npmjs.org/@types/markdown-draft-js/-/markdown-draft-js-2.2.4.tgz" - "version" "2.2.4" + version "2.2.4" + resolved "https://registry.npmjs.org/@types/markdown-draft-js/-/markdown-draft-js-2.2.4.tgz" + integrity sha512-sEb5/uYSl12mnBXF5lgycEJZnzy9BtOQYJJW+UP/prdy2fjTIAm4c1MFRUqSunWocPAhcm6BvjLinGb2awtwOA== dependencies: "@types/draft-js" "*" "@types/mdast@^3.0.0": - "integrity" "sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==" - "resolved" "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.10.tgz" - "version" "3.0.10" + version "3.0.10" + resolved "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.10.tgz" + integrity sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA== dependencies: "@types/unist" "*" "@types/mime-types@^2.1.0": - "integrity" "sha512-vXOTGVSLR2jMw440moWTC7H19iUyLtP3Z1YTj7cSsubOICinjMxFeb/V57v9QdyyPGbbWolUFSSmSiRSn94tFw==" - "resolved" "https://registry.npmjs.org/@types/mime-types/-/mime-types-2.1.1.tgz" - "version" "2.1.1" + version "2.1.1" + resolved "https://registry.npmjs.org/@types/mime-types/-/mime-types-2.1.1.tgz" + integrity sha512-vXOTGVSLR2jMw440moWTC7H19iUyLtP3Z1YTj7cSsubOICinjMxFeb/V57v9QdyyPGbbWolUFSSmSiRSn94tFw== "@types/mime@*": - "integrity" "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==" - "resolved" "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz" - "version" "3.0.1" + version "3.0.1" + resolved "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz" + integrity sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA== "@types/minimatch@*": - "integrity" "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==" - "resolved" "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz" - "version" "5.1.2" + version "5.1.2" + resolved "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz" + integrity sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA== "@types/node-fetch@^2.5.7": - "integrity" "sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A==" - "resolved" "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.2.tgz" - "version" "2.6.2" + version "2.6.2" + resolved "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.2.tgz" + integrity sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A== dependencies: "@types/node" "*" - "form-data" "^3.0.0" + form-data "^3.0.0" "@types/node@*", "@types/node@^12.20.46": - "integrity" "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==" - "resolved" "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz" - "version" "12.20.55" + version "12.20.55" + resolved "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz" + integrity sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ== "@types/node@^14.0.10 || ^16.0.0": - "integrity" "sha512-vzLe5NaNMjIE3mcddFVGlAXN1LEWueUsMsOJWaT6wWMJGyljHAWHznqfnKUQWGzu7TLPrGvWdNAsvQYW+C0xtw==" - "resolved" "https://registry.npmjs.org/@types/node/-/node-16.18.12.tgz" - "version" "16.18.12" + version "16.18.12" + resolved "https://registry.npmjs.org/@types/node/-/node-16.18.12.tgz" + integrity sha512-vzLe5NaNMjIE3mcddFVGlAXN1LEWueUsMsOJWaT6wWMJGyljHAWHznqfnKUQWGzu7TLPrGvWdNAsvQYW+C0xtw== "@types/node@^14.14.20 || ^16.0.0": - "integrity" "sha512-jh6m0QUhIRcZpNv7Z/rpN+ZWXOicUUQbSoWks7Htkbb9IjFQj4kzcX/xFCkjstCj5flMsN8FiSvt+q+Tcs4Llg==" - "resolved" "https://registry.npmjs.org/@types/node/-/node-16.18.3.tgz" - "version" "16.18.3" + version "16.18.3" + resolved "https://registry.npmjs.org/@types/node/-/node-16.18.3.tgz" + integrity sha512-jh6m0QUhIRcZpNv7Z/rpN+ZWXOicUUQbSoWks7Htkbb9IjFQj4kzcX/xFCkjstCj5flMsN8FiSvt+q+Tcs4Llg== "@types/normalize-package-data@^2.4.0": - "integrity" "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==" - "resolved" "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz" - "version" "2.4.1" + version "2.4.1" + resolved "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz" + integrity sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw== "@types/npmlog@^4.1.2": - "integrity" "sha512-WKG4gTr8przEZBiJ5r3s8ZIAoMXNbOgQ+j/d5O4X3x6kZJRLNvyUJuUK/KoG3+8BaOHPhp2m7WC6JKKeovDSzQ==" - "resolved" "https://registry.npmjs.org/@types/npmlog/-/npmlog-4.1.4.tgz" - "version" "4.1.4" + version "4.1.4" + resolved "https://registry.npmjs.org/@types/npmlog/-/npmlog-4.1.4.tgz" + integrity sha512-WKG4gTr8przEZBiJ5r3s8ZIAoMXNbOgQ+j/d5O4X3x6kZJRLNvyUJuUK/KoG3+8BaOHPhp2m7WC6JKKeovDSzQ== "@types/parse-json@^4.0.0": - "integrity" "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" - "resolved" "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz" - "version" "4.0.0" + version "4.0.0" + resolved "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz" + integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== "@types/parse5@^5.0.0": - "integrity" "sha512-kUNnecmtkunAoQ3CnjmMkzNU/gtxG8guhi+Fk2U/kOpIKjIMKnXGp4IJCgQJrXSgMsWYimYG4TGjz/UzbGEBTw==" - "resolved" "https://registry.npmjs.org/@types/parse5/-/parse5-5.0.3.tgz" - "version" "5.0.3" + version "5.0.3" + resolved "https://registry.npmjs.org/@types/parse5/-/parse5-5.0.3.tgz" + integrity sha512-kUNnecmtkunAoQ3CnjmMkzNU/gtxG8guhi+Fk2U/kOpIKjIMKnXGp4IJCgQJrXSgMsWYimYG4TGjz/UzbGEBTw== "@types/prettier@^2.1.5": - "integrity" "sha512-ri0UmynRRvZiiUJdiz38MmIblKK+oH30MztdBVR95dv/Ubw6neWSb8u1XpRb72L4qsZOhz+L+z9JD40SJmfWow==" - "resolved" "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.1.tgz" - "version" "2.7.1" + version "2.7.1" + resolved "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.1.tgz" + integrity sha512-ri0UmynRRvZiiUJdiz38MmIblKK+oH30MztdBVR95dv/Ubw6neWSb8u1XpRb72L4qsZOhz+L+z9JD40SJmfWow== "@types/pretty-hrtime@^1.0.0": - "integrity" "sha512-VjID5MJb1eGKthz2qUerWT8+R4b9N+CHvGCzg9fn4kWZgaF9AhdYikQio3R7wV8YY1NsQKPaCwKz1Yff+aHNUQ==" - "resolved" "https://registry.npmjs.org/@types/pretty-hrtime/-/pretty-hrtime-1.0.1.tgz" - "version" "1.0.1" + version "1.0.1" + resolved "https://registry.npmjs.org/@types/pretty-hrtime/-/pretty-hrtime-1.0.1.tgz" + integrity sha512-VjID5MJb1eGKthz2qUerWT8+R4b9N+CHvGCzg9fn4kWZgaF9AhdYikQio3R7wV8YY1NsQKPaCwKz1Yff+aHNUQ== "@types/prop-types@*": - "integrity" "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==" - "resolved" "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz" - "version" "15.7.5" + version "15.7.5" + resolved "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz" + integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w== "@types/q@^1.5.1": - "integrity" "sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ==" - "resolved" "https://registry.npmjs.org/@types/q/-/q-1.5.5.tgz" - "version" "1.5.5" + version "1.5.5" + resolved "https://registry.npmjs.org/@types/q/-/q-1.5.5.tgz" + integrity sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ== "@types/qs@*", "@types/qs@^6.9.5": - "integrity" "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==" - "resolved" "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz" - "version" "6.9.7" + version "6.9.7" + resolved "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz" + integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw== "@types/range-parser@*": - "integrity" "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==" - "resolved" "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz" - "version" "1.2.4" + version "1.2.4" + resolved "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz" + integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== "@types/react-dom@*", "@types/react-dom@^18.0.9": - "integrity" "sha512-qnVvHxASt/H7i+XG1U1xMiY5t+IHcPGUK7TDMDzom08xa7e86eCeKOiLZezwCKVxJn6NEiiy2ekgX8aQssjIKg==" - "resolved" "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.9.tgz" - "version" "18.0.9" + version "18.0.9" + resolved "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.9.tgz" + integrity sha512-qnVvHxASt/H7i+XG1U1xMiY5t+IHcPGUK7TDMDzom08xa7e86eCeKOiLZezwCKVxJn6NEiiy2ekgX8aQssjIKg== dependencies: "@types/react" "*" "@types/react-page-visibility@^6.4.1": - "integrity" "sha512-vNlYAqKhB2SU1HmF9ARFTFZN0NSPzWn8HSjBpFqYuQlJhsb/aSYeIZdygeqfSjAg0PZ70id2IFWHGULJwe59Aw==" - "resolved" "https://registry.npmjs.org/@types/react-page-visibility/-/react-page-visibility-6.4.1.tgz" - "version" "6.4.1" + version "6.4.1" + resolved "https://registry.npmjs.org/@types/react-page-visibility/-/react-page-visibility-6.4.1.tgz" + integrity sha512-vNlYAqKhB2SU1HmF9ARFTFZN0NSPzWn8HSjBpFqYuQlJhsb/aSYeIZdygeqfSjAg0PZ70id2IFWHGULJwe59Aw== dependencies: "@types/react" "*" "@types/react-redux@^7.1.20", "@types/react-redux@^7.1.7": - "integrity" "sha512-7FkurKcS1k0FHZEtdbbgN8Oc6b+stGSfZYjQGicofJ0j4U0qIn/jaSvnP2pLwZKiai3/17xqqxkkrxTgN8UNbQ==" - "resolved" "https://registry.npmjs.org/@types/react-redux/-/react-redux-7.1.24.tgz" - "version" "7.1.24" + version "7.1.24" + resolved "https://registry.npmjs.org/@types/react-redux/-/react-redux-7.1.24.tgz" + integrity sha512-7FkurKcS1k0FHZEtdbbgN8Oc6b+stGSfZYjQGicofJ0j4U0qIn/jaSvnP2pLwZKiai3/17xqqxkkrxTgN8UNbQ== dependencies: "@types/hoist-non-react-statics" "^3.3.0" "@types/react" "*" - "hoist-non-react-statics" "^3.3.0" - "redux" "^4.0.0" + hoist-non-react-statics "^3.3.0" + redux "^4.0.0" "@types/react-router-dom@^5.1.6": - "integrity" "sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw==" - "resolved" "https://registry.npmjs.org/@types/react-router-dom/-/react-router-dom-5.3.3.tgz" - "version" "5.3.3" + version "5.3.3" + resolved "https://registry.npmjs.org/@types/react-router-dom/-/react-router-dom-5.3.3.tgz" + integrity sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw== dependencies: "@types/history" "^4.7.11" "@types/react" "*" "@types/react-router" "*" "@types/react-router@*": - "integrity" "sha512-Fv/5kb2STAEMT3wHzdKQK2z8xKq38EDIGVrutYLmQVVLe+4orDFquU52hQrULnEHinMKv9FSA6lf9+uNT1ITtA==" - "resolved" "https://registry.npmjs.org/@types/react-router/-/react-router-5.1.19.tgz" - "version" "5.1.19" + version "5.1.19" + resolved "https://registry.npmjs.org/@types/react-router/-/react-router-5.1.19.tgz" + integrity sha512-Fv/5kb2STAEMT3wHzdKQK2z8xKq38EDIGVrutYLmQVVLe+4orDFquU52hQrULnEHinMKv9FSA6lf9+uNT1ITtA== dependencies: "@types/history" "^4.7.11" "@types/react" "*" "@types/react-syntax-highlighter@11.0.5": - "integrity" "sha512-VIOi9i2Oj5XsmWWoB72p3KlZoEbdRAcechJa8Ztebw7bDl2YmR+odxIqhtJGp1q2EozHs02US+gzxJ9nuf56qg==" - "resolved" "https://registry.npmjs.org/@types/react-syntax-highlighter/-/react-syntax-highlighter-11.0.5.tgz" - "version" "11.0.5" + version "11.0.5" + resolved "https://registry.npmjs.org/@types/react-syntax-highlighter/-/react-syntax-highlighter-11.0.5.tgz" + integrity sha512-VIOi9i2Oj5XsmWWoB72p3KlZoEbdRAcechJa8Ztebw7bDl2YmR+odxIqhtJGp1q2EozHs02US+gzxJ9nuf56qg== dependencies: "@types/react" "*" "@types/react-test-renderer@^16.9.3": - "integrity" "sha512-C4cN7C2uSSGOYelp2XfdtJb5TsCP+QiZ+0Bm4U3ZfUswN8oN9O/l86XO/OvBSFCmWY7w75fzsQvZ50eGkFN34A==" - "resolved" "https://registry.npmjs.org/@types/react-test-renderer/-/react-test-renderer-16.9.5.tgz" - "version" "16.9.5" + version "16.9.5" + resolved "https://registry.npmjs.org/@types/react-test-renderer/-/react-test-renderer-16.9.5.tgz" + integrity sha512-C4cN7C2uSSGOYelp2XfdtJb5TsCP+QiZ+0Bm4U3ZfUswN8oN9O/l86XO/OvBSFCmWY7w75fzsQvZ50eGkFN34A== dependencies: "@types/react" "^16" "@types/react-transition-group@^4.2.0": - "integrity" "sha512-juKD/eiSM3/xZYzjuzH6ZwpP+/lejltmiS3QEzV/vmb/Q8+HfDmxu+Baga8UEMGBqV88Nbg4l2hY/K2DkyaLLA==" - "resolved" "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.5.tgz" - "version" "4.4.5" + version "4.4.5" + resolved "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.5.tgz" + integrity sha512-juKD/eiSM3/xZYzjuzH6ZwpP+/lejltmiS3QEzV/vmb/Q8+HfDmxu+Baga8UEMGBqV88Nbg4l2hY/K2DkyaLLA== dependencies: "@types/react" "*" -"@types/react@*", "@types/react@^16.8.6 || ^17.0.0", "@types/react@^18.0.25": - "integrity" "sha512-xD6c0KDT4m7n9uD4ZHi02lzskaiqcBxf4zi+tXZY98a04wvc0hi/TcCPC2FOESZi51Nd7tlUeOJY8RofL799/g==" - "resolved" "https://registry.npmjs.org/@types/react/-/react-18.0.25.tgz" - "version" "18.0.25" +"@types/react@*", "@types/react@^18.0.25": + version "18.0.25" + resolved "https://registry.npmjs.org/@types/react/-/react-18.0.25.tgz" + integrity sha512-xD6c0KDT4m7n9uD4ZHi02lzskaiqcBxf4zi+tXZY98a04wvc0hi/TcCPC2FOESZi51Nd7tlUeOJY8RofL799/g== dependencies: "@types/prop-types" "*" "@types/scheduler" "*" - "csstype" "^3.0.2" + csstype "^3.0.2" "@types/react@^16": - "integrity" "sha512-b99nWeGGReLh6aKBppghVqp93dFJtgtDOzc8NXM6hewD8PQ2zZG5kBLgbx+VJr7Q7WBMjHxaIl3dwpwwPIUgyA==" - "resolved" "https://registry.npmjs.org/@types/react/-/react-16.14.34.tgz" - "version" "16.14.34" + version "16.14.34" + resolved "https://registry.npmjs.org/@types/react/-/react-16.14.34.tgz" + integrity sha512-b99nWeGGReLh6aKBppghVqp93dFJtgtDOzc8NXM6hewD8PQ2zZG5kBLgbx+VJr7Q7WBMjHxaIl3dwpwwPIUgyA== dependencies: "@types/prop-types" "*" "@types/scheduler" "*" - "csstype" "^3.0.2" + csstype "^3.0.2" "@types/redux@^3.6.31": - "integrity" "sha512-UEa68g5Q1EPG4Wsnxqhbl0luFVRyX5dbKF3MQstkoWawSNKLulS2WsZZbALsPUX4Ax6SY9faqEs6dPM47cBAcg==" - "resolved" "https://registry.npmjs.org/@types/redux/-/redux-3.6.31.tgz" - "version" "3.6.31" + version "3.6.31" + resolved "https://registry.npmjs.org/@types/redux/-/redux-3.6.31.tgz" + integrity sha512-UEa68g5Q1EPG4Wsnxqhbl0luFVRyX5dbKF3MQstkoWawSNKLulS2WsZZbALsPUX4Ax6SY9faqEs6dPM47cBAcg== "@types/resolve@1.17.1": - "integrity" "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==" - "resolved" "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz" - "version" "1.17.1" + version "1.17.1" + resolved "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz" + integrity sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw== dependencies: "@types/node" "*" "@types/retry@0.12.0": - "integrity" "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==" - "resolved" "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz" - "version" "0.12.0" + version "0.12.0" + resolved "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz" + integrity sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA== "@types/scheduler@*": - "integrity" "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" - "resolved" "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz" - "version" "0.16.2" + version "0.16.2" + resolved "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz" + integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew== "@types/semaphore@^1.1.0": - "integrity" "sha512-jmFpMslMtBGOXY2s7x6O8vBebcj6zhkwl0Pd/viZApo1uZaPk733P8doPvaiBbCG+R7201OLOl4QP7l1mFyuyw==" - "resolved" "https://registry.npmjs.org/@types/semaphore/-/semaphore-1.1.1.tgz" - "version" "1.1.1" + version "1.1.1" + resolved "https://registry.npmjs.org/@types/semaphore/-/semaphore-1.1.1.tgz" + integrity sha512-jmFpMslMtBGOXY2s7x6O8vBebcj6zhkwl0Pd/viZApo1uZaPk733P8doPvaiBbCG+R7201OLOl4QP7l1mFyuyw== "@types/semver@^7.3.12": - "integrity" "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==" - "resolved" "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz" - "version" "7.3.13" + version "7.3.13" + resolved "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz" + integrity sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw== "@types/serve-index@^1.9.1": - "integrity" "sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==" - "resolved" "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz" - "version" "1.9.1" + version "1.9.1" + resolved "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz" + integrity sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg== dependencies: "@types/express" "*" "@types/serve-static@*", "@types/serve-static@^1.13.10": - "integrity" "sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==" - "resolved" "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.0.tgz" - "version" "1.15.0" + version "1.15.0" + resolved "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.0.tgz" + integrity sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg== dependencies: "@types/mime" "*" "@types/node" "*" "@types/socket.io-client@^1.4.34": - "integrity" "sha512-ZJWjtFBeBy1kRSYpVbeGYTElf6BqPQUkXDlHHD4k/42byCN5Rh027f4yARHCink9sKAkbtGZXEAmR0ZCnc2/Ag==" - "resolved" "https://registry.npmjs.org/@types/socket.io-client/-/socket.io-client-1.4.36.tgz" - "version" "1.4.36" + version "1.4.36" + resolved "https://registry.npmjs.org/@types/socket.io-client/-/socket.io-client-1.4.36.tgz" + integrity sha512-ZJWjtFBeBy1kRSYpVbeGYTElf6BqPQUkXDlHHD4k/42byCN5Rh027f4yARHCink9sKAkbtGZXEAmR0ZCnc2/Ag== "@types/sockjs@^0.3.33": - "integrity" "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==" - "resolved" "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz" - "version" "0.3.33" + version "0.3.33" + resolved "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz" + integrity sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw== dependencies: "@types/node" "*" "@types/source-list-map@*": - "integrity" "sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA==" - "resolved" "https://registry.npmjs.org/@types/source-list-map/-/source-list-map-0.1.2.tgz" - "version" "0.1.2" + version "0.1.2" + resolved "https://registry.npmjs.org/@types/source-list-map/-/source-list-map-0.1.2.tgz" + integrity sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA== "@types/stack-utils@^1.0.1": - "integrity" "sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw==" - "resolved" "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-1.0.1.tgz" - "version" "1.0.1" + version "1.0.1" + resolved "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-1.0.1.tgz" + integrity sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw== "@types/stack-utils@^2.0.0": - "integrity" "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==" - "resolved" "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz" - "version" "2.0.1" + version "2.0.1" + resolved "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz" + integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== "@types/tailwindcss@^3.0.10": - "integrity" "sha512-JxPzrm609hzvF4nmOI3StLjbBEP3WWQxDDJESqR1nh94h7gyyy3XSl0hn5RBMJ9mPudlLjtaXs5YEBtLw7CnPA==" - "resolved" "https://registry.npmjs.org/@types/tailwindcss/-/tailwindcss-3.1.0.tgz" - "version" "3.1.0" + version "3.1.0" + resolved "https://registry.npmjs.org/@types/tailwindcss/-/tailwindcss-3.1.0.tgz" + integrity sha512-JxPzrm609hzvF4nmOI3StLjbBEP3WWQxDDJESqR1nh94h7gyyy3XSl0hn5RBMJ9mPudlLjtaXs5YEBtLw7CnPA== dependencies: - "tailwindcss" "*" + tailwindcss "*" "@types/tapable@^1", "@types/tapable@^1.0.5": - "integrity" "sha512-ipixuVrh2OdNmauvtT51o3d8z12p6LtFW9in7U79der/kwejjdNchQC5UMn5u/KxNoM7VHHOs/l8KS8uHxhODQ==" - "resolved" "https://registry.npmjs.org/@types/tapable/-/tapable-1.0.8.tgz" - "version" "1.0.8" + version "1.0.8" + resolved "https://registry.npmjs.org/@types/tapable/-/tapable-1.0.8.tgz" + integrity sha512-ipixuVrh2OdNmauvtT51o3d8z12p6LtFW9in7U79der/kwejjdNchQC5UMn5u/KxNoM7VHHOs/l8KS8uHxhODQ== "@types/testing-library__dom@*", "@types/testing-library__dom@^6.12.1": - "integrity" "sha512-sMl7OSv0AvMOqn1UJ6j1unPMIHRXen0Ita1ujnMX912rrOcawe4f7wu0Zt9GIQhBhJvH2BaibqFgQ3lP+Pj2hA==" - "resolved" "https://registry.npmjs.org/@types/testing-library__dom/-/testing-library__dom-6.14.0.tgz" - "version" "6.14.0" + version "6.14.0" + resolved "https://registry.npmjs.org/@types/testing-library__dom/-/testing-library__dom-6.14.0.tgz" + integrity sha512-sMl7OSv0AvMOqn1UJ6j1unPMIHRXen0Ita1ujnMX912rrOcawe4f7wu0Zt9GIQhBhJvH2BaibqFgQ3lP+Pj2hA== dependencies: - "pretty-format" "^24.3.0" + pretty-format "^24.3.0" "@types/testing-library__react@^9.1.2": - "integrity" "sha512-iCdNPKU3IsYwRK9JieSYAiX0+aYDXOGAmrC/3/M7AqqSDKnWWVv07X+Zk1uFSL7cMTUYzv4lQRfohucEocn5/w==" - "resolved" "https://registry.npmjs.org/@types/testing-library__react/-/testing-library__react-9.1.3.tgz" - "version" "9.1.3" + version "9.1.3" + resolved "https://registry.npmjs.org/@types/testing-library__react/-/testing-library__react-9.1.3.tgz" + integrity sha512-iCdNPKU3IsYwRK9JieSYAiX0+aYDXOGAmrC/3/M7AqqSDKnWWVv07X+Zk1uFSL7cMTUYzv4lQRfohucEocn5/w== dependencies: "@types/react-dom" "*" "@types/testing-library__dom" "*" - "pretty-format" "^25.1.0" + pretty-format "^25.1.0" "@types/trusted-types@^2.0.2": - "integrity" "sha512-F5DIZ36YVLE+PN+Zwws4kJogq47hNgX3Nx6WyDJ3kcplxyke3XIzB8uK5n/Lpm1HBsbGzd6nmGehL8cPekP+Tg==" - "resolved" "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.2.tgz" - "version" "2.0.2" + version "2.0.2" + resolved "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.2.tgz" + integrity sha512-F5DIZ36YVLE+PN+Zwws4kJogq47hNgX3Nx6WyDJ3kcplxyke3XIzB8uK5n/Lpm1HBsbGzd6nmGehL8cPekP+Tg== "@types/uglify-js@*": - "integrity" "sha512-GkewRA4i5oXacU/n4MA9+bLgt5/L3F1mKrYvFGm7r2ouLXhRKjuWwo9XHNnbx6WF3vlGW21S3fCvgqxvxXXc5g==" - "resolved" "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.17.1.tgz" - "version" "3.17.1" + version "3.17.1" + resolved "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.17.1.tgz" + integrity sha512-GkewRA4i5oXacU/n4MA9+bLgt5/L3F1mKrYvFGm7r2ouLXhRKjuWwo9XHNnbx6WF3vlGW21S3fCvgqxvxXXc5g== dependencies: - "source-map" "^0.6.1" + source-map "^0.6.1" "@types/unist@*", "@types/unist@^2.0.0", "@types/unist@^2.0.2", "@types/unist@^2.0.3": - "integrity" "sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==" - "resolved" "https://registry.npmjs.org/@types/unist/-/unist-2.0.6.tgz" - "version" "2.0.6" + version "2.0.6" + resolved "https://registry.npmjs.org/@types/unist/-/unist-2.0.6.tgz" + integrity sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ== "@types/uuid@^8.3.0": - "integrity" "sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==" - "resolved" "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.4.tgz" - "version" "8.3.4" + version "8.3.4" + resolved "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.4.tgz" + integrity sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw== "@types/webpack-env@^1.16.0": - "integrity" "sha512-56/MAlX5WMsPVbOg7tAxnYvNYMMWr/QJiIp6BxVSW3JJXUVzzOn64qW8TzQyMSqSUFM2+PVI4aUHcHOzIz/1tg==" - "resolved" "https://registry.npmjs.org/@types/webpack-env/-/webpack-env-1.18.0.tgz" - "version" "1.18.0" + version "1.18.0" + resolved "https://registry.npmjs.org/@types/webpack-env/-/webpack-env-1.18.0.tgz" + integrity sha512-56/MAlX5WMsPVbOg7tAxnYvNYMMWr/QJiIp6BxVSW3JJXUVzzOn64qW8TzQyMSqSUFM2+PVI4aUHcHOzIz/1tg== "@types/webpack-sources@*": - "integrity" "sha512-Ft7YH3lEVRQ6ls8k4Ff1oB4jN6oy/XmU6tQISKdhfh+1mR+viZFphS6WL0IrtDOzvefmJg5a0s7ZQoRXwqTEFg==" - "resolved" "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-3.2.0.tgz" - "version" "3.2.0" + version "3.2.0" + resolved "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-3.2.0.tgz" + integrity sha512-Ft7YH3lEVRQ6ls8k4Ff1oB4jN6oy/XmU6tQISKdhfh+1mR+viZFphS6WL0IrtDOzvefmJg5a0s7ZQoRXwqTEFg== dependencies: "@types/node" "*" "@types/source-list-map" "*" - "source-map" "^0.7.3" + source-map "^0.7.3" -"@types/webpack@^4.41.13", "@types/webpack@^4.41.26", "@types/webpack@^4.41.8", "@types/webpack@4.x", "@types/webpack@4.x || 5.x": - "integrity" "sha512-PPajH64Ft2vWevkerISMtnZ8rTs4YmRbs+23c402J0INmxDKCrhZNvwZYtzx96gY2wAtXdrK1BS2fiC8MlLr3g==" - "resolved" "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.33.tgz" - "version" "4.41.33" +"@types/webpack@^4.41.13", "@types/webpack@^4.41.26", "@types/webpack@^4.41.8": + version "4.41.33" + resolved "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.33.tgz" + integrity sha512-PPajH64Ft2vWevkerISMtnZ8rTs4YmRbs+23c402J0INmxDKCrhZNvwZYtzx96gY2wAtXdrK1BS2fiC8MlLr3g== dependencies: "@types/node" "*" "@types/tapable" "^1" "@types/uglify-js" "*" "@types/webpack-sources" "*" - "anymatch" "^3.0.0" - "source-map" "^0.6.0" + anymatch "^3.0.0" + source-map "^0.6.0" "@types/ws@^8.5.1": - "integrity" "sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==" - "resolved" "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz" - "version" "8.5.3" + version "8.5.3" + resolved "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz" + integrity sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w== dependencies: "@types/node" "*" "@types/yargs-parser@*": - "integrity" "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==" - "resolved" "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz" - "version" "21.0.0" + version "21.0.0" + resolved "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz" + integrity sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA== "@types/yargs@^13.0.0": - "integrity" "sha512-qCxJE1qgz2y0hA4pIxjBR+PelCH0U5CK1XJXFwCNqfmliatKp47UCXXE9Dyk1OXBDLvsCF57TqQEJaeLfDYEOQ==" - "resolved" "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.12.tgz" - "version" "13.0.12" + version "13.0.12" + resolved "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.12.tgz" + integrity sha512-qCxJE1qgz2y0hA4pIxjBR+PelCH0U5CK1XJXFwCNqfmliatKp47UCXXE9Dyk1OXBDLvsCF57TqQEJaeLfDYEOQ== dependencies: "@types/yargs-parser" "*" "@types/yargs@^15.0.0": - "integrity" "sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ==" - "resolved" "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.14.tgz" - "version" "15.0.14" + version "15.0.14" + resolved "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.14.tgz" + integrity sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ== dependencies: "@types/yargs-parser" "*" "@types/yargs@^16.0.0": - "integrity" "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==" - "resolved" "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz" - "version" "16.0.4" + version "16.0.4" + resolved "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz" + integrity sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw== dependencies: "@types/yargs-parser" "*" "@types/yargs@^17.0.8": - "integrity" "sha512-9sWaruZk2JGxIQU+IhI1fhPYRcQ0UuTNuKuCW9bR5fp7qi2Llf7WDzNa17Cy7TKnh3cdxDOiyTu6gaLS0eDatg==" - "resolved" "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.13.tgz" - "version" "17.0.13" + version "17.0.13" + resolved "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.13.tgz" + integrity sha512-9sWaruZk2JGxIQU+IhI1fhPYRcQ0UuTNuKuCW9bR5fp7qi2Llf7WDzNa17Cy7TKnh3cdxDOiyTu6gaLS0eDatg== dependencies: "@types/yargs-parser" "*" -"@typescript-eslint/eslint-plugin@^4.0.0 || ^5.0.0", "@typescript-eslint/eslint-plugin@^5.28.0", "@typescript-eslint/eslint-plugin@^5.5.0", "@typescript-eslint/eslint-plugin@1.x", "@typescript-eslint/eslint-plugin@2.x": - "integrity" "sha512-j5ULd7FmmekcyWeArx+i8x7sdRHzAtXTkmDPthE4amxZOWKFK7bomoJ4r7PJ8K7PoMzD16U8MmuZFAonr1ERvw==" - "resolved" "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.44.0.tgz" - "version" "5.44.0" +"@typescript-eslint/eslint-plugin@^5.28.0", "@typescript-eslint/eslint-plugin@^5.5.0": + version "5.44.0" + resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.44.0.tgz" + integrity sha512-j5ULd7FmmekcyWeArx+i8x7sdRHzAtXTkmDPthE4amxZOWKFK7bomoJ4r7PJ8K7PoMzD16U8MmuZFAonr1ERvw== dependencies: "@typescript-eslint/scope-manager" "5.44.0" "@typescript-eslint/type-utils" "5.44.0" "@typescript-eslint/utils" "5.44.0" - "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" + 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/experimental-utils@^5.0.0", "@typescript-eslint/experimental-utils@^5.3.0": - "integrity" "sha512-j8GLemAySe8oUCgILdUaT66pemdWSYcwUYG2Pb71O119hCdvkU+4q8sUTbnDg8NhlZEzSWG2N1v4IxT1kEZrGg==" - "resolved" "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.44.0.tgz" - "version" "5.44.0" + version "5.44.0" + resolved "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.44.0.tgz" + integrity sha512-j8GLemAySe8oUCgILdUaT66pemdWSYcwUYG2Pb71O119hCdvkU+4q8sUTbnDg8NhlZEzSWG2N1v4IxT1kEZrGg== dependencies: "@typescript-eslint/utils" "5.44.0" -"@typescript-eslint/parser@^5.0.0", "@typescript-eslint/parser@^5.28.0", "@typescript-eslint/parser@^5.5.0", "@typescript-eslint/parser@1.x", "@typescript-eslint/parser@2.x": - "integrity" "sha512-H7LCqbZnKqkkgQHaKLGC6KUjt3pjJDx8ETDqmwncyb6PuoigYajyAwBGz08VU/l86dZWZgI4zm5k2VaKqayYyA==" - "resolved" "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.44.0.tgz" - "version" "5.44.0" +"@typescript-eslint/parser@^5.28.0", "@typescript-eslint/parser@^5.5.0": + version "5.44.0" + resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.44.0.tgz" + integrity sha512-H7LCqbZnKqkkgQHaKLGC6KUjt3pjJDx8ETDqmwncyb6PuoigYajyAwBGz08VU/l86dZWZgI4zm5k2VaKqayYyA== dependencies: "@typescript-eslint/scope-manager" "5.44.0" "@typescript-eslint/types" "5.44.0" "@typescript-eslint/typescript-estree" "5.44.0" - "debug" "^4.3.4" + debug "^4.3.4" "@typescript-eslint/scope-manager@5.44.0": - "integrity" "sha512-2pKml57KusI0LAhgLKae9kwWeITZ7IsZs77YxyNyIVOwQ1kToyXRaJLl+uDEXzMN5hnobKUOo2gKntK9H1YL8g==" - "resolved" "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.44.0.tgz" - "version" "5.44.0" + version "5.44.0" + resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.44.0.tgz" + integrity sha512-2pKml57KusI0LAhgLKae9kwWeITZ7IsZs77YxyNyIVOwQ1kToyXRaJLl+uDEXzMN5hnobKUOo2gKntK9H1YL8g== dependencies: "@typescript-eslint/types" "5.44.0" "@typescript-eslint/visitor-keys" "5.44.0" "@typescript-eslint/type-utils@5.44.0": - "integrity" "sha512-A1u0Yo5wZxkXPQ7/noGkRhV4J9opcymcr31XQtOzcc5nO/IHN2E2TPMECKWYpM3e6olWEM63fq/BaL1wEYnt/w==" - "resolved" "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.44.0.tgz" - "version" "5.44.0" + version "5.44.0" + resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.44.0.tgz" + integrity sha512-A1u0Yo5wZxkXPQ7/noGkRhV4J9opcymcr31XQtOzcc5nO/IHN2E2TPMECKWYpM3e6olWEM63fq/BaL1wEYnt/w== dependencies: "@typescript-eslint/typescript-estree" "5.44.0" "@typescript-eslint/utils" "5.44.0" - "debug" "^4.3.4" - "tsutils" "^3.21.0" + debug "^4.3.4" + tsutils "^3.21.0" "@typescript-eslint/types@5.44.0": - "integrity" "sha512-Tp+zDnHmGk4qKR1l+Y1rBvpjpm5tGXX339eAlRBDg+kgZkz9Bw+pqi4dyseOZMsGuSH69fYfPJCBKBrbPCxYFQ==" - "resolved" "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.44.0.tgz" - "version" "5.44.0" + version "5.44.0" + resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.44.0.tgz" + integrity sha512-Tp+zDnHmGk4qKR1l+Y1rBvpjpm5tGXX339eAlRBDg+kgZkz9Bw+pqi4dyseOZMsGuSH69fYfPJCBKBrbPCxYFQ== "@typescript-eslint/typescript-estree@5.44.0": - "integrity" "sha512-M6Jr+RM7M5zeRj2maSfsZK2660HKAJawv4Ud0xT+yauyvgrsHu276VtXlKDFnEmhG+nVEd0fYZNXGoAgxwDWJw==" - "resolved" "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.44.0.tgz" - "version" "5.44.0" + version "5.44.0" + resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.44.0.tgz" + integrity sha512-M6Jr+RM7M5zeRj2maSfsZK2660HKAJawv4Ud0xT+yauyvgrsHu276VtXlKDFnEmhG+nVEd0fYZNXGoAgxwDWJw== dependencies: "@typescript-eslint/types" "5.44.0" "@typescript-eslint/visitor-keys" "5.44.0" - "debug" "^4.3.4" - "globby" "^11.1.0" - "is-glob" "^4.0.3" - "semver" "^7.3.7" - "tsutils" "^3.21.0" + 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.13.0", "@typescript-eslint/utils@5.44.0": - "integrity" "sha512-fMzA8LLQ189gaBjS0MZszw5HBdZgVwxVFShCO3QN+ws3GlPkcy9YuS3U4wkT6su0w+Byjq3mS3uamy9HE4Yfjw==" - "resolved" "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.44.0.tgz" - "version" "5.44.0" +"@typescript-eslint/utils@5.44.0", "@typescript-eslint/utils@^5.13.0": + version "5.44.0" + resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.44.0.tgz" + integrity sha512-fMzA8LLQ189gaBjS0MZszw5HBdZgVwxVFShCO3QN+ws3GlPkcy9YuS3U4wkT6su0w+Byjq3mS3uamy9HE4Yfjw== dependencies: "@types/json-schema" "^7.0.9" "@types/semver" "^7.3.12" "@typescript-eslint/scope-manager" "5.44.0" "@typescript-eslint/types" "5.44.0" "@typescript-eslint/typescript-estree" "5.44.0" - "eslint-scope" "^5.1.1" - "eslint-utils" "^3.0.0" - "semver" "^7.3.7" + eslint-scope "^5.1.1" + eslint-utils "^3.0.0" + semver "^7.3.7" "@typescript-eslint/visitor-keys@5.44.0": - "integrity" "sha512-a48tLG8/4m62gPFbJ27FxwCOqPKxsb8KC3HkmYoq2As/4YyjQl1jDbRr1s63+g4FS/iIehjmN3L5UjmKva1HzQ==" - "resolved" "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.44.0.tgz" - "version" "5.44.0" + version "5.44.0" + resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.44.0.tgz" + integrity sha512-a48tLG8/4m62gPFbJ27FxwCOqPKxsb8KC3HkmYoq2As/4YyjQl1jDbRr1s63+g4FS/iIehjmN3L5UjmKva1HzQ== dependencies: "@typescript-eslint/types" "5.44.0" - "eslint-visitor-keys" "^3.3.0" + eslint-visitor-keys "^3.3.0" "@virtuoso.dev/react-urx@^0.2.12": - "integrity" "sha512-MY0ugBDjFb5Xt8v2HY7MKcRGqw/3gTpMlLXId2EwQvYJoC8sP7nnXjAxcBtTB50KTZhO0SbzsFimaZ7pSdApwA==" - "resolved" "https://registry.npmjs.org/@virtuoso.dev/react-urx/-/react-urx-0.2.13.tgz" - "version" "0.2.13" + version "0.2.13" + resolved "https://registry.npmjs.org/@virtuoso.dev/react-urx/-/react-urx-0.2.13.tgz" + integrity sha512-MY0ugBDjFb5Xt8v2HY7MKcRGqw/3gTpMlLXId2EwQvYJoC8sP7nnXjAxcBtTB50KTZhO0SbzsFimaZ7pSdApwA== dependencies: "@virtuoso.dev/urx" "^0.2.13" "@virtuoso.dev/urx@^0.2.12", "@virtuoso.dev/urx@^0.2.13": - "integrity" "sha512-iirJNv92A1ZWxoOHHDYW/1KPoi83939o83iUBQHIim0i3tMeSKEh+bxhJdTHQ86Mr4uXx9xGUTq69cp52ZP8Xw==" - "resolved" "https://registry.npmjs.org/@virtuoso.dev/urx/-/urx-0.2.13.tgz" - "version" "0.2.13" + version "0.2.13" + resolved "https://registry.npmjs.org/@virtuoso.dev/urx/-/urx-0.2.13.tgz" + integrity sha512-iirJNv92A1ZWxoOHHDYW/1KPoi83939o83iUBQHIim0i3tMeSKEh+bxhJdTHQ86Mr4uXx9xGUTq69cp52ZP8Xw== "@webassemblyjs/ast@1.11.1": - "integrity" "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz" - "version" "1.11.1" + version "1.11.1" + resolved "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz" + integrity sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw== dependencies: "@webassemblyjs/helper-numbers" "1.11.1" "@webassemblyjs/helper-wasm-bytecode" "1.11.1" "@webassemblyjs/ast@1.9.0": - "integrity" "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz" - "version" "1.9.0" + version "1.9.0" + resolved "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz" + integrity sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA== dependencies: "@webassemblyjs/helper-module-context" "1.9.0" "@webassemblyjs/helper-wasm-bytecode" "1.9.0" "@webassemblyjs/wast-parser" "1.9.0" "@webassemblyjs/floating-point-hex-parser@1.11.1": - "integrity" "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz" - "version" "1.11.1" + version "1.11.1" + resolved "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz" + integrity sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ== "@webassemblyjs/floating-point-hex-parser@1.9.0": - "integrity" "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz" - "version" "1.9.0" + version "1.9.0" + resolved "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz" + integrity sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA== "@webassemblyjs/helper-api-error@1.11.1": - "integrity" "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz" - "version" "1.11.1" + version "1.11.1" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz" + integrity sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg== "@webassemblyjs/helper-api-error@1.9.0": - "integrity" "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz" - "version" "1.9.0" + version "1.9.0" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz" + integrity sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw== "@webassemblyjs/helper-buffer@1.11.1": - "integrity" "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz" - "version" "1.11.1" + version "1.11.1" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz" + integrity sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA== "@webassemblyjs/helper-buffer@1.9.0": - "integrity" "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz" - "version" "1.9.0" + version "1.9.0" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz" + integrity sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA== "@webassemblyjs/helper-code-frame@1.9.0": - "integrity" "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz" - "version" "1.9.0" + version "1.9.0" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz" + integrity sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA== dependencies: "@webassemblyjs/wast-printer" "1.9.0" "@webassemblyjs/helper-fsm@1.9.0": - "integrity" "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz" - "version" "1.9.0" + version "1.9.0" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz" + integrity sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw== "@webassemblyjs/helper-module-context@1.9.0": - "integrity" "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz" - "version" "1.9.0" + version "1.9.0" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz" + integrity sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g== dependencies: "@webassemblyjs/ast" "1.9.0" "@webassemblyjs/helper-numbers@1.11.1": - "integrity" "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz" - "version" "1.11.1" + version "1.11.1" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz" + integrity sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ== dependencies: "@webassemblyjs/floating-point-hex-parser" "1.11.1" "@webassemblyjs/helper-api-error" "1.11.1" "@xtuc/long" "4.2.2" "@webassemblyjs/helper-wasm-bytecode@1.11.1": - "integrity" "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz" - "version" "1.11.1" + version "1.11.1" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz" + integrity sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q== "@webassemblyjs/helper-wasm-bytecode@1.9.0": - "integrity" "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz" - "version" "1.9.0" + version "1.9.0" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz" + integrity sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw== "@webassemblyjs/helper-wasm-section@1.11.1": - "integrity" "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz" - "version" "1.11.1" + version "1.11.1" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz" + integrity sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg== dependencies: "@webassemblyjs/ast" "1.11.1" "@webassemblyjs/helper-buffer" "1.11.1" @@ -5220,9 +5180,9 @@ "@webassemblyjs/wasm-gen" "1.11.1" "@webassemblyjs/helper-wasm-section@1.9.0": - "integrity" "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz" - "version" "1.9.0" + version "1.9.0" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz" + integrity sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw== dependencies: "@webassemblyjs/ast" "1.9.0" "@webassemblyjs/helper-buffer" "1.9.0" @@ -5230,47 +5190,47 @@ "@webassemblyjs/wasm-gen" "1.9.0" "@webassemblyjs/ieee754@1.11.1": - "integrity" "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz" - "version" "1.11.1" + version "1.11.1" + resolved "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz" + integrity sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ== dependencies: "@xtuc/ieee754" "^1.2.0" "@webassemblyjs/ieee754@1.9.0": - "integrity" "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz" - "version" "1.9.0" + version "1.9.0" + resolved "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz" + integrity sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg== dependencies: "@xtuc/ieee754" "^1.2.0" "@webassemblyjs/leb128@1.11.1": - "integrity" "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz" - "version" "1.11.1" + version "1.11.1" + resolved "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz" + integrity sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw== dependencies: "@xtuc/long" "4.2.2" "@webassemblyjs/leb128@1.9.0": - "integrity" "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz" - "version" "1.9.0" + version "1.9.0" + resolved "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz" + integrity sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw== dependencies: "@xtuc/long" "4.2.2" "@webassemblyjs/utf8@1.11.1": - "integrity" "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz" - "version" "1.11.1" + version "1.11.1" + resolved "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz" + integrity sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ== "@webassemblyjs/utf8@1.9.0": - "integrity" "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz" - "version" "1.9.0" + version "1.9.0" + resolved "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz" + integrity sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w== "@webassemblyjs/wasm-edit@1.11.1": - "integrity" "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz" - "version" "1.11.1" + version "1.11.1" + resolved "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz" + integrity sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA== dependencies: "@webassemblyjs/ast" "1.11.1" "@webassemblyjs/helper-buffer" "1.11.1" @@ -5282,9 +5242,9 @@ "@webassemblyjs/wast-printer" "1.11.1" "@webassemblyjs/wasm-edit@1.9.0": - "integrity" "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz" - "version" "1.9.0" + version "1.9.0" + resolved "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz" + integrity sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw== dependencies: "@webassemblyjs/ast" "1.9.0" "@webassemblyjs/helper-buffer" "1.9.0" @@ -5296,9 +5256,9 @@ "@webassemblyjs/wast-printer" "1.9.0" "@webassemblyjs/wasm-gen@1.11.1": - "integrity" "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz" - "version" "1.11.1" + version "1.11.1" + resolved "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz" + integrity sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA== dependencies: "@webassemblyjs/ast" "1.11.1" "@webassemblyjs/helper-wasm-bytecode" "1.11.1" @@ -5307,9 +5267,9 @@ "@webassemblyjs/utf8" "1.11.1" "@webassemblyjs/wasm-gen@1.9.0": - "integrity" "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz" - "version" "1.9.0" + version "1.9.0" + resolved "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz" + integrity sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA== dependencies: "@webassemblyjs/ast" "1.9.0" "@webassemblyjs/helper-wasm-bytecode" "1.9.0" @@ -5318,9 +5278,9 @@ "@webassemblyjs/utf8" "1.9.0" "@webassemblyjs/wasm-opt@1.11.1": - "integrity" "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz" - "version" "1.11.1" + version "1.11.1" + resolved "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz" + integrity sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw== dependencies: "@webassemblyjs/ast" "1.11.1" "@webassemblyjs/helper-buffer" "1.11.1" @@ -5328,9 +5288,9 @@ "@webassemblyjs/wasm-parser" "1.11.1" "@webassemblyjs/wasm-opt@1.9.0": - "integrity" "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz" - "version" "1.9.0" + version "1.9.0" + resolved "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz" + integrity sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A== dependencies: "@webassemblyjs/ast" "1.9.0" "@webassemblyjs/helper-buffer" "1.9.0" @@ -5338,9 +5298,9 @@ "@webassemblyjs/wasm-parser" "1.9.0" "@webassemblyjs/wasm-parser@1.11.1": - "integrity" "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz" - "version" "1.11.1" + version "1.11.1" + resolved "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz" + integrity sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA== dependencies: "@webassemblyjs/ast" "1.11.1" "@webassemblyjs/helper-api-error" "1.11.1" @@ -5350,9 +5310,9 @@ "@webassemblyjs/utf8" "1.11.1" "@webassemblyjs/wasm-parser@1.9.0": - "integrity" "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz" - "version" "1.9.0" + version "1.9.0" + resolved "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz" + integrity sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA== dependencies: "@webassemblyjs/ast" "1.9.0" "@webassemblyjs/helper-api-error" "1.9.0" @@ -5362,9 +5322,9 @@ "@webassemblyjs/utf8" "1.9.0" "@webassemblyjs/wast-parser@1.9.0": - "integrity" "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz" - "version" "1.9.0" + version "1.9.0" + resolved "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz" + integrity sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw== dependencies: "@webassemblyjs/ast" "1.9.0" "@webassemblyjs/floating-point-hex-parser" "1.9.0" @@ -5374,1704 +5334,1629 @@ "@xtuc/long" "4.2.2" "@webassemblyjs/wast-printer@1.11.1": - "integrity" "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz" - "version" "1.11.1" + version "1.11.1" + resolved "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz" + integrity sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg== dependencies: "@webassemblyjs/ast" "1.11.1" "@xtuc/long" "4.2.2" "@webassemblyjs/wast-printer@1.9.0": - "integrity" "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz" - "version" "1.9.0" + version "1.9.0" + resolved "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz" + integrity sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA== dependencies: "@webassemblyjs/ast" "1.9.0" "@webassemblyjs/wast-parser" "1.9.0" "@xtuc/long" "4.2.2" "@xtuc/ieee754@^1.2.0": - "integrity" "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" - "resolved" "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz" - "version" "1.2.0" + version "1.2.0" + resolved "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz" + integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== "@xtuc/long@4.2.2": - "integrity" "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" - "resolved" "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz" - "version" "4.2.2" + version "4.2.2" + resolved "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz" + integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== -"abab@^2.0.0", "abab@^2.0.3", "abab@^2.0.5": - "integrity" "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==" - "resolved" "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz" - "version" "2.0.6" +abab@^2.0.0, abab@^2.0.3, abab@^2.0.5: + version "2.0.6" + resolved "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz" + integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== -"accepts@~1.3.4", "accepts@~1.3.5", "accepts@~1.3.8": - "integrity" "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==" - "resolved" "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz" - "version" "1.3.8" +accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8: + version "1.3.8" + resolved "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz" + integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== dependencies: - "mime-types" "~2.1.34" - "negotiator" "0.6.3" + mime-types "~2.1.34" + negotiator "0.6.3" -"ace-builds@^1.4.13": - "integrity" "sha512-HvkZv/AhDRSA4k5Co5Dg8dWOTfID0AQ7Sa5cU6V82fz/XfCA0A/icC3sdBoh9yg0WQoJqbFrRYc+ogr/971Vww==" - "resolved" "https://registry.npmjs.org/ace-builds/-/ace-builds-1.13.1.tgz" - "version" "1.13.1" +ace-builds@^1.4.13: + version "1.13.1" + resolved "https://registry.npmjs.org/ace-builds/-/ace-builds-1.13.1.tgz" + integrity sha512-HvkZv/AhDRSA4k5Co5Dg8dWOTfID0AQ7Sa5cU6V82fz/XfCA0A/icC3sdBoh9yg0WQoJqbFrRYc+ogr/971Vww== -"acorn-globals@^4.3.0": - "integrity" "sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==" - "resolved" "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz" - "version" "4.3.4" +acorn-globals@^4.3.0: + version "4.3.4" + resolved "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz" + integrity sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A== dependencies: - "acorn" "^6.0.1" - "acorn-walk" "^6.0.1" + acorn "^6.0.1" + acorn-walk "^6.0.1" -"acorn-globals@^6.0.0": - "integrity" "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==" - "resolved" "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz" - "version" "6.0.0" +acorn-globals@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz" + integrity sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg== dependencies: - "acorn" "^7.1.1" - "acorn-walk" "^7.1.1" + acorn "^7.1.1" + acorn-walk "^7.1.1" -"acorn-import-assertions@^1.7.6": - "integrity" "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==" - "resolved" "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz" - "version" "1.8.0" +acorn-import-assertions@^1.7.6: + version "1.8.0" + resolved "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz" + integrity sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw== -"acorn-jsx@^5.3.1", "acorn-jsx@^5.3.2": - "integrity" "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==" - "resolved" "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" - "version" "5.3.2" +acorn-jsx@^5.3.1, acorn-jsx@^5.3.2: + version "5.3.2" + resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== -"acorn-node@^1.8.2": - "integrity" "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==" - "resolved" "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz" - "version" "1.8.2" +acorn-node@^1.8.2: + version "1.8.2" + resolved "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz" + integrity sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A== dependencies: - "acorn" "^7.0.0" - "acorn-walk" "^7.0.0" - "xtend" "^4.0.2" + acorn "^7.0.0" + acorn-walk "^7.0.0" + xtend "^4.0.2" -"acorn-walk@^6.0.1": - "integrity" "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==" - "resolved" "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz" - "version" "6.2.0" +acorn-walk@^6.0.1: + version "6.2.0" + resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz" + integrity sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA== -"acorn-walk@^7.0.0": - "integrity" "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==" - "resolved" "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz" - "version" "7.2.0" +acorn-walk@^7.0.0, acorn-walk@^7.1.1, acorn-walk@^7.2.0: + version "7.2.0" + resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz" + integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== -"acorn-walk@^7.1.1": - "integrity" "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==" - "resolved" "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz" - "version" "7.2.0" +acorn-walk@^8.1.1: + version "8.2.0" + resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz" + integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== -"acorn-walk@^7.2.0": - "integrity" "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==" - "resolved" "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz" - "version" "7.2.0" +acorn@^6.0.1, acorn@^6.0.4, acorn@^6.4.1: + version "6.4.2" + resolved "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz" + integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== -"acorn-walk@^8.1.1": - "integrity" "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==" - "resolved" "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz" - "version" "8.2.0" +acorn@^7.0.0, acorn@^7.1.1, acorn@^7.4.1: + version "7.4.1" + resolved "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz" + integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== -"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", "acorn@^8", "acorn@^8.2.4", "acorn@^8.4.1", "acorn@^8.5.0", "acorn@^8.7.1", "acorn@^8.8.0": - "integrity" "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==" - "resolved" "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz" - "version" "8.8.1" +acorn@^8.2.4, acorn@^8.4.1, acorn@^8.5.0, acorn@^8.7.1, acorn@^8.8.0: + version "8.8.1" + resolved "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz" + integrity sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA== -"acorn@^6.0.1": - "integrity" "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==" - "resolved" "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz" - "version" "6.4.2" +address@1.1.2, address@^1.0.1, address@^1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/address/-/address-1.1.2.tgz" + integrity sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA== -"acorn@^6.0.4": - "integrity" "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==" - "resolved" "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz" - "version" "6.4.2" - -"acorn@^6.4.1": - "integrity" "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==" - "resolved" "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz" - "version" "6.4.2" - -"acorn@^7.0.0": - "integrity" "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==" - "resolved" "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz" - "version" "7.4.1" - -"acorn@^7.1.1": - "integrity" "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==" - "resolved" "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz" - "version" "7.4.1" - -"acorn@^7.4.1": - "integrity" "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==" - "resolved" "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz" - "version" "7.4.1" - -"address@^1.0.1", "address@^1.1.2", "address@1.1.2": - "integrity" "sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA==" - "resolved" "https://registry.npmjs.org/address/-/address-1.1.2.tgz" - "version" "1.1.2" - -"adjust-sourcemap-loader@^4.0.0": - "integrity" "sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==" - "resolved" "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz" - "version" "4.0.0" +adjust-sourcemap-loader@3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-3.0.0.tgz" + integrity sha512-YBrGyT2/uVQ/c6Rr+t6ZJXniY03YtHGMJQYal368burRGYKqhx9qGTWqcBU5s1CwYY9E/ri63RYyG1IacMZtqw== dependencies: - "loader-utils" "^2.0.0" - "regex-parser" "^2.2.11" + loader-utils "^2.0.0" + regex-parser "^2.2.11" -"adjust-sourcemap-loader@3.0.0": - "integrity" "sha512-YBrGyT2/uVQ/c6Rr+t6ZJXniY03YtHGMJQYal368burRGYKqhx9qGTWqcBU5s1CwYY9E/ri63RYyG1IacMZtqw==" - "resolved" "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-3.0.0.tgz" - "version" "3.0.0" +adjust-sourcemap-loader@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz" + integrity sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A== dependencies: - "loader-utils" "^2.0.0" - "regex-parser" "^2.2.11" + loader-utils "^2.0.0" + regex-parser "^2.2.11" -"after@0.8.2": - "integrity" "sha512-QbJ0NTQ/I9DI3uSJA4cbexiwQeRAfjPScqIbSjUDd9TOrcg6pTkdgziesOqxBMBzit8vFCTwrP27t13vFOORRA==" - "resolved" "https://registry.npmjs.org/after/-/after-0.8.2.tgz" - "version" "0.8.2" +after@0.8.2: + version "0.8.2" + resolved "https://registry.npmjs.org/after/-/after-0.8.2.tgz" + integrity sha512-QbJ0NTQ/I9DI3uSJA4cbexiwQeRAfjPScqIbSjUDd9TOrcg6pTkdgziesOqxBMBzit8vFCTwrP27t13vFOORRA== -"agent-base@5": - "integrity" "sha512-TMeqbNl2fMW0nMjTEPOwe3J/PRFP4vqeoNuQMG0HlMrtm5QxKqdvAkZ1pRBQ/ulIyDD5Yq0nJ7YbdD8ey0TO3g==" - "resolved" "https://registry.npmjs.org/agent-base/-/agent-base-5.1.1.tgz" - "version" "5.1.1" +agent-base@5: + version "5.1.1" + resolved "https://registry.npmjs.org/agent-base/-/agent-base-5.1.1.tgz" + integrity sha512-TMeqbNl2fMW0nMjTEPOwe3J/PRFP4vqeoNuQMG0HlMrtm5QxKqdvAkZ1pRBQ/ulIyDD5Yq0nJ7YbdD8ey0TO3g== -"agent-base@6": - "integrity" "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==" - "resolved" "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz" - "version" "6.0.2" +agent-base@6: + 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" + debug "4" -"aggregate-error@^3.0.0": - "integrity" "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==" - "resolved" "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz" - "version" "3.1.0" +aggregate-error@^3.0.0: + version "3.1.0" + resolved "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz" + integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== dependencies: - "clean-stack" "^2.0.0" - "indent-string" "^4.0.0" + clean-stack "^2.0.0" + indent-string "^4.0.0" -"airbnb-js-shims@^2.2.1": - "integrity" "sha512-wJNXPH66U2xjgo1Zwyjf9EydvJ2Si94+vSdk6EERcBfB2VZkeltpqIats0cqIZMLCXP3zcyaUKGYQeIBT6XjsQ==" - "resolved" "https://registry.npmjs.org/airbnb-js-shims/-/airbnb-js-shims-2.2.1.tgz" - "version" "2.2.1" +airbnb-js-shims@^2.2.1: + version "2.2.1" + resolved "https://registry.npmjs.org/airbnb-js-shims/-/airbnb-js-shims-2.2.1.tgz" + integrity sha512-wJNXPH66U2xjgo1Zwyjf9EydvJ2Si94+vSdk6EERcBfB2VZkeltpqIats0cqIZMLCXP3zcyaUKGYQeIBT6XjsQ== dependencies: - "array-includes" "^3.0.3" - "array.prototype.flat" "^1.2.1" - "array.prototype.flatmap" "^1.2.1" - "es5-shim" "^4.5.13" - "es6-shim" "^0.35.5" - "function.prototype.name" "^1.1.0" - "globalthis" "^1.0.0" - "object.entries" "^1.1.0" - "object.fromentries" "^2.0.0 || ^1.0.0" - "object.getownpropertydescriptors" "^2.0.3" - "object.values" "^1.1.0" - "promise.allsettled" "^1.0.0" - "promise.prototype.finally" "^3.1.0" - "string.prototype.matchall" "^4.0.0 || ^3.0.1" - "string.prototype.padend" "^3.0.0" - "string.prototype.padstart" "^3.0.0" - "symbol.prototype.description" "^1.0.0" + array-includes "^3.0.3" + array.prototype.flat "^1.2.1" + array.prototype.flatmap "^1.2.1" + es5-shim "^4.5.13" + es6-shim "^0.35.5" + function.prototype.name "^1.1.0" + globalthis "^1.0.0" + object.entries "^1.1.0" + object.fromentries "^2.0.0 || ^1.0.0" + object.getownpropertydescriptors "^2.0.3" + object.values "^1.1.0" + promise.allsettled "^1.0.0" + promise.prototype.finally "^3.1.0" + string.prototype.matchall "^4.0.0 || ^3.0.1" + string.prototype.padend "^3.0.0" + string.prototype.padstart "^3.0.0" + symbol.prototype.description "^1.0.0" -"airbnb-prop-types@^2.15.0", "airbnb-prop-types@^2.16.0": - "integrity" "sha512-7WHOFolP/6cS96PhKNrslCLMYAI8yB1Pp6u6XmxozQOiZbsI5ycglZr5cHhBFfuRcQQjzCMith5ZPZdYiJCxUg==" - "resolved" "https://registry.npmjs.org/airbnb-prop-types/-/airbnb-prop-types-2.16.0.tgz" - "version" "2.16.0" +airbnb-prop-types@^2.15.0, airbnb-prop-types@^2.16.0: + version "2.16.0" + resolved "https://registry.npmjs.org/airbnb-prop-types/-/airbnb-prop-types-2.16.0.tgz" + integrity sha512-7WHOFolP/6cS96PhKNrslCLMYAI8yB1Pp6u6XmxozQOiZbsI5ycglZr5cHhBFfuRcQQjzCMith5ZPZdYiJCxUg== dependencies: - "array.prototype.find" "^2.1.1" - "function.prototype.name" "^1.1.2" - "is-regex" "^1.1.0" - "object-is" "^1.1.2" - "object.assign" "^4.1.0" - "object.entries" "^1.1.2" - "prop-types" "^15.7.2" - "prop-types-exact" "^1.2.0" - "react-is" "^16.13.1" + array.prototype.find "^2.1.1" + function.prototype.name "^1.1.2" + is-regex "^1.1.0" + object-is "^1.1.2" + object.assign "^4.1.0" + object.entries "^1.1.2" + prop-types "^15.7.2" + prop-types-exact "^1.2.0" + react-is "^16.13.1" -"ajv-errors@^1.0.0": - "integrity" "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==" - "resolved" "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz" - "version" "1.0.1" +ajv-errors@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz" + integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== -"ajv-formats@^2.1.1": - "integrity" "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==" - "resolved" "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz" - "version" "2.1.1" +ajv-formats@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz" + integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== dependencies: - "ajv" "^8.0.0" + ajv "^8.0.0" -"ajv-keywords@^3.1.0", "ajv-keywords@^3.4.1", "ajv-keywords@^3.5.2": - "integrity" "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==" - "resolved" "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz" - "version" "3.5.2" +ajv-keywords@^3.1.0, ajv-keywords@^3.4.1, ajv-keywords@^3.5.2: + version "3.5.2" + resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz" + integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== -"ajv-keywords@^5.0.0": - "integrity" "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==" - "resolved" "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz" - "version" "5.1.0" +ajv-keywords@^5.0.0: + version "5.1.0" + resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz" + integrity sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw== dependencies: - "fast-deep-equal" "^3.1.3" + fast-deep-equal "^3.1.3" -"ajv@^6.1.0", "ajv@^6.10.0", "ajv@^6.10.2", "ajv@^6.12.2", "ajv@^6.12.3", "ajv@^6.12.4", "ajv@^6.12.5", "ajv@^6.9.1", "ajv@>=5.0.0", "ajv@>=8": - "integrity" "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==" - "resolved" "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" - "version" "6.12.6" +ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5: + version "6.12.6" + resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" + 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" + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" -"ajv@^8.0.0": - "integrity" "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==" - "resolved" "https://registry.npmjs.org/ajv/-/ajv-8.11.2.tgz" - "version" "8.11.2" +ajv@^8.0.0, ajv@^8.6.0, ajv@^8.8.0: + version "8.11.2" + resolved "https://registry.npmjs.org/ajv/-/ajv-8.11.2.tgz" + integrity sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg== dependencies: - "fast-deep-equal" "^3.1.1" - "json-schema-traverse" "^1.0.0" - "require-from-string" "^2.0.2" - "uri-js" "^4.2.2" + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" -"ajv@^8.6.0": - "integrity" "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==" - "resolved" "https://registry.npmjs.org/ajv/-/ajv-8.11.2.tgz" - "version" "8.11.2" +alphanum-sort@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz" + integrity sha512-0FcBfdcmaumGPQ0qPn7Q5qTgz/ooXgIyp1rf8ik5bGX8mpE2YHjC0P/eyQvxu1GURYQgq9ozf2mteQ5ZD9YiyQ== + +anchorme@1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/anchorme/-/anchorme-1.1.2.tgz" + integrity sha512-/jQV4KaMWGSk+izs7KkqgoEbl+8dpePBbanE8OuwFD6Zrl8Vn1zi8w0ja5ZVRSrFnogkTag2YrNBWR6MRlwgbg== + +animated-scroll-to@^2.0.12: + version "2.3.0" + resolved "https://registry.npmjs.org/animated-scroll-to/-/animated-scroll-to-2.3.0.tgz" + integrity sha512-PT/5MSKCWQaK2kuOl2HT2KJMuJEvUS4/TgMhWy82c2EmF74/CIkvPBPKOvd8nMYP6Higo7xCn49/iSW9BccMoQ== + +ansi-align@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz" + integrity sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w== dependencies: - "fast-deep-equal" "^3.1.1" - "json-schema-traverse" "^1.0.0" - "require-from-string" "^2.0.2" - "uri-js" "^4.2.2" + string-width "^4.1.0" -"ajv@^8.8.0", "ajv@^8.8.2": - "integrity" "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==" - "resolved" "https://registry.npmjs.org/ajv/-/ajv-8.11.2.tgz" - "version" "8.11.2" +ansi-colors@^3.0.0: + version "3.2.4" + resolved "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz" + integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== + +ansi-escapes@^4.2.1, ansi-escapes@^4.3.1: + version "4.3.2" + resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz" + integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== dependencies: - "fast-deep-equal" "^3.1.1" - "json-schema-traverse" "^1.0.0" - "require-from-string" "^2.0.2" - "uri-js" "^4.2.2" + type-fest "^0.21.3" -"alphanum-sort@^1.0.0": - "integrity" "sha512-0FcBfdcmaumGPQ0qPn7Q5qTgz/ooXgIyp1rf8ik5bGX8mpE2YHjC0P/eyQvxu1GURYQgq9ozf2mteQ5ZD9YiyQ==" - "resolved" "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz" - "version" "1.0.2" +ansi-html-community@0.0.8, ansi-html-community@^0.0.8: + version "0.0.8" + resolved "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz" + integrity sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw== -"anchorme@1.1.2": - "integrity" "sha512-/jQV4KaMWGSk+izs7KkqgoEbl+8dpePBbanE8OuwFD6Zrl8Vn1zi8w0ja5ZVRSrFnogkTag2YrNBWR6MRlwgbg==" - "resolved" "https://registry.npmjs.org/anchorme/-/anchorme-1.1.2.tgz" - "version" "1.1.2" +ansi-html@^0.0.7: + version "0.0.7" + resolved "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz" + integrity sha512-JoAxEa1DfP9m2xfB/y2r/aKcwXNlltr4+0QSBC4TrLfcxyvepX2Pv0t/xpgGV5bGsDzCYV8SzjWgyCW0T9yYbA== -"animated-scroll-to@^2.0.12": - "integrity" "sha512-PT/5MSKCWQaK2kuOl2HT2KJMuJEvUS4/TgMhWy82c2EmF74/CIkvPBPKOvd8nMYP6Higo7xCn49/iSW9BccMoQ==" - "resolved" "https://registry.npmjs.org/animated-scroll-to/-/animated-scroll-to-2.3.0.tgz" - "version" "2.3.0" +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz" + integrity sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA== -"ansi-align@^3.0.0": - "integrity" "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==" - "resolved" "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz" - "version" "3.0.1" +ansi-regex@^4.0.0, ansi-regex@^4.1.0: + version "4.1.1" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz" + integrity sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g== + +ansi-regex@^5.0.0, ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-regex@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz" + integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== + +ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz" + integrity sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA== + +ansi-styles@^3.2.0, ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== dependencies: - "string-width" "^4.1.0" + color-convert "^1.9.0" -"ansi-colors@^3.0.0": - "integrity" "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==" - "resolved" "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz" - "version" "3.2.4" - -"ansi-escapes@^4.2.1", "ansi-escapes@^4.3.1": - "integrity" "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==" - "resolved" "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz" - "version" "4.3.2" +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== dependencies: - "type-fest" "^0.21.3" + color-convert "^2.0.1" -"ansi-html-community@^0.0.8", "ansi-html-community@0.0.8": - "integrity" "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==" - "resolved" "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz" - "version" "0.0.8" +ansi-styles@^5.0.0: + version "5.2.0" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz" + integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== -"ansi-html@^0.0.7": - "integrity" "sha512-JoAxEa1DfP9m2xfB/y2r/aKcwXNlltr4+0QSBC4TrLfcxyvepX2Pv0t/xpgGV5bGsDzCYV8SzjWgyCW0T9yYbA==" - "resolved" "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz" - "version" "0.0.7" - -"ansi-regex@^2.0.0": - "integrity" "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==" - "resolved" "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz" - "version" "2.1.1" - -"ansi-regex@^4.0.0", "ansi-regex@^4.1.0": - "integrity" "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==" - "resolved" "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz" - "version" "4.1.1" - -"ansi-regex@^5.0.0": - "integrity" "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" - "resolved" "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" - "version" "5.0.1" - -"ansi-regex@^5.0.1": - "integrity" "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" - "resolved" "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" - "version" "5.0.1" - -"ansi-regex@^6.0.1": - "integrity" "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==" - "resolved" "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz" - "version" "6.0.1" - -"ansi-styles@^2.2.1": - "integrity" "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==" - "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz" - "version" "2.2.1" - -"ansi-styles@^3.2.0", "ansi-styles@^3.2.1": - "integrity" "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==" - "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" - "version" "3.2.1" +ansi-to-html@^0.6.11: + version "0.6.15" + resolved "https://registry.npmjs.org/ansi-to-html/-/ansi-to-html-0.6.15.tgz" + integrity sha512-28ijx2aHJGdzbs+O5SNQF65r6rrKYnkuwTYm8lZlChuoJ9P1vVzIpWO20sQTqTPDXYp6NFwk326vApTtLVFXpQ== dependencies: - "color-convert" "^1.9.0" + entities "^2.0.0" -"ansi-styles@^4.0.0", "ansi-styles@^4.1.0": - "integrity" "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==" - "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" - "version" "4.3.0" - dependencies: - "color-convert" "^2.0.1" - -"ansi-styles@^5.0.0": - "integrity" "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==" - "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz" - "version" "5.2.0" - -"ansi-to-html@^0.6.11": - "integrity" "sha512-28ijx2aHJGdzbs+O5SNQF65r6rrKYnkuwTYm8lZlChuoJ9P1vVzIpWO20sQTqTPDXYp6NFwk326vApTtLVFXpQ==" - "resolved" "https://registry.npmjs.org/ansi-to-html/-/ansi-to-html-0.6.15.tgz" - "version" "0.6.15" - dependencies: - "entities" "^2.0.0" - -"antd@^4.18.7": - "integrity" "sha512-3Jv9ktv3Zy1shiVdwnvCgbwRExyGj9Ha8P+GA2rQXBP/t3G7EvpSijSx7cdIy6eLYjEKjuNTqNv0c2kxQX5obQ==" - "resolved" "https://registry.npmjs.org/antd/-/antd-4.24.3.tgz" - "version" "4.24.3" +antd@^4.18.7: + version "4.24.3" + resolved "https://registry.npmjs.org/antd/-/antd-4.24.3.tgz" + integrity sha512-3Jv9ktv3Zy1shiVdwnvCgbwRExyGj9Ha8P+GA2rQXBP/t3G7EvpSijSx7cdIy6eLYjEKjuNTqNv0c2kxQX5obQ== dependencies: "@ant-design/colors" "^6.0.0" "@ant-design/icons" "^4.7.0" "@ant-design/react-slick" "~0.29.1" "@babel/runtime" "^7.18.3" "@ctrl/tinycolor" "^3.4.0" - "classnames" "^2.2.6" - "copy-to-clipboard" "^3.2.0" - "lodash" "^4.17.21" - "moment" "^2.29.2" - "rc-cascader" "~3.7.0" - "rc-checkbox" "~2.3.0" - "rc-collapse" "~3.4.2" - "rc-dialog" "~9.0.2" - "rc-drawer" "~6.0.0" - "rc-dropdown" "~4.0.0" - "rc-field-form" "~1.27.0" - "rc-image" "~5.12.0" - "rc-input" "~0.1.4" - "rc-input-number" "~7.3.9" - "rc-mentions" "~1.11.0" - "rc-menu" "~9.7.2" - "rc-motion" "^2.6.1" - "rc-notification" "~4.6.0" - "rc-pagination" "~3.2.0" - "rc-picker" "~2.7.0" - "rc-progress" "~3.4.1" - "rc-rate" "~2.9.0" - "rc-resize-observer" "^1.2.0" - "rc-segmented" "~2.1.0" - "rc-select" "~14.1.13" - "rc-slider" "~10.0.0" - "rc-steps" "~5.0.0-alpha.2" - "rc-switch" "~3.2.0" - "rc-table" "~7.26.0" - "rc-tabs" "~12.3.0" - "rc-textarea" "~0.4.5" - "rc-tooltip" "~5.2.0" - "rc-tree" "~5.7.0" - "rc-tree-select" "~5.5.0" - "rc-trigger" "^5.2.10" - "rc-upload" "~4.3.0" - "rc-util" "^5.22.5" - "scroll-into-view-if-needed" "^2.2.25" + classnames "^2.2.6" + copy-to-clipboard "^3.2.0" + lodash "^4.17.21" + moment "^2.29.2" + rc-cascader "~3.7.0" + rc-checkbox "~2.3.0" + rc-collapse "~3.4.2" + rc-dialog "~9.0.2" + rc-drawer "~6.0.0" + rc-dropdown "~4.0.0" + rc-field-form "~1.27.0" + rc-image "~5.12.0" + rc-input "~0.1.4" + rc-input-number "~7.3.9" + rc-mentions "~1.11.0" + rc-menu "~9.7.2" + rc-motion "^2.6.1" + rc-notification "~4.6.0" + rc-pagination "~3.2.0" + rc-picker "~2.7.0" + rc-progress "~3.4.1" + rc-rate "~2.9.0" + rc-resize-observer "^1.2.0" + rc-segmented "~2.1.0" + rc-select "~14.1.13" + rc-slider "~10.0.0" + rc-steps "~5.0.0-alpha.2" + rc-switch "~3.2.0" + rc-table "~7.26.0" + rc-tabs "~12.3.0" + rc-textarea "~0.4.5" + rc-tooltip "~5.2.0" + rc-tree "~5.7.0" + rc-tree-select "~5.5.0" + rc-trigger "^5.2.10" + rc-upload "~4.3.0" + rc-util "^5.22.5" + scroll-into-view-if-needed "^2.2.25" -"any-base@^1.1.0": - "integrity" "sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg==" - "resolved" "https://registry.npmjs.org/any-base/-/any-base-1.1.0.tgz" - "version" "1.1.0" +any-base@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/any-base/-/any-base-1.1.0.tgz" + integrity sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg== -"anymatch@^1.3.0": - "integrity" "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==" - "resolved" "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz" - "version" "1.3.2" +anymatch@^1.3.0: + version "1.3.2" + resolved "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz" + integrity sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA== dependencies: - "micromatch" "^2.1.5" - "normalize-path" "^2.0.0" + micromatch "^2.1.5" + normalize-path "^2.0.0" -"anymatch@^2.0.0": - "integrity" "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==" - "resolved" "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz" - "version" "2.0.0" +anymatch@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz" + integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== dependencies: - "micromatch" "^3.1.4" - "normalize-path" "^2.1.1" + micromatch "^3.1.4" + normalize-path "^2.1.1" -"anymatch@^3.0.0", "anymatch@^3.0.3", "anymatch@~3.1.2": - "integrity" "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==" - "resolved" "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz" - "version" "3.1.3" +anymatch@^3.0.0, anymatch@^3.0.3, anymatch@~3.1.2: + version "3.1.3" + resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== dependencies: - "normalize-path" "^3.0.0" - "picomatch" "^2.0.4" + normalize-path "^3.0.0" + picomatch "^2.0.4" -"app-root-dir@^1.0.2": - "integrity" "sha512-jlpIfsOoNoafl92Sz//64uQHGSyMrD2vYG5d8o2a4qGvyNCvXur7bzIsWtAC/6flI2RYAp3kv8rsfBtaLm7w0g==" - "resolved" "https://registry.npmjs.org/app-root-dir/-/app-root-dir-1.0.2.tgz" - "version" "1.0.2" +app-root-dir@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/app-root-dir/-/app-root-dir-1.0.2.tgz" + integrity sha512-jlpIfsOoNoafl92Sz//64uQHGSyMrD2vYG5d8o2a4qGvyNCvXur7bzIsWtAC/6flI2RYAp3kv8rsfBtaLm7w0g== "aproba@^1.0.3 || ^2.0.0": - "integrity" "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==" - "resolved" "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz" - "version" "2.0.0" + version "2.0.0" + resolved "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz" + integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== -"aproba@^1.1.1": - "integrity" "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" - "resolved" "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz" - "version" "1.2.0" +aproba@^1.1.1: + version "1.2.0" + resolved "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz" + integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== -"are-we-there-yet@^2.0.0": - "integrity" "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==" - "resolved" "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz" - "version" "2.0.0" +are-we-there-yet@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz" + integrity sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw== dependencies: - "delegates" "^1.0.0" - "readable-stream" "^3.6.0" + delegates "^1.0.0" + readable-stream "^3.6.0" -"arg@^4.1.0": - "integrity" "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==" - "resolved" "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz" - "version" "4.1.3" +arg@^4.1.0: + version "4.1.3" + resolved "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz" + integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== -"arg@^5.0.2": - "integrity" "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==" - "resolved" "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz" - "version" "5.0.2" +arg@^5.0.2: + version "5.0.2" + resolved "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz" + integrity sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg== -"argparse@^1.0.10", "argparse@^1.0.7": - "integrity" "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==" - "resolved" "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz" - "version" "1.0.10" +argparse@^1.0.10, argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== dependencies: - "sprintf-js" "~1.0.2" + sprintf-js "~1.0.2" -"argparse@^2.0.1": - "integrity" "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" - "resolved" "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" - "version" "2.0.1" +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== -"aria-query@^4.0.2", "aria-query@^4.2.2": - "integrity" "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==" - "resolved" "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz" - "version" "4.2.2" +aria-query@^4.0.2, aria-query@^4.2.2: + version "4.2.2" + resolved "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz" + integrity sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA== dependencies: "@babel/runtime" "^7.10.2" "@babel/runtime-corejs3" "^7.10.2" -"aria-query@^5.0.0": - "integrity" "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==" - "resolved" "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz" - "version" "5.1.3" +aria-query@^5.0.0: + version "5.1.3" + resolved "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz" + integrity sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ== dependencies: - "deep-equal" "^2.0.5" + deep-equal "^2.0.5" -"arity-n@^1.0.4": - "integrity" "sha512-fExL2kFDC1Q2DUOx3whE/9KoN66IzkY4b4zUHUBFM1ojEYjZZYDcUW3bek/ufGionX9giIKDC5redH2IlGqcQQ==" - "resolved" "https://registry.npmjs.org/arity-n/-/arity-n-1.0.4.tgz" - "version" "1.0.4" +arity-n@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/arity-n/-/arity-n-1.0.4.tgz" + integrity sha512-fExL2kFDC1Q2DUOx3whE/9KoN66IzkY4b4zUHUBFM1ojEYjZZYDcUW3bek/ufGionX9giIKDC5redH2IlGqcQQ== -"arr-diff@^2.0.0": - "integrity" "sha512-dtXTVMkh6VkEEA7OhXnN1Ecb8aAGFdZ1LFxtOCoqj4qkyOJMt7+qs6Ahdy6p/NQCPYsRSXXivhSB/J5E9jmYKA==" - "resolved" "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz" - "version" "2.0.0" +arr-diff@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz" + integrity sha512-dtXTVMkh6VkEEA7OhXnN1Ecb8aAGFdZ1LFxtOCoqj4qkyOJMt7+qs6Ahdy6p/NQCPYsRSXXivhSB/J5E9jmYKA== dependencies: - "arr-flatten" "^1.0.1" + arr-flatten "^1.0.1" -"arr-diff@^4.0.0": - "integrity" "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==" - "resolved" "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz" - "version" "4.0.0" +arr-diff@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz" + integrity sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA== -"arr-flatten@^1.0.1", "arr-flatten@^1.1.0": - "integrity" "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" - "resolved" "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz" - "version" "1.1.0" +arr-flatten@^1.0.1, arr-flatten@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz" + integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== -"arr-union@^3.1.0": - "integrity" "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==" - "resolved" "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz" - "version" "3.1.0" +arr-union@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz" + integrity sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q== -"array-equal@^1.0.0": - "integrity" "sha512-H3LU5RLiSsGXPhN+Nipar0iR0IofH+8r89G2y1tBKxQ/agagKyAjhkAFDRBfodP2caPrNKHpAWNIM/c9yeL7uA==" - "resolved" "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz" - "version" "1.0.0" +array-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz" + integrity sha512-H3LU5RLiSsGXPhN+Nipar0iR0IofH+8r89G2y1tBKxQ/agagKyAjhkAFDRBfodP2caPrNKHpAWNIM/c9yeL7uA== -"array-find-index@^1.0.1": - "integrity" "sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw==" - "resolved" "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz" - "version" "1.0.2" +array-find-index@^1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz" + integrity sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw== -"array-flatten@^2.1.2": - "integrity" "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==" - "resolved" "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz" - "version" "2.1.2" +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz" + integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== -"array-flatten@1.1.1": - "integrity" "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" - "resolved" "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz" - "version" "1.1.1" +array-flatten@^2.1.2: + version "2.1.2" + resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz" + integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== -"array-includes@^3.0.3", "array-includes@^3.1.1", "array-includes@^3.1.3", "array-includes@^3.1.4", "array-includes@^3.1.5", "array-includes@^3.1.6": - "integrity" "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==" - "resolved" "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz" - "version" "3.1.6" +array-includes@^3.0.3, array-includes@^3.1.1, array-includes@^3.1.3, array-includes@^3.1.4, array-includes@^3.1.5, array-includes@^3.1.6: + version "3.1.6" + resolved "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz" + integrity sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw== dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.1.4" - "es-abstract" "^1.20.4" - "get-intrinsic" "^1.1.3" - "is-string" "^1.0.7" + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + get-intrinsic "^1.1.3" + is-string "^1.0.7" -"array-tree-filter@^2.1.0": - "integrity" "sha512-4ROwICNlNw/Hqa9v+rk5h22KjmzB1JGTMVKP2AKJBOCgb0yL0ASf0+YvCcLNNwquOHNX48jkeZIJ3a+oOQqKcw==" - "resolved" "https://registry.npmjs.org/array-tree-filter/-/array-tree-filter-2.1.0.tgz" - "version" "2.1.0" +array-tree-filter@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/array-tree-filter/-/array-tree-filter-2.1.0.tgz" + integrity sha512-4ROwICNlNw/Hqa9v+rk5h22KjmzB1JGTMVKP2AKJBOCgb0yL0ASf0+YvCcLNNwquOHNX48jkeZIJ3a+oOQqKcw== -"array-union@^1.0.2": - "integrity" "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==" - "resolved" "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz" - "version" "1.0.2" +array-union@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz" + integrity sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng== dependencies: - "array-uniq" "^1.0.1" + array-uniq "^1.0.1" -"array-union@^2.1.0": - "integrity" "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==" - "resolved" "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz" - "version" "2.1.0" +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== -"array-uniq@^1.0.1": - "integrity" "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==" - "resolved" "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz" - "version" "1.0.3" +array-uniq@^1.0.1: + version "1.0.3" + resolved "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz" + integrity sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q== -"array-unique@^0.2.1": - "integrity" "sha512-G2n5bG5fSUCpnsXz4+8FUkYsGPkNfLn9YvS66U5qbTIXI2Ynnlo4Bi42bWv+omKUCqz+ejzfClwne0alJWJPhg==" - "resolved" "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz" - "version" "0.2.1" +array-unique@^0.2.1: + version "0.2.1" + resolved "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz" + integrity sha512-G2n5bG5fSUCpnsXz4+8FUkYsGPkNfLn9YvS66U5qbTIXI2Ynnlo4Bi42bWv+omKUCqz+ejzfClwne0alJWJPhg== -"array-unique@^0.3.2": - "integrity" "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==" - "resolved" "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz" - "version" "0.3.2" +array-unique@^0.3.2: + version "0.3.2" + resolved "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz" + integrity sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ== -"array.prototype.filter@^1.0.0": - "integrity" "sha512-us+UrmGOilqttSOgoWZTpOvHu68vZT2YCjc/H4vhu56vzZpaDFBhB+Se2UwqWzMKbDv7Myq5M5pcZLAtUvTQdQ==" - "resolved" "https://registry.npmjs.org/array.prototype.filter/-/array.prototype.filter-1.0.2.tgz" - "version" "1.0.2" +array.prototype.filter@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/array.prototype.filter/-/array.prototype.filter-1.0.2.tgz" + integrity sha512-us+UrmGOilqttSOgoWZTpOvHu68vZT2YCjc/H4vhu56vzZpaDFBhB+Se2UwqWzMKbDv7Myq5M5pcZLAtUvTQdQ== dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.1.4" - "es-abstract" "^1.20.4" - "es-array-method-boxes-properly" "^1.0.0" - "is-string" "^1.0.7" + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + es-array-method-boxes-properly "^1.0.0" + is-string "^1.0.7" -"array.prototype.find@^2.1.1": - "integrity" "sha512-I2ri5Z9uMpMvnsNrHre9l3PaX+z9D0/z6F7Yt2u15q7wt0I62g5kX6xUKR1SJiefgG+u2/gJUmM8B47XRvQR6w==" - "resolved" "https://registry.npmjs.org/array.prototype.find/-/array.prototype.find-2.2.1.tgz" - "version" "2.2.1" +array.prototype.find@^2.1.1: + version "2.2.1" + resolved "https://registry.npmjs.org/array.prototype.find/-/array.prototype.find-2.2.1.tgz" + integrity sha512-I2ri5Z9uMpMvnsNrHre9l3PaX+z9D0/z6F7Yt2u15q7wt0I62g5kX6xUKR1SJiefgG+u2/gJUmM8B47XRvQR6w== dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.1.4" - "es-abstract" "^1.20.4" - "es-shim-unscopables" "^1.0.0" + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + es-shim-unscopables "^1.0.0" -"array.prototype.flat@^1.2.1", "array.prototype.flat@^1.2.3", "array.prototype.flat@^1.2.4", "array.prototype.flat@^1.2.5": - "integrity" "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==" - "resolved" "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz" - "version" "1.3.1" +array.prototype.flat@^1.2.1, array.prototype.flat@^1.2.3, array.prototype.flat@^1.2.4, array.prototype.flat@^1.2.5: + version "1.3.1" + resolved "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz" + integrity sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA== dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.1.4" - "es-abstract" "^1.20.4" - "es-shim-unscopables" "^1.0.0" + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + es-shim-unscopables "^1.0.0" -"array.prototype.flatmap@^1.2.1", "array.prototype.flatmap@^1.3.1": - "integrity" "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==" - "resolved" "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz" - "version" "1.3.1" +array.prototype.flatmap@^1.2.1, array.prototype.flatmap@^1.3.1: + version "1.3.1" + resolved "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz" + integrity sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ== dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.1.4" - "es-abstract" "^1.20.4" - "es-shim-unscopables" "^1.0.0" + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + es-shim-unscopables "^1.0.0" -"array.prototype.map@^1.0.5": - "integrity" "sha512-gfaKntvwqYIuC7mLLyv2wzZIJqrRhn5PZ9EfFejSx6a78sV7iDsGpG9P+3oUPtm1Rerqm6nrKS4FYuTIvWfo3g==" - "resolved" "https://registry.npmjs.org/array.prototype.map/-/array.prototype.map-1.0.5.tgz" - "version" "1.0.5" +array.prototype.map@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/array.prototype.map/-/array.prototype.map-1.0.5.tgz" + integrity sha512-gfaKntvwqYIuC7mLLyv2wzZIJqrRhn5PZ9EfFejSx6a78sV7iDsGpG9P+3oUPtm1Rerqm6nrKS4FYuTIvWfo3g== dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.1.4" - "es-abstract" "^1.20.4" - "es-array-method-boxes-properly" "^1.0.0" - "is-string" "^1.0.7" + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + es-array-method-boxes-properly "^1.0.0" + is-string "^1.0.7" -"array.prototype.reduce@^1.0.5": - "integrity" "sha512-kDdugMl7id9COE8R7MHF5jWk7Dqt/fs4Pv+JXoICnYwqpjjjbUurz6w5fT5IG6brLdJhv6/VoHB0H7oyIBXd+Q==" - "resolved" "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.5.tgz" - "version" "1.0.5" +array.prototype.reduce@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.5.tgz" + integrity sha512-kDdugMl7id9COE8R7MHF5jWk7Dqt/fs4Pv+JXoICnYwqpjjjbUurz6w5fT5IG6brLdJhv6/VoHB0H7oyIBXd+Q== dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.1.4" - "es-abstract" "^1.20.4" - "es-array-method-boxes-properly" "^1.0.0" - "is-string" "^1.0.7" + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + es-array-method-boxes-properly "^1.0.0" + is-string "^1.0.7" -"array.prototype.tosorted@^1.1.1": - "integrity" "sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==" - "resolved" "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.1.tgz" - "version" "1.1.1" +array.prototype.tosorted@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.1.tgz" + integrity sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ== dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.1.4" - "es-abstract" "^1.20.4" - "es-shim-unscopables" "^1.0.0" - "get-intrinsic" "^1.1.3" + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + es-shim-unscopables "^1.0.0" + get-intrinsic "^1.1.3" -"arraybuffer.slice@~0.0.7": - "integrity" "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==" - "resolved" "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz" - "version" "0.0.7" +arraybuffer.slice@~0.0.7: + version "0.0.7" + resolved "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz" + integrity sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog== -"arrify@^2.0.1": - "integrity" "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==" - "resolved" "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz" - "version" "2.0.1" +arrify@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz" + integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== -"asap@~2.0.3", "asap@~2.0.6": - "integrity" "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==" - "resolved" "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz" - "version" "2.0.6" +asap@~2.0.3, asap@~2.0.6: + version "2.0.6" + resolved "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz" + integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== -"asn1.js@^5.2.0": - "integrity" "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==" - "resolved" "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz" - "version" "5.4.1" +asn1.js@^5.2.0: + version "5.4.1" + resolved "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz" + integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== dependencies: - "bn.js" "^4.0.0" - "inherits" "^2.0.1" - "minimalistic-assert" "^1.0.0" - "safer-buffer" "^2.1.0" + bn.js "^4.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + safer-buffer "^2.1.0" -"asn1@~0.2.3": - "integrity" "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==" - "resolved" "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz" - "version" "0.2.6" +asn1@~0.2.3: + version "0.2.6" + resolved "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz" + integrity sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ== dependencies: - "safer-buffer" "~2.1.0" + safer-buffer "~2.1.0" -"assert-plus@^1.0.0", "assert-plus@1.0.0": - "integrity" "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==" - "resolved" "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz" - "version" "1.0.0" +assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz" + integrity sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw== -"assert@^1.1.1": - "integrity" "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==" - "resolved" "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz" - "version" "1.5.0" +assert@^1.1.1: + version "1.5.0" + resolved "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz" + integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA== dependencies: - "object-assign" "^4.1.1" - "util" "0.10.3" + object-assign "^4.1.1" + util "0.10.3" -"assert@^2.0.0": - "integrity" "sha512-se5Cd+js9dXJnu6Ag2JFc00t+HmHOen+8Q+L7O9zI0PqQXr20uk2J0XQqMxZEeo5U50o8Nvmmx7dZrl+Ufr35A==" - "resolved" "https://registry.npmjs.org/assert/-/assert-2.0.0.tgz" - "version" "2.0.0" +assert@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/assert/-/assert-2.0.0.tgz" + integrity sha512-se5Cd+js9dXJnu6Ag2JFc00t+HmHOen+8Q+L7O9zI0PqQXr20uk2J0XQqMxZEeo5U50o8Nvmmx7dZrl+Ufr35A== dependencies: - "es6-object-assign" "^1.1.0" - "is-nan" "^1.2.1" - "object-is" "^1.0.1" - "util" "^0.12.0" + es6-object-assign "^1.1.0" + is-nan "^1.2.1" + object-is "^1.0.1" + util "^0.12.0" -"assign-symbols@^1.0.0": - "integrity" "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==" - "resolved" "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz" - "version" "1.0.0" +assign-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz" + integrity sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw== -"ast-types-flow@^0.0.7": - "integrity" "sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==" - "resolved" "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz" - "version" "0.0.7" +ast-types-flow@^0.0.7: + version "0.0.7" + resolved "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz" + integrity sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag== -"ast-types@^0.14.2", "ast-types@0.14.2": - "integrity" "sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA==" - "resolved" "https://registry.npmjs.org/ast-types/-/ast-types-0.14.2.tgz" - "version" "0.14.2" +ast-types@0.13.3: + version "0.13.3" + resolved "https://registry.npmjs.org/ast-types/-/ast-types-0.13.3.tgz" + integrity sha512-XTZ7xGML849LkQP86sWdQzfhwbt3YwIO6MqbX9mUNYY98VKaaVZP7YNNm70IpwecbkkxmfC5IYAzOQ/2p29zRA== + +ast-types@0.14.2, ast-types@^0.14.2: + version "0.14.2" + resolved "https://registry.npmjs.org/ast-types/-/ast-types-0.14.2.tgz" + integrity sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA== dependencies: - "tslib" "^2.0.1" + tslib "^2.0.1" -"ast-types@0.13.3": - "integrity" "sha512-XTZ7xGML849LkQP86sWdQzfhwbt3YwIO6MqbX9mUNYY98VKaaVZP7YNNm70IpwecbkkxmfC5IYAzOQ/2p29zRA==" - "resolved" "https://registry.npmjs.org/ast-types/-/ast-types-0.13.3.tgz" - "version" "0.13.3" +async-each@^1.0.0, async-each@^1.0.1: + version "1.0.3" + resolved "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz" + integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== -"async-each@^1.0.0", "async-each@^1.0.1": - "integrity" "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==" - "resolved" "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz" - "version" "1.0.3" +async-limiter@~1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz" + integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== -"async-limiter@~1.0.0": - "integrity" "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==" - "resolved" "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz" - "version" "1.0.1" +async-validator@^4.1.0: + version "4.2.5" + resolved "https://registry.npmjs.org/async-validator/-/async-validator-4.2.5.tgz" + integrity sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg== -"async-validator@^4.1.0": - "integrity" "sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==" - "resolved" "https://registry.npmjs.org/async-validator/-/async-validator-4.2.5.tgz" - "version" "4.2.5" +async@^1.4.2: + version "1.5.2" + resolved "https://registry.npmjs.org/async/-/async-1.5.2.tgz" + integrity sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w== -"async@^1.4.2": - "integrity" "sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==" - "resolved" "https://registry.npmjs.org/async/-/async-1.5.2.tgz" - "version" "1.5.2" +async@^3.2.3: + version "3.2.4" + resolved "https://registry.npmjs.org/async/-/async-3.2.4.tgz" + integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ== -"async@^3.2.3": - "integrity" "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" - "resolved" "https://registry.npmjs.org/async/-/async-3.2.4.tgz" - "version" "3.2.4" +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== -"asynckit@^0.4.0": - "integrity" "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" - "resolved" "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz" - "version" "0.4.0" +at-least-node@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz" + integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== -"at-least-node@^1.0.0": - "integrity" "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==" - "resolved" "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz" - "version" "1.0.0" +atob@^2.1.2: + version "2.1.2" + resolved "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz" + integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== -"atob@^2.1.2": - "integrity" "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" - "resolved" "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz" - "version" "2.1.2" - -"autolinker@^3.11.0": - "integrity" "sha512-JiYl7j2Z19F9NdTmirENSUUIIL/9MytEWtmzhfmsKPCp9E+G35Y0UNCMoM9tFigxT59qSc8Ml2dlZXOCVTYwuA==" - "resolved" "https://registry.npmjs.org/autolinker/-/autolinker-3.16.2.tgz" - "version" "3.16.2" +autolinker@^3.11.0: + version "3.16.2" + resolved "https://registry.npmjs.org/autolinker/-/autolinker-3.16.2.tgz" + integrity sha512-JiYl7j2Z19F9NdTmirENSUUIIL/9MytEWtmzhfmsKPCp9E+G35Y0UNCMoM9tFigxT59qSc8Ml2dlZXOCVTYwuA== dependencies: - "tslib" "^2.3.0" + tslib "^2.3.0" -"autoprefixer@^10.4.13": - "integrity" "sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg==" - "resolved" "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.13.tgz" - "version" "10.4.13" +autoprefixer@^10.4.13: + version "10.4.13" + resolved "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.13.tgz" + integrity sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg== dependencies: - "browserslist" "^4.21.4" - "caniuse-lite" "^1.0.30001426" - "fraction.js" "^4.2.0" - "normalize-range" "^0.1.2" - "picocolors" "^1.0.0" - "postcss-value-parser" "^4.2.0" + browserslist "^4.21.4" + caniuse-lite "^1.0.30001426" + fraction.js "^4.2.0" + normalize-range "^0.1.2" + picocolors "^1.0.0" + postcss-value-parser "^4.2.0" -"autoprefixer@^9.6.1", "autoprefixer@^9.8.6": - "integrity" "sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA==" - "resolved" "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.8.tgz" - "version" "9.8.8" +autoprefixer@^9.6.1, autoprefixer@^9.8.6: + version "9.8.8" + resolved "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.8.tgz" + integrity sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA== dependencies: - "browserslist" "^4.12.0" - "caniuse-lite" "^1.0.30001109" - "normalize-range" "^0.1.2" - "num2fraction" "^1.2.2" - "picocolors" "^0.2.1" - "postcss" "^7.0.32" - "postcss-value-parser" "^4.1.0" + browserslist "^4.12.0" + caniuse-lite "^1.0.30001109" + normalize-range "^0.1.2" + num2fraction "^1.2.2" + picocolors "^0.2.1" + postcss "^7.0.32" + postcss-value-parser "^4.1.0" -"available-typed-arrays@^1.0.5": - "integrity" "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==" - "resolved" "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz" - "version" "1.0.5" +available-typed-arrays@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz" + integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== -"await-lock@^2.2.2": - "integrity" "sha512-aDczADvlvTGajTDjcjpJMqRkOF6Qdz3YbPZm/PyW6tKPkx2hlYBzxMhEywM/tU72HrVZjgl5VCdRuMlA7pZ8Gw==" - "resolved" "https://registry.npmjs.org/await-lock/-/await-lock-2.2.2.tgz" - "version" "2.2.2" +await-lock@^2.2.2: + version "2.2.2" + resolved "https://registry.npmjs.org/await-lock/-/await-lock-2.2.2.tgz" + integrity sha512-aDczADvlvTGajTDjcjpJMqRkOF6Qdz3YbPZm/PyW6tKPkx2hlYBzxMhEywM/tU72HrVZjgl5VCdRuMlA7pZ8Gw== -"aws-sign2@~0.7.0": - "integrity" "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==" - "resolved" "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz" - "version" "0.7.0" +aws-sign2@~0.7.0: + version "0.7.0" + resolved "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz" + integrity sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA== -"aws4@^1.8.0": - "integrity" "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" - "resolved" "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz" - "version" "1.11.0" +aws4@^1.8.0: + version "1.11.0" + resolved "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz" + integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== -"axe-core@^4.0.2", "axe-core@^4.4.3": - "integrity" "sha512-u2MVsXfew5HBvjsczCv+xlwdNnB1oQR9HlAcsejZttNjKKSkeDNVwB1vMThIUIFI9GoT57Vtk8iQLwqOfAkboA==" - "resolved" "https://registry.npmjs.org/axe-core/-/axe-core-4.5.2.tgz" - "version" "4.5.2" +axe-core@^4.0.2, axe-core@^4.4.3: + version "4.5.2" + resolved "https://registry.npmjs.org/axe-core/-/axe-core-4.5.2.tgz" + integrity sha512-u2MVsXfew5HBvjsczCv+xlwdNnB1oQR9HlAcsejZttNjKKSkeDNVwB1vMThIUIFI9GoT57Vtk8iQLwqOfAkboA== -"axobject-query@^2.2.0": - "integrity" "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==" - "resolved" "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz" - "version" "2.2.0" +axobject-query@^2.2.0: + version "2.2.0" + resolved "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz" + integrity sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA== -"babel-cli@^6.26.0": - "integrity" "sha512-wau+BDtQfuSBGQ9PzzFL3REvR9Sxnd4LKwtcHAiPjhugA7K/80vpHXafj+O5bAqJOuSefjOx5ZJnNSR2J1Qw6Q==" - "resolved" "https://registry.npmjs.org/babel-cli/-/babel-cli-6.26.0.tgz" - "version" "6.26.0" +babel-cli@^6.26.0: + version "6.26.0" + resolved "https://registry.npmjs.org/babel-cli/-/babel-cli-6.26.0.tgz" + integrity sha512-wau+BDtQfuSBGQ9PzzFL3REvR9Sxnd4LKwtcHAiPjhugA7K/80vpHXafj+O5bAqJOuSefjOx5ZJnNSR2J1Qw6Q== dependencies: - "babel-core" "^6.26.0" - "babel-polyfill" "^6.26.0" - "babel-register" "^6.26.0" - "babel-runtime" "^6.26.0" - "commander" "^2.11.0" - "convert-source-map" "^1.5.0" - "fs-readdir-recursive" "^1.0.0" - "glob" "^7.1.2" - "lodash" "^4.17.4" - "output-file-sync" "^1.1.2" - "path-is-absolute" "^1.0.1" - "slash" "^1.0.0" - "source-map" "^0.5.6" - "v8flags" "^2.1.1" + babel-core "^6.26.0" + babel-polyfill "^6.26.0" + babel-register "^6.26.0" + babel-runtime "^6.26.0" + commander "^2.11.0" + convert-source-map "^1.5.0" + fs-readdir-recursive "^1.0.0" + glob "^7.1.2" + lodash "^4.17.4" + output-file-sync "^1.1.2" + path-is-absolute "^1.0.1" + slash "^1.0.0" + source-map "^0.5.6" + v8flags "^2.1.1" optionalDependencies: - "chokidar" "^1.6.1" + chokidar "^1.6.1" -"babel-code-frame@^6.26.0": - "integrity" "sha512-XqYMR2dfdGMW+hd0IUZ2PwK+fGeFkOxZJ0wY+JaQAHzt1Zx8LcvpiZD2NiGkEG8qx0CfkAOr5xt76d1e8vG90g==" - "resolved" "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz" - "version" "6.26.0" +babel-code-frame@^6.26.0: + version "6.26.0" + resolved "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz" + integrity sha512-XqYMR2dfdGMW+hd0IUZ2PwK+fGeFkOxZJ0wY+JaQAHzt1Zx8LcvpiZD2NiGkEG8qx0CfkAOr5xt76d1e8vG90g== dependencies: - "chalk" "^1.1.3" - "esutils" "^2.0.2" - "js-tokens" "^3.0.2" + chalk "^1.1.3" + esutils "^2.0.2" + js-tokens "^3.0.2" -"babel-core@^6.26.0", "babel-core@^6.26.3": - "integrity" "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==" - "resolved" "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz" - "version" "6.26.3" +babel-core@^6.26.0, babel-core@^6.26.3: + version "6.26.3" + resolved "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz" + integrity sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA== dependencies: - "babel-code-frame" "^6.26.0" - "babel-generator" "^6.26.0" - "babel-helpers" "^6.24.1" - "babel-messages" "^6.23.0" - "babel-register" "^6.26.0" - "babel-runtime" "^6.26.0" - "babel-template" "^6.26.0" - "babel-traverse" "^6.26.0" - "babel-types" "^6.26.0" - "babylon" "^6.18.0" - "convert-source-map" "^1.5.1" - "debug" "^2.6.9" - "json5" "^0.5.1" - "lodash" "^4.17.4" - "minimatch" "^3.0.4" - "path-is-absolute" "^1.0.1" - "private" "^0.1.8" - "slash" "^1.0.0" - "source-map" "^0.5.7" + babel-code-frame "^6.26.0" + babel-generator "^6.26.0" + babel-helpers "^6.24.1" + babel-messages "^6.23.0" + babel-register "^6.26.0" + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + convert-source-map "^1.5.1" + debug "^2.6.9" + json5 "^0.5.1" + lodash "^4.17.4" + minimatch "^3.0.4" + path-is-absolute "^1.0.1" + private "^0.1.8" + slash "^1.0.0" + source-map "^0.5.7" -"babel-core@^7.0.0-bridge.0": - "integrity" "sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==" - "resolved" "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz" - "version" "7.0.0-bridge.0" +babel-core@^7.0.0-bridge.0: + version "7.0.0-bridge.0" + resolved "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz" + integrity sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg== -"babel-extract-comments@^1.0.0": - "integrity" "sha512-qWWzi4TlddohA91bFwgt6zO/J0X+io7Qp184Fw0m2JYRSTZnJbFR8+07KmzudHCZgOiKRCrjhylwv9Xd8gfhVQ==" - "resolved" "https://registry.npmjs.org/babel-extract-comments/-/babel-extract-comments-1.0.0.tgz" - "version" "1.0.0" +babel-extract-comments@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/babel-extract-comments/-/babel-extract-comments-1.0.0.tgz" + integrity sha512-qWWzi4TlddohA91bFwgt6zO/J0X+io7Qp184Fw0m2JYRSTZnJbFR8+07KmzudHCZgOiKRCrjhylwv9Xd8gfhVQ== dependencies: - "babylon" "^6.18.0" + babylon "^6.18.0" -"babel-generator@^6.26.0": - "integrity" "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==" - "resolved" "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz" - "version" "6.26.1" +babel-generator@^6.26.0: + version "6.26.1" + resolved "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz" + integrity sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA== dependencies: - "babel-messages" "^6.23.0" - "babel-runtime" "^6.26.0" - "babel-types" "^6.26.0" - "detect-indent" "^4.0.0" - "jsesc" "^1.3.0" - "lodash" "^4.17.4" - "source-map" "^0.5.7" - "trim-right" "^1.0.1" + babel-messages "^6.23.0" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + detect-indent "^4.0.0" + jsesc "^1.3.0" + lodash "^4.17.4" + source-map "^0.5.7" + trim-right "^1.0.1" -"babel-helper-bindify-decorators@^6.24.1": - "integrity" "sha512-TYX2QQATKA6Wssp6j7jqlw4QLmABDN1olRdEHndYvBXdaXM5dcx6j5rN0+nd+aVL+Th40fAEYvvw/Xxd/LETuQ==" - "resolved" "https://registry.npmjs.org/babel-helper-bindify-decorators/-/babel-helper-bindify-decorators-6.24.1.tgz" - "version" "6.24.1" +babel-helper-bindify-decorators@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-helper-bindify-decorators/-/babel-helper-bindify-decorators-6.24.1.tgz" + integrity sha512-TYX2QQATKA6Wssp6j7jqlw4QLmABDN1olRdEHndYvBXdaXM5dcx6j5rN0+nd+aVL+Th40fAEYvvw/Xxd/LETuQ== dependencies: - "babel-runtime" "^6.22.0" - "babel-traverse" "^6.24.1" - "babel-types" "^6.24.1" + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" -"babel-helper-builder-binary-assignment-operator-visitor@^6.24.1": - "integrity" "sha512-gCtfYORSG1fUMX4kKraymq607FWgMWg+j42IFPc18kFQEsmtaibP4UrqsXt8FlEJle25HUd4tsoDR7H2wDhe9Q==" - "resolved" "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz" - "version" "6.24.1" +babel-helper-builder-binary-assignment-operator-visitor@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz" + integrity sha512-gCtfYORSG1fUMX4kKraymq607FWgMWg+j42IFPc18kFQEsmtaibP4UrqsXt8FlEJle25HUd4tsoDR7H2wDhe9Q== dependencies: - "babel-helper-explode-assignable-expression" "^6.24.1" - "babel-runtime" "^6.22.0" - "babel-types" "^6.24.1" + babel-helper-explode-assignable-expression "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" -"babel-helper-builder-react-jsx@^6.24.1": - "integrity" "sha512-02I9jDjnVEuGy2BR3LRm9nPRb/+Ja0pvZVLr1eI5TYAA/dB0Xoc+WBo50+aDfhGDLhlBY1+QURjn9uvcFd8gzg==" - "resolved" "https://registry.npmjs.org/babel-helper-builder-react-jsx/-/babel-helper-builder-react-jsx-6.26.0.tgz" - "version" "6.26.0" +babel-helper-builder-react-jsx@^6.24.1: + version "6.26.0" + resolved "https://registry.npmjs.org/babel-helper-builder-react-jsx/-/babel-helper-builder-react-jsx-6.26.0.tgz" + integrity sha512-02I9jDjnVEuGy2BR3LRm9nPRb/+Ja0pvZVLr1eI5TYAA/dB0Xoc+WBo50+aDfhGDLhlBY1+QURjn9uvcFd8gzg== dependencies: - "babel-runtime" "^6.26.0" - "babel-types" "^6.26.0" - "esutils" "^2.0.2" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + esutils "^2.0.2" -"babel-helper-call-delegate@^6.24.1": - "integrity" "sha512-RL8n2NiEj+kKztlrVJM9JT1cXzzAdvWFh76xh/H1I4nKwunzE4INBXn8ieCZ+wh4zWszZk7NBS1s/8HR5jDkzQ==" - "resolved" "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz" - "version" "6.24.1" +babel-helper-call-delegate@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz" + integrity sha512-RL8n2NiEj+kKztlrVJM9JT1cXzzAdvWFh76xh/H1I4nKwunzE4INBXn8ieCZ+wh4zWszZk7NBS1s/8HR5jDkzQ== dependencies: - "babel-helper-hoist-variables" "^6.24.1" - "babel-runtime" "^6.22.0" - "babel-traverse" "^6.24.1" - "babel-types" "^6.24.1" + babel-helper-hoist-variables "^6.24.1" + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" -"babel-helper-define-map@^6.24.1": - "integrity" "sha512-bHkmjcC9lM1kmZcVpA5t2om2nzT/xiZpo6TJq7UlZ3wqKfzia4veeXbIhKvJXAMzhhEBd3cR1IElL5AenWEUpA==" - "resolved" "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz" - "version" "6.26.0" +babel-helper-define-map@^6.24.1: + version "6.26.0" + resolved "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz" + integrity sha512-bHkmjcC9lM1kmZcVpA5t2om2nzT/xiZpo6TJq7UlZ3wqKfzia4veeXbIhKvJXAMzhhEBd3cR1IElL5AenWEUpA== dependencies: - "babel-helper-function-name" "^6.24.1" - "babel-runtime" "^6.26.0" - "babel-types" "^6.26.0" - "lodash" "^4.17.4" + babel-helper-function-name "^6.24.1" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + lodash "^4.17.4" -"babel-helper-explode-assignable-expression@^6.24.1": - "integrity" "sha512-qe5csbhbvq6ccry9G7tkXbzNtcDiH4r51rrPUbwwoTzZ18AqxWYRZT6AOmxrpxKnQBW0pYlBI/8vh73Z//78nQ==" - "resolved" "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz" - "version" "6.24.1" +babel-helper-explode-assignable-expression@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz" + integrity sha512-qe5csbhbvq6ccry9G7tkXbzNtcDiH4r51rrPUbwwoTzZ18AqxWYRZT6AOmxrpxKnQBW0pYlBI/8vh73Z//78nQ== dependencies: - "babel-runtime" "^6.22.0" - "babel-traverse" "^6.24.1" - "babel-types" "^6.24.1" + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" -"babel-helper-explode-class@^6.24.1": - "integrity" "sha512-SFbWewr0/0U4AiRzsHqwsbOQeLXVa9T1ELdqEa2efcQB5KopTnunAqoj07TuHlN2lfTQNPGO/rJR4FMln5fVcA==" - "resolved" "https://registry.npmjs.org/babel-helper-explode-class/-/babel-helper-explode-class-6.24.1.tgz" - "version" "6.24.1" +babel-helper-explode-class@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-helper-explode-class/-/babel-helper-explode-class-6.24.1.tgz" + integrity sha512-SFbWewr0/0U4AiRzsHqwsbOQeLXVa9T1ELdqEa2efcQB5KopTnunAqoj07TuHlN2lfTQNPGO/rJR4FMln5fVcA== dependencies: - "babel-helper-bindify-decorators" "^6.24.1" - "babel-runtime" "^6.22.0" - "babel-traverse" "^6.24.1" - "babel-types" "^6.24.1" + babel-helper-bindify-decorators "^6.24.1" + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" -"babel-helper-function-name@^6.24.1": - "integrity" "sha512-Oo6+e2iX+o9eVvJ9Y5eKL5iryeRdsIkwRYheCuhYdVHsdEQysbc2z2QkqCLIYnNxkT5Ss3ggrHdXiDI7Dhrn4Q==" - "resolved" "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz" - "version" "6.24.1" +babel-helper-function-name@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz" + integrity sha512-Oo6+e2iX+o9eVvJ9Y5eKL5iryeRdsIkwRYheCuhYdVHsdEQysbc2z2QkqCLIYnNxkT5Ss3ggrHdXiDI7Dhrn4Q== dependencies: - "babel-helper-get-function-arity" "^6.24.1" - "babel-runtime" "^6.22.0" - "babel-template" "^6.24.1" - "babel-traverse" "^6.24.1" - "babel-types" "^6.24.1" + babel-helper-get-function-arity "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" -"babel-helper-get-function-arity@^6.24.1": - "integrity" "sha512-WfgKFX6swFB1jS2vo+DwivRN4NB8XUdM3ij0Y1gnC21y1tdBoe6xjVnd7NSI6alv+gZXCtJqvrTeMW3fR/c0ng==" - "resolved" "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz" - "version" "6.24.1" +babel-helper-get-function-arity@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz" + integrity sha512-WfgKFX6swFB1jS2vo+DwivRN4NB8XUdM3ij0Y1gnC21y1tdBoe6xjVnd7NSI6alv+gZXCtJqvrTeMW3fR/c0ng== dependencies: - "babel-runtime" "^6.22.0" - "babel-types" "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" -"babel-helper-hoist-variables@^6.24.1": - "integrity" "sha512-zAYl3tqerLItvG5cKYw7f1SpvIxS9zi7ohyGHaI9cgDUjAT6YcY9jIEH5CstetP5wHIVSceXwNS7Z5BpJg+rOw==" - "resolved" "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz" - "version" "6.24.1" +babel-helper-hoist-variables@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz" + integrity sha512-zAYl3tqerLItvG5cKYw7f1SpvIxS9zi7ohyGHaI9cgDUjAT6YcY9jIEH5CstetP5wHIVSceXwNS7Z5BpJg+rOw== dependencies: - "babel-runtime" "^6.22.0" - "babel-types" "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" -"babel-helper-optimise-call-expression@^6.24.1": - "integrity" "sha512-Op9IhEaxhbRT8MDXx2iNuMgciu2V8lDvYCNQbDGjdBNCjaMvyLf4wl4A3b8IgndCyQF8TwfgsQ8T3VD8aX1/pA==" - "resolved" "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz" - "version" "6.24.1" +babel-helper-optimise-call-expression@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz" + integrity sha512-Op9IhEaxhbRT8MDXx2iNuMgciu2V8lDvYCNQbDGjdBNCjaMvyLf4wl4A3b8IgndCyQF8TwfgsQ8T3VD8aX1/pA== dependencies: - "babel-runtime" "^6.22.0" - "babel-types" "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" -"babel-helper-regex@^6.24.1": - "integrity" "sha512-VlPiWmqmGJp0x0oK27Out1D+71nVVCTSdlbhIVoaBAj2lUgrNjBCRR9+llO4lTSb2O4r7PJg+RobRkhBrf6ofg==" - "resolved" "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz" - "version" "6.26.0" +babel-helper-regex@^6.24.1: + version "6.26.0" + resolved "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz" + integrity sha512-VlPiWmqmGJp0x0oK27Out1D+71nVVCTSdlbhIVoaBAj2lUgrNjBCRR9+llO4lTSb2O4r7PJg+RobRkhBrf6ofg== dependencies: - "babel-runtime" "^6.26.0" - "babel-types" "^6.26.0" - "lodash" "^4.17.4" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + lodash "^4.17.4" -"babel-helper-remap-async-to-generator@^6.24.1": - "integrity" "sha512-RYqaPD0mQyQIFRu7Ho5wE2yvA/5jxqCIj/Lv4BXNq23mHYu/vxikOy2JueLiBxQknwapwrJeNCesvY0ZcfnlHg==" - "resolved" "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz" - "version" "6.24.1" +babel-helper-remap-async-to-generator@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz" + integrity sha512-RYqaPD0mQyQIFRu7Ho5wE2yvA/5jxqCIj/Lv4BXNq23mHYu/vxikOy2JueLiBxQknwapwrJeNCesvY0ZcfnlHg== dependencies: - "babel-helper-function-name" "^6.24.1" - "babel-runtime" "^6.22.0" - "babel-template" "^6.24.1" - "babel-traverse" "^6.24.1" - "babel-types" "^6.24.1" + babel-helper-function-name "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" -"babel-helper-replace-supers@^6.24.1": - "integrity" "sha512-sLI+u7sXJh6+ToqDr57Bv973kCepItDhMou0xCP2YPVmR1jkHSCY+p1no8xErbV1Siz5QE8qKT1WIwybSWlqjw==" - "resolved" "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz" - "version" "6.24.1" +babel-helper-replace-supers@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz" + integrity sha512-sLI+u7sXJh6+ToqDr57Bv973kCepItDhMou0xCP2YPVmR1jkHSCY+p1no8xErbV1Siz5QE8qKT1WIwybSWlqjw== dependencies: - "babel-helper-optimise-call-expression" "^6.24.1" - "babel-messages" "^6.23.0" - "babel-runtime" "^6.22.0" - "babel-template" "^6.24.1" - "babel-traverse" "^6.24.1" - "babel-types" "^6.24.1" + babel-helper-optimise-call-expression "^6.24.1" + babel-messages "^6.23.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" -"babel-helpers@^6.24.1": - "integrity" "sha512-n7pFrqQm44TCYvrCDb0MqabAF+JUBq+ijBvNMUxpkLjJaAu32faIexewMumrH5KLLJ1HDyT0PTEqRyAe/GwwuQ==" - "resolved" "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz" - "version" "6.24.1" +babel-helpers@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz" + integrity sha512-n7pFrqQm44TCYvrCDb0MqabAF+JUBq+ijBvNMUxpkLjJaAu32faIexewMumrH5KLLJ1HDyT0PTEqRyAe/GwwuQ== dependencies: - "babel-runtime" "^6.22.0" - "babel-template" "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" -"babel-jest@^27.4.2", "babel-jest@^27.5.1": - "integrity" "sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==" - "resolved" "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz" - "version" "27.5.1" +babel-jest@^27.4.2, babel-jest@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz" + integrity sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg== dependencies: "@jest/transform" "^27.5.1" "@jest/types" "^27.5.1" "@types/babel__core" "^7.1.14" - "babel-plugin-istanbul" "^6.1.1" - "babel-preset-jest" "^27.5.1" - "chalk" "^4.0.0" - "graceful-fs" "^4.2.9" - "slash" "^3.0.0" + babel-plugin-istanbul "^6.1.1" + babel-preset-jest "^27.5.1" + chalk "^4.0.0" + graceful-fs "^4.2.9" + slash "^3.0.0" -"babel-loader@^8.0.0", "babel-loader@^8.2.3": - "integrity" "sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q==" - "resolved" "https://registry.npmjs.org/babel-loader/-/babel-loader-8.3.0.tgz" - "version" "8.3.0" +babel-loader@^8.0.0, babel-loader@^8.2.3: + version "8.3.0" + resolved "https://registry.npmjs.org/babel-loader/-/babel-loader-8.3.0.tgz" + integrity sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q== dependencies: - "find-cache-dir" "^3.3.1" - "loader-utils" "^2.0.0" - "make-dir" "^3.1.0" - "schema-utils" "^2.6.5" + find-cache-dir "^3.3.1" + loader-utils "^2.0.0" + make-dir "^3.1.0" + schema-utils "^2.6.5" -"babel-messages@^6.23.0": - "integrity" "sha512-Bl3ZiA+LjqaMtNYopA9TYE9HP1tQ+E5dLxE0XrAzcIJeK2UqF0/EaqXwBn9esd4UmTfEab+P+UYQ1GnioFIb/w==" - "resolved" "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz" - "version" "6.23.0" +babel-messages@^6.23.0: + version "6.23.0" + resolved "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz" + integrity sha512-Bl3ZiA+LjqaMtNYopA9TYE9HP1tQ+E5dLxE0XrAzcIJeK2UqF0/EaqXwBn9esd4UmTfEab+P+UYQ1GnioFIb/w== dependencies: - "babel-runtime" "^6.22.0" + babel-runtime "^6.22.0" -"babel-plugin-add-react-displayname@^0.0.5": - "integrity" "sha512-LY3+Y0XVDYcShHHorshrDbt4KFWL4bSeniCtl4SYZbask+Syngk1uMPCeN9+nSiZo6zX5s0RTq/J9Pnaaf/KHw==" - "resolved" "https://registry.npmjs.org/babel-plugin-add-react-displayname/-/babel-plugin-add-react-displayname-0.0.5.tgz" - "version" "0.0.5" +babel-plugin-add-react-displayname@^0.0.5: + version "0.0.5" + resolved "https://registry.npmjs.org/babel-plugin-add-react-displayname/-/babel-plugin-add-react-displayname-0.0.5.tgz" + integrity sha512-LY3+Y0XVDYcShHHorshrDbt4KFWL4bSeniCtl4SYZbask+Syngk1uMPCeN9+nSiZo6zX5s0RTq/J9Pnaaf/KHw== -"babel-plugin-apply-mdx-type-prop@1.6.22": - "integrity" "sha512-VefL+8o+F/DfK24lPZMtJctrCVOfgbqLAGZSkxwhazQv4VxPg3Za/i40fu22KR2m8eEda+IfSOlPLUSIiLcnCQ==" - "resolved" "https://registry.npmjs.org/babel-plugin-apply-mdx-type-prop/-/babel-plugin-apply-mdx-type-prop-1.6.22.tgz" - "version" "1.6.22" +babel-plugin-apply-mdx-type-prop@1.6.22: + version "1.6.22" + resolved "https://registry.npmjs.org/babel-plugin-apply-mdx-type-prop/-/babel-plugin-apply-mdx-type-prop-1.6.22.tgz" + integrity sha512-VefL+8o+F/DfK24lPZMtJctrCVOfgbqLAGZSkxwhazQv4VxPg3Za/i40fu22KR2m8eEda+IfSOlPLUSIiLcnCQ== dependencies: "@babel/helper-plugin-utils" "7.10.4" "@mdx-js/util" "1.6.22" -"babel-plugin-check-es2015-constants@^6.22.0": - "integrity" "sha512-B1M5KBP29248dViEo1owyY32lk1ZSH2DaNNrXLGt8lyjjHm7pBqAdQ7VKUPR6EEDO323+OvT3MQXbCin8ooWdA==" - "resolved" "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz" - "version" "6.22.0" +babel-plugin-check-es2015-constants@^6.22.0: + version "6.22.0" + resolved "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz" + integrity sha512-B1M5KBP29248dViEo1owyY32lk1ZSH2DaNNrXLGt8lyjjHm7pBqAdQ7VKUPR6EEDO323+OvT3MQXbCin8ooWdA== dependencies: - "babel-runtime" "^6.22.0" + babel-runtime "^6.22.0" -"babel-plugin-extract-import-names@1.6.22": - "integrity" "sha512-yJ9BsJaISua7d8zNT7oRG1ZLBJCIdZ4PZqmH8qa9N5AK01ifk3fnkc98AXhtzE7UkfCsEumvoQWgoYLhOnJ7jQ==" - "resolved" "https://registry.npmjs.org/babel-plugin-extract-import-names/-/babel-plugin-extract-import-names-1.6.22.tgz" - "version" "1.6.22" +babel-plugin-extract-import-names@1.6.22: + version "1.6.22" + resolved "https://registry.npmjs.org/babel-plugin-extract-import-names/-/babel-plugin-extract-import-names-1.6.22.tgz" + integrity sha512-yJ9BsJaISua7d8zNT7oRG1ZLBJCIdZ4PZqmH8qa9N5AK01ifk3fnkc98AXhtzE7UkfCsEumvoQWgoYLhOnJ7jQ== dependencies: "@babel/helper-plugin-utils" "7.10.4" -"babel-plugin-import@^1.13.0": - "integrity" "sha512-IkqnoV+ov1hdJVofly9pXRJmeDm9EtROfrc5i6eII0Hix2xMs5FEm8FG3ExMvazbnZBbgHIt6qdO8And6lCloQ==" - "resolved" "https://registry.npmjs.org/babel-plugin-import/-/babel-plugin-import-1.13.5.tgz" - "version" "1.13.5" +babel-plugin-import@^1.13.0: + version "1.13.5" + resolved "https://registry.npmjs.org/babel-plugin-import/-/babel-plugin-import-1.13.5.tgz" + integrity sha512-IkqnoV+ov1hdJVofly9pXRJmeDm9EtROfrc5i6eII0Hix2xMs5FEm8FG3ExMvazbnZBbgHIt6qdO8And6lCloQ== dependencies: "@babel/helper-module-imports" "^7.0.0" -"babel-plugin-istanbul@^5.1.0": - "integrity" "sha512-5LphC0USA8t4i1zCtjbbNb6jJj/9+X6P37Qfirc/70EQ34xKlMW+a1RHGwxGI+SwWpNwZ27HqvzAobeqaXwiZw==" - "resolved" "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz" - "version" "5.2.0" +babel-plugin-istanbul@^5.1.0: + version "5.2.0" + resolved "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz" + integrity sha512-5LphC0USA8t4i1zCtjbbNb6jJj/9+X6P37Qfirc/70EQ34xKlMW+a1RHGwxGI+SwWpNwZ27HqvzAobeqaXwiZw== dependencies: "@babel/helper-plugin-utils" "^7.0.0" - "find-up" "^3.0.0" - "istanbul-lib-instrument" "^3.3.0" - "test-exclude" "^5.2.3" + find-up "^3.0.0" + istanbul-lib-instrument "^3.3.0" + test-exclude "^5.2.3" -"babel-plugin-istanbul@^6.0.0": - "integrity" "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==" - "resolved" "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz" - "version" "6.1.1" +babel-plugin-istanbul@^6.0.0, babel-plugin-istanbul@^6.1.1: + version "6.1.1" + resolved "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz" + integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@istanbuljs/load-nyc-config" "^1.0.0" "@istanbuljs/schema" "^0.1.2" - "istanbul-lib-instrument" "^5.0.4" - "test-exclude" "^6.0.0" + istanbul-lib-instrument "^5.0.4" + test-exclude "^6.0.0" -"babel-plugin-istanbul@^6.1.1": - "integrity" "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==" - "resolved" "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz" - "version" "6.1.1" - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@istanbuljs/load-nyc-config" "^1.0.0" - "@istanbuljs/schema" "^0.1.2" - "istanbul-lib-instrument" "^5.0.4" - "test-exclude" "^6.0.0" - -"babel-plugin-jest-hoist@^27.5.1": - "integrity" "sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==" - "resolved" "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz" - "version" "27.5.1" +babel-plugin-jest-hoist@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz" + integrity sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ== dependencies: "@babel/template" "^7.3.3" "@babel/types" "^7.3.3" "@types/babel__core" "^7.0.0" "@types/babel__traverse" "^7.0.6" -"babel-plugin-macros@^3.0.1": - "integrity" "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==" - "resolved" "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz" - "version" "3.1.0" - dependencies: - "@babel/runtime" "^7.12.5" - "cosmiconfig" "^7.0.0" - "resolve" "^1.19.0" - -"babel-plugin-macros@^3.1.0": - "integrity" "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==" - "resolved" "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz" - "version" "3.1.0" - dependencies: - "@babel/runtime" "^7.12.5" - "cosmiconfig" "^7.0.0" - "resolve" "^1.19.0" - -"babel-plugin-macros@2.8.0": - "integrity" "sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==" - "resolved" "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz" - "version" "2.8.0" +babel-plugin-macros@2.8.0: + version "2.8.0" + resolved "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz" + integrity sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg== dependencies: "@babel/runtime" "^7.7.2" - "cosmiconfig" "^6.0.0" - "resolve" "^1.12.0" + cosmiconfig "^6.0.0" + resolve "^1.12.0" -"babel-plugin-named-asset-import@^0.3.6", "babel-plugin-named-asset-import@^0.3.8": - "integrity" "sha512-WXiAc++qo7XcJ1ZnTYGtLxmBCVbddAml3CEXgWaBzNzLNoxtQ8AiGEFDMOhot9XjTCQbvP5E77Fj9Gk924f00Q==" - "resolved" "https://registry.npmjs.org/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.8.tgz" - "version" "0.3.8" +babel-plugin-macros@^3.0.1, babel-plugin-macros@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz" + integrity sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg== + dependencies: + "@babel/runtime" "^7.12.5" + cosmiconfig "^7.0.0" + resolve "^1.19.0" -"babel-plugin-named-exports-order@^0.0.2": - "integrity" "sha512-OgOYHOLoRK+/mvXU9imKHlG6GkPLYrUCvFXG/CM93R/aNNO8pOOF4aS+S8CCHMDQoNSeiOYEZb/G6RwL95Jktw==" - "resolved" "https://registry.npmjs.org/babel-plugin-named-exports-order/-/babel-plugin-named-exports-order-0.0.2.tgz" - "version" "0.0.2" +babel-plugin-named-asset-import@^0.3.6, babel-plugin-named-asset-import@^0.3.8: + version "0.3.8" + resolved "https://registry.npmjs.org/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.8.tgz" + integrity sha512-WXiAc++qo7XcJ1ZnTYGtLxmBCVbddAml3CEXgWaBzNzLNoxtQ8AiGEFDMOhot9XjTCQbvP5E77Fj9Gk924f00Q== -"babel-plugin-polyfill-corejs2@^0.3.3": - "integrity" "sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==" - "resolved" "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz" - "version" "0.3.3" +babel-plugin-named-exports-order@^0.0.2: + version "0.0.2" + resolved "https://registry.npmjs.org/babel-plugin-named-exports-order/-/babel-plugin-named-exports-order-0.0.2.tgz" + integrity sha512-OgOYHOLoRK+/mvXU9imKHlG6GkPLYrUCvFXG/CM93R/aNNO8pOOF4aS+S8CCHMDQoNSeiOYEZb/G6RwL95Jktw== + +babel-plugin-polyfill-corejs2@^0.3.3: + version "0.3.3" + resolved "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz" + integrity sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q== dependencies: "@babel/compat-data" "^7.17.7" "@babel/helper-define-polyfill-provider" "^0.3.3" - "semver" "^6.1.1" + semver "^6.1.1" -"babel-plugin-polyfill-corejs3@^0.1.0": - "integrity" "sha512-u+gbS9bbPhZWEeyy1oR/YaaSpod/KDT07arZHb80aTpl8H5ZBq+uN1nN9/xtX7jQyfLdPfoqI4Rue/MQSWJquw==" - "resolved" "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.1.7.tgz" - "version" "0.1.7" +babel-plugin-polyfill-corejs3@^0.1.0: + version "0.1.7" + resolved "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.1.7.tgz" + integrity sha512-u+gbS9bbPhZWEeyy1oR/YaaSpod/KDT07arZHb80aTpl8H5ZBq+uN1nN9/xtX7jQyfLdPfoqI4Rue/MQSWJquw== dependencies: "@babel/helper-define-polyfill-provider" "^0.1.5" - "core-js-compat" "^3.8.1" + core-js-compat "^3.8.1" -"babel-plugin-polyfill-corejs3@^0.6.0": - "integrity" "sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==" - "resolved" "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz" - "version" "0.6.0" +babel-plugin-polyfill-corejs3@^0.6.0: + version "0.6.0" + resolved "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz" + integrity sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA== dependencies: "@babel/helper-define-polyfill-provider" "^0.3.3" - "core-js-compat" "^3.25.1" + core-js-compat "^3.25.1" -"babel-plugin-polyfill-regenerator@^0.4.1": - "integrity" "sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==" - "resolved" "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz" - "version" "0.4.1" +babel-plugin-polyfill-regenerator@^0.4.1: + version "0.4.1" + resolved "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz" + integrity sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw== dependencies: "@babel/helper-define-polyfill-provider" "^0.3.3" -"babel-plugin-react-docgen@^4.1.0", "babel-plugin-react-docgen@^4.2.1": - "integrity" "sha512-UQ0NmGHj/HAqi5Bew8WvNfCk8wSsmdgNd8ZdMjBCICtyCJCq9LiqgqvjCYe570/Wg7AQArSq1VQ60Dd/CHN7mQ==" - "resolved" "https://registry.npmjs.org/babel-plugin-react-docgen/-/babel-plugin-react-docgen-4.2.1.tgz" - "version" "4.2.1" +babel-plugin-react-docgen@^4.1.0, babel-plugin-react-docgen@^4.2.1: + version "4.2.1" + resolved "https://registry.npmjs.org/babel-plugin-react-docgen/-/babel-plugin-react-docgen-4.2.1.tgz" + integrity sha512-UQ0NmGHj/HAqi5Bew8WvNfCk8wSsmdgNd8ZdMjBCICtyCJCq9LiqgqvjCYe570/Wg7AQArSq1VQ60Dd/CHN7mQ== dependencies: - "ast-types" "^0.14.2" - "lodash" "^4.17.15" - "react-docgen" "^5.0.0" + ast-types "^0.14.2" + lodash "^4.17.15" + react-docgen "^5.0.0" -"babel-plugin-syntax-async-functions@^6.8.0": - "integrity" "sha512-4Zp4unmHgw30A1eWI5EpACji2qMocisdXhAftfhXoSV9j0Tvj6nRFE3tOmRY912E0FMRm/L5xWE7MGVT2FoLnw==" - "resolved" "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz" - "version" "6.13.0" +babel-plugin-syntax-async-functions@^6.8.0: + version "6.13.0" + resolved "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz" + integrity sha512-4Zp4unmHgw30A1eWI5EpACji2qMocisdXhAftfhXoSV9j0Tvj6nRFE3tOmRY912E0FMRm/L5xWE7MGVT2FoLnw== -"babel-plugin-syntax-async-generators@^6.5.0": - "integrity" "sha512-EbciFN5Jb9iqU9bqaLmmFLx2G8pAUsvpWJ6OzOWBNrSY9qTohXj+7YfZx6Ug1Qqh7tCb1EA7Jvn9bMC1HBiucg==" - "resolved" "https://registry.npmjs.org/babel-plugin-syntax-async-generators/-/babel-plugin-syntax-async-generators-6.13.0.tgz" - "version" "6.13.0" +babel-plugin-syntax-async-generators@^6.5.0: + version "6.13.0" + resolved "https://registry.npmjs.org/babel-plugin-syntax-async-generators/-/babel-plugin-syntax-async-generators-6.13.0.tgz" + integrity sha512-EbciFN5Jb9iqU9bqaLmmFLx2G8pAUsvpWJ6OzOWBNrSY9qTohXj+7YfZx6Ug1Qqh7tCb1EA7Jvn9bMC1HBiucg== -"babel-plugin-syntax-class-constructor-call@^6.18.0": - "integrity" "sha512-EEuBcXz/wZ81Jaac0LnMHtD4Mfz9XWn2oH2Xj+CHwz2SZWUqqdtR2BgWPSdTGMmxN/5KLSh4PImt9+9ZedDarA==" - "resolved" "https://registry.npmjs.org/babel-plugin-syntax-class-constructor-call/-/babel-plugin-syntax-class-constructor-call-6.18.0.tgz" - "version" "6.18.0" +babel-plugin-syntax-class-constructor-call@^6.18.0: + version "6.18.0" + resolved "https://registry.npmjs.org/babel-plugin-syntax-class-constructor-call/-/babel-plugin-syntax-class-constructor-call-6.18.0.tgz" + integrity sha512-EEuBcXz/wZ81Jaac0LnMHtD4Mfz9XWn2oH2Xj+CHwz2SZWUqqdtR2BgWPSdTGMmxN/5KLSh4PImt9+9ZedDarA== -"babel-plugin-syntax-class-properties@^6.8.0": - "integrity" "sha512-chI3Rt9T1AbrQD1s+vxw3KcwC9yHtF621/MacuItITfZX344uhQoANjpoSJZleAmW2tjlolqB/f+h7jIqXa7pA==" - "resolved" "https://registry.npmjs.org/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz" - "version" "6.13.0" +babel-plugin-syntax-class-properties@^6.8.0: + version "6.13.0" + resolved "https://registry.npmjs.org/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz" + integrity sha512-chI3Rt9T1AbrQD1s+vxw3KcwC9yHtF621/MacuItITfZX344uhQoANjpoSJZleAmW2tjlolqB/f+h7jIqXa7pA== -"babel-plugin-syntax-decorators@^6.13.0": - "integrity" "sha512-AWj19x2aDm8qFQ5O2JcD6pwJDW1YdcnO+1b81t7gxrGjz5VHiUqeYWAR4h7zueWMalRelrQDXprv2FrY1dbpbw==" - "resolved" "https://registry.npmjs.org/babel-plugin-syntax-decorators/-/babel-plugin-syntax-decorators-6.13.0.tgz" - "version" "6.13.0" +babel-plugin-syntax-decorators@^6.13.0: + version "6.13.0" + resolved "https://registry.npmjs.org/babel-plugin-syntax-decorators/-/babel-plugin-syntax-decorators-6.13.0.tgz" + integrity sha512-AWj19x2aDm8qFQ5O2JcD6pwJDW1YdcnO+1b81t7gxrGjz5VHiUqeYWAR4h7zueWMalRelrQDXprv2FrY1dbpbw== -"babel-plugin-syntax-do-expressions@^6.8.0": - "integrity" "sha512-HD/5qJB9oSXzl0caxM+aRD7ENICXqcc3Up/8toDQk7zNIDE7TzsqtxC5f4t9Rwhu2Ya8l9l4j6b3vOsy+a6qxg==" - "resolved" "https://registry.npmjs.org/babel-plugin-syntax-do-expressions/-/babel-plugin-syntax-do-expressions-6.13.0.tgz" - "version" "6.13.0" +babel-plugin-syntax-do-expressions@^6.8.0: + version "6.13.0" + resolved "https://registry.npmjs.org/babel-plugin-syntax-do-expressions/-/babel-plugin-syntax-do-expressions-6.13.0.tgz" + integrity sha512-HD/5qJB9oSXzl0caxM+aRD7ENICXqcc3Up/8toDQk7zNIDE7TzsqtxC5f4t9Rwhu2Ya8l9l4j6b3vOsy+a6qxg== -"babel-plugin-syntax-dynamic-import@^6.18.0": - "integrity" "sha512-MioUE+LfjCEz65Wf7Z/Rm4XCP5k2c+TbMd2Z2JKc7U9uwjBhAfNPE48KC4GTGKhppMeYVepwDBNO/nGY6NYHBA==" - "resolved" "https://registry.npmjs.org/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz" - "version" "6.18.0" +babel-plugin-syntax-dynamic-import@^6.18.0: + version "6.18.0" + resolved "https://registry.npmjs.org/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz" + integrity sha512-MioUE+LfjCEz65Wf7Z/Rm4XCP5k2c+TbMd2Z2JKc7U9uwjBhAfNPE48KC4GTGKhppMeYVepwDBNO/nGY6NYHBA== -"babel-plugin-syntax-exponentiation-operator@^6.8.0": - "integrity" "sha512-Z/flU+T9ta0aIEKl1tGEmN/pZiI1uXmCiGFRegKacQfEJzp7iNsKloZmyJlQr+75FCJtiFfGIK03SiCvCt9cPQ==" - "resolved" "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz" - "version" "6.13.0" +babel-plugin-syntax-exponentiation-operator@^6.8.0: + version "6.13.0" + resolved "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz" + integrity sha512-Z/flU+T9ta0aIEKl1tGEmN/pZiI1uXmCiGFRegKacQfEJzp7iNsKloZmyJlQr+75FCJtiFfGIK03SiCvCt9cPQ== -"babel-plugin-syntax-export-extensions@^6.8.0": - "integrity" "sha512-Eo0rcRaIDMld/W6mVhePiudIuLW+Cr/8eveW3mBREfZORScZgx4rh6BAPyvzdEc/JZvQ+LkC80t0VGFs6FX+lg==" - "resolved" "https://registry.npmjs.org/babel-plugin-syntax-export-extensions/-/babel-plugin-syntax-export-extensions-6.13.0.tgz" - "version" "6.13.0" +babel-plugin-syntax-export-extensions@^6.8.0: + version "6.13.0" + resolved "https://registry.npmjs.org/babel-plugin-syntax-export-extensions/-/babel-plugin-syntax-export-extensions-6.13.0.tgz" + integrity sha512-Eo0rcRaIDMld/W6mVhePiudIuLW+Cr/8eveW3mBREfZORScZgx4rh6BAPyvzdEc/JZvQ+LkC80t0VGFs6FX+lg== -"babel-plugin-syntax-flow@^6.18.0": - "integrity" "sha512-HbTDIoG1A1op7Tl/wIFQPULIBA61tsJ8Ntq2FAhLwuijrzosM/92kAfgU1Q3Kc7DH/cprJg5vDfuTY4QUL4rDA==" - "resolved" "https://registry.npmjs.org/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz" - "version" "6.18.0" +babel-plugin-syntax-flow@^6.18.0: + version "6.18.0" + resolved "https://registry.npmjs.org/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz" + integrity sha512-HbTDIoG1A1op7Tl/wIFQPULIBA61tsJ8Ntq2FAhLwuijrzosM/92kAfgU1Q3Kc7DH/cprJg5vDfuTY4QUL4rDA== -"babel-plugin-syntax-function-bind@^6.8.0": - "integrity" "sha512-m8yMoh9LIiNyeLdQs5I9G+3YXo4nqVsKQkk7YplrG4qAFbNi9hkZlow8HDHxhH9QOVFPHmy8+03NzRCdyChIKw==" - "resolved" "https://registry.npmjs.org/babel-plugin-syntax-function-bind/-/babel-plugin-syntax-function-bind-6.13.0.tgz" - "version" "6.13.0" +babel-plugin-syntax-function-bind@^6.8.0: + version "6.13.0" + resolved "https://registry.npmjs.org/babel-plugin-syntax-function-bind/-/babel-plugin-syntax-function-bind-6.13.0.tgz" + integrity sha512-m8yMoh9LIiNyeLdQs5I9G+3YXo4nqVsKQkk7YplrG4qAFbNi9hkZlow8HDHxhH9QOVFPHmy8+03NzRCdyChIKw== -"babel-plugin-syntax-jsx@^6.3.13", "babel-plugin-syntax-jsx@^6.8.0": - "integrity" "sha512-qrPaCSo9c8RHNRHIotaufGbuOBN8rtdC4QrrFFc43vyWCCz7Kl7GL1PGaXtMGQZUXrkCjNEgxDfmAuAabr/rlw==" - "resolved" "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz" - "version" "6.18.0" +babel-plugin-syntax-jsx@^6.3.13, babel-plugin-syntax-jsx@^6.8.0: + version "6.18.0" + resolved "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz" + integrity sha512-qrPaCSo9c8RHNRHIotaufGbuOBN8rtdC4QrrFFc43vyWCCz7Kl7GL1PGaXtMGQZUXrkCjNEgxDfmAuAabr/rlw== -"babel-plugin-syntax-object-rest-spread@^6.8.0": - "integrity" "sha512-C4Aq+GaAj83pRQ0EFgTvw5YO6T3Qz2KGrNRwIj9mSoNHVvdZY4KO2uA6HNtNXCw993iSZnckY1aLW8nOi8i4+w==" - "resolved" "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz" - "version" "6.13.0" +babel-plugin-syntax-object-rest-spread@^6.8.0: + version "6.13.0" + resolved "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz" + integrity sha512-C4Aq+GaAj83pRQ0EFgTvw5YO6T3Qz2KGrNRwIj9mSoNHVvdZY4KO2uA6HNtNXCw993iSZnckY1aLW8nOi8i4+w== -"babel-plugin-syntax-trailing-function-commas@^6.22.0": - "integrity" "sha512-Gx9CH3Q/3GKbhs07Bszw5fPTlU+ygrOGfAhEt7W2JICwufpC4SuO0mG0+4NykPBSYPMJhqvVlDBU17qB1D+hMQ==" - "resolved" "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz" - "version" "6.22.0" +babel-plugin-syntax-trailing-function-commas@^6.22.0: + version "6.22.0" + resolved "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz" + integrity sha512-Gx9CH3Q/3GKbhs07Bszw5fPTlU+ygrOGfAhEt7W2JICwufpC4SuO0mG0+4NykPBSYPMJhqvVlDBU17qB1D+hMQ== -"babel-plugin-transform-async-generator-functions@^6.24.1": - "integrity" "sha512-uT7eovUxtXe8Q2ufcjRuJIOL0hg6VAUJhiWJBLxH/evYAw+aqoJLcYTR8hqx13iOx/FfbCMHgBmXWZjukbkyPg==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-async-generator-functions/-/babel-plugin-transform-async-generator-functions-6.24.1.tgz" - "version" "6.24.1" +babel-plugin-transform-async-generator-functions@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-plugin-transform-async-generator-functions/-/babel-plugin-transform-async-generator-functions-6.24.1.tgz" + integrity sha512-uT7eovUxtXe8Q2ufcjRuJIOL0hg6VAUJhiWJBLxH/evYAw+aqoJLcYTR8hqx13iOx/FfbCMHgBmXWZjukbkyPg== dependencies: - "babel-helper-remap-async-to-generator" "^6.24.1" - "babel-plugin-syntax-async-generators" "^6.5.0" - "babel-runtime" "^6.22.0" + babel-helper-remap-async-to-generator "^6.24.1" + babel-plugin-syntax-async-generators "^6.5.0" + babel-runtime "^6.22.0" -"babel-plugin-transform-async-to-generator@^6.22.0", "babel-plugin-transform-async-to-generator@^6.24.1": - "integrity" "sha512-7BgYJujNCg0Ti3x0c/DL3tStvnKS6ktIYOmo9wginv/dfZOrbSZ+qG4IRRHMBOzZ5Awb1skTiAsQXg/+IWkZYw==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz" - "version" "6.24.1" +babel-plugin-transform-async-to-generator@^6.22.0, babel-plugin-transform-async-to-generator@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz" + integrity sha512-7BgYJujNCg0Ti3x0c/DL3tStvnKS6ktIYOmo9wginv/dfZOrbSZ+qG4IRRHMBOzZ5Awb1skTiAsQXg/+IWkZYw== dependencies: - "babel-helper-remap-async-to-generator" "^6.24.1" - "babel-plugin-syntax-async-functions" "^6.8.0" - "babel-runtime" "^6.22.0" + babel-helper-remap-async-to-generator "^6.24.1" + babel-plugin-syntax-async-functions "^6.8.0" + babel-runtime "^6.22.0" -"babel-plugin-transform-class-constructor-call@^6.24.1": - "integrity" "sha512-RvYukT1Nh7njz8P8326ztpQUGCKwmjgu6aRIx1lkvylWITYcskg29vy1Kp8WXIq7FvhXsz0Crf2kS94bjB690A==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-class-constructor-call/-/babel-plugin-transform-class-constructor-call-6.24.1.tgz" - "version" "6.24.1" +babel-plugin-transform-class-constructor-call@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-plugin-transform-class-constructor-call/-/babel-plugin-transform-class-constructor-call-6.24.1.tgz" + integrity sha512-RvYukT1Nh7njz8P8326ztpQUGCKwmjgu6aRIx1lkvylWITYcskg29vy1Kp8WXIq7FvhXsz0Crf2kS94bjB690A== dependencies: - "babel-plugin-syntax-class-constructor-call" "^6.18.0" - "babel-runtime" "^6.22.0" - "babel-template" "^6.24.1" + babel-plugin-syntax-class-constructor-call "^6.18.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" -"babel-plugin-transform-class-properties@^6.24.1": - "integrity" "sha512-n4jtBA3OYBdvG5PRMKsMXJXHfLYw/ZOmtxCLOOwz6Ro5XlrColkStLnz1AS1L2yfPA9BKJ1ZNlmVCLjAL9DSIg==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz" - "version" "6.24.1" +babel-plugin-transform-class-properties@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz" + integrity sha512-n4jtBA3OYBdvG5PRMKsMXJXHfLYw/ZOmtxCLOOwz6Ro5XlrColkStLnz1AS1L2yfPA9BKJ1ZNlmVCLjAL9DSIg== dependencies: - "babel-helper-function-name" "^6.24.1" - "babel-plugin-syntax-class-properties" "^6.8.0" - "babel-runtime" "^6.22.0" - "babel-template" "^6.24.1" + babel-helper-function-name "^6.24.1" + babel-plugin-syntax-class-properties "^6.8.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" -"babel-plugin-transform-decorators@^6.24.1": - "integrity" "sha512-skQ2CImwDkCHu0mkWvCOlBCpBIHW4/49IZWVwV4A/EnWjL9bB6UBvLyMNe3Td5XDStSZNhe69j4bfEW8dvUbew==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-decorators/-/babel-plugin-transform-decorators-6.24.1.tgz" - "version" "6.24.1" +babel-plugin-transform-decorators@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-plugin-transform-decorators/-/babel-plugin-transform-decorators-6.24.1.tgz" + integrity sha512-skQ2CImwDkCHu0mkWvCOlBCpBIHW4/49IZWVwV4A/EnWjL9bB6UBvLyMNe3Td5XDStSZNhe69j4bfEW8dvUbew== dependencies: - "babel-helper-explode-class" "^6.24.1" - "babel-plugin-syntax-decorators" "^6.13.0" - "babel-runtime" "^6.22.0" - "babel-template" "^6.24.1" - "babel-types" "^6.24.1" + babel-helper-explode-class "^6.24.1" + babel-plugin-syntax-decorators "^6.13.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-types "^6.24.1" -"babel-plugin-transform-do-expressions@^6.22.0": - "integrity" "sha512-yQwYqYg+Tnj1InA8W1rsItsZVhkv1Euc4KVua9ledtPz5PDWYz7LVyy6rDBpVYUWFZj5k6GUm3YZpCbIm8Tqew==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-do-expressions/-/babel-plugin-transform-do-expressions-6.22.0.tgz" - "version" "6.22.0" +babel-plugin-transform-do-expressions@^6.22.0: + version "6.22.0" + resolved "https://registry.npmjs.org/babel-plugin-transform-do-expressions/-/babel-plugin-transform-do-expressions-6.22.0.tgz" + integrity sha512-yQwYqYg+Tnj1InA8W1rsItsZVhkv1Euc4KVua9ledtPz5PDWYz7LVyy6rDBpVYUWFZj5k6GUm3YZpCbIm8Tqew== dependencies: - "babel-plugin-syntax-do-expressions" "^6.8.0" - "babel-runtime" "^6.22.0" + babel-plugin-syntax-do-expressions "^6.8.0" + babel-runtime "^6.22.0" -"babel-plugin-transform-es2015-arrow-functions@^6.22.0": - "integrity" "sha512-PCqwwzODXW7JMrzu+yZIaYbPQSKjDTAsNNlK2l5Gg9g4rz2VzLnZsStvp/3c46GfXpwkyufb3NCyG9+50FF1Vg==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz" - "version" "6.22.0" +babel-plugin-transform-es2015-arrow-functions@^6.22.0: + version "6.22.0" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz" + integrity sha512-PCqwwzODXW7JMrzu+yZIaYbPQSKjDTAsNNlK2l5Gg9g4rz2VzLnZsStvp/3c46GfXpwkyufb3NCyG9+50FF1Vg== dependencies: - "babel-runtime" "^6.22.0" + babel-runtime "^6.22.0" -"babel-plugin-transform-es2015-block-scoped-functions@^6.22.0": - "integrity" "sha512-2+ujAT2UMBzYFm7tidUsYh+ZoIutxJ3pN9IYrF1/H6dCKtECfhmB8UkHVpyxDwkj0CYbQG35ykoz925TUnBc3A==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz" - "version" "6.22.0" +babel-plugin-transform-es2015-block-scoped-functions@^6.22.0: + version "6.22.0" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz" + integrity sha512-2+ujAT2UMBzYFm7tidUsYh+ZoIutxJ3pN9IYrF1/H6dCKtECfhmB8UkHVpyxDwkj0CYbQG35ykoz925TUnBc3A== dependencies: - "babel-runtime" "^6.22.0" + babel-runtime "^6.22.0" -"babel-plugin-transform-es2015-block-scoping@^6.23.0": - "integrity" "sha512-YiN6sFAQ5lML8JjCmr7uerS5Yc/EMbgg9G8ZNmk2E3nYX4ckHR01wrkeeMijEf5WHNK5TW0Sl0Uu3pv3EdOJWw==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz" - "version" "6.26.0" +babel-plugin-transform-es2015-block-scoping@^6.23.0: + version "6.26.0" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz" + integrity sha512-YiN6sFAQ5lML8JjCmr7uerS5Yc/EMbgg9G8ZNmk2E3nYX4ckHR01wrkeeMijEf5WHNK5TW0Sl0Uu3pv3EdOJWw== dependencies: - "babel-runtime" "^6.26.0" - "babel-template" "^6.26.0" - "babel-traverse" "^6.26.0" - "babel-types" "^6.26.0" - "lodash" "^4.17.4" + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + lodash "^4.17.4" -"babel-plugin-transform-es2015-classes@^6.23.0": - "integrity" "sha512-5Dy7ZbRinGrNtmWpquZKZ3EGY8sDgIVB4CU8Om8q8tnMLrD/m94cKglVcHps0BCTdZ0TJeeAWOq2TK9MIY6cag==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz" - "version" "6.24.1" +babel-plugin-transform-es2015-classes@^6.23.0: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz" + integrity sha512-5Dy7ZbRinGrNtmWpquZKZ3EGY8sDgIVB4CU8Om8q8tnMLrD/m94cKglVcHps0BCTdZ0TJeeAWOq2TK9MIY6cag== dependencies: - "babel-helper-define-map" "^6.24.1" - "babel-helper-function-name" "^6.24.1" - "babel-helper-optimise-call-expression" "^6.24.1" - "babel-helper-replace-supers" "^6.24.1" - "babel-messages" "^6.23.0" - "babel-runtime" "^6.22.0" - "babel-template" "^6.24.1" - "babel-traverse" "^6.24.1" - "babel-types" "^6.24.1" + babel-helper-define-map "^6.24.1" + babel-helper-function-name "^6.24.1" + babel-helper-optimise-call-expression "^6.24.1" + babel-helper-replace-supers "^6.24.1" + babel-messages "^6.23.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" -"babel-plugin-transform-es2015-computed-properties@^6.22.0": - "integrity" "sha512-C/uAv4ktFP/Hmh01gMTvYvICrKze0XVX9f2PdIXuriCSvUmV9j+u+BB9f5fJK3+878yMK6dkdcq+Ymr9mrcLzw==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz" - "version" "6.24.1" +babel-plugin-transform-es2015-computed-properties@^6.22.0: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz" + integrity sha512-C/uAv4ktFP/Hmh01gMTvYvICrKze0XVX9f2PdIXuriCSvUmV9j+u+BB9f5fJK3+878yMK6dkdcq+Ymr9mrcLzw== dependencies: - "babel-runtime" "^6.22.0" - "babel-template" "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" -"babel-plugin-transform-es2015-destructuring@^6.23.0": - "integrity" "sha512-aNv/GDAW0j/f4Uy1OEPZn1mqD+Nfy9viFGBfQ5bZyT35YqOiqx7/tXdyfZkJ1sC21NyEsBdfDY6PYmLHF4r5iA==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz" - "version" "6.23.0" +babel-plugin-transform-es2015-destructuring@^6.23.0: + version "6.23.0" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz" + integrity sha512-aNv/GDAW0j/f4Uy1OEPZn1mqD+Nfy9viFGBfQ5bZyT35YqOiqx7/tXdyfZkJ1sC21NyEsBdfDY6PYmLHF4r5iA== dependencies: - "babel-runtime" "^6.22.0" + babel-runtime "^6.22.0" -"babel-plugin-transform-es2015-duplicate-keys@^6.22.0": - "integrity" "sha512-ossocTuPOssfxO2h+Z3/Ea1Vo1wWx31Uqy9vIiJusOP4TbF7tPs9U0sJ9pX9OJPf4lXRGj5+6Gkl/HHKiAP5ug==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz" - "version" "6.24.1" +babel-plugin-transform-es2015-duplicate-keys@^6.22.0: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz" + integrity sha512-ossocTuPOssfxO2h+Z3/Ea1Vo1wWx31Uqy9vIiJusOP4TbF7tPs9U0sJ9pX9OJPf4lXRGj5+6Gkl/HHKiAP5ug== dependencies: - "babel-runtime" "^6.22.0" - "babel-types" "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" -"babel-plugin-transform-es2015-for-of@^6.23.0": - "integrity" "sha512-DLuRwoygCoXx+YfxHLkVx5/NpeSbVwfoTeBykpJK7JhYWlL/O8hgAK/reforUnZDlxasOrVPPJVI/guE3dCwkw==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz" - "version" "6.23.0" +babel-plugin-transform-es2015-for-of@^6.23.0: + version "6.23.0" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz" + integrity sha512-DLuRwoygCoXx+YfxHLkVx5/NpeSbVwfoTeBykpJK7JhYWlL/O8hgAK/reforUnZDlxasOrVPPJVI/guE3dCwkw== dependencies: - "babel-runtime" "^6.22.0" + babel-runtime "^6.22.0" -"babel-plugin-transform-es2015-function-name@^6.22.0": - "integrity" "sha512-iFp5KIcorf11iBqu/y/a7DK3MN5di3pNCzto61FqCNnUX4qeBwcV1SLqe10oXNnCaxBUImX3SckX2/o1nsrTcg==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz" - "version" "6.24.1" +babel-plugin-transform-es2015-function-name@^6.22.0: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz" + integrity sha512-iFp5KIcorf11iBqu/y/a7DK3MN5di3pNCzto61FqCNnUX4qeBwcV1SLqe10oXNnCaxBUImX3SckX2/o1nsrTcg== dependencies: - "babel-helper-function-name" "^6.24.1" - "babel-runtime" "^6.22.0" - "babel-types" "^6.24.1" + babel-helper-function-name "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" -"babel-plugin-transform-es2015-literals@^6.22.0": - "integrity" "sha512-tjFl0cwMPpDYyoqYA9li1/7mGFit39XiNX5DKC/uCNjBctMxyL1/PT/l4rSlbvBG1pOKI88STRdUsWXB3/Q9hQ==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz" - "version" "6.22.0" +babel-plugin-transform-es2015-literals@^6.22.0: + version "6.22.0" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz" + integrity sha512-tjFl0cwMPpDYyoqYA9li1/7mGFit39XiNX5DKC/uCNjBctMxyL1/PT/l4rSlbvBG1pOKI88STRdUsWXB3/Q9hQ== dependencies: - "babel-runtime" "^6.22.0" + babel-runtime "^6.22.0" -"babel-plugin-transform-es2015-modules-amd@^6.22.0", "babel-plugin-transform-es2015-modules-amd@^6.24.1": - "integrity" "sha512-LnIIdGWIKdw7zwckqx+eGjcS8/cl8D74A3BpJbGjKTFFNJSMrjN4bIh22HY1AlkUbeLG6X6OZj56BDvWD+OeFA==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz" - "version" "6.24.1" +babel-plugin-transform-es2015-modules-amd@^6.22.0, babel-plugin-transform-es2015-modules-amd@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz" + integrity sha512-LnIIdGWIKdw7zwckqx+eGjcS8/cl8D74A3BpJbGjKTFFNJSMrjN4bIh22HY1AlkUbeLG6X6OZj56BDvWD+OeFA== dependencies: - "babel-plugin-transform-es2015-modules-commonjs" "^6.24.1" - "babel-runtime" "^6.22.0" - "babel-template" "^6.24.1" + babel-plugin-transform-es2015-modules-commonjs "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" -"babel-plugin-transform-es2015-modules-commonjs@^6.23.0", "babel-plugin-transform-es2015-modules-commonjs@^6.24.1": - "integrity" "sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz" - "version" "6.26.2" +babel-plugin-transform-es2015-modules-commonjs@^6.23.0, babel-plugin-transform-es2015-modules-commonjs@^6.24.1: + version "6.26.2" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz" + integrity sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q== dependencies: - "babel-plugin-transform-strict-mode" "^6.24.1" - "babel-runtime" "^6.26.0" - "babel-template" "^6.26.0" - "babel-types" "^6.26.0" + babel-plugin-transform-strict-mode "^6.24.1" + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-types "^6.26.0" -"babel-plugin-transform-es2015-modules-systemjs@^6.23.0": - "integrity" "sha512-ONFIPsq8y4bls5PPsAWYXH/21Hqv64TBxdje0FvU3MhIV6QM2j5YS7KvAzg/nTIVLot2D2fmFQrFWCbgHlFEjg==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz" - "version" "6.24.1" +babel-plugin-transform-es2015-modules-systemjs@^6.23.0: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz" + integrity sha512-ONFIPsq8y4bls5PPsAWYXH/21Hqv64TBxdje0FvU3MhIV6QM2j5YS7KvAzg/nTIVLot2D2fmFQrFWCbgHlFEjg== dependencies: - "babel-helper-hoist-variables" "^6.24.1" - "babel-runtime" "^6.22.0" - "babel-template" "^6.24.1" + babel-helper-hoist-variables "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" -"babel-plugin-transform-es2015-modules-umd@^6.23.0": - "integrity" "sha512-LpVbiT9CLsuAIp3IG0tfbVo81QIhn6pE8xBJ7XSeCtFlMltuar5VuBV6y6Q45tpui9QWcy5i0vLQfCfrnF7Kiw==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz" - "version" "6.24.1" +babel-plugin-transform-es2015-modules-umd@^6.23.0: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz" + integrity sha512-LpVbiT9CLsuAIp3IG0tfbVo81QIhn6pE8xBJ7XSeCtFlMltuar5VuBV6y6Q45tpui9QWcy5i0vLQfCfrnF7Kiw== dependencies: - "babel-plugin-transform-es2015-modules-amd" "^6.24.1" - "babel-runtime" "^6.22.0" - "babel-template" "^6.24.1" + babel-plugin-transform-es2015-modules-amd "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" -"babel-plugin-transform-es2015-object-super@^6.22.0": - "integrity" "sha512-8G5hpZMecb53vpD3mjs64NhI1au24TAmokQ4B+TBFBjN9cVoGoOvotdrMMRmHvVZUEvqGUPWL514woru1ChZMA==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz" - "version" "6.24.1" +babel-plugin-transform-es2015-object-super@^6.22.0: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz" + integrity sha512-8G5hpZMecb53vpD3mjs64NhI1au24TAmokQ4B+TBFBjN9cVoGoOvotdrMMRmHvVZUEvqGUPWL514woru1ChZMA== dependencies: - "babel-helper-replace-supers" "^6.24.1" - "babel-runtime" "^6.22.0" + babel-helper-replace-supers "^6.24.1" + babel-runtime "^6.22.0" -"babel-plugin-transform-es2015-parameters@^6.23.0": - "integrity" "sha512-8HxlW+BB5HqniD+nLkQ4xSAVq3bR/pcYW9IigY+2y0dI+Y7INFeTbfAQr+63T3E4UDsZGjyb+l9txUnABWxlOQ==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz" - "version" "6.24.1" +babel-plugin-transform-es2015-parameters@^6.23.0: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz" + integrity sha512-8HxlW+BB5HqniD+nLkQ4xSAVq3bR/pcYW9IigY+2y0dI+Y7INFeTbfAQr+63T3E4UDsZGjyb+l9txUnABWxlOQ== dependencies: - "babel-helper-call-delegate" "^6.24.1" - "babel-helper-get-function-arity" "^6.24.1" - "babel-runtime" "^6.22.0" - "babel-template" "^6.24.1" - "babel-traverse" "^6.24.1" - "babel-types" "^6.24.1" + babel-helper-call-delegate "^6.24.1" + babel-helper-get-function-arity "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" -"babel-plugin-transform-es2015-shorthand-properties@^6.22.0": - "integrity" "sha512-mDdocSfUVm1/7Jw/FIRNw9vPrBQNePy6wZJlR8HAUBLybNp1w/6lr6zZ2pjMShee65t/ybR5pT8ulkLzD1xwiw==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz" - "version" "6.24.1" +babel-plugin-transform-es2015-shorthand-properties@^6.22.0: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz" + integrity sha512-mDdocSfUVm1/7Jw/FIRNw9vPrBQNePy6wZJlR8HAUBLybNp1w/6lr6zZ2pjMShee65t/ybR5pT8ulkLzD1xwiw== dependencies: - "babel-runtime" "^6.22.0" - "babel-types" "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" -"babel-plugin-transform-es2015-spread@^6.22.0": - "integrity" "sha512-3Ghhi26r4l3d0Js933E5+IhHwk0A1yiutj9gwvzmFbVV0sPMYk2lekhOufHBswX7NCoSeF4Xrl3sCIuSIa+zOg==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz" - "version" "6.22.0" +babel-plugin-transform-es2015-spread@^6.22.0: + version "6.22.0" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz" + integrity sha512-3Ghhi26r4l3d0Js933E5+IhHwk0A1yiutj9gwvzmFbVV0sPMYk2lekhOufHBswX7NCoSeF4Xrl3sCIuSIa+zOg== dependencies: - "babel-runtime" "^6.22.0" + babel-runtime "^6.22.0" -"babel-plugin-transform-es2015-sticky-regex@^6.22.0": - "integrity" "sha512-CYP359ADryTo3pCsH0oxRo/0yn6UsEZLqYohHmvLQdfS9xkf+MbCzE3/Kolw9OYIY4ZMilH25z/5CbQbwDD+lQ==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz" - "version" "6.24.1" +babel-plugin-transform-es2015-sticky-regex@^6.22.0: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz" + integrity sha512-CYP359ADryTo3pCsH0oxRo/0yn6UsEZLqYohHmvLQdfS9xkf+MbCzE3/Kolw9OYIY4ZMilH25z/5CbQbwDD+lQ== dependencies: - "babel-helper-regex" "^6.24.1" - "babel-runtime" "^6.22.0" - "babel-types" "^6.24.1" + babel-helper-regex "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" -"babel-plugin-transform-es2015-template-literals@^6.22.0": - "integrity" "sha512-x8b9W0ngnKzDMHimVtTfn5ryimars1ByTqsfBDwAqLibmuuQY6pgBQi5z1ErIsUOWBdw1bW9FSz5RZUojM4apg==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz" - "version" "6.22.0" +babel-plugin-transform-es2015-template-literals@^6.22.0: + version "6.22.0" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz" + integrity sha512-x8b9W0ngnKzDMHimVtTfn5ryimars1ByTqsfBDwAqLibmuuQY6pgBQi5z1ErIsUOWBdw1bW9FSz5RZUojM4apg== dependencies: - "babel-runtime" "^6.22.0" + babel-runtime "^6.22.0" -"babel-plugin-transform-es2015-typeof-symbol@^6.23.0": - "integrity" "sha512-fz6J2Sf4gYN6gWgRZaoFXmq93X+Li/8vf+fb0sGDVtdeWvxC9y5/bTD7bvfWMEq6zetGEHpWjtzRGSugt5kNqw==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz" - "version" "6.23.0" +babel-plugin-transform-es2015-typeof-symbol@^6.23.0: + version "6.23.0" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz" + integrity sha512-fz6J2Sf4gYN6gWgRZaoFXmq93X+Li/8vf+fb0sGDVtdeWvxC9y5/bTD7bvfWMEq6zetGEHpWjtzRGSugt5kNqw== dependencies: - "babel-runtime" "^6.22.0" + babel-runtime "^6.22.0" -"babel-plugin-transform-es2015-unicode-regex@^6.22.0": - "integrity" "sha512-v61Dbbihf5XxnYjtBN04B/JBvsScY37R1cZT5r9permN1cp+b70DY3Ib3fIkgn1DI9U3tGgBJZVD8p/mE/4JbQ==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz" - "version" "6.24.1" +babel-plugin-transform-es2015-unicode-regex@^6.22.0: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz" + integrity sha512-v61Dbbihf5XxnYjtBN04B/JBvsScY37R1cZT5r9permN1cp+b70DY3Ib3fIkgn1DI9U3tGgBJZVD8p/mE/4JbQ== dependencies: - "babel-helper-regex" "^6.24.1" - "babel-runtime" "^6.22.0" - "regexpu-core" "^2.0.0" + babel-helper-regex "^6.24.1" + babel-runtime "^6.22.0" + regexpu-core "^2.0.0" -"babel-plugin-transform-exponentiation-operator@^6.22.0", "babel-plugin-transform-exponentiation-operator@^6.24.1": - "integrity" "sha512-LzXDmbMkklvNhprr20//RStKVcT8Cu+SQtX18eMHLhjHf2yFzwtQ0S2f0jQ+89rokoNdmwoSqYzAhq86FxlLSQ==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz" - "version" "6.24.1" +babel-plugin-transform-exponentiation-operator@^6.22.0, babel-plugin-transform-exponentiation-operator@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz" + integrity sha512-LzXDmbMkklvNhprr20//RStKVcT8Cu+SQtX18eMHLhjHf2yFzwtQ0S2f0jQ+89rokoNdmwoSqYzAhq86FxlLSQ== dependencies: - "babel-helper-builder-binary-assignment-operator-visitor" "^6.24.1" - "babel-plugin-syntax-exponentiation-operator" "^6.8.0" - "babel-runtime" "^6.22.0" + babel-helper-builder-binary-assignment-operator-visitor "^6.24.1" + babel-plugin-syntax-exponentiation-operator "^6.8.0" + babel-runtime "^6.22.0" -"babel-plugin-transform-export-extensions@^6.22.0": - "integrity" "sha512-mtzELzINaYqdVglyZrDDVwkcFRuE7s6QUFWXxwffKAHB/NkfbJ2NJSytugB43ytIC8UVt30Ereyx+7gNyTkDLg==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-export-extensions/-/babel-plugin-transform-export-extensions-6.22.0.tgz" - "version" "6.22.0" +babel-plugin-transform-export-extensions@^6.22.0: + version "6.22.0" + resolved "https://registry.npmjs.org/babel-plugin-transform-export-extensions/-/babel-plugin-transform-export-extensions-6.22.0.tgz" + integrity sha512-mtzELzINaYqdVglyZrDDVwkcFRuE7s6QUFWXxwffKAHB/NkfbJ2NJSytugB43ytIC8UVt30Ereyx+7gNyTkDLg== dependencies: - "babel-plugin-syntax-export-extensions" "^6.8.0" - "babel-runtime" "^6.22.0" + babel-plugin-syntax-export-extensions "^6.8.0" + babel-runtime "^6.22.0" -"babel-plugin-transform-flow-strip-types@^6.22.0": - "integrity" "sha512-TxIM0ZWNw9oYsoTthL3lvAK3+eTujzktoXJg4ubGvICGbVuXVYv5hHv0XXpz8fbqlJaGYY4q5SVzaSmsg3t4Fg==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz" - "version" "6.22.0" +babel-plugin-transform-flow-strip-types@^6.22.0: + version "6.22.0" + resolved "https://registry.npmjs.org/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz" + integrity sha512-TxIM0ZWNw9oYsoTthL3lvAK3+eTujzktoXJg4ubGvICGbVuXVYv5hHv0XXpz8fbqlJaGYY4q5SVzaSmsg3t4Fg== dependencies: - "babel-plugin-syntax-flow" "^6.18.0" - "babel-runtime" "^6.22.0" + babel-plugin-syntax-flow "^6.18.0" + babel-runtime "^6.22.0" -"babel-plugin-transform-function-bind@^6.22.0": - "integrity" "sha512-9Ec4KYf1GurT39mlUjDSlN7HWSlB3u3mWRMogQbb+Y88lO0ZM3rJ0ADhPnQwWK9TbO6e/4E+Et1rrfGY9mFimA==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-function-bind/-/babel-plugin-transform-function-bind-6.22.0.tgz" - "version" "6.22.0" +babel-plugin-transform-function-bind@^6.22.0: + version "6.22.0" + resolved "https://registry.npmjs.org/babel-plugin-transform-function-bind/-/babel-plugin-transform-function-bind-6.22.0.tgz" + integrity sha512-9Ec4KYf1GurT39mlUjDSlN7HWSlB3u3mWRMogQbb+Y88lO0ZM3rJ0ADhPnQwWK9TbO6e/4E+Et1rrfGY9mFimA== dependencies: - "babel-plugin-syntax-function-bind" "^6.8.0" - "babel-runtime" "^6.22.0" + babel-plugin-syntax-function-bind "^6.8.0" + babel-runtime "^6.22.0" -"babel-plugin-transform-object-rest-spread@^6.22.0", "babel-plugin-transform-object-rest-spread@^6.26.0": - "integrity" "sha512-ocgA9VJvyxwt+qJB0ncxV8kb/CjfTcECUY4tQ5VT7nP6Aohzobm8CDFaQ5FHdvZQzLmf0sgDxB8iRXZXxwZcyA==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz" - "version" "6.26.0" +babel-plugin-transform-object-rest-spread@^6.22.0, babel-plugin-transform-object-rest-spread@^6.26.0: + version "6.26.0" + resolved "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz" + integrity sha512-ocgA9VJvyxwt+qJB0ncxV8kb/CjfTcECUY4tQ5VT7nP6Aohzobm8CDFaQ5FHdvZQzLmf0sgDxB8iRXZXxwZcyA== dependencies: - "babel-plugin-syntax-object-rest-spread" "^6.8.0" - "babel-runtime" "^6.26.0" + babel-plugin-syntax-object-rest-spread "^6.8.0" + babel-runtime "^6.26.0" -"babel-plugin-transform-react-display-name@^6.23.0": - "integrity" "sha512-QLYkLiZeeED2PKd4LuXGg5y9fCgPB5ohF8olWUuETE2ryHNRqqnXlEVP7RPuef89+HTfd3syptMGVHeoAu0Wig==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-react-display-name/-/babel-plugin-transform-react-display-name-6.25.0.tgz" - "version" "6.25.0" +babel-plugin-transform-react-display-name@^6.23.0: + version "6.25.0" + resolved "https://registry.npmjs.org/babel-plugin-transform-react-display-name/-/babel-plugin-transform-react-display-name-6.25.0.tgz" + integrity sha512-QLYkLiZeeED2PKd4LuXGg5y9fCgPB5ohF8olWUuETE2ryHNRqqnXlEVP7RPuef89+HTfd3syptMGVHeoAu0Wig== dependencies: - "babel-runtime" "^6.22.0" + babel-runtime "^6.22.0" -"babel-plugin-transform-react-jsx-self@^6.22.0": - "integrity" "sha512-Y3ZHP1nunv0U1+ysTNwLK39pabHj6cPVsfN4TRC7BDBfbgbyF4RifP5kd6LnbuMV9wcfedQMe7hn1fyKc7IzTQ==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-react-jsx-self/-/babel-plugin-transform-react-jsx-self-6.22.0.tgz" - "version" "6.22.0" +babel-plugin-transform-react-jsx-self@^6.22.0: + version "6.22.0" + resolved "https://registry.npmjs.org/babel-plugin-transform-react-jsx-self/-/babel-plugin-transform-react-jsx-self-6.22.0.tgz" + integrity sha512-Y3ZHP1nunv0U1+ysTNwLK39pabHj6cPVsfN4TRC7BDBfbgbyF4RifP5kd6LnbuMV9wcfedQMe7hn1fyKc7IzTQ== dependencies: - "babel-plugin-syntax-jsx" "^6.8.0" - "babel-runtime" "^6.22.0" + babel-plugin-syntax-jsx "^6.8.0" + babel-runtime "^6.22.0" -"babel-plugin-transform-react-jsx-source@^6.22.0": - "integrity" "sha512-pcDNDsZ9q/6LJmujQ/OhjeoIlp5Nl546HJ2yiFIJK3mYpgNXhI5/S9mXfVxu5yqWAi7HdI7e/q6a9xtzwL69Vw==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-react-jsx-source/-/babel-plugin-transform-react-jsx-source-6.22.0.tgz" - "version" "6.22.0" +babel-plugin-transform-react-jsx-source@^6.22.0: + version "6.22.0" + resolved "https://registry.npmjs.org/babel-plugin-transform-react-jsx-source/-/babel-plugin-transform-react-jsx-source-6.22.0.tgz" + integrity sha512-pcDNDsZ9q/6LJmujQ/OhjeoIlp5Nl546HJ2yiFIJK3mYpgNXhI5/S9mXfVxu5yqWAi7HdI7e/q6a9xtzwL69Vw== dependencies: - "babel-plugin-syntax-jsx" "^6.8.0" - "babel-runtime" "^6.22.0" + babel-plugin-syntax-jsx "^6.8.0" + babel-runtime "^6.22.0" -"babel-plugin-transform-react-jsx@^6.24.1": - "integrity" "sha512-s+q/Y2u2OgDPHRuod3t6zyLoV8pUHc64i/O7ZNgIOEdYTq+ChPeybcKBi/xk9VI60VriILzFPW+dUxAEbTxh2w==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-react-jsx/-/babel-plugin-transform-react-jsx-6.24.1.tgz" - "version" "6.24.1" +babel-plugin-transform-react-jsx@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-plugin-transform-react-jsx/-/babel-plugin-transform-react-jsx-6.24.1.tgz" + integrity sha512-s+q/Y2u2OgDPHRuod3t6zyLoV8pUHc64i/O7ZNgIOEdYTq+ChPeybcKBi/xk9VI60VriILzFPW+dUxAEbTxh2w== dependencies: - "babel-helper-builder-react-jsx" "^6.24.1" - "babel-plugin-syntax-jsx" "^6.8.0" - "babel-runtime" "^6.22.0" + babel-helper-builder-react-jsx "^6.24.1" + babel-plugin-syntax-jsx "^6.8.0" + babel-runtime "^6.22.0" -"babel-plugin-transform-react-remove-prop-types@^0.4.24", "babel-plugin-transform-react-remove-prop-types@0.4.24": - "integrity" "sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz" - "version" "0.4.24" +babel-plugin-transform-react-remove-prop-types@0.4.24, babel-plugin-transform-react-remove-prop-types@^0.4.24: + version "0.4.24" + resolved "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz" + integrity sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA== -"babel-plugin-transform-regenerator@^6.22.0": - "integrity" "sha512-LS+dBkUGlNR15/5WHKe/8Neawx663qttS6AGqoOUhICc9d1KciBvtrQSuc0PI+CxQ2Q/S1aKuJ+u64GtLdcEZg==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz" - "version" "6.26.0" +babel-plugin-transform-regenerator@^6.22.0: + version "6.26.0" + resolved "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz" + integrity sha512-LS+dBkUGlNR15/5WHKe/8Neawx663qttS6AGqoOUhICc9d1KciBvtrQSuc0PI+CxQ2Q/S1aKuJ+u64GtLdcEZg== dependencies: - "regenerator-transform" "^0.10.0" + regenerator-transform "^0.10.0" -"babel-plugin-transform-strict-mode@^6.24.1": - "integrity" "sha512-j3KtSpjyLSJxNoCDrhwiJad8kw0gJ9REGj8/CqL0HeRyLnvUNYV9zcqluL6QJSXh3nfsLEmSLvwRfGzrgR96Pw==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz" - "version" "6.24.1" +babel-plugin-transform-strict-mode@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz" + integrity sha512-j3KtSpjyLSJxNoCDrhwiJad8kw0gJ9REGj8/CqL0HeRyLnvUNYV9zcqluL6QJSXh3nfsLEmSLvwRfGzrgR96Pw== dependencies: - "babel-runtime" "^6.22.0" - "babel-types" "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" -"babel-polyfill@^6.26.0": - "integrity" "sha512-F2rZGQnAdaHWQ8YAoeRbukc7HS9QgdgeyJ0rQDd485v9opwuPvjpPFcOOT/WmkKTdgy9ESgSPXDcTNpzrGr6iQ==" - "resolved" "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz" - "version" "6.26.0" +babel-polyfill@^6.26.0: + version "6.26.0" + resolved "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz" + integrity sha512-F2rZGQnAdaHWQ8YAoeRbukc7HS9QgdgeyJ0rQDd485v9opwuPvjpPFcOOT/WmkKTdgy9ESgSPXDcTNpzrGr6iQ== dependencies: - "babel-runtime" "^6.26.0" - "core-js" "^2.5.0" - "regenerator-runtime" "^0.10.5" + babel-runtime "^6.26.0" + core-js "^2.5.0" + regenerator-runtime "^0.10.5" -"babel-preset-current-node-syntax@^1.0.0": - "integrity" "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==" - "resolved" "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz" - "version" "1.0.1" +babel-preset-current-node-syntax@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz" + integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== dependencies: "@babel/plugin-syntax-async-generators" "^7.8.4" "@babel/plugin-syntax-bigint" "^7.8.3" @@ -7086,69 +6971,69 @@ "@babel/plugin-syntax-optional-chaining" "^7.8.3" "@babel/plugin-syntax-top-level-await" "^7.8.3" -"babel-preset-env@^1.7.0": - "integrity" "sha512-9OR2afuKDneX2/q2EurSftUYM0xGu4O2D9adAhVfADDhrYDaxXV0rBbevVYoY9n6nyX1PmQW/0jtpJvUNr9CHg==" - "resolved" "https://registry.npmjs.org/babel-preset-env/-/babel-preset-env-1.7.0.tgz" - "version" "1.7.0" +babel-preset-env@^1.7.0: + version "1.7.0" + resolved "https://registry.npmjs.org/babel-preset-env/-/babel-preset-env-1.7.0.tgz" + integrity sha512-9OR2afuKDneX2/q2EurSftUYM0xGu4O2D9adAhVfADDhrYDaxXV0rBbevVYoY9n6nyX1PmQW/0jtpJvUNr9CHg== dependencies: - "babel-plugin-check-es2015-constants" "^6.22.0" - "babel-plugin-syntax-trailing-function-commas" "^6.22.0" - "babel-plugin-transform-async-to-generator" "^6.22.0" - "babel-plugin-transform-es2015-arrow-functions" "^6.22.0" - "babel-plugin-transform-es2015-block-scoped-functions" "^6.22.0" - "babel-plugin-transform-es2015-block-scoping" "^6.23.0" - "babel-plugin-transform-es2015-classes" "^6.23.0" - "babel-plugin-transform-es2015-computed-properties" "^6.22.0" - "babel-plugin-transform-es2015-destructuring" "^6.23.0" - "babel-plugin-transform-es2015-duplicate-keys" "^6.22.0" - "babel-plugin-transform-es2015-for-of" "^6.23.0" - "babel-plugin-transform-es2015-function-name" "^6.22.0" - "babel-plugin-transform-es2015-literals" "^6.22.0" - "babel-plugin-transform-es2015-modules-amd" "^6.22.0" - "babel-plugin-transform-es2015-modules-commonjs" "^6.23.0" - "babel-plugin-transform-es2015-modules-systemjs" "^6.23.0" - "babel-plugin-transform-es2015-modules-umd" "^6.23.0" - "babel-plugin-transform-es2015-object-super" "^6.22.0" - "babel-plugin-transform-es2015-parameters" "^6.23.0" - "babel-plugin-transform-es2015-shorthand-properties" "^6.22.0" - "babel-plugin-transform-es2015-spread" "^6.22.0" - "babel-plugin-transform-es2015-sticky-regex" "^6.22.0" - "babel-plugin-transform-es2015-template-literals" "^6.22.0" - "babel-plugin-transform-es2015-typeof-symbol" "^6.23.0" - "babel-plugin-transform-es2015-unicode-regex" "^6.22.0" - "babel-plugin-transform-exponentiation-operator" "^6.22.0" - "babel-plugin-transform-regenerator" "^6.22.0" - "browserslist" "^3.2.6" - "invariant" "^2.2.2" - "semver" "^5.3.0" + babel-plugin-check-es2015-constants "^6.22.0" + babel-plugin-syntax-trailing-function-commas "^6.22.0" + babel-plugin-transform-async-to-generator "^6.22.0" + babel-plugin-transform-es2015-arrow-functions "^6.22.0" + babel-plugin-transform-es2015-block-scoped-functions "^6.22.0" + babel-plugin-transform-es2015-block-scoping "^6.23.0" + babel-plugin-transform-es2015-classes "^6.23.0" + babel-plugin-transform-es2015-computed-properties "^6.22.0" + babel-plugin-transform-es2015-destructuring "^6.23.0" + babel-plugin-transform-es2015-duplicate-keys "^6.22.0" + babel-plugin-transform-es2015-for-of "^6.23.0" + babel-plugin-transform-es2015-function-name "^6.22.0" + babel-plugin-transform-es2015-literals "^6.22.0" + babel-plugin-transform-es2015-modules-amd "^6.22.0" + babel-plugin-transform-es2015-modules-commonjs "^6.23.0" + babel-plugin-transform-es2015-modules-systemjs "^6.23.0" + babel-plugin-transform-es2015-modules-umd "^6.23.0" + babel-plugin-transform-es2015-object-super "^6.22.0" + babel-plugin-transform-es2015-parameters "^6.23.0" + babel-plugin-transform-es2015-shorthand-properties "^6.22.0" + babel-plugin-transform-es2015-spread "^6.22.0" + babel-plugin-transform-es2015-sticky-regex "^6.22.0" + babel-plugin-transform-es2015-template-literals "^6.22.0" + babel-plugin-transform-es2015-typeof-symbol "^6.23.0" + babel-plugin-transform-es2015-unicode-regex "^6.22.0" + babel-plugin-transform-exponentiation-operator "^6.22.0" + babel-plugin-transform-regenerator "^6.22.0" + browserslist "^3.2.6" + invariant "^2.2.2" + semver "^5.3.0" -"babel-preset-es2017@^6.24.1": - "integrity" "sha512-3iPqwP/tBkRATDg9qKkuycGEi1FZCF9pYoa2orhBynoQEPIelORSbk5VqbBI6+UzAt0CGG2gOfj46fmUmuz32g==" - "resolved" "https://registry.npmjs.org/babel-preset-es2017/-/babel-preset-es2017-6.24.1.tgz" - "version" "6.24.1" +babel-preset-es2017@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-preset-es2017/-/babel-preset-es2017-6.24.1.tgz" + integrity sha512-3iPqwP/tBkRATDg9qKkuycGEi1FZCF9pYoa2orhBynoQEPIelORSbk5VqbBI6+UzAt0CGG2gOfj46fmUmuz32g== dependencies: - "babel-plugin-syntax-trailing-function-commas" "^6.22.0" - "babel-plugin-transform-async-to-generator" "^6.24.1" + babel-plugin-syntax-trailing-function-commas "^6.22.0" + babel-plugin-transform-async-to-generator "^6.24.1" -"babel-preset-flow@^6.23.0": - "integrity" "sha512-PQZFJXnM3d80Vq4O67OE6EMVKIw2Vmzy8UXovqulNogCtblWU8rzP7Sm5YgHiCg4uejUxzCkHfNXQ4Z6GI+Dhw==" - "resolved" "https://registry.npmjs.org/babel-preset-flow/-/babel-preset-flow-6.23.0.tgz" - "version" "6.23.0" +babel-preset-flow@^6.23.0: + version "6.23.0" + resolved "https://registry.npmjs.org/babel-preset-flow/-/babel-preset-flow-6.23.0.tgz" + integrity sha512-PQZFJXnM3d80Vq4O67OE6EMVKIw2Vmzy8UXovqulNogCtblWU8rzP7Sm5YgHiCg4uejUxzCkHfNXQ4Z6GI+Dhw== dependencies: - "babel-plugin-transform-flow-strip-types" "^6.22.0" + babel-plugin-transform-flow-strip-types "^6.22.0" -"babel-preset-jest@^27.5.1": - "integrity" "sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==" - "resolved" "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz" - "version" "27.5.1" +babel-preset-jest@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz" + integrity sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag== dependencies: - "babel-plugin-jest-hoist" "^27.5.1" - "babel-preset-current-node-syntax" "^1.0.0" + babel-plugin-jest-hoist "^27.5.1" + babel-preset-current-node-syntax "^1.0.0" -"babel-preset-react-app@^10.0.1": - "integrity" "sha512-b0D9IZ1WhhCWkrTXyFuIIgqGzSkRIH5D5AmB0bXbzYAB1OBAwHcUeyWW2LorutLWF5btNo/N7r/cIdmvvKJlYg==" - "resolved" "https://registry.npmjs.org/babel-preset-react-app/-/babel-preset-react-app-10.0.1.tgz" - "version" "10.0.1" +babel-preset-react-app@^10.0.1: + version "10.0.1" + resolved "https://registry.npmjs.org/babel-preset-react-app/-/babel-preset-react-app-10.0.1.tgz" + integrity sha512-b0D9IZ1WhhCWkrTXyFuIIgqGzSkRIH5D5AmB0bXbzYAB1OBAwHcUeyWW2LorutLWF5btNo/N7r/cIdmvvKJlYg== dependencies: "@babel/core" "^7.16.0" "@babel/plugin-proposal-class-properties" "^7.16.0" @@ -7164,13 +7049,13 @@ "@babel/preset-react" "^7.16.0" "@babel/preset-typescript" "^7.16.0" "@babel/runtime" "^7.16.3" - "babel-plugin-macros" "^3.1.0" - "babel-plugin-transform-react-remove-prop-types" "^0.4.24" + babel-plugin-macros "^3.1.0" + babel-plugin-transform-react-remove-prop-types "^0.4.24" -"babel-preset-react-app@^9.1.1": - "integrity" "sha512-k58RtQOKH21NyKtzptoAvtAODuAJJs3ZhqBMl456/GnXEQ/0La92pNmwgWoMn5pBTrsvk3YYXdY7zpY4e3UIxA==" - "resolved" "https://registry.npmjs.org/babel-preset-react-app/-/babel-preset-react-app-9.1.2.tgz" - "version" "9.1.2" +babel-preset-react-app@^9.1.1: + version "9.1.2" + resolved "https://registry.npmjs.org/babel-preset-react-app/-/babel-preset-react-app-9.1.2.tgz" + integrity sha512-k58RtQOKH21NyKtzptoAvtAODuAJJs3ZhqBMl456/GnXEQ/0La92pNmwgWoMn5pBTrsvk3YYXdY7zpY4e3UIxA== dependencies: "@babel/core" "7.9.0" "@babel/plugin-proposal-class-properties" "7.8.3" @@ -7185,6716 +7070,6396 @@ "@babel/preset-react" "7.9.1" "@babel/preset-typescript" "7.9.0" "@babel/runtime" "7.9.0" - "babel-plugin-macros" "2.8.0" - "babel-plugin-transform-react-remove-prop-types" "0.4.24" + babel-plugin-macros "2.8.0" + babel-plugin-transform-react-remove-prop-types "0.4.24" -"babel-preset-react@^6.24.1": - "integrity" "sha512-phQe3bElbgF887UM0Dhz55d22ob8czTL1kbhZFwpCE6+R/X9kHktfwmx9JZb+bBSVRGphP5tZ9oWhVhlgjrX3Q==" - "resolved" "https://registry.npmjs.org/babel-preset-react/-/babel-preset-react-6.24.1.tgz" - "version" "6.24.1" +babel-preset-react@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-preset-react/-/babel-preset-react-6.24.1.tgz" + integrity sha512-phQe3bElbgF887UM0Dhz55d22ob8czTL1kbhZFwpCE6+R/X9kHktfwmx9JZb+bBSVRGphP5tZ9oWhVhlgjrX3Q== dependencies: - "babel-plugin-syntax-jsx" "^6.3.13" - "babel-plugin-transform-react-display-name" "^6.23.0" - "babel-plugin-transform-react-jsx" "^6.24.1" - "babel-plugin-transform-react-jsx-self" "^6.22.0" - "babel-plugin-transform-react-jsx-source" "^6.22.0" - "babel-preset-flow" "^6.23.0" + babel-plugin-syntax-jsx "^6.3.13" + babel-plugin-transform-react-display-name "^6.23.0" + babel-plugin-transform-react-jsx "^6.24.1" + babel-plugin-transform-react-jsx-self "^6.22.0" + babel-plugin-transform-react-jsx-source "^6.22.0" + babel-preset-flow "^6.23.0" -"babel-preset-stage-0@^6.24.1": - "integrity" "sha512-MJD+xBbpsApbKlzAX0sOBF+VeFaUmv5s8FSOO7SSZpes1QgphCjq/UIGRFWSmQ/0i5bqQjLGCTXGGXqcLQ9JDA==" - "resolved" "https://registry.npmjs.org/babel-preset-stage-0/-/babel-preset-stage-0-6.24.1.tgz" - "version" "6.24.1" +babel-preset-stage-0@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-preset-stage-0/-/babel-preset-stage-0-6.24.1.tgz" + integrity sha512-MJD+xBbpsApbKlzAX0sOBF+VeFaUmv5s8FSOO7SSZpes1QgphCjq/UIGRFWSmQ/0i5bqQjLGCTXGGXqcLQ9JDA== dependencies: - "babel-plugin-transform-do-expressions" "^6.22.0" - "babel-plugin-transform-function-bind" "^6.22.0" - "babel-preset-stage-1" "^6.24.1" + babel-plugin-transform-do-expressions "^6.22.0" + babel-plugin-transform-function-bind "^6.22.0" + babel-preset-stage-1 "^6.24.1" -"babel-preset-stage-1@^6.24.1": - "integrity" "sha512-rn+UOcd7BHDniq1SVxv2/AVVSVI1NK+hfS0I/iR6m6KbOi/aeBRcqBilqO73pd9VUpRXF2HFtlDuC9F2BEQqmg==" - "resolved" "https://registry.npmjs.org/babel-preset-stage-1/-/babel-preset-stage-1-6.24.1.tgz" - "version" "6.24.1" +babel-preset-stage-1@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-preset-stage-1/-/babel-preset-stage-1-6.24.1.tgz" + integrity sha512-rn+UOcd7BHDniq1SVxv2/AVVSVI1NK+hfS0I/iR6m6KbOi/aeBRcqBilqO73pd9VUpRXF2HFtlDuC9F2BEQqmg== dependencies: - "babel-plugin-transform-class-constructor-call" "^6.24.1" - "babel-plugin-transform-export-extensions" "^6.22.0" - "babel-preset-stage-2" "^6.24.1" + babel-plugin-transform-class-constructor-call "^6.24.1" + babel-plugin-transform-export-extensions "^6.22.0" + babel-preset-stage-2 "^6.24.1" -"babel-preset-stage-2@^6.24.1": - "integrity" "sha512-9F+nquz+37PrlTSBdpeQBKnQfAMNBnryXw+m4qBh35FNbJPfzZz+sjN2G5Uf1CRedU9PH7fJkTbYijxmkLX8Og==" - "resolved" "https://registry.npmjs.org/babel-preset-stage-2/-/babel-preset-stage-2-6.24.1.tgz" - "version" "6.24.1" +babel-preset-stage-2@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-preset-stage-2/-/babel-preset-stage-2-6.24.1.tgz" + integrity sha512-9F+nquz+37PrlTSBdpeQBKnQfAMNBnryXw+m4qBh35FNbJPfzZz+sjN2G5Uf1CRedU9PH7fJkTbYijxmkLX8Og== dependencies: - "babel-plugin-syntax-dynamic-import" "^6.18.0" - "babel-plugin-transform-class-properties" "^6.24.1" - "babel-plugin-transform-decorators" "^6.24.1" - "babel-preset-stage-3" "^6.24.1" + babel-plugin-syntax-dynamic-import "^6.18.0" + babel-plugin-transform-class-properties "^6.24.1" + babel-plugin-transform-decorators "^6.24.1" + babel-preset-stage-3 "^6.24.1" -"babel-preset-stage-3@^6.24.1": - "integrity" "sha512-eCbEOF8uN0KypFXJmZXn2sTk7bPV9uM5xov7G/7BM08TbQEObsVs0cEWfy6NQySlfk7JBi/t+XJP1JkruYfthA==" - "resolved" "https://registry.npmjs.org/babel-preset-stage-3/-/babel-preset-stage-3-6.24.1.tgz" - "version" "6.24.1" +babel-preset-stage-3@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-preset-stage-3/-/babel-preset-stage-3-6.24.1.tgz" + integrity sha512-eCbEOF8uN0KypFXJmZXn2sTk7bPV9uM5xov7G/7BM08TbQEObsVs0cEWfy6NQySlfk7JBi/t+XJP1JkruYfthA== dependencies: - "babel-plugin-syntax-trailing-function-commas" "^6.22.0" - "babel-plugin-transform-async-generator-functions" "^6.24.1" - "babel-plugin-transform-async-to-generator" "^6.24.1" - "babel-plugin-transform-exponentiation-operator" "^6.24.1" - "babel-plugin-transform-object-rest-spread" "^6.22.0" + babel-plugin-syntax-trailing-function-commas "^6.22.0" + babel-plugin-transform-async-generator-functions "^6.24.1" + babel-plugin-transform-async-to-generator "^6.24.1" + babel-plugin-transform-exponentiation-operator "^6.24.1" + babel-plugin-transform-object-rest-spread "^6.22.0" -"babel-register@^6.26.0": - "integrity" "sha512-veliHlHX06wjaeY8xNITbveXSiI+ASFnOqvne/LaIJIqOWi2Ogmj91KOugEz/hoh/fwMhXNBJPCv8Xaz5CyM4A==" - "resolved" "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz" - "version" "6.26.0" +babel-register@^6.26.0: + version "6.26.0" + resolved "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz" + integrity sha512-veliHlHX06wjaeY8xNITbveXSiI+ASFnOqvne/LaIJIqOWi2Ogmj91KOugEz/hoh/fwMhXNBJPCv8Xaz5CyM4A== dependencies: - "babel-core" "^6.26.0" - "babel-runtime" "^6.26.0" - "core-js" "^2.5.0" - "home-or-tmp" "^2.0.0" - "lodash" "^4.17.4" - "mkdirp" "^0.5.1" - "source-map-support" "^0.4.15" + babel-core "^6.26.0" + babel-runtime "^6.26.0" + core-js "^2.5.0" + home-or-tmp "^2.0.0" + lodash "^4.17.4" + mkdirp "^0.5.1" + source-map-support "^0.4.15" -"babel-runtime@^6.18.0", "babel-runtime@^6.22.0", "babel-runtime@^6.26.0": - "integrity" "sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==" - "resolved" "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz" - "version" "6.26.0" +babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0: + version "6.26.0" + resolved "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz" + integrity sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g== dependencies: - "core-js" "^2.4.0" - "regenerator-runtime" "^0.11.0" + core-js "^2.4.0" + regenerator-runtime "^0.11.0" -"babel-template@^6.24.1", "babel-template@^6.26.0": - "integrity" "sha512-PCOcLFW7/eazGUKIoqH97sO9A2UYMahsn/yRQ7uOk37iutwjq7ODtcTNF+iFDSHNfkctqsLRjLP7URnOx0T1fg==" - "resolved" "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz" - "version" "6.26.0" +babel-template@^6.24.1, babel-template@^6.26.0: + version "6.26.0" + resolved "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz" + integrity sha512-PCOcLFW7/eazGUKIoqH97sO9A2UYMahsn/yRQ7uOk37iutwjq7ODtcTNF+iFDSHNfkctqsLRjLP7URnOx0T1fg== dependencies: - "babel-runtime" "^6.26.0" - "babel-traverse" "^6.26.0" - "babel-types" "^6.26.0" - "babylon" "^6.18.0" - "lodash" "^4.17.4" + babel-runtime "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + lodash "^4.17.4" -"babel-traverse@^6.24.1", "babel-traverse@^6.26.0": - "integrity" "sha512-iSxeXx7apsjCHe9c7n8VtRXGzI2Bk1rBSOJgCCjfyXb6v1aCqE1KSEpq/8SXuVN8Ka/Rh1WDTF0MDzkvTA4MIA==" - "resolved" "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz" - "version" "6.26.0" +babel-traverse@^6.24.1, babel-traverse@^6.26.0: + version "6.26.0" + resolved "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz" + integrity sha512-iSxeXx7apsjCHe9c7n8VtRXGzI2Bk1rBSOJgCCjfyXb6v1aCqE1KSEpq/8SXuVN8Ka/Rh1WDTF0MDzkvTA4MIA== dependencies: - "babel-code-frame" "^6.26.0" - "babel-messages" "^6.23.0" - "babel-runtime" "^6.26.0" - "babel-types" "^6.26.0" - "babylon" "^6.18.0" - "debug" "^2.6.8" - "globals" "^9.18.0" - "invariant" "^2.2.2" - "lodash" "^4.17.4" + babel-code-frame "^6.26.0" + babel-messages "^6.23.0" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + debug "^2.6.8" + globals "^9.18.0" + invariant "^2.2.2" + lodash "^4.17.4" -"babel-types@^6.19.0", "babel-types@^6.24.1", "babel-types@^6.26.0": - "integrity" "sha512-zhe3V/26rCWsEZK8kZN+HaQj5yQ1CilTObixFzKW1UWjqG7618Twz6YEsCnjfg5gBcJh02DrpCkS9h98ZqDY+g==" - "resolved" "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz" - "version" "6.26.0" +babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26.0: + version "6.26.0" + resolved "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz" + integrity sha512-zhe3V/26rCWsEZK8kZN+HaQj5yQ1CilTObixFzKW1UWjqG7618Twz6YEsCnjfg5gBcJh02DrpCkS9h98ZqDY+g== dependencies: - "babel-runtime" "^6.26.0" - "esutils" "^2.0.2" - "lodash" "^4.17.4" - "to-fast-properties" "^1.0.3" + babel-runtime "^6.26.0" + esutils "^2.0.2" + lodash "^4.17.4" + to-fast-properties "^1.0.3" -"babylon@^6.18.0": - "integrity" "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==" - "resolved" "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz" - "version" "6.18.0" +babylon@^6.18.0: + version "6.18.0" + resolved "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz" + integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ== -"backo2@1.0.2": - "integrity" "sha512-zj6Z6M7Eq+PBZ7PQxl5NT665MvJdAkzp0f60nAJ+sLaSCBPMwVak5ZegFbgVCzFcCJTKFoMizvM5Ld7+JrRJHA==" - "resolved" "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz" - "version" "1.0.2" +backo2@1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz" + integrity sha512-zj6Z6M7Eq+PBZ7PQxl5NT665MvJdAkzp0f60nAJ+sLaSCBPMwVak5ZegFbgVCzFcCJTKFoMizvM5Ld7+JrRJHA== -"bail@^1.0.0": - "integrity" "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==" - "resolved" "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz" - "version" "1.0.5" +bail@^1.0.0: + version "1.0.5" + resolved "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz" + integrity sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ== -"balanced-match@^1.0.0": - "integrity" "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - "resolved" "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" - "version" "1.0.2" +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== -"base@^0.11.1": - "integrity" "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==" - "resolved" "https://registry.npmjs.org/base/-/base-0.11.2.tgz" - "version" "0.11.2" +base64-arraybuffer@0.1.4: + version "0.1.4" + resolved "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz" + integrity sha512-a1eIFi4R9ySrbiMuyTGx5e92uRH5tQY6kArNcFaKBUleIoLjdjBg7Zxm3Mqm3Kmkf27HLR/1fnxX9q8GQ7Iavg== + +base64-js@^1.0.2, base64-js@^1.5.1: + version "1.5.1" + resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + +base@^0.11.1: + version "0.11.2" + resolved "https://registry.npmjs.org/base/-/base-0.11.2.tgz" + integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== dependencies: - "cache-base" "^1.0.1" - "class-utils" "^0.3.5" - "component-emitter" "^1.2.1" - "define-property" "^1.0.0" - "isobject" "^3.0.1" - "mixin-deep" "^1.2.0" - "pascalcase" "^0.1.1" + cache-base "^1.0.1" + class-utils "^0.3.5" + component-emitter "^1.2.1" + define-property "^1.0.0" + isobject "^3.0.1" + mixin-deep "^1.2.0" + pascalcase "^0.1.1" -"base64-arraybuffer@0.1.4": - "integrity" "sha512-a1eIFi4R9ySrbiMuyTGx5e92uRH5tQY6kArNcFaKBUleIoLjdjBg7Zxm3Mqm3Kmkf27HLR/1fnxX9q8GQ7Iavg==" - "resolved" "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz" - "version" "0.1.4" +batch@0.6.1: + version "0.6.1" + resolved "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz" + integrity sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw== -"base64-js@^1.0.2", "base64-js@^1.5.1": - "integrity" "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" - "resolved" "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz" - "version" "1.5.1" - -"batch@0.6.1": - "integrity" "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==" - "resolved" "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz" - "version" "0.6.1" - -"bcrypt-pbkdf@^1.0.0": - "integrity" "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==" - "resolved" "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz" - "version" "1.0.2" +bcrypt-pbkdf@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz" + integrity sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w== dependencies: - "tweetnacl" "^0.14.3" + tweetnacl "^0.14.3" -"better-opn@^2.1.1": - "integrity" "sha512-kIPXZS5qwyKiX/HcRvDYfmBQUa8XP17I0mYZZ0y4UhpYOSvtsLHDYqmomS+Mj20aDvD3knEiQ0ecQy2nhio3yA==" - "resolved" "https://registry.npmjs.org/better-opn/-/better-opn-2.1.1.tgz" - "version" "2.1.1" +better-opn@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/better-opn/-/better-opn-2.1.1.tgz" + integrity sha512-kIPXZS5qwyKiX/HcRvDYfmBQUa8XP17I0mYZZ0y4UhpYOSvtsLHDYqmomS+Mj20aDvD3knEiQ0ecQy2nhio3yA== dependencies: - "open" "^7.0.3" + open "^7.0.3" -"bfj@^7.0.2": - "integrity" "sha512-+e/UqUzwmzJamNF50tBV6tZPTORow7gQ96iFow+8b562OdMpEK0BcJEq2OSPEDmAbSMBQ7PKZ87ubFkgxpYWgw==" - "resolved" "https://registry.npmjs.org/bfj/-/bfj-7.0.2.tgz" - "version" "7.0.2" +bfj@^7.0.2: + version "7.0.2" + resolved "https://registry.npmjs.org/bfj/-/bfj-7.0.2.tgz" + integrity sha512-+e/UqUzwmzJamNF50tBV6tZPTORow7gQ96iFow+8b562OdMpEK0BcJEq2OSPEDmAbSMBQ7PKZ87ubFkgxpYWgw== dependencies: - "bluebird" "^3.5.5" - "check-types" "^11.1.1" - "hoopy" "^0.1.4" - "tryer" "^1.0.1" + bluebird "^3.5.5" + check-types "^11.1.1" + hoopy "^0.1.4" + tryer "^1.0.1" -"big-integer@^1.6.7": - "integrity" "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==" - "resolved" "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz" - "version" "1.6.51" +big-integer@^1.6.7: + version "1.6.51" + resolved "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz" + integrity sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg== -"big.js@^5.2.2": - "integrity" "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==" - "resolved" "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz" - "version" "5.2.2" +big.js@^5.2.2: + version "5.2.2" + resolved "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz" + integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== -"binary-extensions@^1.0.0": - "integrity" "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==" - "resolved" "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz" - "version" "1.13.1" +binary-extensions@^1.0.0: + version "1.13.1" + resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz" + integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== -"binary-extensions@^2.0.0": - "integrity" "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" - "resolved" "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz" - "version" "2.2.0" +binary-extensions@^2.0.0: + version "2.2.0" + resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== -"bindings@^1.5.0": - "integrity" "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==" - "resolved" "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz" - "version" "1.5.0" +bindings@^1.5.0: + version "1.5.0" + resolved "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz" + integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== dependencies: - "file-uri-to-path" "1.0.0" + file-uri-to-path "1.0.0" -"blob@0.0.5": - "integrity" "sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==" - "resolved" "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz" - "version" "0.0.5" +blob@0.0.5: + version "0.0.5" + resolved "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz" + integrity sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig== -"bluebird@^3.5.5": - "integrity" "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" - "resolved" "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz" - "version" "3.7.2" +bluebird@^3.5.5: + version "3.7.2" + resolved "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz" + integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== -"bn.js@^4.0.0": - "integrity" "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - "resolved" "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz" - "version" "4.12.0" +bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9: + version "4.12.0" + resolved "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz" + integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== -"bn.js@^4.1.0": - "integrity" "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - "resolved" "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz" - "version" "4.12.0" +bn.js@^5.0.0, bn.js@^5.1.1: + version "5.2.1" + resolved "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz" + integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== -"bn.js@^4.11.9": - "integrity" "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - "resolved" "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz" - "version" "4.12.0" - -"bn.js@^5.0.0", "bn.js@^5.1.1": - "integrity" "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" - "resolved" "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz" - "version" "5.2.1" - -"body-parser@1.20.1": - "integrity" "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==" - "resolved" "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz" - "version" "1.20.1" +body-parser@1.20.1: + version "1.20.1" + resolved "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz" + 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" + 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" -"bonjour-service@^1.0.11": - "integrity" "sha512-HIMbgLnk1Vqvs6B4Wq5ep7mxvj9sGz5d1JJyDNSGNIdA/w2MCz6GTjWTdjqOJV1bEPj+6IkxDvWNFKEBxNt4kQ==" - "resolved" "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.0.14.tgz" - "version" "1.0.14" +bonjour-service@^1.0.11: + version "1.0.14" + resolved "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.0.14.tgz" + integrity sha512-HIMbgLnk1Vqvs6B4Wq5ep7mxvj9sGz5d1JJyDNSGNIdA/w2MCz6GTjWTdjqOJV1bEPj+6IkxDvWNFKEBxNt4kQ== dependencies: - "array-flatten" "^2.1.2" - "dns-equal" "^1.0.0" - "fast-deep-equal" "^3.1.3" - "multicast-dns" "^7.2.5" + array-flatten "^2.1.2" + dns-equal "^1.0.0" + fast-deep-equal "^3.1.3" + multicast-dns "^7.2.5" -"boolbase@^1.0.0", "boolbase@~1.0.0": - "integrity" "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" - "resolved" "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz" - "version" "1.0.0" +boolbase@^1.0.0, boolbase@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz" + integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== -"bowser@^0.7.1": - "integrity" "sha512-N/toHA87JcmAHPqU8Qt7YnhFK6W2WUpdq5M1k/JqLdTqtts7sHEMZhFjFWTvvR2poKF7Qki0qknhIPIr5I7TIQ==" - "resolved" "https://registry.npmjs.org/bowser/-/bowser-0.7.3.tgz" - "version" "0.7.3" +bowser@^0.7.1: + version "0.7.3" + resolved "https://registry.npmjs.org/bowser/-/bowser-0.7.3.tgz" + integrity sha512-N/toHA87JcmAHPqU8Qt7YnhFK6W2WUpdq5M1k/JqLdTqtts7sHEMZhFjFWTvvR2poKF7Qki0qknhIPIr5I7TIQ== -"boxen@^5.0.0", "boxen@^5.1.2": - "integrity" "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==" - "resolved" "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz" - "version" "5.1.2" +boxen@^5.0.0, boxen@^5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz" + integrity sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ== dependencies: - "ansi-align" "^3.0.0" - "camelcase" "^6.2.0" - "chalk" "^4.1.0" - "cli-boxes" "^2.2.1" - "string-width" "^4.2.2" - "type-fest" "^0.20.2" - "widest-line" "^3.1.0" - "wrap-ansi" "^7.0.0" + ansi-align "^3.0.0" + camelcase "^6.2.0" + chalk "^4.1.0" + cli-boxes "^2.2.1" + string-width "^4.2.2" + type-fest "^0.20.2" + widest-line "^3.1.0" + wrap-ansi "^7.0.0" -"bplist-parser@^0.1.0": - "integrity" "sha512-2AEM0FXy8ZxVLBuqX0hqt1gDwcnz2zygEkQ6zaD5Wko/sB9paUNwlpawrFtKeHUAQUOzjVy9AO4oeonqIHKA9Q==" - "resolved" "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.1.1.tgz" - "version" "0.1.1" +bplist-parser@^0.1.0: + version "0.1.1" + resolved "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.1.1.tgz" + integrity sha512-2AEM0FXy8ZxVLBuqX0hqt1gDwcnz2zygEkQ6zaD5Wko/sB9paUNwlpawrFtKeHUAQUOzjVy9AO4oeonqIHKA9Q== dependencies: - "big-integer" "^1.6.7" + big-integer "^1.6.7" -"brace-expansion@^1.1.7": - "integrity" "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==" - "resolved" "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" - "version" "1.1.11" +brace-expansion@^1.1.7: + 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" + balanced-match "^1.0.0" + concat-map "0.0.1" -"brace-expansion@^2.0.1": - "integrity" "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==" - "resolved" "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz" - "version" "2.0.1" +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== dependencies: - "balanced-match" "^1.0.0" + balanced-match "^1.0.0" -"braces@^1.8.2": - "integrity" "sha512-xU7bpz2ytJl1bH9cgIurjpg/n8Gohy9GTw81heDYLJQ4RU60dlyJsa+atVF2pI0yMMvKxI9HkKwjePCj5XI1hw==" - "resolved" "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz" - "version" "1.8.5" +braces@^1.8.2: + version "1.8.5" + resolved "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz" + integrity sha512-xU7bpz2ytJl1bH9cgIurjpg/n8Gohy9GTw81heDYLJQ4RU60dlyJsa+atVF2pI0yMMvKxI9HkKwjePCj5XI1hw== dependencies: - "expand-range" "^1.8.1" - "preserve" "^0.2.0" - "repeat-element" "^1.1.2" + expand-range "^1.8.1" + preserve "^0.2.0" + repeat-element "^1.1.2" -"braces@^2.3.1", "braces@^2.3.2": - "integrity" "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==" - "resolved" "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz" - "version" "2.3.2" +braces@^2.3.1, braces@^2.3.2: + version "2.3.2" + resolved "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz" + integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== dependencies: - "arr-flatten" "^1.1.0" - "array-unique" "^0.3.2" - "extend-shallow" "^2.0.1" - "fill-range" "^4.0.0" - "isobject" "^3.0.1" - "repeat-element" "^1.1.2" - "snapdragon" "^0.8.1" - "snapdragon-node" "^2.0.1" - "split-string" "^3.0.2" - "to-regex" "^3.0.1" + arr-flatten "^1.1.0" + array-unique "^0.3.2" + extend-shallow "^2.0.1" + fill-range "^4.0.0" + isobject "^3.0.1" + repeat-element "^1.1.2" + snapdragon "^0.8.1" + snapdragon-node "^2.0.1" + split-string "^3.0.2" + to-regex "^3.0.1" -"braces@^3.0.2", "braces@~3.0.2": - "integrity" "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==" - "resolved" "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" - "version" "3.0.2" +braces@^3.0.2, braces@~3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== dependencies: - "fill-range" "^7.0.1" + fill-range "^7.0.1" -"brorand@^1.0.1", "brorand@^1.1.0": - "integrity" "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==" - "resolved" "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz" - "version" "1.1.0" +brorand@^1.0.1, brorand@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz" + integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== -"browser-assert@^1.2.1": - "integrity" "sha512-nfulgvOR6S4gt9UKCeGJOuSGBPGiFT6oQ/2UBnvTY/5aQ1PnksW72fhZkM30DzoRRv2WpwZf1vHHEr3mtuXIWQ==" - "resolved" "https://registry.npmjs.org/browser-assert/-/browser-assert-1.2.1.tgz" - "version" "1.2.1" +browser-assert@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/browser-assert/-/browser-assert-1.2.1.tgz" + integrity sha512-nfulgvOR6S4gt9UKCeGJOuSGBPGiFT6oQ/2UBnvTY/5aQ1PnksW72fhZkM30DzoRRv2WpwZf1vHHEr3mtuXIWQ== -"browser-process-hrtime@^1.0.0": - "integrity" "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==" - "resolved" "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz" - "version" "1.0.0" +browser-process-hrtime@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz" + integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== -"browser-resolve@^1.11.3": - "integrity" "sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==" - "resolved" "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz" - "version" "1.11.3" +browser-resolve@^1.11.3: + version "1.11.3" + resolved "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz" + integrity sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ== dependencies: - "resolve" "1.1.7" + resolve "1.1.7" -"browserify-aes@^1.0.0", "browserify-aes@^1.0.4": - "integrity" "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==" - "resolved" "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz" - "version" "1.2.0" +browserify-aes@^1.0.0, browserify-aes@^1.0.4: + version "1.2.0" + resolved "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz" + integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== dependencies: - "buffer-xor" "^1.0.3" - "cipher-base" "^1.0.0" - "create-hash" "^1.1.0" - "evp_bytestokey" "^1.0.3" - "inherits" "^2.0.1" - "safe-buffer" "^5.0.1" + buffer-xor "^1.0.3" + cipher-base "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.3" + inherits "^2.0.1" + safe-buffer "^5.0.1" -"browserify-cipher@^1.0.0": - "integrity" "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==" - "resolved" "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz" - "version" "1.0.1" +browserify-cipher@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz" + integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== dependencies: - "browserify-aes" "^1.0.4" - "browserify-des" "^1.0.0" - "evp_bytestokey" "^1.0.0" + browserify-aes "^1.0.4" + browserify-des "^1.0.0" + evp_bytestokey "^1.0.0" -"browserify-des@^1.0.0": - "integrity" "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==" - "resolved" "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz" - "version" "1.0.2" +browserify-des@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz" + integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== dependencies: - "cipher-base" "^1.0.1" - "des.js" "^1.0.0" - "inherits" "^2.0.1" - "safe-buffer" "^5.1.2" + cipher-base "^1.0.1" + des.js "^1.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" -"browserify-rsa@^4.0.0", "browserify-rsa@^4.0.1": - "integrity" "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==" - "resolved" "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz" - "version" "4.1.0" +browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: + version "4.1.0" + resolved "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz" + integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog== dependencies: - "bn.js" "^5.0.0" - "randombytes" "^2.0.1" + bn.js "^5.0.0" + randombytes "^2.0.1" -"browserify-sign@^4.0.0": - "integrity" "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==" - "resolved" "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz" - "version" "4.2.1" +browserify-sign@^4.0.0: + version "4.2.1" + resolved "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz" + integrity sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg== dependencies: - "bn.js" "^5.1.1" - "browserify-rsa" "^4.0.1" - "create-hash" "^1.2.0" - "create-hmac" "^1.1.7" - "elliptic" "^6.5.3" - "inherits" "^2.0.4" - "parse-asn1" "^5.1.5" - "readable-stream" "^3.6.0" - "safe-buffer" "^5.2.0" + bn.js "^5.1.1" + browserify-rsa "^4.0.1" + create-hash "^1.2.0" + create-hmac "^1.1.7" + elliptic "^6.5.3" + inherits "^2.0.4" + parse-asn1 "^5.1.5" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" -"browserify-zlib@^0.2.0": - "integrity" "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==" - "resolved" "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz" - "version" "0.2.0" +browserify-zlib@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz" + integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== dependencies: - "pako" "~1.0.5" + pako "~1.0.5" -"browserslist@^3.2.6": - "integrity" "sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ==" - "resolved" "https://registry.npmjs.org/browserslist/-/browserslist-3.2.8.tgz" - "version" "3.2.8" +browserslist@4.14.2: + version "4.14.2" + resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.14.2.tgz" + integrity sha512-HI4lPveGKUR0x2StIz+2FXfDk9SfVMrxn6PLh1JeGUwcuoDkdKZebWiyLRJ68iIPDpMI4JLVDf7S7XzslgWOhw== dependencies: - "caniuse-lite" "^1.0.30000844" - "electron-to-chromium" "^1.3.47" + caniuse-lite "^1.0.30001125" + electron-to-chromium "^1.3.564" + escalade "^3.0.2" + node-releases "^1.1.61" -"browserslist@^4", "browserslist@^4.0.0", "browserslist@^4.12.0", "browserslist@^4.14.5", "browserslist@^4.16.6", "browserslist@^4.18.1", "browserslist@^4.21.3", "browserslist@^4.21.4", "browserslist@^4.6.2", "browserslist@^4.6.4", "browserslist@^4.9.1", "browserslist@>= 4", "browserslist@>= 4.21.0", "browserslist@>=4": - "integrity" "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==" - "resolved" "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz" - "version" "4.21.4" +browserslist@^3.2.6: + version "3.2.8" + resolved "https://registry.npmjs.org/browserslist/-/browserslist-3.2.8.tgz" + integrity sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ== dependencies: - "caniuse-lite" "^1.0.30001400" - "electron-to-chromium" "^1.4.251" - "node-releases" "^2.0.6" - "update-browserslist-db" "^1.0.9" + caniuse-lite "^1.0.30000844" + electron-to-chromium "^1.3.47" -"browserslist@4.14.2": - "integrity" "sha512-HI4lPveGKUR0x2StIz+2FXfDk9SfVMrxn6PLh1JeGUwcuoDkdKZebWiyLRJ68iIPDpMI4JLVDf7S7XzslgWOhw==" - "resolved" "https://registry.npmjs.org/browserslist/-/browserslist-4.14.2.tgz" - "version" "4.14.2" +browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.14.5, browserslist@^4.16.6, browserslist@^4.18.1, browserslist@^4.21.3, browserslist@^4.21.4, browserslist@^4.6.2, browserslist@^4.6.4, browserslist@^4.9.1: + version "4.21.4" + resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz" + integrity sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw== dependencies: - "caniuse-lite" "^1.0.30001125" - "electron-to-chromium" "^1.3.564" - "escalade" "^3.0.2" - "node-releases" "^1.1.61" + caniuse-lite "^1.0.30001400" + electron-to-chromium "^1.4.251" + node-releases "^2.0.6" + update-browserslist-db "^1.0.9" -"bser@2.1.1": - "integrity" "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==" - "resolved" "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz" - "version" "2.1.1" +bser@2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz" + integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== dependencies: - "node-int64" "^0.4.0" + node-int64 "^0.4.0" -"buffer-crc32@~0.2.3": - "integrity" "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==" - "resolved" "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz" - "version" "0.2.13" +buffer-crc32@~0.2.3: + version "0.2.13" + resolved "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz" + integrity sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ== -"buffer-from@^1.0.0": - "integrity" "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" - "resolved" "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz" - "version" "1.1.2" +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== -"buffer-xor@^1.0.3": - "integrity" "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==" - "resolved" "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz" - "version" "1.0.3" +buffer-xor@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz" + integrity sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ== -"buffer@^4.3.0": - "integrity" "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==" - "resolved" "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz" - "version" "4.9.2" +buffer@^4.3.0: + version "4.9.2" + resolved "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz" + integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== dependencies: - "base64-js" "^1.0.2" - "ieee754" "^1.1.4" - "isarray" "^1.0.0" + base64-js "^1.0.2" + ieee754 "^1.1.4" + isarray "^1.0.0" -"builtin-modules@^3.1.0": - "integrity" "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==" - "resolved" "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz" - "version" "3.3.0" +builtin-modules@^3.1.0: + version "3.3.0" + resolved "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz" + integrity sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw== -"builtin-status-codes@^3.0.0": - "integrity" "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==" - "resolved" "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz" - "version" "3.0.0" +builtin-status-codes@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz" + integrity sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ== -"bytes@3.0.0": - "integrity" "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==" - "resolved" "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz" - "version" "3.0.0" +bytes@3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz" + integrity sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw== -"bytes@3.1.2": - "integrity" "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" - "resolved" "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz" - "version" "3.1.2" +bytes@3.1.2: + version "3.1.2" + resolved "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz" + integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== -"c8@^7.6.0": - "integrity" "sha512-CtgQrHOkyxr5koX1wEUmN/5cfDa2ckbHRA4Gy5LAL0zaCFtVWJS5++n+w4/sr2GWGerBxgTjpKeDclk/Qk6W/A==" - "resolved" "https://registry.npmjs.org/c8/-/c8-7.12.0.tgz" - "version" "7.12.0" +c8@^7.6.0: + version "7.12.0" + resolved "https://registry.npmjs.org/c8/-/c8-7.12.0.tgz" + integrity sha512-CtgQrHOkyxr5koX1wEUmN/5cfDa2ckbHRA4Gy5LAL0zaCFtVWJS5++n+w4/sr2GWGerBxgTjpKeDclk/Qk6W/A== dependencies: "@bcoe/v8-coverage" "^0.2.3" "@istanbuljs/schema" "^0.1.3" - "find-up" "^5.0.0" - "foreground-child" "^2.0.0" - "istanbul-lib-coverage" "^3.2.0" - "istanbul-lib-report" "^3.0.0" - "istanbul-reports" "^3.1.4" - "rimraf" "^3.0.2" - "test-exclude" "^6.0.0" - "v8-to-istanbul" "^9.0.0" - "yargs" "^16.2.0" - "yargs-parser" "^20.2.9" + find-up "^5.0.0" + foreground-child "^2.0.0" + istanbul-lib-coverage "^3.2.0" + istanbul-lib-report "^3.0.0" + istanbul-reports "^3.1.4" + rimraf "^3.0.2" + test-exclude "^6.0.0" + v8-to-istanbul "^9.0.0" + yargs "^16.2.0" + yargs-parser "^20.2.9" -"cacache@^12.0.2": - "integrity" "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==" - "resolved" "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz" - "version" "12.0.4" +cacache@^12.0.2: + version "12.0.4" + resolved "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz" + integrity sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ== dependencies: - "bluebird" "^3.5.5" - "chownr" "^1.1.1" - "figgy-pudding" "^3.5.1" - "glob" "^7.1.4" - "graceful-fs" "^4.1.15" - "infer-owner" "^1.0.3" - "lru-cache" "^5.1.1" - "mississippi" "^3.0.0" - "mkdirp" "^0.5.1" - "move-concurrently" "^1.0.1" - "promise-inflight" "^1.0.1" - "rimraf" "^2.6.3" - "ssri" "^6.0.1" - "unique-filename" "^1.1.1" - "y18n" "^4.0.0" + bluebird "^3.5.5" + chownr "^1.1.1" + figgy-pudding "^3.5.1" + glob "^7.1.4" + graceful-fs "^4.1.15" + infer-owner "^1.0.3" + lru-cache "^5.1.1" + mississippi "^3.0.0" + mkdirp "^0.5.1" + move-concurrently "^1.0.1" + promise-inflight "^1.0.1" + rimraf "^2.6.3" + ssri "^6.0.1" + unique-filename "^1.1.1" + y18n "^4.0.0" -"cacache@^15.0.5": - "integrity" "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==" - "resolved" "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz" - "version" "15.3.0" +cacache@^15.0.5: + version "15.3.0" + resolved "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz" + integrity sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ== dependencies: "@npmcli/fs" "^1.0.0" "@npmcli/move-file" "^1.0.1" - "chownr" "^2.0.0" - "fs-minipass" "^2.0.0" - "glob" "^7.1.4" - "infer-owner" "^1.0.4" - "lru-cache" "^6.0.0" - "minipass" "^3.1.1" - "minipass-collect" "^1.0.2" - "minipass-flush" "^1.0.5" - "minipass-pipeline" "^1.2.2" - "mkdirp" "^1.0.3" - "p-map" "^4.0.0" - "promise-inflight" "^1.0.1" - "rimraf" "^3.0.2" - "ssri" "^8.0.1" - "tar" "^6.0.2" - "unique-filename" "^1.1.1" + chownr "^2.0.0" + fs-minipass "^2.0.0" + glob "^7.1.4" + infer-owner "^1.0.4" + lru-cache "^6.0.0" + minipass "^3.1.1" + minipass-collect "^1.0.2" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.2" + mkdirp "^1.0.3" + p-map "^4.0.0" + promise-inflight "^1.0.1" + rimraf "^3.0.2" + ssri "^8.0.1" + tar "^6.0.2" + unique-filename "^1.1.1" -"cache-base@^1.0.1": - "integrity" "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==" - "resolved" "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz" - "version" "1.0.1" +cache-base@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz" + integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== dependencies: - "collection-visit" "^1.0.0" - "component-emitter" "^1.2.1" - "get-value" "^2.0.6" - "has-value" "^1.0.0" - "isobject" "^3.0.1" - "set-value" "^2.0.0" - "to-object-path" "^0.3.0" - "union-value" "^1.0.0" - "unset-value" "^1.0.0" + collection-visit "^1.0.0" + component-emitter "^1.2.1" + get-value "^2.0.6" + has-value "^1.0.0" + isobject "^3.0.1" + set-value "^2.0.0" + to-object-path "^0.3.0" + union-value "^1.0.0" + unset-value "^1.0.0" -"cacheable-request@^6.0.0": - "integrity" "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==" - "resolved" "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz" - "version" "6.1.0" +cacheable-request@^6.0.0: + version "6.1.0" + resolved "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz" + integrity sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg== dependencies: - "clone-response" "^1.0.2" - "get-stream" "^5.1.0" - "http-cache-semantics" "^4.0.0" - "keyv" "^3.0.0" - "lowercase-keys" "^2.0.0" - "normalize-url" "^4.1.0" - "responselike" "^1.0.2" + clone-response "^1.0.2" + get-stream "^5.1.0" + http-cache-semantics "^4.0.0" + keyv "^3.0.0" + lowercase-keys "^2.0.0" + normalize-url "^4.1.0" + responselike "^1.0.2" -"call-bind@^1.0.0", "call-bind@^1.0.2": - "integrity" "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==" - "resolved" "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz" - "version" "1.0.2" +call-bind@^1.0.0, call-bind@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== dependencies: - "function-bind" "^1.1.1" - "get-intrinsic" "^1.0.2" + function-bind "^1.1.1" + get-intrinsic "^1.0.2" -"call-me-maybe@^1.0.1": - "integrity" "sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==" - "resolved" "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.2.tgz" - "version" "1.0.2" +call-me-maybe@^1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.2.tgz" + integrity sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ== -"caller-callsite@^2.0.0": - "integrity" "sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==" - "resolved" "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz" - "version" "2.0.0" +caller-callsite@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz" + integrity sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ== dependencies: - "callsites" "^2.0.0" + callsites "^2.0.0" -"caller-path@^2.0.0": - "integrity" "sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==" - "resolved" "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz" - "version" "2.0.0" +caller-path@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz" + integrity sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A== dependencies: - "caller-callsite" "^2.0.0" + caller-callsite "^2.0.0" -"callsites@^2.0.0": - "integrity" "sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==" - "resolved" "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz" - "version" "2.0.0" +callsites@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz" + integrity sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ== -"callsites@^3.0.0": - "integrity" "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" - "resolved" "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" - "version" "3.1.0" +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== -"camel-case@^4.1.1", "camel-case@^4.1.2": - "integrity" "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==" - "resolved" "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz" - "version" "4.1.2" +camel-case@^4.1.1, camel-case@^4.1.2: + version "4.1.2" + resolved "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz" + integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw== dependencies: - "pascal-case" "^3.1.2" - "tslib" "^2.0.3" + pascal-case "^3.1.2" + tslib "^2.0.3" -"camelcase-css@^2.0.1", "camelcase-css@2.0.1": - "integrity" "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==" - "resolved" "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz" - "version" "2.0.1" +camelcase-css@2.0.1, camelcase-css@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz" + integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA== -"camelcase-keys@^2.0.0": - "integrity" "sha512-bA/Z/DERHKqoEOrp+qeGKw1QlvEQkGZSc0XaY6VnTxZr+Kv1G5zFwttpjv8qxZ/sBPT4nthwZaAcsAZTJlSKXQ==" - "resolved" "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz" - "version" "2.1.0" +camelcase-keys@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz" + integrity sha512-bA/Z/DERHKqoEOrp+qeGKw1QlvEQkGZSc0XaY6VnTxZr+Kv1G5zFwttpjv8qxZ/sBPT4nthwZaAcsAZTJlSKXQ== dependencies: - "camelcase" "^2.0.0" - "map-obj" "^1.0.0" + camelcase "^2.0.0" + map-obj "^1.0.0" -"camelcase@^2.0.0": - "integrity" "sha512-DLIsRzJVBQu72meAKPkWQOLcujdXT32hwdfnkI1frSiSRMK1MofjKHf+MEx0SB6fjEFXL8fBDv1dKymBlOp4Qw==" - "resolved" "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz" - "version" "2.1.1" +camelcase@5.3.1, camelcase@^5.0.0, camelcase@^5.3.1: + version "5.3.1" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== -"camelcase@^5.0.0", "camelcase@^5.3.1", "camelcase@5.3.1": - "integrity" "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" - "resolved" "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz" - "version" "5.3.1" +camelcase@^2.0.0: + version "2.1.1" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz" + integrity sha512-DLIsRzJVBQu72meAKPkWQOLcujdXT32hwdfnkI1frSiSRMK1MofjKHf+MEx0SB6fjEFXL8fBDv1dKymBlOp4Qw== -"camelcase@^6.2.0", "camelcase@^6.2.1": - "integrity" "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==" - "resolved" "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz" - "version" "6.3.0" +camelcase@^6.2.0, camelcase@^6.2.1: + version "6.3.0" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== -"caniuse-api@^3.0.0": - "integrity" "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==" - "resolved" "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz" - "version" "3.0.0" +caniuse-api@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz" + integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== dependencies: - "browserslist" "^4.0.0" - "caniuse-lite" "^1.0.0" - "lodash.memoize" "^4.1.2" - "lodash.uniq" "^4.5.0" + browserslist "^4.0.0" + caniuse-lite "^1.0.0" + lodash.memoize "^4.1.2" + lodash.uniq "^4.5.0" -"caniuse-lite@^1.0.0", "caniuse-lite@^1.0.30000844", "caniuse-lite@^1.0.30000981", "caniuse-lite@^1.0.30001109", "caniuse-lite@^1.0.30001125", "caniuse-lite@^1.0.30001400", "caniuse-lite@^1.0.30001426": - "integrity" "sha512-aOBHrLmTQw//WFa2rcF1If9fa3ypkC1wzqqiKHgfdrXTWcU8C4gKVZT77eQAPWN1APys3+uQ0Df07rKauXGEYA==" - "resolved" "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001434.tgz" - "version" "1.0.30001434" +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000844, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001125, caniuse-lite@^1.0.30001400, caniuse-lite@^1.0.30001426: + version "1.0.30001434" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001434.tgz" + integrity sha512-aOBHrLmTQw//WFa2rcF1If9fa3ypkC1wzqqiKHgfdrXTWcU8C4gKVZT77eQAPWN1APys3+uQ0Df07rKauXGEYA== -"capture-exit@^2.0.0": - "integrity" "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==" - "resolved" "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz" - "version" "2.0.0" +capture-exit@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz" + integrity sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g== dependencies: - "rsvp" "^4.8.4" + rsvp "^4.8.4" -"case-sensitive-paths-webpack-plugin@^2.3.0", "case-sensitive-paths-webpack-plugin@2.3.0": - "integrity" "sha512-/4YgnZS8y1UXXmC02xD5rRrBEu6T5ub+mQHLNRj0fzTRbgdBYhsNo2V5EqwgqrExjxsjtF/OpAKAMkKsxbD5XQ==" - "resolved" "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.3.0.tgz" - "version" "2.3.0" +case-sensitive-paths-webpack-plugin@2.3.0, case-sensitive-paths-webpack-plugin@^2.3.0: + version "2.3.0" + resolved "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.3.0.tgz" + integrity sha512-/4YgnZS8y1UXXmC02xD5rRrBEu6T5ub+mQHLNRj0fzTRbgdBYhsNo2V5EqwgqrExjxsjtF/OpAKAMkKsxbD5XQ== -"case-sensitive-paths-webpack-plugin@^2.4.0": - "integrity" "sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==" - "resolved" "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz" - "version" "2.4.0" +case-sensitive-paths-webpack-plugin@^2.4.0: + version "2.4.0" + resolved "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz" + integrity sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw== -"caseless@~0.12.0": - "integrity" "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==" - "resolved" "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz" - "version" "0.12.0" +caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz" + integrity sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw== -"ccount@^1.0.0": - "integrity" "sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg==" - "resolved" "https://registry.npmjs.org/ccount/-/ccount-1.1.0.tgz" - "version" "1.1.0" +ccount@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/ccount/-/ccount-1.1.0.tgz" + integrity sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg== -"chalk@^1.1.3": - "integrity" "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==" - "resolved" "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz" - "version" "1.1.3" +chalk@2.4.2, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.4.1, chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== dependencies: - "ansi-styles" "^2.2.1" - "escape-string-regexp" "^1.0.2" - "has-ansi" "^2.0.0" - "strip-ansi" "^3.0.0" - "supports-color" "^2.0.0" + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" -"chalk@^2.0.0", "chalk@^2.0.1", "chalk@^2.4.1", "chalk@^2.4.2", "chalk@2.4.2": - "integrity" "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==" - "resolved" "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" - "version" "2.4.2" +chalk@^1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz" + integrity sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A== dependencies: - "ansi-styles" "^3.2.1" - "escape-string-regexp" "^1.0.5" - "supports-color" "^5.3.0" + ansi-styles "^2.2.1" + escape-string-regexp "^1.0.2" + has-ansi "^2.0.0" + strip-ansi "^3.0.0" + supports-color "^2.0.0" -"chalk@^3.0.0": - "integrity" "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==" - "resolved" "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz" - "version" "3.0.0" +chalk@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz" + integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== dependencies: - "ansi-styles" "^4.1.0" - "supports-color" "^7.1.0" + ansi-styles "^4.1.0" + supports-color "^7.1.0" -"chalk@^4.0.0", "chalk@^4.1.0", "chalk@^4.1.2": - "integrity" "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==" - "resolved" "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" - "version" "4.1.2" +chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.2: + 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" + ansi-styles "^4.1.0" + supports-color "^7.1.0" -"chalk@^4.0.2": - "integrity" "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==" - "resolved" "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" - "version" "4.1.2" +char-regex@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz" + integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== + +char-regex@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/char-regex/-/char-regex-2.0.1.tgz" + integrity sha512-oSvEeo6ZUD7NepqAat3RqoucZ5SeqLJgOvVIwkafu6IP3V0pO38s/ypdVUmDDK6qIIHNlYHJAKX9E7R7HoKElw== + +character-entities-legacy@^1.0.0: + version "1.1.4" + resolved "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz" + integrity sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA== + +character-entities@^1.0.0: + version "1.2.4" + resolved "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz" + integrity sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw== + +character-reference-invalid@^1.0.0: + version "1.1.4" + resolved "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz" + integrity sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg== + +check-types@^11.1.1: + version "11.2.2" + resolved "https://registry.npmjs.org/check-types/-/check-types-11.2.2.tgz" + integrity sha512-HBiYvXvn9Z70Z88XKjz3AEKd4HJhBXsa3j7xFnITAzoS8+q6eIGi8qDB8FKPBAjtuxjI/zFpwuiCb8oDtKOYrA== + +cheerio-select@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz" + integrity sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g== dependencies: - "ansi-styles" "^4.1.0" - "supports-color" "^7.1.0" + boolbase "^1.0.0" + css-select "^5.1.0" + css-what "^6.1.0" + domelementtype "^2.3.0" + domhandler "^5.0.3" + domutils "^3.0.1" -"char-regex@^1.0.2": - "integrity" "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==" - "resolved" "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz" - "version" "1.0.2" - -"char-regex@^2.0.0": - "integrity" "sha512-oSvEeo6ZUD7NepqAat3RqoucZ5SeqLJgOvVIwkafu6IP3V0pO38s/ypdVUmDDK6qIIHNlYHJAKX9E7R7HoKElw==" - "resolved" "https://registry.npmjs.org/char-regex/-/char-regex-2.0.1.tgz" - "version" "2.0.1" - -"character-entities-legacy@^1.0.0": - "integrity" "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==" - "resolved" "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz" - "version" "1.1.4" - -"character-entities@^1.0.0": - "integrity" "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==" - "resolved" "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz" - "version" "1.2.4" - -"character-reference-invalid@^1.0.0": - "integrity" "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==" - "resolved" "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz" - "version" "1.1.4" - -"check-types@^11.1.1": - "integrity" "sha512-HBiYvXvn9Z70Z88XKjz3AEKd4HJhBXsa3j7xFnITAzoS8+q6eIGi8qDB8FKPBAjtuxjI/zFpwuiCb8oDtKOYrA==" - "resolved" "https://registry.npmjs.org/check-types/-/check-types-11.2.2.tgz" - "version" "11.2.2" - -"cheerio-select@^2.1.0": - "integrity" "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==" - "resolved" "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz" - "version" "2.1.0" +cheerio@^1.0.0-rc.3: + version "1.0.0-rc.12" + resolved "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz" + integrity sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q== dependencies: - "boolbase" "^1.0.0" - "css-select" "^5.1.0" - "css-what" "^6.1.0" - "domelementtype" "^2.3.0" - "domhandler" "^5.0.3" - "domutils" "^3.0.1" + cheerio-select "^2.1.0" + dom-serializer "^2.0.0" + domhandler "^5.0.3" + domutils "^3.0.1" + htmlparser2 "^8.0.1" + parse5 "^7.0.0" + parse5-htmlparser2-tree-adapter "^7.0.0" -"cheerio@^1.0.0-rc.3": - "integrity" "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==" - "resolved" "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz" - "version" "1.0.0-rc.12" +"chokidar@>=3.0.0 <4.0.0", chokidar@^3.4.1, chokidar@^3.4.2, chokidar@^3.5.3: + version "3.5.3" + resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz" + integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== dependencies: - "cheerio-select" "^2.1.0" - "dom-serializer" "^2.0.0" - "domhandler" "^5.0.3" - "domutils" "^3.0.1" - "htmlparser2" "^8.0.1" - "parse5" "^7.0.0" - "parse5-htmlparser2-tree-adapter" "^7.0.0" - -"chokidar@^1.6.1": - "integrity" "sha512-mk8fAWcRUOxY7btlLtitj3A45jOwSAxH4tOFOoEGbVsl6cL6pPMWUy7dwZ/canfj3QEdP6FHSnf/l1c6/WkzVg==" - "resolved" "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz" - "version" "1.7.0" - dependencies: - "anymatch" "^1.3.0" - "async-each" "^1.0.0" - "glob-parent" "^2.0.0" - "inherits" "^2.0.1" - "is-binary-path" "^1.0.0" - "is-glob" "^2.0.0" - "path-is-absolute" "^1.0.0" - "readdirp" "^2.0.0" + 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" "^1.0.0" + fsevents "~2.3.2" -"chokidar@^2.1.8": - "integrity" "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==" - "resolved" "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz" - "version" "2.1.8" +chokidar@^1.6.1: + version "1.7.0" + resolved "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz" + integrity sha512-mk8fAWcRUOxY7btlLtitj3A45jOwSAxH4tOFOoEGbVsl6cL6pPMWUy7dwZ/canfj3QEdP6FHSnf/l1c6/WkzVg== dependencies: - "anymatch" "^2.0.0" - "async-each" "^1.0.1" - "braces" "^2.3.2" - "glob-parent" "^3.1.0" - "inherits" "^2.0.3" - "is-binary-path" "^1.0.0" - "is-glob" "^4.0.0" - "normalize-path" "^3.0.0" - "path-is-absolute" "^1.0.0" - "readdirp" "^2.2.1" - "upath" "^1.1.1" + anymatch "^1.3.0" + async-each "^1.0.0" + glob-parent "^2.0.0" + inherits "^2.0.1" + is-binary-path "^1.0.0" + is-glob "^2.0.0" + path-is-absolute "^1.0.0" + readdirp "^2.0.0" optionalDependencies: - "fsevents" "^1.2.7" + fsevents "^1.0.0" -"chokidar@^3.4.1", "chokidar@^3.4.2", "chokidar@^3.5.3", "chokidar@>=3.0.0 <4.0.0": - "integrity" "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==" - "resolved" "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz" - "version" "3.5.3" +chokidar@^2.1.8: + version "2.1.8" + resolved "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz" + integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== 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" + anymatch "^2.0.0" + async-each "^1.0.1" + braces "^2.3.2" + glob-parent "^3.1.0" + inherits "^2.0.3" + is-binary-path "^1.0.0" + is-glob "^4.0.0" + normalize-path "^3.0.0" + path-is-absolute "^1.0.0" + readdirp "^2.2.1" + upath "^1.1.1" optionalDependencies: - "fsevents" "~2.3.2" + fsevents "^1.2.7" -"chownr@^1.1.1": - "integrity" "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" - "resolved" "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz" - "version" "1.1.4" +chownr@^1.1.1: + version "1.1.4" + resolved "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz" + integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== -"chownr@^2.0.0": - "integrity" "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==" - "resolved" "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz" - "version" "2.0.0" +chownr@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz" + integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== -"chrome-trace-event@^1.0.2": - "integrity" "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==" - "resolved" "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz" - "version" "1.0.3" +chrome-trace-event@^1.0.2: + version "1.0.3" + resolved "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz" + integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== -"ci-info@^2.0.0": - "integrity" "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" - "resolved" "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz" - "version" "2.0.0" +ci-info@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz" + integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== -"ci-info@^3.2.0": - "integrity" "sha512-up5ggbaDqOqJ4UqLKZ2naVkyqSJQgJi5lwD6b6mM748ysrghDBX0bx/qJTUHzw7zu6Mq4gycviSF5hJnwceD8w==" - "resolved" "https://registry.npmjs.org/ci-info/-/ci-info-3.6.1.tgz" - "version" "3.6.1" +ci-info@^3.2.0: + version "3.6.1" + resolved "https://registry.npmjs.org/ci-info/-/ci-info-3.6.1.tgz" + integrity sha512-up5ggbaDqOqJ4UqLKZ2naVkyqSJQgJi5lwD6b6mM748ysrghDBX0bx/qJTUHzw7zu6Mq4gycviSF5hJnwceD8w== -"cipher-base@^1.0.0", "cipher-base@^1.0.1", "cipher-base@^1.0.3": - "integrity" "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==" - "resolved" "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz" - "version" "1.0.4" +cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: + version "1.0.4" + resolved "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz" + integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== dependencies: - "inherits" "^2.0.1" - "safe-buffer" "^5.0.1" + inherits "^2.0.1" + safe-buffer "^5.0.1" -"cjs-module-lexer@^1.0.0": - "integrity" "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==" - "resolved" "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz" - "version" "1.2.2" +cjs-module-lexer@^1.0.0: + version "1.2.2" + resolved "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz" + integrity sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA== -"class-utils@^0.3.5": - "integrity" "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==" - "resolved" "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz" - "version" "0.3.6" +class-utils@^0.3.5: + version "0.3.6" + resolved "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz" + integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== dependencies: - "arr-union" "^3.1.0" - "define-property" "^0.2.5" - "isobject" "^3.0.0" - "static-extend" "^0.1.1" + arr-union "^3.1.0" + define-property "^0.2.5" + isobject "^3.0.0" + static-extend "^0.1.1" -"classnames@^2.2.1", "classnames@^2.2.3", "classnames@^2.2.5", "classnames@^2.2.6", "classnames@^2.3.1", "classnames@^2.3.2", "classnames@2.x": - "integrity" "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==" - "resolved" "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz" - "version" "2.3.2" +classnames@2.x, classnames@^2.2.1, classnames@^2.2.3, classnames@^2.2.5, classnames@^2.2.6, classnames@^2.3.1, classnames@^2.3.2: + version "2.3.2" + resolved "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz" + integrity sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw== -"clean-css@^4.2.3": - "integrity" "sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==" - "resolved" "https://registry.npmjs.org/clean-css/-/clean-css-4.2.4.tgz" - "version" "4.2.4" +clean-css@^4.2.3: + version "4.2.4" + resolved "https://registry.npmjs.org/clean-css/-/clean-css-4.2.4.tgz" + integrity sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A== dependencies: - "source-map" "~0.6.0" + source-map "~0.6.0" -"clean-css@^5.2.2": - "integrity" "sha512-lCr8OHhiWCTw4v8POJovCoh4T7I9U11yVsPjMWWnnMmp9ZowCxyad1Pathle/9HjaDp+fdQKjO9fQydE6RHTZg==" - "resolved" "https://registry.npmjs.org/clean-css/-/clean-css-5.3.1.tgz" - "version" "5.3.1" +clean-css@^5.2.2: + version "5.3.1" + resolved "https://registry.npmjs.org/clean-css/-/clean-css-5.3.1.tgz" + integrity sha512-lCr8OHhiWCTw4v8POJovCoh4T7I9U11yVsPjMWWnnMmp9ZowCxyad1Pathle/9HjaDp+fdQKjO9fQydE6RHTZg== dependencies: - "source-map" "~0.6.0" + source-map "~0.6.0" -"clean-stack@^2.0.0": - "integrity" "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==" - "resolved" "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz" - "version" "2.2.0" +clean-stack@^2.0.0: + version "2.2.0" + resolved "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz" + integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== -"cli-boxes@^2.2.1": - "integrity" "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==" - "resolved" "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz" - "version" "2.2.1" +cli-boxes@^2.2.1: + version "2.2.1" + resolved "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz" + integrity sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw== -"cli-table3@^0.6.1": - "integrity" "sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==" - "resolved" "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz" - "version" "0.6.3" +cli-table3@^0.6.1: + version "0.6.3" + resolved "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz" + integrity sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg== dependencies: - "string-width" "^4.2.0" + string-width "^4.2.0" optionalDependencies: "@colors/colors" "1.5.0" -"client-only@^0.0.1": - "integrity" "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==" - "resolved" "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz" - "version" "0.0.1" +client-only@^0.0.1: + version "0.0.1" + resolved "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz" + integrity sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA== -"cliui@^5.0.0": - "integrity" "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==" - "resolved" "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz" - "version" "5.0.0" +cliui@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz" + integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== dependencies: - "string-width" "^3.1.0" - "strip-ansi" "^5.2.0" - "wrap-ansi" "^5.1.0" + string-width "^3.1.0" + strip-ansi "^5.2.0" + wrap-ansi "^5.1.0" -"cliui@^7.0.2": - "integrity" "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==" - "resolved" "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz" - "version" "7.0.4" +cliui@^7.0.2: + version "7.0.4" + resolved "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz" + integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== dependencies: - "string-width" "^4.2.0" - "strip-ansi" "^6.0.0" - "wrap-ansi" "^7.0.0" + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^7.0.0" -"cliui@^8.0.1": - "integrity" "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==" - "resolved" "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz" - "version" "8.0.1" +cliui@^8.0.1: + version "8.0.1" + resolved "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz" + integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== dependencies: - "string-width" "^4.2.0" - "strip-ansi" "^6.0.1" - "wrap-ansi" "^7.0.0" + string-width "^4.2.0" + strip-ansi "^6.0.1" + wrap-ansi "^7.0.0" -"clone-deep@^0.2.4": - "integrity" "sha512-we+NuQo2DHhSl+DP6jlUiAhyAjBQrYnpOk15rN6c6JSPScjiCLh8IbSU+VTcph6YS3o7mASE8a0+gbZ7ChLpgg==" - "resolved" "https://registry.npmjs.org/clone-deep/-/clone-deep-0.2.4.tgz" - "version" "0.2.4" +clone-deep@^0.2.4: + version "0.2.4" + resolved "https://registry.npmjs.org/clone-deep/-/clone-deep-0.2.4.tgz" + integrity sha512-we+NuQo2DHhSl+DP6jlUiAhyAjBQrYnpOk15rN6c6JSPScjiCLh8IbSU+VTcph6YS3o7mASE8a0+gbZ7ChLpgg== dependencies: - "for-own" "^0.1.3" - "is-plain-object" "^2.0.1" - "kind-of" "^3.0.2" - "lazy-cache" "^1.0.3" - "shallow-clone" "^0.1.2" + for-own "^0.1.3" + is-plain-object "^2.0.1" + kind-of "^3.0.2" + lazy-cache "^1.0.3" + shallow-clone "^0.1.2" -"clone-deep@^4.0.1": - "integrity" "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==" - "resolved" "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz" - "version" "4.0.1" +clone-deep@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz" + integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== dependencies: - "is-plain-object" "^2.0.4" - "kind-of" "^6.0.2" - "shallow-clone" "^3.0.0" + is-plain-object "^2.0.4" + kind-of "^6.0.2" + shallow-clone "^3.0.0" -"clone-response@^1.0.2": - "integrity" "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==" - "resolved" "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz" - "version" "1.0.3" +clone-response@^1.0.2: + version "1.0.3" + resolved "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz" + integrity sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA== dependencies: - "mimic-response" "^1.0.0" + mimic-response "^1.0.0" -"clsx@^1.0.4": - "integrity" "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==" - "resolved" "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz" - "version" "1.2.1" +clsx@1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/clsx/-/clsx-1.1.0.tgz" + integrity sha512-3avwM37fSK5oP6M5rQ9CNe99lwxhXDOeSWVPAOYF6OazUTgZCMb0yWlJpmdD74REy1gkEaFiub2ULv4fq9GUhA== -"clsx@1.1.0": - "integrity" "sha512-3avwM37fSK5oP6M5rQ9CNe99lwxhXDOeSWVPAOYF6OazUTgZCMb0yWlJpmdD74REy1gkEaFiub2ULv4fq9GUhA==" - "resolved" "https://registry.npmjs.org/clsx/-/clsx-1.1.0.tgz" - "version" "1.1.0" +clsx@^1.0.4: + version "1.2.1" + resolved "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz" + integrity sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg== -"co@^4.6.0": - "integrity" "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==" - "resolved" "https://registry.npmjs.org/co/-/co-4.6.0.tgz" - "version" "4.6.0" +co@^4.6.0: + version "4.6.0" + resolved "https://registry.npmjs.org/co/-/co-4.6.0.tgz" + integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== -"coa@^2.0.2": - "integrity" "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==" - "resolved" "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz" - "version" "2.0.2" +coa@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz" + integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA== dependencies: "@types/q" "^1.5.1" - "chalk" "^2.4.1" - "q" "^1.1.2" + chalk "^2.4.1" + q "^1.1.2" -"collapse-white-space@^1.0.2": - "integrity" "sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ==" - "resolved" "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-1.0.6.tgz" - "version" "1.0.6" +collapse-white-space@^1.0.2: + version "1.0.6" + resolved "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-1.0.6.tgz" + integrity sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ== -"collect-v8-coverage@^1.0.0": - "integrity" "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==" - "resolved" "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz" - "version" "1.0.1" +collect-v8-coverage@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz" + integrity sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg== -"collection-visit@^1.0.0": - "integrity" "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==" - "resolved" "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz" - "version" "1.0.0" +collection-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz" + integrity sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw== dependencies: - "map-visit" "^1.0.0" - "object-visit" "^1.0.0" + map-visit "^1.0.0" + object-visit "^1.0.0" -"color-convert@^1.9.0", "color-convert@^1.9.3": - "integrity" "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==" - "resolved" "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" - "version" "1.9.3" +color-convert@^1.9.0, color-convert@^1.9.3: + version "1.9.3" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== dependencies: - "color-name" "1.1.3" + color-name "1.1.3" -"color-convert@^2.0.1": - "integrity" "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==" - "resolved" "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" - "version" "2.0.1" +color-convert@^2.0.1: + 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" + color-name "~1.1.4" -"color-name@^1.0.0", "color-name@1.1.3": - "integrity" "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - "resolved" "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" - "version" "1.1.3" +color-name@1.1.3, color-name@^1.0.0: + version "1.1.3" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== -"color-name@^1.1.4": - "integrity" "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - "resolved" "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" - "version" "1.1.4" +color-name@^1.1.4, color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -"color-name@~1.1.4": - "integrity" "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - "resolved" "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" - "version" "1.1.4" - -"color-string@^1.6.0": - "integrity" "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==" - "resolved" "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz" - "version" "1.9.1" +color-string@^1.6.0: + version "1.9.1" + resolved "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz" + integrity sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg== dependencies: - "color-name" "^1.0.0" - "simple-swizzle" "^0.2.2" + color-name "^1.0.0" + simple-swizzle "^0.2.2" -"color-support@^1.1.2": - "integrity" "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==" - "resolved" "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz" - "version" "1.1.3" +color-support@^1.1.2: + version "1.1.3" + resolved "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz" + integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== -"color@^3.0.0": - "integrity" "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==" - "resolved" "https://registry.npmjs.org/color/-/color-3.2.1.tgz" - "version" "3.2.1" +color@^3.0.0: + version "3.2.1" + resolved "https://registry.npmjs.org/color/-/color-3.2.1.tgz" + integrity sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA== dependencies: - "color-convert" "^1.9.3" - "color-string" "^1.6.0" + color-convert "^1.9.3" + color-string "^1.6.0" -"colord@^2.9.1": - "integrity" "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==" - "resolved" "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz" - "version" "2.9.3" +colord@^2.9.1: + version "2.9.3" + resolved "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz" + integrity sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw== -"colorette@^1.2.2": - "integrity" "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==" - "resolved" "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz" - "version" "1.4.0" +colorette@^1.2.2: + version "1.4.0" + resolved "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz" + integrity sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g== -"colorette@^2.0.10": - "integrity" "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==" - "resolved" "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz" - "version" "2.0.19" +colorette@^2.0.10: + version "2.0.19" + resolved "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz" + integrity sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ== -"combined-stream@^1.0.6", "combined-stream@^1.0.8", "combined-stream@~1.0.6": - "integrity" "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==" - "resolved" "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz" - "version" "1.0.8" +combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: + version "1.0.8" + resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== dependencies: - "delayed-stream" "~1.0.0" + delayed-stream "~1.0.0" -"combokeys@^3.0.1": - "integrity" "sha512-5nAfaLZ3oO3kA+/xdoL7t197UJTz2WWidyH3BBeU6hqHtvyFERICd0y3DQFrQkJFTKBrtUDck/xCLLoFpnjaCw==" - "resolved" "https://registry.npmjs.org/combokeys/-/combokeys-3.0.1.tgz" - "version" "3.0.1" +combokeys@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/combokeys/-/combokeys-3.0.1.tgz" + integrity sha512-5nAfaLZ3oO3kA+/xdoL7t197UJTz2WWidyH3BBeU6hqHtvyFERICd0y3DQFrQkJFTKBrtUDck/xCLLoFpnjaCw== -"comma-separated-tokens@^1.0.0": - "integrity" "sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==" - "resolved" "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz" - "version" "1.0.8" +comma-separated-tokens@^1.0.0: + version "1.0.8" + resolved "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz" + integrity sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw== -"commander@^2.11.0", "commander@^2.19.0", "commander@^2.20.0": - "integrity" "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" - "resolved" "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz" - "version" "2.20.3" +commander@^2.11.0, commander@^2.19.0, commander@^2.20.0: + version "2.20.3" + resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== -"commander@^4.1.1": - "integrity" "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==" - "resolved" "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz" - "version" "4.1.1" +commander@^4.1.1: + version "4.1.1" + resolved "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz" + integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== -"commander@^6.2.1": - "integrity" "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==" - "resolved" "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz" - "version" "6.2.1" +commander@^6.2.1: + version "6.2.1" + resolved "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz" + integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA== -"commander@^7.2.0": - "integrity" "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==" - "resolved" "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz" - "version" "7.2.0" +commander@^7.2.0: + version "7.2.0" + resolved "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz" + integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== -"commander@^8.3.0": - "integrity" "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==" - "resolved" "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz" - "version" "8.3.0" +commander@^8.3.0: + version "8.3.0" + resolved "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz" + integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== -"common-path-prefix@^3.0.0": - "integrity" "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==" - "resolved" "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz" - "version" "3.0.0" +common-path-prefix@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz" + integrity sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w== -"common-tags@^1.8.0": - "integrity" "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==" - "resolved" "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz" - "version" "1.8.2" +common-tags@^1.8.0: + version "1.8.2" + resolved "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz" + integrity sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA== -"commondir@^1.0.1": - "integrity" "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==" - "resolved" "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz" - "version" "1.0.1" +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz" + integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== -"component-bind@1.0.0": - "integrity" "sha512-WZveuKPeKAG9qY+FkYDeADzdHyTYdIboXS59ixDeRJL5ZhxpqUnxSOwop4FQjMsiYm3/Or8cegVbpAHNA7pHxw==" - "resolved" "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz" - "version" "1.0.0" +component-bind@1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz" + integrity sha512-WZveuKPeKAG9qY+FkYDeADzdHyTYdIboXS59ixDeRJL5ZhxpqUnxSOwop4FQjMsiYm3/Or8cegVbpAHNA7pHxw== -"component-emitter@^1.2.1", "component-emitter@~1.3.0": - "integrity" "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" - "resolved" "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz" - "version" "1.3.0" +component-emitter@^1.2.1, component-emitter@~1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz" + integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== -"component-inherit@0.0.3": - "integrity" "sha512-w+LhYREhatpVqTESyGFg3NlP6Iu0kEKUHETY9GoZP/pQyW4mHFZuFWRUCIqVPZ36ueVLtoOEZaAqbCF2RDndaA==" - "resolved" "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz" - "version" "0.0.3" +component-inherit@0.0.3: + version "0.0.3" + resolved "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz" + integrity sha512-w+LhYREhatpVqTESyGFg3NlP6Iu0kEKUHETY9GoZP/pQyW4mHFZuFWRUCIqVPZ36ueVLtoOEZaAqbCF2RDndaA== -"compose-function@3.0.3": - "integrity" "sha512-xzhzTJ5eC+gmIzvZq+C3kCJHsp9os6tJkrigDRZclyGtOKINbZtE8n1Tzmeh32jW+BUDPbvZpibwvJHBLGMVwg==" - "resolved" "https://registry.npmjs.org/compose-function/-/compose-function-3.0.3.tgz" - "version" "3.0.3" +compose-function@3.0.3: + version "3.0.3" + resolved "https://registry.npmjs.org/compose-function/-/compose-function-3.0.3.tgz" + integrity sha512-xzhzTJ5eC+gmIzvZq+C3kCJHsp9os6tJkrigDRZclyGtOKINbZtE8n1Tzmeh32jW+BUDPbvZpibwvJHBLGMVwg== dependencies: - "arity-n" "^1.0.4" + arity-n "^1.0.4" -"compressible@~2.0.16": - "integrity" "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==" - "resolved" "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz" - "version" "2.0.18" +compressible@~2.0.16: + version "2.0.18" + resolved "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz" + integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== dependencies: - "mime-db" ">= 1.43.0 < 2" + mime-db ">= 1.43.0 < 2" -"compression@^1.7.4": - "integrity" "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==" - "resolved" "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz" - "version" "1.7.4" +compression@^1.7.4: + version "1.7.4" + resolved "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz" + integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== dependencies: - "accepts" "~1.3.5" - "bytes" "3.0.0" - "compressible" "~2.0.16" - "debug" "2.6.9" - "on-headers" "~1.0.2" - "safe-buffer" "5.1.2" - "vary" "~1.1.2" + accepts "~1.3.5" + bytes "3.0.0" + compressible "~2.0.16" + debug "2.6.9" + on-headers "~1.0.2" + safe-buffer "5.1.2" + vary "~1.1.2" -"compute-scroll-into-view@^1.0.17": - "integrity" "sha512-j4dx+Fb0URmzbwwMUrhqWM2BEWHdFGx+qZ9qqASHRPqvTYdqvWnHg0H1hIbcyLnvgnoNAVMlwkepyqM3DaIFUg==" - "resolved" "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-1.0.17.tgz" - "version" "1.0.17" +compute-scroll-into-view@^1.0.17: + version "1.0.17" + resolved "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-1.0.17.tgz" + integrity sha512-j4dx+Fb0URmzbwwMUrhqWM2BEWHdFGx+qZ9qqASHRPqvTYdqvWnHg0H1hIbcyLnvgnoNAVMlwkepyqM3DaIFUg== -"computed-style@~0.1.3": - "integrity" "sha512-WpAmaKbMNmS3OProfHIdJiNleNJdgUrJfbKArXua28QF7+0CoZjlLn0lp6vlc+dl5r2/X9GQiQRQQU4BzSa69w==" - "resolved" "https://registry.npmjs.org/computed-style/-/computed-style-0.1.4.tgz" - "version" "0.1.4" +computed-style@~0.1.3: + version "0.1.4" + resolved "https://registry.npmjs.org/computed-style/-/computed-style-0.1.4.tgz" + integrity sha512-WpAmaKbMNmS3OProfHIdJiNleNJdgUrJfbKArXua28QF7+0CoZjlLn0lp6vlc+dl5r2/X9GQiQRQQU4BzSa69w== -"concat-map@0.0.1": - "integrity" "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" - "resolved" "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" - "version" "0.0.1" +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== -"concat-stream@^1.5.0", "concat-stream@^1.6.2": - "integrity" "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==" - "resolved" "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz" - "version" "1.6.2" +concat-stream@^1.5.0, concat-stream@^1.6.2: + version "1.6.2" + resolved "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz" + integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== dependencies: - "buffer-from" "^1.0.0" - "inherits" "^2.0.3" - "readable-stream" "^2.2.2" - "typedarray" "^0.0.6" + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" -"concurrently@^7.2.1": - "integrity" "sha512-BKtRgvcJGeZ4XttiDiNcFiRlxoAeZOseqUvyYRUp/Vtd+9p1ULmeoSqGsDA+2ivdeDFpqrJvGvmI+StKfKl5hw==" - "resolved" "https://registry.npmjs.org/concurrently/-/concurrently-7.6.0.tgz" - "version" "7.6.0" +concurrently@^7.2.1: + version "7.6.0" + resolved "https://registry.npmjs.org/concurrently/-/concurrently-7.6.0.tgz" + integrity sha512-BKtRgvcJGeZ4XttiDiNcFiRlxoAeZOseqUvyYRUp/Vtd+9p1ULmeoSqGsDA+2ivdeDFpqrJvGvmI+StKfKl5hw== dependencies: - "chalk" "^4.1.0" - "date-fns" "^2.29.1" - "lodash" "^4.17.21" - "rxjs" "^7.0.0" - "shell-quote" "^1.7.3" - "spawn-command" "^0.0.2-1" - "supports-color" "^8.1.0" - "tree-kill" "^1.2.2" - "yargs" "^17.3.1" + chalk "^4.1.0" + date-fns "^2.29.1" + lodash "^4.17.21" + rxjs "^7.0.0" + shell-quote "^1.7.3" + spawn-command "^0.0.2-1" + supports-color "^8.1.0" + tree-kill "^1.2.2" + yargs "^17.3.1" -"config@^1.24.0": - "integrity" "sha512-Ep/l9Rd1J9IPueztJfpbOqVzuKHQh4ZODMNt9xqTYdBBNRXbV4oTu34kCkkfdRVcDq0ohtpaeXGgb+c0LQxFRA==" - "resolved" "https://registry.npmjs.org/config/-/config-1.31.0.tgz" - "version" "1.31.0" +config@^1.24.0: + version "1.31.0" + resolved "https://registry.npmjs.org/config/-/config-1.31.0.tgz" + integrity sha512-Ep/l9Rd1J9IPueztJfpbOqVzuKHQh4ZODMNt9xqTYdBBNRXbV4oTu34kCkkfdRVcDq0ohtpaeXGgb+c0LQxFRA== dependencies: - "json5" "^1.0.1" + json5 "^1.0.1" -"configstore@^5.0.1": - "integrity" "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==" - "resolved" "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz" - "version" "5.0.1" +configstore@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz" + integrity sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA== dependencies: - "dot-prop" "^5.2.0" - "graceful-fs" "^4.1.2" - "make-dir" "^3.0.0" - "unique-string" "^2.0.0" - "write-file-atomic" "^3.0.0" - "xdg-basedir" "^4.0.0" + dot-prop "^5.2.0" + graceful-fs "^4.1.2" + make-dir "^3.0.0" + unique-string "^2.0.0" + write-file-atomic "^3.0.0" + xdg-basedir "^4.0.0" -"confusing-browser-globals@^1.0.11", "confusing-browser-globals@^1.0.7", "confusing-browser-globals@^1.0.9": - "integrity" "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==" - "resolved" "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz" - "version" "1.0.11" +confusing-browser-globals@^1.0.11, confusing-browser-globals@^1.0.7, confusing-browser-globals@^1.0.9: + version "1.0.11" + resolved "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz" + integrity sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA== -"connect-history-api-fallback@^2.0.0": - "integrity" "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==" - "resolved" "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz" - "version" "2.0.0" +connect-history-api-fallback@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz" + integrity sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA== -"console-browserify@^1.1.0": - "integrity" "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==" - "resolved" "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz" - "version" "1.2.0" +console-browserify@^1.1.0: + version "1.2.0" + resolved "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz" + integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== -"console-control-strings@^1.0.0", "console-control-strings@^1.1.0": - "integrity" "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==" - "resolved" "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz" - "version" "1.1.0" +console-control-strings@^1.0.0, console-control-strings@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz" + integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ== "consolidated-events@^1.1.1 || ^2.0.0": - "integrity" "sha512-2/uRVMdRypf5z/TW/ncD/66l75P5hH2vM/GR8Jf8HLc2xnfJtmina6F6du8+v4Z2vTrMo7jC+W1tmEEuuELgkQ==" - "resolved" "https://registry.npmjs.org/consolidated-events/-/consolidated-events-2.0.2.tgz" - "version" "2.0.2" + version "2.0.2" + resolved "https://registry.npmjs.org/consolidated-events/-/consolidated-events-2.0.2.tgz" + integrity sha512-2/uRVMdRypf5z/TW/ncD/66l75P5hH2vM/GR8Jf8HLc2xnfJtmina6F6du8+v4Z2vTrMo7jC+W1tmEEuuELgkQ== -"constants-browserify@^1.0.0": - "integrity" "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==" - "resolved" "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz" - "version" "1.0.0" +constants-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz" + integrity sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ== -"content-disposition@0.5.4": - "integrity" "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==" - "resolved" "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz" - "version" "0.5.4" +content-disposition@0.5.4: + version "0.5.4" + resolved "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz" + integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== dependencies: - "safe-buffer" "5.2.1" + safe-buffer "5.2.1" -"content-type@^1.0.4", "content-type@~1.0.4": - "integrity" "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" - "resolved" "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz" - "version" "1.0.4" +content-type@^1.0.4, content-type@~1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz" + integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== -"convert-source-map@^0.3.3": - "integrity" "sha512-+4nRk0k3oEpwUB7/CalD7xE2z4VmtEnnq0GO2IPTkrooTrAhEsWvuLF5iWP1dXrwluki/azwXV1ve7gtYuPldg==" - "resolved" "https://registry.npmjs.org/convert-source-map/-/convert-source-map-0.3.5.tgz" - "version" "0.3.5" - -"convert-source-map@^1.4.0", "convert-source-map@^1.5.0", "convert-source-map@^1.5.1", "convert-source-map@^1.6.0", "convert-source-map@^1.7.0": - "integrity" "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" - "resolved" "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz" - "version" "1.9.0" - -"convert-source-map@1.7.0": - "integrity" "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==" - "resolved" "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz" - "version" "1.7.0" +convert-source-map@1.7.0: + version "1.7.0" + resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz" + integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== dependencies: - "safe-buffer" "~5.1.1" + safe-buffer "~5.1.1" -"cookie-signature@1.0.6": - "integrity" "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" - "resolved" "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" - "version" "1.0.6" +convert-source-map@^0.3.3: + version "0.3.5" + resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-0.3.5.tgz" + integrity sha512-+4nRk0k3oEpwUB7/CalD7xE2z4VmtEnnq0GO2IPTkrooTrAhEsWvuLF5iWP1dXrwluki/azwXV1ve7gtYuPldg== -"cookie@^0.4.0": - "integrity" "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==" - "resolved" "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz" - "version" "0.4.2" +convert-source-map@^1.4.0, convert-source-map@^1.5.0, convert-source-map@^1.5.1, convert-source-map@^1.6.0, convert-source-map@^1.7.0: + version "1.9.0" + resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz" + integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== -"cookie@0.5.0": - "integrity" "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==" - "resolved" "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz" - "version" "0.5.0" +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" + integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== -"copy-anything@^2.0.1": - "integrity" "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==" - "resolved" "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz" - "version" "2.0.6" +cookie@0.5.0: + version "0.5.0" + resolved "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz" + integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== + +cookie@^0.4.0: + version "0.4.2" + resolved "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz" + integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== + +copy-anything@^2.0.1: + version "2.0.6" + resolved "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz" + integrity sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw== dependencies: - "is-what" "^3.14.1" + is-what "^3.14.1" -"copy-concurrently@^1.0.0": - "integrity" "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==" - "resolved" "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz" - "version" "1.0.5" +copy-concurrently@^1.0.0: + version "1.0.5" + resolved "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz" + integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A== dependencies: - "aproba" "^1.1.1" - "fs-write-stream-atomic" "^1.0.8" - "iferr" "^0.1.5" - "mkdirp" "^0.5.1" - "rimraf" "^2.5.4" - "run-queue" "^1.0.0" + aproba "^1.1.1" + fs-write-stream-atomic "^1.0.8" + iferr "^0.1.5" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^1.0.0" -"copy-descriptor@^0.1.0": - "integrity" "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==" - "resolved" "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz" - "version" "0.1.1" +copy-descriptor@^0.1.0: + version "0.1.1" + resolved "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz" + integrity sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw== -"copy-to-clipboard@^3.2.0": - "integrity" "sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==" - "resolved" "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz" - "version" "3.3.3" +copy-to-clipboard@^3.2.0: + version "3.3.3" + resolved "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz" + integrity sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA== dependencies: - "toggle-selection" "^1.0.6" + toggle-selection "^1.0.6" -"core-js-compat@^3.25.1", "core-js-compat@^3.6.2", "core-js-compat@^3.8.1": - "integrity" "sha512-622/KzTudvXCDLRw70iHW4KKs1aGpcRcowGWyYJr2DEBfRrd6hNJybxSWJFuZYD4ma86xhrwDDHxmDaIq4EA8A==" - "resolved" "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.26.1.tgz" - "version" "3.26.1" +core-js-compat@^3.25.1, core-js-compat@^3.6.2, core-js-compat@^3.8.1: + version "3.26.1" + resolved "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.26.1.tgz" + integrity sha512-622/KzTudvXCDLRw70iHW4KKs1aGpcRcowGWyYJr2DEBfRrd6hNJybxSWJFuZYD4ma86xhrwDDHxmDaIq4EA8A== dependencies: - "browserslist" "^4.21.4" + browserslist "^4.21.4" -"core-js-pure@^3.23.3", "core-js-pure@^3.25.1": - "integrity" "sha512-VVXcDpp/xJ21KdULRq/lXdLzQAtX7+37LzpyfFM973il0tWSsDEoyzG38G14AjTpK9VTfiNM9jnFauq/CpaWGQ==" - "resolved" "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.26.1.tgz" - "version" "3.26.1" +core-js-pure@^3.23.3, core-js-pure@^3.25.1: + version "3.26.1" + resolved "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.26.1.tgz" + integrity sha512-VVXcDpp/xJ21KdULRq/lXdLzQAtX7+37LzpyfFM973il0tWSsDEoyzG38G14AjTpK9VTfiNM9jnFauq/CpaWGQ== -"core-js@^2.4.0", "core-js@^2.5.0", "core-js@^2.6.12": - "integrity" "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==" - "resolved" "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz" - "version" "2.6.12" +core-js@^2.4.0, core-js@^2.5.0, core-js@^2.6.12: + version "2.6.12" + resolved "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz" + integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== -"core-js@^3.0.4": - "integrity" "sha512-9ashVQskuh5AZEZ1JdQWp1GqSoC1e1G87MzRqg2gIfVAQ7Qn9K+uFj8EcniUFA4P2NLZfV+TOlX1SzoKfo+s7w==" - "resolved" "https://registry.npmjs.org/core-js/-/core-js-3.27.2.tgz" - "version" "3.27.2" +core-js@^3.0.4, core-js@^3.6.5: + version "3.27.2" + resolved "https://registry.npmjs.org/core-js/-/core-js-3.27.2.tgz" + integrity sha512-9ashVQskuh5AZEZ1JdQWp1GqSoC1e1G87MzRqg2gIfVAQ7Qn9K+uFj8EcniUFA4P2NLZfV+TOlX1SzoKfo+s7w== -"core-js@^3.1.3": - "integrity" "sha512-21491RRQVzUn0GGM9Z1Jrpr6PNPxPi+Za8OM9q4tksTSnlbXXGKK1nXNg/QvwFYettXvSX6zWKCtHHfjN4puyA==" - "resolved" "https://registry.npmjs.org/core-js/-/core-js-3.26.1.tgz" - "version" "3.26.1" +core-js@^3.1.3, core-js@^3.19.2, core-js@^3.5.0, core-js@^3.6.4, core-js@^3.8.2, core-js@^3.8.3: + version "3.26.1" + resolved "https://registry.npmjs.org/core-js/-/core-js-3.26.1.tgz" + integrity sha512-21491RRQVzUn0GGM9Z1Jrpr6PNPxPi+Za8OM9q4tksTSnlbXXGKK1nXNg/QvwFYettXvSX6zWKCtHHfjN4puyA== -"core-js@^3.19.2": - "integrity" "sha512-21491RRQVzUn0GGM9Z1Jrpr6PNPxPi+Za8OM9q4tksTSnlbXXGKK1nXNg/QvwFYettXvSX6zWKCtHHfjN4puyA==" - "resolved" "https://registry.npmjs.org/core-js/-/core-js-3.26.1.tgz" - "version" "3.26.1" +core-util-is@1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" + integrity sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ== -"core-js@^3.5.0": - "integrity" "sha512-21491RRQVzUn0GGM9Z1Jrpr6PNPxPi+Za8OM9q4tksTSnlbXXGKK1nXNg/QvwFYettXvSX6zWKCtHHfjN4puyA==" - "resolved" "https://registry.npmjs.org/core-js/-/core-js-3.26.1.tgz" - "version" "3.26.1" +core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== -"core-js@^3.6.4": - "integrity" "sha512-21491RRQVzUn0GGM9Z1Jrpr6PNPxPi+Za8OM9q4tksTSnlbXXGKK1nXNg/QvwFYettXvSX6zWKCtHHfjN4puyA==" - "resolved" "https://registry.npmjs.org/core-js/-/core-js-3.26.1.tgz" - "version" "3.26.1" - -"core-js@^3.6.5": - "integrity" "sha512-9ashVQskuh5AZEZ1JdQWp1GqSoC1e1G87MzRqg2gIfVAQ7Qn9K+uFj8EcniUFA4P2NLZfV+TOlX1SzoKfo+s7w==" - "resolved" "https://registry.npmjs.org/core-js/-/core-js-3.27.2.tgz" - "version" "3.27.2" - -"core-js@^3.8.2": - "integrity" "sha512-21491RRQVzUn0GGM9Z1Jrpr6PNPxPi+Za8OM9q4tksTSnlbXXGKK1nXNg/QvwFYettXvSX6zWKCtHHfjN4puyA==" - "resolved" "https://registry.npmjs.org/core-js/-/core-js-3.26.1.tgz" - "version" "3.26.1" - -"core-js@^3.8.3": - "integrity" "sha512-21491RRQVzUn0GGM9Z1Jrpr6PNPxPi+Za8OM9q4tksTSnlbXXGKK1nXNg/QvwFYettXvSX6zWKCtHHfjN4puyA==" - "resolved" "https://registry.npmjs.org/core-js/-/core-js-3.26.1.tgz" - "version" "3.26.1" - -"core-util-is@~1.0.0": - "integrity" "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" - "resolved" "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz" - "version" "1.0.3" - -"core-util-is@1.0.2": - "integrity" "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" - "resolved" "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" - "version" "1.0.2" - -"cosmiconfig-typescript-loader@^1.0.0": - "integrity" "sha512-tRuMRhxN4m1Y8hP9SNYfz7jRwt8lZdWxdjg/ohg5esKmsndJIn4yT96oJVcf5x0eA11taXl+sIp+ielu529k6g==" - "resolved" "https://registry.npmjs.org/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-1.0.9.tgz" - "version" "1.0.9" +cosmiconfig-typescript-loader@^1.0.0: + version "1.0.9" + resolved "https://registry.npmjs.org/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-1.0.9.tgz" + integrity sha512-tRuMRhxN4m1Y8hP9SNYfz7jRwt8lZdWxdjg/ohg5esKmsndJIn4yT96oJVcf5x0eA11taXl+sIp+ielu529k6g== dependencies: - "cosmiconfig" "^7" - "ts-node" "^10.7.0" + cosmiconfig "^7" + ts-node "^10.7.0" -"cosmiconfig@^5.0.0": - "integrity" "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==" - "resolved" "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz" - "version" "5.2.1" +cosmiconfig@^5.0.0, cosmiconfig@^5.2.1: + version "5.2.1" + resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz" + integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== dependencies: - "import-fresh" "^2.0.0" - "is-directory" "^0.3.1" - "js-yaml" "^3.13.1" - "parse-json" "^4.0.0" + import-fresh "^2.0.0" + is-directory "^0.3.1" + js-yaml "^3.13.1" + parse-json "^4.0.0" -"cosmiconfig@^5.2.1": - "integrity" "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==" - "resolved" "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz" - "version" "5.2.1" - dependencies: - "import-fresh" "^2.0.0" - "is-directory" "^0.3.1" - "js-yaml" "^3.13.1" - "parse-json" "^4.0.0" - -"cosmiconfig@^6.0.0": - "integrity" "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==" - "resolved" "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz" - "version" "6.0.0" +cosmiconfig@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz" + integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg== dependencies: "@types/parse-json" "^4.0.0" - "import-fresh" "^3.1.0" - "parse-json" "^5.0.0" - "path-type" "^4.0.0" - "yaml" "^1.7.2" + import-fresh "^3.1.0" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.7.2" -"cosmiconfig@^7", "cosmiconfig@^7.0.0", "cosmiconfig@^7.0.1": - "integrity" "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==" - "resolved" "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz" - "version" "7.1.0" +cosmiconfig@^7, cosmiconfig@^7.0.0, cosmiconfig@^7.0.1: + version "7.1.0" + resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz" + integrity sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA== dependencies: "@types/parse-json" "^4.0.0" - "import-fresh" "^3.2.1" - "parse-json" "^5.0.0" - "path-type" "^4.0.0" - "yaml" "^1.10.0" + import-fresh "^3.2.1" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.10.0" -"cp-file@^7.0.0": - "integrity" "sha512-0Cbj7gyvFVApzpK/uhCtQ/9kE9UnYpxMzaq5nQQC/Dh4iaj5fxp7iEFIullrYwzj8nf0qnsI1Qsx34hAeAebvw==" - "resolved" "https://registry.npmjs.org/cp-file/-/cp-file-7.0.0.tgz" - "version" "7.0.0" +cp-file@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/cp-file/-/cp-file-7.0.0.tgz" + integrity sha512-0Cbj7gyvFVApzpK/uhCtQ/9kE9UnYpxMzaq5nQQC/Dh4iaj5fxp7iEFIullrYwzj8nf0qnsI1Qsx34hAeAebvw== dependencies: - "graceful-fs" "^4.1.2" - "make-dir" "^3.0.0" - "nested-error-stacks" "^2.0.0" - "p-event" "^4.1.0" + graceful-fs "^4.1.2" + make-dir "^3.0.0" + nested-error-stacks "^2.0.0" + p-event "^4.1.0" -"cpy@^8.1.2": - "integrity" "sha512-dmC4mUesv0OYH2kNFEidtf/skUwv4zePmGeepjyyJ0qTo5+8KhA1o99oIAwVVLzQMAeDJml74d6wPPKb6EZUTg==" - "resolved" "https://registry.npmjs.org/cpy/-/cpy-8.1.2.tgz" - "version" "8.1.2" +cpy@^8.1.2: + version "8.1.2" + resolved "https://registry.npmjs.org/cpy/-/cpy-8.1.2.tgz" + integrity sha512-dmC4mUesv0OYH2kNFEidtf/skUwv4zePmGeepjyyJ0qTo5+8KhA1o99oIAwVVLzQMAeDJml74d6wPPKb6EZUTg== dependencies: - "arrify" "^2.0.1" - "cp-file" "^7.0.0" - "globby" "^9.2.0" - "has-glob" "^1.0.0" - "junk" "^3.1.0" - "nested-error-stacks" "^2.1.0" - "p-all" "^2.1.0" - "p-filter" "^2.1.0" - "p-map" "^3.0.0" + arrify "^2.0.1" + cp-file "^7.0.0" + globby "^9.2.0" + has-glob "^1.0.0" + junk "^3.1.0" + nested-error-stacks "^2.1.0" + p-all "^2.1.0" + p-filter "^2.1.0" + p-map "^3.0.0" -"craco-alias@^2.1.1": - "integrity" "sha512-i+N5JGpH61QChhfMtZsuy/5btncn9EczOq1XjaPPzBbzmQISAh0JtQhwMzIqefQfSNmRNgh4vePRJwfzroyaSA==" - "resolved" "https://registry.npmjs.org/craco-alias/-/craco-alias-2.3.1.tgz" - "version" "2.3.1" +craco-alias@^2.1.1: + version "2.3.1" + resolved "https://registry.npmjs.org/craco-alias/-/craco-alias-2.3.1.tgz" + integrity sha512-i+N5JGpH61QChhfMtZsuy/5btncn9EczOq1XjaPPzBbzmQISAh0JtQhwMzIqefQfSNmRNgh4vePRJwfzroyaSA== -"craco-less@^2.0.0": - "integrity" "sha512-980mQaZVrC4ZsvOwvud6/AgvW7fLY3mW5m5+gR4sw4krxszgHb+qoRyOjqsYPD0F4oUmQoSiZSrlYY/bFGD9kQ==" - "resolved" "https://registry.npmjs.org/craco-less/-/craco-less-2.0.0.tgz" - "version" "2.0.0" +craco-less@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/craco-less/-/craco-less-2.0.0.tgz" + integrity sha512-980mQaZVrC4ZsvOwvud6/AgvW7fLY3mW5m5+gR4sw4krxszgHb+qoRyOjqsYPD0F4oUmQoSiZSrlYY/bFGD9kQ== dependencies: - "less" "^4.1.1" - "less-loader" "^7.3.0" + less "^4.1.1" + less-loader "^7.3.0" -"create-ecdh@^4.0.0": - "integrity" "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==" - "resolved" "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz" - "version" "4.0.4" +create-ecdh@^4.0.0: + version "4.0.4" + resolved "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz" + integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== dependencies: - "bn.js" "^4.1.0" - "elliptic" "^6.5.3" + bn.js "^4.1.0" + elliptic "^6.5.3" -"create-hash@^1.1.0", "create-hash@^1.1.2", "create-hash@^1.2.0": - "integrity" "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==" - "resolved" "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz" - "version" "1.2.0" +create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz" + integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== dependencies: - "cipher-base" "^1.0.1" - "inherits" "^2.0.1" - "md5.js" "^1.3.4" - "ripemd160" "^2.0.1" - "sha.js" "^2.4.0" + cipher-base "^1.0.1" + inherits "^2.0.1" + md5.js "^1.3.4" + ripemd160 "^2.0.1" + sha.js "^2.4.0" -"create-hmac@^1.1.0", "create-hmac@^1.1.4", "create-hmac@^1.1.7": - "integrity" "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==" - "resolved" "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz" - "version" "1.1.7" +create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: + version "1.1.7" + resolved "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz" + integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== dependencies: - "cipher-base" "^1.0.3" - "create-hash" "^1.1.0" - "inherits" "^2.0.1" - "ripemd160" "^2.0.0" - "safe-buffer" "^5.0.1" - "sha.js" "^2.4.8" + cipher-base "^1.0.3" + create-hash "^1.1.0" + inherits "^2.0.1" + ripemd160 "^2.0.0" + safe-buffer "^5.0.1" + sha.js "^2.4.8" -"create-require@^1.1.0": - "integrity" "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==" - "resolved" "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz" - "version" "1.1.1" +create-require@^1.1.0: + version "1.1.1" + resolved "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz" + integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== -"cross-fetch@^3.0.4", "cross-fetch@3.1.5": - "integrity" "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==" - "resolved" "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz" - "version" "3.1.5" +cross-fetch@3.1.5, cross-fetch@^3.0.4: + version "3.1.5" + resolved "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz" + integrity sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw== dependencies: - "node-fetch" "2.6.7" + node-fetch "2.6.7" -"cross-spawn@^6.0.0": - "integrity" "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==" - "resolved" "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz" - "version" "6.0.5" +cross-spawn@7.0.3, cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: + version "7.0.3" + resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== dependencies: - "nice-try" "^1.0.4" - "path-key" "^2.0.1" - "semver" "^5.5.0" - "shebang-command" "^1.2.0" - "which" "^1.2.9" + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" -"cross-spawn@^7.0.0", "cross-spawn@^7.0.2", "cross-spawn@^7.0.3", "cross-spawn@7.0.3": - "integrity" "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==" - "resolved" "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" - "version" "7.0.3" +cross-spawn@^6.0.0: + version "6.0.5" + resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz" + integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== dependencies: - "path-key" "^3.1.0" - "shebang-command" "^2.0.0" - "which" "^2.0.1" + nice-try "^1.0.4" + path-key "^2.0.1" + semver "^5.5.0" + shebang-command "^1.2.0" + which "^1.2.9" -"crypto-browserify@^3.11.0": - "integrity" "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==" - "resolved" "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz" - "version" "3.12.0" +crypto-browserify@^3.11.0: + version "3.12.0" + resolved "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz" + integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== dependencies: - "browserify-cipher" "^1.0.0" - "browserify-sign" "^4.0.0" - "create-ecdh" "^4.0.0" - "create-hash" "^1.1.0" - "create-hmac" "^1.1.0" - "diffie-hellman" "^5.0.0" - "inherits" "^2.0.1" - "pbkdf2" "^3.0.3" - "public-encrypt" "^4.0.0" - "randombytes" "^2.0.0" - "randomfill" "^1.0.3" + browserify-cipher "^1.0.0" + browserify-sign "^4.0.0" + create-ecdh "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.0" + diffie-hellman "^5.0.0" + inherits "^2.0.1" + pbkdf2 "^3.0.3" + public-encrypt "^4.0.0" + randombytes "^2.0.0" + randomfill "^1.0.3" -"crypto-js@^4.0.0": - "integrity" "sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==" - "resolved" "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz" - "version" "4.1.1" +crypto-js@^4.0.0: + version "4.1.1" + resolved "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz" + integrity sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw== -"crypto-random-string@^2.0.0": - "integrity" "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==" - "resolved" "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz" - "version" "2.0.0" +crypto-random-string@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz" + integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== -"css-blank-pseudo@^0.1.4": - "integrity" "sha512-LHz35Hr83dnFeipc7oqFDmsjHdljj3TQtxGGiNWSOsTLIAubSm4TEz8qCaKFpk7idaQ1GfWscF4E6mgpBysA1w==" - "resolved" "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz" - "version" "0.1.4" +css-blank-pseudo@^0.1.4: + version "0.1.4" + resolved "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz" + integrity sha512-LHz35Hr83dnFeipc7oqFDmsjHdljj3TQtxGGiNWSOsTLIAubSm4TEz8qCaKFpk7idaQ1GfWscF4E6mgpBysA1w== dependencies: - "postcss" "^7.0.5" + postcss "^7.0.5" -"css-blank-pseudo@^3.0.3": - "integrity" "sha512-VS90XWtsHGqoM0t4KpH053c4ehxZ2E6HtGI7x68YFV0pTo/QmkV/YFA+NnlvK8guxZVNWGQhVNJGC39Q8XF4OQ==" - "resolved" "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-3.0.3.tgz" - "version" "3.0.3" +css-blank-pseudo@^3.0.3: + version "3.0.3" + resolved "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-3.0.3.tgz" + integrity sha512-VS90XWtsHGqoM0t4KpH053c4ehxZ2E6HtGI7x68YFV0pTo/QmkV/YFA+NnlvK8guxZVNWGQhVNJGC39Q8XF4OQ== dependencies: - "postcss-selector-parser" "^6.0.9" + postcss-selector-parser "^6.0.9" -"css-box-model@^1.1.1": - "integrity" "sha512-a7Vr4Q/kd/aw96bnJG332W9V9LkJO69JRcaCYDUqjp6/z0w6VcZjgAcTbgFxEPfBgdnAwlh3iwu+hLopa+flJw==" - "resolved" "https://registry.npmjs.org/css-box-model/-/css-box-model-1.2.1.tgz" - "version" "1.2.1" +css-box-model@^1.1.1: + version "1.2.1" + resolved "https://registry.npmjs.org/css-box-model/-/css-box-model-1.2.1.tgz" + integrity sha512-a7Vr4Q/kd/aw96bnJG332W9V9LkJO69JRcaCYDUqjp6/z0w6VcZjgAcTbgFxEPfBgdnAwlh3iwu+hLopa+flJw== dependencies: - "tiny-invariant" "^1.0.6" + tiny-invariant "^1.0.6" -"css-color-names@^0.0.4", "css-color-names@0.0.4": - "integrity" "sha512-zj5D7X1U2h2zsXOAM8EyUREBnnts6H+Jm+d1M2DbiQQcUtnqgQsMrdo8JW9R80YFUmIdBZeMu5wvYM7hcgWP/Q==" - "resolved" "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz" - "version" "0.0.4" +css-color-names@0.0.4, css-color-names@^0.0.4: + version "0.0.4" + resolved "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz" + integrity sha512-zj5D7X1U2h2zsXOAM8EyUREBnnts6H+Jm+d1M2DbiQQcUtnqgQsMrdo8JW9R80YFUmIdBZeMu5wvYM7hcgWP/Q== -"css-declaration-sorter@^4.0.1": - "integrity" "sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==" - "resolved" "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz" - "version" "4.0.1" +css-declaration-sorter@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz" + integrity sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA== dependencies: - "postcss" "^7.0.1" - "timsort" "^0.3.0" + postcss "^7.0.1" + timsort "^0.3.0" -"css-declaration-sorter@^6.3.1": - "integrity" "sha512-fBffmak0bPAnyqc/HO8C3n2sHrp9wcqQz6ES9koRF2/mLOVAx9zIQ3Y7R29sYCteTPqMCwns4WYQoCX91Xl3+w==" - "resolved" "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.3.1.tgz" - "version" "6.3.1" +css-declaration-sorter@^6.3.1: + version "6.3.1" + resolved "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.3.1.tgz" + integrity sha512-fBffmak0bPAnyqc/HO8C3n2sHrp9wcqQz6ES9koRF2/mLOVAx9zIQ3Y7R29sYCteTPqMCwns4WYQoCX91Xl3+w== -"css-has-pseudo@^0.10.0": - "integrity" "sha512-Z8hnfsZu4o/kt+AuFzeGpLVhFOGO9mluyHBaA2bA8aCGTwah5sT3WV/fTHH8UNZUytOIImuGPrl/prlb4oX4qQ==" - "resolved" "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-0.10.0.tgz" - "version" "0.10.0" +css-has-pseudo@^0.10.0: + version "0.10.0" + resolved "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-0.10.0.tgz" + integrity sha512-Z8hnfsZu4o/kt+AuFzeGpLVhFOGO9mluyHBaA2bA8aCGTwah5sT3WV/fTHH8UNZUytOIImuGPrl/prlb4oX4qQ== dependencies: - "postcss" "^7.0.6" - "postcss-selector-parser" "^5.0.0-rc.4" + postcss "^7.0.6" + postcss-selector-parser "^5.0.0-rc.4" -"css-has-pseudo@^3.0.4": - "integrity" "sha512-Vse0xpR1K9MNlp2j5w1pgWIJtm1a8qS0JwS9goFYcImjlHEmywP9VUF05aGBXzGpDJF86QXk4L0ypBmwPhGArw==" - "resolved" "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-3.0.4.tgz" - "version" "3.0.4" +css-has-pseudo@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-3.0.4.tgz" + integrity sha512-Vse0xpR1K9MNlp2j5w1pgWIJtm1a8qS0JwS9goFYcImjlHEmywP9VUF05aGBXzGpDJF86QXk4L0ypBmwPhGArw== dependencies: - "postcss-selector-parser" "^6.0.9" + postcss-selector-parser "^6.0.9" -"css-loader@^3.6.0", "css-loader@3.6.0": - "integrity" "sha512-M5lSukoWi1If8dhQAUCvj4H8vUt3vOnwbQBH9DdTm/s4Ym2B/3dPMtYZeJmq7Q3S3Pa+I94DcZ7pc9bP14cWIQ==" - "resolved" "https://registry.npmjs.org/css-loader/-/css-loader-3.6.0.tgz" - "version" "3.6.0" +css-loader@3.6.0, css-loader@^3.6.0: + version "3.6.0" + resolved "https://registry.npmjs.org/css-loader/-/css-loader-3.6.0.tgz" + integrity sha512-M5lSukoWi1If8dhQAUCvj4H8vUt3vOnwbQBH9DdTm/s4Ym2B/3dPMtYZeJmq7Q3S3Pa+I94DcZ7pc9bP14cWIQ== dependencies: - "camelcase" "^5.3.1" - "cssesc" "^3.0.0" - "icss-utils" "^4.1.1" - "loader-utils" "^1.2.3" - "normalize-path" "^3.0.0" - "postcss" "^7.0.32" - "postcss-modules-extract-imports" "^2.0.0" - "postcss-modules-local-by-default" "^3.0.2" - "postcss-modules-scope" "^2.2.0" - "postcss-modules-values" "^3.0.0" - "postcss-value-parser" "^4.1.0" - "schema-utils" "^2.7.0" - "semver" "^6.3.0" + camelcase "^5.3.1" + cssesc "^3.0.0" + icss-utils "^4.1.1" + loader-utils "^1.2.3" + normalize-path "^3.0.0" + postcss "^7.0.32" + postcss-modules-extract-imports "^2.0.0" + postcss-modules-local-by-default "^3.0.2" + postcss-modules-scope "^2.2.0" + postcss-modules-values "^3.0.0" + postcss-value-parser "^4.1.0" + schema-utils "^2.7.0" + semver "^6.3.0" -"css-loader@^5.0.1": - "integrity" "sha512-Q7mOvpBNBG7YrVGMxRxcBJZFL75o+cH2abNASdibkj/fffYD8qWbInZrD0S9ccI6vZclF3DsHE7njGlLtaHbhg==" - "resolved" "https://registry.npmjs.org/css-loader/-/css-loader-5.2.7.tgz" - "version" "5.2.7" +css-loader@^5.0.1: + version "5.2.7" + resolved "https://registry.npmjs.org/css-loader/-/css-loader-5.2.7.tgz" + integrity sha512-Q7mOvpBNBG7YrVGMxRxcBJZFL75o+cH2abNASdibkj/fffYD8qWbInZrD0S9ccI6vZclF3DsHE7njGlLtaHbhg== dependencies: - "icss-utils" "^5.1.0" - "loader-utils" "^2.0.0" - "postcss" "^8.2.15" - "postcss-modules-extract-imports" "^3.0.0" - "postcss-modules-local-by-default" "^4.0.0" - "postcss-modules-scope" "^3.0.0" - "postcss-modules-values" "^4.0.0" - "postcss-value-parser" "^4.1.0" - "schema-utils" "^3.0.0" - "semver" "^7.3.5" + icss-utils "^5.1.0" + loader-utils "^2.0.0" + postcss "^8.2.15" + postcss-modules-extract-imports "^3.0.0" + postcss-modules-local-by-default "^4.0.0" + postcss-modules-scope "^3.0.0" + postcss-modules-values "^4.0.0" + postcss-value-parser "^4.1.0" + schema-utils "^3.0.0" + semver "^7.3.5" -"css-loader@^6.5.1": - "integrity" "sha512-oqGbbVcBJkm8QwmnNzrFrWTnudnRZC+1eXikLJl0n4ljcfotgRifpg2a1lKy8jTrc4/d9A/ap1GFq1jDKG7J+Q==" - "resolved" "https://registry.npmjs.org/css-loader/-/css-loader-6.7.2.tgz" - "version" "6.7.2" +css-loader@^6.5.1: + version "6.7.2" + resolved "https://registry.npmjs.org/css-loader/-/css-loader-6.7.2.tgz" + integrity sha512-oqGbbVcBJkm8QwmnNzrFrWTnudnRZC+1eXikLJl0n4ljcfotgRifpg2a1lKy8jTrc4/d9A/ap1GFq1jDKG7J+Q== dependencies: - "icss-utils" "^5.1.0" - "postcss" "^8.4.18" - "postcss-modules-extract-imports" "^3.0.0" - "postcss-modules-local-by-default" "^4.0.0" - "postcss-modules-scope" "^3.0.0" - "postcss-modules-values" "^4.0.0" - "postcss-value-parser" "^4.2.0" - "semver" "^7.3.8" + icss-utils "^5.1.0" + postcss "^8.4.18" + postcss-modules-extract-imports "^3.0.0" + postcss-modules-local-by-default "^4.0.0" + postcss-modules-scope "^3.0.0" + postcss-modules-values "^4.0.0" + postcss-value-parser "^4.2.0" + semver "^7.3.8" -"css-minimizer-webpack-plugin@^3.2.0": - "integrity" "sha512-1u6D71zeIfgngN2XNRJefc/hY7Ybsxd74Jm4qngIXyUEk7fss3VUzuHxLAq/R8NAba4QU9OUSaMZlbpRc7bM4Q==" - "resolved" "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.4.1.tgz" - "version" "3.4.1" +css-minimizer-webpack-plugin@^3.2.0: + version "3.4.1" + resolved "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.4.1.tgz" + integrity sha512-1u6D71zeIfgngN2XNRJefc/hY7Ybsxd74Jm4qngIXyUEk7fss3VUzuHxLAq/R8NAba4QU9OUSaMZlbpRc7bM4Q== dependencies: - "cssnano" "^5.0.6" - "jest-worker" "^27.0.2" - "postcss" "^8.3.5" - "schema-utils" "^4.0.0" - "serialize-javascript" "^6.0.0" - "source-map" "^0.6.1" + cssnano "^5.0.6" + jest-worker "^27.0.2" + postcss "^8.3.5" + schema-utils "^4.0.0" + serialize-javascript "^6.0.0" + source-map "^0.6.1" -"css-prefers-color-scheme@^3.1.1": - "integrity" "sha512-MTu6+tMs9S3EUqzmqLXEcgNRbNkkD/TGFvowpeoWJn5Vfq7FMgsmRQs9X5NXAURiOBmOxm/lLjsDNXDE6k9bhg==" - "resolved" "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-3.1.1.tgz" - "version" "3.1.1" +css-prefers-color-scheme@^3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-3.1.1.tgz" + integrity sha512-MTu6+tMs9S3EUqzmqLXEcgNRbNkkD/TGFvowpeoWJn5Vfq7FMgsmRQs9X5NXAURiOBmOxm/lLjsDNXDE6k9bhg== dependencies: - "postcss" "^7.0.5" + postcss "^7.0.5" -"css-prefers-color-scheme@^6.0.3": - "integrity" "sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA==" - "resolved" "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-6.0.3.tgz" - "version" "6.0.3" +css-prefers-color-scheme@^6.0.3: + version "6.0.3" + resolved "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-6.0.3.tgz" + integrity sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA== -"css-select-base-adapter@^0.1.1": - "integrity" "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==" - "resolved" "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz" - "version" "0.1.1" +css-select-base-adapter@^0.1.1: + version "0.1.1" + resolved "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz" + integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w== -"css-select@^2.0.0": - "integrity" "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==" - "resolved" "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz" - "version" "2.1.0" +css-select@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz" + integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ== dependencies: - "boolbase" "^1.0.0" - "css-what" "^3.2.1" - "domutils" "^1.7.0" - "nth-check" "^1.0.2" + boolbase "^1.0.0" + css-what "^3.2.1" + domutils "^1.7.0" + nth-check "^1.0.2" -"css-select@^4.1.3": - "integrity" "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==" - "resolved" "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz" - "version" "4.3.0" +css-select@^4.1.3: + version "4.3.0" + resolved "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz" + integrity sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ== dependencies: - "boolbase" "^1.0.0" - "css-what" "^6.0.1" - "domhandler" "^4.3.1" - "domutils" "^2.8.0" - "nth-check" "^2.0.1" + boolbase "^1.0.0" + css-what "^6.0.1" + domhandler "^4.3.1" + domutils "^2.8.0" + nth-check "^2.0.1" -"css-select@^5.1.0": - "integrity" "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==" - "resolved" "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz" - "version" "5.1.0" +css-select@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz" + integrity sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg== dependencies: - "boolbase" "^1.0.0" - "css-what" "^6.1.0" - "domhandler" "^5.0.2" - "domutils" "^3.0.1" - "nth-check" "^2.0.1" + boolbase "^1.0.0" + css-what "^6.1.0" + domhandler "^5.0.2" + domutils "^3.0.1" + nth-check "^2.0.1" -"css-tree@^1.1.2": - "integrity" "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==" - "resolved" "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz" - "version" "1.1.3" +css-tree@1.0.0-alpha.37: + version "1.0.0-alpha.37" + resolved "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz" + integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg== dependencies: - "mdn-data" "2.0.14" - "source-map" "^0.6.1" + mdn-data "2.0.4" + source-map "^0.6.1" -"css-tree@^1.1.3": - "integrity" "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==" - "resolved" "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz" - "version" "1.1.3" +css-tree@^1.1.2, css-tree@^1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz" + integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== dependencies: - "mdn-data" "2.0.14" - "source-map" "^0.6.1" + mdn-data "2.0.14" + source-map "^0.6.1" -"css-tree@1.0.0-alpha.37": - "integrity" "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==" - "resolved" "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz" - "version" "1.0.0-alpha.37" - dependencies: - "mdn-data" "2.0.4" - "source-map" "^0.6.1" - -"css-vendor@^2.0.8": - "integrity" "sha512-x9Aq0XTInxrkuFeHKbYC7zWY8ai7qJ04Kxd9MnvbC1uO5DagxoHQjm4JvG+vCdXOoFtCjbL2XSZfxmoYa9uQVQ==" - "resolved" "https://registry.npmjs.org/css-vendor/-/css-vendor-2.0.8.tgz" - "version" "2.0.8" +css-vendor@^2.0.8: + version "2.0.8" + resolved "https://registry.npmjs.org/css-vendor/-/css-vendor-2.0.8.tgz" + integrity sha512-x9Aq0XTInxrkuFeHKbYC7zWY8ai7qJ04Kxd9MnvbC1uO5DagxoHQjm4JvG+vCdXOoFtCjbL2XSZfxmoYa9uQVQ== dependencies: "@babel/runtime" "^7.8.3" - "is-in-browser" "^1.0.2" + is-in-browser "^1.0.2" -"css-what@^3.2.1": - "integrity" "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==" - "resolved" "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz" - "version" "3.4.2" +css-what@^3.2.1: + version "3.4.2" + resolved "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz" + integrity sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ== -"css-what@^6.0.1": - "integrity" "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==" - "resolved" "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz" - "version" "6.1.0" +css-what@^6.0.1, css-what@^6.1.0: + version "6.1.0" + resolved "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz" + integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== -"css-what@^6.1.0": - "integrity" "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==" - "resolved" "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz" - "version" "6.1.0" +css.escape@^1.5.1: + version "1.5.1" + resolved "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz" + integrity sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg== -"css.escape@^1.5.1": - "integrity" "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==" - "resolved" "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz" - "version" "1.5.1" - -"css@^2.0.0", "css@^2.2.3": - "integrity" "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==" - "resolved" "https://registry.npmjs.org/css/-/css-2.2.4.tgz" - "version" "2.2.4" +css@^2.0.0, css@^2.2.3: + version "2.2.4" + resolved "https://registry.npmjs.org/css/-/css-2.2.4.tgz" + integrity sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw== dependencies: - "inherits" "^2.0.3" - "source-map" "^0.6.1" - "source-map-resolve" "^0.5.2" - "urix" "^0.1.0" + inherits "^2.0.3" + source-map "^0.6.1" + source-map-resolve "^0.5.2" + urix "^0.1.0" -"cssdb@^4.4.0": - "integrity" "sha512-LsTAR1JPEM9TpGhl/0p3nQecC2LJ0kD8X5YARu1hk/9I1gril5vDtMZyNxcEpxxDj34YNck/ucjuoUd66K03oQ==" - "resolved" "https://registry.npmjs.org/cssdb/-/cssdb-4.4.0.tgz" - "version" "4.4.0" +cssdb@^4.4.0: + version "4.4.0" + resolved "https://registry.npmjs.org/cssdb/-/cssdb-4.4.0.tgz" + integrity sha512-LsTAR1JPEM9TpGhl/0p3nQecC2LJ0kD8X5YARu1hk/9I1gril5vDtMZyNxcEpxxDj34YNck/ucjuoUd66K03oQ== -"cssdb@^7.1.0": - "integrity" "sha512-Sd99PrFgx28ez4GHu8yoQIufc/70h9oYowDf4EjeIKi8mac9whxRjhM3IaMr6EllP6KKKWtJrMfN6C7T9tIWvQ==" - "resolved" "https://registry.npmjs.org/cssdb/-/cssdb-7.1.0.tgz" - "version" "7.1.0" +cssdb@^7.1.0: + version "7.1.0" + resolved "https://registry.npmjs.org/cssdb/-/cssdb-7.1.0.tgz" + integrity sha512-Sd99PrFgx28ez4GHu8yoQIufc/70h9oYowDf4EjeIKi8mac9whxRjhM3IaMr6EllP6KKKWtJrMfN6C7T9tIWvQ== -"cssesc@^2.0.0": - "integrity" "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==" - "resolved" "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz" - "version" "2.0.0" +cssesc@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz" + integrity sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg== -"cssesc@^3.0.0": - "integrity" "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==" - "resolved" "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz" - "version" "3.0.0" +cssesc@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz" + integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== -"cssnano-preset-default@^4.0.8": - "integrity" "sha512-LdAyHuq+VRyeVREFmuxUZR1TXjQm8QQU/ktoo/x7bz+SdOge1YKc5eMN6pRW7YWBmyq59CqYba1dJ5cUukEjLQ==" - "resolved" "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.8.tgz" - "version" "4.0.8" +cssnano-preset-default@^4.0.8: + version "4.0.8" + resolved "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.8.tgz" + integrity sha512-LdAyHuq+VRyeVREFmuxUZR1TXjQm8QQU/ktoo/x7bz+SdOge1YKc5eMN6pRW7YWBmyq59CqYba1dJ5cUukEjLQ== dependencies: - "css-declaration-sorter" "^4.0.1" - "cssnano-util-raw-cache" "^4.0.1" - "postcss" "^7.0.0" - "postcss-calc" "^7.0.1" - "postcss-colormin" "^4.0.3" - "postcss-convert-values" "^4.0.1" - "postcss-discard-comments" "^4.0.2" - "postcss-discard-duplicates" "^4.0.2" - "postcss-discard-empty" "^4.0.1" - "postcss-discard-overridden" "^4.0.1" - "postcss-merge-longhand" "^4.0.11" - "postcss-merge-rules" "^4.0.3" - "postcss-minify-font-values" "^4.0.2" - "postcss-minify-gradients" "^4.0.2" - "postcss-minify-params" "^4.0.2" - "postcss-minify-selectors" "^4.0.2" - "postcss-normalize-charset" "^4.0.1" - "postcss-normalize-display-values" "^4.0.2" - "postcss-normalize-positions" "^4.0.2" - "postcss-normalize-repeat-style" "^4.0.2" - "postcss-normalize-string" "^4.0.2" - "postcss-normalize-timing-functions" "^4.0.2" - "postcss-normalize-unicode" "^4.0.1" - "postcss-normalize-url" "^4.0.1" - "postcss-normalize-whitespace" "^4.0.2" - "postcss-ordered-values" "^4.1.2" - "postcss-reduce-initial" "^4.0.3" - "postcss-reduce-transforms" "^4.0.2" - "postcss-svgo" "^4.0.3" - "postcss-unique-selectors" "^4.0.1" + css-declaration-sorter "^4.0.1" + cssnano-util-raw-cache "^4.0.1" + postcss "^7.0.0" + postcss-calc "^7.0.1" + postcss-colormin "^4.0.3" + postcss-convert-values "^4.0.1" + postcss-discard-comments "^4.0.2" + postcss-discard-duplicates "^4.0.2" + postcss-discard-empty "^4.0.1" + postcss-discard-overridden "^4.0.1" + postcss-merge-longhand "^4.0.11" + postcss-merge-rules "^4.0.3" + postcss-minify-font-values "^4.0.2" + postcss-minify-gradients "^4.0.2" + postcss-minify-params "^4.0.2" + postcss-minify-selectors "^4.0.2" + postcss-normalize-charset "^4.0.1" + postcss-normalize-display-values "^4.0.2" + postcss-normalize-positions "^4.0.2" + postcss-normalize-repeat-style "^4.0.2" + postcss-normalize-string "^4.0.2" + postcss-normalize-timing-functions "^4.0.2" + postcss-normalize-unicode "^4.0.1" + postcss-normalize-url "^4.0.1" + postcss-normalize-whitespace "^4.0.2" + postcss-ordered-values "^4.1.2" + postcss-reduce-initial "^4.0.3" + postcss-reduce-transforms "^4.0.2" + postcss-svgo "^4.0.3" + postcss-unique-selectors "^4.0.1" -"cssnano-preset-default@^5.2.13": - "integrity" "sha512-PX7sQ4Pb+UtOWuz8A1d+Rbi+WimBIxJTRyBdgGp1J75VU0r/HFQeLnMYgHiCAp6AR4rqrc7Y4R+1Rjk3KJz6DQ==" - "resolved" "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.13.tgz" - "version" "5.2.13" +cssnano-preset-default@^5.2.13: + version "5.2.13" + resolved "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.13.tgz" + integrity sha512-PX7sQ4Pb+UtOWuz8A1d+Rbi+WimBIxJTRyBdgGp1J75VU0r/HFQeLnMYgHiCAp6AR4rqrc7Y4R+1Rjk3KJz6DQ== dependencies: - "css-declaration-sorter" "^6.3.1" - "cssnano-utils" "^3.1.0" - "postcss-calc" "^8.2.3" - "postcss-colormin" "^5.3.0" - "postcss-convert-values" "^5.1.3" - "postcss-discard-comments" "^5.1.2" - "postcss-discard-duplicates" "^5.1.0" - "postcss-discard-empty" "^5.1.1" - "postcss-discard-overridden" "^5.1.0" - "postcss-merge-longhand" "^5.1.7" - "postcss-merge-rules" "^5.1.3" - "postcss-minify-font-values" "^5.1.0" - "postcss-minify-gradients" "^5.1.1" - "postcss-minify-params" "^5.1.4" - "postcss-minify-selectors" "^5.2.1" - "postcss-normalize-charset" "^5.1.0" - "postcss-normalize-display-values" "^5.1.0" - "postcss-normalize-positions" "^5.1.1" - "postcss-normalize-repeat-style" "^5.1.1" - "postcss-normalize-string" "^5.1.0" - "postcss-normalize-timing-functions" "^5.1.0" - "postcss-normalize-unicode" "^5.1.1" - "postcss-normalize-url" "^5.1.0" - "postcss-normalize-whitespace" "^5.1.1" - "postcss-ordered-values" "^5.1.3" - "postcss-reduce-initial" "^5.1.1" - "postcss-reduce-transforms" "^5.1.0" - "postcss-svgo" "^5.1.0" - "postcss-unique-selectors" "^5.1.1" + css-declaration-sorter "^6.3.1" + cssnano-utils "^3.1.0" + postcss-calc "^8.2.3" + postcss-colormin "^5.3.0" + postcss-convert-values "^5.1.3" + postcss-discard-comments "^5.1.2" + postcss-discard-duplicates "^5.1.0" + postcss-discard-empty "^5.1.1" + postcss-discard-overridden "^5.1.0" + postcss-merge-longhand "^5.1.7" + postcss-merge-rules "^5.1.3" + postcss-minify-font-values "^5.1.0" + postcss-minify-gradients "^5.1.1" + postcss-minify-params "^5.1.4" + postcss-minify-selectors "^5.2.1" + postcss-normalize-charset "^5.1.0" + postcss-normalize-display-values "^5.1.0" + postcss-normalize-positions "^5.1.1" + postcss-normalize-repeat-style "^5.1.1" + postcss-normalize-string "^5.1.0" + postcss-normalize-timing-functions "^5.1.0" + postcss-normalize-unicode "^5.1.1" + postcss-normalize-url "^5.1.0" + postcss-normalize-whitespace "^5.1.1" + postcss-ordered-values "^5.1.3" + postcss-reduce-initial "^5.1.1" + postcss-reduce-transforms "^5.1.0" + postcss-svgo "^5.1.0" + postcss-unique-selectors "^5.1.1" -"cssnano-util-get-arguments@^4.0.0": - "integrity" "sha512-6RIcwmV3/cBMG8Aj5gucQRsJb4vv4I4rn6YjPbVWd5+Pn/fuG+YseGvXGk00XLkoZkaj31QOD7vMUpNPC4FIuw==" - "resolved" "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz" - "version" "4.0.0" +cssnano-util-get-arguments@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz" + integrity sha512-6RIcwmV3/cBMG8Aj5gucQRsJb4vv4I4rn6YjPbVWd5+Pn/fuG+YseGvXGk00XLkoZkaj31QOD7vMUpNPC4FIuw== -"cssnano-util-get-match@^4.0.0": - "integrity" "sha512-JPMZ1TSMRUPVIqEalIBNoBtAYbi8okvcFns4O0YIhcdGebeYZK7dMyHJiQ6GqNBA9kE0Hym4Aqym5rPdsV/4Cw==" - "resolved" "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz" - "version" "4.0.0" +cssnano-util-get-match@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz" + integrity sha512-JPMZ1TSMRUPVIqEalIBNoBtAYbi8okvcFns4O0YIhcdGebeYZK7dMyHJiQ6GqNBA9kE0Hym4Aqym5rPdsV/4Cw== -"cssnano-util-raw-cache@^4.0.1": - "integrity" "sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==" - "resolved" "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz" - "version" "4.0.1" +cssnano-util-raw-cache@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz" + integrity sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA== dependencies: - "postcss" "^7.0.0" + postcss "^7.0.0" -"cssnano-util-same-parent@^4.0.0": - "integrity" "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==" - "resolved" "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz" - "version" "4.0.1" +cssnano-util-same-parent@^4.0.0: + version "4.0.1" + resolved "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz" + integrity sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q== -"cssnano-utils@^3.1.0": - "integrity" "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==" - "resolved" "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz" - "version" "3.1.0" +cssnano-utils@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz" + integrity sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA== -"cssnano@^4.1.10": - "integrity" "sha512-6gZm2htn7xIPJOHY824ERgj8cNPgPxyCSnkXc4v7YvNW+TdVfzgngHcEhy/8D11kUWRUMbke+tC+AUcUsnMz2g==" - "resolved" "https://registry.npmjs.org/cssnano/-/cssnano-4.1.11.tgz" - "version" "4.1.11" +cssnano@^4.1.10: + version "4.1.11" + resolved "https://registry.npmjs.org/cssnano/-/cssnano-4.1.11.tgz" + integrity sha512-6gZm2htn7xIPJOHY824ERgj8cNPgPxyCSnkXc4v7YvNW+TdVfzgngHcEhy/8D11kUWRUMbke+tC+AUcUsnMz2g== dependencies: - "cosmiconfig" "^5.0.0" - "cssnano-preset-default" "^4.0.8" - "is-resolvable" "^1.0.0" - "postcss" "^7.0.0" + cosmiconfig "^5.0.0" + cssnano-preset-default "^4.0.8" + is-resolvable "^1.0.0" + postcss "^7.0.0" -"cssnano@^5.0.6": - "integrity" "sha512-Oou7ihiTocbKqi0J1bB+TRJIQX5RMR3JghA8hcWSw9mjBLQ5Y3RWqEDoYG3sRNlAbCIXpqMoZGbq5KDR3vdzgw==" - "resolved" "https://registry.npmjs.org/cssnano/-/cssnano-5.1.14.tgz" - "version" "5.1.14" +cssnano@^5.0.6: + version "5.1.14" + resolved "https://registry.npmjs.org/cssnano/-/cssnano-5.1.14.tgz" + integrity sha512-Oou7ihiTocbKqi0J1bB+TRJIQX5RMR3JghA8hcWSw9mjBLQ5Y3RWqEDoYG3sRNlAbCIXpqMoZGbq5KDR3vdzgw== dependencies: - "cssnano-preset-default" "^5.2.13" - "lilconfig" "^2.0.3" - "yaml" "^1.10.2" + cssnano-preset-default "^5.2.13" + lilconfig "^2.0.3" + yaml "^1.10.2" -"csso@^4.0.2", "csso@^4.2.0": - "integrity" "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==" - "resolved" "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz" - "version" "4.2.0" +csso@^4.0.2, csso@^4.2.0: + version "4.2.0" + resolved "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz" + integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA== dependencies: - "css-tree" "^1.1.2" + css-tree "^1.1.2" -"cssom@^0.3.4", "cssom@0.3.x": - "integrity" "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==" - "resolved" "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz" - "version" "0.3.8" +cssom@0.3.x, cssom@^0.3.4, cssom@~0.3.6: + version "0.3.8" + resolved "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz" + integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== -"cssom@^0.4.4": - "integrity" "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==" - "resolved" "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz" - "version" "0.4.4" +cssom@^0.4.4: + version "0.4.4" + resolved "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz" + integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw== -"cssom@~0.3.6": - "integrity" "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==" - "resolved" "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz" - "version" "0.3.8" - -"cssstyle@^1.1.1": - "integrity" "sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA==" - "resolved" "https://registry.npmjs.org/cssstyle/-/cssstyle-1.4.0.tgz" - "version" "1.4.0" +cssstyle@^1.1.1: + version "1.4.0" + resolved "https://registry.npmjs.org/cssstyle/-/cssstyle-1.4.0.tgz" + integrity sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA== dependencies: - "cssom" "0.3.x" + cssom "0.3.x" -"cssstyle@^2.3.0": - "integrity" "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==" - "resolved" "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz" - "version" "2.3.0" +cssstyle@^2.3.0: + version "2.3.0" + resolved "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz" + integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== dependencies: - "cssom" "~0.3.6" + cssom "~0.3.6" -"csstype@^2.5.2": - "integrity" "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==" - "resolved" "https://registry.npmjs.org/csstype/-/csstype-2.6.21.tgz" - "version" "2.6.21" +csstype@^2.5.2: + version "2.6.21" + resolved "https://registry.npmjs.org/csstype/-/csstype-2.6.21.tgz" + integrity sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w== -"csstype@^3.0.2": - "integrity" "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==" - "resolved" "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz" - "version" "3.1.1" +csstype@^3.0.2: + version "3.1.1" + resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz" + integrity sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw== -"currently-unhandled@^0.4.1": - "integrity" "sha512-/fITjgjGU50vjQ4FH6eUoYu+iUoUKIXws2hL15JJpIR+BbTxaXQsMuuyjtNh2WqsSBS5nsaZHFsFecyw5CCAng==" - "resolved" "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz" - "version" "0.4.1" +currently-unhandled@^0.4.1: + version "0.4.1" + resolved "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz" + integrity sha512-/fITjgjGU50vjQ4FH6eUoYu+iUoUKIXws2hL15JJpIR+BbTxaXQsMuuyjtNh2WqsSBS5nsaZHFsFecyw5CCAng== dependencies: - "array-find-index" "^1.0.1" + array-find-index "^1.0.1" -"custom-protocol-check@^1.3.0": - "integrity" "sha512-eMTyp8AKnE5eo+mKNqG3743eb5ZND5LhBgf9F8BN2tVdhSBnOCHH7me7iTcv0BUDhUW2dBQiHWLWMy776yZW1A==" - "resolved" "https://registry.npmjs.org/custom-protocol-check/-/custom-protocol-check-1.4.0.tgz" - "version" "1.4.0" +custom-protocol-check@^1.3.0: + version "1.4.0" + resolved "https://registry.npmjs.org/custom-protocol-check/-/custom-protocol-check-1.4.0.tgz" + integrity sha512-eMTyp8AKnE5eo+mKNqG3743eb5ZND5LhBgf9F8BN2tVdhSBnOCHH7me7iTcv0BUDhUW2dBQiHWLWMy776yZW1A== -"cyclist@^1.0.1": - "integrity" "sha512-NJGVKPS81XejHcLhaLJS7plab0fK3slPh11mESeeDq2W4ZI5kUKK/LRRdVDvjJseojbPB7ZwjnyOybg3Igea/A==" - "resolved" "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz" - "version" "1.0.1" +cyclist@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz" + integrity sha512-NJGVKPS81XejHcLhaLJS7plab0fK3slPh11mESeeDq2W4ZI5kUKK/LRRdVDvjJseojbPB7ZwjnyOybg3Igea/A== -"d@^1.0.1", "d@1": - "integrity" "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==" - "resolved" "https://registry.npmjs.org/d/-/d-1.0.1.tgz" - "version" "1.0.1" +d@1, d@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/d/-/d-1.0.1.tgz" + integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== dependencies: - "es5-ext" "^0.10.50" - "type" "^1.0.1" + es5-ext "^0.10.50" + type "^1.0.1" -"damerau-levenshtein@^1.0.6", "damerau-levenshtein@^1.0.8": - "integrity" "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==" - "resolved" "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz" - "version" "1.0.8" +damerau-levenshtein@^1.0.6, damerau-levenshtein@^1.0.8: + version "1.0.8" + resolved "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz" + integrity sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA== -"dashdash@^1.12.0": - "integrity" "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==" - "resolved" "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz" - "version" "1.14.1" +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz" + integrity sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g== dependencies: - "assert-plus" "^1.0.0" + assert-plus "^1.0.0" -"data-urls@^1.1.0": - "integrity" "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==" - "resolved" "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz" - "version" "1.1.0" +data-urls@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz" + integrity sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ== dependencies: - "abab" "^2.0.0" - "whatwg-mimetype" "^2.2.0" - "whatwg-url" "^7.0.0" + abab "^2.0.0" + whatwg-mimetype "^2.2.0" + whatwg-url "^7.0.0" -"data-urls@^2.0.0": - "integrity" "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==" - "resolved" "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz" - "version" "2.0.0" +data-urls@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz" + integrity sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ== dependencies: - "abab" "^2.0.3" - "whatwg-mimetype" "^2.3.0" - "whatwg-url" "^8.0.0" + abab "^2.0.3" + whatwg-mimetype "^2.3.0" + whatwg-url "^8.0.0" -"date-fns@^2.29.1", "date-fns@2.x": - "integrity" "sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA==" - "resolved" "https://registry.npmjs.org/date-fns/-/date-fns-2.29.3.tgz" - "version" "2.29.3" +date-fns@2.x, date-fns@^2.29.1: + version "2.29.3" + resolved "https://registry.npmjs.org/date-fns/-/date-fns-2.29.3.tgz" + integrity sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA== -"dayjs@1.x": - "integrity" "sha512-zZbY5giJAinCG+7AGaw0wIhNZ6J8AhWuSXKvuc1KAyMiRsvGQWqh4L+MomvhdAYjN+lqvVCMq1I41e3YHvXkyQ==" - "resolved" "https://registry.npmjs.org/dayjs/-/dayjs-1.11.6.tgz" - "version" "1.11.6" +dayjs@1.x: + version "1.11.6" + resolved "https://registry.npmjs.org/dayjs/-/dayjs-1.11.6.tgz" + integrity sha512-zZbY5giJAinCG+7AGaw0wIhNZ6J8AhWuSXKvuc1KAyMiRsvGQWqh4L+MomvhdAYjN+lqvVCMq1I41e3YHvXkyQ== -"debug@^2.2.0": - "integrity" "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==" - "resolved" "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" - "version" "2.6.9" +debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.8, debug@^2.6.9: + 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" + ms "2.0.0" -"debug@^2.3.3": - "integrity" "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==" - "resolved" "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" - "version" "2.6.9" +debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.4: + version "4.3.4" + resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== dependencies: - "ms" "2.0.0" + ms "2.1.2" -"debug@^2.6.0": - "integrity" "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==" - "resolved" "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" - "version" "2.6.9" +debug@^3.0.0, debug@^3.1.0, debug@^3.2.6, debug@^3.2.7: + version "3.2.7" + resolved "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== dependencies: - "ms" "2.0.0" + ms "^2.1.1" -"debug@^2.6.8": - "integrity" "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==" - "resolved" "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" - "version" "2.6.9" +debug@~3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz" + integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== dependencies: - "ms" "2.0.0" + ms "2.0.0" -"debug@^2.6.9": - "integrity" "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==" - "resolved" "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" - "version" "2.6.9" +decamelize@^1.1.2, decamelize@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz" + integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== + +decimal.js@^10.2.1: + version "10.4.2" + resolved "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.2.tgz" + integrity sha512-ic1yEvwT6GuvaYwBLLY6/aFFgjZdySKTE8en/fkU3QICTmRtgtSlFn0u0BXN06InZwtfCelR7j8LRiDI/02iGA== + +decode-uri-component@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz" + integrity sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og== + +decompress-response@^3.3.0: + version "3.3.0" + resolved "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz" + integrity sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA== dependencies: - "ms" "2.0.0" + mimic-response "^1.0.0" -"debug@^3.0.0": - "integrity" "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==" - "resolved" "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" - "version" "3.2.7" +dedent@^0.7.0: + version "0.7.0" + resolved "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz" + integrity sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA== + +deep-equal@^2.0.5: + version "2.1.0" + resolved "https://registry.npmjs.org/deep-equal/-/deep-equal-2.1.0.tgz" + integrity sha512-2pxgvWu3Alv1PoWEyVg7HS8YhGlUFUV7N5oOvfL6d+7xAmLSemMwv/c8Zv/i9KFzxV5Kt5CAvQc70fLwVuf4UA== dependencies: - "ms" "^2.1.1" + call-bind "^1.0.2" + es-get-iterator "^1.1.2" + get-intrinsic "^1.1.3" + is-arguments "^1.1.1" + is-date-object "^1.0.5" + is-regex "^1.1.4" + isarray "^2.0.5" + object-is "^1.1.5" + object-keys "^1.1.1" + object.assign "^4.1.4" + regexp.prototype.flags "^1.4.3" + side-channel "^1.0.4" + which-boxed-primitive "^1.0.2" + which-collection "^1.0.1" + which-typed-array "^1.1.8" -"debug@^3.1.0": - "integrity" "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==" - "resolved" "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" - "version" "3.2.7" +deep-extend@^0.6.0: + version "0.6.0" + resolved "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz" + integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== + +deep-is@^0.1.3, deep-is@~0.1.3: + version "0.1.4" + resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== + +deepmerge@^4.0.0, deepmerge@^4.2.2: + version "4.2.2" + resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz" + integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== + +default-browser-id@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/default-browser-id/-/default-browser-id-1.0.4.tgz" + integrity sha512-qPy925qewwul9Hifs+3sx1ZYn14obHxpkX+mPD369w4Rzg+YkJBgi3SOvwUq81nWSjqGUegIgEPwD8u+HUnxlw== dependencies: - "ms" "^2.1.1" + bplist-parser "^0.1.0" + meow "^3.1.0" + untildify "^2.0.0" -"debug@^3.2.6": - "integrity" "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==" - "resolved" "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" - "version" "3.2.7" +default-gateway@^6.0.3: + version "6.0.3" + resolved "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz" + integrity sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg== dependencies: - "ms" "^2.1.1" + execa "^5.0.0" -"debug@^3.2.7": - "integrity" "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==" - "resolved" "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" - "version" "3.2.7" +defer-to-connect@^1.0.1: + version "1.1.3" + resolved "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz" + integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ== + +define-lazy-prop@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz" + integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== + +define-properties@^1.1.2, define-properties@^1.1.3, define-properties@^1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz" + integrity sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA== dependencies: - "ms" "^2.1.1" + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" -"debug@^4.1.0", "debug@^4.1.1", "debug@^4.3.2", "debug@^4.3.4", "debug@4": - "integrity" "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==" - "resolved" "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" - "version" "4.3.4" +define-property@^0.2.5: + version "0.2.5" + resolved "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz" + integrity sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA== dependencies: - "ms" "2.1.2" + is-descriptor "^0.1.0" -"debug@~3.1.0": - "integrity" "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==" - "resolved" "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz" - "version" "3.1.0" +define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz" + integrity sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA== dependencies: - "ms" "2.0.0" + is-descriptor "^1.0.0" -"debug@2.6.9": - "integrity" "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==" - "resolved" "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" - "version" "2.6.9" +define-property@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz" + integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== dependencies: - "ms" "2.0.0" + is-descriptor "^1.0.2" + isobject "^3.0.1" -"decamelize@^1.1.2", "decamelize@^1.2.0": - "integrity" "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==" - "resolved" "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz" - "version" "1.2.0" +defined@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/defined/-/defined-1.0.1.tgz" + integrity sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q== -"decimal.js@^10.2.1": - "integrity" "sha512-ic1yEvwT6GuvaYwBLLY6/aFFgjZdySKTE8en/fkU3QICTmRtgtSlFn0u0BXN06InZwtfCelR7j8LRiDI/02iGA==" - "resolved" "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.2.tgz" - "version" "10.4.2" +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== -"decode-uri-component@^0.2.0": - "integrity" "sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==" - "resolved" "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz" - "version" "0.2.0" +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz" + integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ== -"decompress-response@^3.3.0": - "integrity" "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==" - "resolved" "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz" - "version" "3.3.0" +depd@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + +depd@~1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz" + integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== + +des.js@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz" + integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== dependencies: - "mimic-response" "^1.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" -"dedent@^0.7.0": - "integrity" "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==" - "resolved" "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz" - "version" "0.7.0" +destroy@1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz" + integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== -"deep-equal@^2.0.5": - "integrity" "sha512-2pxgvWu3Alv1PoWEyVg7HS8YhGlUFUV7N5oOvfL6d+7xAmLSemMwv/c8Zv/i9KFzxV5Kt5CAvQc70fLwVuf4UA==" - "resolved" "https://registry.npmjs.org/deep-equal/-/deep-equal-2.1.0.tgz" - "version" "2.1.0" +detab@2.0.4: + version "2.0.4" + resolved "https://registry.npmjs.org/detab/-/detab-2.0.4.tgz" + integrity sha512-8zdsQA5bIkoRECvCrNKPla84lyoR7DSAyf7p0YgXzBO9PDJx8KntPUay7NS6yp+KdxdVtiE5SpHKtbp2ZQyA9g== dependencies: - "call-bind" "^1.0.2" - "es-get-iterator" "^1.1.2" - "get-intrinsic" "^1.1.3" - "is-arguments" "^1.1.1" - "is-date-object" "^1.0.5" - "is-regex" "^1.1.4" - "isarray" "^2.0.5" - "object-is" "^1.1.5" - "object-keys" "^1.1.1" - "object.assign" "^4.1.4" - "regexp.prototype.flags" "^1.4.3" - "side-channel" "^1.0.4" - "which-boxed-primitive" "^1.0.2" - "which-collection" "^1.0.1" - "which-typed-array" "^1.1.8" + repeat-string "^1.5.4" -"deep-extend@^0.6.0": - "integrity" "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" - "resolved" "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz" - "version" "0.6.0" +detect-browser@^5.3.0: + version "5.3.0" + resolved "https://registry.npmjs.org/detect-browser/-/detect-browser-5.3.0.tgz" + integrity sha512-53rsFbGdwMwlF7qvCt0ypLM5V5/Mbl0szB7GPN8y9NCcbknYOeVVXdrXEq+90IwAfrrzt6Hd+u2E2ntakICU8w== -"deep-is@^0.1.3", "deep-is@~0.1.3": - "integrity" "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" - "resolved" "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz" - "version" "0.1.4" - -"deepmerge@^4.0.0", "deepmerge@^4.2.2": - "integrity" "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==" - "resolved" "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz" - "version" "4.2.2" - -"default-browser-id@^1.0.4": - "integrity" "sha512-qPy925qewwul9Hifs+3sx1ZYn14obHxpkX+mPD369w4Rzg+YkJBgi3SOvwUq81nWSjqGUegIgEPwD8u+HUnxlw==" - "resolved" "https://registry.npmjs.org/default-browser-id/-/default-browser-id-1.0.4.tgz" - "version" "1.0.4" +detect-indent@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz" + integrity sha512-BDKtmHlOzwI7iRuEkhzsnPoi5ypEhWAJB5RvHWe1kMr06js3uK5B3734i3ui5Yd+wOJV1cpE4JnivPD283GU/A== dependencies: - "bplist-parser" "^0.1.0" - "meow" "^3.1.0" - "untildify" "^2.0.0" + repeating "^2.0.0" -"default-gateway@^6.0.3": - "integrity" "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==" - "resolved" "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz" - "version" "6.0.3" +detect-newline@^3.0.0: + version "3.1.0" + resolved "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz" + integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== + +detect-node@^2.0.4: + version "2.1.0" + resolved "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz" + integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== + +detect-package-manager@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/detect-package-manager/-/detect-package-manager-2.0.1.tgz" + integrity sha512-j/lJHyoLlWi6G1LDdLgvUtz60Zo5GEj+sVYtTVXnYLDPuzgC3llMxonXym9zIwhhUII8vjdw0LXxavpLqTbl1A== dependencies: - "execa" "^5.0.0" + execa "^5.1.1" -"defer-to-connect@^1.0.1": - "integrity" "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==" - "resolved" "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz" - "version" "1.1.3" - -"define-lazy-prop@^2.0.0": - "integrity" "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==" - "resolved" "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz" - "version" "2.0.0" - -"define-properties@^1.1.2", "define-properties@^1.1.3", "define-properties@^1.1.4": - "integrity" "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==" - "resolved" "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz" - "version" "1.1.4" +detect-port-alt@1.1.6, detect-port-alt@^1.1.6: + version "1.1.6" + resolved "https://registry.npmjs.org/detect-port-alt/-/detect-port-alt-1.1.6.tgz" + integrity sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q== dependencies: - "has-property-descriptors" "^1.0.0" - "object-keys" "^1.1.1" + address "^1.0.1" + debug "^2.6.0" -"define-property@^0.2.5": - "integrity" "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==" - "resolved" "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz" - "version" "0.2.5" +detect-port@^1.3.0: + version "1.5.1" + resolved "https://registry.npmjs.org/detect-port/-/detect-port-1.5.1.tgz" + integrity sha512-aBzdj76lueB6uUst5iAs7+0H/oOjqI5D16XUWxlWMIMROhcM0rfsNVk93zTngq1dDNpoXRr++Sus7ETAExppAQ== dependencies: - "is-descriptor" "^0.1.0" + address "^1.0.1" + debug "4" -"define-property@^1.0.0": - "integrity" "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==" - "resolved" "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz" - "version" "1.0.0" +detective@^5.2.1: + version "5.2.1" + resolved "https://registry.npmjs.org/detective/-/detective-5.2.1.tgz" + integrity sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw== dependencies: - "is-descriptor" "^1.0.0" + acorn-node "^1.8.2" + defined "^1.0.0" + minimist "^1.2.6" -"define-property@^2.0.2": - "integrity" "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==" - "resolved" "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz" - "version" "2.0.2" +didyoumean@^1.2.2: + version "1.2.2" + resolved "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz" + integrity sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw== + +diff-match-patch@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/diff-match-patch/-/diff-match-patch-1.0.5.tgz" + integrity sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw== + +diff-sequences@^24.9.0: + version "24.9.0" + resolved "https://registry.npmjs.org/diff-sequences/-/diff-sequences-24.9.0.tgz" + integrity sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew== + +diff-sequences@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz" + integrity sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ== + +diff@^4.0.1: + version "4.0.2" + resolved "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz" + integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== + +diffie-hellman@^5.0.0: + version "5.0.3" + resolved "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz" + integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== dependencies: - "is-descriptor" "^1.0.2" - "isobject" "^3.0.1" + bn.js "^4.1.0" + miller-rabin "^4.0.0" + randombytes "^2.0.0" -"defined@^1.0.0": - "integrity" "sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==" - "resolved" "https://registry.npmjs.org/defined/-/defined-1.0.1.tgz" - "version" "1.0.1" - -"delayed-stream@~1.0.0": - "integrity" "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" - "resolved" "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" - "version" "1.0.0" - -"delegates@^1.0.0": - "integrity" "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==" - "resolved" "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz" - "version" "1.0.0" - -"depd@~1.1.2": - "integrity" "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==" - "resolved" "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz" - "version" "1.1.2" - -"depd@2.0.0": - "integrity" "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" - "resolved" "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz" - "version" "2.0.0" - -"des.js@^1.0.0": - "integrity" "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==" - "resolved" "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz" - "version" "1.0.1" +dir-glob@^2.2.2: + version "2.2.2" + resolved "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz" + integrity sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw== dependencies: - "inherits" "^2.0.1" - "minimalistic-assert" "^1.0.0" + path-type "^3.0.0" -"destroy@1.2.0": - "integrity" "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==" - "resolved" "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz" - "version" "1.2.0" - -"detab@2.0.4": - "integrity" "sha512-8zdsQA5bIkoRECvCrNKPla84lyoR7DSAyf7p0YgXzBO9PDJx8KntPUay7NS6yp+KdxdVtiE5SpHKtbp2ZQyA9g==" - "resolved" "https://registry.npmjs.org/detab/-/detab-2.0.4.tgz" - "version" "2.0.4" +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== dependencies: - "repeat-string" "^1.5.4" + path-type "^4.0.0" -"detect-browser@^5.3.0": - "integrity" "sha512-53rsFbGdwMwlF7qvCt0ypLM5V5/Mbl0szB7GPN8y9NCcbknYOeVVXdrXEq+90IwAfrrzt6Hd+u2E2ntakICU8w==" - "resolved" "https://registry.npmjs.org/detect-browser/-/detect-browser-5.3.0.tgz" - "version" "5.3.0" +discontinuous-range@1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/discontinuous-range/-/discontinuous-range-1.0.0.tgz" + integrity sha512-c68LpLbO+7kP/b1Hr1qs8/BJ09F5khZGTxqxZuhzxpmwJKOgRFHJWIb9/KmqnqHhLdO55aOxFH/EGBvUQbL/RQ== -"detect-indent@^4.0.0": - "integrity" "sha512-BDKtmHlOzwI7iRuEkhzsnPoi5ypEhWAJB5RvHWe1kMr06js3uK5B3734i3ui5Yd+wOJV1cpE4JnivPD283GU/A==" - "resolved" "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "repeating" "^2.0.0" +dlv@^1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz" + integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA== -"detect-newline@^3.0.0": - "integrity" "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==" - "resolved" "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz" - "version" "3.1.0" +dns-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz" + integrity sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg== -"detect-node@^2.0.4": - "integrity" "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==" - "resolved" "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz" - "version" "2.1.0" - -"detect-package-manager@^2.0.1": - "integrity" "sha512-j/lJHyoLlWi6G1LDdLgvUtz60Zo5GEj+sVYtTVXnYLDPuzgC3llMxonXym9zIwhhUII8vjdw0LXxavpLqTbl1A==" - "resolved" "https://registry.npmjs.org/detect-package-manager/-/detect-package-manager-2.0.1.tgz" - "version" "2.0.1" - dependencies: - "execa" "^5.1.1" - -"detect-port-alt@^1.1.6", "detect-port-alt@1.1.6": - "integrity" "sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==" - "resolved" "https://registry.npmjs.org/detect-port-alt/-/detect-port-alt-1.1.6.tgz" - "version" "1.1.6" - dependencies: - "address" "^1.0.1" - "debug" "^2.6.0" - -"detect-port@^1.3.0": - "integrity" "sha512-aBzdj76lueB6uUst5iAs7+0H/oOjqI5D16XUWxlWMIMROhcM0rfsNVk93zTngq1dDNpoXRr++Sus7ETAExppAQ==" - "resolved" "https://registry.npmjs.org/detect-port/-/detect-port-1.5.1.tgz" - "version" "1.5.1" - dependencies: - "address" "^1.0.1" - "debug" "4" - -"detective@^5.2.1": - "integrity" "sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==" - "resolved" "https://registry.npmjs.org/detective/-/detective-5.2.1.tgz" - "version" "5.2.1" - dependencies: - "acorn-node" "^1.8.2" - "defined" "^1.0.0" - "minimist" "^1.2.6" - -"didyoumean@^1.2.2": - "integrity" "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==" - "resolved" "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz" - "version" "1.2.2" - -"diff-match-patch@^1.0.5": - "integrity" "sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw==" - "resolved" "https://registry.npmjs.org/diff-match-patch/-/diff-match-patch-1.0.5.tgz" - "version" "1.0.5" - -"diff-sequences@^24.9.0": - "integrity" "sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew==" - "resolved" "https://registry.npmjs.org/diff-sequences/-/diff-sequences-24.9.0.tgz" - "version" "24.9.0" - -"diff-sequences@^27.5.1": - "integrity" "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==" - "resolved" "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz" - "version" "27.5.1" - -"diff@^4.0.1": - "integrity" "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==" - "resolved" "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz" - "version" "4.0.2" - -"diffie-hellman@^5.0.0": - "integrity" "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==" - "resolved" "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz" - "version" "5.0.3" - dependencies: - "bn.js" "^4.1.0" - "miller-rabin" "^4.0.0" - "randombytes" "^2.0.0" - -"dir-glob@^2.2.2": - "integrity" "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==" - "resolved" "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz" - "version" "2.2.2" - dependencies: - "path-type" "^3.0.0" - -"dir-glob@^3.0.1": - "integrity" "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==" - "resolved" "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz" - "version" "3.0.1" - dependencies: - "path-type" "^4.0.0" - -"discontinuous-range@1.0.0": - "integrity" "sha512-c68LpLbO+7kP/b1Hr1qs8/BJ09F5khZGTxqxZuhzxpmwJKOgRFHJWIb9/KmqnqHhLdO55aOxFH/EGBvUQbL/RQ==" - "resolved" "https://registry.npmjs.org/discontinuous-range/-/discontinuous-range-1.0.0.tgz" - "version" "1.0.0" - -"dlv@^1.1.3": - "integrity" "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==" - "resolved" "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz" - "version" "1.1.3" - -"dns-equal@^1.0.0": - "integrity" "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==" - "resolved" "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz" - "version" "1.0.0" - -"dns-packet@^5.2.2": - "integrity" "sha512-EgqGeaBB8hLiHLZtp/IbaDQTL8pZ0+IvwzSHA6d7VyMDM+B9hgddEMa9xjK5oYnw0ci0JQ6g2XCD7/f6cafU6g==" - "resolved" "https://registry.npmjs.org/dns-packet/-/dns-packet-5.4.0.tgz" - "version" "5.4.0" +dns-packet@^5.2.2: + version "5.4.0" + resolved "https://registry.npmjs.org/dns-packet/-/dns-packet-5.4.0.tgz" + integrity sha512-EgqGeaBB8hLiHLZtp/IbaDQTL8pZ0+IvwzSHA6d7VyMDM+B9hgddEMa9xjK5oYnw0ci0JQ6g2XCD7/f6cafU6g== dependencies: "@leichtgewicht/ip-codec" "^2.0.1" -"doctrine@^2.1.0": - "integrity" "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==" - "resolved" "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz" - "version" "2.1.0" +doctrine@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz" + integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== dependencies: - "esutils" "^2.0.2" + esutils "^2.0.2" -"doctrine@^3.0.0": - "integrity" "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==" - "resolved" "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz" - "version" "3.0.0" +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== dependencies: - "esutils" "^2.0.2" + esutils "^2.0.2" -"document.contains@^1.0.1": - "integrity" "sha512-YcvYFs15mX8m3AO1QNQy3BlIpSMfNRj3Ujk2BEJxsZG+HZf7/hZ6jr7mDpXrF8q+ff95Vef5yjhiZxm8CGJr6Q==" - "resolved" "https://registry.npmjs.org/document.contains/-/document.contains-1.0.2.tgz" - "version" "1.0.2" +document.contains@^1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/document.contains/-/document.contains-1.0.2.tgz" + integrity sha512-YcvYFs15mX8m3AO1QNQy3BlIpSMfNRj3Ujk2BEJxsZG+HZf7/hZ6jr7mDpXrF8q+ff95Vef5yjhiZxm8CGJr6Q== dependencies: - "define-properties" "^1.1.3" + define-properties "^1.1.3" -"dom-accessibility-api@^0.3.0": - "integrity" "sha512-PzwHEmsRP3IGY4gv/Ug+rMeaTIyTJvadCb+ujYXYeIylbHJezIyNToe8KfEgHTCEYyC+/bUghYOGg8yMGlZ6vA==" - "resolved" "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.3.0.tgz" - "version" "0.3.0" +dom-accessibility-api@^0.3.0: + version "0.3.0" + resolved "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.3.0.tgz" + integrity sha512-PzwHEmsRP3IGY4gv/Ug+rMeaTIyTJvadCb+ujYXYeIylbHJezIyNToe8KfEgHTCEYyC+/bUghYOGg8yMGlZ6vA== -"dom-accessibility-api@^0.5.9": - "integrity" "sha512-NMt+m9zFMPZe0JcY9gN224Qvk6qLIdqex29clBvc/y75ZBX9YA9wNK3frsYvu2DI1xcCIwxwnX+TlsJ2DSOADg==" - "resolved" "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.14.tgz" - "version" "0.5.14" +dom-accessibility-api@^0.5.9: + version "0.5.14" + resolved "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.14.tgz" + integrity sha512-NMt+m9zFMPZe0JcY9gN224Qvk6qLIdqex29clBvc/y75ZBX9YA9wNK3frsYvu2DI1xcCIwxwnX+TlsJ2DSOADg== -"dom-align@^1.7.0": - "integrity" "sha512-R8LUSEay/68zE5c8/3BDxiTEvgb4xZTF0RKmAHfiEVN3klfIpXfi2/QCoiWPccVQ0J/ZGdz9OjzL4uJEP/MRAw==" - "resolved" "https://registry.npmjs.org/dom-align/-/dom-align-1.12.4.tgz" - "version" "1.12.4" +dom-align@^1.7.0: + version "1.12.4" + resolved "https://registry.npmjs.org/dom-align/-/dom-align-1.12.4.tgz" + integrity sha512-R8LUSEay/68zE5c8/3BDxiTEvgb4xZTF0RKmAHfiEVN3klfIpXfi2/QCoiWPccVQ0J/ZGdz9OjzL4uJEP/MRAw== -"dom-converter@^0.2.0": - "integrity" "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==" - "resolved" "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz" - "version" "0.2.0" +dom-converter@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz" + integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA== dependencies: - "utila" "~0.4" + utila "~0.4" -"dom-helpers@^5.0.1", "dom-helpers@^5.1.3": - "integrity" "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==" - "resolved" "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz" - "version" "5.2.1" +dom-helpers@^5.0.1, dom-helpers@^5.1.3: + version "5.2.1" + resolved "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz" + integrity sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA== dependencies: "@babel/runtime" "^7.8.7" - "csstype" "^3.0.2" + csstype "^3.0.2" -"dom-serializer@^1.0.1": - "integrity" "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==" - "resolved" "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz" - "version" "1.4.1" +dom-serializer@0: + version "0.2.2" + resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz" + integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== dependencies: - "domelementtype" "^2.0.1" - "domhandler" "^4.2.0" - "entities" "^2.0.0" + domelementtype "^2.0.1" + entities "^2.0.0" -"dom-serializer@^2.0.0": - "integrity" "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==" - "resolved" "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz" - "version" "2.0.0" +dom-serializer@^1.0.1: + version "1.4.1" + resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz" + integrity sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag== dependencies: - "domelementtype" "^2.3.0" - "domhandler" "^5.0.2" - "entities" "^4.2.0" + domelementtype "^2.0.1" + domhandler "^4.2.0" + entities "^2.0.0" -"dom-serializer@0": - "integrity" "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==" - "resolved" "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz" - "version" "0.2.2" +dom-serializer@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz" + integrity sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg== dependencies: - "domelementtype" "^2.0.1" - "entities" "^2.0.0" + domelementtype "^2.3.0" + domhandler "^5.0.2" + entities "^4.2.0" -"dom-walk@^0.1.0": - "integrity" "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==" - "resolved" "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz" - "version" "0.1.2" +dom-walk@^0.1.0: + version "0.1.2" + resolved "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz" + integrity sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w== -"domain-browser@^1.1.1": - "integrity" "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==" - "resolved" "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz" - "version" "1.2.0" +domain-browser@^1.1.1: + version "1.2.0" + resolved "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz" + integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== -"domelementtype@^2.0.1", "domelementtype@^2.2.0": - "integrity" "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==" - "resolved" "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz" - "version" "2.3.0" +domelementtype@1: + version "1.3.1" + resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz" + integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== -"domelementtype@^2.3.0": - "integrity" "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==" - "resolved" "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz" - "version" "2.3.0" +domelementtype@^2.0.1, domelementtype@^2.2.0, domelementtype@^2.3.0: + version "2.3.0" + resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz" + integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== -"domelementtype@1": - "integrity" "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" - "resolved" "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz" - "version" "1.3.1" - -"domexception@^1.0.1": - "integrity" "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==" - "resolved" "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz" - "version" "1.0.1" +domexception@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz" + integrity sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug== dependencies: - "webidl-conversions" "^4.0.2" + webidl-conversions "^4.0.2" -"domexception@^2.0.1": - "integrity" "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==" - "resolved" "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz" - "version" "2.0.1" +domexception@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz" + integrity sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg== dependencies: - "webidl-conversions" "^5.0.0" + webidl-conversions "^5.0.0" -"domhandler@^4.0.0", "domhandler@^4.2.0", "domhandler@^4.3.1": - "integrity" "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==" - "resolved" "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz" - "version" "4.3.1" +domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.3.1: + version "4.3.1" + resolved "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz" + integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ== dependencies: - "domelementtype" "^2.2.0" + domelementtype "^2.2.0" -"domhandler@^5.0.1", "domhandler@^5.0.2", "domhandler@^5.0.3": - "integrity" "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==" - "resolved" "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz" - "version" "5.0.3" +domhandler@^5.0.1, domhandler@^5.0.2, domhandler@^5.0.3: + version "5.0.3" + resolved "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz" + integrity sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w== dependencies: - "domelementtype" "^2.3.0" + domelementtype "^2.3.0" -"domutils@^1.7.0": - "integrity" "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==" - "resolved" "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz" - "version" "1.7.0" +domutils@^1.7.0: + version "1.7.0" + resolved "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz" + integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== dependencies: - "dom-serializer" "0" - "domelementtype" "1" + dom-serializer "0" + domelementtype "1" -"domutils@^2.5.2", "domutils@^2.8.0": - "integrity" "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==" - "resolved" "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz" - "version" "2.8.0" +domutils@^2.5.2, domutils@^2.8.0: + version "2.8.0" + resolved "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz" + integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== dependencies: - "dom-serializer" "^1.0.1" - "domelementtype" "^2.2.0" - "domhandler" "^4.2.0" + dom-serializer "^1.0.1" + domelementtype "^2.2.0" + domhandler "^4.2.0" -"domutils@^3.0.1": - "integrity" "sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q==" - "resolved" "https://registry.npmjs.org/domutils/-/domutils-3.0.1.tgz" - "version" "3.0.1" +domutils@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/domutils/-/domutils-3.0.1.tgz" + integrity sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q== dependencies: - "dom-serializer" "^2.0.0" - "domelementtype" "^2.3.0" - "domhandler" "^5.0.1" + dom-serializer "^2.0.0" + domelementtype "^2.3.0" + domhandler "^5.0.1" -"dot-case@^3.0.4": - "integrity" "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==" - "resolved" "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz" - "version" "3.0.4" +dot-case@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz" + integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== dependencies: - "no-case" "^3.0.4" - "tslib" "^2.0.3" + no-case "^3.0.4" + tslib "^2.0.3" -"dot-prop@^5.2.0": - "integrity" "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==" - "resolved" "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz" - "version" "5.3.0" +dot-prop@^5.2.0: + version "5.3.0" + resolved "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz" + integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q== dependencies: - "is-obj" "^2.0.0" + is-obj "^2.0.0" -"dotenv-expand@^5.1.0", "dotenv-expand@5.1.0": - "integrity" "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==" - "resolved" "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz" - "version" "5.1.0" +dotenv-expand@5.1.0, dotenv-expand@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz" + integrity sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA== -"dotenv@^10.0.0": - "integrity" "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==" - "resolved" "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz" - "version" "10.0.0" +dotenv@8.2.0, dotenv@^8.0.0: + version "8.2.0" + resolved "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz" + integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw== -"dotenv@^8.0.0", "dotenv@8.2.0": - "integrity" "sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==" - "resolved" "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz" - "version" "8.2.0" +dotenv@^10.0.0: + version "10.0.0" + resolved "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz" + integrity sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q== -"draft-js-export-markdown@^1.4.0": - "integrity" "sha512-blfAvlhGhjVlHNaZ5WJKlrXhcftnwwC5VC+Eu3ztOGpGLaOom4hxhBjbKEWjvbQZJ9zL+xo57ukm39prYZMG5Q==" - "resolved" "https://registry.npmjs.org/draft-js-export-markdown/-/draft-js-export-markdown-1.4.0.tgz" - "version" "1.4.0" +draft-js-export-markdown@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/draft-js-export-markdown/-/draft-js-export-markdown-1.4.0.tgz" + integrity sha512-blfAvlhGhjVlHNaZ5WJKlrXhcftnwwC5VC+Eu3ztOGpGLaOom4hxhBjbKEWjvbQZJ9zL+xo57ukm39prYZMG5Q== dependencies: - "draft-js-utils" "^1.4.0" + draft-js-utils "^1.4.0" -"draft-js-import-element@^1.4.0": - "integrity" "sha512-WmYT5PrCm47lGL5FkH6sRO3TTAcn7qNHsD3igiPqLG/RXrqyKrqN4+wBgbcT2lhna/yfWTRtgzAbQsSJoS1Meg==" - "resolved" "https://registry.npmjs.org/draft-js-import-element/-/draft-js-import-element-1.4.0.tgz" - "version" "1.4.0" +draft-js-import-element@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/draft-js-import-element/-/draft-js-import-element-1.4.0.tgz" + integrity sha512-WmYT5PrCm47lGL5FkH6sRO3TTAcn7qNHsD3igiPqLG/RXrqyKrqN4+wBgbcT2lhna/yfWTRtgzAbQsSJoS1Meg== dependencies: - "draft-js-utils" "^1.4.0" - "synthetic-dom" "^1.4.0" + draft-js-utils "^1.4.0" + synthetic-dom "^1.4.0" -"draft-js-import-markdown@^1.4.0": - "integrity" "sha512-58mDXJURrb5dsiN+cIms/gojI9jngE60WAwygYoxrEbsQeIIITOlFLjV/m/7Ko7HVpc5wjngVV2hzJ71T3FpMA==" - "resolved" "https://registry.npmjs.org/draft-js-import-markdown/-/draft-js-import-markdown-1.4.1.tgz" - "version" "1.4.1" +draft-js-import-markdown@^1.4.0: + version "1.4.1" + resolved "https://registry.npmjs.org/draft-js-import-markdown/-/draft-js-import-markdown-1.4.1.tgz" + integrity sha512-58mDXJURrb5dsiN+cIms/gojI9jngE60WAwygYoxrEbsQeIIITOlFLjV/m/7Ko7HVpc5wjngVV2hzJ71T3FpMA== dependencies: - "draft-js-import-element" "^1.4.0" - "synthetic-dom" "^1.4.0" + draft-js-import-element "^1.4.0" + synthetic-dom "^1.4.0" -"draft-js-utils@^1.4.0": - "integrity" "sha512-xE81Y+z/muC5D5z9qWmKfxEW1XyXfsBzSbSBk2JRsoD0yzMGGHQm/0MtuqHl/EUDkaBJJLjJ2EACycoDMY/OOg==" - "resolved" "https://registry.npmjs.org/draft-js-utils/-/draft-js-utils-1.4.1.tgz" - "version" "1.4.1" +draft-js-utils@^1.4.0: + version "1.4.1" + resolved "https://registry.npmjs.org/draft-js-utils/-/draft-js-utils-1.4.1.tgz" + integrity sha512-xE81Y+z/muC5D5z9qWmKfxEW1XyXfsBzSbSBk2JRsoD0yzMGGHQm/0MtuqHl/EUDkaBJJLjJ2EACycoDMY/OOg== -"draft-js@^0.11.7", "draft-js@^0.11.x", "draft-js@>=0.10.0": - "integrity" "sha512-ne7yFfN4sEL82QPQEn80xnADR8/Q6ALVworbC5UOSzOvjffmYfFsr3xSZtxbIirti14R7Y33EZC5rivpLgIbsg==" - "resolved" "https://registry.npmjs.org/draft-js/-/draft-js-0.11.7.tgz" - "version" "0.11.7" +draft-js@^0.11.7: + version "0.11.7" + resolved "https://registry.npmjs.org/draft-js/-/draft-js-0.11.7.tgz" + integrity sha512-ne7yFfN4sEL82QPQEn80xnADR8/Q6ALVworbC5UOSzOvjffmYfFsr3xSZtxbIirti14R7Y33EZC5rivpLgIbsg== dependencies: - "fbjs" "^2.0.0" - "immutable" "~3.7.4" - "object-assign" "^4.1.1" + fbjs "^2.0.0" + immutable "~3.7.4" + object-assign "^4.1.1" -"draftjs-utils@^0.10.2": - "integrity" "sha512-EstHqr3R3JVcilJrBaO/A+01GvwwKmC7e4TCjC7S94ZeMh4IVmf60OuQXtHHpwItK8C2JCi3iljgN5KHkJboUg==" - "resolved" "https://registry.npmjs.org/draftjs-utils/-/draftjs-utils-0.10.2.tgz" - "version" "0.10.2" +draftjs-utils@^0.10.2: + version "0.10.2" + resolved "https://registry.npmjs.org/draftjs-utils/-/draftjs-utils-0.10.2.tgz" + integrity sha512-EstHqr3R3JVcilJrBaO/A+01GvwwKmC7e4TCjC7S94ZeMh4IVmf60OuQXtHHpwItK8C2JCi3iljgN5KHkJboUg== -"duplexer@^0.1.1", "duplexer@^0.1.2": - "integrity" "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==" - "resolved" "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz" - "version" "0.1.2" +duplexer3@^0.1.4: + version "0.1.5" + resolved "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz" + integrity sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA== -"duplexer3@^0.1.4": - "integrity" "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==" - "resolved" "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz" - "version" "0.1.5" +duplexer@^0.1.1, duplexer@^0.1.2: + version "0.1.2" + resolved "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz" + integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== -"duplexify@^3.4.2", "duplexify@^3.6.0": - "integrity" "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==" - "resolved" "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz" - "version" "3.7.1" +duplexify@^3.4.2, duplexify@^3.6.0: + version "3.7.1" + resolved "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz" + integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== dependencies: - "end-of-stream" "^1.0.0" - "inherits" "^2.0.1" - "readable-stream" "^2.0.0" - "stream-shift" "^1.0.0" + end-of-stream "^1.0.0" + inherits "^2.0.1" + readable-stream "^2.0.0" + stream-shift "^1.0.0" -"ecc-jsbn@~0.1.1": - "integrity" "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==" - "resolved" "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz" - "version" "0.1.2" +ecc-jsbn@~0.1.1: + version "0.1.2" + resolved "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz" + integrity sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw== dependencies: - "jsbn" "~0.1.0" - "safer-buffer" "^2.1.0" + jsbn "~0.1.0" + safer-buffer "^2.1.0" -"ee-first@1.1.1": - "integrity" "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" - "resolved" "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" - "version" "1.1.1" +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" + integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== -"ejs@^3.1.6": - "integrity" "sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==" - "resolved" "https://registry.npmjs.org/ejs/-/ejs-3.1.8.tgz" - "version" "3.1.8" +ejs@^3.1.6: + version "3.1.8" + resolved "https://registry.npmjs.org/ejs/-/ejs-3.1.8.tgz" + integrity sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ== dependencies: - "jake" "^10.8.5" + jake "^10.8.5" -"electron-to-chromium@^1.3.47", "electron-to-chromium@^1.3.564", "electron-to-chromium@^1.4.251": - "integrity" "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==" - "resolved" "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz" - "version" "1.4.284" +electron-to-chromium@^1.3.47, electron-to-chromium@^1.3.564, electron-to-chromium@^1.4.251: + version "1.4.284" + resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz" + integrity sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA== -"elliptic@^6.5.3": - "integrity" "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==" - "resolved" "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz" - "version" "6.5.4" +elliptic@^6.5.3: + version "6.5.4" + resolved "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz" + integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== dependencies: - "bn.js" "^4.11.9" - "brorand" "^1.1.0" - "hash.js" "^1.0.0" - "hmac-drbg" "^1.0.1" - "inherits" "^2.0.4" - "minimalistic-assert" "^1.0.1" - "minimalistic-crypto-utils" "^1.0.1" + bn.js "^4.11.9" + brorand "^1.1.0" + hash.js "^1.0.0" + hmac-drbg "^1.0.1" + inherits "^2.0.4" + minimalistic-assert "^1.0.1" + minimalistic-crypto-utils "^1.0.1" -"emittery@^0.10.2": - "integrity" "sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw==" - "resolved" "https://registry.npmjs.org/emittery/-/emittery-0.10.2.tgz" - "version" "0.10.2" +emittery@^0.10.2: + version "0.10.2" + resolved "https://registry.npmjs.org/emittery/-/emittery-0.10.2.tgz" + integrity sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw== -"emittery@^0.8.1": - "integrity" "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==" - "resolved" "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz" - "version" "0.8.1" +emittery@^0.8.1: + version "0.8.1" + resolved "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz" + integrity sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg== -"emoji-mart@^3.0.0": - "integrity" "sha512-sxpmMKxqLvcscu6mFn9ITHeZNkGzIvD0BSNFE/LJESPbCA8s1jM6bCDPjWbV31xHq7JXaxgpHxLB54RCbBZSlg==" - "resolved" "https://registry.npmjs.org/emoji-mart/-/emoji-mart-3.0.1.tgz" - "version" "3.0.1" +emoji-mart@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/emoji-mart/-/emoji-mart-3.0.1.tgz" + integrity sha512-sxpmMKxqLvcscu6mFn9ITHeZNkGzIvD0BSNFE/LJESPbCA8s1jM6bCDPjWbV31xHq7JXaxgpHxLB54RCbBZSlg== dependencies: "@babel/runtime" "^7.0.0" - "prop-types" "^15.6.0" + prop-types "^15.6.0" -"emoji-name-map@^1.2.9": - "integrity" "sha512-MSM8y6koSqh/2uEMI2VoKA+Ac0qL5RkgFGP/pzL6n5FOrOJ7FOZFxgs7+uNpqA+AT+WmdbMPXkd3HnFXXdz4AA==" - "resolved" "https://registry.npmjs.org/emoji-name-map/-/emoji-name-map-1.2.9.tgz" - "version" "1.2.9" +emoji-name-map@^1.2.9: + version "1.2.9" + resolved "https://registry.npmjs.org/emoji-name-map/-/emoji-name-map-1.2.9.tgz" + integrity sha512-MSM8y6koSqh/2uEMI2VoKA+Ac0qL5RkgFGP/pzL6n5FOrOJ7FOZFxgs7+uNpqA+AT+WmdbMPXkd3HnFXXdz4AA== dependencies: - "emojilib" "^2.0.2" - "iterate-object" "^1.3.1" - "map-o" "^2.0.1" + emojilib "^2.0.2" + iterate-object "^1.3.1" + map-o "^2.0.1" -"emoji-regex@^7.0.1": - "integrity" "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" - "resolved" "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz" - "version" "7.0.3" +emoji-regex@^7.0.1: + version "7.0.3" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz" + integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== -"emoji-regex@^8.0.0": - "integrity" "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" - "resolved" "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" - "version" "8.0.0" +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== -"emoji-regex@^9.0.0": - "integrity" "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" - "resolved" "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz" - "version" "9.2.2" +emoji-regex@^9.0.0, emoji-regex@^9.2.2: + version "9.2.2" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz" + integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== -"emoji-regex@^9.2.2": - "integrity" "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" - "resolved" "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz" - "version" "9.2.2" +emojilib@^2.0.2: + version "2.4.0" + resolved "https://registry.npmjs.org/emojilib/-/emojilib-2.4.0.tgz" + integrity sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw== -"emojilib@^2.0.2": - "integrity" "sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw==" - "resolved" "https://registry.npmjs.org/emojilib/-/emojilib-2.4.0.tgz" - "version" "2.4.0" +emojione@^4.5.0: + version "4.5.0" + resolved "https://registry.npmjs.org/emojione/-/emojione-4.5.0.tgz" + integrity sha512-Tq55Y3UgPOnayFDN+Qd6QMP0rpoH10a1nhSFN27s8gXW3qymgFIHiXys2ECYYAI134BafmI3qP9ni2rZOe9BjA== -"emojione@^4.5.0": - "integrity" "sha512-Tq55Y3UgPOnayFDN+Qd6QMP0rpoH10a1nhSFN27s8gXW3qymgFIHiXys2ECYYAI134BafmI3qP9ni2rZOe9BjA==" - "resolved" "https://registry.npmjs.org/emojione/-/emojione-4.5.0.tgz" - "version" "4.5.0" +emojis-list@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz" + integrity sha512-knHEZMgs8BB+MInokmNTg/OyPlAddghe1YBgNwJBc5zsJi/uyIcXoSDsL/W9ymOsBoBGdPIHXYJ9+qKFwRwDng== -"emojis-list@^2.0.0": - "integrity" "sha512-knHEZMgs8BB+MInokmNTg/OyPlAddghe1YBgNwJBc5zsJi/uyIcXoSDsL/W9ymOsBoBGdPIHXYJ9+qKFwRwDng==" - "resolved" "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz" - "version" "2.1.0" +emojis-list@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz" + integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== -"emojis-list@^3.0.0": - "integrity" "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==" - "resolved" "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz" - "version" "3.0.0" +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz" + integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== -"encodeurl@~1.0.2": - "integrity" "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==" - "resolved" "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz" - "version" "1.0.2" - -"end-of-stream@^1.0.0", "end-of-stream@^1.1.0": - "integrity" "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==" - "resolved" "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz" - "version" "1.4.4" +end-of-stream@^1.0.0, end-of-stream@^1.1.0: + version "1.4.4" + resolved "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== dependencies: - "once" "^1.4.0" + once "^1.4.0" -"endent@^2.0.1": - "integrity" "sha512-r8VyPX7XL8U01Xgnb1CjZ3XV+z90cXIJ9JPE/R9SEC9vpw2P6CfsRPJmp20DppC5N7ZAMCmjYkJIa744Iyg96w==" - "resolved" "https://registry.npmjs.org/endent/-/endent-2.1.0.tgz" - "version" "2.1.0" +endent@^2.0.1: + version "2.1.0" + resolved "https://registry.npmjs.org/endent/-/endent-2.1.0.tgz" + integrity sha512-r8VyPX7XL8U01Xgnb1CjZ3XV+z90cXIJ9JPE/R9SEC9vpw2P6CfsRPJmp20DppC5N7ZAMCmjYkJIa744Iyg96w== dependencies: - "dedent" "^0.7.0" - "fast-json-parse" "^1.0.3" - "objectorarray" "^1.0.5" + dedent "^0.7.0" + fast-json-parse "^1.0.3" + objectorarray "^1.0.5" -"engine.io-client@~3.5.0": - "integrity" "sha512-qsgyc/CEhJ6cgMUwxRRtOndGVhIu5hpL5tR4umSpmX/MvkFoIxUTM7oFMDQumHNzlNLwSVy6qhstFPoWTf7dOw==" - "resolved" "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.5.3.tgz" - "version" "3.5.3" +engine.io-client@~3.5.0: + version "3.5.3" + resolved "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.5.3.tgz" + integrity sha512-qsgyc/CEhJ6cgMUwxRRtOndGVhIu5hpL5tR4umSpmX/MvkFoIxUTM7oFMDQumHNzlNLwSVy6qhstFPoWTf7dOw== dependencies: - "component-emitter" "~1.3.0" - "component-inherit" "0.0.3" - "debug" "~3.1.0" - "engine.io-parser" "~2.2.0" - "has-cors" "1.1.0" - "indexof" "0.0.1" - "parseqs" "0.0.6" - "parseuri" "0.0.6" - "ws" "~7.4.2" - "xmlhttprequest-ssl" "~1.6.2" - "yeast" "0.1.2" + component-emitter "~1.3.0" + component-inherit "0.0.3" + debug "~3.1.0" + engine.io-parser "~2.2.0" + has-cors "1.1.0" + indexof "0.0.1" + parseqs "0.0.6" + parseuri "0.0.6" + ws "~7.4.2" + xmlhttprequest-ssl "~1.6.2" + yeast "0.1.2" -"engine.io-parser@~2.2.0": - "integrity" "sha512-x+dN/fBH8Ro8TFwJ+rkB2AmuVw9Yu2mockR/p3W8f8YtExwFgDvBDi0GWyb4ZLkpahtDGZgtr3zLovanJghPqg==" - "resolved" "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.2.1.tgz" - "version" "2.2.1" +engine.io-parser@~2.2.0: + version "2.2.1" + resolved "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.2.1.tgz" + integrity sha512-x+dN/fBH8Ro8TFwJ+rkB2AmuVw9Yu2mockR/p3W8f8YtExwFgDvBDi0GWyb4ZLkpahtDGZgtr3zLovanJghPqg== dependencies: - "after" "0.8.2" - "arraybuffer.slice" "~0.0.7" - "base64-arraybuffer" "0.1.4" - "blob" "0.0.5" - "has-binary2" "~1.0.2" + after "0.8.2" + arraybuffer.slice "~0.0.7" + base64-arraybuffer "0.1.4" + blob "0.0.5" + has-binary2 "~1.0.2" -"enhanced-resolve@^4.5.0": - "integrity" "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==" - "resolved" "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz" - "version" "4.5.0" +enhanced-resolve@^4.5.0: + version "4.5.0" + resolved "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz" + integrity sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg== dependencies: - "graceful-fs" "^4.1.2" - "memory-fs" "^0.5.0" - "tapable" "^1.0.0" + graceful-fs "^4.1.2" + memory-fs "^0.5.0" + tapable "^1.0.0" -"enhanced-resolve@^5.10.0": - "integrity" "sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==" - "resolved" "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz" - "version" "5.10.0" +enhanced-resolve@^5.10.0: + version "5.10.0" + resolved "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz" + integrity sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ== dependencies: - "graceful-fs" "^4.2.4" - "tapable" "^2.2.0" + graceful-fs "^4.2.4" + tapable "^2.2.0" -"entities@^2.0.0": - "integrity" "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==" - "resolved" "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz" - "version" "2.2.0" +entities@^2.0.0: + version "2.2.0" + resolved "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz" + integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== -"entities@^4.2.0", "entities@^4.3.0": - "integrity" "sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==" - "resolved" "https://registry.npmjs.org/entities/-/entities-4.4.0.tgz" - "version" "4.4.0" +entities@^4.2.0, entities@^4.3.0, entities@^4.4.0: + version "4.4.0" + resolved "https://registry.npmjs.org/entities/-/entities-4.4.0.tgz" + integrity sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA== -"entities@^4.4.0": - "integrity" "sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==" - "resolved" "https://registry.npmjs.org/entities/-/entities-4.4.0.tgz" - "version" "4.4.0" +envinfo@^7.7.3: + version "7.8.1" + resolved "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz" + integrity sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw== -"envinfo@^7.7.3": - "integrity" "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==" - "resolved" "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz" - "version" "7.8.1" - -"enzyme-adapter-react-16@^1.15.5": - "integrity" "sha512-LtjKgvlTc/H7adyQcj+aq0P0H07LDL480WQl1gU512IUyaDo/sbOaNDdZsJXYW2XaoPqrLLE9KbZS+X2z6BASw==" - "resolved" "https://registry.npmjs.org/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.15.7.tgz" - "version" "1.15.7" +enzyme-adapter-react-16@^1.15.5: + version "1.15.7" + resolved "https://registry.npmjs.org/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.15.7.tgz" + integrity sha512-LtjKgvlTc/H7adyQcj+aq0P0H07LDL480WQl1gU512IUyaDo/sbOaNDdZsJXYW2XaoPqrLLE9KbZS+X2z6BASw== dependencies: - "enzyme-adapter-utils" "^1.14.1" - "enzyme-shallow-equal" "^1.0.5" - "has" "^1.0.3" - "object.assign" "^4.1.4" - "object.values" "^1.1.5" - "prop-types" "^15.8.1" - "react-is" "^16.13.1" - "react-test-renderer" "^16.0.0-0" - "semver" "^5.7.0" + enzyme-adapter-utils "^1.14.1" + enzyme-shallow-equal "^1.0.5" + has "^1.0.3" + object.assign "^4.1.4" + object.values "^1.1.5" + prop-types "^15.8.1" + react-is "^16.13.1" + react-test-renderer "^16.0.0-0" + semver "^5.7.0" -"enzyme-adapter-utils@^1.14.1": - "integrity" "sha512-JZgMPF1QOI7IzBj24EZoDpaeG/p8Os7WeBZWTJydpsH7JRStc7jYbHE4CmNQaLqazaGFyLM8ALWA3IIZvxW3PQ==" - "resolved" "https://registry.npmjs.org/enzyme-adapter-utils/-/enzyme-adapter-utils-1.14.1.tgz" - "version" "1.14.1" +enzyme-adapter-utils@^1.14.1: + version "1.14.1" + resolved "https://registry.npmjs.org/enzyme-adapter-utils/-/enzyme-adapter-utils-1.14.1.tgz" + integrity sha512-JZgMPF1QOI7IzBj24EZoDpaeG/p8Os7WeBZWTJydpsH7JRStc7jYbHE4CmNQaLqazaGFyLM8ALWA3IIZvxW3PQ== dependencies: - "airbnb-prop-types" "^2.16.0" - "function.prototype.name" "^1.1.5" - "has" "^1.0.3" - "object.assign" "^4.1.4" - "object.fromentries" "^2.0.5" - "prop-types" "^15.8.1" - "semver" "^5.7.1" + airbnb-prop-types "^2.16.0" + function.prototype.name "^1.1.5" + has "^1.0.3" + object.assign "^4.1.4" + object.fromentries "^2.0.5" + prop-types "^15.8.1" + semver "^5.7.1" -"enzyme-shallow-equal@^1.0.1", "enzyme-shallow-equal@^1.0.5": - "integrity" "sha512-i6cwm7hN630JXenxxJFBKzgLC3hMTafFQXflvzHgPmDhOBhxUWDe8AeRv1qp2/uWJ2Y8z5yLWMzmAfkTOiOCZg==" - "resolved" "https://registry.npmjs.org/enzyme-shallow-equal/-/enzyme-shallow-equal-1.0.5.tgz" - "version" "1.0.5" +enzyme-shallow-equal@^1.0.1, enzyme-shallow-equal@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/enzyme-shallow-equal/-/enzyme-shallow-equal-1.0.5.tgz" + integrity sha512-i6cwm7hN630JXenxxJFBKzgLC3hMTafFQXflvzHgPmDhOBhxUWDe8AeRv1qp2/uWJ2Y8z5yLWMzmAfkTOiOCZg== dependencies: - "has" "^1.0.3" - "object-is" "^1.1.5" + has "^1.0.3" + object-is "^1.1.5" -"enzyme@^3.0.0", "enzyme@^3.11.0": - "integrity" "sha512-Dw8/Gs4vRjxY6/6i9wU0V+utmQO9kvh9XLnz3LIudviOnVYDEe2ec+0k+NQoMamn1VrjKgCUOWj5jG/5M5M0Qw==" - "resolved" "https://registry.npmjs.org/enzyme/-/enzyme-3.11.0.tgz" - "version" "3.11.0" +enzyme@^3.11.0: + version "3.11.0" + resolved "https://registry.npmjs.org/enzyme/-/enzyme-3.11.0.tgz" + integrity sha512-Dw8/Gs4vRjxY6/6i9wU0V+utmQO9kvh9XLnz3LIudviOnVYDEe2ec+0k+NQoMamn1VrjKgCUOWj5jG/5M5M0Qw== dependencies: - "array.prototype.flat" "^1.2.3" - "cheerio" "^1.0.0-rc.3" - "enzyme-shallow-equal" "^1.0.1" - "function.prototype.name" "^1.1.2" - "has" "^1.0.3" - "html-element-map" "^1.2.0" - "is-boolean-object" "^1.0.1" - "is-callable" "^1.1.5" - "is-number-object" "^1.0.4" - "is-regex" "^1.0.5" - "is-string" "^1.0.5" - "is-subset" "^0.1.1" - "lodash.escape" "^4.0.1" - "lodash.isequal" "^4.5.0" - "object-inspect" "^1.7.0" - "object-is" "^1.0.2" - "object.assign" "^4.1.0" - "object.entries" "^1.1.1" - "object.values" "^1.1.1" - "raf" "^3.4.1" - "rst-selector-parser" "^2.2.3" - "string.prototype.trim" "^1.2.1" + array.prototype.flat "^1.2.3" + cheerio "^1.0.0-rc.3" + enzyme-shallow-equal "^1.0.1" + function.prototype.name "^1.1.2" + has "^1.0.3" + html-element-map "^1.2.0" + is-boolean-object "^1.0.1" + is-callable "^1.1.5" + is-number-object "^1.0.4" + is-regex "^1.0.5" + is-string "^1.0.5" + is-subset "^0.1.1" + lodash.escape "^4.0.1" + lodash.isequal "^4.5.0" + object-inspect "^1.7.0" + object-is "^1.0.2" + object.assign "^4.1.0" + object.entries "^1.1.1" + object.values "^1.1.1" + raf "^3.4.1" + rst-selector-parser "^2.2.3" + string.prototype.trim "^1.2.1" -"errno@^0.1.1", "errno@^0.1.3", "errno@~0.1.7": - "integrity" "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==" - "resolved" "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz" - "version" "0.1.8" +errno@^0.1.1, errno@^0.1.3, errno@~0.1.7: + version "0.1.8" + resolved "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz" + integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== dependencies: - "prr" "~1.0.1" + prr "~1.0.1" -"error-ex@^1.2.0", "error-ex@^1.3.1": - "integrity" "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==" - "resolved" "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz" - "version" "1.3.2" +error-ex@^1.2.0, error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== dependencies: - "is-arrayish" "^0.2.1" + is-arrayish "^0.2.1" -"error-stack-parser@^2.0.6": - "integrity" "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==" - "resolved" "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz" - "version" "2.1.4" +error-stack-parser@^2.0.6: + version "2.1.4" + resolved "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz" + integrity sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ== dependencies: - "stackframe" "^1.3.4" + stackframe "^1.3.4" -"es-abstract@^1.17.2", "es-abstract@^1.19.0", "es-abstract@^1.20.4": - "integrity" "sha512-0UtvRN79eMe2L+UNEF1BwRe364sj/DXhQ/k5FmivgoSdpM90b8Jc0mDzKMGo7QS0BVbOP/bTwBKNnDc9rNzaPA==" - "resolved" "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.4.tgz" - "version" "1.20.4" +es-abstract@^1.17.2, es-abstract@^1.19.0, es-abstract@^1.20.4: + version "1.20.4" + resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.4.tgz" + integrity sha512-0UtvRN79eMe2L+UNEF1BwRe364sj/DXhQ/k5FmivgoSdpM90b8Jc0mDzKMGo7QS0BVbOP/bTwBKNnDc9rNzaPA== dependencies: - "call-bind" "^1.0.2" - "es-to-primitive" "^1.2.1" - "function-bind" "^1.1.1" - "function.prototype.name" "^1.1.5" - "get-intrinsic" "^1.1.3" - "get-symbol-description" "^1.0.0" - "has" "^1.0.3" - "has-property-descriptors" "^1.0.0" - "has-symbols" "^1.0.3" - "internal-slot" "^1.0.3" - "is-callable" "^1.2.7" - "is-negative-zero" "^2.0.2" - "is-regex" "^1.1.4" - "is-shared-array-buffer" "^1.0.2" - "is-string" "^1.0.7" - "is-weakref" "^1.0.2" - "object-inspect" "^1.12.2" - "object-keys" "^1.1.1" - "object.assign" "^4.1.4" - "regexp.prototype.flags" "^1.4.3" - "safe-regex-test" "^1.0.0" - "string.prototype.trimend" "^1.0.5" - "string.prototype.trimstart" "^1.0.5" - "unbox-primitive" "^1.0.2" + call-bind "^1.0.2" + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + function.prototype.name "^1.1.5" + get-intrinsic "^1.1.3" + get-symbol-description "^1.0.0" + has "^1.0.3" + has-property-descriptors "^1.0.0" + has-symbols "^1.0.3" + internal-slot "^1.0.3" + is-callable "^1.2.7" + is-negative-zero "^2.0.2" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.2" + is-string "^1.0.7" + is-weakref "^1.0.2" + object-inspect "^1.12.2" + object-keys "^1.1.1" + object.assign "^4.1.4" + regexp.prototype.flags "^1.4.3" + safe-regex-test "^1.0.0" + string.prototype.trimend "^1.0.5" + string.prototype.trimstart "^1.0.5" + unbox-primitive "^1.0.2" -"es-array-method-boxes-properly@^1.0.0": - "integrity" "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==" - "resolved" "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz" - "version" "1.0.0" +es-array-method-boxes-properly@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz" + integrity sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA== -"es-get-iterator@^1.0.2", "es-get-iterator@^1.1.2": - "integrity" "sha512-+DTO8GYwbMCwbywjimwZMHp8AuYXOS2JZFWoi2AlPOS3ebnII9w/NLpNZtA7A0YLaVDw+O7KFCeoIV7OPvM7hQ==" - "resolved" "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.2.tgz" - "version" "1.1.2" +es-get-iterator@^1.0.2, es-get-iterator@^1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.2.tgz" + integrity sha512-+DTO8GYwbMCwbywjimwZMHp8AuYXOS2JZFWoi2AlPOS3ebnII9w/NLpNZtA7A0YLaVDw+O7KFCeoIV7OPvM7hQ== dependencies: - "call-bind" "^1.0.2" - "get-intrinsic" "^1.1.0" - "has-symbols" "^1.0.1" - "is-arguments" "^1.1.0" - "is-map" "^2.0.2" - "is-set" "^2.0.2" - "is-string" "^1.0.5" - "isarray" "^2.0.5" + call-bind "^1.0.2" + get-intrinsic "^1.1.0" + has-symbols "^1.0.1" + is-arguments "^1.1.0" + is-map "^2.0.2" + is-set "^2.0.2" + is-string "^1.0.5" + isarray "^2.0.5" -"es-module-lexer@^0.9.0": - "integrity" "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==" - "resolved" "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz" - "version" "0.9.3" +es-module-lexer@^0.9.0: + version "0.9.3" + resolved "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz" + integrity sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ== -"es-shim-unscopables@^1.0.0": - "integrity" "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==" - "resolved" "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz" - "version" "1.0.0" +es-shim-unscopables@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz" + integrity sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w== dependencies: - "has" "^1.0.3" + has "^1.0.3" -"es-to-primitive@^1.2.1": - "integrity" "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==" - "resolved" "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz" - "version" "1.2.1" +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== dependencies: - "is-callable" "^1.1.4" - "is-date-object" "^1.0.1" - "is-symbol" "^1.0.2" + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" -"es5-ext@^0.10.35", "es5-ext@^0.10.50": - "integrity" "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==" - "resolved" "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz" - "version" "0.10.62" +es5-ext@^0.10.35, es5-ext@^0.10.50: + version "0.10.62" + resolved "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz" + 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" + es6-symbol "^3.1.3" + next-tick "^1.1.0" -"es5-shim@^4.5.13": - "integrity" "sha512-jg21/dmlrNQI7JyyA2w7n+yifSxBng0ZralnSfVZjoCawgNTCnS+yBCyVM9DL5itm7SUnDGgv7hcq2XCZX4iRQ==" - "resolved" "https://registry.npmjs.org/es5-shim/-/es5-shim-4.6.7.tgz" - "version" "4.6.7" +es5-shim@^4.5.13: + version "4.6.7" + resolved "https://registry.npmjs.org/es5-shim/-/es5-shim-4.6.7.tgz" + integrity sha512-jg21/dmlrNQI7JyyA2w7n+yifSxBng0ZralnSfVZjoCawgNTCnS+yBCyVM9DL5itm7SUnDGgv7hcq2XCZX4iRQ== -"es6-iterator@^2.0.3", "es6-iterator@2.0.3": - "integrity" "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==" - "resolved" "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz" - "version" "2.0.3" +es6-iterator@2.0.3, es6-iterator@^2.0.3: + version "2.0.3" + resolved "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz" + integrity sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g== dependencies: - "d" "1" - "es5-ext" "^0.10.35" - "es6-symbol" "^3.1.1" + d "1" + es5-ext "^0.10.35" + es6-symbol "^3.1.1" -"es6-object-assign@^1.1.0": - "integrity" "sha512-MEl9uirslVwqQU369iHNWZXsI8yaZYGg/D65aOgZkeyFJwHYSxilf7rQzXKI7DdDuBPrBXbfk3sl9hJhmd5AUw==" - "resolved" "https://registry.npmjs.org/es6-object-assign/-/es6-object-assign-1.1.0.tgz" - "version" "1.1.0" +es6-object-assign@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/es6-object-assign/-/es6-object-assign-1.1.0.tgz" + integrity sha512-MEl9uirslVwqQU369iHNWZXsI8yaZYGg/D65aOgZkeyFJwHYSxilf7rQzXKI7DdDuBPrBXbfk3sl9hJhmd5AUw== -"es6-shim@^0.35.5": - "integrity" "sha512-baZkUfTDSx7X69+NA8imbvGrsPfqH0MX7ADdIDjqwsI8lkTgLIiD2QWrUCSGsUQ0YMnSCA/4pNgSyXdnLHWf3A==" - "resolved" "https://registry.npmjs.org/es6-shim/-/es6-shim-0.35.7.tgz" - "version" "0.35.7" +es6-shim@^0.35.5: + version "0.35.7" + resolved "https://registry.npmjs.org/es6-shim/-/es6-shim-0.35.7.tgz" + integrity sha512-baZkUfTDSx7X69+NA8imbvGrsPfqH0MX7ADdIDjqwsI8lkTgLIiD2QWrUCSGsUQ0YMnSCA/4pNgSyXdnLHWf3A== -"es6-symbol@^3.1.1", "es6-symbol@^3.1.3": - "integrity" "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==" - "resolved" "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz" - "version" "3.1.3" +es6-symbol@^3.1.1, es6-symbol@^3.1.3: + version "3.1.3" + resolved "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz" + integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== dependencies: - "d" "^1.0.1" - "ext" "^1.1.2" + d "^1.0.1" + ext "^1.1.2" -"escalade@^3.0.2", "escalade@^3.1.1": - "integrity" "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" - "resolved" "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz" - "version" "3.1.1" +escalade@^3.0.2, escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== -"escape-goat@^2.0.0": - "integrity" "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==" - "resolved" "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz" - "version" "2.1.1" +escape-goat@^2.0.0: + version "2.1.1" + resolved "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz" + integrity sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q== -"escape-html@~1.0.3": - "integrity" "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" - "resolved" "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz" - "version" "1.0.3" +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz" + integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== -"escape-string-regexp@^1.0.2", "escape-string-regexp@^1.0.5": - "integrity" "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" - "resolved" "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" - "version" "1.0.5" +escape-string-regexp@2.0.0, escape-string-regexp@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz" + integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== -"escape-string-regexp@^2.0.0": - "integrity" "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==" - "resolved" "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz" - "version" "2.0.0" +escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== -"escape-string-regexp@^4.0.0": - "integrity" "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" - "resolved" "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" - "version" "4.0.0" +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== -"escape-string-regexp@2.0.0": - "integrity" "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==" - "resolved" "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz" - "version" "2.0.0" - -"escodegen@^1.11.0": - "integrity" "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==" - "resolved" "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz" - "version" "1.14.3" +escodegen@^1.11.0: + version "1.14.3" + resolved "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz" + integrity sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw== dependencies: - "esprima" "^4.0.1" - "estraverse" "^4.2.0" - "esutils" "^2.0.2" - "optionator" "^0.8.1" + esprima "^4.0.1" + estraverse "^4.2.0" + esutils "^2.0.2" + optionator "^0.8.1" optionalDependencies: - "source-map" "~0.6.1" + source-map "~0.6.1" -"escodegen@^2.0.0": - "integrity" "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==" - "resolved" "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz" - "version" "2.0.0" +escodegen@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz" + integrity sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw== dependencies: - "esprima" "^4.0.1" - "estraverse" "^5.2.0" - "esutils" "^2.0.2" - "optionator" "^0.8.1" + esprima "^4.0.1" + estraverse "^5.2.0" + esutils "^2.0.2" + optionator "^0.8.1" optionalDependencies: - "source-map" "~0.6.1" + source-map "~0.6.1" -"eslint-config-react-app-eslint-six@^4.0.2": - "integrity" "sha512-g1UtZHhgr4LhFb2Qt/caLLevZHE9ayN7NxsflaDnTOY2y0EydrvrvYPie36/7ML1fe9q+av+Wg3r9k7cszIqBQ==" - "resolved" "https://registry.npmjs.org/eslint-config-react-app-eslint-six/-/eslint-config-react-app-eslint-six-4.0.2.tgz" - "version" "4.0.2" +eslint-config-react-app-eslint-six@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/eslint-config-react-app-eslint-six/-/eslint-config-react-app-eslint-six-4.0.2.tgz" + integrity sha512-g1UtZHhgr4LhFb2Qt/caLLevZHE9ayN7NxsflaDnTOY2y0EydrvrvYPie36/7ML1fe9q+av+Wg3r9k7cszIqBQ== dependencies: - "confusing-browser-globals" "^1.0.7" + confusing-browser-globals "^1.0.7" -"eslint-config-react-app@^5.2.0": - "integrity" "sha512-pGIZ8t0mFLcV+6ZirRgYK6RVqUIKRIi9MmgzUEmrIknsn3AdO0I32asO86dJgloHq+9ZPl8UIg8mYrvgP5u2wQ==" - "resolved" "https://registry.npmjs.org/eslint-config-react-app/-/eslint-config-react-app-5.2.1.tgz" - "version" "5.2.1" +eslint-config-react-app@^5.2.0: + version "5.2.1" + resolved "https://registry.npmjs.org/eslint-config-react-app/-/eslint-config-react-app-5.2.1.tgz" + integrity sha512-pGIZ8t0mFLcV+6ZirRgYK6RVqUIKRIi9MmgzUEmrIknsn3AdO0I32asO86dJgloHq+9ZPl8UIg8mYrvgP5u2wQ== dependencies: - "confusing-browser-globals" "^1.0.9" + confusing-browser-globals "^1.0.9" -"eslint-config-react-app@^7.0.1": - "integrity" "sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA==" - "resolved" "https://registry.npmjs.org/eslint-config-react-app/-/eslint-config-react-app-7.0.1.tgz" - "version" "7.0.1" +eslint-config-react-app@^7.0.1: + version "7.0.1" + resolved "https://registry.npmjs.org/eslint-config-react-app/-/eslint-config-react-app-7.0.1.tgz" + integrity sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA== dependencies: "@babel/core" "^7.16.0" "@babel/eslint-parser" "^7.16.3" "@rushstack/eslint-patch" "^1.1.0" "@typescript-eslint/eslint-plugin" "^5.5.0" "@typescript-eslint/parser" "^5.5.0" - "babel-preset-react-app" "^10.0.1" - "confusing-browser-globals" "^1.0.11" - "eslint-plugin-flowtype" "^8.0.3" - "eslint-plugin-import" "^2.25.3" - "eslint-plugin-jest" "^25.3.0" - "eslint-plugin-jsx-a11y" "^6.5.1" - "eslint-plugin-react" "^7.27.1" - "eslint-plugin-react-hooks" "^4.3.0" - "eslint-plugin-testing-library" "^5.0.1" + babel-preset-react-app "^10.0.1" + confusing-browser-globals "^1.0.11" + eslint-plugin-flowtype "^8.0.3" + eslint-plugin-import "^2.25.3" + eslint-plugin-jest "^25.3.0" + eslint-plugin-jsx-a11y "^6.5.1" + eslint-plugin-react "^7.27.1" + eslint-plugin-react-hooks "^4.3.0" + eslint-plugin-testing-library "^5.0.1" -"eslint-import-resolver-node@^0.3.4", "eslint-import-resolver-node@^0.3.6": - "integrity" "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==" - "resolved" "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz" - "version" "0.3.6" +eslint-import-resolver-node@^0.3.4, eslint-import-resolver-node@^0.3.6: + version "0.3.6" + resolved "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz" + integrity sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw== dependencies: - "debug" "^3.2.7" - "resolve" "^1.20.0" + debug "^3.2.7" + resolve "^1.20.0" -"eslint-loader@3.0.3": - "integrity" "sha512-+YRqB95PnNvxNp1HEjQmvf9KNvCin5HXYYseOXVC2U0KEcw4IkQ2IQEBG46j7+gW39bMzeu0GsUhVbBY3Votpw==" - "resolved" "https://registry.npmjs.org/eslint-loader/-/eslint-loader-3.0.3.tgz" - "version" "3.0.3" +eslint-loader@3.0.3: + version "3.0.3" + resolved "https://registry.npmjs.org/eslint-loader/-/eslint-loader-3.0.3.tgz" + integrity sha512-+YRqB95PnNvxNp1HEjQmvf9KNvCin5HXYYseOXVC2U0KEcw4IkQ2IQEBG46j7+gW39bMzeu0GsUhVbBY3Votpw== dependencies: - "fs-extra" "^8.1.0" - "loader-fs-cache" "^1.0.2" - "loader-utils" "^1.2.3" - "object-hash" "^2.0.1" - "schema-utils" "^2.6.1" + fs-extra "^8.1.0" + loader-fs-cache "^1.0.2" + loader-utils "^1.2.3" + object-hash "^2.0.1" + schema-utils "^2.6.1" -"eslint-module-utils@^2.6.1", "eslint-module-utils@^2.7.3": - "integrity" "sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==" - "resolved" "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz" - "version" "2.7.4" +eslint-module-utils@^2.6.1, eslint-module-utils@^2.7.3: + version "2.7.4" + resolved "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz" + integrity sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA== dependencies: - "debug" "^3.2.7" + debug "^3.2.7" -"eslint-plugin-flowtype@^8.0.3": - "integrity" "sha512-dX8l6qUL6O+fYPtpNRideCFSpmWOUVx5QcaGLVqe/vlDiBSe4vYljDWDETwnyFzpl7By/WVIu6rcrniCgH9BqQ==" - "resolved" "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-8.0.3.tgz" - "version" "8.0.3" +eslint-plugin-flowtype@4.7.0: + version "4.7.0" + resolved "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-4.7.0.tgz" + integrity sha512-M+hxhSCk5QBEValO5/UqrS4UunT+MgplIJK5wA1sCtXjzBcZkpTGRwxmLHhGpbHcrmQecgt6ZL/KDdXWqGB7VA== dependencies: - "lodash" "^4.17.21" - "string-natural-compare" "^3.0.1" + lodash "^4.17.15" -"eslint-plugin-flowtype@3.x", "eslint-plugin-flowtype@3.x || 4.x", "eslint-plugin-flowtype@4.7.0": - "integrity" "sha512-M+hxhSCk5QBEValO5/UqrS4UunT+MgplIJK5wA1sCtXjzBcZkpTGRwxmLHhGpbHcrmQecgt6ZL/KDdXWqGB7VA==" - "resolved" "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-4.7.0.tgz" - "version" "4.7.0" +eslint-plugin-flowtype@^8.0.3: + version "8.0.3" + resolved "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-8.0.3.tgz" + integrity sha512-dX8l6qUL6O+fYPtpNRideCFSpmWOUVx5QcaGLVqe/vlDiBSe4vYljDWDETwnyFzpl7By/WVIu6rcrniCgH9BqQ== dependencies: - "lodash" "^4.17.15" + lodash "^4.17.21" + string-natural-compare "^3.0.1" -"eslint-plugin-import@^2.25.3": - "integrity" "sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==" - "resolved" "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz" - "version" "2.26.0" +eslint-plugin-import@2.23.4: + version "2.23.4" + resolved "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.23.4.tgz" + integrity sha512-6/wP8zZRsnQFiR3iaPFgh5ImVRM1WN5NUWfTIRqwOdeiGJlBcSk82o1FEVq8yXmy4lkIzTo7YhHCIxlU/2HyEQ== dependencies: - "array-includes" "^3.1.4" - "array.prototype.flat" "^1.2.5" - "debug" "^2.6.9" - "doctrine" "^2.1.0" - "eslint-import-resolver-node" "^0.3.6" - "eslint-module-utils" "^2.7.3" - "has" "^1.0.3" - "is-core-module" "^2.8.1" - "is-glob" "^4.0.3" - "minimatch" "^3.1.2" - "object.values" "^1.1.5" - "resolve" "^1.22.0" - "tsconfig-paths" "^3.14.1" + array-includes "^3.1.3" + array.prototype.flat "^1.2.4" + debug "^2.6.9" + doctrine "^2.1.0" + eslint-import-resolver-node "^0.3.4" + eslint-module-utils "^2.6.1" + find-up "^2.0.0" + has "^1.0.3" + is-core-module "^2.4.0" + minimatch "^3.0.4" + object.values "^1.1.3" + pkg-up "^2.0.0" + read-pkg-up "^3.0.0" + resolve "^1.20.0" + tsconfig-paths "^3.9.0" -"eslint-plugin-import@2.23.4", "eslint-plugin-import@2.x": - "integrity" "sha512-6/wP8zZRsnQFiR3iaPFgh5ImVRM1WN5NUWfTIRqwOdeiGJlBcSk82o1FEVq8yXmy4lkIzTo7YhHCIxlU/2HyEQ==" - "resolved" "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.23.4.tgz" - "version" "2.23.4" +eslint-plugin-import@^2.25.3: + version "2.26.0" + resolved "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz" + integrity sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA== dependencies: - "array-includes" "^3.1.3" - "array.prototype.flat" "^1.2.4" - "debug" "^2.6.9" - "doctrine" "^2.1.0" - "eslint-import-resolver-node" "^0.3.4" - "eslint-module-utils" "^2.6.1" - "find-up" "^2.0.0" - "has" "^1.0.3" - "is-core-module" "^2.4.0" - "minimatch" "^3.0.4" - "object.values" "^1.1.3" - "pkg-up" "^2.0.0" - "read-pkg-up" "^3.0.0" - "resolve" "^1.20.0" - "tsconfig-paths" "^3.9.0" + array-includes "^3.1.4" + array.prototype.flat "^1.2.5" + debug "^2.6.9" + doctrine "^2.1.0" + eslint-import-resolver-node "^0.3.6" + eslint-module-utils "^2.7.3" + has "^1.0.3" + is-core-module "^2.8.1" + is-glob "^4.0.3" + minimatch "^3.1.2" + object.values "^1.1.5" + resolve "^1.22.0" + tsconfig-paths "^3.14.1" -"eslint-plugin-jest@^25.3.0": - "integrity" "sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==" - "resolved" "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-25.7.0.tgz" - "version" "25.7.0" +eslint-plugin-jest@^25.3.0: + version "25.7.0" + resolved "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-25.7.0.tgz" + integrity sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ== dependencies: "@typescript-eslint/experimental-utils" "^5.0.0" -"eslint-plugin-jsx-a11y@^6.5.1": - "integrity" "sha512-sXgFVNHiWffBq23uiS/JaP6eVR622DqwB4yTzKvGZGcPq6/yZ3WmOZfuBks/vHWo9GaFOqC2ZK4i6+C35knx7Q==" - "resolved" "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.6.1.tgz" - "version" "6.6.1" - dependencies: - "@babel/runtime" "^7.18.9" - "aria-query" "^4.2.2" - "array-includes" "^3.1.5" - "ast-types-flow" "^0.0.7" - "axe-core" "^4.4.3" - "axobject-query" "^2.2.0" - "damerau-levenshtein" "^1.0.8" - "emoji-regex" "^9.2.2" - "has" "^1.0.3" - "jsx-ast-utils" "^3.3.2" - "language-tags" "^1.0.5" - "minimatch" "^3.1.2" - "semver" "^6.3.0" - -"eslint-plugin-jsx-a11y@6.4.1", "eslint-plugin-jsx-a11y@6.x": - "integrity" "sha512-0rGPJBbwHoGNPU73/QCLP/vveMlM1b1Z9PponxO87jfr6tuH5ligXbDT6nHSSzBC8ovX2Z+BQu7Bk5D/Xgq9zg==" - "resolved" "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.4.1.tgz" - "version" "6.4.1" +eslint-plugin-jsx-a11y@6.4.1: + version "6.4.1" + resolved "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.4.1.tgz" + integrity sha512-0rGPJBbwHoGNPU73/QCLP/vveMlM1b1Z9PponxO87jfr6tuH5ligXbDT6nHSSzBC8ovX2Z+BQu7Bk5D/Xgq9zg== dependencies: "@babel/runtime" "^7.11.2" - "aria-query" "^4.2.2" - "array-includes" "^3.1.1" - "ast-types-flow" "^0.0.7" - "axe-core" "^4.0.2" - "axobject-query" "^2.2.0" - "damerau-levenshtein" "^1.0.6" - "emoji-regex" "^9.0.0" - "has" "^1.0.3" - "jsx-ast-utils" "^3.1.0" - "language-tags" "^1.0.5" + aria-query "^4.2.2" + array-includes "^3.1.1" + ast-types-flow "^0.0.7" + axe-core "^4.0.2" + axobject-query "^2.2.0" + damerau-levenshtein "^1.0.6" + emoji-regex "^9.0.0" + has "^1.0.3" + jsx-ast-utils "^3.1.0" + language-tags "^1.0.5" -"eslint-plugin-react-hooks@^4.3.0", "eslint-plugin-react-hooks@^4.5.0", "eslint-plugin-react-hooks@1.x", "eslint-plugin-react-hooks@1.x || 2.x": - "integrity" "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==" - "resolved" "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz" - "version" "4.6.0" - -"eslint-plugin-react@^7.27.1", "eslint-plugin-react@^7.30.0", "eslint-plugin-react@7.x": - "integrity" "sha512-TTvq5JsT5v56wPa9OYHzsrOlHzKZKjV+aLgS+55NJP/cuzdiQPC7PfYoUjMoxlffKtvijpk7vA/jmuqRb9nohw==" - "resolved" "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.31.11.tgz" - "version" "7.31.11" +eslint-plugin-jsx-a11y@^6.5.1: + version "6.6.1" + resolved "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.6.1.tgz" + integrity sha512-sXgFVNHiWffBq23uiS/JaP6eVR622DqwB4yTzKvGZGcPq6/yZ3WmOZfuBks/vHWo9GaFOqC2ZK4i6+C35knx7Q== dependencies: - "array-includes" "^3.1.6" - "array.prototype.flatmap" "^1.3.1" - "array.prototype.tosorted" "^1.1.1" - "doctrine" "^2.1.0" - "estraverse" "^5.3.0" - "jsx-ast-utils" "^2.4.1 || ^3.0.0" - "minimatch" "^3.1.2" - "object.entries" "^1.1.6" - "object.fromentries" "^2.0.6" - "object.hasown" "^1.1.2" - "object.values" "^1.1.6" - "prop-types" "^15.8.1" - "resolve" "^2.0.0-next.3" - "semver" "^6.3.0" - "string.prototype.matchall" "^4.0.8" + "@babel/runtime" "^7.18.9" + aria-query "^4.2.2" + array-includes "^3.1.5" + ast-types-flow "^0.0.7" + axe-core "^4.4.3" + axobject-query "^2.2.0" + damerau-levenshtein "^1.0.8" + emoji-regex "^9.2.2" + has "^1.0.3" + jsx-ast-utils "^3.3.2" + language-tags "^1.0.5" + minimatch "^3.1.2" + semver "^6.3.0" -"eslint-plugin-storybook@=0.5.12": - "integrity" "sha512-ojuNKnrZFrQpm5N5Lp8UR0VEn4HtLjlNn6nxQAYlmTsEXNigtId1XPuMbXAsvFcEmv3RTb5l+9tZgkhSURfACg==" - "resolved" "https://registry.npmjs.org/eslint-plugin-storybook/-/eslint-plugin-storybook-0.5.12.tgz" - "version" "0.5.12" +eslint-plugin-react-hooks@^4.3.0, eslint-plugin-react-hooks@^4.5.0: + version "4.6.0" + resolved "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz" + integrity sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g== + +eslint-plugin-react@^7.27.1, eslint-plugin-react@^7.30.0: + version "7.31.11" + resolved "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.31.11.tgz" + integrity sha512-TTvq5JsT5v56wPa9OYHzsrOlHzKZKjV+aLgS+55NJP/cuzdiQPC7PfYoUjMoxlffKtvijpk7vA/jmuqRb9nohw== + dependencies: + array-includes "^3.1.6" + array.prototype.flatmap "^1.3.1" + array.prototype.tosorted "^1.1.1" + doctrine "^2.1.0" + estraverse "^5.3.0" + jsx-ast-utils "^2.4.1 || ^3.0.0" + minimatch "^3.1.2" + object.entries "^1.1.6" + object.fromentries "^2.0.6" + object.hasown "^1.1.2" + object.values "^1.1.6" + prop-types "^15.8.1" + resolve "^2.0.0-next.3" + semver "^6.3.0" + string.prototype.matchall "^4.0.8" + +eslint-plugin-storybook@=0.5.12: + version "0.5.12" + resolved "https://registry.npmjs.org/eslint-plugin-storybook/-/eslint-plugin-storybook-0.5.12.tgz" + integrity sha512-ojuNKnrZFrQpm5N5Lp8UR0VEn4HtLjlNn6nxQAYlmTsEXNigtId1XPuMbXAsvFcEmv3RTb5l+9tZgkhSURfACg== dependencies: "@storybook/csf" "^0.0.1" "@typescript-eslint/experimental-utils" "^5.3.0" - "requireindex" "^1.1.0" + requireindex "^1.1.0" -"eslint-plugin-testing-library@^5.0.1": - "integrity" "sha512-6BQp3tmb79jLLasPHJmy8DnxREe+2Pgf7L+7o09TSWPfdqqtQfRZmZNetr5mOs3yqZk/MRNxpN3RUpJe0wB4LQ==" - "resolved" "https://registry.npmjs.org/eslint-plugin-testing-library/-/eslint-plugin-testing-library-5.9.1.tgz" - "version" "5.9.1" +eslint-plugin-testing-library@^5.0.1: + version "5.9.1" + resolved "https://registry.npmjs.org/eslint-plugin-testing-library/-/eslint-plugin-testing-library-5.9.1.tgz" + integrity sha512-6BQp3tmb79jLLasPHJmy8DnxREe+2Pgf7L+7o09TSWPfdqqtQfRZmZNetr5mOs3yqZk/MRNxpN3RUpJe0wB4LQ== dependencies: "@typescript-eslint/utils" "^5.13.0" -"eslint-scope@^4.0.3": - "integrity" "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==" - "resolved" "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz" - "version" "4.0.3" +eslint-scope@5.1.1, eslint-scope@^5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== dependencies: - "esrecurse" "^4.1.0" - "estraverse" "^4.1.1" + esrecurse "^4.3.0" + estraverse "^4.1.1" -"eslint-scope@^5.1.1", "eslint-scope@5.1.1": - "integrity" "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==" - "resolved" "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz" - "version" "5.1.1" +eslint-scope@^4.0.3: + version "4.0.3" + resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz" + integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== dependencies: - "esrecurse" "^4.3.0" - "estraverse" "^4.1.1" + esrecurse "^4.1.0" + estraverse "^4.1.1" -"eslint-scope@^7.1.1": - "integrity" "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==" - "resolved" "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz" - "version" "7.1.1" +eslint-scope@^7.1.1: + version "7.1.1" + resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz" + integrity sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw== dependencies: - "esrecurse" "^4.3.0" - "estraverse" "^5.2.0" + esrecurse "^4.3.0" + estraverse "^5.2.0" -"eslint-utils@^3.0.0": - "integrity" "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==" - "resolved" "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz" - "version" "3.0.0" +eslint-utils@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz" + integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== dependencies: - "eslint-visitor-keys" "^2.0.0" + eslint-visitor-keys "^2.0.0" -"eslint-visitor-keys@^2.0.0": - "integrity" "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==" - "resolved" "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz" - "version" "2.1.0" +eslint-visitor-keys@^2.0.0, eslint-visitor-keys@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz" + integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== -"eslint-visitor-keys@^2.1.0": - "integrity" "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==" - "resolved" "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz" - "version" "2.1.0" +eslint-visitor-keys@^3.3.0: + version "3.3.0" + resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz" + integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== -"eslint-visitor-keys@^3.3.0": - "integrity" "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==" - "resolved" "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz" - "version" "3.3.0" - -"eslint-webpack-plugin@^3.1.1": - "integrity" "sha512-avrKcGncpPbPSUHX6B3stNGzkKFto3eL+DKM4+VyMrVnhPc3vRczVlCq3uhuFOdRvDHTVXuzwk1ZKUrqDQHQ9w==" - "resolved" "https://registry.npmjs.org/eslint-webpack-plugin/-/eslint-webpack-plugin-3.2.0.tgz" - "version" "3.2.0" +eslint-webpack-plugin@^3.1.1: + version "3.2.0" + resolved "https://registry.npmjs.org/eslint-webpack-plugin/-/eslint-webpack-plugin-3.2.0.tgz" + integrity sha512-avrKcGncpPbPSUHX6B3stNGzkKFto3eL+DKM4+VyMrVnhPc3vRczVlCq3uhuFOdRvDHTVXuzwk1ZKUrqDQHQ9w== dependencies: "@types/eslint" "^7.29.0 || ^8.4.1" - "jest-worker" "^28.0.2" - "micromatch" "^4.0.5" - "normalize-path" "^3.0.0" - "schema-utils" "^4.0.0" + jest-worker "^28.0.2" + micromatch "^4.0.5" + normalize-path "^3.0.0" + schema-utils "^4.0.0" -"eslint@*", "eslint@^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0", "eslint@^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8", "eslint@^3 || ^4 || ^5 || ^6 || ^7", "eslint@^3 || ^4 || ^5 || ^6 || ^7 || ^8", "eslint@^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0", "eslint@^5.0.0 || ^6.0.0", "eslint@^6.0.0 || ^7.0.0 || ^8.0.0", "eslint@^7.0.0 || ^8.0.0", "eslint@^7.5.0 || ^8.0.0", "eslint@^8.0.0", "eslint@^8.1.0", "eslint@^8.17.0", "eslint@^8.3.0", "eslint@>= 6", "eslint@>=5", "eslint@>=6", "eslint@>=6.1.0", "eslint@6.x": - "integrity" "sha512-S27Di+EVyMxcHiwDrFzk8dJYAaD+/5SoWKxL1ri/71CRHsnJnRDPNt2Kzj24+MT9FDupf4aqqyqPrvI8MvQ4VQ==" - "resolved" "https://registry.npmjs.org/eslint/-/eslint-8.28.0.tgz" - "version" "8.28.0" +eslint@^8.17.0, eslint@^8.3.0: + version "8.28.0" + resolved "https://registry.npmjs.org/eslint/-/eslint-8.28.0.tgz" + integrity sha512-S27Di+EVyMxcHiwDrFzk8dJYAaD+/5SoWKxL1ri/71CRHsnJnRDPNt2Kzj24+MT9FDupf4aqqyqPrvI8MvQ4VQ== 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" + 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": - "integrity" "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==" - "resolved" "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz" - "version" "9.4.1" +espree@^9.4.0: + version "9.4.1" + resolved "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz" + integrity sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg== dependencies: - "acorn" "^8.8.0" - "acorn-jsx" "^5.3.2" - "eslint-visitor-keys" "^3.3.0" + acorn "^8.8.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^3.3.0" -"esprima@^4.0.0", "esprima@^4.0.1", "esprima@~4.0.0": - "integrity" "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" - "resolved" "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" - "version" "4.0.1" +esprima@^4.0.0, esprima@^4.0.1, esprima@~4.0.0: + version "4.0.1" + resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== -"esquery@^1.4.0": - "integrity" "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==" - "resolved" "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz" - "version" "1.4.0" +esquery@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz" + integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== dependencies: - "estraverse" "^5.1.0" + estraverse "^5.1.0" -"esrecurse@^4.1.0", "esrecurse@^4.3.0": - "integrity" "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==" - "resolved" "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz" - "version" "4.3.0" +esrecurse@^4.1.0, esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== dependencies: - "estraverse" "^5.2.0" + estraverse "^5.2.0" -"estraverse@^4.1.1", "estraverse@^4.2.0": - "integrity" "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" - "resolved" "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz" - "version" "4.3.0" +estraverse@^4.1.1, estraverse@^4.2.0: + version "4.3.0" + resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== -"estraverse@^5.1.0": - "integrity" "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" - "resolved" "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" - "version" "5.3.0" +estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: + version "5.3.0" + resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== -"estraverse@^5.2.0": - "integrity" "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" - "resolved" "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" - "version" "5.3.0" - -"estraverse@^5.3.0": - "integrity" "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" - "resolved" "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" - "version" "5.3.0" - -"estree-to-babel@^3.1.0": - "integrity" "sha512-YNF+mZ/Wu2FU/gvmzuWtYc8rloubL7wfXCTgouFrnjGVXPA/EeYYA7pupXWrb3Iv1cTBeSSxxJIbK23l4MRNqg==" - "resolved" "https://registry.npmjs.org/estree-to-babel/-/estree-to-babel-3.2.1.tgz" - "version" "3.2.1" +estree-to-babel@^3.1.0: + version "3.2.1" + resolved "https://registry.npmjs.org/estree-to-babel/-/estree-to-babel-3.2.1.tgz" + integrity sha512-YNF+mZ/Wu2FU/gvmzuWtYc8rloubL7wfXCTgouFrnjGVXPA/EeYYA7pupXWrb3Iv1cTBeSSxxJIbK23l4MRNqg== dependencies: "@babel/traverse" "^7.1.6" "@babel/types" "^7.2.0" - "c8" "^7.6.0" + c8 "^7.6.0" -"estree-walker@^1.0.1": - "integrity" "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==" - "resolved" "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz" - "version" "1.0.1" +estree-walker@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz" + integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== -"esutils@^2.0.2": - "integrity" "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" - "resolved" "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" - "version" "2.0.3" +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== -"etag@~1.8.1": - "integrity" "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==" - "resolved" "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz" - "version" "1.8.1" +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz" + integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== -"eventemitter3@^4.0.0": - "integrity" "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" - "resolved" "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz" - "version" "4.0.7" +eventemitter3@^4.0.0: + version "4.0.7" + resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz" + integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== -"events@^1.0.2": - "integrity" "sha512-kEcvvCBByWXGnZy6JUlgAp2gBIUjfCAV6P6TgT1/aaQKcmuAEC4OZTV1I4EWQLz2gxZw76atuVyvHhTxvi0Flw==" - "resolved" "https://registry.npmjs.org/events/-/events-1.1.1.tgz" - "version" "1.1.1" +events@^1.0.2: + version "1.1.1" + resolved "https://registry.npmjs.org/events/-/events-1.1.1.tgz" + integrity sha512-kEcvvCBByWXGnZy6JUlgAp2gBIUjfCAV6P6TgT1/aaQKcmuAEC4OZTV1I4EWQLz2gxZw76atuVyvHhTxvi0Flw== -"events@^3.0.0", "events@^3.2.0": - "integrity" "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" - "resolved" "https://registry.npmjs.org/events/-/events-3.3.0.tgz" - "version" "3.3.0" +events@^3.0.0, events@^3.2.0: + version "3.3.0" + resolved "https://registry.npmjs.org/events/-/events-3.3.0.tgz" + integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== -"evp_bytestokey@^1.0.0", "evp_bytestokey@^1.0.3": - "integrity" "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==" - "resolved" "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz" - "version" "1.0.3" +evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz" + integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== dependencies: - "md5.js" "^1.3.4" - "safe-buffer" "^5.1.1" + md5.js "^1.3.4" + safe-buffer "^5.1.1" -"exec-sh@^0.3.2": - "integrity" "sha512-nQn+hI3yp+oD0huYhKwvYI32+JFeq+XkNcD1GAo3Y/MjxsfVGmrrzrnzjWiNY6f+pUCP440fThsFh5gZrRAU/w==" - "resolved" "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.6.tgz" - "version" "0.3.6" +exec-sh@^0.3.2: + version "0.3.6" + resolved "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.6.tgz" + integrity sha512-nQn+hI3yp+oD0huYhKwvYI32+JFeq+XkNcD1GAo3Y/MjxsfVGmrrzrnzjWiNY6f+pUCP440fThsFh5gZrRAU/w== -"execa@^1.0.0": - "integrity" "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==" - "resolved" "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz" - "version" "1.0.0" +execa@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz" + integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== dependencies: - "cross-spawn" "^6.0.0" - "get-stream" "^4.0.0" - "is-stream" "^1.1.0" - "npm-run-path" "^2.0.0" - "p-finally" "^1.0.0" - "signal-exit" "^3.0.0" - "strip-eof" "^1.0.0" + cross-spawn "^6.0.0" + get-stream "^4.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" -"execa@^5.0.0": - "integrity" "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==" - "resolved" "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz" - "version" "5.1.1" +execa@^5.0.0, execa@^5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz" + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== dependencies: - "cross-spawn" "^7.0.3" - "get-stream" "^6.0.0" - "human-signals" "^2.1.0" - "is-stream" "^2.0.0" - "merge-stream" "^2.0.0" - "npm-run-path" "^4.0.1" - "onetime" "^5.1.2" - "signal-exit" "^3.0.3" - "strip-final-newline" "^2.0.0" + cross-spawn "^7.0.3" + get-stream "^6.0.0" + human-signals "^2.1.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" + strip-final-newline "^2.0.0" -"execa@^5.1.1": - "integrity" "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==" - "resolved" "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz" - "version" "5.1.1" +exit@^0.1.2: + version "0.1.2" + resolved "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz" + integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== + +expand-brackets@^0.1.4: + version "0.1.5" + resolved "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz" + integrity sha512-hxx03P2dJxss6ceIeri9cmYOT4SRs3Zk3afZwWpOsRqLqprhTR8u++SlC+sFGsQr7WGFPdMF7Gjc1njDLDK6UA== dependencies: - "cross-spawn" "^7.0.3" - "get-stream" "^6.0.0" - "human-signals" "^2.1.0" - "is-stream" "^2.0.0" - "merge-stream" "^2.0.0" - "npm-run-path" "^4.0.1" - "onetime" "^5.1.2" - "signal-exit" "^3.0.3" - "strip-final-newline" "^2.0.0" + is-posix-bracket "^0.1.0" -"exit@^0.1.2": - "integrity" "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==" - "resolved" "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz" - "version" "0.1.2" - -"expand-brackets@^0.1.4": - "integrity" "sha512-hxx03P2dJxss6ceIeri9cmYOT4SRs3Zk3afZwWpOsRqLqprhTR8u++SlC+sFGsQr7WGFPdMF7Gjc1njDLDK6UA==" - "resolved" "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz" - "version" "0.1.5" +expand-brackets@^2.1.4: + version "2.1.4" + resolved "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz" + integrity sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA== dependencies: - "is-posix-bracket" "^0.1.0" + debug "^2.3.3" + define-property "^0.2.5" + extend-shallow "^2.0.1" + posix-character-classes "^0.1.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" -"expand-brackets@^2.1.4": - "integrity" "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==" - "resolved" "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz" - "version" "2.1.4" +expand-range@^1.8.1: + version "1.8.2" + resolved "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz" + integrity sha512-AFASGfIlnIbkKPQwX1yHaDjFvh/1gyKJODme52V6IORh69uEYgZp0o9C+qsIGNVEiuuhQU0CSSl++Rlegg1qvA== dependencies: - "debug" "^2.3.3" - "define-property" "^0.2.5" - "extend-shallow" "^2.0.1" - "posix-character-classes" "^0.1.0" - "regex-not" "^1.0.0" - "snapdragon" "^0.8.1" - "to-regex" "^3.0.1" + fill-range "^2.1.0" -"expand-range@^1.8.1": - "integrity" "sha512-AFASGfIlnIbkKPQwX1yHaDjFvh/1gyKJODme52V6IORh69uEYgZp0o9C+qsIGNVEiuuhQU0CSSl++Rlegg1qvA==" - "resolved" "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz" - "version" "1.8.2" - dependencies: - "fill-range" "^2.1.0" - -"expect@^27.5.1": - "integrity" "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==" - "resolved" "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz" - "version" "27.5.1" +expect@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz" + integrity sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw== dependencies: "@jest/types" "^27.5.1" - "jest-get-type" "^27.5.1" - "jest-matcher-utils" "^27.5.1" - "jest-message-util" "^27.5.1" + jest-get-type "^27.5.1" + jest-matcher-utils "^27.5.1" + jest-message-util "^27.5.1" -"express@^4.17.1", "express@^4.17.3": - "integrity" "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==" - "resolved" "https://registry.npmjs.org/express/-/express-4.18.2.tgz" - "version" "4.18.2" +express@^4.17.1, express@^4.17.3: + version "4.18.2" + resolved "https://registry.npmjs.org/express/-/express-4.18.2.tgz" + 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" + 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": - "integrity" "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==" - "resolved" "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz" - "version" "1.7.0" +ext@^1.1.2: + version "1.7.0" + resolved "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz" + integrity sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw== dependencies: - "type" "^2.7.2" + type "^2.7.2" -"extend-shallow@^2.0.1": - "integrity" "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==" - "resolved" "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz" - "version" "2.0.1" +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz" + integrity sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug== dependencies: - "is-extendable" "^0.1.0" + is-extendable "^0.1.0" -"extend-shallow@^3.0.0", "extend-shallow@^3.0.2": - "integrity" "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==" - "resolved" "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz" - "version" "3.0.2" +extend-shallow@^3.0.0, extend-shallow@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz" + integrity sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q== dependencies: - "assign-symbols" "^1.0.0" - "is-extendable" "^1.0.1" + assign-symbols "^1.0.0" + is-extendable "^1.0.1" -"extend@^3.0.0", "extend@~3.0.2": - "integrity" "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - "resolved" "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz" - "version" "3.0.2" +extend@^3.0.0, extend@~3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== -"extglob@^0.3.1": - "integrity" "sha512-1FOj1LOwn42TMrruOHGt18HemVnbwAmAak7krWk+wa93KXxGbK+2jpezm+ytJYDaBX0/SPLZFHKM7m+tKobWGg==" - "resolved" "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz" - "version" "0.3.2" +extglob@^0.3.1: + version "0.3.2" + resolved "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz" + integrity sha512-1FOj1LOwn42TMrruOHGt18HemVnbwAmAak7krWk+wa93KXxGbK+2jpezm+ytJYDaBX0/SPLZFHKM7m+tKobWGg== dependencies: - "is-extglob" "^1.0.0" + is-extglob "^1.0.0" -"extglob@^2.0.4": - "integrity" "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==" - "resolved" "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz" - "version" "2.0.4" +extglob@^2.0.4: + version "2.0.4" + resolved "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz" + integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== dependencies: - "array-unique" "^0.3.2" - "define-property" "^1.0.0" - "expand-brackets" "^2.1.4" - "extend-shallow" "^2.0.1" - "fragment-cache" "^0.2.1" - "regex-not" "^1.0.0" - "snapdragon" "^0.8.1" - "to-regex" "^3.0.1" + array-unique "^0.3.2" + define-property "^1.0.0" + expand-brackets "^2.1.4" + extend-shallow "^2.0.1" + fragment-cache "^0.2.1" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" -"extract-zip@^1.6.6": - "integrity" "sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA==" - "resolved" "https://registry.npmjs.org/extract-zip/-/extract-zip-1.7.0.tgz" - "version" "1.7.0" +extract-zip@^1.6.6: + version "1.7.0" + resolved "https://registry.npmjs.org/extract-zip/-/extract-zip-1.7.0.tgz" + integrity sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA== dependencies: - "concat-stream" "^1.6.2" - "debug" "^2.6.9" - "mkdirp" "^0.5.4" - "yauzl" "^2.10.0" + concat-stream "^1.6.2" + debug "^2.6.9" + mkdirp "^0.5.4" + yauzl "^2.10.0" -"extsprintf@^1.2.0", "extsprintf@1.3.0": - "integrity" "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==" - "resolved" "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz" - "version" "1.3.0" +extsprintf@1.3.0, extsprintf@^1.2.0: + version "1.3.0" + resolved "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz" + integrity sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g== -"fast-deep-equal@^2.0.1": - "integrity" "sha512-bCK/2Z4zLidyB4ReuIsvALH6w31YfAQDmXMqMx6FyfHqvBxtjC0eRumeSu4Bs3XtXwpyIywtSTrVT99BxY1f9w==" - "resolved" "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz" - "version" "2.0.1" +fast-deep-equal@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz" + integrity sha512-bCK/2Z4zLidyB4ReuIsvALH6w31YfAQDmXMqMx6FyfHqvBxtjC0eRumeSu4Bs3XtXwpyIywtSTrVT99BxY1f9w== -"fast-deep-equal@^3.0.0": - "integrity" "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" - "resolved" "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" - "version" "3.1.3" +fast-deep-equal@^3.0.0, fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: + version "3.1.3" + resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== -"fast-deep-equal@^3.1.1", "fast-deep-equal@^3.1.3": - "integrity" "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" - "resolved" "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" - "version" "3.1.3" - -"fast-glob@^2.2.6": - "integrity" "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==" - "resolved" "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz" - "version" "2.2.7" +fast-glob@^2.2.6: + version "2.2.7" + resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz" + integrity sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw== dependencies: "@mrmlnc/readdir-enhanced" "^2.2.1" "@nodelib/fs.stat" "^1.1.2" - "glob-parent" "^3.1.0" - "is-glob" "^4.0.0" - "merge2" "^1.2.3" - "micromatch" "^3.1.10" + glob-parent "^3.1.0" + is-glob "^4.0.0" + merge2 "^1.2.3" + micromatch "^3.1.10" -"fast-glob@^3.1.1", "fast-glob@^3.2.12", "fast-glob@^3.2.9": - "integrity" "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==" - "resolved" "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz" - "version" "3.2.12" +fast-glob@^3.1.1, fast-glob@^3.2.12, fast-glob@^3.2.9: + version "3.2.12" + resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz" + 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" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" -"fast-json-parse@^1.0.3": - "integrity" "sha512-FRWsaZRWEJ1ESVNbDWmsAlqDk96gPQezzLghafp5J4GUKjbCz3OkAHuZs5TuPEtkbVQERysLp9xv6c24fBm8Aw==" - "resolved" "https://registry.npmjs.org/fast-json-parse/-/fast-json-parse-1.0.3.tgz" - "version" "1.0.3" +fast-json-parse@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/fast-json-parse/-/fast-json-parse-1.0.3.tgz" + integrity sha512-FRWsaZRWEJ1ESVNbDWmsAlqDk96gPQezzLghafp5J4GUKjbCz3OkAHuZs5TuPEtkbVQERysLp9xv6c24fBm8Aw== -"fast-json-stable-stringify@^2.0.0", "fast-json-stable-stringify@^2.1.0": - "integrity" "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" - "resolved" "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" - "version" "2.1.0" +fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== -"fast-levenshtein@^2.0.6", "fast-levenshtein@~2.0.6": - "integrity" "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" - "resolved" "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" - "version" "2.0.6" +fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: + version "2.0.6" + resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== -"fastq@^1.6.0": - "integrity" "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==" - "resolved" "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz" - "version" "1.13.0" +fastq@^1.6.0: + version "1.13.0" + resolved "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz" + integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== dependencies: - "reusify" "^1.0.4" + reusify "^1.0.4" -"fault@^1.0.0": - "integrity" "sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA==" - "resolved" "https://registry.npmjs.org/fault/-/fault-1.0.4.tgz" - "version" "1.0.4" +fault@^1.0.0: + version "1.0.4" + resolved "https://registry.npmjs.org/fault/-/fault-1.0.4.tgz" + integrity sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA== dependencies: - "format" "^0.2.0" + format "^0.2.0" -"faye-websocket@^0.11.3": - "integrity" "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==" - "resolved" "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz" - "version" "0.11.4" +faye-websocket@^0.11.3: + version "0.11.4" + resolved "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz" + integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g== dependencies: - "websocket-driver" ">=0.5.1" + websocket-driver ">=0.5.1" -"fb-watchman@^2.0.0": - "integrity" "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==" - "resolved" "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz" - "version" "2.0.2" +fb-watchman@^2.0.0: + version "2.0.2" + resolved "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz" + integrity sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA== dependencies: - "bser" "2.1.1" + bser "2.1.1" -"fbjs-css-vars@^1.0.0": - "integrity" "sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==" - "resolved" "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz" - "version" "1.0.2" +fbjs-css-vars@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz" + integrity sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ== -"fbjs@^2.0.0": - "integrity" "sha512-8XA8ny9ifxrAWlyhAbexXcs3rRMtxWcs3M0lctLfB49jRDHiaxj+Mo0XxbwE7nKZYzgCFoq64FS+WFd4IycPPQ==" - "resolved" "https://registry.npmjs.org/fbjs/-/fbjs-2.0.0.tgz" - "version" "2.0.0" +fbjs@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/fbjs/-/fbjs-2.0.0.tgz" + integrity sha512-8XA8ny9ifxrAWlyhAbexXcs3rRMtxWcs3M0lctLfB49jRDHiaxj+Mo0XxbwE7nKZYzgCFoq64FS+WFd4IycPPQ== dependencies: - "core-js" "^3.6.4" - "cross-fetch" "^3.0.4" - "fbjs-css-vars" "^1.0.0" - "loose-envify" "^1.0.0" - "object-assign" "^4.1.0" - "promise" "^7.1.1" - "setimmediate" "^1.0.5" - "ua-parser-js" "^0.7.18" + core-js "^3.6.4" + cross-fetch "^3.0.4" + fbjs-css-vars "^1.0.0" + loose-envify "^1.0.0" + object-assign "^4.1.0" + promise "^7.1.1" + setimmediate "^1.0.5" + ua-parser-js "^0.7.18" -"fd-slicer@~1.1.0": - "integrity" "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==" - "resolved" "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz" - "version" "1.1.0" +fd-slicer@~1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz" + integrity sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g== dependencies: - "pend" "~1.2.0" + pend "~1.2.0" -"feather-icons@^4.28.0": - "integrity" "sha512-Y7VqN9FYb8KdaSF0qD1081HCkm0v4Eq/fpfQYQnubpqi0hXx14k+gF9iqtRys1SIcTEi97xDi/fmsPFZ8xo0GQ==" - "resolved" "https://registry.npmjs.org/feather-icons/-/feather-icons-4.29.0.tgz" - "version" "4.29.0" +feather-icons@^4.28.0: + version "4.29.0" + resolved "https://registry.npmjs.org/feather-icons/-/feather-icons-4.29.0.tgz" + integrity sha512-Y7VqN9FYb8KdaSF0qD1081HCkm0v4Eq/fpfQYQnubpqi0hXx14k+gF9iqtRys1SIcTEi97xDi/fmsPFZ8xo0GQ== dependencies: - "classnames" "^2.2.5" - "core-js" "^3.1.3" + classnames "^2.2.5" + core-js "^3.1.3" -"fetch-polyfill@^0.8.2": - "integrity" "sha512-HnMXyMscl9drfxTsIgEBOgrEgFH1hq+223eCSQud7blPVhprK1ObBi0TA8KqGa7Ro22nrlwNz2XOtx9uwVXsCg==" - "resolved" "https://registry.npmjs.org/fetch-polyfill/-/fetch-polyfill-0.8.2.tgz" - "version" "0.8.2" +fetch-polyfill@^0.8.2: + version "0.8.2" + resolved "https://registry.npmjs.org/fetch-polyfill/-/fetch-polyfill-0.8.2.tgz" + integrity sha512-HnMXyMscl9drfxTsIgEBOgrEgFH1hq+223eCSQud7blPVhprK1ObBi0TA8KqGa7Ro22nrlwNz2XOtx9uwVXsCg== -"fetch-retry@^5.0.2": - "integrity" "sha512-uJQyMrX5IJZkhoEUBQ3EjxkeiZkppBd5jS/fMTJmfZxLSiaQjv2zD0kTvuvkSH89uFvgSlB6ueGpjD3HWN7Bxw==" - "resolved" "https://registry.npmjs.org/fetch-retry/-/fetch-retry-5.0.3.tgz" - "version" "5.0.3" +fetch-retry@^5.0.2: + version "5.0.3" + resolved "https://registry.npmjs.org/fetch-retry/-/fetch-retry-5.0.3.tgz" + integrity sha512-uJQyMrX5IJZkhoEUBQ3EjxkeiZkppBd5jS/fMTJmfZxLSiaQjv2zD0kTvuvkSH89uFvgSlB6ueGpjD3HWN7Bxw== -"figgy-pudding@^3.5.1": - "integrity" "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==" - "resolved" "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz" - "version" "3.5.2" +figgy-pudding@^3.5.1: + version "3.5.2" + resolved "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz" + integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw== -"file-entry-cache@^6.0.1": - "integrity" "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==" - "resolved" "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz" - "version" "6.0.1" +file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== dependencies: - "flat-cache" "^3.0.4" + flat-cache "^3.0.4" -"file-loader@*", "file-loader@4.3.0": - "integrity" "sha512-aKrYPYjF1yG3oX0kWRrqrSMfgftm7oJW5M+m4owoldH5C51C0RkIwB++JbRvEW3IU6/ZG5n8UvEcdgwOt2UOWA==" - "resolved" "https://registry.npmjs.org/file-loader/-/file-loader-4.3.0.tgz" - "version" "4.3.0" +file-loader@4.3.0: + version "4.3.0" + resolved "https://registry.npmjs.org/file-loader/-/file-loader-4.3.0.tgz" + integrity sha512-aKrYPYjF1yG3oX0kWRrqrSMfgftm7oJW5M+m4owoldH5C51C0RkIwB++JbRvEW3IU6/ZG5n8UvEcdgwOt2UOWA== dependencies: - "loader-utils" "^1.2.3" - "schema-utils" "^2.5.0" + loader-utils "^1.2.3" + schema-utils "^2.5.0" -"file-loader@^6.2.0": - "integrity" "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==" - "resolved" "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz" - "version" "6.2.0" +file-loader@^6.2.0: + version "6.2.0" + resolved "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz" + integrity sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw== dependencies: - "loader-utils" "^2.0.0" - "schema-utils" "^3.0.0" + loader-utils "^2.0.0" + schema-utils "^3.0.0" -"file-system-cache@^1.0.5": - "integrity" "sha512-IzF5MBq+5CR0jXx5RxPe4BICl/oEhBSXKaL9fLhAXrIfIUS77Hr4vzrYyqYMHN6uTt+BOqi3fDCTjjEBCjERKw==" - "resolved" "https://registry.npmjs.org/file-system-cache/-/file-system-cache-1.1.0.tgz" - "version" "1.1.0" +file-system-cache@^1.0.5: + version "1.1.0" + resolved "https://registry.npmjs.org/file-system-cache/-/file-system-cache-1.1.0.tgz" + integrity sha512-IzF5MBq+5CR0jXx5RxPe4BICl/oEhBSXKaL9fLhAXrIfIUS77Hr4vzrYyqYMHN6uTt+BOqi3fDCTjjEBCjERKw== dependencies: - "fs-extra" "^10.1.0" - "ramda" "^0.28.0" + fs-extra "^10.1.0" + ramda "^0.28.0" -"file-uri-to-path@1.0.0": - "integrity" "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" - "resolved" "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz" - "version" "1.0.0" +file-uri-to-path@1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz" + integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== -"filelist@^1.0.1": - "integrity" "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==" - "resolved" "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz" - "version" "1.0.4" +filelist@^1.0.1: + version "1.0.4" + resolved "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz" + integrity sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q== dependencies: - "minimatch" "^5.0.1" + minimatch "^5.0.1" -"filename-regex@^2.0.0": - "integrity" "sha512-BTCqyBaWBTsauvnHiE8i562+EdJj+oUpkqWp2R1iCoR8f6oo8STRu3of7WJJ0TqWtxN50a5YFpzYK4Jj9esYfQ==" - "resolved" "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz" - "version" "2.0.1" +filename-regex@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz" + integrity sha512-BTCqyBaWBTsauvnHiE8i562+EdJj+oUpkqWp2R1iCoR8f6oo8STRu3of7WJJ0TqWtxN50a5YFpzYK4Jj9esYfQ== -"filesize@^8.0.6": - "integrity" "sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ==" - "resolved" "https://registry.npmjs.org/filesize/-/filesize-8.0.7.tgz" - "version" "8.0.7" +filesize@6.1.0: + version "6.1.0" + resolved "https://registry.npmjs.org/filesize/-/filesize-6.1.0.tgz" + integrity sha512-LpCHtPQ3sFx67z+uh2HnSyWSLLu5Jxo21795uRDuar/EOuYWXib5EmPaGIBuSnRqH2IODiKA2k5re/K9OnN/Yg== -"filesize@6.1.0": - "integrity" "sha512-LpCHtPQ3sFx67z+uh2HnSyWSLLu5Jxo21795uRDuar/EOuYWXib5EmPaGIBuSnRqH2IODiKA2k5re/K9OnN/Yg==" - "resolved" "https://registry.npmjs.org/filesize/-/filesize-6.1.0.tgz" - "version" "6.1.0" +filesize@^8.0.6: + version "8.0.7" + resolved "https://registry.npmjs.org/filesize/-/filesize-8.0.7.tgz" + integrity sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ== -"fill-range@^2.1.0": - "integrity" "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==" - "resolved" "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz" - "version" "2.2.4" +fill-range@^2.1.0: + version "2.2.4" + resolved "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz" + integrity sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q== dependencies: - "is-number" "^2.1.0" - "isobject" "^2.0.0" - "randomatic" "^3.0.0" - "repeat-element" "^1.1.2" - "repeat-string" "^1.5.2" + is-number "^2.1.0" + isobject "^2.0.0" + randomatic "^3.0.0" + repeat-element "^1.1.2" + repeat-string "^1.5.2" -"fill-range@^4.0.0": - "integrity" "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==" - "resolved" "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz" - "version" "4.0.0" +fill-range@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz" + integrity sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ== dependencies: - "extend-shallow" "^2.0.1" - "is-number" "^3.0.0" - "repeat-string" "^1.6.1" - "to-regex-range" "^2.1.0" + extend-shallow "^2.0.1" + is-number "^3.0.0" + repeat-string "^1.6.1" + to-regex-range "^2.1.0" -"fill-range@^7.0.1": - "integrity" "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==" - "resolved" "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz" - "version" "7.0.1" +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== dependencies: - "to-regex-range" "^5.0.1" + to-regex-range "^5.0.1" -"finalhandler@1.2.0": - "integrity" "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==" - "resolved" "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz" - "version" "1.2.0" +finalhandler@1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz" + 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" + 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-cache-dir@^0.1.1": - "integrity" "sha512-Z9XSBoNE7xQiV6MSgPuCfyMokH2K7JdpRkOYE1+mu3d4BFJtx3GW+f6Bo4q8IX6rlf5MYbLBKW0pjl2cWdkm2A==" - "resolved" "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz" - "version" "0.1.1" +find-cache-dir@^0.1.1: + version "0.1.1" + resolved "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz" + integrity sha512-Z9XSBoNE7xQiV6MSgPuCfyMokH2K7JdpRkOYE1+mu3d4BFJtx3GW+f6Bo4q8IX6rlf5MYbLBKW0pjl2cWdkm2A== dependencies: - "commondir" "^1.0.1" - "mkdirp" "^0.5.1" - "pkg-dir" "^1.0.0" + commondir "^1.0.1" + mkdirp "^0.5.1" + pkg-dir "^1.0.0" -"find-cache-dir@^2.0.0": - "integrity" "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==" - "resolved" "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz" - "version" "2.1.0" +find-cache-dir@^2.0.0, find-cache-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz" + integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== dependencies: - "commondir" "^1.0.1" - "make-dir" "^2.0.0" - "pkg-dir" "^3.0.0" + commondir "^1.0.1" + make-dir "^2.0.0" + pkg-dir "^3.0.0" -"find-cache-dir@^2.1.0": - "integrity" "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==" - "resolved" "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz" - "version" "2.1.0" +find-cache-dir@^3.3.1: + version "3.3.2" + resolved "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz" + integrity sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig== dependencies: - "commondir" "^1.0.1" - "make-dir" "^2.0.0" - "pkg-dir" "^3.0.0" + commondir "^1.0.1" + make-dir "^3.0.2" + pkg-dir "^4.1.0" -"find-cache-dir@^3.3.1": - "integrity" "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==" - "resolved" "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz" - "version" "3.3.2" +find-up@4.1.0, find-up@^4.0.0, find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== dependencies: - "commondir" "^1.0.1" - "make-dir" "^3.0.2" - "pkg-dir" "^4.1.0" + locate-path "^5.0.0" + path-exists "^4.0.0" -"find-up@^1.0.0": - "integrity" "sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==" - "resolved" "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz" - "version" "1.1.2" +find-up@^1.0.0: + version "1.1.2" + resolved "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz" + integrity sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA== dependencies: - "path-exists" "^2.0.0" - "pinkie-promise" "^2.0.0" + path-exists "^2.0.0" + pinkie-promise "^2.0.0" -"find-up@^2.0.0": - "integrity" "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==" - "resolved" "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz" - "version" "2.1.0" +find-up@^2.0.0, find-up@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz" + integrity sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ== dependencies: - "locate-path" "^2.0.0" + locate-path "^2.0.0" -"find-up@^2.1.0": - "integrity" "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==" - "resolved" "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz" - "version" "2.1.0" +find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== dependencies: - "locate-path" "^2.0.0" + locate-path "^3.0.0" -"find-up@^3.0.0": - "integrity" "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==" - "resolved" "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz" - "version" "3.0.0" +find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== dependencies: - "locate-path" "^3.0.0" + locate-path "^6.0.0" + path-exists "^4.0.0" -"find-up@^4.0.0", "find-up@^4.1.0": - "integrity" "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==" - "resolved" "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" - "version" "4.1.0" +flat-cache@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz" + integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== dependencies: - "locate-path" "^5.0.0" - "path-exists" "^4.0.0" + flatted "^3.1.0" + rimraf "^3.0.2" -"find-up@^5.0.0": - "integrity" "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==" - "resolved" "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz" - "version" "5.0.0" +flatted@^3.1.0: + version "3.2.7" + resolved "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz" + integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== + +flatten@^1.0.2: + version "1.0.3" + resolved "https://registry.npmjs.org/flatten/-/flatten-1.0.3.tgz" + integrity sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg== + +flow-parser@0.*: + version "0.199.1" + resolved "https://registry.npmjs.org/flow-parser/-/flow-parser-0.199.1.tgz" + integrity sha512-Mt+GFUQYij3miM7Z6o8E3aHTGXZKSOhvlCFgdQRoi6fkWfhyijnoX51zpOxM5PmZuiV6gallWhDZzwOsWxRutg== + +flush-write-stream@^1.0.0: + version "1.1.1" + resolved "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz" + integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== dependencies: - "locate-path" "^6.0.0" - "path-exists" "^4.0.0" + inherits "^2.0.3" + readable-stream "^2.3.6" -"find-up@4.1.0": - "integrity" "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==" - "resolved" "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" - "version" "4.1.0" +focus-lock@^0.8.0: + version "0.8.1" + resolved "https://registry.npmjs.org/focus-lock/-/focus-lock-0.8.1.tgz" + integrity sha512-/LFZOIo82WDsyyv7h7oc0MJF9ACOvDRdx9rWPZ2pgMfNWu/z8hQDBtOchuB/0BVLmuFOZjV02YwUVzNsWx/EzA== dependencies: - "locate-path" "^5.0.0" - "path-exists" "^4.0.0" + tslib "^1.9.3" -"flat-cache@^3.0.4": - "integrity" "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==" - "resolved" "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz" - "version" "3.0.4" +follow-redirects@^1.0.0: + version "1.15.2" + resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz" + integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== + +for-each@^0.3.3: + version "0.3.3" + resolved "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz" + integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== dependencies: - "flatted" "^3.1.0" - "rimraf" "^3.0.2" + is-callable "^1.1.3" -"flatted@^3.1.0": - "integrity" "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==" - "resolved" "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz" - "version" "3.2.7" +for-in@^0.1.3: + version "0.1.8" + resolved "https://registry.npmjs.org/for-in/-/for-in-0.1.8.tgz" + integrity sha512-F0to7vbBSHP8E3l6dCjxNOLuSFAACIxFy3UehTUlG7svlXi37HHsDkyVcHo0Pq8QwrE+pXvWSVX3ZT1T9wAZ9g== -"flatten@^1.0.2": - "integrity" "sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg==" - "resolved" "https://registry.npmjs.org/flatten/-/flatten-1.0.3.tgz" - "version" "1.0.3" +for-in@^1.0.1, for-in@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz" + integrity sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ== -"flow-parser@0.*": - "integrity" "sha512-Mt+GFUQYij3miM7Z6o8E3aHTGXZKSOhvlCFgdQRoi6fkWfhyijnoX51zpOxM5PmZuiV6gallWhDZzwOsWxRutg==" - "resolved" "https://registry.npmjs.org/flow-parser/-/flow-parser-0.199.1.tgz" - "version" "0.199.1" - -"flush-write-stream@^1.0.0": - "integrity" "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==" - "resolved" "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz" - "version" "1.1.1" +for-own@^0.1.3, for-own@^0.1.4: + version "0.1.5" + resolved "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz" + integrity sha512-SKmowqGTJoPzLO1T0BBJpkfp3EMacCMOuH40hOUbrbzElVktk4DioXVM99QkLCyKoiuOmyjgcWMpVz2xjE7LZw== dependencies: - "inherits" "^2.0.3" - "readable-stream" "^2.3.6" + for-in "^1.0.1" -"focus-lock@^0.8.0": - "integrity" "sha512-/LFZOIo82WDsyyv7h7oc0MJF9ACOvDRdx9rWPZ2pgMfNWu/z8hQDBtOchuB/0BVLmuFOZjV02YwUVzNsWx/EzA==" - "resolved" "https://registry.npmjs.org/focus-lock/-/focus-lock-0.8.1.tgz" - "version" "0.8.1" +foreground-child@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz" + integrity sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA== dependencies: - "tslib" "^1.9.3" + cross-spawn "^7.0.0" + signal-exit "^3.0.2" -"follow-redirects@^1.0.0": - "integrity" "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==" - "resolved" "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz" - "version" "1.15.2" +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz" + integrity sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw== -"for-each@^0.3.3": - "integrity" "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==" - "resolved" "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz" - "version" "0.3.3" - dependencies: - "is-callable" "^1.1.3" - -"for-in@^0.1.3": - "integrity" "sha512-F0to7vbBSHP8E3l6dCjxNOLuSFAACIxFy3UehTUlG7svlXi37HHsDkyVcHo0Pq8QwrE+pXvWSVX3ZT1T9wAZ9g==" - "resolved" "https://registry.npmjs.org/for-in/-/for-in-0.1.8.tgz" - "version" "0.1.8" - -"for-in@^1.0.1", "for-in@^1.0.2": - "integrity" "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==" - "resolved" "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz" - "version" "1.0.2" - -"for-own@^0.1.3", "for-own@^0.1.4": - "integrity" "sha512-SKmowqGTJoPzLO1T0BBJpkfp3EMacCMOuH40hOUbrbzElVktk4DioXVM99QkLCyKoiuOmyjgcWMpVz2xjE7LZw==" - "resolved" "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz" - "version" "0.1.5" - dependencies: - "for-in" "^1.0.1" - -"foreground-child@^2.0.0": - "integrity" "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==" - "resolved" "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "cross-spawn" "^7.0.0" - "signal-exit" "^3.0.2" - -"forever-agent@~0.6.1": - "integrity" "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==" - "resolved" "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz" - "version" "0.6.1" - -"fork-ts-checker-webpack-plugin@^4.1.6", "fork-ts-checker-webpack-plugin@4.1.6": - "integrity" "sha512-DUxuQaKoqfNne8iikd14SAkh5uw4+8vNifp6gmA73yYNS6ywLIWSLD/n/mBzHQRpW3J7rbATEakmiA8JvkTyZw==" - "resolved" "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-4.1.6.tgz" - "version" "4.1.6" +fork-ts-checker-webpack-plugin@4.1.6, fork-ts-checker-webpack-plugin@^4.1.6: + version "4.1.6" + resolved "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-4.1.6.tgz" + integrity sha512-DUxuQaKoqfNne8iikd14SAkh5uw4+8vNifp6gmA73yYNS6ywLIWSLD/n/mBzHQRpW3J7rbATEakmiA8JvkTyZw== dependencies: "@babel/code-frame" "^7.5.5" - "chalk" "^2.4.1" - "micromatch" "^3.1.10" - "minimatch" "^3.0.4" - "semver" "^5.6.0" - "tapable" "^1.0.0" - "worker-rpc" "^0.1.0" + chalk "^2.4.1" + micromatch "^3.1.10" + minimatch "^3.0.4" + semver "^5.6.0" + tapable "^1.0.0" + worker-rpc "^0.1.0" -"fork-ts-checker-webpack-plugin@^6.0.4": - "integrity" "sha512-m5cUmF30xkZ7h4tWUgTAcEaKmUW7tfyUyTqNNOz7OxWJ0v1VWKTcOvH8FWHUwSjlW/356Ijc9vi3XfcPstpQKA==" - "resolved" "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.2.tgz" - "version" "6.5.2" +fork-ts-checker-webpack-plugin@^6.0.4, fork-ts-checker-webpack-plugin@^6.5.0: + version "6.5.2" + resolved "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.2.tgz" + integrity sha512-m5cUmF30xkZ7h4tWUgTAcEaKmUW7tfyUyTqNNOz7OxWJ0v1VWKTcOvH8FWHUwSjlW/356Ijc9vi3XfcPstpQKA== dependencies: "@babel/code-frame" "^7.8.3" "@types/json-schema" "^7.0.5" - "chalk" "^4.1.0" - "chokidar" "^3.4.2" - "cosmiconfig" "^6.0.0" - "deepmerge" "^4.2.2" - "fs-extra" "^9.0.0" - "glob" "^7.1.6" - "memfs" "^3.1.2" - "minimatch" "^3.0.4" - "schema-utils" "2.7.0" - "semver" "^7.3.2" - "tapable" "^1.0.0" + chalk "^4.1.0" + chokidar "^3.4.2" + cosmiconfig "^6.0.0" + deepmerge "^4.2.2" + fs-extra "^9.0.0" + glob "^7.1.6" + memfs "^3.1.2" + minimatch "^3.0.4" + schema-utils "2.7.0" + semver "^7.3.2" + tapable "^1.0.0" -"fork-ts-checker-webpack-plugin@^6.5.0": - "integrity" "sha512-m5cUmF30xkZ7h4tWUgTAcEaKmUW7tfyUyTqNNOz7OxWJ0v1VWKTcOvH8FWHUwSjlW/356Ijc9vi3XfcPstpQKA==" - "resolved" "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.2.tgz" - "version" "6.5.2" +form-data@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz" + integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== dependencies: - "@babel/code-frame" "^7.8.3" - "@types/json-schema" "^7.0.5" - "chalk" "^4.1.0" - "chokidar" "^3.4.2" - "cosmiconfig" "^6.0.0" - "deepmerge" "^4.2.2" - "fs-extra" "^9.0.0" - "glob" "^7.1.6" - "memfs" "^3.1.2" - "minimatch" "^3.0.4" - "schema-utils" "2.7.0" - "semver" "^7.3.2" - "tapable" "^1.0.0" + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" -"form-data@^3.0.0": - "integrity" "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==" - "resolved" "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz" - "version" "3.0.1" +form-data@~2.3.2: + version "2.3.3" + resolved "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz" + integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== dependencies: - "asynckit" "^0.4.0" - "combined-stream" "^1.0.8" - "mime-types" "^2.1.12" + asynckit "^0.4.0" + combined-stream "^1.0.6" + mime-types "^2.1.12" -"form-data@~2.3.2": - "integrity" "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==" - "resolved" "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz" - "version" "2.3.3" +format@^0.2.0: + version "0.2.2" + resolved "https://registry.npmjs.org/format/-/format-0.2.2.tgz" + integrity sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww== + +forwarded@0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz" + integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== + +fraction.js@^4.2.0: + version "4.2.0" + resolved "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz" + integrity sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA== + +fragment-cache@^0.2.1: + version "0.2.1" + resolved "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz" + integrity sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA== dependencies: - "asynckit" "^0.4.0" - "combined-stream" "^1.0.6" - "mime-types" "^2.1.12" + map-cache "^0.2.2" -"format@^0.2.0": - "integrity" "sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==" - "resolved" "https://registry.npmjs.org/format/-/format-0.2.2.tgz" - "version" "0.2.2" +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz" + integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== -"forwarded@0.2.0": - "integrity" "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" - "resolved" "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz" - "version" "0.2.0" - -"fraction.js@^4.2.0": - "integrity" "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==" - "resolved" "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz" - "version" "4.2.0" - -"fragment-cache@^0.2.1": - "integrity" "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==" - "resolved" "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz" - "version" "0.2.1" +from2@^2.1.0: + version "2.3.0" + resolved "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz" + integrity sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g== dependencies: - "map-cache" "^0.2.2" + inherits "^2.0.1" + readable-stream "^2.0.0" -"fresh@0.5.2": - "integrity" "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==" - "resolved" "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz" - "version" "0.5.2" - -"from2@^2.1.0": - "integrity" "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==" - "resolved" "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz" - "version" "2.3.0" +fs-extra@^10.0.0, fs-extra@^10.1.0: + version "10.1.0" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz" + integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== dependencies: - "inherits" "^2.0.1" - "readable-stream" "^2.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" -"fs-extra@^10.0.0": - "integrity" "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==" - "resolved" "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz" - "version" "10.1.0" +fs-extra@^4.0.2: + version "4.0.3" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz" + integrity sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg== dependencies: - "graceful-fs" "^4.2.0" - "jsonfile" "^6.0.1" - "universalify" "^2.0.0" + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" -"fs-extra@^10.1.0": - "integrity" "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==" - "resolved" "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz" - "version" "10.1.0" +fs-extra@^8.1.0: + version "8.1.0" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz" + integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== dependencies: - "graceful-fs" "^4.2.0" - "jsonfile" "^6.0.1" - "universalify" "^2.0.0" + graceful-fs "^4.2.0" + jsonfile "^4.0.0" + universalify "^0.1.0" -"fs-extra@^4.0.2": - "integrity" "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==" - "resolved" "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz" - "version" "4.0.3" +fs-extra@^9.0.0, fs-extra@^9.0.1: + version "9.1.0" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz" + integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== dependencies: - "graceful-fs" "^4.1.2" - "jsonfile" "^4.0.0" - "universalify" "^0.1.0" + at-least-node "^1.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" -"fs-extra@^8.1.0": - "integrity" "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==" - "resolved" "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz" - "version" "8.1.0" +fs-minipass@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz" + integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== dependencies: - "graceful-fs" "^4.2.0" - "jsonfile" "^4.0.0" - "universalify" "^0.1.0" + minipass "^3.0.0" -"fs-extra@^9.0.0", "fs-extra@^9.0.1": - "integrity" "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==" - "resolved" "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz" - "version" "9.1.0" +fs-monkey@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz" + integrity sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q== + +fs-readdir-recursive@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz" + integrity sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA== + +fs-write-stream-atomic@^1.0.8: + version "1.0.10" + resolved "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz" + integrity sha512-gehEzmPn2nAwr39eay+x3X34Ra+M2QlVUTLhkXPjWdeO8RF9kszk116avgBJM3ZyNHgHXBNx+VmPaFC36k0PzA== dependencies: - "at-least-node" "^1.0.0" - "graceful-fs" "^4.2.0" - "jsonfile" "^6.0.1" - "universalify" "^2.0.0" + graceful-fs "^4.1.2" + iferr "^0.1.5" + imurmurhash "^0.1.4" + readable-stream "1 || 2" -"fs-minipass@^2.0.0": - "integrity" "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==" - "resolved" "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz" - "version" "2.1.0" +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +fsevents@^1.0.0, fsevents@^1.2.7: + version "1.2.13" + resolved "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz" + integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw== dependencies: - "minipass" "^3.0.0" + bindings "^1.5.0" + nan "^2.12.1" -"fs-monkey@^1.0.3": - "integrity" "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==" - "resolved" "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz" - "version" "1.0.3" +fsevents@^2.1.2, fsevents@^2.3.2, fsevents@~2.3.2: + version "2.3.2" + resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== -"fs-readdir-recursive@^1.0.0": - "integrity" "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==" - "resolved" "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz" - "version" "1.1.0" +fullcalendar@^5.1.0: + version "5.11.3" + resolved "https://registry.npmjs.org/fullcalendar/-/fullcalendar-5.11.3.tgz" + integrity sha512-SgqiMEA+lWLyEd2jEwtIxdfx41j2CZr4KK00D2Gepj1MnGOjaEi13athnU6xvqMQXXjgJNj+vmlUP69QiuGncQ== -"fs-write-stream-atomic@^1.0.8": - "integrity" "sha512-gehEzmPn2nAwr39eay+x3X34Ra+M2QlVUTLhkXPjWdeO8RF9kszk116avgBJM3ZyNHgHXBNx+VmPaFC36k0PzA==" - "resolved" "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz" - "version" "1.0.10" +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +function.prototype.name@^1.1.0, function.prototype.name@^1.1.2, function.prototype.name@^1.1.5: + version "1.1.5" + resolved "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz" + integrity sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA== dependencies: - "graceful-fs" "^4.1.2" - "iferr" "^0.1.5" - "imurmurhash" "^0.1.4" - "readable-stream" "1 || 2" + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.0" + functions-have-names "^1.2.2" -"fs.realpath@^1.0.0": - "integrity" "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" - "resolved" "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" - "version" "1.0.0" +functions-have-names@^1.2.2: + version "1.2.3" + resolved "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz" + integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== -"fsevents@^1.0.0": - "integrity" "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==" - "resolved" "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz" - "version" "1.2.13" +gauge@^3.0.0: + version "3.0.2" + resolved "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz" + integrity sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q== dependencies: - "bindings" "^1.5.0" - "nan" "^2.12.1" + 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" -"fsevents@^1.2.7": - "integrity" "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==" - "resolved" "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz" - "version" "1.2.13" - dependencies: - "bindings" "^1.5.0" - "nan" "^2.12.1" +gensync@^1.0.0-beta.1, gensync@^1.0.0-beta.2: + version "1.0.0-beta.2" + resolved "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz" + integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== -"fsevents@^2.1.2", "fsevents@^2.3.2", "fsevents@~2.3.2": - "integrity" "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==" - "resolved" "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz" - "version" "2.3.2" - -"fullcalendar@^5.1.0": - "integrity" "sha512-SgqiMEA+lWLyEd2jEwtIxdfx41j2CZr4KK00D2Gepj1MnGOjaEi13athnU6xvqMQXXjgJNj+vmlUP69QiuGncQ==" - "resolved" "https://registry.npmjs.org/fullcalendar/-/fullcalendar-5.11.3.tgz" - "version" "5.11.3" - -"function-bind@^1.1.1": - "integrity" "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - "resolved" "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz" - "version" "1.1.1" - -"function.prototype.name@^1.1.0", "function.prototype.name@^1.1.2", "function.prototype.name@^1.1.5": - "integrity" "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==" - "resolved" "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz" - "version" "1.1.5" - dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.1.3" - "es-abstract" "^1.19.0" - "functions-have-names" "^1.2.2" - -"functions-have-names@^1.2.2": - "integrity" "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==" - "resolved" "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz" - "version" "1.2.3" - -"gauge@^3.0.0": - "integrity" "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==" - "resolved" "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz" - "version" "3.0.2" - 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" - -"gensync@^1.0.0-beta.1", "gensync@^1.0.0-beta.2": - "integrity" "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==" - "resolved" "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz" - "version" "1.0.0-beta.2" - -"geojson-rbush@3.x": - "integrity" "sha512-oVltQTXolxvsz1sZnutlSuLDEcQAKYC/uXt9zDzJJ6bu0W+baTI8LZBaTup5afzibEH4N3jlq2p+a152wlBJ7w==" - "resolved" "https://registry.npmjs.org/geojson-rbush/-/geojson-rbush-3.2.0.tgz" - "version" "3.2.0" +geojson-rbush@3.x: + version "3.2.0" + resolved "https://registry.npmjs.org/geojson-rbush/-/geojson-rbush-3.2.0.tgz" + integrity sha512-oVltQTXolxvsz1sZnutlSuLDEcQAKYC/uXt9zDzJJ6bu0W+baTI8LZBaTup5afzibEH4N3jlq2p+a152wlBJ7w== dependencies: "@turf/bbox" "*" "@turf/helpers" "6.x" "@turf/meta" "6.x" "@types/geojson" "7946.0.8" - "rbush" "^3.0.1" + rbush "^3.0.1" -"get-caller-file@^2.0.1", "get-caller-file@^2.0.5": - "integrity" "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" - "resolved" "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" - "version" "2.0.5" +get-caller-file@^2.0.1, get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== -"get-intrinsic@^1.0.2", "get-intrinsic@^1.1.0", "get-intrinsic@^1.1.1", "get-intrinsic@^1.1.3": - "integrity" "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==" - "resolved" "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz" - "version" "1.1.3" +get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz" + integrity sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A== dependencies: - "function-bind" "^1.1.1" - "has" "^1.0.3" - "has-symbols" "^1.0.3" + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.3" -"get-own-enumerable-property-symbols@^3.0.0": - "integrity" "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==" - "resolved" "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz" - "version" "3.0.2" +get-own-enumerable-property-symbols@^3.0.0: + version "3.0.2" + resolved "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz" + integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g== -"get-package-type@^0.1.0": - "integrity" "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==" - "resolved" "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz" - "version" "0.1.0" +get-package-type@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz" + integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== -"get-port@^5.1.1": - "integrity" "sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==" - "resolved" "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz" - "version" "5.1.1" +get-port@^5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz" + integrity sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ== -"get-stdin@^4.0.1": - "integrity" "sha512-F5aQMywwJ2n85s4hJPTT9RPxGmubonuB10MNYo17/xph174n2MIR33HRguhzVag10O/npM7SPk73LMZNP+FaWw==" - "resolved" "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz" - "version" "4.0.1" +get-stdin@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz" + integrity sha512-F5aQMywwJ2n85s4hJPTT9RPxGmubonuB10MNYo17/xph174n2MIR33HRguhzVag10O/npM7SPk73LMZNP+FaWw== -"get-stream@^4.0.0", "get-stream@^4.1.0": - "integrity" "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==" - "resolved" "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz" - "version" "4.1.0" +get-stream@^4.0.0, get-stream@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz" + integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== dependencies: - "pump" "^3.0.0" + pump "^3.0.0" -"get-stream@^5.1.0": - "integrity" "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==" - "resolved" "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz" - "version" "5.2.0" +get-stream@^5.1.0: + version "5.2.0" + resolved "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz" + integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== dependencies: - "pump" "^3.0.0" + pump "^3.0.0" -"get-stream@^6.0.0": - "integrity" "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==" - "resolved" "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz" - "version" "6.0.1" +get-stream@^6.0.0: + version "6.0.1" + resolved "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== -"get-symbol-description@^1.0.0": - "integrity" "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==" - "resolved" "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz" - "version" "1.0.0" +get-symbol-description@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz" + integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== dependencies: - "call-bind" "^1.0.2" - "get-intrinsic" "^1.1.1" + call-bind "^1.0.2" + get-intrinsic "^1.1.1" -"get-value@^2.0.3", "get-value@^2.0.6": - "integrity" "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==" - "resolved" "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz" - "version" "2.0.6" +get-value@^2.0.3, get-value@^2.0.6: + version "2.0.6" + resolved "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz" + integrity sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA== -"getpass@^0.1.1": - "integrity" "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==" - "resolved" "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz" - "version" "0.1.7" +getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz" + integrity sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng== dependencies: - "assert-plus" "^1.0.0" + assert-plus "^1.0.0" -"github-slugger@^1.0.0": - "integrity" "sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw==" - "resolved" "https://registry.npmjs.org/github-slugger/-/github-slugger-1.5.0.tgz" - "version" "1.5.0" +github-slugger@^1.0.0: + version "1.5.0" + resolved "https://registry.npmjs.org/github-slugger/-/github-slugger-1.5.0.tgz" + integrity sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw== -"glob-base@^0.3.0": - "integrity" "sha512-ab1S1g1EbO7YzauaJLkgLp7DZVAqj9M/dvKlTt8DkXA2tiOIcSMrlVI2J1RZyB5iJVccEscjGn+kpOG9788MHA==" - "resolved" "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz" - "version" "0.3.0" +glob-base@^0.3.0: + version "0.3.0" + resolved "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz" + integrity sha512-ab1S1g1EbO7YzauaJLkgLp7DZVAqj9M/dvKlTt8DkXA2tiOIcSMrlVI2J1RZyB5iJVccEscjGn+kpOG9788MHA== dependencies: - "glob-parent" "^2.0.0" - "is-glob" "^2.0.0" + glob-parent "^2.0.0" + is-glob "^2.0.0" -"glob-parent@^2.0.0": - "integrity" "sha512-JDYOvfxio/t42HKdxkAYaCiBN7oYiuxykOxKxdaUW5Qn0zaYN3gRQWolrwdnf0shM9/EP0ebuuTmyoXNr1cC5w==" - "resolved" "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz" - "version" "2.0.0" +glob-parent@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz" + integrity sha512-JDYOvfxio/t42HKdxkAYaCiBN7oYiuxykOxKxdaUW5Qn0zaYN3gRQWolrwdnf0shM9/EP0ebuuTmyoXNr1cC5w== dependencies: - "is-glob" "^2.0.0" + is-glob "^2.0.0" -"glob-parent@^3.1.0": - "integrity" "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==" - "resolved" "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz" - "version" "3.1.0" +glob-parent@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz" + integrity sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA== dependencies: - "is-glob" "^3.1.0" - "path-dirname" "^1.0.0" + is-glob "^3.1.0" + path-dirname "^1.0.0" -"glob-parent@^5.1.2": - "integrity" "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==" - "resolved" "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" - "version" "5.1.2" +glob-parent@^5.1.2, glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== dependencies: - "is-glob" "^4.0.1" + is-glob "^4.0.1" -"glob-parent@^6.0.2": - "integrity" "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==" - "resolved" "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz" - "version" "6.0.2" +glob-parent@^6.0.2: + version "6.0.2" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== dependencies: - "is-glob" "^4.0.3" + is-glob "^4.0.3" -"glob-parent@~5.1.2": - "integrity" "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==" - "resolved" "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" - "version" "5.1.2" - dependencies: - "is-glob" "^4.0.1" - -"glob-promise@^3.4.0": - "integrity" "sha512-q08RJ6O+eJn+dVanerAndJwIcumgbDdYiUT7zFQl3Wm1xD6fBKtah7H8ZJChj4wP+8C+QfeVy8xautR7rdmKEw==" - "resolved" "https://registry.npmjs.org/glob-promise/-/glob-promise-3.4.0.tgz" - "version" "3.4.0" +glob-promise@^3.4.0: + version "3.4.0" + resolved "https://registry.npmjs.org/glob-promise/-/glob-promise-3.4.0.tgz" + integrity sha512-q08RJ6O+eJn+dVanerAndJwIcumgbDdYiUT7zFQl3Wm1xD6fBKtah7H8ZJChj4wP+8C+QfeVy8xautR7rdmKEw== dependencies: "@types/glob" "*" -"glob-to-regexp@^0.3.0": - "integrity" "sha512-Iozmtbqv0noj0uDDqoL0zNq0VBEfK2YFoMAZoxJe4cwphvLR+JskfF30QhXHOR4m3KrE6NLRYw+U9MRXvifyig==" - "resolved" "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz" - "version" "0.3.0" +glob-to-regexp@^0.3.0: + version "0.3.0" + resolved "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz" + integrity sha512-Iozmtbqv0noj0uDDqoL0zNq0VBEfK2YFoMAZoxJe4cwphvLR+JskfF30QhXHOR4m3KrE6NLRYw+U9MRXvifyig== -"glob-to-regexp@^0.4.1": - "integrity" "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" - "resolved" "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz" - "version" "0.4.1" +glob-to-regexp@^0.4.1: + version "0.4.1" + resolved "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz" + integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== -"glob@*", "glob@^7.0.0", "glob@^7.1.1", "glob@^7.1.2", "glob@^7.1.3", "glob@^7.1.4", "glob@^7.1.6": - "integrity" "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==" - "resolved" "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" - "version" "7.2.3" +glob@^7.0.0, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: + version "7.2.3" + resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" + 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" + 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" -"global-dirs@^3.0.0": - "integrity" "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==" - "resolved" "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz" - "version" "3.0.1" +global-dirs@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz" + integrity sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA== dependencies: - "ini" "2.0.0" + ini "2.0.0" -"global-modules@^2.0.0", "global-modules@2.0.0": - "integrity" "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==" - "resolved" "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz" - "version" "2.0.0" +global-modules@2.0.0, global-modules@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz" + integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== dependencies: - "global-prefix" "^3.0.0" + global-prefix "^3.0.0" -"global-prefix@^3.0.0": - "integrity" "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==" - "resolved" "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz" - "version" "3.0.0" +global-prefix@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz" + integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg== dependencies: - "ini" "^1.3.5" - "kind-of" "^6.0.2" - "which" "^1.3.1" + ini "^1.3.5" + kind-of "^6.0.2" + which "^1.3.1" -"global@^4.4.0": - "integrity" "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==" - "resolved" "https://registry.npmjs.org/global/-/global-4.4.0.tgz" - "version" "4.4.0" +global@^4.4.0: + version "4.4.0" + resolved "https://registry.npmjs.org/global/-/global-4.4.0.tgz" + integrity sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w== dependencies: - "min-document" "^2.19.0" - "process" "^0.11.10" + min-document "^2.19.0" + process "^0.11.10" -"globals@^11.1.0": - "integrity" "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" - "resolved" "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz" - "version" "11.12.0" +globals@^11.1.0: + version "11.12.0" + resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== -"globals@^13.15.0": - "integrity" "sha512-/mR4KI8Ps2spmoc0Ulu9L7agOF0du1CZNQ3dke8yItYlyKNmGrkONemBbd6V8UTc1Wgcqn21t3WYB7dbRmh6/A==" - "resolved" "https://registry.npmjs.org/globals/-/globals-13.18.0.tgz" - "version" "13.18.0" +globals@^13.15.0: + version "13.18.0" + resolved "https://registry.npmjs.org/globals/-/globals-13.18.0.tgz" + integrity sha512-/mR4KI8Ps2spmoc0Ulu9L7agOF0du1CZNQ3dke8yItYlyKNmGrkONemBbd6V8UTc1Wgcqn21t3WYB7dbRmh6/A== dependencies: - "type-fest" "^0.20.2" + type-fest "^0.20.2" -"globals@^9.18.0": - "integrity" "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==" - "resolved" "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz" - "version" "9.18.0" +globals@^9.18.0: + version "9.18.0" + resolved "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz" + integrity sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ== -"globalthis@^1.0.0": - "integrity" "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==" - "resolved" "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz" - "version" "1.0.3" +globalthis@^1.0.0: + version "1.0.3" + resolved "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz" + integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA== dependencies: - "define-properties" "^1.1.3" + define-properties "^1.1.3" -"globby@^11.0.2", "globby@^11.0.4", "globby@^11.1.0": - "integrity" "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==" - "resolved" "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz" - "version" "11.1.0" +globby@11.0.1: + version "11.0.1" + resolved "https://registry.npmjs.org/globby/-/globby-11.0.1.tgz" + integrity sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ== 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" + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.1.1" + ignore "^5.1.4" + merge2 "^1.3.0" + slash "^3.0.0" -"globby@^9.2.0": - "integrity" "sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==" - "resolved" "https://registry.npmjs.org/globby/-/globby-9.2.0.tgz" - "version" "9.2.0" +globby@^11.0.2, globby@^11.0.4, globby@^11.1.0: + version "11.1.0" + resolved "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz" + 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" + +globby@^9.2.0: + version "9.2.0" + resolved "https://registry.npmjs.org/globby/-/globby-9.2.0.tgz" + integrity sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg== dependencies: "@types/glob" "^7.1.1" - "array-union" "^1.0.2" - "dir-glob" "^2.2.2" - "fast-glob" "^2.2.6" - "glob" "^7.1.3" - "ignore" "^4.0.3" - "pify" "^4.0.1" - "slash" "^2.0.0" + array-union "^1.0.2" + dir-glob "^2.2.2" + fast-glob "^2.2.6" + glob "^7.1.3" + ignore "^4.0.3" + pify "^4.0.1" + slash "^2.0.0" -"globby@11.0.1": - "integrity" "sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ==" - "resolved" "https://registry.npmjs.org/globby/-/globby-11.0.1.tgz" - "version" "11.0.1" +gopd@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz" + integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== dependencies: - "array-union" "^2.1.0" - "dir-glob" "^3.0.1" - "fast-glob" "^3.1.1" - "ignore" "^5.1.4" - "merge2" "^1.3.0" - "slash" "^3.0.0" + get-intrinsic "^1.1.3" -"gopd@^1.0.1": - "integrity" "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==" - "resolved" "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz" - "version" "1.0.1" - dependencies: - "get-intrinsic" "^1.1.3" - -"got@^9.6.0": - "integrity" "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==" - "resolved" "https://registry.npmjs.org/got/-/got-9.6.0.tgz" - "version" "9.6.0" +got@^9.6.0: + version "9.6.0" + resolved "https://registry.npmjs.org/got/-/got-9.6.0.tgz" + integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q== dependencies: "@sindresorhus/is" "^0.14.0" "@szmarczak/http-timer" "^1.1.2" - "cacheable-request" "^6.0.0" - "decompress-response" "^3.3.0" - "duplexer3" "^0.1.4" - "get-stream" "^4.1.0" - "lowercase-keys" "^1.0.1" - "mimic-response" "^1.0.1" - "p-cancelable" "^1.0.0" - "to-readable-stream" "^1.0.0" - "url-parse-lax" "^3.0.0" + cacheable-request "^6.0.0" + decompress-response "^3.3.0" + duplexer3 "^0.1.4" + get-stream "^4.1.0" + lowercase-keys "^1.0.1" + mimic-response "^1.0.1" + p-cancelable "^1.0.0" + to-readable-stream "^1.0.0" + url-parse-lax "^3.0.0" -"graceful-fs@^4.1.11", "graceful-fs@^4.1.15", "graceful-fs@^4.1.2", "graceful-fs@^4.1.4", "graceful-fs@^4.1.6", "graceful-fs@^4.2.0", "graceful-fs@^4.2.4", "graceful-fs@^4.2.6", "graceful-fs@^4.2.9": - "integrity" "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" - "resolved" "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz" - "version" "4.2.10" +graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.4, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: + version "4.2.10" + resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz" + integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== -"grapheme-splitter@^1.0.4": - "integrity" "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==" - "resolved" "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz" - "version" "1.0.4" +grapheme-splitter@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz" + integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== -"gzip-size@^6.0.0": - "integrity" "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==" - "resolved" "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz" - "version" "6.0.0" +gzip-size@5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/gzip-size/-/gzip-size-5.1.1.tgz" + integrity sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA== dependencies: - "duplexer" "^0.1.2" + duplexer "^0.1.1" + pify "^4.0.1" -"gzip-size@5.1.1": - "integrity" "sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA==" - "resolved" "https://registry.npmjs.org/gzip-size/-/gzip-size-5.1.1.tgz" - "version" "5.1.1" +gzip-size@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz" + integrity sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q== dependencies: - "duplexer" "^0.1.1" - "pify" "^4.0.1" + duplexer "^0.1.2" -"hamt_plus@1.0.2": - "integrity" "sha512-t2JXKaehnMb9paaYA7J0BX8QQAY8lwfQ9Gjf4pg/mk4krt+cmwmU652HOoWonf+7+EQV97ARPMhhVgU1ra2GhA==" - "resolved" "https://registry.npmjs.org/hamt_plus/-/hamt_plus-1.0.2.tgz" - "version" "1.0.2" +hamt_plus@1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/hamt_plus/-/hamt_plus-1.0.2.tgz" + integrity sha512-t2JXKaehnMb9paaYA7J0BX8QQAY8lwfQ9Gjf4pg/mk4krt+cmwmU652HOoWonf+7+EQV97ARPMhhVgU1ra2GhA== -"handle-thing@^2.0.0": - "integrity" "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==" - "resolved" "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz" - "version" "2.0.1" +handle-thing@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz" + integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== -"handlebars@^4.7.7": - "integrity" "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==" - "resolved" "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz" - "version" "4.7.7" +handlebars@^4.7.7: + version "4.7.7" + resolved "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz" + integrity sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA== dependencies: - "minimist" "^1.2.5" - "neo-async" "^2.6.0" - "source-map" "^0.6.1" - "wordwrap" "^1.0.0" + minimist "^1.2.5" + neo-async "^2.6.0" + source-map "^0.6.1" + wordwrap "^1.0.0" optionalDependencies: - "uglify-js" "^3.1.4" + uglify-js "^3.1.4" -"har-schema@^2.0.0": - "integrity" "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==" - "resolved" "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz" - "version" "2.0.0" +har-schema@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz" + integrity sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q== -"har-validator@~5.1.3": - "integrity" "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==" - "resolved" "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz" - "version" "5.1.5" +har-validator@~5.1.3: + version "5.1.5" + resolved "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz" + integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== dependencies: - "ajv" "^6.12.3" - "har-schema" "^2.0.0" + ajv "^6.12.3" + har-schema "^2.0.0" -"harmony-reflect@^1.4.6": - "integrity" "sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g==" - "resolved" "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.2.tgz" - "version" "1.6.2" +harmony-reflect@^1.4.6: + version "1.6.2" + resolved "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.2.tgz" + integrity sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g== -"has-ansi@^2.0.0": - "integrity" "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==" - "resolved" "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz" - "version" "2.0.0" +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz" + integrity sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg== dependencies: - "ansi-regex" "^2.0.0" + ansi-regex "^2.0.0" -"has-bigints@^1.0.1", "has-bigints@^1.0.2": - "integrity" "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==" - "resolved" "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz" - "version" "1.0.2" +has-bigints@^1.0.1, has-bigints@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz" + integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== -"has-binary2@~1.0.2": - "integrity" "sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==" - "resolved" "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz" - "version" "1.0.3" +has-binary2@~1.0.2: + version "1.0.3" + resolved "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz" + integrity sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw== dependencies: - "isarray" "2.0.1" + isarray "2.0.1" -"has-cors@1.1.0": - "integrity" "sha512-g5VNKdkFuUuVCP9gYfDJHjK2nqdQJ7aDLTnycnc2+RvsOQbuLdF5pm7vuE5J76SEBIQjs4kQY/BWq74JUmjbXA==" - "resolved" "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz" - "version" "1.1.0" +has-cors@1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz" + integrity sha512-g5VNKdkFuUuVCP9gYfDJHjK2nqdQJ7aDLTnycnc2+RvsOQbuLdF5pm7vuE5J76SEBIQjs4kQY/BWq74JUmjbXA== -"has-flag@^3.0.0": - "integrity" "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" - "resolved" "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" - "version" "3.0.0" +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== -"has-flag@^4.0.0": - "integrity" "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - "resolved" "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" - "version" "4.0.0" +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== -"has-glob@^1.0.0": - "integrity" "sha512-D+8A457fBShSEI3tFCj65PAbT++5sKiFtdCdOam0gnfBgw9D277OERk+HM9qYJXmdVLZ/znez10SqHN0BBQ50g==" - "resolved" "https://registry.npmjs.org/has-glob/-/has-glob-1.0.0.tgz" - "version" "1.0.0" +has-glob@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/has-glob/-/has-glob-1.0.0.tgz" + integrity sha512-D+8A457fBShSEI3tFCj65PAbT++5sKiFtdCdOam0gnfBgw9D277OERk+HM9qYJXmdVLZ/znez10SqHN0BBQ50g== dependencies: - "is-glob" "^3.0.0" + is-glob "^3.0.0" -"has-property-descriptors@^1.0.0": - "integrity" "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==" - "resolved" "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz" - "version" "1.0.0" +has-property-descriptors@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz" + integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== dependencies: - "get-intrinsic" "^1.1.1" + get-intrinsic "^1.1.1" -"has-symbols@^1.0.1", "has-symbols@^1.0.2", "has-symbols@^1.0.3": - "integrity" "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" - "resolved" "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz" - "version" "1.0.3" +has-symbols@^1.0.1, has-symbols@^1.0.2, has-symbols@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz" + integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== -"has-tostringtag@^1.0.0": - "integrity" "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==" - "resolved" "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz" - "version" "1.0.0" +has-tostringtag@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz" + integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== dependencies: - "has-symbols" "^1.0.2" + has-symbols "^1.0.2" -"has-unicode@^2.0.1": - "integrity" "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==" - "resolved" "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz" - "version" "2.0.1" +has-unicode@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz" + integrity sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ== -"has-value@^0.3.1": - "integrity" "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==" - "resolved" "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz" - "version" "0.3.1" +has-value@^0.3.1: + version "0.3.1" + resolved "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz" + integrity sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q== dependencies: - "get-value" "^2.0.3" - "has-values" "^0.1.4" - "isobject" "^2.0.0" + get-value "^2.0.3" + has-values "^0.1.4" + isobject "^2.0.0" -"has-value@^1.0.0": - "integrity" "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==" - "resolved" "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz" - "version" "1.0.0" +has-value@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz" + integrity sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw== dependencies: - "get-value" "^2.0.6" - "has-values" "^1.0.0" - "isobject" "^3.0.0" + get-value "^2.0.6" + has-values "^1.0.0" + isobject "^3.0.0" -"has-values@^0.1.4": - "integrity" "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==" - "resolved" "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz" - "version" "0.1.4" +has-values@^0.1.4: + version "0.1.4" + resolved "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz" + integrity sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ== -"has-values@^1.0.0": - "integrity" "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==" - "resolved" "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz" - "version" "1.0.0" +has-values@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz" + integrity sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ== dependencies: - "is-number" "^3.0.0" - "kind-of" "^4.0.0" + is-number "^3.0.0" + kind-of "^4.0.0" -"has-yarn@^2.1.0": - "integrity" "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==" - "resolved" "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz" - "version" "2.1.0" +has-yarn@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz" + integrity sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw== -"has@^1.0.0", "has@^1.0.3": - "integrity" "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==" - "resolved" "https://registry.npmjs.org/has/-/has-1.0.3.tgz" - "version" "1.0.3" +has@^1.0.0, has@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/has/-/has-1.0.3.tgz" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== dependencies: - "function-bind" "^1.1.1" + function-bind "^1.1.1" -"hash-base@^3.0.0": - "integrity" "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==" - "resolved" "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz" - "version" "3.1.0" +hash-base@^3.0.0: + version "3.1.0" + resolved "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz" + integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== dependencies: - "inherits" "^2.0.4" - "readable-stream" "^3.6.0" - "safe-buffer" "^5.2.0" + inherits "^2.0.4" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" -"hash.js@^1.0.0", "hash.js@^1.0.3": - "integrity" "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==" - "resolved" "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz" - "version" "1.1.7" +hash.js@^1.0.0, hash.js@^1.0.3: + version "1.1.7" + resolved "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz" + integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== dependencies: - "inherits" "^2.0.3" - "minimalistic-assert" "^1.0.1" + inherits "^2.0.3" + minimalistic-assert "^1.0.1" -"hast-to-hyperscript@^9.0.0": - "integrity" "sha512-zQgLKqF+O2F72S1aa4y2ivxzSlko3MAvxkwG8ehGmNiqd98BIN3JM1rAJPmplEyLmGLO2QZYJtIneOSZ2YbJuA==" - "resolved" "https://registry.npmjs.org/hast-to-hyperscript/-/hast-to-hyperscript-9.0.1.tgz" - "version" "9.0.1" +hast-to-hyperscript@^9.0.0: + version "9.0.1" + resolved "https://registry.npmjs.org/hast-to-hyperscript/-/hast-to-hyperscript-9.0.1.tgz" + integrity sha512-zQgLKqF+O2F72S1aa4y2ivxzSlko3MAvxkwG8ehGmNiqd98BIN3JM1rAJPmplEyLmGLO2QZYJtIneOSZ2YbJuA== dependencies: "@types/unist" "^2.0.3" - "comma-separated-tokens" "^1.0.0" - "property-information" "^5.3.0" - "space-separated-tokens" "^1.0.0" - "style-to-object" "^0.3.0" - "unist-util-is" "^4.0.0" - "web-namespaces" "^1.0.0" + comma-separated-tokens "^1.0.0" + property-information "^5.3.0" + space-separated-tokens "^1.0.0" + style-to-object "^0.3.0" + unist-util-is "^4.0.0" + web-namespaces "^1.0.0" -"hast-util-from-parse5@^6.0.0": - "integrity" "sha512-jeJUWiN5pSxW12Rh01smtVkZgZr33wBokLzKLwinYOUfSzm1Nl/c3GUGebDyOKjdsRgMvoVbV0VpAcpjF4NrJA==" - "resolved" "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-6.0.1.tgz" - "version" "6.0.1" +hast-util-from-parse5@^6.0.0: + version "6.0.1" + resolved "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-6.0.1.tgz" + integrity sha512-jeJUWiN5pSxW12Rh01smtVkZgZr33wBokLzKLwinYOUfSzm1Nl/c3GUGebDyOKjdsRgMvoVbV0VpAcpjF4NrJA== dependencies: "@types/parse5" "^5.0.0" - "hastscript" "^6.0.0" - "property-information" "^5.0.0" - "vfile" "^4.0.0" - "vfile-location" "^3.2.0" - "web-namespaces" "^1.0.0" + hastscript "^6.0.0" + property-information "^5.0.0" + vfile "^4.0.0" + vfile-location "^3.2.0" + web-namespaces "^1.0.0" -"hast-util-parse-selector@^2.0.0": - "integrity" "sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ==" - "resolved" "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-2.2.5.tgz" - "version" "2.2.5" +hast-util-parse-selector@^2.0.0: + version "2.2.5" + resolved "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-2.2.5.tgz" + integrity sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ== -"hast-util-raw@6.0.1": - "integrity" "sha512-ZMuiYA+UF7BXBtsTBNcLBF5HzXzkyE6MLzJnL605LKE8GJylNjGc4jjxazAHUtcwT5/CEt6afRKViYB4X66dig==" - "resolved" "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-6.0.1.tgz" - "version" "6.0.1" +hast-util-raw@6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-6.0.1.tgz" + integrity sha512-ZMuiYA+UF7BXBtsTBNcLBF5HzXzkyE6MLzJnL605LKE8GJylNjGc4jjxazAHUtcwT5/CEt6afRKViYB4X66dig== dependencies: "@types/hast" "^2.0.0" - "hast-util-from-parse5" "^6.0.0" - "hast-util-to-parse5" "^6.0.0" - "html-void-elements" "^1.0.0" - "parse5" "^6.0.0" - "unist-util-position" "^3.0.0" - "vfile" "^4.0.0" - "web-namespaces" "^1.0.0" - "xtend" "^4.0.0" - "zwitch" "^1.0.0" + hast-util-from-parse5 "^6.0.0" + hast-util-to-parse5 "^6.0.0" + html-void-elements "^1.0.0" + parse5 "^6.0.0" + unist-util-position "^3.0.0" + vfile "^4.0.0" + web-namespaces "^1.0.0" + xtend "^4.0.0" + zwitch "^1.0.0" -"hast-util-to-parse5@^6.0.0": - "integrity" "sha512-Lu5m6Lgm/fWuz8eWnrKezHtVY83JeRGaNQ2kn9aJgqaxvVkFCZQBEhgodZUDUvoodgyROHDb3r5IxAEdl6suJQ==" - "resolved" "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-6.0.0.tgz" - "version" "6.0.0" +hast-util-to-parse5@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-6.0.0.tgz" + integrity sha512-Lu5m6Lgm/fWuz8eWnrKezHtVY83JeRGaNQ2kn9aJgqaxvVkFCZQBEhgodZUDUvoodgyROHDb3r5IxAEdl6suJQ== dependencies: - "hast-to-hyperscript" "^9.0.0" - "property-information" "^5.0.0" - "web-namespaces" "^1.0.0" - "xtend" "^4.0.0" - "zwitch" "^1.0.0" + hast-to-hyperscript "^9.0.0" + property-information "^5.0.0" + web-namespaces "^1.0.0" + xtend "^4.0.0" + zwitch "^1.0.0" -"hastscript@^6.0.0": - "integrity" "sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w==" - "resolved" "https://registry.npmjs.org/hastscript/-/hastscript-6.0.0.tgz" - "version" "6.0.0" +hastscript@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/hastscript/-/hastscript-6.0.0.tgz" + integrity sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w== dependencies: "@types/hast" "^2.0.0" - "comma-separated-tokens" "^1.0.0" - "hast-util-parse-selector" "^2.0.0" - "property-information" "^5.0.0" - "space-separated-tokens" "^1.0.0" + comma-separated-tokens "^1.0.0" + hast-util-parse-selector "^2.0.0" + property-information "^5.0.0" + space-separated-tokens "^1.0.0" -"he@^1.2.0": - "integrity" "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" - "resolved" "https://registry.npmjs.org/he/-/he-1.2.0.tgz" - "version" "1.2.0" +he@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/he/-/he-1.2.0.tgz" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== -"hex-color-regex@^1.1.0": - "integrity" "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==" - "resolved" "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz" - "version" "1.1.0" +hex-color-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz" + integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ== -"highlight-words-core@^1.2.0": - "integrity" "sha512-BXUKIkUuh6cmmxzi5OIbUJxrG8OAk2MqoL1DtO3Wo9D2faJg2ph5ntyuQeLqaHJmzER6H5tllCDA9ZnNe9BVGg==" - "resolved" "https://registry.npmjs.org/highlight-words-core/-/highlight-words-core-1.2.2.tgz" - "version" "1.2.2" +highlight-words-core@^1.2.0: + version "1.2.2" + resolved "https://registry.npmjs.org/highlight-words-core/-/highlight-words-core-1.2.2.tgz" + integrity sha512-BXUKIkUuh6cmmxzi5OIbUJxrG8OAk2MqoL1DtO3Wo9D2faJg2ph5ntyuQeLqaHJmzER6H5tllCDA9ZnNe9BVGg== -"highlight.js@^10.4.1", "highlight.js@~10.7.0": - "integrity" "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==" - "resolved" "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz" - "version" "10.7.3" +highlight.js@^10.4.1, highlight.js@~10.7.0: + version "10.7.3" + resolved "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz" + integrity sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A== -"history@^4.9.0": - "integrity" "sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==" - "resolved" "https://registry.npmjs.org/history/-/history-4.10.1.tgz" - "version" "4.10.1" +history@^4.9.0: + version "4.10.1" + resolved "https://registry.npmjs.org/history/-/history-4.10.1.tgz" + integrity sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew== dependencies: "@babel/runtime" "^7.1.2" - "loose-envify" "^1.2.0" - "resolve-pathname" "^3.0.0" - "tiny-invariant" "^1.0.2" - "tiny-warning" "^1.0.0" - "value-equal" "^1.0.1" + loose-envify "^1.2.0" + resolve-pathname "^3.0.0" + tiny-invariant "^1.0.2" + tiny-warning "^1.0.0" + value-equal "^1.0.1" -"hmac-drbg@^1.0.1": - "integrity" "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==" - "resolved" "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz" - "version" "1.0.1" +hmac-drbg@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz" + integrity sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg== dependencies: - "hash.js" "^1.0.3" - "minimalistic-assert" "^1.0.0" - "minimalistic-crypto-utils" "^1.0.1" + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" -"hoist-non-react-statics@^3.0.0", "hoist-non-react-statics@^3.1.0", "hoist-non-react-statics@^3.3.0", "hoist-non-react-statics@^3.3.2": - "integrity" "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==" - "resolved" "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz" - "version" "3.3.2" +hoist-non-react-statics@^3.0.0, hoist-non-react-statics@^3.1.0, hoist-non-react-statics@^3.3.0, hoist-non-react-statics@^3.3.2: + version "3.3.2" + resolved "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz" + integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== dependencies: - "react-is" "^16.7.0" + react-is "^16.7.0" -"home-or-tmp@^2.0.0": - "integrity" "sha512-ycURW7oUxE2sNiPVw1HVEFsW+ecOpJ5zaj7eC0RlwhibhRBod20muUN8qu/gzx956YrLolVvs1MTXwKgC2rVEg==" - "resolved" "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz" - "version" "2.0.0" +home-or-tmp@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz" + integrity sha512-ycURW7oUxE2sNiPVw1HVEFsW+ecOpJ5zaj7eC0RlwhibhRBod20muUN8qu/gzx956YrLolVvs1MTXwKgC2rVEg== dependencies: - "os-homedir" "^1.0.0" - "os-tmpdir" "^1.0.1" + os-homedir "^1.0.0" + os-tmpdir "^1.0.1" -"hoopy@^0.1.4": - "integrity" "sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ==" - "resolved" "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz" - "version" "0.1.4" +hoopy@^0.1.4: + version "0.1.4" + resolved "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz" + integrity sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ== -"hosted-git-info@^2.1.4": - "integrity" "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" - "resolved" "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz" - "version" "2.8.9" +hosted-git-info@^2.1.4: + version "2.8.9" + resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz" + integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== -"hpack.js@^2.1.6": - "integrity" "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==" - "resolved" "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz" - "version" "2.1.6" +hpack.js@^2.1.6: + version "2.1.6" + resolved "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz" + integrity sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ== dependencies: - "inherits" "^2.0.1" - "obuf" "^1.0.0" - "readable-stream" "^2.0.1" - "wbuf" "^1.1.0" + inherits "^2.0.1" + obuf "^1.0.0" + readable-stream "^2.0.1" + wbuf "^1.1.0" -"hsl-regex@^1.0.0": - "integrity" "sha512-M5ezZw4LzXbBKMruP+BNANf0k+19hDQMgpzBIYnya//Al+fjNct9Wf3b1WedLqdEs2hKBvxq/jh+DsHJLj0F9A==" - "resolved" "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz" - "version" "1.0.0" +hsl-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz" + integrity sha512-M5ezZw4LzXbBKMruP+BNANf0k+19hDQMgpzBIYnya//Al+fjNct9Wf3b1WedLqdEs2hKBvxq/jh+DsHJLj0F9A== -"hsla-regex@^1.0.0": - "integrity" "sha512-7Wn5GMLuHBjZCb2bTmnDOycho0p/7UVaAeqXZGbHrBCl6Yd/xDhQJAXe6Ga9AXJH2I5zY1dEdYw2u1UptnSBJA==" - "resolved" "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz" - "version" "1.0.0" +hsla-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz" + integrity sha512-7Wn5GMLuHBjZCb2bTmnDOycho0p/7UVaAeqXZGbHrBCl6Yd/xDhQJAXe6Ga9AXJH2I5zY1dEdYw2u1UptnSBJA== -"html-element-map@^1.2.0": - "integrity" "sha512-6XMlxrAFX4UEEGxctfFnmrFaaZFNf9i5fNuV5wZ3WWQ4FVaNP1aX1LkX9j2mfEx1NpjeE/rL3nmgEn23GdFmrg==" - "resolved" "https://registry.npmjs.org/html-element-map/-/html-element-map-1.3.1.tgz" - "version" "1.3.1" +html-element-map@^1.2.0: + version "1.3.1" + resolved "https://registry.npmjs.org/html-element-map/-/html-element-map-1.3.1.tgz" + integrity sha512-6XMlxrAFX4UEEGxctfFnmrFaaZFNf9i5fNuV5wZ3WWQ4FVaNP1aX1LkX9j2mfEx1NpjeE/rL3nmgEn23GdFmrg== dependencies: - "array.prototype.filter" "^1.0.0" - "call-bind" "^1.0.2" + array.prototype.filter "^1.0.0" + call-bind "^1.0.2" -"html-encoding-sniffer@^1.0.2": - "integrity" "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==" - "resolved" "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz" - "version" "1.0.2" +html-encoding-sniffer@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz" + integrity sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw== dependencies: - "whatwg-encoding" "^1.0.1" + whatwg-encoding "^1.0.1" -"html-encoding-sniffer@^2.0.1": - "integrity" "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==" - "resolved" "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz" - "version" "2.0.1" +html-encoding-sniffer@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz" + integrity sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ== dependencies: - "whatwg-encoding" "^1.0.5" + whatwg-encoding "^1.0.5" -"html-entities@^1.2.1": - "integrity" "sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA==" - "resolved" "https://registry.npmjs.org/html-entities/-/html-entities-1.4.0.tgz" - "version" "1.4.0" +html-entities@^1.2.1: + version "1.4.0" + resolved "https://registry.npmjs.org/html-entities/-/html-entities-1.4.0.tgz" + integrity sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA== -"html-entities@^2.1.0", "html-entities@^2.3.2": - "integrity" "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==" - "resolved" "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz" - "version" "2.3.3" +html-entities@^2.1.0, html-entities@^2.3.2: + version "2.3.3" + resolved "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz" + integrity sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA== -"html-escaper@^2.0.0": - "integrity" "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==" - "resolved" "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz" - "version" "2.0.2" +html-escaper@^2.0.0: + version "2.0.2" + resolved "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz" + integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== -"html-minifier-terser@^5.0.1": - "integrity" "sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg==" - "resolved" "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz" - "version" "5.1.1" +html-minifier-terser@^5.0.1: + version "5.1.1" + resolved "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz" + integrity sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg== dependencies: - "camel-case" "^4.1.1" - "clean-css" "^4.2.3" - "commander" "^4.1.1" - "he" "^1.2.0" - "param-case" "^3.0.3" - "relateurl" "^0.2.7" - "terser" "^4.6.3" + camel-case "^4.1.1" + clean-css "^4.2.3" + commander "^4.1.1" + he "^1.2.0" + param-case "^3.0.3" + relateurl "^0.2.7" + terser "^4.6.3" -"html-minifier-terser@^6.0.2": - "integrity" "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==" - "resolved" "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz" - "version" "6.1.0" +html-minifier-terser@^6.0.2: + version "6.1.0" + resolved "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz" + integrity sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw== dependencies: - "camel-case" "^4.1.2" - "clean-css" "^5.2.2" - "commander" "^8.3.0" - "he" "^1.2.0" - "param-case" "^3.0.4" - "relateurl" "^0.2.7" - "terser" "^5.10.0" + camel-case "^4.1.2" + clean-css "^5.2.2" + commander "^8.3.0" + he "^1.2.0" + param-case "^3.0.4" + relateurl "^0.2.7" + terser "^5.10.0" -"html-parse-stringify@^3.0.1": - "integrity" "sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg==" - "resolved" "https://registry.npmjs.org/html-parse-stringify/-/html-parse-stringify-3.0.1.tgz" - "version" "3.0.1" +html-parse-stringify@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/html-parse-stringify/-/html-parse-stringify-3.0.1.tgz" + integrity sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg== dependencies: - "void-elements" "3.1.0" + void-elements "3.1.0" -"html-tags@^3.1.0": - "integrity" "sha512-vy7ClnArOZwCnqZgvv+ddgHgJiAFXe3Ge9ML5/mBctVJoUoYPCdxVucOywjDARn6CVoh3dRSFdPHy2sX80L0Wg==" - "resolved" "https://registry.npmjs.org/html-tags/-/html-tags-3.2.0.tgz" - "version" "3.2.0" +html-tags@^3.1.0: + version "3.2.0" + resolved "https://registry.npmjs.org/html-tags/-/html-tags-3.2.0.tgz" + integrity sha512-vy7ClnArOZwCnqZgvv+ddgHgJiAFXe3Ge9ML5/mBctVJoUoYPCdxVucOywjDARn6CVoh3dRSFdPHy2sX80L0Wg== -"html-void-elements@^1.0.0": - "integrity" "sha512-uE/TxKuyNIcx44cIWnjr/rfIATDH7ZaOMmstu0CwhFG1Dunhlp4OC6/NMbhiwoq5BpW0ubi303qnEk/PZj614w==" - "resolved" "https://registry.npmjs.org/html-void-elements/-/html-void-elements-1.0.5.tgz" - "version" "1.0.5" +html-void-elements@^1.0.0: + version "1.0.5" + resolved "https://registry.npmjs.org/html-void-elements/-/html-void-elements-1.0.5.tgz" + integrity sha512-uE/TxKuyNIcx44cIWnjr/rfIATDH7ZaOMmstu0CwhFG1Dunhlp4OC6/NMbhiwoq5BpW0ubi303qnEk/PZj614w== -"html-webpack-plugin@^4.0.0", "html-webpack-plugin@4.5.2": - "integrity" "sha512-q5oYdzjKUIPQVjOosjgvCHQOv9Ett9CYYHlgvJeXG0qQvdSojnBq4vAdQBwn1+yGveAwHCoe/rMR86ozX3+c2A==" - "resolved" "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-4.5.2.tgz" - "version" "4.5.2" +html-webpack-plugin@4.5.2, html-webpack-plugin@^4.0.0: + version "4.5.2" + resolved "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-4.5.2.tgz" + integrity sha512-q5oYdzjKUIPQVjOosjgvCHQOv9Ett9CYYHlgvJeXG0qQvdSojnBq4vAdQBwn1+yGveAwHCoe/rMR86ozX3+c2A== dependencies: "@types/html-minifier-terser" "^5.0.0" "@types/tapable" "^1.0.5" "@types/webpack" "^4.41.8" - "html-minifier-terser" "^5.0.1" - "loader-utils" "^1.2.3" - "lodash" "^4.17.20" - "pretty-error" "^2.1.1" - "tapable" "^1.1.3" - "util.promisify" "1.0.0" + html-minifier-terser "^5.0.1" + loader-utils "^1.2.3" + lodash "^4.17.20" + pretty-error "^2.1.1" + tapable "^1.1.3" + util.promisify "1.0.0" -"html-webpack-plugin@^5.0.0": - "integrity" "sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw==" - "resolved" "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz" - "version" "5.5.0" +html-webpack-plugin@^5.0.0, html-webpack-plugin@^5.5.0: + version "5.5.0" + resolved "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz" + integrity sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw== dependencies: "@types/html-minifier-terser" "^6.0.0" - "html-minifier-terser" "^6.0.2" - "lodash" "^4.17.21" - "pretty-error" "^4.0.0" - "tapable" "^2.0.0" + html-minifier-terser "^6.0.2" + lodash "^4.17.21" + pretty-error "^4.0.0" + tapable "^2.0.0" -"html-webpack-plugin@^5.5.0": - "integrity" "sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw==" - "resolved" "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz" - "version" "5.5.0" +htmlparser2@^6.0.1, htmlparser2@^6.1.0: + version "6.1.0" + resolved "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz" + integrity sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A== dependencies: - "@types/html-minifier-terser" "^6.0.0" - "html-minifier-terser" "^6.0.2" - "lodash" "^4.17.21" - "pretty-error" "^4.0.0" - "tapable" "^2.0.0" + domelementtype "^2.0.1" + domhandler "^4.0.0" + domutils "^2.5.2" + entities "^2.0.0" -"htmlparser2@^6.0.1": - "integrity" "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==" - "resolved" "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz" - "version" "6.1.0" +htmlparser2@^8.0.1: + version "8.0.1" + resolved "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.1.tgz" + integrity sha512-4lVbmc1diZC7GUJQtRQ5yBAeUCL1exyMwmForWkRLnwyzWBFxN633SALPMGYaWZvKe9j1pRZJpauvmxENSp/EA== dependencies: - "domelementtype" "^2.0.1" - "domhandler" "^4.0.0" - "domutils" "^2.5.2" - "entities" "^2.0.0" + domelementtype "^2.3.0" + domhandler "^5.0.2" + domutils "^3.0.1" + entities "^4.3.0" -"htmlparser2@^6.1.0": - "integrity" "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==" - "resolved" "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz" - "version" "6.1.0" +http-cache-semantics@^4.0.0: + version "4.1.0" + resolved "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz" + integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== + +http-deceiver@^1.2.7: + version "1.2.7" + resolved "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz" + integrity sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw== + +http-errors@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz" + integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== dependencies: - "domelementtype" "^2.0.1" - "domhandler" "^4.0.0" - "domutils" "^2.5.2" - "entities" "^2.0.0" + depd "2.0.0" + inherits "2.0.4" + setprototypeof "1.2.0" + statuses "2.0.1" + toidentifier "1.0.1" -"htmlparser2@^8.0.1": - "integrity" "sha512-4lVbmc1diZC7GUJQtRQ5yBAeUCL1exyMwmForWkRLnwyzWBFxN633SALPMGYaWZvKe9j1pRZJpauvmxENSp/EA==" - "resolved" "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.1.tgz" - "version" "8.0.1" +http-errors@~1.6.2: + version "1.6.3" + resolved "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz" + integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A== dependencies: - "domelementtype" "^2.3.0" - "domhandler" "^5.0.2" - "domutils" "^3.0.1" - "entities" "^4.3.0" + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.0" + statuses ">= 1.4.0 < 2" -"http-cache-semantics@^4.0.0": - "integrity" "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==" - "resolved" "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz" - "version" "4.1.0" +http-parser-js@>=0.5.1: + version "0.5.8" + resolved "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz" + integrity sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q== -"http-deceiver@^1.2.7": - "integrity" "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==" - "resolved" "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz" - "version" "1.2.7" - -"http-errors@~1.6.2": - "integrity" "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==" - "resolved" "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz" - "version" "1.6.3" - dependencies: - "depd" "~1.1.2" - "inherits" "2.0.3" - "setprototypeof" "1.1.0" - "statuses" ">= 1.4.0 < 2" - -"http-errors@2.0.0": - "integrity" "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==" - "resolved" "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "depd" "2.0.0" - "inherits" "2.0.4" - "setprototypeof" "1.2.0" - "statuses" "2.0.1" - "toidentifier" "1.0.1" - -"http-parser-js@>=0.5.1": - "integrity" "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==" - "resolved" "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz" - "version" "0.5.8" - -"http-proxy-agent@^4.0.1": - "integrity" "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==" - "resolved" "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz" - "version" "4.0.1" +http-proxy-agent@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz" + integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== dependencies: "@tootallnate/once" "1" - "agent-base" "6" - "debug" "4" + agent-base "6" + debug "4" -"http-proxy-middleware@^1.3.1": - "integrity" "sha512-13eVVDYS4z79w7f1+NPllJtOQFx/FdUW4btIvVRMaRlUY9VGstAbo5MOhLEuUgZFRHn3x50ufn25zkj/boZnEg==" - "resolved" "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-1.3.1.tgz" - "version" "1.3.1" +http-proxy-middleware@^1.3.1: + version "1.3.1" + resolved "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-1.3.1.tgz" + integrity sha512-13eVVDYS4z79w7f1+NPllJtOQFx/FdUW4btIvVRMaRlUY9VGstAbo5MOhLEuUgZFRHn3x50ufn25zkj/boZnEg== dependencies: "@types/http-proxy" "^1.17.5" - "http-proxy" "^1.18.1" - "is-glob" "^4.0.1" - "is-plain-obj" "^3.0.0" - "micromatch" "^4.0.2" + http-proxy "^1.18.1" + is-glob "^4.0.1" + is-plain-obj "^3.0.0" + micromatch "^4.0.2" -"http-proxy-middleware@^2.0.3": - "integrity" "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==" - "resolved" "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz" - "version" "2.0.6" +http-proxy-middleware@^2.0.3: + version "2.0.6" + resolved "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz" + integrity sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw== dependencies: "@types/http-proxy" "^1.17.8" - "http-proxy" "^1.18.1" - "is-glob" "^4.0.1" - "is-plain-obj" "^3.0.0" - "micromatch" "^4.0.2" + http-proxy "^1.18.1" + is-glob "^4.0.1" + is-plain-obj "^3.0.0" + micromatch "^4.0.2" -"http-proxy@^1.18.1": - "integrity" "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==" - "resolved" "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz" - "version" "1.18.1" +http-proxy@^1.18.1: + version "1.18.1" + resolved "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz" + integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== dependencies: - "eventemitter3" "^4.0.0" - "follow-redirects" "^1.0.0" - "requires-port" "^1.0.0" + eventemitter3 "^4.0.0" + follow-redirects "^1.0.0" + requires-port "^1.0.0" -"http-signature@~1.2.0": - "integrity" "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==" - "resolved" "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz" - "version" "1.2.0" +http-signature@~1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz" + integrity sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ== dependencies: - "assert-plus" "^1.0.0" - "jsprim" "^1.2.2" - "sshpk" "^1.7.0" + assert-plus "^1.0.0" + jsprim "^1.2.2" + sshpk "^1.7.0" -"https-browserify@^1.0.0": - "integrity" "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==" - "resolved" "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz" - "version" "1.0.0" +https-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz" + integrity sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg== -"https-proxy-agent@^4.0.0": - "integrity" "sha512-zoDhWrkR3of1l9QAL8/scJZyLu8j/gBkcwcaQOZh7Gyh/+uJQzGVETdgT30akuwkpL8HTRfssqI3BZuV18teDg==" - "resolved" "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-4.0.0.tgz" - "version" "4.0.0" +https-proxy-agent@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-4.0.0.tgz" + integrity sha512-zoDhWrkR3of1l9QAL8/scJZyLu8j/gBkcwcaQOZh7Gyh/+uJQzGVETdgT30akuwkpL8HTRfssqI3BZuV18teDg== dependencies: - "agent-base" "5" - "debug" "4" + agent-base "5" + debug "4" -"https-proxy-agent@^5.0.0": - "integrity" "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==" - "resolved" "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz" - "version" "5.0.1" +https-proxy-agent@^5.0.0: + version "5.0.1" + resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz" + integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== dependencies: - "agent-base" "6" - "debug" "4" + agent-base "6" + debug "4" -"human-signals@^2.1.0": - "integrity" "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==" - "resolved" "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz" - "version" "2.1.0" +human-signals@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz" + integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== -"hyphenate-style-name@^1.0.3": - "integrity" "sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ==" - "resolved" "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz" - "version" "1.0.4" +hyphenate-style-name@^1.0.3: + version "1.0.4" + resolved "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz" + integrity sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ== -"i18next-browser-languagedetector@^6.1.2": - "integrity" "sha512-Svm+MduCElO0Meqpj1kJAriTC6OhI41VhlT/A0UPjGoPZBhAHIaGE5EfsHlTpgdH09UVX7rcc72pSDDBeKSQQA==" - "resolved" "https://registry.npmjs.org/i18next-browser-languagedetector/-/i18next-browser-languagedetector-6.1.8.tgz" - "version" "6.1.8" +i18next-browser-languagedetector@^6.1.2: + version "6.1.8" + resolved "https://registry.npmjs.org/i18next-browser-languagedetector/-/i18next-browser-languagedetector-6.1.8.tgz" + integrity sha512-Svm+MduCElO0Meqpj1kJAriTC6OhI41VhlT/A0UPjGoPZBhAHIaGE5EfsHlTpgdH09UVX7rcc72pSDDBeKSQQA== dependencies: "@babel/runtime" "^7.19.0" -"i18next-http-backend@^1.2.6": - "integrity" "sha512-tLuHWuLWl6CmS07o+UB6EcQCaUjrZ1yhdseIN7sfq0u7phsMePJ8pqlGhIAdRDPF/q7ooyo5MID5DRFBCH+x5w==" - "resolved" "https://registry.npmjs.org/i18next-http-backend/-/i18next-http-backend-1.4.5.tgz" - "version" "1.4.5" +i18next-http-backend@^1.2.6: + version "1.4.5" + resolved "https://registry.npmjs.org/i18next-http-backend/-/i18next-http-backend-1.4.5.tgz" + integrity sha512-tLuHWuLWl6CmS07o+UB6EcQCaUjrZ1yhdseIN7sfq0u7phsMePJ8pqlGhIAdRDPF/q7ooyo5MID5DRFBCH+x5w== dependencies: - "cross-fetch" "3.1.5" + cross-fetch "3.1.5" -"i18next@^20.3.2", "i18next@>= 19.0.0": - "integrity" "sha512-yCMYTMEJ9ihCwEQQ3phLo7I/Pwycf8uAx+sRHwwk5U9Aui/IZYgQRyMqXafQOw5QQ7DM1Z+WyEXWIqSuJHhG2A==" - "resolved" "https://registry.npmjs.org/i18next/-/i18next-20.6.1.tgz" - "version" "20.6.1" +i18next@^20.3.2: + version "20.6.1" + resolved "https://registry.npmjs.org/i18next/-/i18next-20.6.1.tgz" + integrity sha512-yCMYTMEJ9ihCwEQQ3phLo7I/Pwycf8uAx+sRHwwk5U9Aui/IZYgQRyMqXafQOw5QQ7DM1Z+WyEXWIqSuJHhG2A== dependencies: "@babel/runtime" "^7.12.0" -"iconv-lite@^0.6.3": - "integrity" "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==" - "resolved" "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz" - "version" "0.6.3" +iconv-lite@0.4.24: + 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.0.0" + safer-buffer ">= 2.1.2 < 3" -"iconv-lite@0.4.24": - "integrity" "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==" - "resolved" "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz" - "version" "0.4.24" +iconv-lite@^0.6.3: + version "0.6.3" + resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz" + integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== dependencies: - "safer-buffer" ">= 2.1.2 < 3" + safer-buffer ">= 2.1.2 < 3.0.0" -"icss-utils@^4.0.0", "icss-utils@^4.1.1": - "integrity" "sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==" - "resolved" "https://registry.npmjs.org/icss-utils/-/icss-utils-4.1.1.tgz" - "version" "4.1.1" +icss-utils@^4.0.0, icss-utils@^4.1.1: + version "4.1.1" + resolved "https://registry.npmjs.org/icss-utils/-/icss-utils-4.1.1.tgz" + integrity sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA== dependencies: - "postcss" "^7.0.14" + postcss "^7.0.14" -"icss-utils@^5.0.0", "icss-utils@^5.1.0": - "integrity" "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==" - "resolved" "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz" - "version" "5.1.0" +icss-utils@^5.0.0, icss-utils@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz" + integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== -"idb-wrapper@^1.4.1": - "integrity" "sha512-zfNREywMuf0NzDo9mVsL0yegjsirJxHpKHvWcyRozIqQy89g0a3U+oBPOCN4cc0oCiOuYgZHimzaW/R46G1Mpg==" - "resolved" "https://registry.npmjs.org/idb-wrapper/-/idb-wrapper-1.7.2.tgz" - "version" "1.7.2" +idb-wrapper@^1.4.1: + version "1.7.2" + resolved "https://registry.npmjs.org/idb-wrapper/-/idb-wrapper-1.7.2.tgz" + integrity sha512-zfNREywMuf0NzDo9mVsL0yegjsirJxHpKHvWcyRozIqQy89g0a3U+oBPOCN4cc0oCiOuYgZHimzaW/R46G1Mpg== -"idb@^7.0.1": - "integrity" "sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==" - "resolved" "https://registry.npmjs.org/idb/-/idb-7.1.1.tgz" - "version" "7.1.1" +idb@^7.0.1: + version "7.1.1" + resolved "https://registry.npmjs.org/idb/-/idb-7.1.1.tgz" + integrity sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ== -"identity-obj-proxy@^3.0.0", "identity-obj-proxy@3.0.0": - "integrity" "sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA==" - "resolved" "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz" - "version" "3.0.0" +identity-obj-proxy@3.0.0, identity-obj-proxy@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz" + integrity sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA== dependencies: - "harmony-reflect" "^1.4.6" + harmony-reflect "^1.4.6" -"ieee754@^1.1.4": - "integrity" "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" - "resolved" "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz" - "version" "1.2.1" +ieee754@^1.1.4: + version "1.2.1" + resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== -"iferr@^0.1.5": - "integrity" "sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA==" - "resolved" "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz" - "version" "0.1.5" +iferr@^0.1.5: + version "0.1.5" + resolved "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz" + integrity sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA== -"ignore@^4.0.3": - "integrity" "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==" - "resolved" "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz" - "version" "4.0.6" +ignore@^4.0.3: + version "4.0.6" + resolved "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz" + integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== -"ignore@^5.1.4", "ignore@^5.2.0": - "integrity" "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==" - "resolved" "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz" - "version" "5.2.0" +ignore@^5.1.4, ignore@^5.2.0: + version "5.2.0" + resolved "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz" + integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== -"image-size@~0.5.0": - "integrity" "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==" - "resolved" "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz" - "version" "0.5.5" +image-size@~0.5.0: + version "0.5.5" + resolved "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz" + integrity sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ== -"immer@^9.0.7": - "integrity" "sha512-qenGE7CstVm1NrHQbMh8YaSzTZTFNP3zPqr3YU0S0UY441j4bJTg4A2Hh5KAhwgaiU6ZZ1Ar6y/2f4TblnMReQ==" - "resolved" "https://registry.npmjs.org/immer/-/immer-9.0.16.tgz" - "version" "9.0.16" +immer@8.0.1: + version "8.0.1" + resolved "https://registry.npmjs.org/immer/-/immer-8.0.1.tgz" + integrity sha512-aqXhGP7//Gui2+UrEtvxZxSquQVXTpZ7KDxfCcKAF3Vysvw0CViVaW9RZ1j1xlIYqaaaipBoqdqeibkc18PNvA== -"immer@8.0.1": - "integrity" "sha512-aqXhGP7//Gui2+UrEtvxZxSquQVXTpZ7KDxfCcKAF3Vysvw0CViVaW9RZ1j1xlIYqaaaipBoqdqeibkc18PNvA==" - "resolved" "https://registry.npmjs.org/immer/-/immer-8.0.1.tgz" - "version" "8.0.1" +immer@^9.0.7: + version "9.0.16" + resolved "https://registry.npmjs.org/immer/-/immer-9.0.16.tgz" + integrity sha512-qenGE7CstVm1NrHQbMh8YaSzTZTFNP3zPqr3YU0S0UY441j4bJTg4A2Hh5KAhwgaiU6ZZ1Ar6y/2f4TblnMReQ== -"immutable@^4.0.0": - "integrity" "sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==" - "resolved" "https://registry.npmjs.org/immutable/-/immutable-4.1.0.tgz" - "version" "4.1.0" +immutable@^4.0.0: + version "4.1.0" + resolved "https://registry.npmjs.org/immutable/-/immutable-4.1.0.tgz" + integrity sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ== -"immutable@~3.7.4", "immutable@3.x.x", "immutable@3.x.x || 4.x.x": - "integrity" "sha512-AizQPcaofEtO11RZhPPHBOJRdo/20MKQF9mBLnVkBoyHi1/zXK8fzVdnEpSV9gxqtnh6Qomfp3F0xT5qP/vThw==" - "resolved" "https://registry.npmjs.org/immutable/-/immutable-3.7.6.tgz" - "version" "3.7.6" +immutable@~3.7.4: + version "3.7.6" + resolved "https://registry.npmjs.org/immutable/-/immutable-3.7.6.tgz" + integrity sha512-AizQPcaofEtO11RZhPPHBOJRdo/20MKQF9mBLnVkBoyHi1/zXK8fzVdnEpSV9gxqtnh6Qomfp3F0xT5qP/vThw== -"import-cwd@^2.0.0": - "integrity" "sha512-Ew5AZzJQFqrOV5BTW3EIoHAnoie1LojZLXKcCQ/yTRyVZosBhK1x1ViYjHGf5pAFOq8ZyChZp6m/fSN7pJyZtg==" - "resolved" "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz" - "version" "2.1.0" +import-cwd@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz" + integrity sha512-Ew5AZzJQFqrOV5BTW3EIoHAnoie1LojZLXKcCQ/yTRyVZosBhK1x1ViYjHGf5pAFOq8ZyChZp6m/fSN7pJyZtg== dependencies: - "import-from" "^2.1.0" + import-from "^2.1.0" -"import-fresh@^2.0.0": - "integrity" "sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==" - "resolved" "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz" - "version" "2.0.0" +import-fresh@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz" + integrity sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg== dependencies: - "caller-path" "^2.0.0" - "resolve-from" "^3.0.0" + caller-path "^2.0.0" + resolve-from "^3.0.0" -"import-fresh@^3.0.0", "import-fresh@^3.1.0", "import-fresh@^3.2.1": - "integrity" "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==" - "resolved" "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz" - "version" "3.3.0" +import-fresh@^3.0.0, import-fresh@^3.1.0, import-fresh@^3.2.1: + version "3.3.0" + resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== dependencies: - "parent-module" "^1.0.0" - "resolve-from" "^4.0.0" + parent-module "^1.0.0" + resolve-from "^4.0.0" -"import-from@^2.1.0": - "integrity" "sha512-0vdnLL2wSGnhlRmzHJAg5JHjt1l2vYhzJ7tNLGbeVg0fse56tpGaH0uzH+r9Slej+BSXXEHvBKDEnVSLLE9/+w==" - "resolved" "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz" - "version" "2.1.0" +import-from@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz" + integrity sha512-0vdnLL2wSGnhlRmzHJAg5JHjt1l2vYhzJ7tNLGbeVg0fse56tpGaH0uzH+r9Slej+BSXXEHvBKDEnVSLLE9/+w== dependencies: - "resolve-from" "^3.0.0" + resolve-from "^3.0.0" -"import-lazy@^2.1.0": - "integrity" "sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A==" - "resolved" "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz" - "version" "2.1.0" +import-lazy@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz" + integrity sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A== -"import-local@^3.0.2": - "integrity" "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==" - "resolved" "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz" - "version" "3.1.0" +import-local@^3.0.2: + version "3.1.0" + resolved "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz" + integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== dependencies: - "pkg-dir" "^4.2.0" - "resolve-cwd" "^3.0.0" + pkg-dir "^4.2.0" + resolve-cwd "^3.0.0" -"imurmurhash@^0.1.4": - "integrity" "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==" - "resolved" "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" - "version" "0.1.4" +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== -"indent-string@^2.1.0": - "integrity" "sha512-aqwDFWSgSgfRaEwao5lg5KEcVd/2a+D1rvoG7NdilmYz0NwRk6StWpWdz/Hpk34MKPpx7s8XxUqimfcQK6gGlg==" - "resolved" "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz" - "version" "2.1.0" +indent-string@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz" + integrity sha512-aqwDFWSgSgfRaEwao5lg5KEcVd/2a+D1rvoG7NdilmYz0NwRk6StWpWdz/Hpk34MKPpx7s8XxUqimfcQK6gGlg== dependencies: - "repeating" "^2.0.0" + repeating "^2.0.0" -"indent-string@^4.0.0": - "integrity" "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==" - "resolved" "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz" - "version" "4.0.0" +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== -"indexes-of@^1.0.1": - "integrity" "sha512-bup+4tap3Hympa+JBJUG7XuOsdNQ6fxt0MHyXMKuLBKn0OqsTfvUxkUrroEX1+B2VsSHvCjiIcZVxRtYa4nllA==" - "resolved" "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz" - "version" "1.0.1" +indexes-of@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz" + integrity sha512-bup+4tap3Hympa+JBJUG7XuOsdNQ6fxt0MHyXMKuLBKn0OqsTfvUxkUrroEX1+B2VsSHvCjiIcZVxRtYa4nllA== -"indexof@0.0.1": - "integrity" "sha512-i0G7hLJ1z0DE8dsqJa2rycj9dBmNKgXBvotXtZYXakU9oivfB9Uj2ZBC27qqef2U58/ZLwalxa1X/RDCdkHtVg==" - "resolved" "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz" - "version" "0.0.1" +indexof@0.0.1: + version "0.0.1" + resolved "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz" + integrity sha512-i0G7hLJ1z0DE8dsqJa2rycj9dBmNKgXBvotXtZYXakU9oivfB9Uj2ZBC27qqef2U58/ZLwalxa1X/RDCdkHtVg== -"infer-owner@^1.0.3", "infer-owner@^1.0.4": - "integrity" "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==" - "resolved" "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz" - "version" "1.0.4" +infer-owner@^1.0.3, infer-owner@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz" + integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== -"inflight@^1.0.4": - "integrity" "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==" - "resolved" "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" - "version" "1.0.6" +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== dependencies: - "once" "^1.3.0" - "wrappy" "1" + once "^1.3.0" + wrappy "1" -"inherits@^2.0.0", "inherits@^2.0.1", "inherits@^2.0.3", "inherits@^2.0.4", "inherits@~2.0.1", "inherits@~2.0.3", "inherits@2", "inherits@2.0.4": - "integrity" "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - "resolved" "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" - "version" "2.0.4" +inherits@2, inherits@2.0.4, inherits@^2.0.0, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== -"inherits@2.0.1": - "integrity" "sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA==" - "resolved" "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - "version" "2.0.1" +inherits@2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + integrity sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA== -"inherits@2.0.3": - "integrity" "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==" - "resolved" "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz" - "version" "2.0.3" +inherits@2.0.3: + version "2.0.3" + resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz" + integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw== -"ini@^1.3.5", "ini@~1.3.0": - "integrity" "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" - "resolved" "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz" - "version" "1.3.8" +ini@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz" + integrity sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA== -"ini@2.0.0": - "integrity" "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==" - "resolved" "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz" - "version" "2.0.0" +ini@^1.3.5, ini@~1.3.0: + version "1.3.8" + resolved "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz" + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== -"inline-style-parser@0.1.1": - "integrity" "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==" - "resolved" "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz" - "version" "0.1.1" +inline-style-parser@0.1.1: + version "0.1.1" + resolved "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz" + integrity sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q== -"internal-slot@^1.0.3": - "integrity" "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==" - "resolved" "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz" - "version" "1.0.3" +internal-slot@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz" + integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA== dependencies: - "get-intrinsic" "^1.1.0" - "has" "^1.0.3" - "side-channel" "^1.0.4" + get-intrinsic "^1.1.0" + has "^1.0.3" + side-channel "^1.0.4" -"interpret@^1.0.0": - "integrity" "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==" - "resolved" "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz" - "version" "1.4.0" +interpret@^1.0.0: + version "1.4.0" + resolved "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz" + integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== -"interpret@^2.2.0": - "integrity" "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==" - "resolved" "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz" - "version" "2.2.0" +interpret@^2.2.0: + version "2.2.0" + resolved "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz" + integrity sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw== -"invariant@^2.1.0", "invariant@^2.2.0", "invariant@^2.2.2", "invariant@^2.2.4": - "integrity" "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==" - "resolved" "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz" - "version" "2.2.4" +invariant@^2.1.0, invariant@^2.2.0, invariant@^2.2.2, invariant@^2.2.4: + version "2.2.4" + resolved "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz" + integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== dependencies: - "loose-envify" "^1.0.0" + loose-envify "^1.0.0" -"ip@^2.0.0": - "integrity" "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==" - "resolved" "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz" - "version" "2.0.0" +ip@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz" + integrity sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ== -"ipaddr.js@^2.0.1": - "integrity" "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==" - "resolved" "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz" - "version" "2.0.1" +ipaddr.js@1.9.1: + 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== -"ipaddr.js@1.9.1": - "integrity" "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" - "resolved" "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz" - "version" "1.9.1" +ipaddr.js@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz" + integrity sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng== -"is-absolute-url@^2.0.0": - "integrity" "sha512-vOx7VprsKyllwjSkLV79NIhpyLfr3jAp7VaTCMXOJHu4m0Ew1CZ2fcjASwmV1jI3BWuWHB013M48eyeldk9gYg==" - "resolved" "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz" - "version" "2.1.0" +is-absolute-url@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz" + integrity sha512-vOx7VprsKyllwjSkLV79NIhpyLfr3jAp7VaTCMXOJHu4m0Ew1CZ2fcjASwmV1jI3BWuWHB013M48eyeldk9gYg== -"is-absolute-url@^3.0.0": - "integrity" "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==" - "resolved" "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz" - "version" "3.0.3" +is-absolute-url@^3.0.0: + version "3.0.3" + resolved "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz" + integrity sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q== -"is-accessor-descriptor@^0.1.6": - "integrity" "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==" - "resolved" "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz" - "version" "0.1.6" +is-accessor-descriptor@^0.1.6: + version "0.1.6" + resolved "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz" + integrity sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A== dependencies: - "kind-of" "^3.0.2" + kind-of "^3.0.2" -"is-accessor-descriptor@^1.0.0": - "integrity" "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==" - "resolved" "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz" - "version" "1.0.0" +is-accessor-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz" + integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== dependencies: - "kind-of" "^6.0.0" + kind-of "^6.0.0" -"is-alphabetical@^1.0.0", "is-alphabetical@1.0.4": - "integrity" "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==" - "resolved" "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz" - "version" "1.0.4" +is-alphabetical@1.0.4, is-alphabetical@^1.0.0: + version "1.0.4" + resolved "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz" + integrity sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg== -"is-alphanumerical@^1.0.0": - "integrity" "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==" - "resolved" "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz" - "version" "1.0.4" +is-alphanumerical@^1.0.0: + version "1.0.4" + resolved "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz" + integrity sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A== dependencies: - "is-alphabetical" "^1.0.0" - "is-decimal" "^1.0.0" + is-alphabetical "^1.0.0" + is-decimal "^1.0.0" -"is-arguments@^1.0.4", "is-arguments@^1.1.0", "is-arguments@^1.1.1": - "integrity" "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==" - "resolved" "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz" - "version" "1.1.1" +is-arguments@^1.0.4, is-arguments@^1.1.0, is-arguments@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz" + integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== dependencies: - "call-bind" "^1.0.2" - "has-tostringtag" "^1.0.0" + call-bind "^1.0.2" + has-tostringtag "^1.0.0" -"is-arrayish@^0.2.1": - "integrity" "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" - "resolved" "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" - "version" "0.2.1" +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" + integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== -"is-arrayish@^0.3.1": - "integrity" "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" - "resolved" "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz" - "version" "0.3.2" +is-arrayish@^0.3.1: + version "0.3.2" + resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz" + integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== -"is-bigint@^1.0.1": - "integrity" "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==" - "resolved" "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz" - "version" "1.0.4" +is-bigint@^1.0.1: + version "1.0.4" + resolved "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz" + integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== dependencies: - "has-bigints" "^1.0.1" + has-bigints "^1.0.1" -"is-binary-path@^1.0.0": - "integrity" "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==" - "resolved" "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz" - "version" "1.0.1" +is-binary-path@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz" + integrity sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q== dependencies: - "binary-extensions" "^1.0.0" + binary-extensions "^1.0.0" -"is-binary-path@~2.1.0": - "integrity" "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==" - "resolved" "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz" - "version" "2.1.0" +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== dependencies: - "binary-extensions" "^2.0.0" + binary-extensions "^2.0.0" -"is-boolean-object@^1.0.1", "is-boolean-object@^1.1.0": - "integrity" "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==" - "resolved" "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz" - "version" "1.1.2" +is-boolean-object@^1.0.1, is-boolean-object@^1.1.0: + version "1.1.2" + resolved "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz" + integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== dependencies: - "call-bind" "^1.0.2" - "has-tostringtag" "^1.0.0" + call-bind "^1.0.2" + has-tostringtag "^1.0.0" -"is-buffer@^1.0.2", "is-buffer@^1.1.5": - "integrity" "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" - "resolved" "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz" - "version" "1.1.6" +is-buffer@^1.0.2, is-buffer@^1.1.5: + version "1.1.6" + resolved "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz" + integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== -"is-buffer@^2.0.0": - "integrity" "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==" - "resolved" "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz" - "version" "2.0.5" +is-buffer@^2.0.0: + version "2.0.5" + resolved "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz" + integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== -"is-callable@^1.1.3", "is-callable@^1.1.4", "is-callable@^1.1.5", "is-callable@^1.2.7": - "integrity" "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==" - "resolved" "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz" - "version" "1.2.7" +is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.1.5, is-callable@^1.2.7: + version "1.2.7" + resolved "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz" + integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== -"is-ci@^2.0.0": - "integrity" "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==" - "resolved" "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz" - "version" "2.0.0" +is-ci@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz" + integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== dependencies: - "ci-info" "^2.0.0" + ci-info "^2.0.0" -"is-color-stop@^1.0.0": - "integrity" "sha512-H1U8Vz0cfXNujrJzEcvvwMDW9Ra+biSYA3ThdQvAnMLJkEHQXn6bWzLkxHtVYJ+Sdbx0b6finn3jZiaVe7MAHA==" - "resolved" "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz" - "version" "1.1.0" +is-color-stop@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz" + integrity sha512-H1U8Vz0cfXNujrJzEcvvwMDW9Ra+biSYA3ThdQvAnMLJkEHQXn6bWzLkxHtVYJ+Sdbx0b6finn3jZiaVe7MAHA== dependencies: - "css-color-names" "^0.0.4" - "hex-color-regex" "^1.1.0" - "hsl-regex" "^1.0.0" - "hsla-regex" "^1.0.0" - "rgb-regex" "^1.0.1" - "rgba-regex" "^1.0.0" + css-color-names "^0.0.4" + hex-color-regex "^1.1.0" + hsl-regex "^1.0.0" + hsla-regex "^1.0.0" + rgb-regex "^1.0.1" + rgba-regex "^1.0.0" -"is-core-module@^2.1.0", "is-core-module@^2.4.0", "is-core-module@^2.8.1", "is-core-module@^2.9.0": - "integrity" "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==" - "resolved" "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz" - "version" "2.11.0" +is-core-module@^2.1.0, is-core-module@^2.4.0, is-core-module@^2.8.1, is-core-module@^2.9.0: + version "2.11.0" + resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz" + integrity sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw== dependencies: - "has" "^1.0.3" + has "^1.0.3" -"is-data-descriptor@^0.1.4": - "integrity" "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==" - "resolved" "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz" - "version" "0.1.4" +is-data-descriptor@^0.1.4: + version "0.1.4" + resolved "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz" + integrity sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg== dependencies: - "kind-of" "^3.0.2" + kind-of "^3.0.2" -"is-data-descriptor@^1.0.0": - "integrity" "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==" - "resolved" "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz" - "version" "1.0.0" +is-data-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz" + integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== dependencies: - "kind-of" "^6.0.0" + kind-of "^6.0.0" -"is-date-object@^1.0.1", "is-date-object@^1.0.5": - "integrity" "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==" - "resolved" "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz" - "version" "1.0.5" +is-date-object@^1.0.1, is-date-object@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz" + integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== dependencies: - "has-tostringtag" "^1.0.0" + has-tostringtag "^1.0.0" -"is-decimal@^1.0.0": - "integrity" "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==" - "resolved" "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz" - "version" "1.0.4" +is-decimal@^1.0.0: + version "1.0.4" + resolved "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz" + integrity sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw== -"is-descriptor@^0.1.0": - "integrity" "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==" - "resolved" "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz" - "version" "0.1.6" +is-descriptor@^0.1.0: + version "0.1.6" + resolved "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz" + integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== dependencies: - "is-accessor-descriptor" "^0.1.6" - "is-data-descriptor" "^0.1.4" - "kind-of" "^5.0.0" + is-accessor-descriptor "^0.1.6" + is-data-descriptor "^0.1.4" + kind-of "^5.0.0" -"is-descriptor@^1.0.0": - "integrity" "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==" - "resolved" "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz" - "version" "1.0.2" +is-descriptor@^1.0.0, is-descriptor@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz" + integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== dependencies: - "is-accessor-descriptor" "^1.0.0" - "is-data-descriptor" "^1.0.0" - "kind-of" "^6.0.2" + is-accessor-descriptor "^1.0.0" + is-data-descriptor "^1.0.0" + kind-of "^6.0.2" -"is-descriptor@^1.0.2": - "integrity" "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==" - "resolved" "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz" - "version" "1.0.2" +is-directory@^0.3.1: + version "0.3.1" + resolved "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz" + integrity sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw== + +is-docker@^2.0.0, is-docker@^2.1.1: + version "2.2.1" + resolved "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz" + integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== + +is-dom@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/is-dom/-/is-dom-1.1.0.tgz" + integrity sha512-u82f6mvhYxRPKpw8V1N0W8ce1xXwOrQtgGcxl6UCL5zBmZu3is/18K0rR7uFCnMDuAsS/3W54mGL4vsaFUQlEQ== dependencies: - "is-accessor-descriptor" "^1.0.0" - "is-data-descriptor" "^1.0.0" - "kind-of" "^6.0.2" + is-object "^1.0.1" + is-window "^1.0.2" -"is-directory@^0.3.1": - "integrity" "sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==" - "resolved" "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz" - "version" "0.3.1" +is-dotfile@^1.0.0: + version "1.0.3" + resolved "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz" + integrity sha512-9YclgOGtN/f8zx0Pr4FQYMdibBiTaH3sn52vjYip4ZSf6C4/6RfTEZ+MR4GvKhCxdPh21Bg42/WL55f6KSnKpg== -"is-docker@^2.0.0", "is-docker@^2.1.1": - "integrity" "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==" - "resolved" "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz" - "version" "2.2.1" - -"is-dom@^1.0.0": - "integrity" "sha512-u82f6mvhYxRPKpw8V1N0W8ce1xXwOrQtgGcxl6UCL5zBmZu3is/18K0rR7uFCnMDuAsS/3W54mGL4vsaFUQlEQ==" - "resolved" "https://registry.npmjs.org/is-dom/-/is-dom-1.1.0.tgz" - "version" "1.1.0" +is-equal-shallow@^0.1.3: + version "0.1.3" + resolved "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz" + integrity sha512-0EygVC5qPvIyb+gSz7zdD5/AAoS6Qrx1e//6N4yv4oNm30kqvdmG66oZFWVlQHUWe5OjP08FuTw2IdT0EOTcYA== dependencies: - "is-object" "^1.0.1" - "is-window" "^1.0.2" + is-primitive "^2.0.0" -"is-dotfile@^1.0.0": - "integrity" "sha512-9YclgOGtN/f8zx0Pr4FQYMdibBiTaH3sn52vjYip4ZSf6C4/6RfTEZ+MR4GvKhCxdPh21Bg42/WL55f6KSnKpg==" - "resolved" "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz" - "version" "1.0.3" +is-extendable@^0.1.0, is-extendable@^0.1.1: + version "0.1.1" + resolved "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz" + integrity sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw== -"is-equal-shallow@^0.1.3": - "integrity" "sha512-0EygVC5qPvIyb+gSz7zdD5/AAoS6Qrx1e//6N4yv4oNm30kqvdmG66oZFWVlQHUWe5OjP08FuTw2IdT0EOTcYA==" - "resolved" "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz" - "version" "0.1.3" +is-extendable@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz" + integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== dependencies: - "is-primitive" "^2.0.0" + is-plain-object "^2.0.4" -"is-extendable@^0.1.0", "is-extendable@^0.1.1": - "integrity" "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==" - "resolved" "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz" - "version" "0.1.1" +is-extglob@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz" + integrity sha512-7Q+VbVafe6x2T+Tu6NcOf6sRklazEPmBoB3IWk3WdGZM2iGUwU/Oe3Wtq5lSEkDTTlpp8yx+5t4pzO/i9Ty1ww== -"is-extendable@^1.0.1": - "integrity" "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==" - "resolved" "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz" - "version" "1.0.1" +is-extglob@^2.1.0, is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-finite@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz" + integrity sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w== + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz" + integrity sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w== + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-function@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz" + integrity sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ== + +is-generator-fn@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz" + integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== + +is-generator-function@^1.0.7: + version "1.0.10" + resolved "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz" + integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== dependencies: - "is-plain-object" "^2.0.4" + has-tostringtag "^1.0.0" -"is-extglob@^1.0.0": - "integrity" "sha512-7Q+VbVafe6x2T+Tu6NcOf6sRklazEPmBoB3IWk3WdGZM2iGUwU/Oe3Wtq5lSEkDTTlpp8yx+5t4pzO/i9Ty1ww==" - "resolved" "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz" - "version" "1.0.0" - -"is-extglob@^2.1.0", "is-extglob@^2.1.1": - "integrity" "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" - "resolved" "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" - "version" "2.1.1" - -"is-finite@^1.0.0": - "integrity" "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==" - "resolved" "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz" - "version" "1.1.0" - -"is-fullwidth-code-point@^2.0.0": - "integrity" "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==" - "resolved" "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz" - "version" "2.0.0" - -"is-fullwidth-code-point@^3.0.0": - "integrity" "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" - "resolved" "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" - "version" "3.0.0" - -"is-function@^1.0.2": - "integrity" "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==" - "resolved" "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz" - "version" "1.0.2" - -"is-generator-fn@^2.0.0": - "integrity" "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==" - "resolved" "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz" - "version" "2.1.0" - -"is-generator-function@^1.0.7": - "integrity" "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==" - "resolved" "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz" - "version" "1.0.10" +is-glob@^2.0.0, is-glob@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz" + integrity sha512-a1dBeB19NXsf/E0+FHqkagizel/LQw2DjSQpvQrj3zT+jYPpaUCryPnrQajXKFLCMuf4I6FhRpaGtw4lPrG6Eg== dependencies: - "has-tostringtag" "^1.0.0" + is-extglob "^1.0.0" -"is-glob@^2.0.0", "is-glob@^2.0.1": - "integrity" "sha512-a1dBeB19NXsf/E0+FHqkagizel/LQw2DjSQpvQrj3zT+jYPpaUCryPnrQajXKFLCMuf4I6FhRpaGtw4lPrG6Eg==" - "resolved" "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz" - "version" "2.0.1" +is-glob@^3.0.0, is-glob@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz" + integrity sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw== dependencies: - "is-extglob" "^1.0.0" + is-extglob "^2.1.0" -"is-glob@^3.0.0": - "integrity" "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==" - "resolved" "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz" - "version" "3.1.0" +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.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== dependencies: - "is-extglob" "^2.1.0" + is-extglob "^2.1.1" -"is-glob@^3.1.0": - "integrity" "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==" - "resolved" "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz" - "version" "3.1.0" +is-hexadecimal@^1.0.0: + version "1.0.4" + resolved "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz" + integrity sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw== + +is-in-browser@^1.0.2, is-in-browser@^1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/is-in-browser/-/is-in-browser-1.1.3.tgz" + integrity sha512-FeXIBgG/CPGd/WUxuEyvgGTEfwiG9Z4EKGxjNMRqviiIIfsmgrpnHLffEDdwUHqNva1VEW91o3xBT/m8Elgl9g== + +is-installed-globally@^0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz" + integrity sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ== dependencies: - "is-extglob" "^2.1.0" + global-dirs "^3.0.0" + is-path-inside "^3.0.2" -"is-glob@^4.0.0", "is-glob@^4.0.1", "is-glob@^4.0.3", "is-glob@~4.0.1": - "integrity" "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==" - "resolved" "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" - "version" "4.0.3" +is-map@^2.0.1, is-map@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz" + integrity sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg== + +is-module@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz" + integrity sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g== + +is-nan@^1.2.1: + version "1.3.2" + resolved "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz" + integrity sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w== dependencies: - "is-extglob" "^2.1.1" + call-bind "^1.0.0" + define-properties "^1.1.3" -"is-hexadecimal@^1.0.0": - "integrity" "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==" - "resolved" "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz" - "version" "1.0.4" +is-negative-zero@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz" + integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== -"is-in-browser@^1.0.2", "is-in-browser@^1.1.3": - "integrity" "sha512-FeXIBgG/CPGd/WUxuEyvgGTEfwiG9Z4EKGxjNMRqviiIIfsmgrpnHLffEDdwUHqNva1VEW91o3xBT/m8Elgl9g==" - "resolved" "https://registry.npmjs.org/is-in-browser/-/is-in-browser-1.1.3.tgz" - "version" "1.1.3" +is-npm@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz" + integrity sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA== -"is-installed-globally@^0.4.0": - "integrity" "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==" - "resolved" "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz" - "version" "0.4.0" +is-number-object@^1.0.4: + version "1.0.7" + resolved "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz" + integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== dependencies: - "global-dirs" "^3.0.0" - "is-path-inside" "^3.0.2" + has-tostringtag "^1.0.0" -"is-map@^2.0.1", "is-map@^2.0.2": - "integrity" "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==" - "resolved" "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz" - "version" "2.0.2" - -"is-module@^1.0.0": - "integrity" "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==" - "resolved" "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz" - "version" "1.0.0" - -"is-nan@^1.2.1": - "integrity" "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==" - "resolved" "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz" - "version" "1.3.2" +is-number@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz" + integrity sha512-QUzH43Gfb9+5yckcrSA0VBDwEtDUchrk4F6tfJZQuNzDJbEDB9cZNzSfXGQ1jqmdDY/kl41lUOWM9syA8z8jlg== dependencies: - "call-bind" "^1.0.0" - "define-properties" "^1.1.3" + kind-of "^3.0.2" -"is-negative-zero@^2.0.2": - "integrity" "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==" - "resolved" "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz" - "version" "2.0.2" - -"is-npm@^5.0.0": - "integrity" "sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==" - "resolved" "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz" - "version" "5.0.0" - -"is-number-object@^1.0.4": - "integrity" "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==" - "resolved" "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz" - "version" "1.0.7" +is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz" + integrity sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg== dependencies: - "has-tostringtag" "^1.0.0" + kind-of "^3.0.2" -"is-number@^2.1.0": - "integrity" "sha512-QUzH43Gfb9+5yckcrSA0VBDwEtDUchrk4F6tfJZQuNzDJbEDB9cZNzSfXGQ1jqmdDY/kl41lUOWM9syA8z8jlg==" - "resolved" "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz" - "version" "2.1.0" +is-number@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz" + integrity sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ== + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-obj@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz" + integrity sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg== + +is-obj@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz" + integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== + +is-object@^1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/is-object/-/is-object-1.0.2.tgz" + integrity sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA== + +is-path-inside@^3.0.2, is-path-inside@^3.0.3: + version "3.0.3" + resolved "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== + +is-plain-obj@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz" + integrity sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg== + +is-plain-obj@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz" + integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== + +is-plain-obj@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz" + integrity sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA== + +is-plain-object@5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz" + integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== + +is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== dependencies: - "kind-of" "^3.0.2" + isobject "^3.0.1" -"is-number@^3.0.0": - "integrity" "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==" - "resolved" "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz" - "version" "3.0.0" +is-posix-bracket@^0.1.0: + version "0.1.1" + resolved "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz" + integrity sha512-Yu68oeXJ7LeWNmZ3Zov/xg/oDBnBK2RNxwYY1ilNJX+tKKZqgPK+qOn/Gs9jEu66KDY9Netf5XLKNGzas/vPfQ== + +is-potential-custom-element-name@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz" + integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== + +is-primitive@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz" + integrity sha512-N3w1tFaRfk3UrPfqeRyD+GYDASU3W5VinKhlORy8EWVf/sIdDL9GAcew85XmktCfH+ngG7SRXEVDoO18WMdB/Q== + +is-regex@^1.0.5, is-regex@^1.1.0, is-regex@^1.1.2, is-regex@^1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz" + integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== dependencies: - "kind-of" "^3.0.2" + call-bind "^1.0.2" + has-tostringtag "^1.0.0" -"is-number@^4.0.0": - "integrity" "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==" - "resolved" "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz" - "version" "4.0.0" +is-regexp@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz" + integrity sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA== -"is-number@^7.0.0": - "integrity" "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" - "resolved" "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" - "version" "7.0.0" +is-resolvable@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz" + integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg== -"is-obj@^1.0.1": - "integrity" "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==" - "resolved" "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz" - "version" "1.0.1" +is-root@2.1.0, is-root@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/is-root/-/is-root-2.1.0.tgz" + integrity sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg== -"is-obj@^2.0.0": - "integrity" "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==" - "resolved" "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz" - "version" "2.0.0" +is-set@^2.0.1, is-set@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz" + integrity sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g== -"is-object@^1.0.1": - "integrity" "sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA==" - "resolved" "https://registry.npmjs.org/is-object/-/is-object-1.0.2.tgz" - "version" "1.0.2" - -"is-path-inside@^3.0.2", "is-path-inside@^3.0.3": - "integrity" "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==" - "resolved" "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz" - "version" "3.0.3" - -"is-plain-obj@^1.0.0": - "integrity" "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==" - "resolved" "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz" - "version" "1.1.0" - -"is-plain-obj@^2.0.0": - "integrity" "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==" - "resolved" "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz" - "version" "2.1.0" - -"is-plain-obj@^3.0.0": - "integrity" "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==" - "resolved" "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz" - "version" "3.0.0" - -"is-plain-object@^2.0.1", "is-plain-object@^2.0.3", "is-plain-object@^2.0.4": - "integrity" "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==" - "resolved" "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz" - "version" "2.0.4" +is-shared-array-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz" + integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== dependencies: - "isobject" "^3.0.1" + call-bind "^1.0.2" -"is-plain-object@5.0.0": - "integrity" "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==" - "resolved" "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz" - "version" "5.0.0" +is-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz" + integrity sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ== -"is-posix-bracket@^0.1.0": - "integrity" "sha512-Yu68oeXJ7LeWNmZ3Zov/xg/oDBnBK2RNxwYY1ilNJX+tKKZqgPK+qOn/Gs9jEu66KDY9Netf5XLKNGzas/vPfQ==" - "resolved" "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz" - "version" "0.1.1" +is-stream@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== -"is-potential-custom-element-name@^1.0.1": - "integrity" "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==" - "resolved" "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz" - "version" "1.0.1" - -"is-primitive@^2.0.0": - "integrity" "sha512-N3w1tFaRfk3UrPfqeRyD+GYDASU3W5VinKhlORy8EWVf/sIdDL9GAcew85XmktCfH+ngG7SRXEVDoO18WMdB/Q==" - "resolved" "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz" - "version" "2.0.0" - -"is-regex@^1.0.5", "is-regex@^1.1.0", "is-regex@^1.1.2", "is-regex@^1.1.4": - "integrity" "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==" - "resolved" "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz" - "version" "1.1.4" +is-string@^1.0.5, is-string@^1.0.7: + version "1.0.7" + resolved "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz" + integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== dependencies: - "call-bind" "^1.0.2" - "has-tostringtag" "^1.0.0" + has-tostringtag "^1.0.0" -"is-regexp@^1.0.0": - "integrity" "sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==" - "resolved" "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz" - "version" "1.0.0" +is-subset@^0.1.1: + version "0.1.1" + resolved "https://registry.npmjs.org/is-subset/-/is-subset-0.1.1.tgz" + integrity sha512-6Ybun0IkarhmEqxXCNw/C0bna6Zb/TkfUX9UbwJtK6ObwAVCxmAP308WWTHviM/zAqXk05cdhYsUsZeGQh99iw== -"is-resolvable@^1.0.0": - "integrity" "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==" - "resolved" "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz" - "version" "1.1.0" - -"is-root@^2.1.0", "is-root@2.1.0": - "integrity" "sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==" - "resolved" "https://registry.npmjs.org/is-root/-/is-root-2.1.0.tgz" - "version" "2.1.0" - -"is-set@^2.0.1", "is-set@^2.0.2": - "integrity" "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==" - "resolved" "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz" - "version" "2.0.2" - -"is-shared-array-buffer@^1.0.2": - "integrity" "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==" - "resolved" "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz" - "version" "1.0.2" +is-symbol@^1.0.2, is-symbol@^1.0.3: + version "1.0.4" + resolved "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz" + integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== dependencies: - "call-bind" "^1.0.2" + has-symbols "^1.0.2" -"is-stream@^1.1.0": - "integrity" "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==" - "resolved" "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz" - "version" "1.1.0" - -"is-stream@^2.0.0": - "integrity" "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==" - "resolved" "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz" - "version" "2.0.1" - -"is-string@^1.0.5", "is-string@^1.0.7": - "integrity" "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==" - "resolved" "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz" - "version" "1.0.7" +is-typed-array@^1.1.10, is-typed-array@^1.1.3: + version "1.1.10" + resolved "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz" + integrity sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A== dependencies: - "has-tostringtag" "^1.0.0" + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + for-each "^0.3.3" + gopd "^1.0.1" + has-tostringtag "^1.0.0" -"is-subset@^0.1.1": - "integrity" "sha512-6Ybun0IkarhmEqxXCNw/C0bna6Zb/TkfUX9UbwJtK6ObwAVCxmAP308WWTHviM/zAqXk05cdhYsUsZeGQh99iw==" - "resolved" "https://registry.npmjs.org/is-subset/-/is-subset-0.1.1.tgz" - "version" "0.1.1" +is-typedarray@^1.0.0, is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz" + integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== -"is-symbol@^1.0.2", "is-symbol@^1.0.3": - "integrity" "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==" - "resolved" "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz" - "version" "1.0.4" +is-url@^1.2.4: + version "1.2.4" + resolved "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz" + integrity sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww== + +is-utf8@^0.2.0: + version "0.2.1" + resolved "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz" + integrity sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q== + +is-weakmap@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz" + integrity sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA== + +is-weakref@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz" + integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== dependencies: - "has-symbols" "^1.0.2" + call-bind "^1.0.2" -"is-typed-array@^1.1.10", "is-typed-array@^1.1.3": - "integrity" "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==" - "resolved" "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz" - "version" "1.1.10" +is-weakset@^2.0.1: + version "2.0.2" + resolved "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz" + integrity sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg== dependencies: - "available-typed-arrays" "^1.0.5" - "call-bind" "^1.0.2" - "for-each" "^0.3.3" - "gopd" "^1.0.1" - "has-tostringtag" "^1.0.0" + call-bind "^1.0.2" + get-intrinsic "^1.1.1" -"is-typedarray@^1.0.0", "is-typedarray@~1.0.0": - "integrity" "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" - "resolved" "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz" - "version" "1.0.0" +is-what@^3.14.1: + version "3.14.1" + resolved "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz" + integrity sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA== -"is-url@^1.2.4": - "integrity" "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==" - "resolved" "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz" - "version" "1.2.4" +is-whitespace-character@^1.0.0: + version "1.0.4" + resolved "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz" + integrity sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w== -"is-utf8@^0.2.0": - "integrity" "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==" - "resolved" "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz" - "version" "0.2.1" +is-window@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/is-window/-/is-window-1.0.2.tgz" + integrity sha512-uj00kdXyZb9t9RcAUAwMZAnkBUwdYGhYlt7djMXhfyhUCzwNba50tIiBKR7q0l7tdoBtFVw/3JmLY6fI3rmZmg== -"is-weakmap@^2.0.1": - "integrity" "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==" - "resolved" "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz" - "version" "2.0.1" +is-windows@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz" + integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== -"is-weakref@^1.0.2": - "integrity" "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==" - "resolved" "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz" - "version" "1.0.2" +is-word-character@^1.0.0: + version "1.0.4" + resolved "https://registry.npmjs.org/is-word-character/-/is-word-character-1.0.4.tgz" + integrity sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA== + +is-wsl@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz" + integrity sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw== + +is-wsl@^2.1.1, is-wsl@^2.2.0: + version "2.2.0" + resolved "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz" + integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== dependencies: - "call-bind" "^1.0.2" + is-docker "^2.0.0" -"is-weakset@^2.0.1": - "integrity" "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==" - "resolved" "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz" - "version" "2.0.2" +is-yarn-global@^0.3.0: + version "0.3.0" + resolved "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz" + integrity sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw== + +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" + integrity sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ== + +isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== + +isarray@2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz" + integrity sha512-c2cu3UxbI+b6kR3fy0nRnAhodsvR9dx7U5+znCOzdj6IfP3upFURTr0Xl5BlQZNKZjEtxrmVyfSdeE3O57smoQ== + +isarray@^2.0.5: + version "2.0.5" + resolved "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz" + integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz" + integrity sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA== dependencies: - "call-bind" "^1.0.2" - "get-intrinsic" "^1.1.1" + isarray "1.0.0" -"is-what@^3.14.1": - "integrity" "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==" - "resolved" "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz" - "version" "3.14.1" +isobject@^3.0.0, isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz" + integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== -"is-whitespace-character@^1.0.0": - "integrity" "sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w==" - "resolved" "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz" - "version" "1.0.4" +isobject@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/isobject/-/isobject-4.0.0.tgz" + integrity sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA== -"is-window@^1.0.2": - "integrity" "sha512-uj00kdXyZb9t9RcAUAwMZAnkBUwdYGhYlt7djMXhfyhUCzwNba50tIiBKR7q0l7tdoBtFVw/3JmLY6fI3rmZmg==" - "resolved" "https://registry.npmjs.org/is-window/-/is-window-1.0.2.tgz" - "version" "1.0.2" - -"is-windows@^1.0.2": - "integrity" "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" - "resolved" "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz" - "version" "1.0.2" - -"is-word-character@^1.0.0": - "integrity" "sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA==" - "resolved" "https://registry.npmjs.org/is-word-character/-/is-word-character-1.0.4.tgz" - "version" "1.0.4" - -"is-wsl@^1.1.0": - "integrity" "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==" - "resolved" "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz" - "version" "1.1.0" - -"is-wsl@^2.1.1", "is-wsl@^2.2.0": - "integrity" "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==" - "resolved" "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz" - "version" "2.2.0" +isomorphic-unfetch@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/isomorphic-unfetch/-/isomorphic-unfetch-3.1.0.tgz" + integrity sha512-geDJjpoZ8N0kWexiwkX8F9NkTsXhetLPVbZFQ+JTW239QNOwvB0gniuR1Wc6f0AMTn7/mFGyXvHTifrCp/GH8Q== dependencies: - "is-docker" "^2.0.0" + node-fetch "^2.6.1" + unfetch "^4.2.0" -"is-yarn-global@^0.3.0": - "integrity" "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==" - "resolved" "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz" - "version" "0.3.0" +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz" + integrity sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g== -"isarray@^1.0.0", "isarray@~1.0.0", "isarray@1.0.0": - "integrity" "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" - "resolved" "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" - "version" "1.0.0" +istanbul-lib-coverage@^2.0.5: + version "2.0.5" + resolved "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz" + integrity sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA== -"isarray@^2.0.5": - "integrity" "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" - "resolved" "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz" - "version" "2.0.5" +istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: + version "3.2.0" + resolved "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz" + integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw== -"isarray@0.0.1": - "integrity" "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==" - "resolved" "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" - "version" "0.0.1" - -"isarray@2.0.1": - "integrity" "sha512-c2cu3UxbI+b6kR3fy0nRnAhodsvR9dx7U5+znCOzdj6IfP3upFURTr0Xl5BlQZNKZjEtxrmVyfSdeE3O57smoQ==" - "resolved" "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz" - "version" "2.0.1" - -"isexe@^2.0.0": - "integrity" "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" - "resolved" "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" - "version" "2.0.0" - -"isobject@^2.0.0": - "integrity" "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==" - "resolved" "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz" - "version" "2.1.0" - dependencies: - "isarray" "1.0.0" - -"isobject@^3.0.0", "isobject@^3.0.1": - "integrity" "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==" - "resolved" "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz" - "version" "3.0.1" - -"isobject@^4.0.0": - "integrity" "sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA==" - "resolved" "https://registry.npmjs.org/isobject/-/isobject-4.0.0.tgz" - "version" "4.0.0" - -"isomorphic-unfetch@^3.1.0": - "integrity" "sha512-geDJjpoZ8N0kWexiwkX8F9NkTsXhetLPVbZFQ+JTW239QNOwvB0gniuR1Wc6f0AMTn7/mFGyXvHTifrCp/GH8Q==" - "resolved" "https://registry.npmjs.org/isomorphic-unfetch/-/isomorphic-unfetch-3.1.0.tgz" - "version" "3.1.0" - dependencies: - "node-fetch" "^2.6.1" - "unfetch" "^4.2.0" - -"isstream@~0.1.2": - "integrity" "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==" - "resolved" "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz" - "version" "0.1.2" - -"istanbul-lib-coverage@^2.0.5": - "integrity" "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==" - "resolved" "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz" - "version" "2.0.5" - -"istanbul-lib-coverage@^3.0.0", "istanbul-lib-coverage@^3.2.0": - "integrity" "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==" - "resolved" "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz" - "version" "3.2.0" - -"istanbul-lib-instrument@^3.3.0": - "integrity" "sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==" - "resolved" "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz" - "version" "3.3.0" +istanbul-lib-instrument@^3.3.0: + version "3.3.0" + resolved "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz" + integrity sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA== dependencies: "@babel/generator" "^7.4.0" "@babel/parser" "^7.4.3" "@babel/template" "^7.4.0" "@babel/traverse" "^7.4.3" "@babel/types" "^7.4.0" - "istanbul-lib-coverage" "^2.0.5" - "semver" "^6.0.0" + istanbul-lib-coverage "^2.0.5" + semver "^6.0.0" -"istanbul-lib-instrument@^5.0.4", "istanbul-lib-instrument@^5.1.0": - "integrity" "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==" - "resolved" "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz" - "version" "5.2.1" +istanbul-lib-instrument@^5.0.4, istanbul-lib-instrument@^5.1.0: + version "5.2.1" + resolved "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz" + integrity sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg== dependencies: "@babel/core" "^7.12.3" "@babel/parser" "^7.14.7" "@istanbuljs/schema" "^0.1.2" - "istanbul-lib-coverage" "^3.2.0" - "semver" "^6.3.0" + istanbul-lib-coverage "^3.2.0" + semver "^6.3.0" -"istanbul-lib-report@^3.0.0": - "integrity" "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==" - "resolved" "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz" - "version" "3.0.0" +istanbul-lib-report@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz" + integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== dependencies: - "istanbul-lib-coverage" "^3.0.0" - "make-dir" "^3.0.0" - "supports-color" "^7.1.0" + istanbul-lib-coverage "^3.0.0" + make-dir "^3.0.0" + supports-color "^7.1.0" -"istanbul-lib-source-maps@^4.0.0": - "integrity" "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==" - "resolved" "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz" - "version" "4.0.1" +istanbul-lib-source-maps@^4.0.0: + version "4.0.1" + resolved "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz" + integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw== dependencies: - "debug" "^4.1.1" - "istanbul-lib-coverage" "^3.0.0" - "source-map" "^0.6.1" + debug "^4.1.1" + istanbul-lib-coverage "^3.0.0" + source-map "^0.6.1" -"istanbul-reports@^3.1.3", "istanbul-reports@^3.1.4": - "integrity" "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==" - "resolved" "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz" - "version" "3.1.5" +istanbul-reports@^3.1.3, istanbul-reports@^3.1.4: + version "3.1.5" + resolved "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz" + integrity sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w== dependencies: - "html-escaper" "^2.0.0" - "istanbul-lib-report" "^3.0.0" + html-escaper "^2.0.0" + istanbul-lib-report "^3.0.0" -"iterate-iterator@^1.0.1": - "integrity" "sha512-t91HubM4ZDQ70M9wqp+pcNpu8OyJ9UAtXntT/Bcsvp5tZMnz9vRa+IunKXeI8AnfZMTv0jNuVEmGeLSMjVvfPw==" - "resolved" "https://registry.npmjs.org/iterate-iterator/-/iterate-iterator-1.0.2.tgz" - "version" "1.0.2" +iterate-iterator@^1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/iterate-iterator/-/iterate-iterator-1.0.2.tgz" + integrity sha512-t91HubM4ZDQ70M9wqp+pcNpu8OyJ9UAtXntT/Bcsvp5tZMnz9vRa+IunKXeI8AnfZMTv0jNuVEmGeLSMjVvfPw== -"iterate-object@^1.3.0", "iterate-object@^1.3.1": - "integrity" "sha512-4dG1D1x/7g8PwHS9aK6QV5V94+ZvyP4+d19qDv43EzImmrndysIl4prmJ1hWWIGCqrZHyaHBm6BSEWHOLnpoNw==" - "resolved" "https://registry.npmjs.org/iterate-object/-/iterate-object-1.3.4.tgz" - "version" "1.3.4" +iterate-object@^1.3.0, iterate-object@^1.3.1: + version "1.3.4" + resolved "https://registry.npmjs.org/iterate-object/-/iterate-object-1.3.4.tgz" + integrity sha512-4dG1D1x/7g8PwHS9aK6QV5V94+ZvyP4+d19qDv43EzImmrndysIl4prmJ1hWWIGCqrZHyaHBm6BSEWHOLnpoNw== -"iterate-value@^1.0.2": - "integrity" "sha512-A6fMAio4D2ot2r/TYzr4yUWrmwNdsN5xL7+HUiyACE4DXm+q8HtPcnFTp+NnW3k4N05tZ7FVYFFb2CR13NxyHQ==" - "resolved" "https://registry.npmjs.org/iterate-value/-/iterate-value-1.0.2.tgz" - "version" "1.0.2" +iterate-value@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/iterate-value/-/iterate-value-1.0.2.tgz" + integrity sha512-A6fMAio4D2ot2r/TYzr4yUWrmwNdsN5xL7+HUiyACE4DXm+q8HtPcnFTp+NnW3k4N05tZ7FVYFFb2CR13NxyHQ== dependencies: - "es-get-iterator" "^1.0.2" - "iterate-iterator" "^1.0.1" + es-get-iterator "^1.0.2" + iterate-iterator "^1.0.1" -"jake@^10.8.5": - "integrity" "sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==" - "resolved" "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz" - "version" "10.8.5" +jake@^10.8.5: + version "10.8.5" + resolved "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz" + integrity sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw== dependencies: - "async" "^3.2.3" - "chalk" "^4.0.2" - "filelist" "^1.0.1" - "minimatch" "^3.0.4" + async "^3.2.3" + chalk "^4.0.2" + filelist "^1.0.1" + minimatch "^3.0.4" -"jest-changed-files@^27.5.1": - "integrity" "sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==" - "resolved" "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.5.1.tgz" - "version" "27.5.1" +jest-changed-files@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.5.1.tgz" + integrity sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw== dependencies: "@jest/types" "^27.5.1" - "execa" "^5.0.0" - "throat" "^6.0.1" + execa "^5.0.0" + throat "^6.0.1" -"jest-circus@^27.5.1": - "integrity" "sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==" - "resolved" "https://registry.npmjs.org/jest-circus/-/jest-circus-27.5.1.tgz" - "version" "27.5.1" +jest-circus@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-circus/-/jest-circus-27.5.1.tgz" + integrity sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw== dependencies: "@jest/environment" "^27.5.1" "@jest/test-result" "^27.5.1" "@jest/types" "^27.5.1" "@types/node" "*" - "chalk" "^4.0.0" - "co" "^4.6.0" - "dedent" "^0.7.0" - "expect" "^27.5.1" - "is-generator-fn" "^2.0.0" - "jest-each" "^27.5.1" - "jest-matcher-utils" "^27.5.1" - "jest-message-util" "^27.5.1" - "jest-runtime" "^27.5.1" - "jest-snapshot" "^27.5.1" - "jest-util" "^27.5.1" - "pretty-format" "^27.5.1" - "slash" "^3.0.0" - "stack-utils" "^2.0.3" - "throat" "^6.0.1" + chalk "^4.0.0" + co "^4.6.0" + dedent "^0.7.0" + expect "^27.5.1" + is-generator-fn "^2.0.0" + jest-each "^27.5.1" + jest-matcher-utils "^27.5.1" + jest-message-util "^27.5.1" + jest-runtime "^27.5.1" + jest-snapshot "^27.5.1" + jest-util "^27.5.1" + pretty-format "^27.5.1" + slash "^3.0.0" + stack-utils "^2.0.3" + throat "^6.0.1" -"jest-cli@^27.5.1": - "integrity" "sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==" - "resolved" "https://registry.npmjs.org/jest-cli/-/jest-cli-27.5.1.tgz" - "version" "27.5.1" +jest-cli@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-cli/-/jest-cli-27.5.1.tgz" + integrity sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw== dependencies: "@jest/core" "^27.5.1" "@jest/test-result" "^27.5.1" "@jest/types" "^27.5.1" - "chalk" "^4.0.0" - "exit" "^0.1.2" - "graceful-fs" "^4.2.9" - "import-local" "^3.0.2" - "jest-config" "^27.5.1" - "jest-util" "^27.5.1" - "jest-validate" "^27.5.1" - "prompts" "^2.0.1" - "yargs" "^16.2.0" + chalk "^4.0.0" + exit "^0.1.2" + graceful-fs "^4.2.9" + import-local "^3.0.2" + jest-config "^27.5.1" + jest-util "^27.5.1" + jest-validate "^27.5.1" + prompts "^2.0.1" + yargs "^16.2.0" -"jest-config@^27.5.1": - "integrity" "sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==" - "resolved" "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz" - "version" "27.5.1" +jest-config@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz" + integrity sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA== dependencies: "@babel/core" "^7.8.0" "@jest/test-sequencer" "^27.5.1" "@jest/types" "^27.5.1" - "babel-jest" "^27.5.1" - "chalk" "^4.0.0" - "ci-info" "^3.2.0" - "deepmerge" "^4.2.2" - "glob" "^7.1.1" - "graceful-fs" "^4.2.9" - "jest-circus" "^27.5.1" - "jest-environment-jsdom" "^27.5.1" - "jest-environment-node" "^27.5.1" - "jest-get-type" "^27.5.1" - "jest-jasmine2" "^27.5.1" - "jest-regex-util" "^27.5.1" - "jest-resolve" "^27.5.1" - "jest-runner" "^27.5.1" - "jest-util" "^27.5.1" - "jest-validate" "^27.5.1" - "micromatch" "^4.0.4" - "parse-json" "^5.2.0" - "pretty-format" "^27.5.1" - "slash" "^3.0.0" - "strip-json-comments" "^3.1.1" + babel-jest "^27.5.1" + chalk "^4.0.0" + ci-info "^3.2.0" + deepmerge "^4.2.2" + glob "^7.1.1" + graceful-fs "^4.2.9" + jest-circus "^27.5.1" + jest-environment-jsdom "^27.5.1" + jest-environment-node "^27.5.1" + jest-get-type "^27.5.1" + jest-jasmine2 "^27.5.1" + jest-regex-util "^27.5.1" + jest-resolve "^27.5.1" + jest-runner "^27.5.1" + jest-util "^27.5.1" + jest-validate "^27.5.1" + micromatch "^4.0.4" + parse-json "^5.2.0" + pretty-format "^27.5.1" + slash "^3.0.0" + strip-json-comments "^3.1.1" -"jest-diff@^24.0.0", "jest-diff@^24.3.0", "jest-diff@^24.9.0": - "integrity" "sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ==" - "resolved" "https://registry.npmjs.org/jest-diff/-/jest-diff-24.9.0.tgz" - "version" "24.9.0" +jest-diff@^24.0.0, jest-diff@^24.3.0, jest-diff@^24.9.0: + version "24.9.0" + resolved "https://registry.npmjs.org/jest-diff/-/jest-diff-24.9.0.tgz" + integrity sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ== dependencies: - "chalk" "^2.0.1" - "diff-sequences" "^24.9.0" - "jest-get-type" "^24.9.0" - "pretty-format" "^24.9.0" + chalk "^2.0.1" + diff-sequences "^24.9.0" + jest-get-type "^24.9.0" + pretty-format "^24.9.0" -"jest-diff@^27.5.1": - "integrity" "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==" - "resolved" "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz" - "version" "27.5.1" +jest-diff@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz" + integrity sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw== dependencies: - "chalk" "^4.0.0" - "diff-sequences" "^27.5.1" - "jest-get-type" "^27.5.1" - "pretty-format" "^27.5.1" + chalk "^4.0.0" + diff-sequences "^27.5.1" + jest-get-type "^27.5.1" + pretty-format "^27.5.1" -"jest-docblock@^27.5.1": - "integrity" "sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==" - "resolved" "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz" - "version" "27.5.1" +jest-docblock@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz" + integrity sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ== dependencies: - "detect-newline" "^3.0.0" + detect-newline "^3.0.0" -"jest-each@^27.5.1": - "integrity" "sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==" - "resolved" "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz" - "version" "27.5.1" +jest-each@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz" + integrity sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ== dependencies: "@jest/types" "^27.5.1" - "chalk" "^4.0.0" - "jest-get-type" "^27.5.1" - "jest-util" "^27.5.1" - "pretty-format" "^27.5.1" + chalk "^4.0.0" + jest-get-type "^27.5.1" + jest-util "^27.5.1" + pretty-format "^27.5.1" -"jest-environment-jsdom-fourteen@1.0.1": - "integrity" "sha512-DojMX1sY+at5Ep+O9yME34CdidZnO3/zfPh8UW+918C5fIZET5vCjfkegixmsi7AtdYfkr4bPlIzmWnlvQkP7Q==" - "resolved" "https://registry.npmjs.org/jest-environment-jsdom-fourteen/-/jest-environment-jsdom-fourteen-1.0.1.tgz" - "version" "1.0.1" +jest-environment-jsdom-fourteen@1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/jest-environment-jsdom-fourteen/-/jest-environment-jsdom-fourteen-1.0.1.tgz" + integrity sha512-DojMX1sY+at5Ep+O9yME34CdidZnO3/zfPh8UW+918C5fIZET5vCjfkegixmsi7AtdYfkr4bPlIzmWnlvQkP7Q== dependencies: "@jest/environment" "^24.3.0" "@jest/fake-timers" "^24.3.0" "@jest/types" "^24.3.0" - "jest-mock" "^24.0.0" - "jest-util" "^24.0.0" - "jsdom" "^14.1.0" + jest-mock "^24.0.0" + jest-util "^24.0.0" + jsdom "^14.1.0" -"jest-environment-jsdom@^27.5.1": - "integrity" "sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==" - "resolved" "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz" - "version" "27.5.1" +jest-environment-jsdom@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz" + integrity sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw== dependencies: "@jest/environment" "^27.5.1" "@jest/fake-timers" "^27.5.1" "@jest/types" "^27.5.1" "@types/node" "*" - "jest-mock" "^27.5.1" - "jest-util" "^27.5.1" - "jsdom" "^16.6.0" + jest-mock "^27.5.1" + jest-util "^27.5.1" + jsdom "^16.6.0" -"jest-environment-node@^27.5.1": - "integrity" "sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==" - "resolved" "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.5.1.tgz" - "version" "27.5.1" +jest-environment-node@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.5.1.tgz" + integrity sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw== dependencies: "@jest/environment" "^27.5.1" "@jest/fake-timers" "^27.5.1" "@jest/types" "^27.5.1" "@types/node" "*" - "jest-mock" "^27.5.1" - "jest-util" "^27.5.1" + jest-mock "^27.5.1" + jest-util "^27.5.1" -"jest-get-type@^24.9.0": - "integrity" "sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q==" - "resolved" "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.9.0.tgz" - "version" "24.9.0" +jest-get-type@^24.9.0: + version "24.9.0" + resolved "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.9.0.tgz" + integrity sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q== -"jest-get-type@^27.5.1": - "integrity" "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==" - "resolved" "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz" - "version" "27.5.1" +jest-get-type@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz" + integrity sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw== -"jest-haste-map@^24.9.0": - "integrity" "sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ==" - "resolved" "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-24.9.0.tgz" - "version" "24.9.0" +jest-haste-map@^24.9.0: + version "24.9.0" + resolved "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-24.9.0.tgz" + integrity sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ== dependencies: "@jest/types" "^24.9.0" - "anymatch" "^2.0.0" - "fb-watchman" "^2.0.0" - "graceful-fs" "^4.1.15" - "invariant" "^2.2.4" - "jest-serializer" "^24.9.0" - "jest-util" "^24.9.0" - "jest-worker" "^24.9.0" - "micromatch" "^3.1.10" - "sane" "^4.0.3" - "walker" "^1.0.7" + anymatch "^2.0.0" + fb-watchman "^2.0.0" + graceful-fs "^4.1.15" + invariant "^2.2.4" + jest-serializer "^24.9.0" + jest-util "^24.9.0" + jest-worker "^24.9.0" + micromatch "^3.1.10" + sane "^4.0.3" + walker "^1.0.7" optionalDependencies: - "fsevents" "^1.2.7" + fsevents "^1.2.7" -"jest-haste-map@^26.6.2": - "integrity" "sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w==" - "resolved" "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-26.6.2.tgz" - "version" "26.6.2" +jest-haste-map@^26.6.2: + version "26.6.2" + resolved "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-26.6.2.tgz" + integrity sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w== dependencies: "@jest/types" "^26.6.2" "@types/graceful-fs" "^4.1.2" "@types/node" "*" - "anymatch" "^3.0.3" - "fb-watchman" "^2.0.0" - "graceful-fs" "^4.2.4" - "jest-regex-util" "^26.0.0" - "jest-serializer" "^26.6.2" - "jest-util" "^26.6.2" - "jest-worker" "^26.6.2" - "micromatch" "^4.0.2" - "sane" "^4.0.3" - "walker" "^1.0.7" + anymatch "^3.0.3" + fb-watchman "^2.0.0" + graceful-fs "^4.2.4" + jest-regex-util "^26.0.0" + jest-serializer "^26.6.2" + jest-util "^26.6.2" + jest-worker "^26.6.2" + micromatch "^4.0.2" + sane "^4.0.3" + walker "^1.0.7" optionalDependencies: - "fsevents" "^2.1.2" + fsevents "^2.1.2" -"jest-haste-map@^27.5.1": - "integrity" "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==" - "resolved" "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz" - "version" "27.5.1" +jest-haste-map@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz" + integrity sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng== dependencies: "@jest/types" "^27.5.1" "@types/graceful-fs" "^4.1.2" "@types/node" "*" - "anymatch" "^3.0.3" - "fb-watchman" "^2.0.0" - "graceful-fs" "^4.2.9" - "jest-regex-util" "^27.5.1" - "jest-serializer" "^27.5.1" - "jest-util" "^27.5.1" - "jest-worker" "^27.5.1" - "micromatch" "^4.0.4" - "walker" "^1.0.7" + anymatch "^3.0.3" + fb-watchman "^2.0.0" + graceful-fs "^4.2.9" + jest-regex-util "^27.5.1" + jest-serializer "^27.5.1" + jest-util "^27.5.1" + jest-worker "^27.5.1" + micromatch "^4.0.4" + walker "^1.0.7" optionalDependencies: - "fsevents" "^2.3.2" + fsevents "^2.3.2" -"jest-jasmine2@^27.5.1": - "integrity" "sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==" - "resolved" "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz" - "version" "27.5.1" +jest-jasmine2@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz" + integrity sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ== dependencies: "@jest/environment" "^27.5.1" "@jest/source-map" "^27.5.1" "@jest/test-result" "^27.5.1" "@jest/types" "^27.5.1" "@types/node" "*" - "chalk" "^4.0.0" - "co" "^4.6.0" - "expect" "^27.5.1" - "is-generator-fn" "^2.0.0" - "jest-each" "^27.5.1" - "jest-matcher-utils" "^27.5.1" - "jest-message-util" "^27.5.1" - "jest-runtime" "^27.5.1" - "jest-snapshot" "^27.5.1" - "jest-util" "^27.5.1" - "pretty-format" "^27.5.1" - "throat" "^6.0.1" + chalk "^4.0.0" + co "^4.6.0" + expect "^27.5.1" + is-generator-fn "^2.0.0" + jest-each "^27.5.1" + jest-matcher-utils "^27.5.1" + jest-message-util "^27.5.1" + jest-runtime "^27.5.1" + jest-snapshot "^27.5.1" + jest-util "^27.5.1" + pretty-format "^27.5.1" + throat "^6.0.1" -"jest-leak-detector@^27.5.1": - "integrity" "sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==" - "resolved" "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz" - "version" "27.5.1" +jest-leak-detector@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz" + integrity sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ== dependencies: - "jest-get-type" "^27.5.1" - "pretty-format" "^27.5.1" + jest-get-type "^27.5.1" + pretty-format "^27.5.1" -"jest-matcher-utils@^24.0.0": - "integrity" "sha512-OZz2IXsu6eaiMAwe67c1T+5tUAtQyQx27/EMEkbFAGiw52tB9em+uGbzpcgYVpA8wl0hlxKPZxrly4CXU/GjHA==" - "resolved" "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-24.9.0.tgz" - "version" "24.9.0" +jest-matcher-utils@^24.0.0: + version "24.9.0" + resolved "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-24.9.0.tgz" + integrity sha512-OZz2IXsu6eaiMAwe67c1T+5tUAtQyQx27/EMEkbFAGiw52tB9em+uGbzpcgYVpA8wl0hlxKPZxrly4CXU/GjHA== dependencies: - "chalk" "^2.0.1" - "jest-diff" "^24.9.0" - "jest-get-type" "^24.9.0" - "pretty-format" "^24.9.0" + chalk "^2.0.1" + jest-diff "^24.9.0" + jest-get-type "^24.9.0" + pretty-format "^24.9.0" -"jest-matcher-utils@^27.5.1": - "integrity" "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==" - "resolved" "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz" - "version" "27.5.1" +jest-matcher-utils@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz" + integrity sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw== dependencies: - "chalk" "^4.0.0" - "jest-diff" "^27.5.1" - "jest-get-type" "^27.5.1" - "pretty-format" "^27.5.1" + chalk "^4.0.0" + jest-diff "^27.5.1" + jest-get-type "^27.5.1" + pretty-format "^27.5.1" -"jest-message-util@^24.9.0": - "integrity" "sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw==" - "resolved" "https://registry.npmjs.org/jest-message-util/-/jest-message-util-24.9.0.tgz" - "version" "24.9.0" +jest-message-util@^24.9.0: + version "24.9.0" + resolved "https://registry.npmjs.org/jest-message-util/-/jest-message-util-24.9.0.tgz" + integrity sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw== dependencies: "@babel/code-frame" "^7.0.0" "@jest/test-result" "^24.9.0" "@jest/types" "^24.9.0" "@types/stack-utils" "^1.0.1" - "chalk" "^2.0.1" - "micromatch" "^3.1.10" - "slash" "^2.0.0" - "stack-utils" "^1.0.1" + chalk "^2.0.1" + micromatch "^3.1.10" + slash "^2.0.0" + stack-utils "^1.0.1" -"jest-message-util@^26.6.2": - "integrity" "sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA==" - "resolved" "https://registry.npmjs.org/jest-message-util/-/jest-message-util-26.6.2.tgz" - "version" "26.6.2" +jest-message-util@^26.6.2: + version "26.6.2" + resolved "https://registry.npmjs.org/jest-message-util/-/jest-message-util-26.6.2.tgz" + integrity sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA== dependencies: "@babel/code-frame" "^7.0.0" "@jest/types" "^26.6.2" "@types/stack-utils" "^2.0.0" - "chalk" "^4.0.0" - "graceful-fs" "^4.2.4" - "micromatch" "^4.0.2" - "pretty-format" "^26.6.2" - "slash" "^3.0.0" - "stack-utils" "^2.0.2" + chalk "^4.0.0" + graceful-fs "^4.2.4" + micromatch "^4.0.2" + pretty-format "^26.6.2" + slash "^3.0.0" + stack-utils "^2.0.2" -"jest-message-util@^27.5.1": - "integrity" "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==" - "resolved" "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz" - "version" "27.5.1" +jest-message-util@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz" + integrity sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g== dependencies: "@babel/code-frame" "^7.12.13" "@jest/types" "^27.5.1" "@types/stack-utils" "^2.0.0" - "chalk" "^4.0.0" - "graceful-fs" "^4.2.9" - "micromatch" "^4.0.4" - "pretty-format" "^27.5.1" - "slash" "^3.0.0" - "stack-utils" "^2.0.3" + chalk "^4.0.0" + graceful-fs "^4.2.9" + micromatch "^4.0.4" + pretty-format "^27.5.1" + slash "^3.0.0" + stack-utils "^2.0.3" -"jest-message-util@^28.1.3": - "integrity" "sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==" - "resolved" "https://registry.npmjs.org/jest-message-util/-/jest-message-util-28.1.3.tgz" - "version" "28.1.3" +jest-message-util@^28.1.3: + version "28.1.3" + resolved "https://registry.npmjs.org/jest-message-util/-/jest-message-util-28.1.3.tgz" + integrity sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g== dependencies: "@babel/code-frame" "^7.12.13" "@jest/types" "^28.1.3" "@types/stack-utils" "^2.0.0" - "chalk" "^4.0.0" - "graceful-fs" "^4.2.9" - "micromatch" "^4.0.4" - "pretty-format" "^28.1.3" - "slash" "^3.0.0" - "stack-utils" "^2.0.3" + chalk "^4.0.0" + graceful-fs "^4.2.9" + micromatch "^4.0.4" + pretty-format "^28.1.3" + slash "^3.0.0" + stack-utils "^2.0.3" -"jest-mock@^24.0.0", "jest-mock@^24.9.0": - "integrity" "sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w==" - "resolved" "https://registry.npmjs.org/jest-mock/-/jest-mock-24.9.0.tgz" - "version" "24.9.0" +jest-mock@^24.0.0, jest-mock@^24.9.0: + version "24.9.0" + resolved "https://registry.npmjs.org/jest-mock/-/jest-mock-24.9.0.tgz" + integrity sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w== dependencies: "@jest/types" "^24.9.0" -"jest-mock@^27.0.6": - "integrity" "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==" - "resolved" "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz" - "version" "27.5.1" +jest-mock@^27.0.6, jest-mock@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz" + integrity sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og== dependencies: "@jest/types" "^27.5.1" "@types/node" "*" -"jest-mock@^27.5.1": - "integrity" "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==" - "resolved" "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz" - "version" "27.5.1" +jest-pnp-resolver@^1.2.1, jest-pnp-resolver@^1.2.2: + version "1.2.3" + resolved "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz" + integrity sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w== + +jest-regex-util@^24.9.0: + version "24.9.0" + resolved "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-24.9.0.tgz" + integrity sha512-05Cmb6CuxaA+Ys6fjr3PhvV3bGQmO+2p2La4hFbU+W5uOc479f7FdLXUWXw4pYMAhhSZIuKHwSXSu6CsSBAXQA== + +jest-regex-util@^26.0.0: + version "26.0.0" + resolved "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-26.0.0.tgz" + integrity sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A== + +jest-regex-util@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz" + integrity sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg== + +jest-regex-util@^28.0.0: + version "28.0.2" + resolved "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-28.0.2.tgz" + integrity sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw== + +jest-resolve-dependencies@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz" + integrity sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg== dependencies: "@jest/types" "^27.5.1" - "@types/node" "*" + jest-regex-util "^27.5.1" + jest-snapshot "^27.5.1" -"jest-pnp-resolver@^1.2.1", "jest-pnp-resolver@^1.2.2": - "integrity" "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==" - "resolved" "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz" - "version" "1.2.3" - -"jest-regex-util@^24.9.0": - "integrity" "sha512-05Cmb6CuxaA+Ys6fjr3PhvV3bGQmO+2p2La4hFbU+W5uOc479f7FdLXUWXw4pYMAhhSZIuKHwSXSu6CsSBAXQA==" - "resolved" "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-24.9.0.tgz" - "version" "24.9.0" - -"jest-regex-util@^26.0.0": - "integrity" "sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==" - "resolved" "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-26.0.0.tgz" - "version" "26.0.0" - -"jest-regex-util@^27.5.1": - "integrity" "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==" - "resolved" "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz" - "version" "27.5.1" - -"jest-regex-util@^28.0.0": - "integrity" "sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw==" - "resolved" "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-28.0.2.tgz" - "version" "28.0.2" - -"jest-resolve-dependencies@^27.5.1": - "integrity" "sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==" - "resolved" "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz" - "version" "27.5.1" - dependencies: - "@jest/types" "^27.5.1" - "jest-regex-util" "^27.5.1" - "jest-snapshot" "^27.5.1" - -"jest-resolve@*", "jest-resolve@24.9.0": - "integrity" "sha512-TaLeLVL1l08YFZAt3zaPtjiVvyy4oSA6CRe+0AFPPVX3Q/VI0giIWWoAvoS5L96vj9Dqxj4fB5p2qrHCmTU/MQ==" - "resolved" "https://registry.npmjs.org/jest-resolve/-/jest-resolve-24.9.0.tgz" - "version" "24.9.0" +jest-resolve@24.9.0: + version "24.9.0" + resolved "https://registry.npmjs.org/jest-resolve/-/jest-resolve-24.9.0.tgz" + integrity sha512-TaLeLVL1l08YFZAt3zaPtjiVvyy4oSA6CRe+0AFPPVX3Q/VI0giIWWoAvoS5L96vj9Dqxj4fB5p2qrHCmTU/MQ== dependencies: "@jest/types" "^24.9.0" - "browser-resolve" "^1.11.3" - "chalk" "^2.0.1" - "jest-pnp-resolver" "^1.2.1" - "realpath-native" "^1.1.0" + browser-resolve "^1.11.3" + chalk "^2.0.1" + jest-pnp-resolver "^1.2.1" + realpath-native "^1.1.0" -"jest-resolve@^27.4.2": - "integrity" "sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==" - "resolved" "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz" - "version" "27.5.1" +jest-resolve@^27.4.2, jest-resolve@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz" + integrity sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw== dependencies: "@jest/types" "^27.5.1" - "chalk" "^4.0.0" - "graceful-fs" "^4.2.9" - "jest-haste-map" "^27.5.1" - "jest-pnp-resolver" "^1.2.2" - "jest-util" "^27.5.1" - "jest-validate" "^27.5.1" - "resolve" "^1.20.0" - "resolve.exports" "^1.1.0" - "slash" "^3.0.0" + chalk "^4.0.0" + graceful-fs "^4.2.9" + jest-haste-map "^27.5.1" + jest-pnp-resolver "^1.2.2" + jest-util "^27.5.1" + jest-validate "^27.5.1" + resolve "^1.20.0" + resolve.exports "^1.1.0" + slash "^3.0.0" -"jest-resolve@^27.5.1": - "integrity" "sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==" - "resolved" "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz" - "version" "27.5.1" - dependencies: - "@jest/types" "^27.5.1" - "chalk" "^4.0.0" - "graceful-fs" "^4.2.9" - "jest-haste-map" "^27.5.1" - "jest-pnp-resolver" "^1.2.2" - "jest-util" "^27.5.1" - "jest-validate" "^27.5.1" - "resolve" "^1.20.0" - "resolve.exports" "^1.1.0" - "slash" "^3.0.0" - -"jest-runner@^27.5.1": - "integrity" "sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==" - "resolved" "https://registry.npmjs.org/jest-runner/-/jest-runner-27.5.1.tgz" - "version" "27.5.1" +jest-runner@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-runner/-/jest-runner-27.5.1.tgz" + integrity sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ== dependencies: "@jest/console" "^27.5.1" "@jest/environment" "^27.5.1" @@ -13902,26 +13467,26 @@ "@jest/transform" "^27.5.1" "@jest/types" "^27.5.1" "@types/node" "*" - "chalk" "^4.0.0" - "emittery" "^0.8.1" - "graceful-fs" "^4.2.9" - "jest-docblock" "^27.5.1" - "jest-environment-jsdom" "^27.5.1" - "jest-environment-node" "^27.5.1" - "jest-haste-map" "^27.5.1" - "jest-leak-detector" "^27.5.1" - "jest-message-util" "^27.5.1" - "jest-resolve" "^27.5.1" - "jest-runtime" "^27.5.1" - "jest-util" "^27.5.1" - "jest-worker" "^27.5.1" - "source-map-support" "^0.5.6" - "throat" "^6.0.1" + chalk "^4.0.0" + emittery "^0.8.1" + graceful-fs "^4.2.9" + jest-docblock "^27.5.1" + jest-environment-jsdom "^27.5.1" + jest-environment-node "^27.5.1" + jest-haste-map "^27.5.1" + jest-leak-detector "^27.5.1" + jest-message-util "^27.5.1" + jest-resolve "^27.5.1" + jest-runtime "^27.5.1" + jest-util "^27.5.1" + jest-worker "^27.5.1" + source-map-support "^0.5.6" + throat "^6.0.1" -"jest-runtime@^27.5.1": - "integrity" "sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==" - "resolved" "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz" - "version" "27.5.1" +jest-runtime@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz" + integrity sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A== dependencies: "@jest/environment" "^27.5.1" "@jest/fake-timers" "^27.5.1" @@ -13930,47 +13495,47 @@ "@jest/test-result" "^27.5.1" "@jest/transform" "^27.5.1" "@jest/types" "^27.5.1" - "chalk" "^4.0.0" - "cjs-module-lexer" "^1.0.0" - "collect-v8-coverage" "^1.0.0" - "execa" "^5.0.0" - "glob" "^7.1.3" - "graceful-fs" "^4.2.9" - "jest-haste-map" "^27.5.1" - "jest-message-util" "^27.5.1" - "jest-mock" "^27.5.1" - "jest-regex-util" "^27.5.1" - "jest-resolve" "^27.5.1" - "jest-snapshot" "^27.5.1" - "jest-util" "^27.5.1" - "slash" "^3.0.0" - "strip-bom" "^4.0.0" + chalk "^4.0.0" + cjs-module-lexer "^1.0.0" + collect-v8-coverage "^1.0.0" + execa "^5.0.0" + glob "^7.1.3" + graceful-fs "^4.2.9" + jest-haste-map "^27.5.1" + jest-message-util "^27.5.1" + jest-mock "^27.5.1" + jest-regex-util "^27.5.1" + jest-resolve "^27.5.1" + jest-snapshot "^27.5.1" + jest-util "^27.5.1" + slash "^3.0.0" + strip-bom "^4.0.0" -"jest-serializer@^24.9.0": - "integrity" "sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ==" - "resolved" "https://registry.npmjs.org/jest-serializer/-/jest-serializer-24.9.0.tgz" - "version" "24.9.0" +jest-serializer@^24.9.0: + version "24.9.0" + resolved "https://registry.npmjs.org/jest-serializer/-/jest-serializer-24.9.0.tgz" + integrity sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ== -"jest-serializer@^26.6.2": - "integrity" "sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==" - "resolved" "https://registry.npmjs.org/jest-serializer/-/jest-serializer-26.6.2.tgz" - "version" "26.6.2" +jest-serializer@^26.6.2: + version "26.6.2" + resolved "https://registry.npmjs.org/jest-serializer/-/jest-serializer-26.6.2.tgz" + integrity sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g== dependencies: "@types/node" "*" - "graceful-fs" "^4.2.4" + graceful-fs "^4.2.4" -"jest-serializer@^27.5.1": - "integrity" "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==" - "resolved" "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz" - "version" "27.5.1" +jest-serializer@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz" + integrity sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w== dependencies: "@types/node" "*" - "graceful-fs" "^4.2.9" + graceful-fs "^4.2.9" -"jest-snapshot@^27.5.1": - "integrity" "sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==" - "resolved" "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz" - "version" "27.5.1" +jest-snapshot@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz" + integrity sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA== dependencies: "@babel/core" "^7.7.2" "@babel/generator" "^7.7.2" @@ -13981,282 +13546,250 @@ "@jest/types" "^27.5.1" "@types/babel__traverse" "^7.0.4" "@types/prettier" "^2.1.5" - "babel-preset-current-node-syntax" "^1.0.0" - "chalk" "^4.0.0" - "expect" "^27.5.1" - "graceful-fs" "^4.2.9" - "jest-diff" "^27.5.1" - "jest-get-type" "^27.5.1" - "jest-haste-map" "^27.5.1" - "jest-matcher-utils" "^27.5.1" - "jest-message-util" "^27.5.1" - "jest-util" "^27.5.1" - "natural-compare" "^1.4.0" - "pretty-format" "^27.5.1" - "semver" "^7.3.2" + babel-preset-current-node-syntax "^1.0.0" + chalk "^4.0.0" + expect "^27.5.1" + graceful-fs "^4.2.9" + jest-diff "^27.5.1" + jest-get-type "^27.5.1" + jest-haste-map "^27.5.1" + jest-matcher-utils "^27.5.1" + jest-message-util "^27.5.1" + jest-util "^27.5.1" + natural-compare "^1.4.0" + pretty-format "^27.5.1" + semver "^7.3.2" -"jest-util@^24.0.0", "jest-util@^24.9.0": - "integrity" "sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg==" - "resolved" "https://registry.npmjs.org/jest-util/-/jest-util-24.9.0.tgz" - "version" "24.9.0" +jest-util@^24.0.0, jest-util@^24.9.0: + version "24.9.0" + resolved "https://registry.npmjs.org/jest-util/-/jest-util-24.9.0.tgz" + integrity sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg== dependencies: "@jest/console" "^24.9.0" "@jest/fake-timers" "^24.9.0" "@jest/source-map" "^24.9.0" "@jest/test-result" "^24.9.0" "@jest/types" "^24.9.0" - "callsites" "^3.0.0" - "chalk" "^2.0.1" - "graceful-fs" "^4.1.15" - "is-ci" "^2.0.0" - "mkdirp" "^0.5.1" - "slash" "^2.0.0" - "source-map" "^0.6.0" + callsites "^3.0.0" + chalk "^2.0.1" + graceful-fs "^4.1.15" + is-ci "^2.0.0" + mkdirp "^0.5.1" + slash "^2.0.0" + source-map "^0.6.0" -"jest-util@^26.6.2": - "integrity" "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==" - "resolved" "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz" - "version" "26.6.2" +jest-util@^26.6.2: + version "26.6.2" + resolved "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz" + integrity sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q== dependencies: "@jest/types" "^26.6.2" "@types/node" "*" - "chalk" "^4.0.0" - "graceful-fs" "^4.2.4" - "is-ci" "^2.0.0" - "micromatch" "^4.0.2" + chalk "^4.0.0" + graceful-fs "^4.2.4" + is-ci "^2.0.0" + micromatch "^4.0.2" -"jest-util@^27.5.1": - "integrity" "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==" - "resolved" "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz" - "version" "27.5.1" +jest-util@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz" + integrity sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw== dependencies: "@jest/types" "^27.5.1" "@types/node" "*" - "chalk" "^4.0.0" - "ci-info" "^3.2.0" - "graceful-fs" "^4.2.9" - "picomatch" "^2.2.3" + chalk "^4.0.0" + ci-info "^3.2.0" + graceful-fs "^4.2.9" + picomatch "^2.2.3" -"jest-util@^28.1.3": - "integrity" "sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==" - "resolved" "https://registry.npmjs.org/jest-util/-/jest-util-28.1.3.tgz" - "version" "28.1.3" +jest-util@^28.1.3: + version "28.1.3" + resolved "https://registry.npmjs.org/jest-util/-/jest-util-28.1.3.tgz" + integrity sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ== dependencies: "@jest/types" "^28.1.3" "@types/node" "*" - "chalk" "^4.0.0" - "ci-info" "^3.2.0" - "graceful-fs" "^4.2.9" - "picomatch" "^2.2.3" + chalk "^4.0.0" + ci-info "^3.2.0" + graceful-fs "^4.2.9" + picomatch "^2.2.3" -"jest-validate@^27.5.1": - "integrity" "sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==" - "resolved" "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz" - "version" "27.5.1" +jest-validate@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz" + integrity sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ== dependencies: "@jest/types" "^27.5.1" - "camelcase" "^6.2.0" - "chalk" "^4.0.0" - "jest-get-type" "^27.5.1" - "leven" "^3.1.0" - "pretty-format" "^27.5.1" + camelcase "^6.2.0" + chalk "^4.0.0" + jest-get-type "^27.5.1" + leven "^3.1.0" + pretty-format "^27.5.1" -"jest-watch-typeahead@^1.0.0": - "integrity" "sha512-Va5nLSJTN7YFtC2jd+7wsoe1pNe5K4ShLux/E5iHEwlB9AxaxmggY7to9KUqKojhaJw3aXqt5WAb4jGPOolpEw==" - "resolved" "https://registry.npmjs.org/jest-watch-typeahead/-/jest-watch-typeahead-1.1.0.tgz" - "version" "1.1.0" +jest-watch-typeahead@0.6.1: + version "0.6.1" + resolved "https://registry.npmjs.org/jest-watch-typeahead/-/jest-watch-typeahead-0.6.1.tgz" + integrity sha512-ITVnHhj3Jd/QkqQcTqZfRgjfyRhDFM/auzgVo2RKvSwi18YMvh0WvXDJFoFED6c7jd/5jxtu4kSOb9PTu2cPVg== dependencies: - "ansi-escapes" "^4.3.1" - "chalk" "^4.0.0" - "jest-regex-util" "^28.0.0" - "jest-watcher" "^28.0.0" - "slash" "^4.0.0" - "string-length" "^5.0.1" - "strip-ansi" "^7.0.1" + ansi-escapes "^4.3.1" + chalk "^4.0.0" + jest-regex-util "^26.0.0" + jest-watcher "^26.3.0" + slash "^3.0.0" + string-length "^4.0.1" + strip-ansi "^6.0.0" -"jest-watch-typeahead@0.6.1": - "integrity" "sha512-ITVnHhj3Jd/QkqQcTqZfRgjfyRhDFM/auzgVo2RKvSwi18YMvh0WvXDJFoFED6c7jd/5jxtu4kSOb9PTu2cPVg==" - "resolved" "https://registry.npmjs.org/jest-watch-typeahead/-/jest-watch-typeahead-0.6.1.tgz" - "version" "0.6.1" +jest-watch-typeahead@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/jest-watch-typeahead/-/jest-watch-typeahead-1.1.0.tgz" + integrity sha512-Va5nLSJTN7YFtC2jd+7wsoe1pNe5K4ShLux/E5iHEwlB9AxaxmggY7to9KUqKojhaJw3aXqt5WAb4jGPOolpEw== dependencies: - "ansi-escapes" "^4.3.1" - "chalk" "^4.0.0" - "jest-regex-util" "^26.0.0" - "jest-watcher" "^26.3.0" - "slash" "^3.0.0" - "string-length" "^4.0.1" - "strip-ansi" "^6.0.0" + ansi-escapes "^4.3.1" + chalk "^4.0.0" + jest-regex-util "^28.0.0" + jest-watcher "^28.0.0" + slash "^4.0.0" + string-length "^5.0.1" + strip-ansi "^7.0.1" -"jest-watcher@^26.3.0": - "integrity" "sha512-WKJob0P/Em2csiVthsI68p6aGKTIcsfjH9Gsx1f0A3Italz43e3ho0geSAVsmj09RWOELP1AZ/DXyJgOgDKxXQ==" - "resolved" "https://registry.npmjs.org/jest-watcher/-/jest-watcher-26.6.2.tgz" - "version" "26.6.2" +jest-watcher@^26.3.0: + version "26.6.2" + resolved "https://registry.npmjs.org/jest-watcher/-/jest-watcher-26.6.2.tgz" + integrity sha512-WKJob0P/Em2csiVthsI68p6aGKTIcsfjH9Gsx1f0A3Italz43e3ho0geSAVsmj09RWOELP1AZ/DXyJgOgDKxXQ== dependencies: "@jest/test-result" "^26.6.2" "@jest/types" "^26.6.2" "@types/node" "*" - "ansi-escapes" "^4.2.1" - "chalk" "^4.0.0" - "jest-util" "^26.6.2" - "string-length" "^4.0.1" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + jest-util "^26.6.2" + string-length "^4.0.1" -"jest-watcher@^27.5.1": - "integrity" "sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==" - "resolved" "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.5.1.tgz" - "version" "27.5.1" +jest-watcher@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.5.1.tgz" + integrity sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw== dependencies: "@jest/test-result" "^27.5.1" "@jest/types" "^27.5.1" "@types/node" "*" - "ansi-escapes" "^4.2.1" - "chalk" "^4.0.0" - "jest-util" "^27.5.1" - "string-length" "^4.0.1" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + jest-util "^27.5.1" + string-length "^4.0.1" -"jest-watcher@^28.0.0": - "integrity" "sha512-t4qcqj9hze+jviFPUN3YAtAEeFnr/azITXQEMARf5cMwKY2SMBRnCQTXLixTl20OR6mLh9KLMrgVJgJISym+1g==" - "resolved" "https://registry.npmjs.org/jest-watcher/-/jest-watcher-28.1.3.tgz" - "version" "28.1.3" +jest-watcher@^28.0.0: + version "28.1.3" + resolved "https://registry.npmjs.org/jest-watcher/-/jest-watcher-28.1.3.tgz" + integrity sha512-t4qcqj9hze+jviFPUN3YAtAEeFnr/azITXQEMARf5cMwKY2SMBRnCQTXLixTl20OR6mLh9KLMrgVJgJISym+1g== dependencies: "@jest/test-result" "^28.1.3" "@jest/types" "^28.1.3" "@types/node" "*" - "ansi-escapes" "^4.2.1" - "chalk" "^4.0.0" - "emittery" "^0.10.2" - "jest-util" "^28.1.3" - "string-length" "^4.0.1" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + emittery "^0.10.2" + jest-util "^28.1.3" + string-length "^4.0.1" -"jest-worker@^24.9.0": - "integrity" "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==" - "resolved" "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz" - "version" "24.9.0" +jest-worker@^24.9.0: + version "24.9.0" + resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz" + integrity sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw== dependencies: - "merge-stream" "^2.0.0" - "supports-color" "^6.1.0" + merge-stream "^2.0.0" + supports-color "^6.1.0" -"jest-worker@^26.2.1": - "integrity" "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==" - "resolved" "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz" - "version" "26.6.2" +jest-worker@^26.2.1, jest-worker@^26.5.0, jest-worker@^26.6.2: + version "26.6.2" + resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz" + integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ== dependencies: "@types/node" "*" - "merge-stream" "^2.0.0" - "supports-color" "^7.0.0" + merge-stream "^2.0.0" + supports-color "^7.0.0" -"jest-worker@^26.5.0": - "integrity" "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==" - "resolved" "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz" - "version" "26.6.2" +jest-worker@^27.0.2, jest-worker@^27.4.5, jest-worker@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz" + integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== dependencies: "@types/node" "*" - "merge-stream" "^2.0.0" - "supports-color" "^7.0.0" + merge-stream "^2.0.0" + supports-color "^8.0.0" -"jest-worker@^26.6.2": - "integrity" "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==" - "resolved" "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz" - "version" "26.6.2" +jest-worker@^28.0.2: + version "28.1.3" + resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-28.1.3.tgz" + integrity sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g== dependencies: "@types/node" "*" - "merge-stream" "^2.0.0" - "supports-color" "^7.0.0" + merge-stream "^2.0.0" + supports-color "^8.0.0" -"jest-worker@^27.0.2": - "integrity" "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==" - "resolved" "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz" - "version" "27.5.1" - dependencies: - "@types/node" "*" - "merge-stream" "^2.0.0" - "supports-color" "^8.0.0" - -"jest-worker@^27.4.5", "jest-worker@^27.5.1": - "integrity" "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==" - "resolved" "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz" - "version" "27.5.1" - dependencies: - "@types/node" "*" - "merge-stream" "^2.0.0" - "supports-color" "^8.0.0" - -"jest-worker@^28.0.2": - "integrity" "sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g==" - "resolved" "https://registry.npmjs.org/jest-worker/-/jest-worker-28.1.3.tgz" - "version" "28.1.3" - dependencies: - "@types/node" "*" - "merge-stream" "^2.0.0" - "supports-color" "^8.0.0" - -"jest@^26.0.0", "jest@^27.0.0 || ^28.0.0", "jest@^27.4.3": - "integrity" "sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==" - "resolved" "https://registry.npmjs.org/jest/-/jest-27.5.1.tgz" - "version" "27.5.1" +jest@^27.4.3: + version "27.5.1" + resolved "https://registry.npmjs.org/jest/-/jest-27.5.1.tgz" + integrity sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ== dependencies: "@jest/core" "^27.5.1" - "import-local" "^3.0.2" - "jest-cli" "^27.5.1" + import-local "^3.0.2" + jest-cli "^27.5.1" -"jquery@^3.5.1", "jquery@^3.6.0": - "integrity" "sha512-opJeO4nCucVnsjiXOE+/PcCgYw9Gwpvs/a6B1LL/lQhwWwpbVEVYDZ1FokFr8PRc7ghYlrFPuyHuiiDNTQxmcw==" - "resolved" "https://registry.npmjs.org/jquery/-/jquery-3.6.1.tgz" - "version" "3.6.1" +jquery@^3.5.1, jquery@^3.6.0: + version "3.6.1" + resolved "https://registry.npmjs.org/jquery/-/jquery-3.6.1.tgz" + integrity sha512-opJeO4nCucVnsjiXOE+/PcCgYw9Gwpvs/a6B1LL/lQhwWwpbVEVYDZ1FokFr8PRc7ghYlrFPuyHuiiDNTQxmcw== -"js-sdsl@^4.1.4": - "integrity" "sha512-dyBIzQBDkCqCu+0upx25Y2jGdbTGxE9fshMsCdK0ViOongpV+n5tXRcZY9v7CaVQ79AGS9KA1KHtojxiM7aXSQ==" - "resolved" "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.2.0.tgz" - "version" "4.2.0" +js-sdsl@^4.1.4: + version "4.2.0" + resolved "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.2.0.tgz" + integrity sha512-dyBIzQBDkCqCu+0upx25Y2jGdbTGxE9fshMsCdK0ViOongpV+n5tXRcZY9v7CaVQ79AGS9KA1KHtojxiM7aXSQ== -"js-sha1@^0.6.0": - "integrity" "sha512-01gwBFreYydzmU9BmZxpVk6svJJHrVxEN3IOiGl6VO93bVKYETJ0sIth6DASI6mIFdt7NmfX9UiByRzsYHGU9w==" - "resolved" "https://registry.npmjs.org/js-sha1/-/js-sha1-0.6.0.tgz" - "version" "0.6.0" +js-sha1@^0.6.0: + version "0.6.0" + resolved "https://registry.npmjs.org/js-sha1/-/js-sha1-0.6.0.tgz" + integrity sha512-01gwBFreYydzmU9BmZxpVk6svJJHrVxEN3IOiGl6VO93bVKYETJ0sIth6DASI6mIFdt7NmfX9UiByRzsYHGU9w== -"js-string-escape@^1.0.1": - "integrity" "sha512-Smw4xcfIQ5LVjAOuJCvN/zIodzA/BBSsluuoSykP+lUvScIi4U6RJLfwHet5cxFnCswUjISV8oAXaqaJDY3chg==" - "resolved" "https://registry.npmjs.org/js-string-escape/-/js-string-escape-1.0.1.tgz" - "version" "1.0.1" +js-string-escape@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/js-string-escape/-/js-string-escape-1.0.1.tgz" + integrity sha512-Smw4xcfIQ5LVjAOuJCvN/zIodzA/BBSsluuoSykP+lUvScIi4U6RJLfwHet5cxFnCswUjISV8oAXaqaJDY3chg== -"js-tokens@^3.0.0 || ^4.0.0", "js-tokens@^4.0.0": - "integrity" "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - "resolved" "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" - "version" "4.0.0" +js-tokens@^3.0.0, js-tokens@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz" + integrity sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg== -"js-tokens@^3.0.0": - "integrity" "sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg==" - "resolved" "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz" - "version" "3.0.2" +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -"js-tokens@^3.0.2": - "integrity" "sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg==" - "resolved" "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz" - "version" "3.0.2" - -"js-yaml@^3.13.1": - "integrity" "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==" - "resolved" "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz" - "version" "3.14.1" +js-yaml@^3.13.1: + version "3.14.1" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== dependencies: - "argparse" "^1.0.7" - "esprima" "^4.0.0" + argparse "^1.0.7" + esprima "^4.0.0" -"js-yaml@^4.1.0": - "integrity" "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==" - "resolved" "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz" - "version" "4.1.0" +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== dependencies: - "argparse" "^2.0.1" + argparse "^2.0.1" -"jsbn@~0.1.0": - "integrity" "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==" - "resolved" "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz" - "version" "0.1.1" +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz" + integrity sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg== -"jscodeshift@^0.13.1": - "integrity" "sha512-lGyiEbGOvmMRKgWk4vf+lUrCWO/8YR8sUR3FKF1Cq5fovjZDlIcw3Hu5ppLHAnEXshVffvaM0eyuY/AbOeYpnQ==" - "resolved" "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.13.1.tgz" - "version" "0.13.1" +jscodeshift@^0.13.1: + version "0.13.1" + resolved "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.13.1.tgz" + integrity sha512-lGyiEbGOvmMRKgWk4vf+lUrCWO/8YR8sUR3FKF1Cq5fovjZDlIcw3Hu5ppLHAnEXshVffvaM0eyuY/AbOeYpnQ== dependencies: "@babel/core" "^7.13.16" "@babel/parser" "^7.13.16" @@ -14267,3319 +13800,3296 @@ "@babel/preset-flow" "^7.13.13" "@babel/preset-typescript" "^7.13.0" "@babel/register" "^7.13.16" - "babel-core" "^7.0.0-bridge.0" - "chalk" "^4.1.2" - "flow-parser" "0.*" - "graceful-fs" "^4.2.4" - "micromatch" "^3.1.10" - "neo-async" "^2.5.0" - "node-dir" "^0.1.17" - "recast" "^0.20.4" - "temp" "^0.8.4" - "write-file-atomic" "^2.3.0" + babel-core "^7.0.0-bridge.0" + chalk "^4.1.2" + flow-parser "0.*" + graceful-fs "^4.2.4" + micromatch "^3.1.10" + neo-async "^2.5.0" + node-dir "^0.1.17" + recast "^0.20.4" + temp "^0.8.4" + write-file-atomic "^2.3.0" -"jsdom@^14.1.0": - "integrity" "sha512-O901mfJSuTdwU2w3Sn+74T+RnDVP+FuV5fH8tcPWyqrseRAb0s5xOtPgCFiPOtLcyK7CLIJwPyD83ZqQWvA5ng==" - "resolved" "https://registry.npmjs.org/jsdom/-/jsdom-14.1.0.tgz" - "version" "14.1.0" +jsdom@^14.1.0: + version "14.1.0" + resolved "https://registry.npmjs.org/jsdom/-/jsdom-14.1.0.tgz" + integrity sha512-O901mfJSuTdwU2w3Sn+74T+RnDVP+FuV5fH8tcPWyqrseRAb0s5xOtPgCFiPOtLcyK7CLIJwPyD83ZqQWvA5ng== dependencies: - "abab" "^2.0.0" - "acorn" "^6.0.4" - "acorn-globals" "^4.3.0" - "array-equal" "^1.0.0" - "cssom" "^0.3.4" - "cssstyle" "^1.1.1" - "data-urls" "^1.1.0" - "domexception" "^1.0.1" - "escodegen" "^1.11.0" - "html-encoding-sniffer" "^1.0.2" - "nwsapi" "^2.1.3" - "parse5" "5.1.0" - "pn" "^1.1.0" - "request" "^2.88.0" - "request-promise-native" "^1.0.5" - "saxes" "^3.1.9" - "symbol-tree" "^3.2.2" - "tough-cookie" "^2.5.0" - "w3c-hr-time" "^1.0.1" - "w3c-xmlserializer" "^1.1.2" - "webidl-conversions" "^4.0.2" - "whatwg-encoding" "^1.0.5" - "whatwg-mimetype" "^2.3.0" - "whatwg-url" "^7.0.0" - "ws" "^6.1.2" - "xml-name-validator" "^3.0.0" + abab "^2.0.0" + acorn "^6.0.4" + acorn-globals "^4.3.0" + array-equal "^1.0.0" + cssom "^0.3.4" + cssstyle "^1.1.1" + data-urls "^1.1.0" + domexception "^1.0.1" + escodegen "^1.11.0" + html-encoding-sniffer "^1.0.2" + nwsapi "^2.1.3" + parse5 "5.1.0" + pn "^1.1.0" + request "^2.88.0" + request-promise-native "^1.0.5" + saxes "^3.1.9" + symbol-tree "^3.2.2" + tough-cookie "^2.5.0" + w3c-hr-time "^1.0.1" + w3c-xmlserializer "^1.1.2" + webidl-conversions "^4.0.2" + whatwg-encoding "^1.0.5" + whatwg-mimetype "^2.3.0" + whatwg-url "^7.0.0" + ws "^6.1.2" + xml-name-validator "^3.0.0" -"jsdom@^16.6.0": - "integrity" "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==" - "resolved" "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz" - "version" "16.7.0" +jsdom@^16.6.0: + version "16.7.0" + resolved "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz" + integrity sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw== dependencies: - "abab" "^2.0.5" - "acorn" "^8.2.4" - "acorn-globals" "^6.0.0" - "cssom" "^0.4.4" - "cssstyle" "^2.3.0" - "data-urls" "^2.0.0" - "decimal.js" "^10.2.1" - "domexception" "^2.0.1" - "escodegen" "^2.0.0" - "form-data" "^3.0.0" - "html-encoding-sniffer" "^2.0.1" - "http-proxy-agent" "^4.0.1" - "https-proxy-agent" "^5.0.0" - "is-potential-custom-element-name" "^1.0.1" - "nwsapi" "^2.2.0" - "parse5" "6.0.1" - "saxes" "^5.0.1" - "symbol-tree" "^3.2.4" - "tough-cookie" "^4.0.0" - "w3c-hr-time" "^1.0.2" - "w3c-xmlserializer" "^2.0.0" - "webidl-conversions" "^6.1.0" - "whatwg-encoding" "^1.0.5" - "whatwg-mimetype" "^2.3.0" - "whatwg-url" "^8.5.0" - "ws" "^7.4.6" - "xml-name-validator" "^3.0.0" + abab "^2.0.5" + acorn "^8.2.4" + acorn-globals "^6.0.0" + cssom "^0.4.4" + cssstyle "^2.3.0" + data-urls "^2.0.0" + decimal.js "^10.2.1" + domexception "^2.0.1" + escodegen "^2.0.0" + form-data "^3.0.0" + html-encoding-sniffer "^2.0.1" + http-proxy-agent "^4.0.1" + https-proxy-agent "^5.0.0" + is-potential-custom-element-name "^1.0.1" + nwsapi "^2.2.0" + parse5 "6.0.1" + saxes "^5.0.1" + symbol-tree "^3.2.4" + tough-cookie "^4.0.0" + w3c-hr-time "^1.0.2" + w3c-xmlserializer "^2.0.0" + webidl-conversions "^6.1.0" + whatwg-encoding "^1.0.5" + whatwg-mimetype "^2.3.0" + whatwg-url "^8.5.0" + ws "^7.4.6" + xml-name-validator "^3.0.0" -"jsesc@^1.3.0": - "integrity" "sha512-Mke0DA0QjUWuJlhsE0ZPPhYiJkRap642SmI/4ztCFaUs6V2AiH1sfecc+57NgaryfAA2VR3v6O+CSjC1jZJKOA==" - "resolved" "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz" - "version" "1.3.0" +jsesc@^1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz" + integrity sha512-Mke0DA0QjUWuJlhsE0ZPPhYiJkRap642SmI/4ztCFaUs6V2AiH1sfecc+57NgaryfAA2VR3v6O+CSjC1jZJKOA== -"jsesc@^2.5.1": - "integrity" "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" - "resolved" "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz" - "version" "2.5.2" +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== -"jsesc@~0.5.0": - "integrity" "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==" - "resolved" "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz" - "version" "0.5.0" +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz" + integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== -"json-buffer@3.0.0": - "integrity" "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==" - "resolved" "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz" - "version" "3.0.0" +json-buffer@3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz" + integrity sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ== -"json-parse-better-errors@^1.0.1", "json-parse-better-errors@^1.0.2": - "integrity" "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" - "resolved" "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz" - "version" "1.0.2" +json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz" + integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== -"json-parse-even-better-errors@^2.3.0", "json-parse-even-better-errors@^2.3.1": - "integrity" "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" - "resolved" "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz" - "version" "2.3.1" +json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: + version "2.3.1" + resolved "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== -"json-schema-traverse@^0.4.1": - "integrity" "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - "resolved" "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz" - "version" "0.4.1" +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== -"json-schema-traverse@^1.0.0": - "integrity" "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" - "resolved" "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz" - "version" "1.0.0" +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== -"json-schema@^0.4.0", "json-schema@0.4.0": - "integrity" "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" - "resolved" "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz" - "version" "0.4.0" +json-schema@0.4.0, json-schema@^0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz" + integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== -"json-stable-stringify-without-jsonify@^1.0.1": - "integrity" "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==" - "resolved" "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz" - "version" "1.0.1" +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz" + integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== -"json-stable-stringify@^1.0.1": - "integrity" "sha512-eunSSaEnxV12z+Z73y/j5N37/In40GK4GmsSy+tEHJMxknvqnA7/djeYtAgW0GsWHUfg+847WJjKaEylk2y09g==" - "resolved" "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.2.tgz" - "version" "1.0.2" +json-stable-stringify@^1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.2.tgz" + integrity sha512-eunSSaEnxV12z+Z73y/j5N37/In40GK4GmsSy+tEHJMxknvqnA7/djeYtAgW0GsWHUfg+847WJjKaEylk2y09g== dependencies: - "jsonify" "^0.0.1" + jsonify "^0.0.1" -"json-stringify-safe@~5.0.1": - "integrity" "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" - "resolved" "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" - "version" "5.0.1" +json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" + integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== -"json2mq@^0.2.0": - "integrity" "sha512-SzoRg7ux5DWTII9J2qkrZrqV1gt+rTaoufMxEzXbS26Uid0NwaJd123HcoB80TgubEppxxIGdNxCx50fEoEWQA==" - "resolved" "https://registry.npmjs.org/json2mq/-/json2mq-0.2.0.tgz" - "version" "0.2.0" +json2mq@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/json2mq/-/json2mq-0.2.0.tgz" + integrity sha512-SzoRg7ux5DWTII9J2qkrZrqV1gt+rTaoufMxEzXbS26Uid0NwaJd123HcoB80TgubEppxxIGdNxCx50fEoEWQA== dependencies: - "string-convert" "^0.2.0" + string-convert "^0.2.0" -"json5@^0.5.1": - "integrity" "sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw==" - "resolved" "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz" - "version" "0.5.1" +json5@^0.5.1: + version "0.5.1" + resolved "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz" + integrity sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw== -"json5@^1.0.1": - "integrity" "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==" - "resolved" "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz" - "version" "1.0.1" +json5@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz" + integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== dependencies: - "minimist" "^1.2.0" + minimist "^1.2.0" -"json5@^2.1.2", "json5@^2.1.3", "json5@^2.2.0", "json5@^2.2.1": - "integrity" "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==" - "resolved" "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz" - "version" "2.2.1" +json5@^2.1.2, json5@^2.1.3, json5@^2.2.0, json5@^2.2.1: + version "2.2.1" + resolved "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz" + integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA== -"jsonfile@^4.0.0": - "integrity" "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==" - "resolved" "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz" - "version" "4.0.0" +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz" + integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== optionalDependencies: - "graceful-fs" "^4.1.6" + graceful-fs "^4.1.6" -"jsonfile@^6.0.1": - "integrity" "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==" - "resolved" "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz" - "version" "6.1.0" +jsonfile@^6.0.1: + version "6.1.0" + resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== dependencies: - "universalify" "^2.0.0" + universalify "^2.0.0" optionalDependencies: - "graceful-fs" "^4.1.6" + graceful-fs "^4.1.6" -"jsonify@^0.0.1": - "integrity" "sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg==" - "resolved" "https://registry.npmjs.org/jsonify/-/jsonify-0.0.1.tgz" - "version" "0.0.1" +jsonify@^0.0.1: + version "0.0.1" + resolved "https://registry.npmjs.org/jsonify/-/jsonify-0.0.1.tgz" + integrity sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg== -"jsonpointer@^5.0.0": - "integrity" "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==" - "resolved" "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz" - "version" "5.0.1" +jsonpointer@^5.0.0: + version "5.0.1" + resolved "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz" + integrity sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ== -"jsprim@^1.2.2": - "integrity" "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==" - "resolved" "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz" - "version" "1.4.2" +jsprim@^1.2.2: + version "1.4.2" + resolved "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz" + integrity sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw== dependencies: - "assert-plus" "1.0.0" - "extsprintf" "1.3.0" - "json-schema" "0.4.0" - "verror" "1.10.0" + assert-plus "1.0.0" + extsprintf "1.3.0" + json-schema "0.4.0" + verror "1.10.0" -"jss-plugin-camel-case@^10.5.1": - "integrity" "sha512-wgBPlL3WS0WDJ1lPJcgjux/SHnDuu7opmgQKSraKs4z8dCCyYMx9IDPFKBXQ8Q5dVYij1FFV0WdxyhuOOAXuTg==" - "resolved" "https://registry.npmjs.org/jss-plugin-camel-case/-/jss-plugin-camel-case-10.9.2.tgz" - "version" "10.9.2" +jss-plugin-camel-case@^10.5.1: + version "10.9.2" + resolved "https://registry.npmjs.org/jss-plugin-camel-case/-/jss-plugin-camel-case-10.9.2.tgz" + integrity sha512-wgBPlL3WS0WDJ1lPJcgjux/SHnDuu7opmgQKSraKs4z8dCCyYMx9IDPFKBXQ8Q5dVYij1FFV0WdxyhuOOAXuTg== dependencies: "@babel/runtime" "^7.3.1" - "hyphenate-style-name" "^1.0.3" - "jss" "10.9.2" + hyphenate-style-name "^1.0.3" + jss "10.9.2" -"jss-plugin-default-unit@^10.5.1": - "integrity" "sha512-pYg0QX3bBEFtTnmeSI3l7ad1vtHU42YEEpgW7pmIh+9pkWNWb5dwS/4onSfAaI0kq+dOZHzz4dWe+8vWnanoSg==" - "resolved" "https://registry.npmjs.org/jss-plugin-default-unit/-/jss-plugin-default-unit-10.9.2.tgz" - "version" "10.9.2" +jss-plugin-default-unit@^10.5.1: + version "10.9.2" + resolved "https://registry.npmjs.org/jss-plugin-default-unit/-/jss-plugin-default-unit-10.9.2.tgz" + integrity sha512-pYg0QX3bBEFtTnmeSI3l7ad1vtHU42YEEpgW7pmIh+9pkWNWb5dwS/4onSfAaI0kq+dOZHzz4dWe+8vWnanoSg== dependencies: "@babel/runtime" "^7.3.1" - "jss" "10.9.2" + jss "10.9.2" -"jss-plugin-global@^10.5.1": - "integrity" "sha512-GcX0aE8Ef6AtlasVrafg1DItlL/tWHoC4cGir4r3gegbWwF5ZOBYhx04gurPvWHC8F873aEGqge7C17xpwmp2g==" - "resolved" "https://registry.npmjs.org/jss-plugin-global/-/jss-plugin-global-10.9.2.tgz" - "version" "10.9.2" +jss-plugin-global@^10.5.1: + version "10.9.2" + resolved "https://registry.npmjs.org/jss-plugin-global/-/jss-plugin-global-10.9.2.tgz" + integrity sha512-GcX0aE8Ef6AtlasVrafg1DItlL/tWHoC4cGir4r3gegbWwF5ZOBYhx04gurPvWHC8F873aEGqge7C17xpwmp2g== dependencies: "@babel/runtime" "^7.3.1" - "jss" "10.9.2" + jss "10.9.2" -"jss-plugin-nested@^10.5.1": - "integrity" "sha512-VgiOWIC6bvgDaAL97XCxGD0BxOKM0K0zeB/ECyNaVF6FqvdGB9KBBWRdy2STYAss4VVA7i5TbxFZN+WSX1kfQA==" - "resolved" "https://registry.npmjs.org/jss-plugin-nested/-/jss-plugin-nested-10.9.2.tgz" - "version" "10.9.2" +jss-plugin-nested@^10.5.1: + version "10.9.2" + resolved "https://registry.npmjs.org/jss-plugin-nested/-/jss-plugin-nested-10.9.2.tgz" + integrity sha512-VgiOWIC6bvgDaAL97XCxGD0BxOKM0K0zeB/ECyNaVF6FqvdGB9KBBWRdy2STYAss4VVA7i5TbxFZN+WSX1kfQA== dependencies: "@babel/runtime" "^7.3.1" - "jss" "10.9.2" - "tiny-warning" "^1.0.2" + jss "10.9.2" + tiny-warning "^1.0.2" -"jss-plugin-props-sort@^10.5.1": - "integrity" "sha512-AP1AyUTbi2szylgr+O0OB7gkIxEGzySLITZ2GpsaoX72YMCGI2jYAc+WUhPfvUnZYiauF4zTnN4V4TGuvFjJlw==" - "resolved" "https://registry.npmjs.org/jss-plugin-props-sort/-/jss-plugin-props-sort-10.9.2.tgz" - "version" "10.9.2" +jss-plugin-props-sort@^10.5.1: + version "10.9.2" + resolved "https://registry.npmjs.org/jss-plugin-props-sort/-/jss-plugin-props-sort-10.9.2.tgz" + integrity sha512-AP1AyUTbi2szylgr+O0OB7gkIxEGzySLITZ2GpsaoX72YMCGI2jYAc+WUhPfvUnZYiauF4zTnN4V4TGuvFjJlw== dependencies: "@babel/runtime" "^7.3.1" - "jss" "10.9.2" + jss "10.9.2" -"jss-plugin-rule-value-function@^10.5.1": - "integrity" "sha512-vf5ms8zvLFMub6swbNxvzsurHfUZ5Shy5aJB2gIpY6WNA3uLinEcxYyraQXItRHi5ivXGqYciFDRM2ZoVoRZ4Q==" - "resolved" "https://registry.npmjs.org/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.9.2.tgz" - "version" "10.9.2" +jss-plugin-rule-value-function@^10.5.1: + version "10.9.2" + resolved "https://registry.npmjs.org/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.9.2.tgz" + integrity sha512-vf5ms8zvLFMub6swbNxvzsurHfUZ5Shy5aJB2gIpY6WNA3uLinEcxYyraQXItRHi5ivXGqYciFDRM2ZoVoRZ4Q== dependencies: "@babel/runtime" "^7.3.1" - "jss" "10.9.2" - "tiny-warning" "^1.0.2" + jss "10.9.2" + tiny-warning "^1.0.2" -"jss-plugin-vendor-prefixer@^10.5.1": - "integrity" "sha512-SxcEoH+Rttf9fEv6KkiPzLdXRmI6waOTcMkbbEFgdZLDYNIP9UKNHFy6thhbRKqv0XMQZdrEsbDyV464zE/dUA==" - "resolved" "https://registry.npmjs.org/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.9.2.tgz" - "version" "10.9.2" +jss-plugin-vendor-prefixer@^10.5.1: + version "10.9.2" + resolved "https://registry.npmjs.org/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.9.2.tgz" + integrity sha512-SxcEoH+Rttf9fEv6KkiPzLdXRmI6waOTcMkbbEFgdZLDYNIP9UKNHFy6thhbRKqv0XMQZdrEsbDyV464zE/dUA== dependencies: "@babel/runtime" "^7.3.1" - "css-vendor" "^2.0.8" - "jss" "10.9.2" + css-vendor "^2.0.8" + jss "10.9.2" -"jss@^10.5.1", "jss@10.9.2": - "integrity" "sha512-b8G6rWpYLR4teTUbGd4I4EsnWjg7MN0Q5bSsjKhVkJVjhQDy2KzkbD2AW3TuT0RYZVmZZHKIrXDn6kjU14qkUg==" - "resolved" "https://registry.npmjs.org/jss/-/jss-10.9.2.tgz" - "version" "10.9.2" +jss@10.9.2, jss@^10.5.1: + version "10.9.2" + resolved "https://registry.npmjs.org/jss/-/jss-10.9.2.tgz" + integrity sha512-b8G6rWpYLR4teTUbGd4I4EsnWjg7MN0Q5bSsjKhVkJVjhQDy2KzkbD2AW3TuT0RYZVmZZHKIrXDn6kjU14qkUg== dependencies: "@babel/runtime" "^7.3.1" - "csstype" "^3.0.2" - "is-in-browser" "^1.1.3" - "tiny-warning" "^1.0.2" + csstype "^3.0.2" + is-in-browser "^1.1.3" + tiny-warning "^1.0.2" -"jsx-ast-utils@^2.4.1 || ^3.0.0", "jsx-ast-utils@^3.1.0", "jsx-ast-utils@^3.3.2": - "integrity" "sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==" - "resolved" "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz" - "version" "3.3.3" +"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.1.0, jsx-ast-utils@^3.3.2: + version "3.3.3" + resolved "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz" + integrity sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw== dependencies: - "array-includes" "^3.1.5" - "object.assign" "^4.1.3" + array-includes "^3.1.5" + object.assign "^4.1.3" -"junk@^3.1.0": - "integrity" "sha512-pBxcB3LFc8QVgdggvZWyeys+hnrNWg4OcZIU/1X59k5jQdLBlCsYGRQaz234SqoRLTCgMH00fY0xRJH+F9METQ==" - "resolved" "https://registry.npmjs.org/junk/-/junk-3.1.0.tgz" - "version" "3.1.0" +junk@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/junk/-/junk-3.1.0.tgz" + integrity sha512-pBxcB3LFc8QVgdggvZWyeys+hnrNWg4OcZIU/1X59k5jQdLBlCsYGRQaz234SqoRLTCgMH00fY0xRJH+F9METQ== -"just-reduce-object@^1.0.3": - "integrity" "sha512-/3ov68tJlesyccBgilcd5wDAOEZJ10NyhVa5pkUMbH0lC/NBBGfPewn1CUZNXecX5zgZqQVIO7MAi1whbYhVFg==" - "resolved" "https://registry.npmjs.org/just-reduce-object/-/just-reduce-object-1.2.1.tgz" - "version" "1.2.1" +just-reduce-object@^1.0.3: + version "1.2.1" + resolved "https://registry.npmjs.org/just-reduce-object/-/just-reduce-object-1.2.1.tgz" + integrity sha512-/3ov68tJlesyccBgilcd5wDAOEZJ10NyhVa5pkUMbH0lC/NBBGfPewn1CUZNXecX5zgZqQVIO7MAi1whbYhVFg== -"keyv@^3.0.0": - "integrity" "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==" - "resolved" "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz" - "version" "3.1.0" +keyv@^3.0.0: + version "3.1.0" + resolved "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz" + integrity sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA== dependencies: - "json-buffer" "3.0.0" + json-buffer "3.0.0" -"kind-of@^2.0.1": - "integrity" "sha512-0u8i1NZ/mg0b+W3MGGw5I7+6Eib2nx72S/QvXa0hYjEkjTknYmEYQJwGu3mLC0BrhtJjtQafTkyRUQ75Kx0LVg==" - "resolved" "https://registry.npmjs.org/kind-of/-/kind-of-2.0.1.tgz" - "version" "2.0.1" +kind-of@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/kind-of/-/kind-of-2.0.1.tgz" + integrity sha512-0u8i1NZ/mg0b+W3MGGw5I7+6Eib2nx72S/QvXa0hYjEkjTknYmEYQJwGu3mLC0BrhtJjtQafTkyRUQ75Kx0LVg== dependencies: - "is-buffer" "^1.0.2" + is-buffer "^1.0.2" -"kind-of@^3.0.2", "kind-of@^3.0.3", "kind-of@^3.2.0": - "integrity" "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==" - "resolved" "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz" - "version" "3.2.2" +kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: + version "3.2.2" + resolved "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz" + integrity sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ== dependencies: - "is-buffer" "^1.1.5" + is-buffer "^1.1.5" -"kind-of@^4.0.0": - "integrity" "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==" - "resolved" "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz" - "version" "4.0.0" +kind-of@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz" + integrity sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw== dependencies: - "is-buffer" "^1.1.5" + is-buffer "^1.1.5" -"kind-of@^5.0.0": - "integrity" "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" - "resolved" "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz" - "version" "5.1.0" +kind-of@^5.0.0: + version "5.1.0" + resolved "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz" + integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== -"kind-of@^6.0.0", "kind-of@^6.0.2": - "integrity" "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" - "resolved" "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz" - "version" "6.0.3" +kind-of@^6.0.0, kind-of@^6.0.2: + version "6.0.3" + resolved "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== -"kleur@^3.0.3": - "integrity" "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==" - "resolved" "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz" - "version" "3.0.3" +kleur@^3.0.3: + version "3.0.3" + resolved "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz" + integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== -"klona@^2.0.4", "klona@^2.0.5": - "integrity" "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==" - "resolved" "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz" - "version" "2.0.5" +klona@^2.0.4, klona@^2.0.5: + version "2.0.5" + resolved "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz" + integrity sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ== -"language-subtag-registry@~0.3.2": - "integrity" "sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==" - "resolved" "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz" - "version" "0.3.22" +language-subtag-registry@~0.3.2: + version "0.3.22" + resolved "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz" + integrity sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w== -"language-tags@^1.0.5": - "integrity" "sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==" - "resolved" "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz" - "version" "1.0.5" +language-tags@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz" + integrity sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ== dependencies: - "language-subtag-registry" "~0.3.2" + language-subtag-registry "~0.3.2" -"last-call-webpack-plugin@^3.0.0": - "integrity" "sha512-7KI2l2GIZa9p2spzPIVZBYyNKkN+e/SQPpnjlTiPhdbDW3F86tdKKELxKpzJ5sgU19wQWsACULZmpTPYHeWO5w==" - "resolved" "https://registry.npmjs.org/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz" - "version" "3.0.0" +last-call-webpack-plugin@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz" + integrity sha512-7KI2l2GIZa9p2spzPIVZBYyNKkN+e/SQPpnjlTiPhdbDW3F86tdKKELxKpzJ5sgU19wQWsACULZmpTPYHeWO5w== dependencies: - "lodash" "^4.17.5" - "webpack-sources" "^1.1.0" + lodash "^4.17.5" + webpack-sources "^1.1.0" -"latest-version@^5.1.0": - "integrity" "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==" - "resolved" "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz" - "version" "5.1.0" +latest-version@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz" + integrity sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA== dependencies: - "package-json" "^6.3.0" + package-json "^6.3.0" -"lazy-cache@^0.2.3": - "integrity" "sha512-gkX52wvU/R8DVMMt78ATVPFMJqfW8FPz1GZ1sVHBVQHmu/WvhIWE4cE1GBzhJNFicDeYhnwp6Rl35BcAIM3YOQ==" - "resolved" "https://registry.npmjs.org/lazy-cache/-/lazy-cache-0.2.7.tgz" - "version" "0.2.7" +lazy-cache@^0.2.3: + version "0.2.7" + resolved "https://registry.npmjs.org/lazy-cache/-/lazy-cache-0.2.7.tgz" + integrity sha512-gkX52wvU/R8DVMMt78ATVPFMJqfW8FPz1GZ1sVHBVQHmu/WvhIWE4cE1GBzhJNFicDeYhnwp6Rl35BcAIM3YOQ== -"lazy-cache@^1.0.3": - "integrity" "sha512-RE2g0b5VGZsOCFOCgP7omTRYFqydmZkBwl5oNnQ1lDYC57uyO9KqNnNVxT7COSHTxrRCWVcAVOcbjk+tvh/rgQ==" - "resolved" "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz" - "version" "1.0.4" +lazy-cache@^1.0.3: + version "1.0.4" + resolved "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz" + integrity sha512-RE2g0b5VGZsOCFOCgP7omTRYFqydmZkBwl5oNnQ1lDYC57uyO9KqNnNVxT7COSHTxrRCWVcAVOcbjk+tvh/rgQ== -"lazy-universal-dotenv@^3.0.1": - "integrity" "sha512-prXSYk799h3GY3iOWnC6ZigYzMPjxN2svgjJ9shk7oMadSNX3wXy0B6F32PMJv7qtMnrIbUxoEHzbutvxR2LBQ==" - "resolved" "https://registry.npmjs.org/lazy-universal-dotenv/-/lazy-universal-dotenv-3.0.1.tgz" - "version" "3.0.1" +lazy-universal-dotenv@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/lazy-universal-dotenv/-/lazy-universal-dotenv-3.0.1.tgz" + integrity sha512-prXSYk799h3GY3iOWnC6ZigYzMPjxN2svgjJ9shk7oMadSNX3wXy0B6F32PMJv7qtMnrIbUxoEHzbutvxR2LBQ== dependencies: "@babel/runtime" "^7.5.0" - "app-root-dir" "^1.0.2" - "core-js" "^3.0.4" - "dotenv" "^8.0.0" - "dotenv-expand" "^5.1.0" + app-root-dir "^1.0.2" + core-js "^3.0.4" + dotenv "^8.0.0" + dotenv-expand "^5.1.0" -"less-loader@^7.3.0": - "integrity" "sha512-Mi8915g7NMaLlgi77mgTTQvK022xKRQBIVDSyfl3ErTuBhmZBQab0mjeJjNNqGbdR+qrfTleKXqbGI4uEFavxg==" - "resolved" "https://registry.npmjs.org/less-loader/-/less-loader-7.3.0.tgz" - "version" "7.3.0" +less-loader@^7.3.0: + version "7.3.0" + resolved "https://registry.npmjs.org/less-loader/-/less-loader-7.3.0.tgz" + integrity sha512-Mi8915g7NMaLlgi77mgTTQvK022xKRQBIVDSyfl3ErTuBhmZBQab0mjeJjNNqGbdR+qrfTleKXqbGI4uEFavxg== dependencies: - "klona" "^2.0.4" - "loader-utils" "^2.0.0" - "schema-utils" "^3.0.0" + klona "^2.0.4" + loader-utils "^2.0.0" + schema-utils "^3.0.0" -"less@^3.5.0 || ^4.0.0", "less@^4.1.1": - "integrity" "sha512-w16Xk/Ta9Hhyei0Gpz9m7VS8F28nieJaL/VyShID7cYvP6IL5oHeL6p4TXSDJqZE/lNv0oJ2pGVjJsRkfwm5FA==" - "resolved" "https://registry.npmjs.org/less/-/less-4.1.3.tgz" - "version" "4.1.3" +less@^4.1.1: + version "4.1.3" + resolved "https://registry.npmjs.org/less/-/less-4.1.3.tgz" + integrity sha512-w16Xk/Ta9Hhyei0Gpz9m7VS8F28nieJaL/VyShID7cYvP6IL5oHeL6p4TXSDJqZE/lNv0oJ2pGVjJsRkfwm5FA== dependencies: - "copy-anything" "^2.0.1" - "parse-node-version" "^1.0.1" - "tslib" "^2.3.0" + copy-anything "^2.0.1" + parse-node-version "^1.0.1" + tslib "^2.3.0" optionalDependencies: - "errno" "^0.1.1" - "graceful-fs" "^4.1.2" - "image-size" "~0.5.0" - "make-dir" "^2.1.0" - "mime" "^1.4.1" - "needle" "^3.1.0" - "source-map" "~0.6.0" + errno "^0.1.1" + graceful-fs "^4.1.2" + image-size "~0.5.0" + make-dir "^2.1.0" + mime "^1.4.1" + needle "^3.1.0" + source-map "~0.6.0" -"leven@^3.1.0": - "integrity" "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==" - "resolved" "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz" - "version" "3.1.0" +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== -"levenary@^1.1.1": - "integrity" "sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ==" - "resolved" "https://registry.npmjs.org/levenary/-/levenary-1.1.1.tgz" - "version" "1.1.1" +levenary@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/levenary/-/levenary-1.1.1.tgz" + integrity sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ== dependencies: - "leven" "^3.1.0" + leven "^3.1.0" -"levn@^0.4.1": - "integrity" "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==" - "resolved" "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz" - "version" "0.4.1" +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== dependencies: - "prelude-ls" "^1.2.1" - "type-check" "~0.4.0" + prelude-ls "^1.2.1" + type-check "~0.4.0" -"levn@~0.3.0": - "integrity" "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==" - "resolved" "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz" - "version" "0.3.0" +levn@~0.3.0: + version "0.3.0" + resolved "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz" + integrity sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA== dependencies: - "prelude-ls" "~1.1.2" - "type-check" "~0.3.2" + prelude-ls "~1.1.2" + type-check "~0.3.2" -"lilconfig@^2.0.3", "lilconfig@^2.0.5", "lilconfig@^2.0.6": - "integrity" "sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==" - "resolved" "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.6.tgz" - "version" "2.0.6" +lilconfig@^2.0.3, lilconfig@^2.0.5, lilconfig@^2.0.6: + version "2.0.6" + resolved "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.6.tgz" + integrity sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg== -"line-height@^0.1.1": - "integrity" "sha512-JDIlrJycHpYS1bY1sDwlqmOaouI2lzLXvwqitRrf+AJXpvkWUK4m0Hz6TK7F7xZSarWOMEPMN7LxsjUHU+UEpg==" - "resolved" "https://registry.npmjs.org/line-height/-/line-height-0.1.1.tgz" - "version" "0.1.1" +line-height@^0.1.1: + version "0.1.1" + resolved "https://registry.npmjs.org/line-height/-/line-height-0.1.1.tgz" + integrity sha512-JDIlrJycHpYS1bY1sDwlqmOaouI2lzLXvwqitRrf+AJXpvkWUK4m0Hz6TK7F7xZSarWOMEPMN7LxsjUHU+UEpg== dependencies: - "computed-style" "~0.1.3" + computed-style "~0.1.3" -"lines-and-columns@^1.1.6": - "integrity" "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" - "resolved" "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz" - "version" "1.2.4" +lines-and-columns@^1.1.6: + version "1.2.4" + resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz" + integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== -"load-json-file@^1.0.0": - "integrity" "sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==" - "resolved" "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz" - "version" "1.1.0" +load-json-file@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz" + integrity sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A== dependencies: - "graceful-fs" "^4.1.2" - "parse-json" "^2.2.0" - "pify" "^2.0.0" - "pinkie-promise" "^2.0.0" - "strip-bom" "^2.0.0" + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + pinkie-promise "^2.0.0" + strip-bom "^2.0.0" -"load-json-file@^4.0.0": - "integrity" "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==" - "resolved" "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz" - "version" "4.0.0" +load-json-file@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz" + integrity sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw== dependencies: - "graceful-fs" "^4.1.2" - "parse-json" "^4.0.0" - "pify" "^3.0.0" - "strip-bom" "^3.0.0" + graceful-fs "^4.1.2" + parse-json "^4.0.0" + pify "^3.0.0" + strip-bom "^3.0.0" -"load-script@^1.0.0": - "integrity" "sha512-kPEjMFtZvwL9TaZo0uZ2ml+Ye9HUMmPwbYRJ324qF9tqMejwykJ5ggTyvzmrbBeapCAbk98BSbTeovHEEP1uCA==" - "resolved" "https://registry.npmjs.org/load-script/-/load-script-1.0.0.tgz" - "version" "1.0.0" +load-script@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/load-script/-/load-script-1.0.0.tgz" + integrity sha512-kPEjMFtZvwL9TaZo0uZ2ml+Ye9HUMmPwbYRJ324qF9tqMejwykJ5ggTyvzmrbBeapCAbk98BSbTeovHEEP1uCA== -"loader-fs-cache@^1.0.2": - "integrity" "sha512-ldcgZpjNJj71n+2Mf6yetz+c9bM4xpKtNds4LbqXzU/PTdeAX0g3ytnU1AJMEcTk2Lex4Smpe3Q/eCTsvUBxbA==" - "resolved" "https://registry.npmjs.org/loader-fs-cache/-/loader-fs-cache-1.0.3.tgz" - "version" "1.0.3" +loader-fs-cache@^1.0.2: + version "1.0.3" + resolved "https://registry.npmjs.org/loader-fs-cache/-/loader-fs-cache-1.0.3.tgz" + integrity sha512-ldcgZpjNJj71n+2Mf6yetz+c9bM4xpKtNds4LbqXzU/PTdeAX0g3ytnU1AJMEcTk2Lex4Smpe3Q/eCTsvUBxbA== dependencies: - "find-cache-dir" "^0.1.1" - "mkdirp" "^0.5.1" + find-cache-dir "^0.1.1" + mkdirp "^0.5.1" -"loader-runner@^2.4.0": - "integrity" "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==" - "resolved" "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz" - "version" "2.4.0" +loader-runner@^2.4.0: + version "2.4.0" + resolved "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz" + integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== -"loader-runner@^4.2.0": - "integrity" "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==" - "resolved" "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz" - "version" "4.3.0" +loader-runner@^4.2.0: + version "4.3.0" + resolved "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz" + integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== -"loader-utils@^1.1.0", "loader-utils@^1.2.3": - "integrity" "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==" - "resolved" "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz" - "version" "1.4.2" +loader-utils@1.2.3: + version "1.2.3" + resolved "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz" + integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA== dependencies: - "big.js" "^5.2.2" - "emojis-list" "^3.0.0" - "json5" "^1.0.1" + big.js "^5.2.2" + emojis-list "^2.0.0" + json5 "^1.0.1" -"loader-utils@^2.0.0": - "integrity" "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==" - "resolved" "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz" - "version" "2.0.4" +loader-utils@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz" + integrity sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ== dependencies: - "big.js" "^5.2.2" - "emojis-list" "^3.0.0" - "json5" "^2.1.2" + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^2.1.2" -"loader-utils@^2.0.3": - "integrity" "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==" - "resolved" "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz" - "version" "2.0.4" +loader-utils@^1.1.0, loader-utils@^1.2.3: + version "1.4.2" + resolved "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz" + integrity sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg== dependencies: - "big.js" "^5.2.2" - "emojis-list" "^3.0.0" - "json5" "^2.1.2" + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^1.0.1" -"loader-utils@^3.2.0": - "integrity" "sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==" - "resolved" "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.1.tgz" - "version" "3.2.1" - -"loader-utils@1.2.3": - "integrity" "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==" - "resolved" "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz" - "version" "1.2.3" +loader-utils@^2.0.0, loader-utils@^2.0.3: + version "2.0.4" + resolved "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz" + integrity sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw== dependencies: - "big.js" "^5.2.2" - "emojis-list" "^2.0.0" - "json5" "^1.0.1" + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^2.1.2" -"loader-utils@2.0.0": - "integrity" "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==" - "resolved" "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz" - "version" "2.0.0" +loader-utils@^3.2.0: + version "3.2.1" + resolved "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.1.tgz" + integrity sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw== + +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz" + integrity sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA== dependencies: - "big.js" "^5.2.2" - "emojis-list" "^3.0.0" - "json5" "^2.1.2" + p-locate "^2.0.0" + path-exists "^3.0.0" -"locate-path@^2.0.0": - "integrity" "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==" - "resolved" "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz" - "version" "2.0.0" +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== dependencies: - "p-locate" "^2.0.0" - "path-exists" "^3.0.0" + p-locate "^3.0.0" + path-exists "^3.0.0" -"locate-path@^3.0.0": - "integrity" "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==" - "resolved" "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz" - "version" "3.0.0" +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== dependencies: - "p-locate" "^3.0.0" - "path-exists" "^3.0.0" + p-locate "^4.1.0" -"locate-path@^5.0.0": - "integrity" "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==" - "resolved" "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz" - "version" "5.0.0" +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== dependencies: - "p-locate" "^4.1.0" + p-locate "^5.0.0" -"locate-path@^6.0.0": - "integrity" "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==" - "resolved" "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz" - "version" "6.0.0" +lodash._reinterpolate@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz" + integrity sha512-xYHt68QRoYGjeeM/XOE1uJtvXQAgvszfBhjV4yvsQH0u2i9I6cI6c6/eG4Hh3UAOVn0y/xAXwmTzEay49Q//HA== + +lodash.debounce@^4.0.8: + version "4.0.8" + resolved "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz" + integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== + +lodash.escape@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/lodash.escape/-/lodash.escape-4.0.1.tgz" + integrity sha512-nXEOnb/jK9g0DYMr1/Xvq6l5xMD7GDG55+GSYIYmS0G4tBk/hURD4JR9WCavs04t33WmJx9kCyp9vJ+mr4BOUw== + +lodash.flattendeep@^4.4.0: + version "4.4.0" + resolved "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz" + integrity sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ== + +lodash.get@^4.4.2: + version "4.4.2" + resolved "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz" + integrity sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ== + +lodash.isequal@^4.5.0: + version "4.5.0" + resolved "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz" + integrity sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ== + +lodash.memoize@^4.1.2: + version "4.1.2" + resolved "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz" + integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== + +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + +lodash.sortby@^4.7.0: + version "4.7.0" + resolved "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz" + integrity sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA== + +lodash.template@^4.4.0: + version "4.5.0" + resolved "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz" + integrity sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A== dependencies: - "p-locate" "^5.0.0" + lodash._reinterpolate "^3.0.0" + lodash.templatesettings "^4.0.0" -"lodash._reinterpolate@^3.0.0": - "integrity" "sha512-xYHt68QRoYGjeeM/XOE1uJtvXQAgvszfBhjV4yvsQH0u2i9I6cI6c6/eG4Hh3UAOVn0y/xAXwmTzEay49Q//HA==" - "resolved" "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz" - "version" "3.0.0" - -"lodash.debounce@^4.0.8": - "integrity" "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" - "resolved" "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz" - "version" "4.0.8" - -"lodash.escape@^4.0.1": - "integrity" "sha512-nXEOnb/jK9g0DYMr1/Xvq6l5xMD7GDG55+GSYIYmS0G4tBk/hURD4JR9WCavs04t33WmJx9kCyp9vJ+mr4BOUw==" - "resolved" "https://registry.npmjs.org/lodash.escape/-/lodash.escape-4.0.1.tgz" - "version" "4.0.1" - -"lodash.flattendeep@^4.4.0": - "integrity" "sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ==" - "resolved" "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz" - "version" "4.4.0" - -"lodash.get@^4.4.2": - "integrity" "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==" - "resolved" "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz" - "version" "4.4.2" - -"lodash.isequal@^4.5.0": - "integrity" "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==" - "resolved" "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz" - "version" "4.5.0" - -"lodash.memoize@^4.1.2": - "integrity" "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==" - "resolved" "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz" - "version" "4.1.2" - -"lodash.merge@^4.6.2": - "integrity" "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" - "resolved" "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz" - "version" "4.6.2" - -"lodash.sortby@^4.7.0": - "integrity" "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==" - "resolved" "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz" - "version" "4.7.0" - -"lodash.template@^4.4.0": - "integrity" "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==" - "resolved" "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz" - "version" "4.5.0" +lodash.templatesettings@^4.0.0: + version "4.2.0" + resolved "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz" + integrity sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ== dependencies: - "lodash._reinterpolate" "^3.0.0" - "lodash.templatesettings" "^4.0.0" + lodash._reinterpolate "^3.0.0" -"lodash.templatesettings@^4.0.0": - "integrity" "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==" - "resolved" "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz" - "version" "4.2.0" +lodash.uniq@4.5.0, lodash.uniq@^4.5.0: + version "4.5.0" + resolved "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz" + integrity sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ== + +lodash@4.17.11: + version "4.17.11" + resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz" + integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg== + +lodash@^4.0.0, lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.7.0: + version "4.17.21" + resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +loglevel-plugin-prefix@^0.8.4: + version "0.8.4" + resolved "https://registry.npmjs.org/loglevel-plugin-prefix/-/loglevel-plugin-prefix-0.8.4.tgz" + integrity sha512-WpG9CcFAOjz/FtNht+QJeGpvVl/cdR6P0z6OcXSkr8wFJOsV2GRj2j10JLfjuA4aYkcKCNIEqRGCyTife9R8/g== + +loglevel@^1.7.1: + version "1.8.1" + resolved "https://registry.npmjs.org/loglevel/-/loglevel-1.8.1.tgz" + integrity sha512-tCRIJM51SHjAayKwC+QAg8hT8vg6z7GSgLJKGvzuPb1Wc+hLzqtuVLxp6/HzSPOozuK+8ErAhy7U/sVzw8Dgfg== + +loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3.1, loose-envify@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== dependencies: - "lodash._reinterpolate" "^3.0.0" + js-tokens "^3.0.0 || ^4.0.0" -"lodash.uniq@^4.5.0", "lodash.uniq@4.5.0": - "integrity" "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==" - "resolved" "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz" - "version" "4.5.0" - -"lodash@^4.0.0", "lodash@^4.17.11", "lodash@^4.17.13", "lodash@^4.17.15", "lodash@^4.17.19", "lodash@^4.17.20", "lodash@^4.17.21", "lodash@^4.17.4", "lodash@^4.17.5", "lodash@^4.7.0": - "integrity" "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - "resolved" "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" - "version" "4.17.21" - -"lodash@4.17.11": - "integrity" "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" - "resolved" "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz" - "version" "4.17.11" - -"loglevel-plugin-prefix@^0.8.4": - "integrity" "sha512-WpG9CcFAOjz/FtNht+QJeGpvVl/cdR6P0z6OcXSkr8wFJOsV2GRj2j10JLfjuA4aYkcKCNIEqRGCyTife9R8/g==" - "resolved" "https://registry.npmjs.org/loglevel-plugin-prefix/-/loglevel-plugin-prefix-0.8.4.tgz" - "version" "0.8.4" - -"loglevel@^1.7.1": - "integrity" "sha512-tCRIJM51SHjAayKwC+QAg8hT8vg6z7GSgLJKGvzuPb1Wc+hLzqtuVLxp6/HzSPOozuK+8ErAhy7U/sVzw8Dgfg==" - "resolved" "https://registry.npmjs.org/loglevel/-/loglevel-1.8.1.tgz" - "version" "1.8.1" - -"loose-envify@^1.0.0", "loose-envify@^1.1.0", "loose-envify@^1.2.0", "loose-envify@^1.3.1", "loose-envify@^1.4.0": - "integrity" "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==" - "resolved" "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz" - "version" "1.4.0" +loud-rejection@^1.0.0: + version "1.6.0" + resolved "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz" + integrity sha512-RPNliZOFkqFumDhvYqOaNY4Uz9oJM2K9tC6JWsJJsNdhuONW4LQHRBpb0qf4pJApVffI5N39SwzWZJuEhfd7eQ== dependencies: - "js-tokens" "^3.0.0 || ^4.0.0" + currently-unhandled "^0.4.1" + signal-exit "^3.0.0" -"loud-rejection@^1.0.0": - "integrity" "sha512-RPNliZOFkqFumDhvYqOaNY4Uz9oJM2K9tC6JWsJJsNdhuONW4LQHRBpb0qf4pJApVffI5N39SwzWZJuEhfd7eQ==" - "resolved" "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz" - "version" "1.6.0" +lower-case@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz" + integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== dependencies: - "currently-unhandled" "^0.4.1" - "signal-exit" "^3.0.0" + tslib "^2.0.3" -"lower-case@^2.0.2": - "integrity" "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==" - "resolved" "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz" - "version" "2.0.2" +lowercase-keys@^1.0.0, lowercase-keys@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz" + integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== + +lowercase-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz" + integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== + +lowlight@^1.17.0: + version "1.20.0" + resolved "https://registry.npmjs.org/lowlight/-/lowlight-1.20.0.tgz" + integrity sha512-8Ktj+prEb1RoCPkEOrPMYUN/nCggB7qAWe3a7OpMjWQkh3l2RD5wKRQ+o8Q8YuI9RG/xs95waaI/E6ym/7NsTw== dependencies: - "tslib" "^2.0.3" + fault "^1.0.0" + highlight.js "~10.7.0" -"lowercase-keys@^1.0.0", "lowercase-keys@^1.0.1": - "integrity" "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" - "resolved" "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz" - "version" "1.0.1" - -"lowercase-keys@^2.0.0": - "integrity" "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" - "resolved" "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz" - "version" "2.0.0" - -"lowlight@^1.17.0": - "integrity" "sha512-8Ktj+prEb1RoCPkEOrPMYUN/nCggB7qAWe3a7OpMjWQkh3l2RD5wKRQ+o8Q8YuI9RG/xs95waaI/E6ym/7NsTw==" - "resolved" "https://registry.npmjs.org/lowlight/-/lowlight-1.20.0.tgz" - "version" "1.20.0" +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== dependencies: - "fault" "^1.0.0" - "highlight.js" "~10.7.0" + yallist "^3.0.2" -"lru-cache@^5.1.1": - "integrity" "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==" - "resolved" "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz" - "version" "5.1.1" +lru-cache@^6.0.0: + 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" "^3.0.2" + yallist "^4.0.0" -"lru-cache@^6.0.0": - "integrity" "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==" - "resolved" "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz" - "version" "6.0.0" +lz-string@^1.4.4: + version "1.4.4" + resolved "https://registry.npmjs.org/lz-string/-/lz-string-1.4.4.tgz" + integrity sha512-0ckx7ZHRPqb0oUm8zNr+90mtf9DQB60H1wMCjBtfi62Kl3a7JbHob6gA2bC+xRvZoOL+1hzUK8jeuEIQE8svEQ== + +magic-string@^0.25.0, magic-string@^0.25.7: + version "0.25.9" + resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz" + integrity sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ== dependencies: - "yallist" "^4.0.0" + sourcemap-codec "^1.4.8" -"lz-string@^1.4.4": - "integrity" "sha512-0ckx7ZHRPqb0oUm8zNr+90mtf9DQB60H1wMCjBtfi62Kl3a7JbHob6gA2bC+xRvZoOL+1hzUK8jeuEIQE8svEQ==" - "resolved" "https://registry.npmjs.org/lz-string/-/lz-string-1.4.4.tgz" - "version" "1.4.4" - -"magic-string@^0.25.0", "magic-string@^0.25.7": - "integrity" "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==" - "resolved" "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz" - "version" "0.25.9" +make-dir@^2.0.0, make-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz" + integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== dependencies: - "sourcemap-codec" "^1.4.8" + pify "^4.0.1" + semver "^5.6.0" -"make-dir@^2.0.0", "make-dir@^2.1.0": - "integrity" "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==" - "resolved" "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz" - "version" "2.1.0" +make-dir@^3.0.0, make-dir@^3.0.2, make-dir@^3.1.0: + 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: - "pify" "^4.0.1" - "semver" "^5.6.0" + semver "^6.0.0" -"make-dir@^3.0.0": - "integrity" "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==" - "resolved" "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz" - "version" "3.1.0" +make-error@^1.1.1: + version "1.3.6" + resolved "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz" + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== + +makeerror@1.0.12: + version "1.0.12" + resolved "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz" + integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== dependencies: - "semver" "^6.0.0" + tmpl "1.0.5" -"make-dir@^3.0.2", "make-dir@^3.1.0": - "integrity" "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==" - "resolved" "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz" - "version" "3.1.0" +map-age-cleaner@^0.1.3: + version "0.1.3" + resolved "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz" + integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w== dependencies: - "semver" "^6.0.0" + p-defer "^1.0.0" -"make-error@^1.1.1": - "integrity" "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==" - "resolved" "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz" - "version" "1.3.6" +map-cache@^0.2.2: + version "0.2.2" + resolved "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz" + integrity sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg== -"makeerror@1.0.12": - "integrity" "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==" - "resolved" "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz" - "version" "1.0.12" +map-o@^2.0.1: + version "2.0.10" + resolved "https://registry.npmjs.org/map-o/-/map-o-2.0.10.tgz" + integrity sha512-BxazE81fVByHWasyXhqKeo2m7bFKYu+ZbEfiuexMOnklXW+tzDvnlTi/JaklEeuuwqcqJzPaf9q+TWptSGXeLg== dependencies: - "tmpl" "1.0.5" + iterate-object "^1.3.0" -"map-age-cleaner@^0.1.3": - "integrity" "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==" - "resolved" "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz" - "version" "0.1.3" +map-obj@^1.0.0, map-obj@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz" + integrity sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg== + +map-or-similar@^1.5.0: + version "1.5.0" + resolved "https://registry.npmjs.org/map-or-similar/-/map-or-similar-1.5.0.tgz" + integrity sha512-0aF7ZmVon1igznGI4VS30yugpduQW3y3GkcgGJOp7d8x8QrizhigUxjI/m2UojsXXto+jLAH3KSz+xOJTiORjg== + +map-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz" + integrity sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w== dependencies: - "p-defer" "^1.0.0" + object-visit "^1.0.0" -"map-cache@^0.2.2": - "integrity" "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==" - "resolved" "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz" - "version" "0.2.2" - -"map-o@^2.0.1": - "integrity" "sha512-BxazE81fVByHWasyXhqKeo2m7bFKYu+ZbEfiuexMOnklXW+tzDvnlTi/JaklEeuuwqcqJzPaf9q+TWptSGXeLg==" - "resolved" "https://registry.npmjs.org/map-o/-/map-o-2.0.10.tgz" - "version" "2.0.10" +markdown-draft-js@^2.3.0: + version "2.4.0" + resolved "https://registry.npmjs.org/markdown-draft-js/-/markdown-draft-js-2.4.0.tgz" + integrity sha512-MalOqajYYaELKLPHLnUcaU7kwhIHveVdKd15SKBkDkWj1NBLHuM5uZjXQ5TDfM4rrk4tcAzIvwWhCJzdGNcmkg== dependencies: - "iterate-object" "^1.3.0" + remarkable "^2.0.1" -"map-obj@^1.0.0", "map-obj@^1.0.1": - "integrity" "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==" - "resolved" "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz" - "version" "1.0.1" +markdown-escapes@^1.0.0: + version "1.0.4" + resolved "https://registry.npmjs.org/markdown-escapes/-/markdown-escapes-1.0.4.tgz" + integrity sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg== -"map-or-similar@^1.5.0": - "integrity" "sha512-0aF7ZmVon1igznGI4VS30yugpduQW3y3GkcgGJOp7d8x8QrizhigUxjI/m2UojsXXto+jLAH3KSz+xOJTiORjg==" - "resolved" "https://registry.npmjs.org/map-or-similar/-/map-or-similar-1.5.0.tgz" - "version" "1.5.0" +markdown-to-jsx@^7.1.5: + version "7.1.7" + resolved "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-7.1.7.tgz" + integrity sha512-VI3TyyHlGkO8uFle0IOibzpO1c1iJDcXcS/zBrQrXQQvJ2tpdwVzVZ7XdKsyRz1NdRmre4dqQkMZzUHaKIG/1w== -"map-visit@^1.0.0": - "integrity" "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==" - "resolved" "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz" - "version" "1.0.0" +material-ui-chip-input@^2.0.0-beta.2: + version "2.0.0-beta.2" + resolved "https://registry.npmjs.org/material-ui-chip-input/-/material-ui-chip-input-2.0.0-beta.2.tgz" + integrity sha512-E+Jxv9FdAvYUsZIPohoqxqdW7LwFYOCunInJGh2WSDJ2IlCUdpCOEVazqgLQH6thaFarKDu44uGYpD1v3RdqDg== dependencies: - "object-visit" "^1.0.0" + clsx "^1.0.4" + prop-types "^15.6.1" -"markdown-draft-js@^2.3.0": - "integrity" "sha512-MalOqajYYaELKLPHLnUcaU7kwhIHveVdKd15SKBkDkWj1NBLHuM5uZjXQ5TDfM4rrk4tcAzIvwWhCJzdGNcmkg==" - "resolved" "https://registry.npmjs.org/markdown-draft-js/-/markdown-draft-js-2.4.0.tgz" - "version" "2.4.0" +math-random@^1.0.1: + version "1.0.4" + resolved "https://registry.npmjs.org/math-random/-/math-random-1.0.4.tgz" + integrity sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A== + +md5.js@^1.3.4: + version "1.3.5" + resolved "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz" + integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== dependencies: - "remarkable" "^2.0.1" + hash-base "^3.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" -"markdown-escapes@^1.0.0": - "integrity" "sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg==" - "resolved" "https://registry.npmjs.org/markdown-escapes/-/markdown-escapes-1.0.4.tgz" - "version" "1.0.4" - -"markdown-to-jsx@^7.1.5": - "integrity" "sha512-VI3TyyHlGkO8uFle0IOibzpO1c1iJDcXcS/zBrQrXQQvJ2tpdwVzVZ7XdKsyRz1NdRmre4dqQkMZzUHaKIG/1w==" - "resolved" "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-7.1.7.tgz" - "version" "7.1.7" - -"material-ui-chip-input@^2.0.0-beta.2": - "integrity" "sha512-E+Jxv9FdAvYUsZIPohoqxqdW7LwFYOCunInJGh2WSDJ2IlCUdpCOEVazqgLQH6thaFarKDu44uGYpD1v3RdqDg==" - "resolved" "https://registry.npmjs.org/material-ui-chip-input/-/material-ui-chip-input-2.0.0-beta.2.tgz" - "version" "2.0.0-beta.2" +mdast-squeeze-paragraphs@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/mdast-squeeze-paragraphs/-/mdast-squeeze-paragraphs-4.0.0.tgz" + integrity sha512-zxdPn69hkQ1rm4J+2Cs2j6wDEv7O17TfXTJ33tl/+JPIoEmtV9t2ZzBM5LPHE8QlHsmVD8t3vPKCyY3oH+H8MQ== dependencies: - "clsx" "^1.0.4" - "prop-types" "^15.6.1" + unist-util-remove "^2.0.0" -"math-random@^1.0.1": - "integrity" "sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A==" - "resolved" "https://registry.npmjs.org/math-random/-/math-random-1.0.4.tgz" - "version" "1.0.4" - -"md5.js@^1.3.4": - "integrity" "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==" - "resolved" "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz" - "version" "1.3.5" +mdast-util-definitions@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-4.0.0.tgz" + integrity sha512-k8AJ6aNnUkB7IE+5azR9h81O5EQ/cTDXtWdMq9Kk5KcEW/8ritU5CeLg/9HhOC++nALHBlaogJ5jz0Ybk3kPMQ== dependencies: - "hash-base" "^3.0.0" - "inherits" "^2.0.1" - "safe-buffer" "^5.1.2" + unist-util-visit "^2.0.0" -"mdast-squeeze-paragraphs@^4.0.0": - "integrity" "sha512-zxdPn69hkQ1rm4J+2Cs2j6wDEv7O17TfXTJ33tl/+JPIoEmtV9t2ZzBM5LPHE8QlHsmVD8t3vPKCyY3oH+H8MQ==" - "resolved" "https://registry.npmjs.org/mdast-squeeze-paragraphs/-/mdast-squeeze-paragraphs-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "unist-util-remove" "^2.0.0" - -"mdast-util-definitions@^4.0.0": - "integrity" "sha512-k8AJ6aNnUkB7IE+5azR9h81O5EQ/cTDXtWdMq9Kk5KcEW/8ritU5CeLg/9HhOC++nALHBlaogJ5jz0Ybk3kPMQ==" - "resolved" "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "unist-util-visit" "^2.0.0" - -"mdast-util-to-hast@10.0.1": - "integrity" "sha512-BW3LM9SEMnjf4HXXVApZMt8gLQWVNXc3jryK0nJu/rOXPOnlkUjmdkDlmxMirpbU9ILncGFIwLH/ubnWBbcdgA==" - "resolved" "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-10.0.1.tgz" - "version" "10.0.1" +mdast-util-to-hast@10.0.1: + version "10.0.1" + resolved "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-10.0.1.tgz" + integrity sha512-BW3LM9SEMnjf4HXXVApZMt8gLQWVNXc3jryK0nJu/rOXPOnlkUjmdkDlmxMirpbU9ILncGFIwLH/ubnWBbcdgA== dependencies: "@types/mdast" "^3.0.0" "@types/unist" "^2.0.0" - "mdast-util-definitions" "^4.0.0" - "mdurl" "^1.0.0" - "unist-builder" "^2.0.0" - "unist-util-generated" "^1.0.0" - "unist-util-position" "^3.0.0" - "unist-util-visit" "^2.0.0" + mdast-util-definitions "^4.0.0" + mdurl "^1.0.0" + unist-builder "^2.0.0" + unist-util-generated "^1.0.0" + unist-util-position "^3.0.0" + unist-util-visit "^2.0.0" -"mdast-util-to-string@^1.0.0": - "integrity" "sha512-jVU0Nr2B9X3MU4tSK7JP1CMkSvOj7X5l/GboG1tKRw52lLF1x2Ju92Ms9tNetCcbfX3hzlM73zYo2NKkWSfF/A==" - "resolved" "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-1.1.0.tgz" - "version" "1.1.0" +mdast-util-to-string@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-1.1.0.tgz" + integrity sha512-jVU0Nr2B9X3MU4tSK7JP1CMkSvOj7X5l/GboG1tKRw52lLF1x2Ju92Ms9tNetCcbfX3hzlM73zYo2NKkWSfF/A== -"mdn-data@2.0.14": - "integrity" "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==" - "resolved" "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz" - "version" "2.0.14" +mdn-data@2.0.14: + version "2.0.14" + resolved "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz" + integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== -"mdn-data@2.0.4": - "integrity" "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==" - "resolved" "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz" - "version" "2.0.4" +mdn-data@2.0.4: + version "2.0.4" + resolved "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz" + integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA== -"mdurl@^1.0.0": - "integrity" "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==" - "resolved" "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz" - "version" "1.0.1" +mdurl@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz" + integrity sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g== -"media-typer@0.3.0": - "integrity" "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==" - "resolved" "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" - "version" "0.3.0" +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" + integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== -"mem@^8.1.1": - "integrity" "sha512-qFCFUDs7U3b8mBDPyz5EToEKoAkgCzqquIgi9nkkR9bixxOVOre+09lbuH7+9Kn2NFpm56M3GUWVbU2hQgdACA==" - "resolved" "https://registry.npmjs.org/mem/-/mem-8.1.1.tgz" - "version" "8.1.1" +mem@^8.1.1: + version "8.1.1" + resolved "https://registry.npmjs.org/mem/-/mem-8.1.1.tgz" + integrity sha512-qFCFUDs7U3b8mBDPyz5EToEKoAkgCzqquIgi9nkkR9bixxOVOre+09lbuH7+9Kn2NFpm56M3GUWVbU2hQgdACA== dependencies: - "map-age-cleaner" "^0.1.3" - "mimic-fn" "^3.1.0" + map-age-cleaner "^0.1.3" + mimic-fn "^3.1.0" -"memfs@^3.1.2", "memfs@^3.2.2", "memfs@^3.4.3": - "integrity" "sha512-BcjuQn6vfqP+k100e0E9m61Hyqa//Brp+I3f0OBmN0ATHlFA8vx3Lt8z57R3u2bPqe3WGDBC+nF72fTH7isyEw==" - "resolved" "https://registry.npmjs.org/memfs/-/memfs-3.4.12.tgz" - "version" "3.4.12" +memfs@^3.1.2, memfs@^3.2.2, memfs@^3.4.3: + version "3.4.12" + resolved "https://registry.npmjs.org/memfs/-/memfs-3.4.12.tgz" + integrity sha512-BcjuQn6vfqP+k100e0E9m61Hyqa//Brp+I3f0OBmN0ATHlFA8vx3Lt8z57R3u2bPqe3WGDBC+nF72fTH7isyEw== dependencies: - "fs-monkey" "^1.0.3" + fs-monkey "^1.0.3" -"memoize-one@^4.0.0": - "integrity" "sha512-QmpUu4KqDmX0plH4u+tf0riMc1KHE1+lw95cMrLlXQAFOx/xnBtwhZ52XJxd9X2O6kwKBqX32kmhbhlobD0cuw==" - "resolved" "https://registry.npmjs.org/memoize-one/-/memoize-one-4.0.3.tgz" - "version" "4.0.3" +memoize-one@^4.0.0: + version "4.0.3" + resolved "https://registry.npmjs.org/memoize-one/-/memoize-one-4.0.3.tgz" + integrity sha512-QmpUu4KqDmX0plH4u+tf0riMc1KHE1+lw95cMrLlXQAFOx/xnBtwhZ52XJxd9X2O6kwKBqX32kmhbhlobD0cuw== -"memoize-one@^5.0.0", "memoize-one@^5.1.1": - "integrity" "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==" - "resolved" "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz" - "version" "5.2.1" +memoize-one@^5.0.0, memoize-one@^5.1.1: + version "5.2.1" + resolved "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz" + integrity sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q== -"memoizerific@^1.11.3": - "integrity" "sha512-/EuHYwAPdLtXwAwSZkh/Gutery6pD2KYd44oQLhAvQp/50mpyduZh8Q7PYHXTCJ+wuXxt7oij2LXyIJOOYFPog==" - "resolved" "https://registry.npmjs.org/memoizerific/-/memoizerific-1.11.3.tgz" - "version" "1.11.3" +memoizerific@^1.11.3: + version "1.11.3" + resolved "https://registry.npmjs.org/memoizerific/-/memoizerific-1.11.3.tgz" + integrity sha512-/EuHYwAPdLtXwAwSZkh/Gutery6pD2KYd44oQLhAvQp/50mpyduZh8Q7PYHXTCJ+wuXxt7oij2LXyIJOOYFPog== dependencies: - "map-or-similar" "^1.5.0" + map-or-similar "^1.5.0" -"memory-fs@^0.4.1": - "integrity" "sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ==" - "resolved" "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz" - "version" "0.4.1" +memory-fs@^0.4.1: + version "0.4.1" + resolved "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz" + integrity sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ== dependencies: - "errno" "^0.1.3" - "readable-stream" "^2.0.1" + errno "^0.1.3" + readable-stream "^2.0.1" -"memory-fs@^0.5.0": - "integrity" "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==" - "resolved" "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz" - "version" "0.5.0" +memory-fs@^0.5.0: + version "0.5.0" + resolved "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz" + integrity sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA== dependencies: - "errno" "^0.1.3" - "readable-stream" "^2.0.1" + errno "^0.1.3" + readable-stream "^2.0.1" -"meow@^3.1.0": - "integrity" "sha512-TNdwZs0skRlpPpCUK25StC4VH+tP5GgeY1HQOOGP+lQ2xtdkN2VtT/5tiX9k3IWpkBPV9b3LsAWXn4GGi/PrSA==" - "resolved" "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz" - "version" "3.7.0" +meow@^3.1.0: + version "3.7.0" + resolved "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz" + integrity sha512-TNdwZs0skRlpPpCUK25StC4VH+tP5GgeY1HQOOGP+lQ2xtdkN2VtT/5tiX9k3IWpkBPV9b3LsAWXn4GGi/PrSA== dependencies: - "camelcase-keys" "^2.0.0" - "decamelize" "^1.1.2" - "loud-rejection" "^1.0.0" - "map-obj" "^1.0.1" - "minimist" "^1.1.3" - "normalize-package-data" "^2.3.4" - "object-assign" "^4.0.1" - "read-pkg-up" "^1.0.1" - "redent" "^1.0.0" - "trim-newlines" "^1.0.0" + camelcase-keys "^2.0.0" + decamelize "^1.1.2" + loud-rejection "^1.0.0" + map-obj "^1.0.1" + minimist "^1.1.3" + normalize-package-data "^2.3.4" + object-assign "^4.0.1" + read-pkg-up "^1.0.1" + redent "^1.0.0" + trim-newlines "^1.0.0" -"merge-deep@^3.0.2": - "integrity" "sha512-qtmzAS6t6grwEkNrunqTBdn0qKwFgNWvlxUbAV8es9M7Ot1EbyApytCnvE0jALPa46ZpKDUo527kKiaWplmlFA==" - "resolved" "https://registry.npmjs.org/merge-deep/-/merge-deep-3.0.3.tgz" - "version" "3.0.3" +merge-deep@^3.0.2: + version "3.0.3" + resolved "https://registry.npmjs.org/merge-deep/-/merge-deep-3.0.3.tgz" + integrity sha512-qtmzAS6t6grwEkNrunqTBdn0qKwFgNWvlxUbAV8es9M7Ot1EbyApytCnvE0jALPa46ZpKDUo527kKiaWplmlFA== dependencies: - "arr-union" "^3.1.0" - "clone-deep" "^0.2.4" - "kind-of" "^3.0.2" + arr-union "^3.1.0" + clone-deep "^0.2.4" + kind-of "^3.0.2" -"merge-descriptors@1.0.1": - "integrity" "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" - "resolved" "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz" - "version" "1.0.1" +merge-descriptors@1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz" + integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== -"merge-stream@^2.0.0": - "integrity" "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" - "resolved" "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz" - "version" "2.0.0" +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== -"merge2@^1.2.3", "merge2@^1.3.0", "merge2@^1.4.1": - "integrity" "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" - "resolved" "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" - "version" "1.4.1" +merge2@^1.2.3, merge2@^1.3.0, merge2@^1.4.1: + version "1.4.1" + resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== -"methods@~1.1.2": - "integrity" "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==" - "resolved" "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz" - "version" "1.1.2" +methods@~1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz" + integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== -"microevent.ts@~0.1.1": - "integrity" "sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g==" - "resolved" "https://registry.npmjs.org/microevent.ts/-/microevent.ts-0.1.1.tgz" - "version" "0.1.1" +microevent.ts@~0.1.1: + version "0.1.1" + resolved "https://registry.npmjs.org/microevent.ts/-/microevent.ts-0.1.1.tgz" + integrity sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g== -"micromatch@^2.1.5": - "integrity" "sha512-LnU2XFEk9xxSJ6rfgAry/ty5qwUTyHYOBU0g4R6tIw5ljwgGIBmiKhRWLw5NpMOnrgUNcDJ4WMp8rl3sYVHLNA==" - "resolved" "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz" - "version" "2.3.11" +micromatch@^2.1.5: + version "2.3.11" + resolved "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz" + integrity sha512-LnU2XFEk9xxSJ6rfgAry/ty5qwUTyHYOBU0g4R6tIw5ljwgGIBmiKhRWLw5NpMOnrgUNcDJ4WMp8rl3sYVHLNA== dependencies: - "arr-diff" "^2.0.0" - "array-unique" "^0.2.1" - "braces" "^1.8.2" - "expand-brackets" "^0.1.4" - "extglob" "^0.3.1" - "filename-regex" "^2.0.0" - "is-extglob" "^1.0.0" - "is-glob" "^2.0.1" - "kind-of" "^3.0.2" - "normalize-path" "^2.0.1" - "object.omit" "^2.0.0" - "parse-glob" "^3.0.4" - "regex-cache" "^0.4.2" + arr-diff "^2.0.0" + array-unique "^0.2.1" + braces "^1.8.2" + expand-brackets "^0.1.4" + extglob "^0.3.1" + filename-regex "^2.0.0" + is-extglob "^1.0.0" + is-glob "^2.0.1" + kind-of "^3.0.2" + normalize-path "^2.0.1" + object.omit "^2.0.0" + parse-glob "^3.0.4" + regex-cache "^0.4.2" -"micromatch@^3.1.10", "micromatch@^3.1.4": - "integrity" "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==" - "resolved" "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz" - "version" "3.1.10" +micromatch@^3.1.10, micromatch@^3.1.4: + version "3.1.10" + resolved "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz" + integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== dependencies: - "arr-diff" "^4.0.0" - "array-unique" "^0.3.2" - "braces" "^2.3.1" - "define-property" "^2.0.2" - "extend-shallow" "^3.0.2" - "extglob" "^2.0.4" - "fragment-cache" "^0.2.1" - "kind-of" "^6.0.2" - "nanomatch" "^1.2.9" - "object.pick" "^1.3.0" - "regex-not" "^1.0.0" - "snapdragon" "^0.8.1" - "to-regex" "^3.0.2" + arr-diff "^4.0.0" + array-unique "^0.3.2" + braces "^2.3.1" + define-property "^2.0.2" + extend-shallow "^3.0.2" + extglob "^2.0.4" + fragment-cache "^0.2.1" + kind-of "^6.0.2" + nanomatch "^1.2.9" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.2" -"micromatch@^4.0.2", "micromatch@^4.0.4", "micromatch@^4.0.5": - "integrity" "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==" - "resolved" "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz" - "version" "4.0.5" +micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5: + version "4.0.5" + resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== dependencies: - "braces" "^3.0.2" - "picomatch" "^2.3.1" + braces "^3.0.2" + picomatch "^2.3.1" -"miller-rabin@^4.0.0": - "integrity" "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==" - "resolved" "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz" - "version" "4.0.1" +miller-rabin@^4.0.0: + version "4.0.1" + resolved "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz" + integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== dependencies: - "bn.js" "^4.0.0" - "brorand" "^1.0.1" + bn.js "^4.0.0" + brorand "^1.0.1" -"mime-db@>= 1.43.0 < 2", "mime-db@1.52.0": - "integrity" "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" - "resolved" "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" - "version" "1.52.0" +mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": + version "1.52.0" + resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== -"mime-types@^2.1.12", "mime-types@^2.1.25", "mime-types@^2.1.27", "mime-types@^2.1.30", "mime-types@^2.1.31", "mime-types@~2.1.17", "mime-types@~2.1.19", "mime-types@~2.1.24", "mime-types@~2.1.34": - "integrity" "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==" - "resolved" "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" - "version" "2.1.35" +mime-types@^2.1.12, mime-types@^2.1.25, mime-types@^2.1.27, mime-types@^2.1.30, mime-types@^2.1.31, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24, mime-types@~2.1.34: + version "2.1.35" + resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== dependencies: - "mime-db" "1.52.0" + mime-db "1.52.0" -"mime@^1.4.1", "mime@1.6.0": - "integrity" "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" - "resolved" "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz" - "version" "1.6.0" +mime@1.6.0, mime@^1.4.1: + version "1.6.0" + resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== -"mime@^2.0.3": - "integrity" "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==" - "resolved" "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz" - "version" "2.6.0" +mime@^2.0.3, mime@^2.4.4: + version "2.6.0" + resolved "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz" + integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== -"mime@^2.4.4": - "integrity" "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==" - "resolved" "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz" - "version" "2.6.0" +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== -"mimic-fn@^2.1.0": - "integrity" "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" - "resolved" "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz" - "version" "2.1.0" +mimic-fn@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-3.1.0.tgz" + integrity sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ== -"mimic-fn@^3.1.0": - "integrity" "sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ==" - "resolved" "https://registry.npmjs.org/mimic-fn/-/mimic-fn-3.1.0.tgz" - "version" "3.1.0" +mimic-response@^1.0.0, mimic-response@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz" + integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== -"mimic-response@^1.0.0", "mimic-response@^1.0.1": - "integrity" "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" - "resolved" "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz" - "version" "1.0.1" - -"min-document@^2.19.0": - "integrity" "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==" - "resolved" "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz" - "version" "2.19.0" +min-document@^2.19.0: + version "2.19.0" + resolved "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz" + integrity sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ== dependencies: - "dom-walk" "^0.1.0" + dom-walk "^0.1.0" -"min-indent@^1.0.0": - "integrity" "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==" - "resolved" "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz" - "version" "1.0.1" +min-indent@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz" + integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== -"mini-css-extract-plugin@^2.4.5": - "integrity" "sha512-auqtVo8KhTScMsba7MbijqZTfibbXiBNlPAQbsVt7enQfcDYLdgG57eGxMqwVU3mfeWANY4F1wUg+rMF+ycZgw==" - "resolved" "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.0.tgz" - "version" "2.7.0" +mini-css-extract-plugin@0.12.0: + version "0.12.0" + resolved "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.12.0.tgz" + integrity sha512-z6PQCe9rd1XUwZ8gMaEVwwRyZlrYy8Ba1gRjFP5HcV51HkXX+XlwZ+a1iAYTjSYwgNBXoNR7mhx79mDpOn5fdw== dependencies: - "schema-utils" "^4.0.0" + loader-utils "^1.1.0" + normalize-url "1.9.1" + schema-utils "^1.0.0" + webpack-sources "^1.1.0" -"mini-css-extract-plugin@0.12.0": - "integrity" "sha512-z6PQCe9rd1XUwZ8gMaEVwwRyZlrYy8Ba1gRjFP5HcV51HkXX+XlwZ+a1iAYTjSYwgNBXoNR7mhx79mDpOn5fdw==" - "resolved" "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.12.0.tgz" - "version" "0.12.0" +mini-css-extract-plugin@^2.4.5: + version "2.7.0" + resolved "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.0.tgz" + integrity sha512-auqtVo8KhTScMsba7MbijqZTfibbXiBNlPAQbsVt7enQfcDYLdgG57eGxMqwVU3mfeWANY4F1wUg+rMF+ycZgw== dependencies: - "loader-utils" "^1.1.0" - "normalize-url" "1.9.1" - "schema-utils" "^1.0.0" - "webpack-sources" "^1.1.0" + schema-utils "^4.0.0" -"mini-svg-data-uri@^1.2.3": - "integrity" "sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==" - "resolved" "https://registry.npmjs.org/mini-svg-data-uri/-/mini-svg-data-uri-1.4.4.tgz" - "version" "1.4.4" +mini-svg-data-uri@^1.2.3: + version "1.4.4" + resolved "https://registry.npmjs.org/mini-svg-data-uri/-/mini-svg-data-uri-1.4.4.tgz" + integrity sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg== -"minimalistic-assert@^1.0.0", "minimalistic-assert@^1.0.1": - "integrity" "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" - "resolved" "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz" - "version" "1.0.1" +minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== -"minimalistic-crypto-utils@^1.0.1": - "integrity" "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==" - "resolved" "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz" - "version" "1.0.1" +minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz" + integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== -"minimatch@^3.0.2", "minimatch@^3.0.4", "minimatch@^3.0.5", "minimatch@^3.1.1", "minimatch@^3.1.2": - "integrity" "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==" - "resolved" "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" - "version" "3.1.2" +minimatch@3.0.4: + 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" + brace-expansion "^1.1.7" -"minimatch@^5.0.1": - "integrity" "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==" - "resolved" "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz" - "version" "5.1.0" +minimatch@^3.0.2, minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: + version "3.1.2" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== dependencies: - "brace-expansion" "^2.0.1" + brace-expansion "^1.1.7" -"minimatch@3.0.4": - "integrity" "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==" - "resolved" "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz" - "version" "3.0.4" +minimatch@^5.0.1: + version "5.1.0" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz" + integrity sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg== dependencies: - "brace-expansion" "^1.1.7" + brace-expansion "^2.0.1" -"minimist@^1.1.1", "minimist@^1.1.3", "minimist@^1.2.0", "minimist@^1.2.5", "minimist@^1.2.6": - "integrity" "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==" - "resolved" "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz" - "version" "1.2.7" +minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6: + version "1.2.7" + resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz" + integrity sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g== -"minimongo@^6.10.0": - "integrity" "sha512-i1t7z9H3F0d7v0EsfN7QFOxM99vR/6BmvPtBjfdUGhgekRdI0EYRCBCxl0VwOPnCFeADzCPvkiuXCEFiVysUCg==" - "resolved" "https://registry.npmjs.org/minimongo/-/minimongo-6.12.6.tgz" - "version" "6.12.6" +minimongo@^6.10.0: + version "6.12.6" + resolved "https://registry.npmjs.org/minimongo/-/minimongo-6.12.6.tgz" + integrity sha512-i1t7z9H3F0d7v0EsfN7QFOxM99vR/6BmvPtBjfdUGhgekRdI0EYRCBCxl0VwOPnCFeADzCPvkiuXCEFiVysUCg== dependencies: "@turf/boolean-crosses" "^6.0.1" "@turf/boolean-point-in-polygon" "^6.0.1" "@turf/boolean-within" "^6.0.1" "@turf/intersect" "^6.1.3" - "async" "^1.4.2" - "bowser" "^0.7.1" - "idb-wrapper" "^1.4.1" - "jquery" "^3.6.0" - "js-sha1" "^0.6.0" - "lodash" "^4.0.0" + async "^1.4.2" + bowser "^0.7.1" + idb-wrapper "^1.4.1" + jquery "^3.6.0" + js-sha1 "^0.6.0" + lodash "^4.0.0" -"minipass-collect@^1.0.2": - "integrity" "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==" - "resolved" "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz" - "version" "1.0.2" +minipass-collect@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz" + integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== dependencies: - "minipass" "^3.0.0" + minipass "^3.0.0" -"minipass-flush@^1.0.5": - "integrity" "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==" - "resolved" "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz" - "version" "1.0.5" +minipass-flush@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz" + integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== dependencies: - "minipass" "^3.0.0" + minipass "^3.0.0" -"minipass-pipeline@^1.2.2": - "integrity" "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==" - "resolved" "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz" - "version" "1.2.4" +minipass-pipeline@^1.2.2: + version "1.2.4" + resolved "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz" + integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== dependencies: - "minipass" "^3.0.0" + minipass "^3.0.0" -"minipass@^3.0.0", "minipass@^3.1.1": - "integrity" "sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==" - "resolved" "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz" - "version" "3.3.4" +minipass@^3.0.0, minipass@^3.1.1: + version "3.3.4" + resolved "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz" + integrity sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw== dependencies: - "yallist" "^4.0.0" + yallist "^4.0.0" -"minizlib@^2.1.1": - "integrity" "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==" - "resolved" "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz" - "version" "2.1.2" +minizlib@^2.1.1: + 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" + minipass "^3.0.0" + yallist "^4.0.0" -"mississippi@^3.0.0": - "integrity" "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==" - "resolved" "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz" - "version" "3.0.0" +mississippi@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz" + integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA== dependencies: - "concat-stream" "^1.5.0" - "duplexify" "^3.4.2" - "end-of-stream" "^1.1.0" - "flush-write-stream" "^1.0.0" - "from2" "^2.1.0" - "parallel-transform" "^1.1.0" - "pump" "^3.0.0" - "pumpify" "^1.3.3" - "stream-each" "^1.1.0" - "through2" "^2.0.0" + concat-stream "^1.5.0" + duplexify "^3.4.2" + end-of-stream "^1.1.0" + flush-write-stream "^1.0.0" + from2 "^2.1.0" + parallel-transform "^1.1.0" + pump "^3.0.0" + pumpify "^1.3.3" + stream-each "^1.1.0" + through2 "^2.0.0" -"mixin-deep@^1.2.0": - "integrity" "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==" - "resolved" "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz" - "version" "1.3.2" +mixin-deep@^1.2.0: + version "1.3.2" + resolved "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz" + integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== dependencies: - "for-in" "^1.0.2" - "is-extendable" "^1.0.1" + for-in "^1.0.2" + is-extendable "^1.0.1" -"mixin-object@^2.0.1": - "integrity" "sha512-ALGF1Jt9ouehcaXaHhn6t1yGWRqGaHkPFndtFVHfZXOvkIZ/yoGaSi0AHVTafb3ZBGg4dr/bDwnaEKqCXzchMA==" - "resolved" "https://registry.npmjs.org/mixin-object/-/mixin-object-2.0.1.tgz" - "version" "2.0.1" +mixin-object@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/mixin-object/-/mixin-object-2.0.1.tgz" + integrity sha512-ALGF1Jt9ouehcaXaHhn6t1yGWRqGaHkPFndtFVHfZXOvkIZ/yoGaSi0AHVTafb3ZBGg4dr/bDwnaEKqCXzchMA== dependencies: - "for-in" "^0.1.3" - "is-extendable" "^0.1.1" + for-in "^0.1.3" + is-extendable "^0.1.1" -"mkdirp@^0.5.1", "mkdirp@^0.5.3", "mkdirp@^0.5.4", "mkdirp@~0.5.1": - "integrity" "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==" - "resolved" "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz" - "version" "0.5.6" +mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.4, mkdirp@~0.5.1: + version "0.5.6" + resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz" + integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== dependencies: - "minimist" "^1.2.6" + minimist "^1.2.6" -"mkdirp@^1.0.3": - "integrity" "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" - "resolved" "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz" - "version" "1.0.4" +mkdirp@^1.0.3, mkdirp@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== -"mkdirp@^1.0.4": - "integrity" "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" - "resolved" "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz" - "version" "1.0.4" - -"moment-timezone@^0.5.25", "moment-timezone@^0.5.4": - "integrity" "sha512-hoB6suq4ISDj7BDgctiOy6zljBsdYT0++0ZzZm9rtxIvJhIbQ3nmbgSWe7dNFGurl6/7b1OUkHlmN9JWgXVz7w==" - "resolved" "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.39.tgz" - "version" "0.5.39" +moment-timezone@^0.5.4: + version "0.5.39" + resolved "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.39.tgz" + integrity sha512-hoB6suq4ISDj7BDgctiOy6zljBsdYT0++0ZzZm9rtxIvJhIbQ3nmbgSWe7dNFGurl6/7b1OUkHlmN9JWgXVz7w== dependencies: - "moment" ">= 2.9.0" + moment ">= 2.9.0" -"moment@^2.24.0", "moment@^2.29.2", "moment@^2.29.4", "moment@>= 2.9.0": - "integrity" "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==" - "resolved" "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz" - "version" "2.29.4" +"moment@>= 2.9.0", moment@^2.24.0, moment@^2.29.2, moment@^2.29.4: + version "2.29.4" + resolved "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz" + integrity sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w== -"moo@^0.5.0": - "integrity" "sha512-iSAJLHYKnX41mKcJKjqvnAN9sf0LMDTXDEvFv+ffuRR9a1MIuXLjMNL6EsnDHSkKLTWNqQQ5uo61P4EbU4NU+Q==" - "resolved" "https://registry.npmjs.org/moo/-/moo-0.5.2.tgz" - "version" "0.5.2" +moo@^0.5.0: + version "0.5.2" + resolved "https://registry.npmjs.org/moo/-/moo-0.5.2.tgz" + integrity sha512-iSAJLHYKnX41mKcJKjqvnAN9sf0LMDTXDEvFv+ffuRR9a1MIuXLjMNL6EsnDHSkKLTWNqQQ5uo61P4EbU4NU+Q== -"move-concurrently@^1.0.1": - "integrity" "sha512-hdrFxZOycD/g6A6SoI2bB5NA/5NEqD0569+S47WZhPvm46sD50ZHdYaFmnua5lndde9rCHGjmfK7Z8BuCt/PcQ==" - "resolved" "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz" - "version" "1.0.1" +move-concurrently@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz" + integrity sha512-hdrFxZOycD/g6A6SoI2bB5NA/5NEqD0569+S47WZhPvm46sD50ZHdYaFmnua5lndde9rCHGjmfK7Z8BuCt/PcQ== dependencies: - "aproba" "^1.1.1" - "copy-concurrently" "^1.0.0" - "fs-write-stream-atomic" "^1.0.8" - "mkdirp" "^0.5.1" - "rimraf" "^2.5.4" - "run-queue" "^1.0.3" + aproba "^1.1.1" + copy-concurrently "^1.0.0" + fs-write-stream-atomic "^1.0.8" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^1.0.3" -"ms@^2.1.1", "ms@2.1.2": - "integrity" "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - "resolved" "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" - "version" "2.1.2" +ms@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" + integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== -"ms@2.0.0": - "integrity" "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - "resolved" "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" - "version" "2.0.0" +ms@2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz" + integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== -"ms@2.1.1": - "integrity" "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" - "resolved" "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz" - "version" "2.1.1" +ms@2.1.2, ms@^2.1.1: + version "2.1.2" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -"ms@2.1.3": - "integrity" "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - "resolved" "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" - "version" "2.1.3" +ms@2.1.3: + version "2.1.3" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== -"multicast-dns@^7.2.5": - "integrity" "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==" - "resolved" "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz" - "version" "7.2.5" +multicast-dns@^7.2.5: + version "7.2.5" + resolved "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz" + integrity sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg== dependencies: - "dns-packet" "^5.2.2" - "thunky" "^1.0.2" + dns-packet "^5.2.2" + thunky "^1.0.2" -"nan@^2.12.1": - "integrity" "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==" - "resolved" "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz" - "version" "2.17.0" +nan@^2.12.1: + version "2.17.0" + resolved "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz" + integrity sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ== -"nanoid@^3.3.1", "nanoid@^3.3.4": - "integrity" "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==" - "resolved" "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz" - "version" "3.3.4" +nanoid@^3.3.1, nanoid@^3.3.4: + version "3.3.4" + resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz" + integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw== -"nanomatch@^1.2.9": - "integrity" "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==" - "resolved" "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz" - "version" "1.2.13" +nanomatch@^1.2.9: + version "1.2.13" + resolved "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz" + integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== dependencies: - "arr-diff" "^4.0.0" - "array-unique" "^0.3.2" - "define-property" "^2.0.2" - "extend-shallow" "^3.0.2" - "fragment-cache" "^0.2.1" - "is-windows" "^1.0.2" - "kind-of" "^6.0.2" - "object.pick" "^1.3.0" - "regex-not" "^1.0.0" - "snapdragon" "^0.8.1" - "to-regex" "^3.0.1" + arr-diff "^4.0.0" + array-unique "^0.3.2" + define-property "^2.0.2" + extend-shallow "^3.0.2" + fragment-cache "^0.2.1" + is-windows "^1.0.2" + kind-of "^6.0.2" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" -"native-url@^0.2.6": - "integrity" "sha512-k4bDC87WtgrdD362gZz6zoiXQrl40kYlBmpfmSjwRO1VU0V5ccwJTlxuE72F6m3V0vc1xOf6n3UCP9QyerRqmA==" - "resolved" "https://registry.npmjs.org/native-url/-/native-url-0.2.6.tgz" - "version" "0.2.6" +native-url@^0.2.6: + version "0.2.6" + resolved "https://registry.npmjs.org/native-url/-/native-url-0.2.6.tgz" + integrity sha512-k4bDC87WtgrdD362gZz6zoiXQrl40kYlBmpfmSjwRO1VU0V5ccwJTlxuE72F6m3V0vc1xOf6n3UCP9QyerRqmA== dependencies: - "querystring" "^0.2.0" + querystring "^0.2.0" -"natural-compare-lite@^1.4.0": - "integrity" "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==" - "resolved" "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz" - "version" "1.4.0" +natural-compare-lite@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz" + integrity sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g== -"natural-compare@^1.4.0": - "integrity" "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" - "resolved" "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" - "version" "1.4.0" +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" + integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== -"nearley@^2.7.10": - "integrity" "sha512-+Mc8UaAebFzgV+KpI5n7DasuuQCHA89dmwm7JXw3TV43ukfNQ9DnBH3Mdb2g/I4Fdxc26pwimBWvjIw0UAILSQ==" - "resolved" "https://registry.npmjs.org/nearley/-/nearley-2.20.1.tgz" - "version" "2.20.1" +nearley@^2.7.10: + version "2.20.1" + resolved "https://registry.npmjs.org/nearley/-/nearley-2.20.1.tgz" + integrity sha512-+Mc8UaAebFzgV+KpI5n7DasuuQCHA89dmwm7JXw3TV43ukfNQ9DnBH3Mdb2g/I4Fdxc26pwimBWvjIw0UAILSQ== dependencies: - "commander" "^2.19.0" - "moo" "^0.5.0" - "railroad-diagrams" "^1.0.0" - "randexp" "0.4.6" + commander "^2.19.0" + moo "^0.5.0" + railroad-diagrams "^1.0.0" + randexp "0.4.6" -"needle@^3.1.0": - "integrity" "sha512-oUvzXnyLiVyVGoianLijF9O/RecZUf7TkBfimjGrLM4eQhXyeJwM6GeAWccwfQ9aa4gMCZKqhAOuLaMIcQxajQ==" - "resolved" "https://registry.npmjs.org/needle/-/needle-3.2.0.tgz" - "version" "3.2.0" +needle@^3.1.0: + version "3.2.0" + resolved "https://registry.npmjs.org/needle/-/needle-3.2.0.tgz" + integrity sha512-oUvzXnyLiVyVGoianLijF9O/RecZUf7TkBfimjGrLM4eQhXyeJwM6GeAWccwfQ9aa4gMCZKqhAOuLaMIcQxajQ== dependencies: - "debug" "^3.2.6" - "iconv-lite" "^0.6.3" - "sax" "^1.2.4" + debug "^3.2.6" + iconv-lite "^0.6.3" + sax "^1.2.4" -"negotiator@0.6.3": - "integrity" "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" - "resolved" "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz" - "version" "0.6.3" +negotiator@0.6.3: + version "0.6.3" + resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz" + integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== -"neo-async@^2.5.0", "neo-async@^2.6.0", "neo-async@^2.6.1", "neo-async@^2.6.2": - "integrity" "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" - "resolved" "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz" - "version" "2.6.2" +neo-async@^2.5.0, neo-async@^2.6.0, neo-async@^2.6.1, neo-async@^2.6.2: + version "2.6.2" + resolved "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== -"nested-error-stacks@^2.0.0", "nested-error-stacks@^2.1.0": - "integrity" "sha512-9iN1ka/9zmX1ZvLV9ewJYEk9h7RyRRtqdK0woXcqohu8EWIerfPUjYJPg0ULy0UqP7cslmdGc8xKDJcojlKiaw==" - "resolved" "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-2.1.1.tgz" - "version" "2.1.1" +nested-error-stacks@^2.0.0, nested-error-stacks@^2.1.0: + version "2.1.1" + resolved "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-2.1.1.tgz" + integrity sha512-9iN1ka/9zmX1ZvLV9ewJYEk9h7RyRRtqdK0woXcqohu8EWIerfPUjYJPg0ULy0UqP7cslmdGc8xKDJcojlKiaw== -"next-tick@^1.1.0": - "integrity" "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" - "resolved" "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz" - "version" "1.1.0" +next-tick@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz" + integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ== -"nice-try@^1.0.4": - "integrity" "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" - "resolved" "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz" - "version" "1.0.5" +nice-try@^1.0.4: + version "1.0.5" + resolved "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz" + integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== -"no-case@^3.0.4": - "integrity" "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==" - "resolved" "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz" - "version" "3.0.4" +no-case@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz" + integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== dependencies: - "lower-case" "^2.0.2" - "tslib" "^2.0.3" + lower-case "^2.0.2" + tslib "^2.0.3" -"node-dir@^0.1.10", "node-dir@^0.1.17": - "integrity" "sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg==" - "resolved" "https://registry.npmjs.org/node-dir/-/node-dir-0.1.17.tgz" - "version" "0.1.17" +node-dir@^0.1.10, node-dir@^0.1.17: + version "0.1.17" + resolved "https://registry.npmjs.org/node-dir/-/node-dir-0.1.17.tgz" + integrity sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg== dependencies: - "minimatch" "^3.0.2" + minimatch "^3.0.2" -"node-fetch@^2.6.1", "node-fetch@^2.6.7", "node-fetch@2.6.7": - "integrity" "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==" - "resolved" "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz" - "version" "2.6.7" +node-fetch@2.6.7, node-fetch@^2.6.1, node-fetch@^2.6.7: + version "2.6.7" + resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz" + integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== dependencies: - "whatwg-url" "^5.0.0" + whatwg-url "^5.0.0" -"node-forge@^1": - "integrity" "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==" - "resolved" "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz" - "version" "1.3.1" +node-forge@^1: + version "1.3.1" + resolved "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz" + integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== -"node-int64@^0.4.0": - "integrity" "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==" - "resolved" "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz" - "version" "0.4.0" +node-int64@^0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz" + integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== -"node-libs-browser@^2.2.1": - "integrity" "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==" - "resolved" "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz" - "version" "2.2.1" +node-libs-browser@^2.2.1: + version "2.2.1" + resolved "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz" + integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== dependencies: - "assert" "^1.1.1" - "browserify-zlib" "^0.2.0" - "buffer" "^4.3.0" - "console-browserify" "^1.1.0" - "constants-browserify" "^1.0.0" - "crypto-browserify" "^3.11.0" - "domain-browser" "^1.1.1" - "events" "^3.0.0" - "https-browserify" "^1.0.0" - "os-browserify" "^0.3.0" - "path-browserify" "0.0.1" - "process" "^0.11.10" - "punycode" "^1.2.4" - "querystring-es3" "^0.2.0" - "readable-stream" "^2.3.3" - "stream-browserify" "^2.0.1" - "stream-http" "^2.7.2" - "string_decoder" "^1.0.0" - "timers-browserify" "^2.0.4" - "tty-browserify" "0.0.0" - "url" "^0.11.0" - "util" "^0.11.0" - "vm-browserify" "^1.0.1" + assert "^1.1.1" + browserify-zlib "^0.2.0" + buffer "^4.3.0" + console-browserify "^1.1.0" + constants-browserify "^1.0.0" + crypto-browserify "^3.11.0" + domain-browser "^1.1.1" + events "^3.0.0" + https-browserify "^1.0.0" + os-browserify "^0.3.0" + path-browserify "0.0.1" + process "^0.11.10" + punycode "^1.2.4" + querystring-es3 "^0.2.0" + readable-stream "^2.3.3" + stream-browserify "^2.0.1" + stream-http "^2.7.2" + string_decoder "^1.0.0" + timers-browserify "^2.0.4" + tty-browserify "0.0.0" + url "^0.11.0" + util "^0.11.0" + vm-browserify "^1.0.1" -"node-releases@^1.1.61": - "integrity" "sha512-rB1DUFUNAN4Gn9keO2K1efO35IDK7yKHCdCaIMvFO7yUYmmZYeDjnGKle26G4rwj+LKRQpjyUUvMkPglwGCYNQ==" - "resolved" "https://registry.npmjs.org/node-releases/-/node-releases-1.1.77.tgz" - "version" "1.1.77" +node-releases@^1.1.61: + version "1.1.77" + resolved "https://registry.npmjs.org/node-releases/-/node-releases-1.1.77.tgz" + integrity sha512-rB1DUFUNAN4Gn9keO2K1efO35IDK7yKHCdCaIMvFO7yUYmmZYeDjnGKle26G4rwj+LKRQpjyUUvMkPglwGCYNQ== -"node-releases@^2.0.6": - "integrity" "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==" - "resolved" "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz" - "version" "2.0.6" +node-releases@^2.0.6: + version "2.0.6" + resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz" + integrity sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg== -"normalize-package-data@^2.3.2", "normalize-package-data@^2.3.4", "normalize-package-data@^2.5.0": - "integrity" "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==" - "resolved" "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz" - "version" "2.5.0" +normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.5.0: + version "2.5.0" + resolved "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz" + integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== dependencies: - "hosted-git-info" "^2.1.4" - "resolve" "^1.10.0" - "semver" "2 || 3 || 4 || 5" - "validate-npm-package-license" "^3.0.1" + hosted-git-info "^2.1.4" + resolve "^1.10.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" -"normalize-path@^2.0.0", "normalize-path@^2.0.1": - "integrity" "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==" - "resolved" "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz" - "version" "2.1.1" +normalize-path@^2.0.0, normalize-path@^2.0.1, normalize-path@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz" + integrity sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w== dependencies: - "remove-trailing-separator" "^1.0.1" + remove-trailing-separator "^1.0.1" -"normalize-path@^2.1.1": - "integrity" "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==" - "resolved" "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz" - "version" "2.1.1" +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz" + integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA== + +normalize-url@1.9.1: + version "1.9.1" + resolved "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz" + integrity sha512-A48My/mtCklowHBlI8Fq2jFWK4tX4lJ5E6ytFsSOq1fzpvT0SQSgKhSg7lN5c2uYFOrUAOQp6zhhJnpp1eMloQ== dependencies: - "remove-trailing-separator" "^1.0.1" + object-assign "^4.0.1" + prepend-http "^1.0.0" + query-string "^4.1.0" + sort-keys "^1.0.0" -"normalize-path@^3.0.0", "normalize-path@~3.0.0": - "integrity" "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" - "resolved" "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" - "version" "3.0.0" +normalize-url@^3.0.0: + version "3.3.0" + resolved "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz" + integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg== -"normalize-range@^0.1.2": - "integrity" "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==" - "resolved" "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz" - "version" "0.1.2" +normalize-url@^4.1.0: + version "4.5.1" + resolved "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz" + integrity sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA== -"normalize-url@^3.0.0": - "integrity" "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==" - "resolved" "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz" - "version" "3.3.0" +normalize-url@^6.0.1: + version "6.1.0" + resolved "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz" + integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== -"normalize-url@^4.1.0": - "integrity" "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==" - "resolved" "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz" - "version" "4.5.1" - -"normalize-url@^6.0.1": - "integrity" "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==" - "resolved" "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz" - "version" "6.1.0" - -"normalize-url@1.9.1": - "integrity" "sha512-A48My/mtCklowHBlI8Fq2jFWK4tX4lJ5E6ytFsSOq1fzpvT0SQSgKhSg7lN5c2uYFOrUAOQp6zhhJnpp1eMloQ==" - "resolved" "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz" - "version" "1.9.1" +npm-run-path@^2.0.0: + version "2.0.2" + resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz" + integrity sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw== dependencies: - "object-assign" "^4.0.1" - "prepend-http" "^1.0.0" - "query-string" "^4.1.0" - "sort-keys" "^1.0.0" + path-key "^2.0.0" -"npm-run-path@^2.0.0": - "integrity" "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==" - "resolved" "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz" - "version" "2.0.2" +npm-run-path@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== dependencies: - "path-key" "^2.0.0" + path-key "^3.0.0" -"npm-run-path@^4.0.1": - "integrity" "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==" - "resolved" "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz" - "version" "4.0.1" +npmlog@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz" + integrity sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw== dependencies: - "path-key" "^3.0.0" + are-we-there-yet "^2.0.0" + console-control-strings "^1.1.0" + gauge "^3.0.0" + set-blocking "^2.0.0" -"npmlog@^5.0.1": - "integrity" "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==" - "resolved" "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz" - "version" "5.0.1" +nth-check@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz" + integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== dependencies: - "are-we-there-yet" "^2.0.0" - "console-control-strings" "^1.1.0" - "gauge" "^3.0.0" - "set-blocking" "^2.0.0" + boolbase "~1.0.0" -"nth-check@^1.0.2": - "integrity" "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==" - "resolved" "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz" - "version" "1.0.2" +nth-check@^2.0.1: + version "2.1.1" + resolved "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz" + integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== dependencies: - "boolbase" "~1.0.0" + boolbase "^1.0.0" -"nth-check@^2.0.1": - "integrity" "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==" - "resolved" "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz" - "version" "2.1.1" +num2fraction@^1.2.2: + version "1.2.2" + resolved "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz" + integrity sha512-Y1wZESM7VUThYY+4W+X4ySH2maqcA+p7UR+w8VWNWVAd6lwuXXWz/w/Cz43J/dI2I+PS6wD5N+bJUF+gjWvIqg== + +nwsapi@^2.1.3, nwsapi@^2.2.0: + version "2.2.2" + resolved "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.2.tgz" + integrity sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw== + +oauth-sign@~0.9.0: + version "0.9.0" + resolved "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz" + integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== + +object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== + +object-copy@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz" + integrity sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ== dependencies: - "boolbase" "^1.0.0" + copy-descriptor "^0.1.0" + define-property "^0.2.5" + kind-of "^3.0.3" -"num2fraction@^1.2.2": - "integrity" "sha512-Y1wZESM7VUThYY+4W+X4ySH2maqcA+p7UR+w8VWNWVAd6lwuXXWz/w/Cz43J/dI2I+PS6wD5N+bJUF+gjWvIqg==" - "resolved" "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz" - "version" "1.2.2" +object-hash@^2.0.1: + version "2.2.0" + resolved "https://registry.npmjs.org/object-hash/-/object-hash-2.2.0.tgz" + integrity sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw== -"nwsapi@^2.1.3", "nwsapi@^2.2.0": - "integrity" "sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw==" - "resolved" "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.2.tgz" - "version" "2.2.2" +object-hash@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz" + integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw== -"oauth-sign@~0.9.0": - "integrity" "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" - "resolved" "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz" - "version" "0.9.0" +object-inspect@^1.12.2, object-inspect@^1.7.0, object-inspect@^1.9.0: + version "1.12.2" + resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz" + integrity sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ== -"object-assign@^4.0.1", "object-assign@^4.1.0", "object-assign@^4.1.1": - "integrity" "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" - "resolved" "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" - "version" "4.1.1" - -"object-copy@^0.1.0": - "integrity" "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==" - "resolved" "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz" - "version" "0.1.0" +object-is@^1.0.1, object-is@^1.0.2, object-is@^1.1.2, object-is@^1.1.5: + version "1.1.5" + resolved "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz" + integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== dependencies: - "copy-descriptor" "^0.1.0" - "define-property" "^0.2.5" - "kind-of" "^3.0.3" + call-bind "^1.0.2" + define-properties "^1.1.3" -"object-hash@^2.0.1": - "integrity" "sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==" - "resolved" "https://registry.npmjs.org/object-hash/-/object-hash-2.2.0.tgz" - "version" "2.2.0" +object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== -"object-hash@^3.0.0": - "integrity" "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==" - "resolved" "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz" - "version" "3.0.0" - -"object-inspect@^1.12.2", "object-inspect@^1.7.0", "object-inspect@^1.9.0": - "integrity" "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==" - "resolved" "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz" - "version" "1.12.2" - -"object-is@^1.0.1", "object-is@^1.0.2", "object-is@^1.1.2", "object-is@^1.1.5": - "integrity" "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==" - "resolved" "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz" - "version" "1.1.5" +object-visit@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz" + integrity sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA== dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.1.3" + isobject "^3.0.0" -"object-keys@^1.1.1": - "integrity" "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" - "resolved" "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz" - "version" "1.1.1" - -"object-visit@^1.0.0": - "integrity" "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==" - "resolved" "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz" - "version" "1.0.1" +object.assign@^4.1.0, object.assign@^4.1.3, object.assign@^4.1.4: + version "4.1.4" + resolved "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz" + integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ== dependencies: - "isobject" "^3.0.0" + call-bind "^1.0.2" + define-properties "^1.1.4" + has-symbols "^1.0.3" + object-keys "^1.1.1" -"object.assign@^4.1.0", "object.assign@^4.1.3", "object.assign@^4.1.4": - "integrity" "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==" - "resolved" "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz" - "version" "4.1.4" +object.entries@^1.1.0, object.entries@^1.1.1, object.entries@^1.1.2, object.entries@^1.1.6: + version "1.1.6" + resolved "https://registry.npmjs.org/object.entries/-/object.entries-1.1.6.tgz" + integrity sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w== dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.1.4" - "has-symbols" "^1.0.3" - "object-keys" "^1.1.1" + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" -"object.entries@^1.1.0", "object.entries@^1.1.1", "object.entries@^1.1.2", "object.entries@^1.1.6": - "integrity" "sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==" - "resolved" "https://registry.npmjs.org/object.entries/-/object.entries-1.1.6.tgz" - "version" "1.1.6" +"object.fromentries@^2.0.0 || ^1.0.0", object.fromentries@^2.0.5, object.fromentries@^2.0.6: + version "2.0.6" + resolved "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.6.tgz" + integrity sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg== dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.1.4" - "es-abstract" "^1.20.4" + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" -"object.fromentries@^2.0.0 || ^1.0.0", "object.fromentries@^2.0.5", "object.fromentries@^2.0.6": - "integrity" "sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==" - "resolved" "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.6.tgz" - "version" "2.0.6" +object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.0, object.getownpropertydescriptors@^2.1.2: + version "2.1.5" + resolved "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.5.tgz" + integrity sha512-yDNzckpM6ntyQiGTik1fKV1DcVDRS+w8bvpWNCBanvH5LfRX9O8WTHqQzG4RZwRAM4I0oU7TV11Lj5v0g20ibw== dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.1.4" - "es-abstract" "^1.20.4" + array.prototype.reduce "^1.0.5" + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" -"object.getownpropertydescriptors@^2.0.3", "object.getownpropertydescriptors@^2.1.0", "object.getownpropertydescriptors@^2.1.2": - "integrity" "sha512-yDNzckpM6ntyQiGTik1fKV1DcVDRS+w8bvpWNCBanvH5LfRX9O8WTHqQzG4RZwRAM4I0oU7TV11Lj5v0g20ibw==" - "resolved" "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.5.tgz" - "version" "2.1.5" +object.hasown@^1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.2.tgz" + integrity sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw== dependencies: - "array.prototype.reduce" "^1.0.5" - "call-bind" "^1.0.2" - "define-properties" "^1.1.4" - "es-abstract" "^1.20.4" + define-properties "^1.1.4" + es-abstract "^1.20.4" -"object.hasown@^1.1.2": - "integrity" "sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==" - "resolved" "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.2.tgz" - "version" "1.1.2" +object.omit@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz" + integrity sha512-UiAM5mhmIuKLsOvrL+B0U2d1hXHF3bFYWIuH1LMpuV2EJEHG1Ntz06PgLEHjm6VFd87NpH8rastvPoyv6UW2fA== dependencies: - "define-properties" "^1.1.4" - "es-abstract" "^1.20.4" + for-own "^0.1.4" + is-extendable "^0.1.1" -"object.omit@^2.0.0": - "integrity" "sha512-UiAM5mhmIuKLsOvrL+B0U2d1hXHF3bFYWIuH1LMpuV2EJEHG1Ntz06PgLEHjm6VFd87NpH8rastvPoyv6UW2fA==" - "resolved" "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz" - "version" "2.0.1" +object.pick@^1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz" + integrity sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ== dependencies: - "for-own" "^0.1.4" - "is-extendable" "^0.1.1" + isobject "^3.0.1" -"object.pick@^1.3.0": - "integrity" "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==" - "resolved" "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz" - "version" "1.3.0" +object.values@^1.1.0, object.values@^1.1.1, object.values@^1.1.3, object.values@^1.1.5, object.values@^1.1.6: + version "1.1.6" + resolved "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz" + integrity sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw== dependencies: - "isobject" "^3.0.1" + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" -"object.values@^1.1.0", "object.values@^1.1.1", "object.values@^1.1.3", "object.values@^1.1.5", "object.values@^1.1.6": - "integrity" "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==" - "resolved" "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz" - "version" "1.1.6" +objectorarray@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/objectorarray/-/objectorarray-1.0.5.tgz" + integrity sha512-eJJDYkhJFFbBBAxeh8xW+weHlkI28n2ZdQV/J/DNfWfSKlGEf2xcfAbZTv3riEXHAhL9SVOTs2pRmXiSTf78xg== + +obuf@^1.0.0, obuf@^1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz" + integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== + +oidc-client@^1.11.5: + version "1.11.5" + resolved "https://registry.npmjs.org/oidc-client/-/oidc-client-1.11.5.tgz" + integrity sha512-LcKrKC8Av0m/KD/4EFmo9Sg8fSQ+WFJWBrmtWd+tZkNn3WT/sQG3REmPANE9tzzhbjW6VkTNy4xhAXCfPApAOg== dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.1.4" - "es-abstract" "^1.20.4" + acorn "^7.4.1" + base64-js "^1.5.1" + core-js "^3.8.3" + crypto-js "^4.0.0" + serialize-javascript "^4.0.0" -"objectorarray@^1.0.5": - "integrity" "sha512-eJJDYkhJFFbBBAxeh8xW+weHlkI28n2ZdQV/J/DNfWfSKlGEf2xcfAbZTv3riEXHAhL9SVOTs2pRmXiSTf78xg==" - "resolved" "https://registry.npmjs.org/objectorarray/-/objectorarray-1.0.5.tgz" - "version" "1.0.5" - -"obuf@^1.0.0", "obuf@^1.1.2": - "integrity" "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==" - "resolved" "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz" - "version" "1.1.2" - -"oidc-client@^1.11.5": - "integrity" "sha512-LcKrKC8Av0m/KD/4EFmo9Sg8fSQ+WFJWBrmtWd+tZkNn3WT/sQG3REmPANE9tzzhbjW6VkTNy4xhAXCfPApAOg==" - "resolved" "https://registry.npmjs.org/oidc-client/-/oidc-client-1.11.5.tgz" - "version" "1.11.5" +oidc-react@^1.5.1: + version "1.5.1" + resolved "https://registry.npmjs.org/oidc-react/-/oidc-react-1.5.1.tgz" + integrity sha512-rbNfWUBRiqolht9J5tRu5HktDs8yXii1KfOBXtM9uwQNaiY0UgvIzl2h7NNOYA04TFxKtGlXkwrs9cPn28JwEg== dependencies: - "acorn" "^7.4.1" - "base64-js" "^1.5.1" - "core-js" "^3.8.3" - "crypto-js" "^4.0.0" - "serialize-javascript" "^4.0.0" + oidc-client "^1.11.5" -"oidc-react@^1.5.1": - "integrity" "sha512-rbNfWUBRiqolht9J5tRu5HktDs8yXii1KfOBXtM9uwQNaiY0UgvIzl2h7NNOYA04TFxKtGlXkwrs9cPn28JwEg==" - "resolved" "https://registry.npmjs.org/oidc-react/-/oidc-react-1.5.1.tgz" - "version" "1.5.1" +on-finished@2.4.1: + version "2.4.1" + resolved "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz" + integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== dependencies: - "oidc-client" "^1.11.5" + ee-first "1.1.1" -"on-finished@2.4.1": - "integrity" "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==" - "resolved" "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz" - "version" "2.4.1" +on-headers@~1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz" + integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== + +once@^1.3.0, once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== dependencies: - "ee-first" "1.1.1" + wrappy "1" -"on-headers@~1.0.2": - "integrity" "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==" - "resolved" "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz" - "version" "1.0.2" - -"once@^1.3.0", "once@^1.3.1", "once@^1.4.0": - "integrity" "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==" - "resolved" "https://registry.npmjs.org/once/-/once-1.4.0.tgz" - "version" "1.4.0" +onetime@^5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== dependencies: - "wrappy" "1" + mimic-fn "^2.1.0" -"onetime@^5.1.2": - "integrity" "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==" - "resolved" "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz" - "version" "5.1.2" +open@^7.0.2, open@^7.0.3: + version "7.4.2" + resolved "https://registry.npmjs.org/open/-/open-7.4.2.tgz" + integrity sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q== dependencies: - "mimic-fn" "^2.1.0" + is-docker "^2.0.0" + is-wsl "^2.1.1" -"open@^7.0.2", "open@^7.0.3": - "integrity" "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==" - "resolved" "https://registry.npmjs.org/open/-/open-7.4.2.tgz" - "version" "7.4.2" +open@^8.0.9, open@^8.4.0: + version "8.4.0" + resolved "https://registry.npmjs.org/open/-/open-8.4.0.tgz" + integrity sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q== dependencies: - "is-docker" "^2.0.0" - "is-wsl" "^2.1.1" + define-lazy-prop "^2.0.0" + is-docker "^2.1.1" + is-wsl "^2.2.0" -"open@^8.0.9": - "integrity" "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==" - "resolved" "https://registry.npmjs.org/open/-/open-8.4.0.tgz" - "version" "8.4.0" +optimize-css-assets-webpack-plugin@5.0.3: + version "5.0.3" + resolved "https://registry.npmjs.org/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.3.tgz" + integrity sha512-q9fbvCRS6EYtUKKSwI87qm2IxlyJK5b4dygW1rKUBT6mMDhdG5e5bZT63v6tnJR9F9FB/H5a0HTmtw+laUBxKA== dependencies: - "define-lazy-prop" "^2.0.0" - "is-docker" "^2.1.1" - "is-wsl" "^2.2.0" + cssnano "^4.1.10" + last-call-webpack-plugin "^3.0.0" -"open@^8.4.0": - "integrity" "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==" - "resolved" "https://registry.npmjs.org/open/-/open-8.4.0.tgz" - "version" "8.4.0" +optionator@^0.8.1: + version "0.8.3" + resolved "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz" + integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== dependencies: - "define-lazy-prop" "^2.0.0" - "is-docker" "^2.1.1" - "is-wsl" "^2.2.0" + deep-is "~0.1.3" + fast-levenshtein "~2.0.6" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + word-wrap "~1.2.3" -"optimize-css-assets-webpack-plugin@5.0.3": - "integrity" "sha512-q9fbvCRS6EYtUKKSwI87qm2IxlyJK5b4dygW1rKUBT6mMDhdG5e5bZT63v6tnJR9F9FB/H5a0HTmtw+laUBxKA==" - "resolved" "https://registry.npmjs.org/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.3.tgz" - "version" "5.0.3" +optionator@^0.9.1: + version "0.9.1" + resolved "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz" + integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== dependencies: - "cssnano" "^4.1.10" - "last-call-webpack-plugin" "^3.0.0" + 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" -"optionator@^0.8.1": - "integrity" "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==" - "resolved" "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz" - "version" "0.8.3" +os-browserify@^0.3.0: + version "0.3.0" + resolved "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz" + integrity sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A== + +os-homedir@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz" + integrity sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ== + +os-tmpdir@^1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz" + integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== + +output-file-sync@^1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/output-file-sync/-/output-file-sync-1.1.2.tgz" + integrity sha512-uQLlclru4xpCi+tfs80l3QF24KL81X57ELNMy7W/dox+JTtxUf1bLyQ8968fFCmSqqbokjW0kn+WBIlO+rSkNg== dependencies: - "deep-is" "~0.1.3" - "fast-levenshtein" "~2.0.6" - "levn" "~0.3.0" - "prelude-ls" "~1.1.2" - "type-check" "~0.3.2" - "word-wrap" "~1.2.3" + graceful-fs "^4.1.4" + mkdirp "^0.5.1" + object-assign "^4.1.0" -"optionator@^0.9.1": - "integrity" "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==" - "resolved" "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz" - "version" "0.9.1" +p-all@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/p-all/-/p-all-2.1.0.tgz" + integrity sha512-HbZxz5FONzz/z2gJfk6bFca0BCiSRF8jU3yCsWOen/vR6lZjfPOu/e7L3uFzTW1i0H8TlC3vqQstEJPQL4/uLA== 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-map "^2.0.0" -"os-browserify@^0.3.0": - "integrity" "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==" - "resolved" "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz" - "version" "0.3.0" +p-cancelable@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz" + integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== -"os-homedir@^1.0.0": - "integrity" "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==" - "resolved" "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz" - "version" "1.0.2" +p-defer@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz" + integrity sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw== -"os-tmpdir@^1.0.1": - "integrity" "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==" - "resolved" "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz" - "version" "1.0.2" - -"output-file-sync@^1.1.2": - "integrity" "sha512-uQLlclru4xpCi+tfs80l3QF24KL81X57ELNMy7W/dox+JTtxUf1bLyQ8968fFCmSqqbokjW0kn+WBIlO+rSkNg==" - "resolved" "https://registry.npmjs.org/output-file-sync/-/output-file-sync-1.1.2.tgz" - "version" "1.1.2" +p-event@^4.1.0: + version "4.2.0" + resolved "https://registry.npmjs.org/p-event/-/p-event-4.2.0.tgz" + integrity sha512-KXatOjCRXXkSePPb1Nbi0p0m+gQAwdlbhi4wQKJPI1HsMQS9g+Sqp2o+QHziPr7eYJyOZet836KoHEVM1mwOrQ== dependencies: - "graceful-fs" "^4.1.4" - "mkdirp" "^0.5.1" - "object-assign" "^4.1.0" + p-timeout "^3.1.0" -"p-all@^2.1.0": - "integrity" "sha512-HbZxz5FONzz/z2gJfk6bFca0BCiSRF8jU3yCsWOen/vR6lZjfPOu/e7L3uFzTW1i0H8TlC3vqQstEJPQL4/uLA==" - "resolved" "https://registry.npmjs.org/p-all/-/p-all-2.1.0.tgz" - "version" "2.1.0" +p-filter@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/p-filter/-/p-filter-2.1.0.tgz" + integrity sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw== dependencies: - "p-map" "^2.0.0" + p-map "^2.0.0" -"p-cancelable@^1.0.0": - "integrity" "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==" - "resolved" "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz" - "version" "1.1.0" +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz" + integrity sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow== -"p-defer@^1.0.0": - "integrity" "sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw==" - "resolved" "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz" - "version" "1.0.0" - -"p-event@^4.1.0": - "integrity" "sha512-KXatOjCRXXkSePPb1Nbi0p0m+gQAwdlbhi4wQKJPI1HsMQS9g+Sqp2o+QHziPr7eYJyOZet836KoHEVM1mwOrQ==" - "resolved" "https://registry.npmjs.org/p-event/-/p-event-4.2.0.tgz" - "version" "4.2.0" +p-limit@^1.1.0: + version "1.3.0" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz" + integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== dependencies: - "p-timeout" "^3.1.0" + p-try "^1.0.0" -"p-filter@^2.1.0": - "integrity" "sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==" - "resolved" "https://registry.npmjs.org/p-filter/-/p-filter-2.1.0.tgz" - "version" "2.1.0" +p-limit@^2.0.0, p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== dependencies: - "p-map" "^2.0.0" + p-try "^2.0.0" -"p-finally@^1.0.0": - "integrity" "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==" - "resolved" "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz" - "version" "1.0.0" - -"p-limit@^1.1.0": - "integrity" "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==" - "resolved" "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz" - "version" "1.3.0" +p-limit@^3.0.2: + version "3.1.0" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== dependencies: - "p-try" "^1.0.0" + yocto-queue "^0.1.0" -"p-limit@^2.0.0", "p-limit@^2.2.0": - "integrity" "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==" - "resolved" "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" - "version" "2.3.0" +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz" + integrity sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg== dependencies: - "p-try" "^2.0.0" + p-limit "^1.1.0" -"p-limit@^3.0.2": - "integrity" "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==" - "resolved" "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz" - "version" "3.1.0" +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== dependencies: - "yocto-queue" "^0.1.0" + p-limit "^2.0.0" -"p-locate@^2.0.0": - "integrity" "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==" - "resolved" "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz" - "version" "2.0.0" +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== dependencies: - "p-limit" "^1.1.0" + p-limit "^2.2.0" -"p-locate@^3.0.0": - "integrity" "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==" - "resolved" "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz" - "version" "3.0.0" +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== dependencies: - "p-limit" "^2.0.0" + p-limit "^3.0.2" -"p-locate@^4.1.0": - "integrity" "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==" - "resolved" "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz" - "version" "4.1.0" +p-map@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz" + integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== + +p-map@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz" + integrity sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ== dependencies: - "p-limit" "^2.2.0" + aggregate-error "^3.0.0" -"p-locate@^5.0.0": - "integrity" "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==" - "resolved" "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz" - "version" "5.0.0" +p-map@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz" + integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== dependencies: - "p-limit" "^3.0.2" + aggregate-error "^3.0.0" -"p-map@^2.0.0": - "integrity" "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==" - "resolved" "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz" - "version" "2.1.0" - -"p-map@^3.0.0": - "integrity" "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==" - "resolved" "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "aggregate-error" "^3.0.0" - -"p-map@^4.0.0": - "integrity" "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==" - "resolved" "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "aggregate-error" "^3.0.0" - -"p-retry@^4.5.0": - "integrity" "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==" - "resolved" "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz" - "version" "4.6.2" +p-retry@^4.5.0: + version "4.6.2" + resolved "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz" + integrity sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ== dependencies: "@types/retry" "0.12.0" - "retry" "^0.13.1" + retry "^0.13.1" -"p-timeout@^3.1.0": - "integrity" "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==" - "resolved" "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz" - "version" "3.2.0" +p-timeout@^3.1.0: + version "3.2.0" + resolved "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz" + integrity sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg== dependencies: - "p-finally" "^1.0.0" + p-finally "^1.0.0" -"p-try@^1.0.0": - "integrity" "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==" - "resolved" "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz" - "version" "1.0.0" +p-try@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz" + integrity sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww== -"p-try@^2.0.0": - "integrity" "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" - "resolved" "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz" - "version" "2.2.0" +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== -"package-json@^6.3.0": - "integrity" "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==" - "resolved" "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz" - "version" "6.5.0" +package-json@^6.3.0: + version "6.5.0" + resolved "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz" + integrity sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ== dependencies: - "got" "^9.6.0" - "registry-auth-token" "^4.0.0" - "registry-url" "^5.0.0" - "semver" "^6.2.0" + got "^9.6.0" + registry-auth-token "^4.0.0" + registry-url "^5.0.0" + semver "^6.2.0" -"pako@~1.0.5": - "integrity" "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" - "resolved" "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz" - "version" "1.0.11" +pako@~1.0.5: + version "1.0.11" + resolved "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz" + integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== -"parallel-transform@^1.1.0": - "integrity" "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==" - "resolved" "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz" - "version" "1.2.0" +parallel-transform@^1.1.0: + version "1.2.0" + resolved "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz" + integrity sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg== dependencies: - "cyclist" "^1.0.1" - "inherits" "^2.0.3" - "readable-stream" "^2.1.5" + cyclist "^1.0.1" + inherits "^2.0.3" + readable-stream "^2.1.5" -"param-case@^3.0.3", "param-case@^3.0.4": - "integrity" "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==" - "resolved" "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz" - "version" "3.0.4" +param-case@^3.0.3, param-case@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz" + integrity sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A== dependencies: - "dot-case" "^3.0.4" - "tslib" "^2.0.3" + dot-case "^3.0.4" + tslib "^2.0.3" -"parent-module@^1.0.0": - "integrity" "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==" - "resolved" "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz" - "version" "1.0.1" +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== dependencies: - "callsites" "^3.0.0" + callsites "^3.0.0" -"parse-asn1@^5.0.0", "parse-asn1@^5.1.5": - "integrity" "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==" - "resolved" "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz" - "version" "5.1.6" +parse-asn1@^5.0.0, parse-asn1@^5.1.5: + version "5.1.6" + resolved "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz" + integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw== dependencies: - "asn1.js" "^5.2.0" - "browserify-aes" "^1.0.0" - "evp_bytestokey" "^1.0.0" - "pbkdf2" "^3.0.3" - "safe-buffer" "^5.1.1" + asn1.js "^5.2.0" + browserify-aes "^1.0.0" + evp_bytestokey "^1.0.0" + pbkdf2 "^3.0.3" + safe-buffer "^5.1.1" -"parse-entities@^2.0.0": - "integrity" "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==" - "resolved" "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz" - "version" "2.0.0" +parse-entities@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz" + integrity sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ== dependencies: - "character-entities" "^1.0.0" - "character-entities-legacy" "^1.0.0" - "character-reference-invalid" "^1.0.0" - "is-alphanumerical" "^1.0.0" - "is-decimal" "^1.0.0" - "is-hexadecimal" "^1.0.0" + character-entities "^1.0.0" + character-entities-legacy "^1.0.0" + character-reference-invalid "^1.0.0" + is-alphanumerical "^1.0.0" + is-decimal "^1.0.0" + is-hexadecimal "^1.0.0" -"parse-glob@^3.0.4": - "integrity" "sha512-FC5TeK0AwXzq3tUBFtH74naWkPQCEWs4K+xMxWZBlKDWu0bVHXGZa+KKqxKidd7xwhdZ19ZNuF2uO1M/r196HA==" - "resolved" "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz" - "version" "3.0.4" +parse-glob@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz" + integrity sha512-FC5TeK0AwXzq3tUBFtH74naWkPQCEWs4K+xMxWZBlKDWu0bVHXGZa+KKqxKidd7xwhdZ19ZNuF2uO1M/r196HA== dependencies: - "glob-base" "^0.3.0" - "is-dotfile" "^1.0.0" - "is-extglob" "^1.0.0" - "is-glob" "^2.0.0" + glob-base "^0.3.0" + is-dotfile "^1.0.0" + is-extglob "^1.0.0" + is-glob "^2.0.0" -"parse-json@^2.2.0": - "integrity" "sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==" - "resolved" "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz" - "version" "2.2.0" +parse-json@^2.2.0: + version "2.2.0" + resolved "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz" + integrity sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ== dependencies: - "error-ex" "^1.2.0" + error-ex "^1.2.0" -"parse-json@^4.0.0": - "integrity" "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==" - "resolved" "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz" - "version" "4.0.0" +parse-json@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz" + integrity sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw== dependencies: - "error-ex" "^1.3.1" - "json-parse-better-errors" "^1.0.1" + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" -"parse-json@^5.0.0", "parse-json@^5.2.0": - "integrity" "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==" - "resolved" "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz" - "version" "5.2.0" +parse-json@^5.0.0, parse-json@^5.2.0: + version "5.2.0" + resolved "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz" + integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== dependencies: "@babel/code-frame" "^7.0.0" - "error-ex" "^1.3.1" - "json-parse-even-better-errors" "^2.3.0" - "lines-and-columns" "^1.1.6" + error-ex "^1.3.1" + json-parse-even-better-errors "^2.3.0" + lines-and-columns "^1.1.6" -"parse-node-version@^1.0.1": - "integrity" "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==" - "resolved" "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz" - "version" "1.0.1" +parse-node-version@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz" + integrity sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA== -"parse5-htmlparser2-tree-adapter@^7.0.0": - "integrity" "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==" - "resolved" "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz" - "version" "7.0.0" +parse5-htmlparser2-tree-adapter@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz" + integrity sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g== dependencies: - "domhandler" "^5.0.2" - "parse5" "^7.0.0" + domhandler "^5.0.2" + parse5 "^7.0.0" -"parse5@^6.0.0": - "integrity" "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" - "resolved" "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz" - "version" "6.0.1" +parse5@5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz" + integrity sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ== -"parse5@^7.0.0": - "integrity" "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==" - "resolved" "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz" - "version" "7.1.2" +parse5@6.0.1, parse5@^6.0.0: + version "6.0.1" + resolved "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz" + integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== + +parse5@^7.0.0: + version "7.1.2" + resolved "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz" + integrity sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw== dependencies: - "entities" "^4.4.0" + entities "^4.4.0" -"parse5@5.1.0": - "integrity" "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==" - "resolved" "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz" - "version" "5.1.0" +parseqs@0.0.6: + version "0.0.6" + resolved "https://registry.npmjs.org/parseqs/-/parseqs-0.0.6.tgz" + integrity sha512-jeAGzMDbfSHHA091hr0r31eYfTig+29g3GKKE/PPbEQ65X0lmMwlEoqmhzu0iztID5uJpZsFlUPDP8ThPL7M8w== -"parse5@6.0.1": - "integrity" "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" - "resolved" "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz" - "version" "6.0.1" +parseuri@0.0.6: + version "0.0.6" + resolved "https://registry.npmjs.org/parseuri/-/parseuri-0.0.6.tgz" + integrity sha512-AUjen8sAkGgao7UyCX6Ahv0gIK2fABKmYjvP4xmy5JaKvcbTRueIqIPHLAfq30xJddqSE033IOMUSOMCcK3Sow== -"parseqs@0.0.6": - "integrity" "sha512-jeAGzMDbfSHHA091hr0r31eYfTig+29g3GKKE/PPbEQ65X0lmMwlEoqmhzu0iztID5uJpZsFlUPDP8ThPL7M8w==" - "resolved" "https://registry.npmjs.org/parseqs/-/parseqs-0.0.6.tgz" - "version" "0.0.6" +parseurl@~1.3.2, parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== -"parseuri@0.0.6": - "integrity" "sha512-AUjen8sAkGgao7UyCX6Ahv0gIK2fABKmYjvP4xmy5JaKvcbTRueIqIPHLAfq30xJddqSE033IOMUSOMCcK3Sow==" - "resolved" "https://registry.npmjs.org/parseuri/-/parseuri-0.0.6.tgz" - "version" "0.0.6" - -"parseurl@~1.3.2", "parseurl@~1.3.3": - "integrity" "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" - "resolved" "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz" - "version" "1.3.3" - -"pascal-case@^3.1.2": - "integrity" "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==" - "resolved" "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz" - "version" "3.1.2" +pascal-case@^3.1.2: + version "3.1.2" + resolved "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz" + integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g== dependencies: - "no-case" "^3.0.4" - "tslib" "^2.0.3" + no-case "^3.0.4" + tslib "^2.0.3" -"pascalcase@^0.1.1": - "integrity" "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==" - "resolved" "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz" - "version" "0.1.1" +pascalcase@^0.1.1: + version "0.1.1" + resolved "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz" + integrity sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw== -"path-browserify@^1.0.1": - "integrity" "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==" - "resolved" "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz" - "version" "1.0.1" +path-browserify@0.0.1: + version "0.0.1" + resolved "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz" + integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== -"path-browserify@0.0.1": - "integrity" "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==" - "resolved" "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz" - "version" "0.0.1" +path-browserify@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz" + integrity sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g== -"path-dirname@^1.0.0": - "integrity" "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==" - "resolved" "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz" - "version" "1.0.2" +path-dirname@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz" + integrity sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q== -"path-exists@^2.0.0": - "integrity" "sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==" - "resolved" "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz" - "version" "2.1.0" +path-exists@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz" + integrity sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ== dependencies: - "pinkie-promise" "^2.0.0" + pinkie-promise "^2.0.0" -"path-exists@^3.0.0": - "integrity" "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==" - "resolved" "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz" - "version" "3.0.0" +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz" + integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ== -"path-exists@^4.0.0": - "integrity" "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" - "resolved" "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" - "version" "4.0.0" +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== -"path-is-absolute@^1.0.0", "path-is-absolute@^1.0.1": - "integrity" "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" - "resolved" "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" - "version" "1.0.1" +path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== -"path-key@^2.0.0": - "integrity" "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==" - "resolved" "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz" - "version" "2.0.1" +path-key@^2.0.0, path-key@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz" + integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw== -"path-key@^2.0.1": - "integrity" "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==" - "resolved" "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz" - "version" "2.0.1" +path-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== -"path-key@^3.0.0", "path-key@^3.1.0": - "integrity" "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" - "resolved" "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" - "version" "3.1.1" +path-parse@^1.0.6, path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== -"path-parse@^1.0.6", "path-parse@^1.0.7": - "integrity" "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" - "resolved" "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" - "version" "1.0.7" +path-to-regexp@0.1.7: + version "0.1.7" + resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz" + integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== -"path-to-regexp@^1.7.0": - "integrity" "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==" - "resolved" "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz" - "version" "1.8.0" +path-to-regexp@^1.7.0: + version "1.8.0" + resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz" + integrity sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA== dependencies: - "isarray" "0.0.1" + isarray "0.0.1" -"path-to-regexp@0.1.7": - "integrity" "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" - "resolved" "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz" - "version" "0.1.7" - -"path-type@^1.0.0": - "integrity" "sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==" - "resolved" "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz" - "version" "1.1.0" +path-type@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz" + integrity sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg== dependencies: - "graceful-fs" "^4.1.2" - "pify" "^2.0.0" - "pinkie-promise" "^2.0.0" + graceful-fs "^4.1.2" + pify "^2.0.0" + pinkie-promise "^2.0.0" -"path-type@^3.0.0": - "integrity" "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==" - "resolved" "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz" - "version" "3.0.0" +path-type@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz" + integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== dependencies: - "pify" "^3.0.0" + pify "^3.0.0" -"path-type@^4.0.0": - "integrity" "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" - "resolved" "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz" - "version" "4.0.0" +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== -"pbkdf2@^3.0.3": - "integrity" "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==" - "resolved" "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz" - "version" "3.1.2" +pbkdf2@^3.0.3: + version "3.1.2" + resolved "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz" + integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== dependencies: - "create-hash" "^1.1.2" - "create-hmac" "^1.1.4" - "ripemd160" "^2.0.1" - "safe-buffer" "^5.0.1" - "sha.js" "^2.4.8" + create-hash "^1.1.2" + create-hmac "^1.1.4" + ripemd160 "^2.0.1" + safe-buffer "^5.0.1" + sha.js "^2.4.8" -"pend@~1.2.0": - "integrity" "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==" - "resolved" "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz" - "version" "1.2.0" +pend@~1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz" + integrity sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg== -"perfect-scrollbar@^1.5.0": - "integrity" "sha512-dzalfutyP3e/FOpdlhVryN4AJ5XDVauVWxybSkLZmakFE2sS3y3pc4JnSprw8tGmHvkaG5Edr5T7LBTZ+WWU2g==" - "resolved" "https://registry.npmjs.org/perfect-scrollbar/-/perfect-scrollbar-1.5.5.tgz" - "version" "1.5.5" +perfect-scrollbar@^1.5.0: + version "1.5.5" + resolved "https://registry.npmjs.org/perfect-scrollbar/-/perfect-scrollbar-1.5.5.tgz" + integrity sha512-dzalfutyP3e/FOpdlhVryN4AJ5XDVauVWxybSkLZmakFE2sS3y3pc4JnSprw8tGmHvkaG5Edr5T7LBTZ+WWU2g== -"performance-now@^0.2.0": - "integrity" "sha512-YHk5ez1hmMR5LOkb9iJkLKqoBlL7WD5M8ljC75ZfzXriuBIVNuecaXuU7e+hOwyqf24Wxhh7Vxgt7Hnw9288Tg==" - "resolved" "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz" - "version" "0.2.0" +performance-now@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz" + integrity sha512-YHk5ez1hmMR5LOkb9iJkLKqoBlL7WD5M8ljC75ZfzXriuBIVNuecaXuU7e+hOwyqf24Wxhh7Vxgt7Hnw9288Tg== -"performance-now@^2.1.0": - "integrity" "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" - "resolved" "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz" - "version" "2.1.0" +performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz" + integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow== -"picocolors@^0.2.1": - "integrity" "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==" - "resolved" "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz" - "version" "0.2.1" +picocolors@^0.2.1: + version "0.2.1" + resolved "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz" + integrity sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA== -"picocolors@^1.0.0": - "integrity" "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" - "resolved" "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz" - "version" "1.0.0" +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== -"picomatch@^2.0.4", "picomatch@^2.2.1", "picomatch@^2.2.2", "picomatch@^2.2.3", "picomatch@^2.3.0", "picomatch@^2.3.1": - "integrity" "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" - "resolved" "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" - "version" "2.3.1" +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.2.3, picomatch@^2.3.0, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== -"pify@^2.0.0", "pify@^2.3.0": - "integrity" "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==" - "resolved" "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz" - "version" "2.3.0" +pify@^2.0.0, pify@^2.3.0: + version "2.3.0" + resolved "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz" + integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== -"pify@^3.0.0": - "integrity" "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==" - "resolved" "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz" - "version" "3.0.0" +pify@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz" + integrity sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg== -"pify@^4.0.1": - "integrity" "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" - "resolved" "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz" - "version" "4.0.1" +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== -"pinkie-promise@^2.0.0": - "integrity" "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==" - "resolved" "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz" - "version" "2.0.1" +pinkie-promise@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz" + integrity sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw== dependencies: - "pinkie" "^2.0.0" + pinkie "^2.0.0" -"pinkie@^2.0.0": - "integrity" "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==" - "resolved" "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz" - "version" "2.0.4" +pinkie@^2.0.0: + version "2.0.4" + resolved "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz" + integrity sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg== -"pirates@^4.0.1", "pirates@^4.0.4", "pirates@^4.0.5": - "integrity" "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==" - "resolved" "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz" - "version" "4.0.5" +pirates@^4.0.1, pirates@^4.0.4, pirates@^4.0.5: + version "4.0.5" + resolved "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz" + integrity sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ== -"pkg-dir@^1.0.0": - "integrity" "sha512-c6pv3OE78mcZ92ckebVDqg0aWSoKhOTbwCV6qbCWMk546mAL9pZln0+QsN/yQ7fkucd4+yJPLrCBXNt8Ruk+Eg==" - "resolved" "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz" - "version" "1.0.0" +pkg-dir@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz" + integrity sha512-c6pv3OE78mcZ92ckebVDqg0aWSoKhOTbwCV6qbCWMk546mAL9pZln0+QsN/yQ7fkucd4+yJPLrCBXNt8Ruk+Eg== dependencies: - "find-up" "^1.0.0" + find-up "^1.0.0" -"pkg-dir@^3.0.0": - "integrity" "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==" - "resolved" "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz" - "version" "3.0.0" +pkg-dir@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz" + integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== dependencies: - "find-up" "^3.0.0" + find-up "^3.0.0" -"pkg-dir@^4.1.0": - "integrity" "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==" - "resolved" "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz" - "version" "4.2.0" +pkg-dir@^4.1.0, pkg-dir@^4.2.0: + version "4.2.0" + resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== dependencies: - "find-up" "^4.0.0" + find-up "^4.0.0" -"pkg-dir@^4.2.0": - "integrity" "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==" - "resolved" "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz" - "version" "4.2.0" +pkg-dir@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-5.0.0.tgz" + integrity sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA== dependencies: - "find-up" "^4.0.0" + find-up "^5.0.0" -"pkg-dir@^5.0.0": - "integrity" "sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==" - "resolved" "https://registry.npmjs.org/pkg-dir/-/pkg-dir-5.0.0.tgz" - "version" "5.0.0" +pkg-up@3.1.0, pkg-up@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz" + integrity sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA== dependencies: - "find-up" "^5.0.0" + find-up "^3.0.0" -"pkg-up@^2.0.0": - "integrity" "sha512-fjAPuiws93rm7mPUu21RdBnkeZNrbfCFCwfAhPWY+rR3zG0ubpe5cEReHOw5fIbfmsxEV/g2kSxGTATY3Bpnwg==" - "resolved" "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz" - "version" "2.0.0" +pkg-up@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz" + integrity sha512-fjAPuiws93rm7mPUu21RdBnkeZNrbfCFCwfAhPWY+rR3zG0ubpe5cEReHOw5fIbfmsxEV/g2kSxGTATY3Bpnwg== dependencies: - "find-up" "^2.1.0" + find-up "^2.1.0" -"pkg-up@^3.1.0": - "integrity" "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==" - "resolved" "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz" - "version" "3.1.0" +platform@^1.3.0: + version "1.3.6" + resolved "https://registry.npmjs.org/platform/-/platform-1.3.6.tgz" + integrity sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg== + +pn@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz" + integrity sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA== + +pnp-webpack-plugin@1.6.4, pnp-webpack-plugin@^1.6.4: + version "1.6.4" + resolved "https://registry.npmjs.org/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz" + integrity sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg== dependencies: - "find-up" "^3.0.0" + ts-pnp "^1.1.6" -"pkg-up@3.1.0": - "integrity" "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==" - "resolved" "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz" - "version" "3.1.0" +pnp-webpack-plugin@^1.7.0: + version "1.7.0" + resolved "https://registry.npmjs.org/pnp-webpack-plugin/-/pnp-webpack-plugin-1.7.0.tgz" + integrity sha512-2Rb3vm+EXble/sMXNSu6eoBx8e79gKqhNq9F5ZWW6ERNCTE/Q0wQNne5541tE5vKjfM8hpNCYL+LGc1YTfI0dg== dependencies: - "find-up" "^3.0.0" + ts-pnp "^1.1.6" -"platform@^1.3.0": - "integrity" "sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==" - "resolved" "https://registry.npmjs.org/platform/-/platform-1.3.6.tgz" - "version" "1.3.6" - -"pn@^1.1.0": - "integrity" "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==" - "resolved" "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz" - "version" "1.1.0" - -"pnp-webpack-plugin@^1.6.4", "pnp-webpack-plugin@1.6.4": - "integrity" "sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg==" - "resolved" "https://registry.npmjs.org/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz" - "version" "1.6.4" - dependencies: - "ts-pnp" "^1.1.6" - -"pnp-webpack-plugin@^1.7.0": - "integrity" "sha512-2Rb3vm+EXble/sMXNSu6eoBx8e79gKqhNq9F5ZWW6ERNCTE/Q0wQNne5541tE5vKjfM8hpNCYL+LGc1YTfI0dg==" - "resolved" "https://registry.npmjs.org/pnp-webpack-plugin/-/pnp-webpack-plugin-1.7.0.tgz" - "version" "1.7.0" - dependencies: - "ts-pnp" "^1.1.6" - -"polished@^4.2.2": - "integrity" "sha512-Sz2Lkdxz6F2Pgnpi9U5Ng/WdWAUZxmHrNPoVlm3aAemxoy2Qy7LGjQg4uf8qKelDAUW94F4np3iH2YPf2qefcQ==" - "resolved" "https://registry.npmjs.org/polished/-/polished-4.2.2.tgz" - "version" "4.2.2" +polished@^4.2.2: + version "4.2.2" + resolved "https://registry.npmjs.org/polished/-/polished-4.2.2.tgz" + integrity sha512-Sz2Lkdxz6F2Pgnpi9U5Ng/WdWAUZxmHrNPoVlm3aAemxoy2Qy7LGjQg4uf8qKelDAUW94F4np3iH2YPf2qefcQ== dependencies: "@babel/runtime" "^7.17.8" -"polygon-clipping@^0.15.3": - "integrity" "sha512-ho0Xx5DLkgxRx/+n4O74XyJ67DcyN3Tu9bGYKsnTukGAW6ssnuak6Mwcyb1wHy9MZc9xsUWqIoiazkZB5weECg==" - "resolved" "https://registry.npmjs.org/polygon-clipping/-/polygon-clipping-0.15.3.tgz" - "version" "0.15.3" +polygon-clipping@^0.15.3: + version "0.15.3" + resolved "https://registry.npmjs.org/polygon-clipping/-/polygon-clipping-0.15.3.tgz" + integrity sha512-ho0Xx5DLkgxRx/+n4O74XyJ67DcyN3Tu9bGYKsnTukGAW6ssnuak6Mwcyb1wHy9MZc9xsUWqIoiazkZB5weECg== dependencies: - "splaytree" "^3.1.0" + splaytree "^3.1.0" -"popper.js@1.16.1-lts": - "integrity" "sha512-Kjw8nKRl1m+VrSFCoVGPph93W/qrSO7ZkqPpTf7F4bk/sqcfWK019dWBUpE/fBOsOQY1dks/Bmcbfn1heM/IsA==" - "resolved" "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1-lts.tgz" - "version" "1.16.1-lts" +popper.js@1.16.1-lts: + version "1.16.1-lts" + resolved "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1-lts.tgz" + integrity sha512-Kjw8nKRl1m+VrSFCoVGPph93W/qrSO7ZkqPpTf7F4bk/sqcfWK019dWBUpE/fBOsOQY1dks/Bmcbfn1heM/IsA== -"posix-character-classes@^0.1.0": - "integrity" "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==" - "resolved" "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz" - "version" "0.1.1" +posix-character-classes@^0.1.0: + version "0.1.1" + resolved "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz" + integrity sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg== -"postcss-100vh-fix@^1.0.2": - "integrity" "sha512-t7vqk9AfjI4fXmWlQCEiMZFFhi1hro4WlECINI1TV6Qh1XapUJE++gCmNr95F5Hen/+bz1OmO+SiSB9TZmFmSg==" - "resolved" "https://registry.npmjs.org/postcss-100vh-fix/-/postcss-100vh-fix-1.0.2.tgz" - "version" "1.0.2" +postcss-100vh-fix@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/postcss-100vh-fix/-/postcss-100vh-fix-1.0.2.tgz" + integrity sha512-t7vqk9AfjI4fXmWlQCEiMZFFhi1hro4WlECINI1TV6Qh1XapUJE++gCmNr95F5Hen/+bz1OmO+SiSB9TZmFmSg== -"postcss-attribute-case-insensitive@^4.0.1": - "integrity" "sha512-clkFxk/9pcdb4Vkn0hAHq3YnxBQ2p0CGD1dy24jN+reBck+EWxMbxSUqN4Yj7t0w8csl87K6p0gxBe1utkJsYA==" - "resolved" "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-4.0.2.tgz" - "version" "4.0.2" +postcss-attribute-case-insensitive@^4.0.1: + version "4.0.2" + resolved "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-4.0.2.tgz" + integrity sha512-clkFxk/9pcdb4Vkn0hAHq3YnxBQ2p0CGD1dy24jN+reBck+EWxMbxSUqN4Yj7t0w8csl87K6p0gxBe1utkJsYA== dependencies: - "postcss" "^7.0.2" - "postcss-selector-parser" "^6.0.2" + postcss "^7.0.2" + postcss-selector-parser "^6.0.2" -"postcss-attribute-case-insensitive@^5.0.2": - "integrity" "sha512-XIidXV8fDr0kKt28vqki84fRK8VW8eTuIa4PChv2MqKuT6C9UjmSKzen6KaWhWEoYvwxFCa7n/tC1SZ3tyq4SQ==" - "resolved" "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-5.0.2.tgz" - "version" "5.0.2" +postcss-attribute-case-insensitive@^5.0.2: + version "5.0.2" + resolved "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-5.0.2.tgz" + integrity sha512-XIidXV8fDr0kKt28vqki84fRK8VW8eTuIa4PChv2MqKuT6C9UjmSKzen6KaWhWEoYvwxFCa7n/tC1SZ3tyq4SQ== dependencies: - "postcss-selector-parser" "^6.0.10" + postcss-selector-parser "^6.0.10" -"postcss-browser-comments@^3.0.0": - "integrity" "sha512-qfVjLfq7HFd2e0HW4s1dvU8X080OZdG46fFbIBFjW7US7YPDcWfRvdElvwMJr2LI6hMmD+7LnH2HcmXTs+uOig==" - "resolved" "https://registry.npmjs.org/postcss-browser-comments/-/postcss-browser-comments-3.0.0.tgz" - "version" "3.0.0" +postcss-browser-comments@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/postcss-browser-comments/-/postcss-browser-comments-3.0.0.tgz" + integrity sha512-qfVjLfq7HFd2e0HW4s1dvU8X080OZdG46fFbIBFjW7US7YPDcWfRvdElvwMJr2LI6hMmD+7LnH2HcmXTs+uOig== dependencies: - "postcss" "^7" + postcss "^7" -"postcss-browser-comments@^4": - "integrity" "sha512-X9X9/WN3KIvY9+hNERUqX9gncsgBA25XaeR+jshHz2j8+sYyHktHw1JdKuMjeLpGktXidqDhA7b/qm1mrBDmgg==" - "resolved" "https://registry.npmjs.org/postcss-browser-comments/-/postcss-browser-comments-4.0.0.tgz" - "version" "4.0.0" +postcss-browser-comments@^4: + version "4.0.0" + resolved "https://registry.npmjs.org/postcss-browser-comments/-/postcss-browser-comments-4.0.0.tgz" + integrity sha512-X9X9/WN3KIvY9+hNERUqX9gncsgBA25XaeR+jshHz2j8+sYyHktHw1JdKuMjeLpGktXidqDhA7b/qm1mrBDmgg== -"postcss-calc@^7.0.1": - "integrity" "sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg==" - "resolved" "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.5.tgz" - "version" "7.0.5" +postcss-calc@^7.0.1: + version "7.0.5" + resolved "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.5.tgz" + integrity sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg== dependencies: - "postcss" "^7.0.27" - "postcss-selector-parser" "^6.0.2" - "postcss-value-parser" "^4.0.2" + postcss "^7.0.27" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.0.2" -"postcss-calc@^8.2.3": - "integrity" "sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==" - "resolved" "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz" - "version" "8.2.4" +postcss-calc@^8.2.3: + version "8.2.4" + resolved "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz" + integrity sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q== dependencies: - "postcss-selector-parser" "^6.0.9" - "postcss-value-parser" "^4.2.0" + postcss-selector-parser "^6.0.9" + postcss-value-parser "^4.2.0" -"postcss-clamp@^4.1.0": - "integrity" "sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow==" - "resolved" "https://registry.npmjs.org/postcss-clamp/-/postcss-clamp-4.1.0.tgz" - "version" "4.1.0" +postcss-clamp@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/postcss-clamp/-/postcss-clamp-4.1.0.tgz" + integrity sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow== dependencies: - "postcss-value-parser" "^4.2.0" + postcss-value-parser "^4.2.0" -"postcss-color-functional-notation@^2.0.1": - "integrity" "sha512-ZBARCypjEDofW4P6IdPVTLhDNXPRn8T2s1zHbZidW6rPaaZvcnCS2soYFIQJrMZSxiePJ2XIYTlcb2ztr/eT2g==" - "resolved" "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-2.0.1.tgz" - "version" "2.0.1" +postcss-color-functional-notation@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-2.0.1.tgz" + integrity sha512-ZBARCypjEDofW4P6IdPVTLhDNXPRn8T2s1zHbZidW6rPaaZvcnCS2soYFIQJrMZSxiePJ2XIYTlcb2ztr/eT2g== dependencies: - "postcss" "^7.0.2" - "postcss-values-parser" "^2.0.0" + postcss "^7.0.2" + postcss-values-parser "^2.0.0" -"postcss-color-functional-notation@^4.2.4": - "integrity" "sha512-2yrTAUZUab9s6CpxkxC4rVgFEVaR6/2Pipvi6qcgvnYiVqZcbDHEoBDhrXzyb7Efh2CCfHQNtcqWcIruDTIUeg==" - "resolved" "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-4.2.4.tgz" - "version" "4.2.4" +postcss-color-functional-notation@^4.2.4: + version "4.2.4" + resolved "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-4.2.4.tgz" + integrity sha512-2yrTAUZUab9s6CpxkxC4rVgFEVaR6/2Pipvi6qcgvnYiVqZcbDHEoBDhrXzyb7Efh2CCfHQNtcqWcIruDTIUeg== dependencies: - "postcss-value-parser" "^4.2.0" + postcss-value-parser "^4.2.0" -"postcss-color-gray@^5.0.0": - "integrity" "sha512-q6BuRnAGKM/ZRpfDascZlIZPjvwsRye7UDNalqVz3s7GDxMtqPY6+Q871liNxsonUw8oC61OG+PSaysYpl1bnw==" - "resolved" "https://registry.npmjs.org/postcss-color-gray/-/postcss-color-gray-5.0.0.tgz" - "version" "5.0.0" +postcss-color-gray@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/postcss-color-gray/-/postcss-color-gray-5.0.0.tgz" + integrity sha512-q6BuRnAGKM/ZRpfDascZlIZPjvwsRye7UDNalqVz3s7GDxMtqPY6+Q871liNxsonUw8oC61OG+PSaysYpl1bnw== dependencies: "@csstools/convert-colors" "^1.4.0" - "postcss" "^7.0.5" - "postcss-values-parser" "^2.0.0" + postcss "^7.0.5" + postcss-values-parser "^2.0.0" -"postcss-color-hex-alpha@^5.0.3": - "integrity" "sha512-PF4GDel8q3kkreVXKLAGNpHKilXsZ6xuu+mOQMHWHLPNyjiUBOr75sp5ZKJfmv1MCus5/DWUGcK9hm6qHEnXYw==" - "resolved" "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-5.0.3.tgz" - "version" "5.0.3" +postcss-color-hex-alpha@^5.0.3: + version "5.0.3" + resolved "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-5.0.3.tgz" + integrity sha512-PF4GDel8q3kkreVXKLAGNpHKilXsZ6xuu+mOQMHWHLPNyjiUBOr75sp5ZKJfmv1MCus5/DWUGcK9hm6qHEnXYw== dependencies: - "postcss" "^7.0.14" - "postcss-values-parser" "^2.0.1" + postcss "^7.0.14" + postcss-values-parser "^2.0.1" -"postcss-color-hex-alpha@^8.0.4": - "integrity" "sha512-nLo2DCRC9eE4w2JmuKgVA3fGL3d01kGq752pVALF68qpGLmx2Qrk91QTKkdUqqp45T1K1XV8IhQpcu1hoAQflQ==" - "resolved" "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-8.0.4.tgz" - "version" "8.0.4" +postcss-color-hex-alpha@^8.0.4: + version "8.0.4" + resolved "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-8.0.4.tgz" + integrity sha512-nLo2DCRC9eE4w2JmuKgVA3fGL3d01kGq752pVALF68qpGLmx2Qrk91QTKkdUqqp45T1K1XV8IhQpcu1hoAQflQ== dependencies: - "postcss-value-parser" "^4.2.0" + postcss-value-parser "^4.2.0" -"postcss-color-mod-function@^3.0.3": - "integrity" "sha512-YP4VG+xufxaVtzV6ZmhEtc+/aTXH3d0JLpnYfxqTvwZPbJhWqp8bSY3nfNzNRFLgB4XSaBA82OE4VjOOKpCdVQ==" - "resolved" "https://registry.npmjs.org/postcss-color-mod-function/-/postcss-color-mod-function-3.0.3.tgz" - "version" "3.0.3" +postcss-color-mod-function@^3.0.3: + version "3.0.3" + resolved "https://registry.npmjs.org/postcss-color-mod-function/-/postcss-color-mod-function-3.0.3.tgz" + integrity sha512-YP4VG+xufxaVtzV6ZmhEtc+/aTXH3d0JLpnYfxqTvwZPbJhWqp8bSY3nfNzNRFLgB4XSaBA82OE4VjOOKpCdVQ== dependencies: "@csstools/convert-colors" "^1.4.0" - "postcss" "^7.0.2" - "postcss-values-parser" "^2.0.0" + postcss "^7.0.2" + postcss-values-parser "^2.0.0" -"postcss-color-rebeccapurple@^4.0.1": - "integrity" "sha512-aAe3OhkS6qJXBbqzvZth2Au4V3KieR5sRQ4ptb2b2O8wgvB3SJBsdG+jsn2BZbbwekDG8nTfcCNKcSfe/lEy8g==" - "resolved" "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-4.0.1.tgz" - "version" "4.0.1" +postcss-color-rebeccapurple@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-4.0.1.tgz" + integrity sha512-aAe3OhkS6qJXBbqzvZth2Au4V3KieR5sRQ4ptb2b2O8wgvB3SJBsdG+jsn2BZbbwekDG8nTfcCNKcSfe/lEy8g== dependencies: - "postcss" "^7.0.2" - "postcss-values-parser" "^2.0.0" + postcss "^7.0.2" + postcss-values-parser "^2.0.0" -"postcss-color-rebeccapurple@^7.1.1": - "integrity" "sha512-pGxkuVEInwLHgkNxUc4sdg4g3py7zUeCQ9sMfwyHAT+Ezk8a4OaaVZ8lIY5+oNqA/BXXgLyXv0+5wHP68R79hg==" - "resolved" "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-7.1.1.tgz" - "version" "7.1.1" +postcss-color-rebeccapurple@^7.1.1: + version "7.1.1" + resolved "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-7.1.1.tgz" + integrity sha512-pGxkuVEInwLHgkNxUc4sdg4g3py7zUeCQ9sMfwyHAT+Ezk8a4OaaVZ8lIY5+oNqA/BXXgLyXv0+5wHP68R79hg== dependencies: - "postcss-value-parser" "^4.2.0" + postcss-value-parser "^4.2.0" -"postcss-colormin@^4.0.3": - "integrity" "sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==" - "resolved" "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz" - "version" "4.0.3" +postcss-colormin@^4.0.3: + version "4.0.3" + resolved "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz" + integrity sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw== dependencies: - "browserslist" "^4.0.0" - "color" "^3.0.0" - "has" "^1.0.0" - "postcss" "^7.0.0" - "postcss-value-parser" "^3.0.0" + browserslist "^4.0.0" + color "^3.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" -"postcss-colormin@^5.3.0": - "integrity" "sha512-WdDO4gOFG2Z8n4P8TWBpshnL3JpmNmJwdnfP2gbk2qBA8PWwOYcmjmI/t3CmMeL72a7Hkd+x/Mg9O2/0rD54Pg==" - "resolved" "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.0.tgz" - "version" "5.3.0" +postcss-colormin@^5.3.0: + version "5.3.0" + resolved "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.0.tgz" + integrity sha512-WdDO4gOFG2Z8n4P8TWBpshnL3JpmNmJwdnfP2gbk2qBA8PWwOYcmjmI/t3CmMeL72a7Hkd+x/Mg9O2/0rD54Pg== dependencies: - "browserslist" "^4.16.6" - "caniuse-api" "^3.0.0" - "colord" "^2.9.1" - "postcss-value-parser" "^4.2.0" + browserslist "^4.16.6" + caniuse-api "^3.0.0" + colord "^2.9.1" + postcss-value-parser "^4.2.0" -"postcss-convert-values@^4.0.1": - "integrity" "sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==" - "resolved" "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz" - "version" "4.0.1" +postcss-convert-values@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz" + integrity sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ== dependencies: - "postcss" "^7.0.0" - "postcss-value-parser" "^3.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" -"postcss-convert-values@^5.1.3": - "integrity" "sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA==" - "resolved" "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.3.tgz" - "version" "5.1.3" +postcss-convert-values@^5.1.3: + version "5.1.3" + resolved "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.3.tgz" + integrity sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA== dependencies: - "browserslist" "^4.21.4" - "postcss-value-parser" "^4.2.0" + browserslist "^4.21.4" + postcss-value-parser "^4.2.0" -"postcss-custom-media@^7.0.8": - "integrity" "sha512-c9s5iX0Ge15o00HKbuRuTqNndsJUbaXdiNsksnVH8H4gdc+zbLzr/UasOwNG6CTDpLFekVY4672eWdiiWu2GUg==" - "resolved" "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-7.0.8.tgz" - "version" "7.0.8" +postcss-custom-media@^7.0.8: + version "7.0.8" + resolved "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-7.0.8.tgz" + integrity sha512-c9s5iX0Ge15o00HKbuRuTqNndsJUbaXdiNsksnVH8H4gdc+zbLzr/UasOwNG6CTDpLFekVY4672eWdiiWu2GUg== dependencies: - "postcss" "^7.0.14" + postcss "^7.0.14" -"postcss-custom-media@^8.0.2": - "integrity" "sha512-7yi25vDAoHAkbhAzX9dHx2yc6ntS4jQvejrNcC+csQJAXjj15e7VcWfMgLqBNAbOvqi5uIa9huOVwdHbf+sKqg==" - "resolved" "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-8.0.2.tgz" - "version" "8.0.2" +postcss-custom-media@^8.0.2: + version "8.0.2" + resolved "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-8.0.2.tgz" + integrity sha512-7yi25vDAoHAkbhAzX9dHx2yc6ntS4jQvejrNcC+csQJAXjj15e7VcWfMgLqBNAbOvqi5uIa9huOVwdHbf+sKqg== dependencies: - "postcss-value-parser" "^4.2.0" + postcss-value-parser "^4.2.0" -"postcss-custom-properties@^12.1.10": - "integrity" "sha512-U3BHdgrYhCrwTVcByFHs9EOBoqcKq4Lf3kXwbTi4hhq0qWhl/pDWq2THbv/ICX/Fl9KqeHBb8OVrTf2OaYF07A==" - "resolved" "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-12.1.10.tgz" - "version" "12.1.10" +postcss-custom-properties@^12.1.10: + version "12.1.10" + resolved "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-12.1.10.tgz" + integrity sha512-U3BHdgrYhCrwTVcByFHs9EOBoqcKq4Lf3kXwbTi4hhq0qWhl/pDWq2THbv/ICX/Fl9KqeHBb8OVrTf2OaYF07A== dependencies: - "postcss-value-parser" "^4.2.0" + postcss-value-parser "^4.2.0" -"postcss-custom-properties@^8.0.11": - "integrity" "sha512-nm+o0eLdYqdnJ5abAJeXp4CEU1c1k+eB2yMCvhgzsds/e0umabFrN6HoTy/8Q4K5ilxERdl/JD1LO5ANoYBeMA==" - "resolved" "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-8.0.11.tgz" - "version" "8.0.11" +postcss-custom-properties@^8.0.11: + version "8.0.11" + resolved "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-8.0.11.tgz" + integrity sha512-nm+o0eLdYqdnJ5abAJeXp4CEU1c1k+eB2yMCvhgzsds/e0umabFrN6HoTy/8Q4K5ilxERdl/JD1LO5ANoYBeMA== dependencies: - "postcss" "^7.0.17" - "postcss-values-parser" "^2.0.1" + postcss "^7.0.17" + postcss-values-parser "^2.0.1" -"postcss-custom-selectors@^5.1.2": - "integrity" "sha512-DSGDhqinCqXqlS4R7KGxL1OSycd1lydugJ1ky4iRXPHdBRiozyMHrdu0H3o7qNOCiZwySZTUI5MV0T8QhCLu+w==" - "resolved" "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-5.1.2.tgz" - "version" "5.1.2" +postcss-custom-selectors@^5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-5.1.2.tgz" + integrity sha512-DSGDhqinCqXqlS4R7KGxL1OSycd1lydugJ1ky4iRXPHdBRiozyMHrdu0H3o7qNOCiZwySZTUI5MV0T8QhCLu+w== dependencies: - "postcss" "^7.0.2" - "postcss-selector-parser" "^5.0.0-rc.3" + postcss "^7.0.2" + postcss-selector-parser "^5.0.0-rc.3" -"postcss-custom-selectors@^6.0.3": - "integrity" "sha512-fgVkmyiWDwmD3JbpCmB45SvvlCD6z9CG6Ie6Iere22W5aHea6oWa7EM2bpnv2Fj3I94L3VbtvX9KqwSi5aFzSg==" - "resolved" "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-6.0.3.tgz" - "version" "6.0.3" +postcss-custom-selectors@^6.0.3: + version "6.0.3" + resolved "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-6.0.3.tgz" + integrity sha512-fgVkmyiWDwmD3JbpCmB45SvvlCD6z9CG6Ie6Iere22W5aHea6oWa7EM2bpnv2Fj3I94L3VbtvX9KqwSi5aFzSg== dependencies: - "postcss-selector-parser" "^6.0.4" + postcss-selector-parser "^6.0.4" -"postcss-dir-pseudo-class@^5.0.0": - "integrity" "sha512-3pm4oq8HYWMZePJY+5ANriPs3P07q+LW6FAdTlkFH2XqDdP4HeeJYMOzn0HYLhRSjBO3fhiqSwwU9xEULSrPgw==" - "resolved" "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-5.0.0.tgz" - "version" "5.0.0" +postcss-dir-pseudo-class@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-5.0.0.tgz" + integrity sha512-3pm4oq8HYWMZePJY+5ANriPs3P07q+LW6FAdTlkFH2XqDdP4HeeJYMOzn0HYLhRSjBO3fhiqSwwU9xEULSrPgw== dependencies: - "postcss" "^7.0.2" - "postcss-selector-parser" "^5.0.0-rc.3" + postcss "^7.0.2" + postcss-selector-parser "^5.0.0-rc.3" -"postcss-dir-pseudo-class@^6.0.5": - "integrity" "sha512-eqn4m70P031PF7ZQIvSgy9RSJ5uI2171O/OO/zcRNYpJbvaeKFUlar1aJ7rmgiQtbm0FSPsRewjpdS0Oew7MPA==" - "resolved" "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-6.0.5.tgz" - "version" "6.0.5" +postcss-dir-pseudo-class@^6.0.5: + version "6.0.5" + resolved "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-6.0.5.tgz" + integrity sha512-eqn4m70P031PF7ZQIvSgy9RSJ5uI2171O/OO/zcRNYpJbvaeKFUlar1aJ7rmgiQtbm0FSPsRewjpdS0Oew7MPA== dependencies: - "postcss-selector-parser" "^6.0.10" + postcss-selector-parser "^6.0.10" -"postcss-discard-comments@^4.0.2": - "integrity" "sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==" - "resolved" "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz" - "version" "4.0.2" +postcss-discard-comments@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz" + integrity sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg== dependencies: - "postcss" "^7.0.0" + postcss "^7.0.0" -"postcss-discard-comments@^5.1.2": - "integrity" "sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==" - "resolved" "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz" - "version" "5.1.2" +postcss-discard-comments@^5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz" + integrity sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ== -"postcss-discard-duplicates@^4.0.2": - "integrity" "sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==" - "resolved" "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz" - "version" "4.0.2" +postcss-discard-duplicates@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz" + integrity sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ== dependencies: - "postcss" "^7.0.0" + postcss "^7.0.0" -"postcss-discard-duplicates@^5.1.0": - "integrity" "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==" - "resolved" "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz" - "version" "5.1.0" +postcss-discard-duplicates@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz" + integrity sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw== -"postcss-discard-empty@^4.0.1": - "integrity" "sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==" - "resolved" "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz" - "version" "4.0.1" +postcss-discard-empty@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz" + integrity sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w== dependencies: - "postcss" "^7.0.0" + postcss "^7.0.0" -"postcss-discard-empty@^5.1.1": - "integrity" "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==" - "resolved" "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz" - "version" "5.1.1" +postcss-discard-empty@^5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz" + integrity sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A== -"postcss-discard-overridden@^4.0.1": - "integrity" "sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==" - "resolved" "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz" - "version" "4.0.1" +postcss-discard-overridden@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz" + integrity sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg== dependencies: - "postcss" "^7.0.0" + postcss "^7.0.0" -"postcss-discard-overridden@^5.1.0": - "integrity" "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==" - "resolved" "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz" - "version" "5.1.0" +postcss-discard-overridden@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz" + integrity sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw== -"postcss-double-position-gradients@^1.0.0": - "integrity" "sha512-G+nV8EnQq25fOI8CH/B6krEohGWnF5+3A6H/+JEpOncu5dCnkS1QQ6+ct3Jkaepw1NGVqqOZH6lqrm244mCftA==" - "resolved" "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-1.0.0.tgz" - "version" "1.0.0" +postcss-double-position-gradients@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-1.0.0.tgz" + integrity sha512-G+nV8EnQq25fOI8CH/B6krEohGWnF5+3A6H/+JEpOncu5dCnkS1QQ6+ct3Jkaepw1NGVqqOZH6lqrm244mCftA== dependencies: - "postcss" "^7.0.5" - "postcss-values-parser" "^2.0.0" + postcss "^7.0.5" + postcss-values-parser "^2.0.0" -"postcss-double-position-gradients@^3.1.2": - "integrity" "sha512-GX+FuE/uBR6eskOK+4vkXgT6pDkexLokPaz/AbJna9s5Kzp/yl488pKPjhy0obB475ovfT1Wv8ho7U/cHNaRgQ==" - "resolved" "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-3.1.2.tgz" - "version" "3.1.2" +postcss-double-position-gradients@^3.1.2: + version "3.1.2" + resolved "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-3.1.2.tgz" + integrity sha512-GX+FuE/uBR6eskOK+4vkXgT6pDkexLokPaz/AbJna9s5Kzp/yl488pKPjhy0obB475ovfT1Wv8ho7U/cHNaRgQ== dependencies: "@csstools/postcss-progressive-custom-properties" "^1.1.0" - "postcss-value-parser" "^4.2.0" + postcss-value-parser "^4.2.0" -"postcss-env-function@^2.0.2": - "integrity" "sha512-rwac4BuZlITeUbiBq60h/xbLzXY43qOsIErngWa4l7Mt+RaSkT7QBjXVGTcBHupykkblHMDrBFh30zchYPaOUw==" - "resolved" "https://registry.npmjs.org/postcss-env-function/-/postcss-env-function-2.0.2.tgz" - "version" "2.0.2" +postcss-env-function@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/postcss-env-function/-/postcss-env-function-2.0.2.tgz" + integrity sha512-rwac4BuZlITeUbiBq60h/xbLzXY43qOsIErngWa4l7Mt+RaSkT7QBjXVGTcBHupykkblHMDrBFh30zchYPaOUw== dependencies: - "postcss" "^7.0.2" - "postcss-values-parser" "^2.0.0" + postcss "^7.0.2" + postcss-values-parser "^2.0.0" -"postcss-env-function@^4.0.6": - "integrity" "sha512-kpA6FsLra+NqcFnL81TnsU+Z7orGtDTxcOhl6pwXeEq1yFPpRMkCDpHhrz8CFQDr/Wfm0jLiNQ1OsGGPjlqPwA==" - "resolved" "https://registry.npmjs.org/postcss-env-function/-/postcss-env-function-4.0.6.tgz" - "version" "4.0.6" +postcss-env-function@^4.0.6: + version "4.0.6" + resolved "https://registry.npmjs.org/postcss-env-function/-/postcss-env-function-4.0.6.tgz" + integrity sha512-kpA6FsLra+NqcFnL81TnsU+Z7orGtDTxcOhl6pwXeEq1yFPpRMkCDpHhrz8CFQDr/Wfm0jLiNQ1OsGGPjlqPwA== dependencies: - "postcss-value-parser" "^4.2.0" + postcss-value-parser "^4.2.0" -"postcss-flexbugs-fixes@^4.2.1", "postcss-flexbugs-fixes@4.2.1": - "integrity" "sha512-9SiofaZ9CWpQWxOwRh1b/r85KD5y7GgvsNt1056k6OYLvWUun0czCvogfJgylC22uJTwW1KzY3Gz65NZRlvoiQ==" - "resolved" "https://registry.npmjs.org/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-4.2.1.tgz" - "version" "4.2.1" +postcss-flexbugs-fixes@4.2.1, postcss-flexbugs-fixes@^4.2.1: + version "4.2.1" + resolved "https://registry.npmjs.org/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-4.2.1.tgz" + integrity sha512-9SiofaZ9CWpQWxOwRh1b/r85KD5y7GgvsNt1056k6OYLvWUun0czCvogfJgylC22uJTwW1KzY3Gz65NZRlvoiQ== dependencies: - "postcss" "^7.0.26" + postcss "^7.0.26" -"postcss-flexbugs-fixes@^5.0.2": - "integrity" "sha512-18f9voByak7bTktR2QgDveglpn9DTbBWPUzSOe9g0N4WR/2eSt6Vrcbf0hmspvMI6YWGywz6B9f7jzpFNJJgnQ==" - "resolved" "https://registry.npmjs.org/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-5.0.2.tgz" - "version" "5.0.2" +postcss-flexbugs-fixes@^5.0.2: + version "5.0.2" + resolved "https://registry.npmjs.org/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-5.0.2.tgz" + integrity sha512-18f9voByak7bTktR2QgDveglpn9DTbBWPUzSOe9g0N4WR/2eSt6Vrcbf0hmspvMI6YWGywz6B9f7jzpFNJJgnQ== -"postcss-focus-visible@^4.0.0": - "integrity" "sha512-Z5CkWBw0+idJHSV6+Bgf2peDOFf/x4o+vX/pwcNYrWpXFrSfTkQ3JQ1ojrq9yS+upnAlNRHeg8uEwFTgorjI8g==" - "resolved" "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-4.0.0.tgz" - "version" "4.0.0" +postcss-focus-visible@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-4.0.0.tgz" + integrity sha512-Z5CkWBw0+idJHSV6+Bgf2peDOFf/x4o+vX/pwcNYrWpXFrSfTkQ3JQ1ojrq9yS+upnAlNRHeg8uEwFTgorjI8g== dependencies: - "postcss" "^7.0.2" + postcss "^7.0.2" -"postcss-focus-visible@^6.0.4": - "integrity" "sha512-QcKuUU/dgNsstIK6HELFRT5Y3lbrMLEOwG+A4s5cA+fx3A3y/JTq3X9LaOj3OC3ALH0XqyrgQIgey/MIZ8Wczw==" - "resolved" "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-6.0.4.tgz" - "version" "6.0.4" +postcss-focus-visible@^6.0.4: + version "6.0.4" + resolved "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-6.0.4.tgz" + integrity sha512-QcKuUU/dgNsstIK6HELFRT5Y3lbrMLEOwG+A4s5cA+fx3A3y/JTq3X9LaOj3OC3ALH0XqyrgQIgey/MIZ8Wczw== dependencies: - "postcss-selector-parser" "^6.0.9" + postcss-selector-parser "^6.0.9" -"postcss-focus-within@^3.0.0": - "integrity" "sha512-W0APui8jQeBKbCGZudW37EeMCjDeVxKgiYfIIEo8Bdh5SpB9sxds/Iq8SEuzS0Q4YFOlG7EPFulbbxujpkrV2w==" - "resolved" "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-3.0.0.tgz" - "version" "3.0.0" +postcss-focus-within@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-3.0.0.tgz" + integrity sha512-W0APui8jQeBKbCGZudW37EeMCjDeVxKgiYfIIEo8Bdh5SpB9sxds/Iq8SEuzS0Q4YFOlG7EPFulbbxujpkrV2w== dependencies: - "postcss" "^7.0.2" + postcss "^7.0.2" -"postcss-focus-within@^5.0.4": - "integrity" "sha512-vvjDN++C0mu8jz4af5d52CB184ogg/sSxAFS+oUJQq2SuCe7T5U2iIsVJtsCp2d6R4j0jr5+q3rPkBVZkXD9fQ==" - "resolved" "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-5.0.4.tgz" - "version" "5.0.4" +postcss-focus-within@^5.0.4: + version "5.0.4" + resolved "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-5.0.4.tgz" + integrity sha512-vvjDN++C0mu8jz4af5d52CB184ogg/sSxAFS+oUJQq2SuCe7T5U2iIsVJtsCp2d6R4j0jr5+q3rPkBVZkXD9fQ== dependencies: - "postcss-selector-parser" "^6.0.9" + postcss-selector-parser "^6.0.9" -"postcss-font-variant@^4.0.0": - "integrity" "sha512-I3ADQSTNtLTTd8uxZhtSOrTCQ9G4qUVKPjHiDk0bV75QSxXjVWiJVJ2VLdspGUi9fbW9BcjKJoRvxAH1pckqmA==" - "resolved" "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-4.0.1.tgz" - "version" "4.0.1" +postcss-font-variant@^4.0.0: + version "4.0.1" + resolved "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-4.0.1.tgz" + integrity sha512-I3ADQSTNtLTTd8uxZhtSOrTCQ9G4qUVKPjHiDk0bV75QSxXjVWiJVJ2VLdspGUi9fbW9BcjKJoRvxAH1pckqmA== dependencies: - "postcss" "^7.0.2" + postcss "^7.0.2" -"postcss-font-variant@^5.0.0": - "integrity" "sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==" - "resolved" "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz" - "version" "5.0.0" +postcss-font-variant@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz" + integrity sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA== -"postcss-gap-properties@^2.0.0": - "integrity" "sha512-QZSqDaMgXCHuHTEzMsS2KfVDOq7ZFiknSpkrPJY6jmxbugUPTuSzs/vuE5I3zv0WAS+3vhrlqhijiprnuQfzmg==" - "resolved" "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-2.0.0.tgz" - "version" "2.0.0" +postcss-gap-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-2.0.0.tgz" + integrity sha512-QZSqDaMgXCHuHTEzMsS2KfVDOq7ZFiknSpkrPJY6jmxbugUPTuSzs/vuE5I3zv0WAS+3vhrlqhijiprnuQfzmg== dependencies: - "postcss" "^7.0.2" + postcss "^7.0.2" -"postcss-gap-properties@^3.0.5": - "integrity" "sha512-IuE6gKSdoUNcvkGIqdtjtcMtZIFyXZhmFd5RUlg97iVEvp1BZKV5ngsAjCjrVy+14uhGBQl9tzmi1Qwq4kqVOg==" - "resolved" "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-3.0.5.tgz" - "version" "3.0.5" +postcss-gap-properties@^3.0.5: + version "3.0.5" + resolved "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-3.0.5.tgz" + integrity sha512-IuE6gKSdoUNcvkGIqdtjtcMtZIFyXZhmFd5RUlg97iVEvp1BZKV5ngsAjCjrVy+14uhGBQl9tzmi1Qwq4kqVOg== -"postcss-image-set-function@^3.0.1": - "integrity" "sha512-oPTcFFip5LZy8Y/whto91L9xdRHCWEMs3e1MdJxhgt4jy2WYXfhkng59fH5qLXSCPN8k4n94p1Czrfe5IOkKUw==" - "resolved" "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-3.0.1.tgz" - "version" "3.0.1" +postcss-image-set-function@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-3.0.1.tgz" + integrity sha512-oPTcFFip5LZy8Y/whto91L9xdRHCWEMs3e1MdJxhgt4jy2WYXfhkng59fH5qLXSCPN8k4n94p1Czrfe5IOkKUw== dependencies: - "postcss" "^7.0.2" - "postcss-values-parser" "^2.0.0" + postcss "^7.0.2" + postcss-values-parser "^2.0.0" -"postcss-image-set-function@^4.0.7": - "integrity" "sha512-9T2r9rsvYzm5ndsBE8WgtrMlIT7VbtTfE7b3BQnudUqnBcBo7L758oc+o+pdj/dUV0l5wjwSdjeOH2DZtfv8qw==" - "resolved" "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-4.0.7.tgz" - "version" "4.0.7" +postcss-image-set-function@^4.0.7: + version "4.0.7" + resolved "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-4.0.7.tgz" + integrity sha512-9T2r9rsvYzm5ndsBE8WgtrMlIT7VbtTfE7b3BQnudUqnBcBo7L758oc+o+pdj/dUV0l5wjwSdjeOH2DZtfv8qw== dependencies: - "postcss-value-parser" "^4.2.0" + postcss-value-parser "^4.2.0" -"postcss-import@^14.1.0": - "integrity" "sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==" - "resolved" "https://registry.npmjs.org/postcss-import/-/postcss-import-14.1.0.tgz" - "version" "14.1.0" +postcss-import@^14.1.0: + version "14.1.0" + resolved "https://registry.npmjs.org/postcss-import/-/postcss-import-14.1.0.tgz" + integrity sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw== dependencies: - "postcss-value-parser" "^4.0.0" - "read-cache" "^1.0.0" - "resolve" "^1.1.7" + postcss-value-parser "^4.0.0" + read-cache "^1.0.0" + resolve "^1.1.7" -"postcss-initial@^3.0.0": - "integrity" "sha512-3RLn6DIpMsK1l5UUy9jxQvoDeUN4gP939tDcKUHD/kM8SGSKbFAnvkpFpj3Bhtz3HGk1jWY5ZNWX6mPta5M9fg==" - "resolved" "https://registry.npmjs.org/postcss-initial/-/postcss-initial-3.0.4.tgz" - "version" "3.0.4" +postcss-initial@^3.0.0: + version "3.0.4" + resolved "https://registry.npmjs.org/postcss-initial/-/postcss-initial-3.0.4.tgz" + integrity sha512-3RLn6DIpMsK1l5UUy9jxQvoDeUN4gP939tDcKUHD/kM8SGSKbFAnvkpFpj3Bhtz3HGk1jWY5ZNWX6mPta5M9fg== dependencies: - "postcss" "^7.0.2" + postcss "^7.0.2" -"postcss-initial@^4.0.1": - "integrity" "sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ==" - "resolved" "https://registry.npmjs.org/postcss-initial/-/postcss-initial-4.0.1.tgz" - "version" "4.0.1" +postcss-initial@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/postcss-initial/-/postcss-initial-4.0.1.tgz" + integrity sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ== -"postcss-js@^4.0.0": - "integrity" "sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==" - "resolved" "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.0.tgz" - "version" "4.0.0" +postcss-js@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.0.tgz" + integrity sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ== dependencies: - "camelcase-css" "^2.0.1" + camelcase-css "^2.0.1" -"postcss-lab-function@^2.0.1": - "integrity" "sha512-whLy1IeZKY+3fYdqQFuDBf8Auw+qFuVnChWjmxm/UhHWqNHZx+B99EwxTvGYmUBqe3Fjxs4L1BoZTJmPu6usVg==" - "resolved" "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-2.0.1.tgz" - "version" "2.0.1" +postcss-lab-function@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-2.0.1.tgz" + integrity sha512-whLy1IeZKY+3fYdqQFuDBf8Auw+qFuVnChWjmxm/UhHWqNHZx+B99EwxTvGYmUBqe3Fjxs4L1BoZTJmPu6usVg== dependencies: "@csstools/convert-colors" "^1.4.0" - "postcss" "^7.0.2" - "postcss-values-parser" "^2.0.0" + postcss "^7.0.2" + postcss-values-parser "^2.0.0" -"postcss-lab-function@^4.2.1": - "integrity" "sha512-xuXll4isR03CrQsmxyz92LJB2xX9n+pZJ5jE9JgcnmsCammLyKdlzrBin+25dy6wIjfhJpKBAN80gsTlCgRk2w==" - "resolved" "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-4.2.1.tgz" - "version" "4.2.1" +postcss-lab-function@^4.2.1: + version "4.2.1" + resolved "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-4.2.1.tgz" + integrity sha512-xuXll4isR03CrQsmxyz92LJB2xX9n+pZJ5jE9JgcnmsCammLyKdlzrBin+25dy6wIjfhJpKBAN80gsTlCgRk2w== dependencies: "@csstools/postcss-progressive-custom-properties" "^1.1.0" - "postcss-value-parser" "^4.2.0" + postcss-value-parser "^4.2.0" -"postcss-load-config@^2.0.0": - "integrity" "sha512-/rDeGV6vMUo3mwJZmeHfEDvwnTKKqQ0S7OHUi/kJvvtx3aWtyWG2/0ZWnzCt2keEclwN6Tf0DST2v9kITdOKYw==" - "resolved" "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.1.2.tgz" - "version" "2.1.2" +postcss-load-config@^2.0.0: + version "2.1.2" + resolved "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.1.2.tgz" + integrity sha512-/rDeGV6vMUo3mwJZmeHfEDvwnTKKqQ0S7OHUi/kJvvtx3aWtyWG2/0ZWnzCt2keEclwN6Tf0DST2v9kITdOKYw== dependencies: - "cosmiconfig" "^5.0.0" - "import-cwd" "^2.0.0" + cosmiconfig "^5.0.0" + import-cwd "^2.0.0" -"postcss-load-config@^3.1.4": - "integrity" "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==" - "resolved" "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz" - "version" "3.1.4" +postcss-load-config@^3.1.4: + version "3.1.4" + resolved "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz" + integrity sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg== dependencies: - "lilconfig" "^2.0.5" - "yaml" "^1.10.2" + lilconfig "^2.0.5" + yaml "^1.10.2" -"postcss-loader@^4.2.0": - "integrity" "sha512-M/dSoIiNDOo8Rk0mUqoj4kpGq91gcxCfb9PoyZVdZ76/AuhxylHDYZblNE8o+EQ9AMSASeMFEKxZf5aU6wlx1Q==" - "resolved" "https://registry.npmjs.org/postcss-loader/-/postcss-loader-4.3.0.tgz" - "version" "4.3.0" +postcss-loader@3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/postcss-loader/-/postcss-loader-3.0.0.tgz" + integrity sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA== dependencies: - "cosmiconfig" "^7.0.0" - "klona" "^2.0.4" - "loader-utils" "^2.0.0" - "schema-utils" "^3.0.0" - "semver" "^7.3.4" + loader-utils "^1.1.0" + postcss "^7.0.0" + postcss-load-config "^2.0.0" + schema-utils "^1.0.0" -"postcss-loader@^6.2.1": - "integrity" "sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q==" - "resolved" "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.2.1.tgz" - "version" "6.2.1" +postcss-loader@^4.2.0: + version "4.3.0" + resolved "https://registry.npmjs.org/postcss-loader/-/postcss-loader-4.3.0.tgz" + integrity sha512-M/dSoIiNDOo8Rk0mUqoj4kpGq91gcxCfb9PoyZVdZ76/AuhxylHDYZblNE8o+EQ9AMSASeMFEKxZf5aU6wlx1Q== dependencies: - "cosmiconfig" "^7.0.0" - "klona" "^2.0.5" - "semver" "^7.3.5" + cosmiconfig "^7.0.0" + klona "^2.0.4" + loader-utils "^2.0.0" + schema-utils "^3.0.0" + semver "^7.3.4" -"postcss-loader@3.0.0": - "integrity" "sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA==" - "resolved" "https://registry.npmjs.org/postcss-loader/-/postcss-loader-3.0.0.tgz" - "version" "3.0.0" +postcss-loader@^6.2.1: + version "6.2.1" + resolved "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.2.1.tgz" + integrity sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q== dependencies: - "loader-utils" "^1.1.0" - "postcss" "^7.0.0" - "postcss-load-config" "^2.0.0" - "schema-utils" "^1.0.0" + cosmiconfig "^7.0.0" + klona "^2.0.5" + semver "^7.3.5" -"postcss-logical@^3.0.0": - "integrity" "sha512-1SUKdJc2vuMOmeItqGuNaC+N8MzBWFWEkAnRnLpFYj1tGGa7NqyVBujfRtgNa2gXR+6RkGUiB2O5Vmh7E2RmiA==" - "resolved" "https://registry.npmjs.org/postcss-logical/-/postcss-logical-3.0.0.tgz" - "version" "3.0.0" +postcss-logical@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/postcss-logical/-/postcss-logical-3.0.0.tgz" + integrity sha512-1SUKdJc2vuMOmeItqGuNaC+N8MzBWFWEkAnRnLpFYj1tGGa7NqyVBujfRtgNa2gXR+6RkGUiB2O5Vmh7E2RmiA== dependencies: - "postcss" "^7.0.2" + postcss "^7.0.2" -"postcss-logical@^5.0.4": - "integrity" "sha512-RHXxplCeLh9VjinvMrZONq7im4wjWGlRJAqmAVLXyZaXwfDWP73/oq4NdIp+OZwhQUMj0zjqDfM5Fj7qby+B4g==" - "resolved" "https://registry.npmjs.org/postcss-logical/-/postcss-logical-5.0.4.tgz" - "version" "5.0.4" +postcss-logical@^5.0.4: + version "5.0.4" + resolved "https://registry.npmjs.org/postcss-logical/-/postcss-logical-5.0.4.tgz" + integrity sha512-RHXxplCeLh9VjinvMrZONq7im4wjWGlRJAqmAVLXyZaXwfDWP73/oq4NdIp+OZwhQUMj0zjqDfM5Fj7qby+B4g== -"postcss-media-minmax@^4.0.0": - "integrity" "sha512-fo9moya6qyxsjbFAYl97qKO9gyre3qvbMnkOZeZwlsW6XYFsvs2DMGDlchVLfAd8LHPZDxivu/+qW2SMQeTHBw==" - "resolved" "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-4.0.0.tgz" - "version" "4.0.0" +postcss-media-minmax@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-4.0.0.tgz" + integrity sha512-fo9moya6qyxsjbFAYl97qKO9gyre3qvbMnkOZeZwlsW6XYFsvs2DMGDlchVLfAd8LHPZDxivu/+qW2SMQeTHBw== dependencies: - "postcss" "^7.0.2" + postcss "^7.0.2" -"postcss-media-minmax@^5.0.0": - "integrity" "sha512-yDUvFf9QdFZTuCUg0g0uNSHVlJ5X1lSzDZjPSFaiCWvjgsvu8vEVxtahPrLMinIDEEGnx6cBe6iqdx5YWz08wQ==" - "resolved" "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-5.0.0.tgz" - "version" "5.0.0" +postcss-media-minmax@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-5.0.0.tgz" + integrity sha512-yDUvFf9QdFZTuCUg0g0uNSHVlJ5X1lSzDZjPSFaiCWvjgsvu8vEVxtahPrLMinIDEEGnx6cBe6iqdx5YWz08wQ== -"postcss-merge-longhand@^4.0.11": - "integrity" "sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==" - "resolved" "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz" - "version" "4.0.11" +postcss-merge-longhand@^4.0.11: + version "4.0.11" + resolved "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz" + integrity sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw== dependencies: - "css-color-names" "0.0.4" - "postcss" "^7.0.0" - "postcss-value-parser" "^3.0.0" - "stylehacks" "^4.0.0" + css-color-names "0.0.4" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + stylehacks "^4.0.0" -"postcss-merge-longhand@^5.1.7": - "integrity" "sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==" - "resolved" "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.7.tgz" - "version" "5.1.7" +postcss-merge-longhand@^5.1.7: + version "5.1.7" + resolved "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.7.tgz" + integrity sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ== dependencies: - "postcss-value-parser" "^4.2.0" - "stylehacks" "^5.1.1" + postcss-value-parser "^4.2.0" + stylehacks "^5.1.1" -"postcss-merge-rules@^4.0.3": - "integrity" "sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==" - "resolved" "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz" - "version" "4.0.3" +postcss-merge-rules@^4.0.3: + version "4.0.3" + resolved "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz" + integrity sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ== dependencies: - "browserslist" "^4.0.0" - "caniuse-api" "^3.0.0" - "cssnano-util-same-parent" "^4.0.0" - "postcss" "^7.0.0" - "postcss-selector-parser" "^3.0.0" - "vendors" "^1.0.0" + browserslist "^4.0.0" + caniuse-api "^3.0.0" + cssnano-util-same-parent "^4.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + vendors "^1.0.0" -"postcss-merge-rules@^5.1.3": - "integrity" "sha512-LbLd7uFC00vpOuMvyZop8+vvhnfRGpp2S+IMQKeuOZZapPRY4SMq5ErjQeHbHsjCUgJkRNrlU+LmxsKIqPKQlA==" - "resolved" "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.3.tgz" - "version" "5.1.3" +postcss-merge-rules@^5.1.3: + version "5.1.3" + resolved "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.3.tgz" + integrity sha512-LbLd7uFC00vpOuMvyZop8+vvhnfRGpp2S+IMQKeuOZZapPRY4SMq5ErjQeHbHsjCUgJkRNrlU+LmxsKIqPKQlA== dependencies: - "browserslist" "^4.21.4" - "caniuse-api" "^3.0.0" - "cssnano-utils" "^3.1.0" - "postcss-selector-parser" "^6.0.5" + browserslist "^4.21.4" + caniuse-api "^3.0.0" + cssnano-utils "^3.1.0" + postcss-selector-parser "^6.0.5" -"postcss-minify-font-values@^4.0.2": - "integrity" "sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==" - "resolved" "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz" - "version" "4.0.2" +postcss-minify-font-values@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz" + integrity sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg== dependencies: - "postcss" "^7.0.0" - "postcss-value-parser" "^3.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" -"postcss-minify-font-values@^5.1.0": - "integrity" "sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==" - "resolved" "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz" - "version" "5.1.0" +postcss-minify-font-values@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz" + integrity sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA== dependencies: - "postcss-value-parser" "^4.2.0" + postcss-value-parser "^4.2.0" -"postcss-minify-gradients@^4.0.2": - "integrity" "sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==" - "resolved" "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz" - "version" "4.0.2" +postcss-minify-gradients@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz" + integrity sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q== dependencies: - "cssnano-util-get-arguments" "^4.0.0" - "is-color-stop" "^1.0.0" - "postcss" "^7.0.0" - "postcss-value-parser" "^3.0.0" + cssnano-util-get-arguments "^4.0.0" + is-color-stop "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" -"postcss-minify-gradients@^5.1.1": - "integrity" "sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==" - "resolved" "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz" - "version" "5.1.1" +postcss-minify-gradients@^5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz" + integrity sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw== dependencies: - "colord" "^2.9.1" - "cssnano-utils" "^3.1.0" - "postcss-value-parser" "^4.2.0" + colord "^2.9.1" + cssnano-utils "^3.1.0" + postcss-value-parser "^4.2.0" -"postcss-minify-params@^4.0.2": - "integrity" "sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==" - "resolved" "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz" - "version" "4.0.2" +postcss-minify-params@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz" + integrity sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg== dependencies: - "alphanum-sort" "^1.0.0" - "browserslist" "^4.0.0" - "cssnano-util-get-arguments" "^4.0.0" - "postcss" "^7.0.0" - "postcss-value-parser" "^3.0.0" - "uniqs" "^2.0.0" + alphanum-sort "^1.0.0" + browserslist "^4.0.0" + cssnano-util-get-arguments "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + uniqs "^2.0.0" -"postcss-minify-params@^5.1.4": - "integrity" "sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==" - "resolved" "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.4.tgz" - "version" "5.1.4" +postcss-minify-params@^5.1.4: + version "5.1.4" + resolved "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.4.tgz" + integrity sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw== dependencies: - "browserslist" "^4.21.4" - "cssnano-utils" "^3.1.0" - "postcss-value-parser" "^4.2.0" + browserslist "^4.21.4" + cssnano-utils "^3.1.0" + postcss-value-parser "^4.2.0" -"postcss-minify-selectors@^4.0.2": - "integrity" "sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==" - "resolved" "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz" - "version" "4.0.2" +postcss-minify-selectors@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz" + integrity sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g== dependencies: - "alphanum-sort" "^1.0.0" - "has" "^1.0.0" - "postcss" "^7.0.0" - "postcss-selector-parser" "^3.0.0" + alphanum-sort "^1.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" -"postcss-minify-selectors@^5.2.1": - "integrity" "sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==" - "resolved" "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz" - "version" "5.2.1" +postcss-minify-selectors@^5.2.1: + version "5.2.1" + resolved "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz" + integrity sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg== dependencies: - "postcss-selector-parser" "^6.0.5" + postcss-selector-parser "^6.0.5" -"postcss-modules-extract-imports@^2.0.0": - "integrity" "sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==" - "resolved" "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz" - "version" "2.0.0" +postcss-modules-extract-imports@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz" + integrity sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ== dependencies: - "postcss" "^7.0.5" + postcss "^7.0.5" -"postcss-modules-extract-imports@^3.0.0": - "integrity" "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==" - "resolved" "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz" - "version" "3.0.0" +postcss-modules-extract-imports@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz" + integrity sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw== -"postcss-modules-local-by-default@^3.0.2": - "integrity" "sha512-e3xDq+LotiGesympRlKNgaJ0PCzoUIdpH0dj47iWAui/kyTgh3CiAr1qP54uodmJhl6p9rN6BoNcdEDVJx9RDw==" - "resolved" "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.3.tgz" - "version" "3.0.3" +postcss-modules-local-by-default@^3.0.2: + version "3.0.3" + resolved "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.3.tgz" + integrity sha512-e3xDq+LotiGesympRlKNgaJ0PCzoUIdpH0dj47iWAui/kyTgh3CiAr1qP54uodmJhl6p9rN6BoNcdEDVJx9RDw== dependencies: - "icss-utils" "^4.1.1" - "postcss" "^7.0.32" - "postcss-selector-parser" "^6.0.2" - "postcss-value-parser" "^4.1.0" + icss-utils "^4.1.1" + postcss "^7.0.32" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.1.0" -"postcss-modules-local-by-default@^4.0.0": - "integrity" "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==" - "resolved" "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz" - "version" "4.0.0" +postcss-modules-local-by-default@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz" + integrity sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ== dependencies: - "icss-utils" "^5.0.0" - "postcss-selector-parser" "^6.0.2" - "postcss-value-parser" "^4.1.0" + icss-utils "^5.0.0" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.1.0" -"postcss-modules-scope@^2.2.0": - "integrity" "sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ==" - "resolved" "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz" - "version" "2.2.0" +postcss-modules-scope@^2.2.0: + version "2.2.0" + resolved "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz" + integrity sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ== dependencies: - "postcss" "^7.0.6" - "postcss-selector-parser" "^6.0.0" + postcss "^7.0.6" + postcss-selector-parser "^6.0.0" -"postcss-modules-scope@^3.0.0": - "integrity" "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==" - "resolved" "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz" - "version" "3.0.0" +postcss-modules-scope@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz" + integrity sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg== dependencies: - "postcss-selector-parser" "^6.0.4" + postcss-selector-parser "^6.0.4" -"postcss-modules-values@^3.0.0": - "integrity" "sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg==" - "resolved" "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz" - "version" "3.0.0" +postcss-modules-values@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz" + integrity sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg== dependencies: - "icss-utils" "^4.0.0" - "postcss" "^7.0.6" + icss-utils "^4.0.0" + postcss "^7.0.6" -"postcss-modules-values@^4.0.0": - "integrity" "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==" - "resolved" "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz" - "version" "4.0.0" +postcss-modules-values@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz" + integrity sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ== dependencies: - "icss-utils" "^5.0.0" + icss-utils "^5.0.0" -"postcss-nested@6.0.0": - "integrity" "sha512-0DkamqrPcmkBDsLn+vQDIrtkSbNkv5AD/M322ySo9kqFkCIYklym2xEmWkwo+Y3/qZo34tzEPNUw4y7yMCdv5w==" - "resolved" "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.0.tgz" - "version" "6.0.0" +postcss-nested@6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.0.tgz" + integrity sha512-0DkamqrPcmkBDsLn+vQDIrtkSbNkv5AD/M322ySo9kqFkCIYklym2xEmWkwo+Y3/qZo34tzEPNUw4y7yMCdv5w== dependencies: - "postcss-selector-parser" "^6.0.10" + postcss-selector-parser "^6.0.10" -"postcss-nesting@^10.2.0": - "integrity" "sha512-EwMkYchxiDiKUhlJGzWsD9b2zvq/r2SSubcRrgP+jujMXFzqvANLt16lJANC+5uZ6hjI7lpRmI6O8JIl+8l1KA==" - "resolved" "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-10.2.0.tgz" - "version" "10.2.0" +postcss-nesting@^10.2.0: + version "10.2.0" + resolved "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-10.2.0.tgz" + integrity sha512-EwMkYchxiDiKUhlJGzWsD9b2zvq/r2SSubcRrgP+jujMXFzqvANLt16lJANC+5uZ6hjI7lpRmI6O8JIl+8l1KA== dependencies: "@csstools/selector-specificity" "^2.0.0" - "postcss-selector-parser" "^6.0.10" + postcss-selector-parser "^6.0.10" -"postcss-nesting@^7.0.0": - "integrity" "sha512-FrorPb0H3nuVq0Sff7W2rnc3SmIcruVC6YwpcS+k687VxyxO33iE1amna7wHuRVzM8vfiYofXSBHNAZ3QhLvYg==" - "resolved" "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-7.0.1.tgz" - "version" "7.0.1" +postcss-nesting@^7.0.0: + version "7.0.1" + resolved "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-7.0.1.tgz" + integrity sha512-FrorPb0H3nuVq0Sff7W2rnc3SmIcruVC6YwpcS+k687VxyxO33iE1amna7wHuRVzM8vfiYofXSBHNAZ3QhLvYg== dependencies: - "postcss" "^7.0.2" + postcss "^7.0.2" -"postcss-normalize-charset@^4.0.1": - "integrity" "sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==" - "resolved" "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz" - "version" "4.0.1" +postcss-normalize-charset@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz" + integrity sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g== dependencies: - "postcss" "^7.0.0" + postcss "^7.0.0" -"postcss-normalize-charset@^5.1.0": - "integrity" "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==" - "resolved" "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz" - "version" "5.1.0" +postcss-normalize-charset@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz" + integrity sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg== -"postcss-normalize-display-values@^4.0.2": - "integrity" "sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==" - "resolved" "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz" - "version" "4.0.2" +postcss-normalize-display-values@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz" + integrity sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ== dependencies: - "cssnano-util-get-match" "^4.0.0" - "postcss" "^7.0.0" - "postcss-value-parser" "^3.0.0" + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" -"postcss-normalize-display-values@^5.1.0": - "integrity" "sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==" - "resolved" "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz" - "version" "5.1.0" +postcss-normalize-display-values@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz" + integrity sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA== dependencies: - "postcss-value-parser" "^4.2.0" + postcss-value-parser "^4.2.0" -"postcss-normalize-positions@^4.0.2": - "integrity" "sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==" - "resolved" "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz" - "version" "4.0.2" +postcss-normalize-positions@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz" + integrity sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA== dependencies: - "cssnano-util-get-arguments" "^4.0.0" - "has" "^1.0.0" - "postcss" "^7.0.0" - "postcss-value-parser" "^3.0.0" + cssnano-util-get-arguments "^4.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" -"postcss-normalize-positions@^5.1.1": - "integrity" "sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==" - "resolved" "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz" - "version" "5.1.1" +postcss-normalize-positions@^5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz" + integrity sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg== dependencies: - "postcss-value-parser" "^4.2.0" + postcss-value-parser "^4.2.0" -"postcss-normalize-repeat-style@^4.0.2": - "integrity" "sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==" - "resolved" "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz" - "version" "4.0.2" +postcss-normalize-repeat-style@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz" + integrity sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q== dependencies: - "cssnano-util-get-arguments" "^4.0.0" - "cssnano-util-get-match" "^4.0.0" - "postcss" "^7.0.0" - "postcss-value-parser" "^3.0.0" + cssnano-util-get-arguments "^4.0.0" + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" -"postcss-normalize-repeat-style@^5.1.1": - "integrity" "sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==" - "resolved" "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz" - "version" "5.1.1" +postcss-normalize-repeat-style@^5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz" + integrity sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g== dependencies: - "postcss-value-parser" "^4.2.0" + postcss-value-parser "^4.2.0" -"postcss-normalize-string@^4.0.2": - "integrity" "sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==" - "resolved" "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz" - "version" "4.0.2" +postcss-normalize-string@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz" + integrity sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA== dependencies: - "has" "^1.0.0" - "postcss" "^7.0.0" - "postcss-value-parser" "^3.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" -"postcss-normalize-string@^5.1.0": - "integrity" "sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==" - "resolved" "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz" - "version" "5.1.0" +postcss-normalize-string@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz" + integrity sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w== dependencies: - "postcss-value-parser" "^4.2.0" + postcss-value-parser "^4.2.0" -"postcss-normalize-timing-functions@^4.0.2": - "integrity" "sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==" - "resolved" "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz" - "version" "4.0.2" +postcss-normalize-timing-functions@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz" + integrity sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A== dependencies: - "cssnano-util-get-match" "^4.0.0" - "postcss" "^7.0.0" - "postcss-value-parser" "^3.0.0" + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" -"postcss-normalize-timing-functions@^5.1.0": - "integrity" "sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==" - "resolved" "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz" - "version" "5.1.0" +postcss-normalize-timing-functions@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz" + integrity sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg== dependencies: - "postcss-value-parser" "^4.2.0" + postcss-value-parser "^4.2.0" -"postcss-normalize-unicode@^4.0.1": - "integrity" "sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==" - "resolved" "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz" - "version" "4.0.1" +postcss-normalize-unicode@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz" + integrity sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg== dependencies: - "browserslist" "^4.0.0" - "postcss" "^7.0.0" - "postcss-value-parser" "^3.0.0" + browserslist "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" -"postcss-normalize-unicode@^5.1.1": - "integrity" "sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==" - "resolved" "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.1.tgz" - "version" "5.1.1" +postcss-normalize-unicode@^5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.1.tgz" + integrity sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA== dependencies: - "browserslist" "^4.21.4" - "postcss-value-parser" "^4.2.0" + browserslist "^4.21.4" + postcss-value-parser "^4.2.0" -"postcss-normalize-url@^4.0.1": - "integrity" "sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==" - "resolved" "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz" - "version" "4.0.1" +postcss-normalize-url@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz" + integrity sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA== dependencies: - "is-absolute-url" "^2.0.0" - "normalize-url" "^3.0.0" - "postcss" "^7.0.0" - "postcss-value-parser" "^3.0.0" + is-absolute-url "^2.0.0" + normalize-url "^3.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" -"postcss-normalize-url@^5.1.0": - "integrity" "sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==" - "resolved" "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz" - "version" "5.1.0" +postcss-normalize-url@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz" + integrity sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew== dependencies: - "normalize-url" "^6.0.1" - "postcss-value-parser" "^4.2.0" + normalize-url "^6.0.1" + postcss-value-parser "^4.2.0" -"postcss-normalize-whitespace@^4.0.2": - "integrity" "sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==" - "resolved" "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz" - "version" "4.0.2" +postcss-normalize-whitespace@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz" + integrity sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA== dependencies: - "postcss" "^7.0.0" - "postcss-value-parser" "^3.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" -"postcss-normalize-whitespace@^5.1.1": - "integrity" "sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==" - "resolved" "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz" - "version" "5.1.1" +postcss-normalize-whitespace@^5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz" + integrity sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA== dependencies: - "postcss-value-parser" "^4.2.0" + postcss-value-parser "^4.2.0" -"postcss-normalize@^10.0.1": - "integrity" "sha512-+5w18/rDev5mqERcG3W5GZNMJa1eoYYNGo8gB7tEwaos0ajk3ZXAI4mHGcNT47NE+ZnZD1pEpUOFLvltIwmeJA==" - "resolved" "https://registry.npmjs.org/postcss-normalize/-/postcss-normalize-10.0.1.tgz" - "version" "10.0.1" - dependencies: - "@csstools/normalize.css" "*" - "postcss-browser-comments" "^4" - "sanitize.css" "*" - -"postcss-normalize@8.0.1": - "integrity" "sha512-rt9JMS/m9FHIRroDDBGSMsyW1c0fkvOJPy62ggxSHUldJO7B195TqFMqIf+lY5ezpDcYOV4j86aUp3/XbxzCCQ==" - "resolved" "https://registry.npmjs.org/postcss-normalize/-/postcss-normalize-8.0.1.tgz" - "version" "8.0.1" +postcss-normalize@8.0.1: + version "8.0.1" + resolved "https://registry.npmjs.org/postcss-normalize/-/postcss-normalize-8.0.1.tgz" + integrity sha512-rt9JMS/m9FHIRroDDBGSMsyW1c0fkvOJPy62ggxSHUldJO7B195TqFMqIf+lY5ezpDcYOV4j86aUp3/XbxzCCQ== dependencies: "@csstools/normalize.css" "^10.1.0" - "browserslist" "^4.6.2" - "postcss" "^7.0.17" - "postcss-browser-comments" "^3.0.0" - "sanitize.css" "^10.0.0" + browserslist "^4.6.2" + postcss "^7.0.17" + postcss-browser-comments "^3.0.0" + sanitize.css "^10.0.0" -"postcss-opacity-percentage@^1.1.2": - "integrity" "sha512-lyUfF7miG+yewZ8EAk9XUBIlrHyUE6fijnesuz+Mj5zrIHIEw6KcIZSOk/elVMqzLvREmXB83Zi/5QpNRYd47w==" - "resolved" "https://registry.npmjs.org/postcss-opacity-percentage/-/postcss-opacity-percentage-1.1.2.tgz" - "version" "1.1.2" - -"postcss-ordered-values@^4.1.2": - "integrity" "sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==" - "resolved" "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz" - "version" "4.1.2" +postcss-normalize@^10.0.1: + version "10.0.1" + resolved "https://registry.npmjs.org/postcss-normalize/-/postcss-normalize-10.0.1.tgz" + integrity sha512-+5w18/rDev5mqERcG3W5GZNMJa1eoYYNGo8gB7tEwaos0ajk3ZXAI4mHGcNT47NE+ZnZD1pEpUOFLvltIwmeJA== dependencies: - "cssnano-util-get-arguments" "^4.0.0" - "postcss" "^7.0.0" - "postcss-value-parser" "^3.0.0" + "@csstools/normalize.css" "*" + postcss-browser-comments "^4" + sanitize.css "*" -"postcss-ordered-values@^5.1.3": - "integrity" "sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==" - "resolved" "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz" - "version" "5.1.3" +postcss-opacity-percentage@^1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/postcss-opacity-percentage/-/postcss-opacity-percentage-1.1.2.tgz" + integrity sha512-lyUfF7miG+yewZ8EAk9XUBIlrHyUE6fijnesuz+Mj5zrIHIEw6KcIZSOk/elVMqzLvREmXB83Zi/5QpNRYd47w== + +postcss-ordered-values@^4.1.2: + version "4.1.2" + resolved "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz" + integrity sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw== dependencies: - "cssnano-utils" "^3.1.0" - "postcss-value-parser" "^4.2.0" + cssnano-util-get-arguments "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" -"postcss-overflow-shorthand@^2.0.0": - "integrity" "sha512-aK0fHc9CBNx8jbzMYhshZcEv8LtYnBIRYQD5i7w/K/wS9c2+0NSR6B3OVMu5y0hBHYLcMGjfU+dmWYNKH0I85g==" - "resolved" "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-2.0.0.tgz" - "version" "2.0.0" +postcss-ordered-values@^5.1.3: + version "5.1.3" + resolved "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz" + integrity sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ== dependencies: - "postcss" "^7.0.2" + cssnano-utils "^3.1.0" + postcss-value-parser "^4.2.0" -"postcss-overflow-shorthand@^3.0.4": - "integrity" "sha512-otYl/ylHK8Y9bcBnPLo3foYFLL6a6Ak+3EQBPOTR7luMYCOsiVTUk1iLvNf6tVPNGXcoL9Hoz37kpfriRIFb4A==" - "resolved" "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-3.0.4.tgz" - "version" "3.0.4" +postcss-overflow-shorthand@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-2.0.0.tgz" + integrity sha512-aK0fHc9CBNx8jbzMYhshZcEv8LtYnBIRYQD5i7w/K/wS9c2+0NSR6B3OVMu5y0hBHYLcMGjfU+dmWYNKH0I85g== dependencies: - "postcss-value-parser" "^4.2.0" + postcss "^7.0.2" -"postcss-page-break@^2.0.0": - "integrity" "sha512-tkpTSrLpfLfD9HvgOlJuigLuk39wVTbbd8RKcy8/ugV2bNBUW3xU+AIqyxhDrQr1VUj1RmyJrBn1YWrqUm9zAQ==" - "resolved" "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-2.0.0.tgz" - "version" "2.0.0" +postcss-overflow-shorthand@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-3.0.4.tgz" + integrity sha512-otYl/ylHK8Y9bcBnPLo3foYFLL6a6Ak+3EQBPOTR7luMYCOsiVTUk1iLvNf6tVPNGXcoL9Hoz37kpfriRIFb4A== dependencies: - "postcss" "^7.0.2" + postcss-value-parser "^4.2.0" -"postcss-page-break@^3.0.4": - "integrity" "sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==" - "resolved" "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-3.0.4.tgz" - "version" "3.0.4" - -"postcss-place@^4.0.1": - "integrity" "sha512-Zb6byCSLkgRKLODj/5mQugyuj9bvAAw9LqJJjgwz5cYryGeXfFZfSXoP1UfveccFmeq0b/2xxwcTEVScnqGxBg==" - "resolved" "https://registry.npmjs.org/postcss-place/-/postcss-place-4.0.1.tgz" - "version" "4.0.1" +postcss-page-break@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-2.0.0.tgz" + integrity sha512-tkpTSrLpfLfD9HvgOlJuigLuk39wVTbbd8RKcy8/ugV2bNBUW3xU+AIqyxhDrQr1VUj1RmyJrBn1YWrqUm9zAQ== dependencies: - "postcss" "^7.0.2" - "postcss-values-parser" "^2.0.0" + postcss "^7.0.2" -"postcss-place@^7.0.5": - "integrity" "sha512-wR8igaZROA6Z4pv0d+bvVrvGY4GVHihBCBQieXFY3kuSuMyOmEnnfFzHl/tQuqHZkfkIVBEbDvYcFfHmpSet9g==" - "resolved" "https://registry.npmjs.org/postcss-place/-/postcss-place-7.0.5.tgz" - "version" "7.0.5" +postcss-page-break@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-3.0.4.tgz" + integrity sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ== + +postcss-place@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/postcss-place/-/postcss-place-4.0.1.tgz" + integrity sha512-Zb6byCSLkgRKLODj/5mQugyuj9bvAAw9LqJJjgwz5cYryGeXfFZfSXoP1UfveccFmeq0b/2xxwcTEVScnqGxBg== dependencies: - "postcss-value-parser" "^4.2.0" + postcss "^7.0.2" + postcss-values-parser "^2.0.0" -"postcss-preset-env@^7.0.1": - "integrity" "sha512-T1LgRm5uEVFSEF83vHZJV2z19lHg4yJuZ6gXZZkqVsqv63nlr6zabMH3l4Pc01FQCyfWVrh2GaUeCVy9Po+Aag==" - "resolved" "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-7.8.3.tgz" - "version" "7.8.3" +postcss-place@^7.0.5: + version "7.0.5" + resolved "https://registry.npmjs.org/postcss-place/-/postcss-place-7.0.5.tgz" + integrity sha512-wR8igaZROA6Z4pv0d+bvVrvGY4GVHihBCBQieXFY3kuSuMyOmEnnfFzHl/tQuqHZkfkIVBEbDvYcFfHmpSet9g== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-preset-env@6.7.0: + version "6.7.0" + resolved "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-6.7.0.tgz" + integrity sha512-eU4/K5xzSFwUFJ8hTdTQzo2RBLbDVt83QZrAvI07TULOkmyQlnYlpwep+2yIK+K+0KlZO4BvFcleOCCcUtwchg== + dependencies: + autoprefixer "^9.6.1" + browserslist "^4.6.4" + caniuse-lite "^1.0.30000981" + css-blank-pseudo "^0.1.4" + css-has-pseudo "^0.10.0" + css-prefers-color-scheme "^3.1.1" + cssdb "^4.4.0" + postcss "^7.0.17" + postcss-attribute-case-insensitive "^4.0.1" + postcss-color-functional-notation "^2.0.1" + postcss-color-gray "^5.0.0" + postcss-color-hex-alpha "^5.0.3" + postcss-color-mod-function "^3.0.3" + postcss-color-rebeccapurple "^4.0.1" + postcss-custom-media "^7.0.8" + postcss-custom-properties "^8.0.11" + postcss-custom-selectors "^5.1.2" + postcss-dir-pseudo-class "^5.0.0" + postcss-double-position-gradients "^1.0.0" + postcss-env-function "^2.0.2" + postcss-focus-visible "^4.0.0" + postcss-focus-within "^3.0.0" + postcss-font-variant "^4.0.0" + postcss-gap-properties "^2.0.0" + postcss-image-set-function "^3.0.1" + postcss-initial "^3.0.0" + postcss-lab-function "^2.0.1" + postcss-logical "^3.0.0" + postcss-media-minmax "^4.0.0" + postcss-nesting "^7.0.0" + postcss-overflow-shorthand "^2.0.0" + postcss-page-break "^2.0.0" + postcss-place "^4.0.1" + postcss-pseudo-class-any-link "^6.0.0" + postcss-replace-overflow-wrap "^3.0.0" + postcss-selector-matches "^4.0.0" + postcss-selector-not "^4.0.0" + +postcss-preset-env@^7.0.1: + version "7.8.3" + resolved "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-7.8.3.tgz" + integrity sha512-T1LgRm5uEVFSEF83vHZJV2z19lHg4yJuZ6gXZZkqVsqv63nlr6zabMH3l4Pc01FQCyfWVrh2GaUeCVy9Po+Aag== dependencies: "@csstools/postcss-cascade-layers" "^1.1.1" "@csstools/postcss-color-function" "^1.1.1" @@ -17595,5194 +17105,4790 @@ "@csstools/postcss-text-decoration-shorthand" "^1.0.0" "@csstools/postcss-trigonometric-functions" "^1.0.2" "@csstools/postcss-unset-value" "^1.0.2" - "autoprefixer" "^10.4.13" - "browserslist" "^4.21.4" - "css-blank-pseudo" "^3.0.3" - "css-has-pseudo" "^3.0.4" - "css-prefers-color-scheme" "^6.0.3" - "cssdb" "^7.1.0" - "postcss-attribute-case-insensitive" "^5.0.2" - "postcss-clamp" "^4.1.0" - "postcss-color-functional-notation" "^4.2.4" - "postcss-color-hex-alpha" "^8.0.4" - "postcss-color-rebeccapurple" "^7.1.1" - "postcss-custom-media" "^8.0.2" - "postcss-custom-properties" "^12.1.10" - "postcss-custom-selectors" "^6.0.3" - "postcss-dir-pseudo-class" "^6.0.5" - "postcss-double-position-gradients" "^3.1.2" - "postcss-env-function" "^4.0.6" - "postcss-focus-visible" "^6.0.4" - "postcss-focus-within" "^5.0.4" - "postcss-font-variant" "^5.0.0" - "postcss-gap-properties" "^3.0.5" - "postcss-image-set-function" "^4.0.7" - "postcss-initial" "^4.0.1" - "postcss-lab-function" "^4.2.1" - "postcss-logical" "^5.0.4" - "postcss-media-minmax" "^5.0.0" - "postcss-nesting" "^10.2.0" - "postcss-opacity-percentage" "^1.1.2" - "postcss-overflow-shorthand" "^3.0.4" - "postcss-page-break" "^3.0.4" - "postcss-place" "^7.0.5" - "postcss-pseudo-class-any-link" "^7.1.6" - "postcss-replace-overflow-wrap" "^4.0.0" - "postcss-selector-not" "^6.0.1" - "postcss-value-parser" "^4.2.0" + autoprefixer "^10.4.13" + browserslist "^4.21.4" + css-blank-pseudo "^3.0.3" + css-has-pseudo "^3.0.4" + css-prefers-color-scheme "^6.0.3" + cssdb "^7.1.0" + postcss-attribute-case-insensitive "^5.0.2" + postcss-clamp "^4.1.0" + postcss-color-functional-notation "^4.2.4" + postcss-color-hex-alpha "^8.0.4" + postcss-color-rebeccapurple "^7.1.1" + postcss-custom-media "^8.0.2" + postcss-custom-properties "^12.1.10" + postcss-custom-selectors "^6.0.3" + postcss-dir-pseudo-class "^6.0.5" + postcss-double-position-gradients "^3.1.2" + postcss-env-function "^4.0.6" + postcss-focus-visible "^6.0.4" + postcss-focus-within "^5.0.4" + postcss-font-variant "^5.0.0" + postcss-gap-properties "^3.0.5" + postcss-image-set-function "^4.0.7" + postcss-initial "^4.0.1" + postcss-lab-function "^4.2.1" + postcss-logical "^5.0.4" + postcss-media-minmax "^5.0.0" + postcss-nesting "^10.2.0" + postcss-opacity-percentage "^1.1.2" + postcss-overflow-shorthand "^3.0.4" + postcss-page-break "^3.0.4" + postcss-place "^7.0.5" + postcss-pseudo-class-any-link "^7.1.6" + postcss-replace-overflow-wrap "^4.0.0" + postcss-selector-not "^6.0.1" + postcss-value-parser "^4.2.0" -"postcss-preset-env@6.7.0": - "integrity" "sha512-eU4/K5xzSFwUFJ8hTdTQzo2RBLbDVt83QZrAvI07TULOkmyQlnYlpwep+2yIK+K+0KlZO4BvFcleOCCcUtwchg==" - "resolved" "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-6.7.0.tgz" - "version" "6.7.0" +postcss-pseudo-class-any-link@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-6.0.0.tgz" + integrity sha512-lgXW9sYJdLqtmw23otOzrtbDXofUdfYzNm4PIpNE322/swES3VU9XlXHeJS46zT2onFO7V1QFdD4Q9LiZj8mew== dependencies: - "autoprefixer" "^9.6.1" - "browserslist" "^4.6.4" - "caniuse-lite" "^1.0.30000981" - "css-blank-pseudo" "^0.1.4" - "css-has-pseudo" "^0.10.0" - "css-prefers-color-scheme" "^3.1.1" - "cssdb" "^4.4.0" - "postcss" "^7.0.17" - "postcss-attribute-case-insensitive" "^4.0.1" - "postcss-color-functional-notation" "^2.0.1" - "postcss-color-gray" "^5.0.0" - "postcss-color-hex-alpha" "^5.0.3" - "postcss-color-mod-function" "^3.0.3" - "postcss-color-rebeccapurple" "^4.0.1" - "postcss-custom-media" "^7.0.8" - "postcss-custom-properties" "^8.0.11" - "postcss-custom-selectors" "^5.1.2" - "postcss-dir-pseudo-class" "^5.0.0" - "postcss-double-position-gradients" "^1.0.0" - "postcss-env-function" "^2.0.2" - "postcss-focus-visible" "^4.0.0" - "postcss-focus-within" "^3.0.0" - "postcss-font-variant" "^4.0.0" - "postcss-gap-properties" "^2.0.0" - "postcss-image-set-function" "^3.0.1" - "postcss-initial" "^3.0.0" - "postcss-lab-function" "^2.0.1" - "postcss-logical" "^3.0.0" - "postcss-media-minmax" "^4.0.0" - "postcss-nesting" "^7.0.0" - "postcss-overflow-shorthand" "^2.0.0" - "postcss-page-break" "^2.0.0" - "postcss-place" "^4.0.1" - "postcss-pseudo-class-any-link" "^6.0.0" - "postcss-replace-overflow-wrap" "^3.0.0" - "postcss-selector-matches" "^4.0.0" - "postcss-selector-not" "^4.0.0" + postcss "^7.0.2" + postcss-selector-parser "^5.0.0-rc.3" -"postcss-pseudo-class-any-link@^6.0.0": - "integrity" "sha512-lgXW9sYJdLqtmw23otOzrtbDXofUdfYzNm4PIpNE322/swES3VU9XlXHeJS46zT2onFO7V1QFdD4Q9LiZj8mew==" - "resolved" "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-6.0.0.tgz" - "version" "6.0.0" +postcss-pseudo-class-any-link@^7.1.6: + version "7.1.6" + resolved "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-7.1.6.tgz" + integrity sha512-9sCtZkO6f/5ML9WcTLcIyV1yz9D1rf0tWc+ulKcvV30s0iZKS/ONyETvoWsr6vnrmW+X+KmuK3gV/w5EWnT37w== dependencies: - "postcss" "^7.0.2" - "postcss-selector-parser" "^5.0.0-rc.3" + postcss-selector-parser "^6.0.10" -"postcss-pseudo-class-any-link@^7.1.6": - "integrity" "sha512-9sCtZkO6f/5ML9WcTLcIyV1yz9D1rf0tWc+ulKcvV30s0iZKS/ONyETvoWsr6vnrmW+X+KmuK3gV/w5EWnT37w==" - "resolved" "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-7.1.6.tgz" - "version" "7.1.6" +postcss-reduce-initial@^4.0.3: + version "4.0.3" + resolved "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz" + integrity sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA== dependencies: - "postcss-selector-parser" "^6.0.10" + browserslist "^4.0.0" + caniuse-api "^3.0.0" + has "^1.0.0" + postcss "^7.0.0" -"postcss-reduce-initial@^4.0.3": - "integrity" "sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==" - "resolved" "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz" - "version" "4.0.3" +postcss-reduce-initial@^5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.1.tgz" + integrity sha512-//jeDqWcHPuXGZLoolFrUXBDyuEGbr9S2rMo19bkTIjBQ4PqkaO+oI8wua5BOUxpfi97i3PCoInsiFIEBfkm9w== dependencies: - "browserslist" "^4.0.0" - "caniuse-api" "^3.0.0" - "has" "^1.0.0" - "postcss" "^7.0.0" + browserslist "^4.21.4" + caniuse-api "^3.0.0" -"postcss-reduce-initial@^5.1.1": - "integrity" "sha512-//jeDqWcHPuXGZLoolFrUXBDyuEGbr9S2rMo19bkTIjBQ4PqkaO+oI8wua5BOUxpfi97i3PCoInsiFIEBfkm9w==" - "resolved" "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.1.tgz" - "version" "5.1.1" +postcss-reduce-transforms@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz" + integrity sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg== dependencies: - "browserslist" "^4.21.4" - "caniuse-api" "^3.0.0" + cssnano-util-get-match "^4.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" -"postcss-reduce-transforms@^4.0.2": - "integrity" "sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==" - "resolved" "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz" - "version" "4.0.2" +postcss-reduce-transforms@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz" + integrity sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ== dependencies: - "cssnano-util-get-match" "^4.0.0" - "has" "^1.0.0" - "postcss" "^7.0.0" - "postcss-value-parser" "^3.0.0" + postcss-value-parser "^4.2.0" -"postcss-reduce-transforms@^5.1.0": - "integrity" "sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==" - "resolved" "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz" - "version" "5.1.0" +postcss-replace-overflow-wrap@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-3.0.0.tgz" + integrity sha512-2T5hcEHArDT6X9+9dVSPQdo7QHzG4XKclFT8rU5TzJPDN7RIRTbO9c4drUISOVemLj03aezStHCR2AIcr8XLpw== dependencies: - "postcss-value-parser" "^4.2.0" + postcss "^7.0.2" -"postcss-replace-overflow-wrap@^3.0.0": - "integrity" "sha512-2T5hcEHArDT6X9+9dVSPQdo7QHzG4XKclFT8rU5TzJPDN7RIRTbO9c4drUISOVemLj03aezStHCR2AIcr8XLpw==" - "resolved" "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-3.0.0.tgz" - "version" "3.0.0" +postcss-replace-overflow-wrap@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz" + integrity sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw== + +postcss-safe-parser@4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-4.0.2.tgz" + integrity sha512-Uw6ekxSWNLCPesSv/cmqf2bY/77z11O7jZGPax3ycZMFU/oi2DMH9i89AdHc1tRwFg/arFoEwX0IS3LCUxJh1g== dependencies: - "postcss" "^7.0.2" + postcss "^7.0.26" -"postcss-replace-overflow-wrap@^4.0.0": - "integrity" "sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==" - "resolved" "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz" - "version" "4.0.0" - -"postcss-safe-parser@4.0.2": - "integrity" "sha512-Uw6ekxSWNLCPesSv/cmqf2bY/77z11O7jZGPax3ycZMFU/oi2DMH9i89AdHc1tRwFg/arFoEwX0IS3LCUxJh1g==" - "resolved" "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-4.0.2.tgz" - "version" "4.0.2" +postcss-selector-matches@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/postcss-selector-matches/-/postcss-selector-matches-4.0.0.tgz" + integrity sha512-LgsHwQR/EsRYSqlwdGzeaPKVT0Ml7LAT6E75T8W8xLJY62CE4S/l03BWIt3jT8Taq22kXP08s2SfTSzaraoPww== dependencies: - "postcss" "^7.0.26" + balanced-match "^1.0.0" + postcss "^7.0.2" -"postcss-selector-matches@^4.0.0": - "integrity" "sha512-LgsHwQR/EsRYSqlwdGzeaPKVT0Ml7LAT6E75T8W8xLJY62CE4S/l03BWIt3jT8Taq22kXP08s2SfTSzaraoPww==" - "resolved" "https://registry.npmjs.org/postcss-selector-matches/-/postcss-selector-matches-4.0.0.tgz" - "version" "4.0.0" +postcss-selector-not@^4.0.0: + version "4.0.1" + resolved "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-4.0.1.tgz" + integrity sha512-YolvBgInEK5/79C+bdFMyzqTg6pkYqDbzZIST/PDMqa/o3qtXenD05apBG2jLgT0/BQ77d4U2UK12jWpilqMAQ== dependencies: - "balanced-match" "^1.0.0" - "postcss" "^7.0.2" + balanced-match "^1.0.0" + postcss "^7.0.2" -"postcss-selector-not@^4.0.0": - "integrity" "sha512-YolvBgInEK5/79C+bdFMyzqTg6pkYqDbzZIST/PDMqa/o3qtXenD05apBG2jLgT0/BQ77d4U2UK12jWpilqMAQ==" - "resolved" "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-4.0.1.tgz" - "version" "4.0.1" +postcss-selector-not@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-6.0.1.tgz" + integrity sha512-1i9affjAe9xu/y9uqWH+tD4r6/hDaXJruk8xn2x1vzxC2U3J3LKO3zJW4CyxlNhA56pADJ/djpEwpH1RClI2rQ== dependencies: - "balanced-match" "^1.0.0" - "postcss" "^7.0.2" + postcss-selector-parser "^6.0.10" -"postcss-selector-not@^6.0.1": - "integrity" "sha512-1i9affjAe9xu/y9uqWH+tD4r6/hDaXJruk8xn2x1vzxC2U3J3LKO3zJW4CyxlNhA56pADJ/djpEwpH1RClI2rQ==" - "resolved" "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-6.0.1.tgz" - "version" "6.0.1" +postcss-selector-parser@^3.0.0: + version "3.1.2" + resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz" + integrity sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA== dependencies: - "postcss-selector-parser" "^6.0.10" + dot-prop "^5.2.0" + indexes-of "^1.0.1" + uniq "^1.0.1" -"postcss-selector-parser@^3.0.0": - "integrity" "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==" - "resolved" "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz" - "version" "3.1.2" +postcss-selector-parser@^5.0.0-rc.3, postcss-selector-parser@^5.0.0-rc.4: + version "5.0.0" + resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz" + integrity sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ== dependencies: - "dot-prop" "^5.2.0" - "indexes-of" "^1.0.1" - "uniq" "^1.0.1" + cssesc "^2.0.0" + indexes-of "^1.0.1" + uniq "^1.0.1" -"postcss-selector-parser@^5.0.0-rc.3": - "integrity" "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==" - "resolved" "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz" - "version" "5.0.0" +postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.10, postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5, postcss-selector-parser@^6.0.9: + version "6.0.11" + resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz" + integrity sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g== dependencies: - "cssesc" "^2.0.0" - "indexes-of" "^1.0.1" - "uniq" "^1.0.1" + cssesc "^3.0.0" + util-deprecate "^1.0.2" -"postcss-selector-parser@^5.0.0-rc.4": - "integrity" "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==" - "resolved" "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz" - "version" "5.0.0" +postcss-svgo@^4.0.3: + version "4.0.3" + resolved "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.3.tgz" + integrity sha512-NoRbrcMWTtUghzuKSoIm6XV+sJdvZ7GZSc3wdBN0W19FTtp2ko8NqLsgoh/m9CzNhU3KLPvQmjIwtaNFkaFTvw== dependencies: - "cssesc" "^2.0.0" - "indexes-of" "^1.0.1" - "uniq" "^1.0.1" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + svgo "^1.0.0" -"postcss-selector-parser@^6.0.0", "postcss-selector-parser@^6.0.10", "postcss-selector-parser@^6.0.2", "postcss-selector-parser@^6.0.4", "postcss-selector-parser@^6.0.5", "postcss-selector-parser@^6.0.9": - "integrity" "sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==" - "resolved" "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz" - "version" "6.0.11" +postcss-svgo@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz" + integrity sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA== dependencies: - "cssesc" "^3.0.0" - "util-deprecate" "^1.0.2" + postcss-value-parser "^4.2.0" + svgo "^2.7.0" -"postcss-svgo@^4.0.3": - "integrity" "sha512-NoRbrcMWTtUghzuKSoIm6XV+sJdvZ7GZSc3wdBN0W19FTtp2ko8NqLsgoh/m9CzNhU3KLPvQmjIwtaNFkaFTvw==" - "resolved" "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.3.tgz" - "version" "4.0.3" +postcss-unique-selectors@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz" + integrity sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg== dependencies: - "postcss" "^7.0.0" - "postcss-value-parser" "^3.0.0" - "svgo" "^1.0.0" + alphanum-sort "^1.0.0" + postcss "^7.0.0" + uniqs "^2.0.0" -"postcss-svgo@^5.1.0": - "integrity" "sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==" - "resolved" "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz" - "version" "5.1.0" +postcss-unique-selectors@^5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz" + integrity sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA== dependencies: - "postcss-value-parser" "^4.2.0" - "svgo" "^2.7.0" + postcss-selector-parser "^6.0.5" -"postcss-unique-selectors@^4.0.1": - "integrity" "sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==" - "resolved" "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz" - "version" "4.0.1" +postcss-value-parser@^3.0.0: + version "3.3.1" + resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz" + integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== + +postcss-value-parser@^4.0.0, postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0: + version "4.2.0" + resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz" + integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== + +postcss-values-parser@^2.0.0, postcss-values-parser@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/postcss-values-parser/-/postcss-values-parser-2.0.1.tgz" + integrity sha512-2tLuBsA6P4rYTNKCXYG/71C7j1pU6pK503suYOmn4xYrQIzW+opD+7FAFNuGSdZC/3Qfy334QbeMu7MEb8gOxg== dependencies: - "alphanum-sort" "^1.0.0" - "postcss" "^7.0.0" - "uniqs" "^2.0.0" + flatten "^1.0.2" + indexes-of "^1.0.1" + uniq "^1.0.1" -"postcss-unique-selectors@^5.1.1": - "integrity" "sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==" - "resolved" "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz" - "version" "5.1.1" +postcss@7.0.21: + version "7.0.21" + resolved "https://registry.npmjs.org/postcss/-/postcss-7.0.21.tgz" + integrity sha512-uIFtJElxJo29QC753JzhidoAhvp/e/Exezkdhfmt8AymWT6/5B7W1WmponYWkHk2eg6sONyTch0A3nkMPun3SQ== dependencies: - "postcss-selector-parser" "^6.0.5" + chalk "^2.4.2" + source-map "^0.6.1" + supports-color "^6.1.0" -"postcss-value-parser@^3.0.0": - "integrity" "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" - "resolved" "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz" - "version" "3.3.1" - -"postcss-value-parser@^4.0.0", "postcss-value-parser@^4.0.2", "postcss-value-parser@^4.1.0", "postcss-value-parser@^4.2.0": - "integrity" "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" - "resolved" "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz" - "version" "4.2.0" - -"postcss-values-parser@^2.0.0", "postcss-values-parser@^2.0.1": - "integrity" "sha512-2tLuBsA6P4rYTNKCXYG/71C7j1pU6pK503suYOmn4xYrQIzW+opD+7FAFNuGSdZC/3Qfy334QbeMu7MEb8gOxg==" - "resolved" "https://registry.npmjs.org/postcss-values-parser/-/postcss-values-parser-2.0.1.tgz" - "version" "2.0.1" +postcss@^7, postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.17, postcss@^7.0.2, postcss@^7.0.26, postcss@^7.0.27, postcss@^7.0.32, postcss@^7.0.35, postcss@^7.0.36, postcss@^7.0.5, postcss@^7.0.6: + version "7.0.39" + resolved "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz" + integrity sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA== dependencies: - "flatten" "^1.0.2" - "indexes-of" "^1.0.1" - "uniq" "^1.0.1" + picocolors "^0.2.1" + source-map "^0.6.1" -"postcss@^7.0.0 || ^8.0.1", "postcss@^8", "postcss@^8.0.0", "postcss@^8.0.3", "postcss@^8.0.9", "postcss@^8.1.0", "postcss@^8.1.4", "postcss@^8.2", "postcss@^8.2.14", "postcss@^8.2.15", "postcss@^8.2.2", "postcss@^8.3", "postcss@^8.3.3", "postcss@^8.3.5", "postcss@^8.4", "postcss@^8.4.18", "postcss@^8.4.4", "postcss@^8.4.6", "postcss@>= 8", "postcss@>=8", "postcss@>=8.0.9": - "integrity" "sha512-h+pbPsyhlYj6N2ozBmHhHrs9DzGmbaarbLvWipMRO7RLS+v4onj26MPFXA5OBYFxyqYhUJK456SwDcY9H2/zsA==" - "resolved" "https://registry.npmjs.org/postcss/-/postcss-8.4.19.tgz" - "version" "8.4.19" +postcss@^8.2.15, postcss@^8.3.5, postcss@^8.4.18, postcss@^8.4.4: + version "8.4.19" + resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.19.tgz" + integrity sha512-h+pbPsyhlYj6N2ozBmHhHrs9DzGmbaarbLvWipMRO7RLS+v4onj26MPFXA5OBYFxyqYhUJK456SwDcY9H2/zsA== dependencies: - "nanoid" "^3.3.4" - "picocolors" "^1.0.0" - "source-map-js" "^1.0.2" + nanoid "^3.3.4" + picocolors "^1.0.0" + source-map-js "^1.0.2" -"postcss@^7.0.0": - "integrity" "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==" - "resolved" "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz" - "version" "7.0.39" - dependencies: - "picocolors" "^0.2.1" - "source-map" "^0.6.1" +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== -"postcss@^7.0.1": - "integrity" "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==" - "resolved" "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz" - "version" "7.0.39" - dependencies: - "picocolors" "^0.2.1" - "source-map" "^0.6.1" +prelude-ls@~1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz" + integrity sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w== -"postcss@^7.0.14": - "integrity" "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==" - "resolved" "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz" - "version" "7.0.39" - dependencies: - "picocolors" "^0.2.1" - "source-map" "^0.6.1" +prepend-http@^1.0.0: + version "1.0.4" + resolved "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz" + integrity sha512-PhmXi5XmoyKw1Un4E+opM2KcsJInDvKyuOumcjjw3waw86ZNjHwVUOOWLc4bCzLdcKNaWBH9e99sbWzDQsVaYg== -"postcss@^7.0.17": - "integrity" "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==" - "resolved" "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz" - "version" "7.0.39" - dependencies: - "picocolors" "^0.2.1" - "source-map" "^0.6.1" +prepend-http@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz" + integrity sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA== -"postcss@^7.0.2": - "integrity" "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==" - "resolved" "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz" - "version" "7.0.39" - dependencies: - "picocolors" "^0.2.1" - "source-map" "^0.6.1" - -"postcss@^7.0.26": - "integrity" "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==" - "resolved" "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz" - "version" "7.0.39" - dependencies: - "picocolors" "^0.2.1" - "source-map" "^0.6.1" - -"postcss@^7.0.27": - "integrity" "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==" - "resolved" "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz" - "version" "7.0.39" - dependencies: - "picocolors" "^0.2.1" - "source-map" "^0.6.1" - -"postcss@^7.0.32": - "integrity" "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==" - "resolved" "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz" - "version" "7.0.39" - dependencies: - "picocolors" "^0.2.1" - "source-map" "^0.6.1" - -"postcss@^7.0.35": - "integrity" "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==" - "resolved" "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz" - "version" "7.0.39" - dependencies: - "picocolors" "^0.2.1" - "source-map" "^0.6.1" - -"postcss@^7.0.36": - "integrity" "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==" - "resolved" "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz" - "version" "7.0.39" - dependencies: - "picocolors" "^0.2.1" - "source-map" "^0.6.1" - -"postcss@^7.0.5": - "integrity" "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==" - "resolved" "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz" - "version" "7.0.39" - dependencies: - "picocolors" "^0.2.1" - "source-map" "^0.6.1" - -"postcss@^7.0.6": - "integrity" "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==" - "resolved" "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz" - "version" "7.0.39" - dependencies: - "picocolors" "^0.2.1" - "source-map" "^0.6.1" - -"postcss@^7": - "integrity" "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==" - "resolved" "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz" - "version" "7.0.39" - dependencies: - "picocolors" "^0.2.1" - "source-map" "^0.6.1" - -"postcss@7.0.21": - "integrity" "sha512-uIFtJElxJo29QC753JzhidoAhvp/e/Exezkdhfmt8AymWT6/5B7W1WmponYWkHk2eg6sONyTch0A3nkMPun3SQ==" - "resolved" "https://registry.npmjs.org/postcss/-/postcss-7.0.21.tgz" - "version" "7.0.21" - dependencies: - "chalk" "^2.4.2" - "source-map" "^0.6.1" - "supports-color" "^6.1.0" - -"prelude-ls@^1.2.1": - "integrity" "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==" - "resolved" "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz" - "version" "1.2.1" - -"prelude-ls@~1.1.2": - "integrity" "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==" - "resolved" "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz" - "version" "1.1.2" - -"prepend-http@^1.0.0": - "integrity" "sha512-PhmXi5XmoyKw1Un4E+opM2KcsJInDvKyuOumcjjw3waw86ZNjHwVUOOWLc4bCzLdcKNaWBH9e99sbWzDQsVaYg==" - "resolved" "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz" - "version" "1.0.4" - -"prepend-http@^2.0.0": - "integrity" "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==" - "resolved" "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz" - "version" "2.0.0" - -"preserve@^0.2.0": - "integrity" "sha512-s/46sYeylUfHNjI+sA/78FAHlmIuKqI9wNnzEOGehAlUUYeObv5C2mOinXBjyUyWmJ2SfcS2/ydApH4hTF4WXQ==" - "resolved" "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz" - "version" "0.2.0" - -"prettier@^2.0.5": - "integrity" "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==" - "resolved" "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz" - "version" "2.7.1" +preserve@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz" + integrity sha512-s/46sYeylUfHNjI+sA/78FAHlmIuKqI9wNnzEOGehAlUUYeObv5C2mOinXBjyUyWmJ2SfcS2/ydApH4hTF4WXQ== "prettier@>=2.2.1 <=2.3.0": - "integrity" "sha512-kXtO4s0Lz/DW/IJ9QdWhAf7/NmPWQXkFr/r/WkR3vyI+0v8amTDxiaQSLzs8NBlytfLWX/7uQUMIW677yLKl4w==" - "resolved" "https://registry.npmjs.org/prettier/-/prettier-2.3.0.tgz" - "version" "2.3.0" + version "2.3.0" + resolved "https://registry.npmjs.org/prettier/-/prettier-2.3.0.tgz" + integrity sha512-kXtO4s0Lz/DW/IJ9QdWhAf7/NmPWQXkFr/r/WkR3vyI+0v8amTDxiaQSLzs8NBlytfLWX/7uQUMIW677yLKl4w== -"pretty-bytes@^5.1.0", "pretty-bytes@^5.3.0", "pretty-bytes@^5.4.1": - "integrity" "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==" - "resolved" "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz" - "version" "5.6.0" +prettier@^2.0.5: + version "2.7.1" + resolved "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz" + integrity sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g== -"pretty-error@^2.1.1": - "integrity" "sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw==" - "resolved" "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.2.tgz" - "version" "2.1.2" +pretty-bytes@^5.1.0, pretty-bytes@^5.3.0, pretty-bytes@^5.4.1: + version "5.6.0" + resolved "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz" + integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg== + +pretty-error@^2.1.1: + version "2.1.2" + resolved "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.2.tgz" + integrity sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw== dependencies: - "lodash" "^4.17.20" - "renderkid" "^2.0.4" + lodash "^4.17.20" + renderkid "^2.0.4" -"pretty-error@^4.0.0": - "integrity" "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==" - "resolved" "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz" - "version" "4.0.0" +pretty-error@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz" + integrity sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw== dependencies: - "lodash" "^4.17.20" - "renderkid" "^3.0.0" + lodash "^4.17.20" + renderkid "^3.0.0" -"pretty-format@^24.0.0", "pretty-format@^24.3.0", "pretty-format@^24.9.0": - "integrity" "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==" - "resolved" "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz" - "version" "24.9.0" +pretty-format@^24.0.0, pretty-format@^24.3.0, pretty-format@^24.9.0: + version "24.9.0" + resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz" + integrity sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA== dependencies: "@jest/types" "^24.9.0" - "ansi-regex" "^4.0.0" - "ansi-styles" "^3.2.0" - "react-is" "^16.8.4" + ansi-regex "^4.0.0" + ansi-styles "^3.2.0" + react-is "^16.8.4" -"pretty-format@^25.1.0": - "integrity" "sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ==" - "resolved" "https://registry.npmjs.org/pretty-format/-/pretty-format-25.5.0.tgz" - "version" "25.5.0" +pretty-format@^25.1.0: + version "25.5.0" + resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-25.5.0.tgz" + integrity sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ== dependencies: "@jest/types" "^25.5.0" - "ansi-regex" "^5.0.0" - "ansi-styles" "^4.0.0" - "react-is" "^16.12.0" + ansi-regex "^5.0.0" + ansi-styles "^4.0.0" + react-is "^16.12.0" -"pretty-format@^26.6.2": - "integrity" "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==" - "resolved" "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz" - "version" "26.6.2" +pretty-format@^26.6.2: + version "26.6.2" + resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz" + integrity sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg== dependencies: "@jest/types" "^26.6.2" - "ansi-regex" "^5.0.0" - "ansi-styles" "^4.0.0" - "react-is" "^17.0.1" + ansi-regex "^5.0.0" + ansi-styles "^4.0.0" + react-is "^17.0.1" -"pretty-format@^27.0.2": - "integrity" "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==" - "resolved" "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz" - "version" "27.5.1" +pretty-format@^27.0.2, pretty-format@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz" + integrity sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ== dependencies: - "ansi-regex" "^5.0.1" - "ansi-styles" "^5.0.0" - "react-is" "^17.0.1" + ansi-regex "^5.0.1" + ansi-styles "^5.0.0" + react-is "^17.0.1" -"pretty-format@^27.5.1": - "integrity" "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==" - "resolved" "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz" - "version" "27.5.1" - dependencies: - "ansi-regex" "^5.0.1" - "ansi-styles" "^5.0.0" - "react-is" "^17.0.1" - -"pretty-format@^28.1.3": - "integrity" "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==" - "resolved" "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz" - "version" "28.1.3" +pretty-format@^28.1.3: + version "28.1.3" + resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz" + integrity sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q== dependencies: "@jest/schemas" "^28.1.3" - "ansi-regex" "^5.0.1" - "ansi-styles" "^5.0.0" - "react-is" "^18.0.0" + ansi-regex "^5.0.1" + ansi-styles "^5.0.0" + react-is "^18.0.0" -"pretty-hrtime@^1.0.3": - "integrity" "sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==" - "resolved" "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz" - "version" "1.0.3" +pretty-hrtime@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz" + integrity sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A== -"prismjs@^1.27.0": - "integrity" "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==" - "resolved" "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz" - "version" "1.29.0" +prismjs@^1.27.0: + version "1.29.0" + resolved "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz" + integrity sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q== -"prismjs@~1.27.0": - "integrity" "sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA==" - "resolved" "https://registry.npmjs.org/prismjs/-/prismjs-1.27.0.tgz" - "version" "1.27.0" +prismjs@~1.27.0: + version "1.27.0" + resolved "https://registry.npmjs.org/prismjs/-/prismjs-1.27.0.tgz" + integrity sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA== -"private@^0.1.6", "private@^0.1.8": - "integrity" "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==" - "resolved" "https://registry.npmjs.org/private/-/private-0.1.8.tgz" - "version" "0.1.8" +private@^0.1.6, private@^0.1.8: + version "0.1.8" + resolved "https://registry.npmjs.org/private/-/private-0.1.8.tgz" + integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== -"process-nextick-args@~2.0.0": - "integrity" "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - "resolved" "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz" - "version" "2.0.1" +process-nextick-args@~2.0.0: + 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== -"process@^0.11.10": - "integrity" "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==" - "resolved" "https://registry.npmjs.org/process/-/process-0.11.10.tgz" - "version" "0.11.10" +process@^0.11.10: + version "0.11.10" + resolved "https://registry.npmjs.org/process/-/process-0.11.10.tgz" + integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== -"progress@^2.0.1": - "integrity" "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" - "resolved" "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz" - "version" "2.0.3" +progress@^2.0.1: + version "2.0.3" + resolved "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz" + integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== -"promise-inflight@^1.0.1": - "integrity" "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==" - "resolved" "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz" - "version" "1.0.1" +promise-inflight@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz" + integrity sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g== -"promise.allsettled@^1.0.0": - "integrity" "sha512-22wJUOD3zswWFqgwjNHa1965LvqTX87WPu/lreY2KSd7SVcERfuZ4GfUaOnJNnvtoIv2yXT/W00YIGMetXtFXg==" - "resolved" "https://registry.npmjs.org/promise.allsettled/-/promise.allsettled-1.0.6.tgz" - "version" "1.0.6" +promise.allsettled@^1.0.0: + version "1.0.6" + resolved "https://registry.npmjs.org/promise.allsettled/-/promise.allsettled-1.0.6.tgz" + integrity sha512-22wJUOD3zswWFqgwjNHa1965LvqTX87WPu/lreY2KSd7SVcERfuZ4GfUaOnJNnvtoIv2yXT/W00YIGMetXtFXg== dependencies: - "array.prototype.map" "^1.0.5" - "call-bind" "^1.0.2" - "define-properties" "^1.1.4" - "es-abstract" "^1.20.4" - "get-intrinsic" "^1.1.3" - "iterate-value" "^1.0.2" + array.prototype.map "^1.0.5" + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + get-intrinsic "^1.1.3" + iterate-value "^1.0.2" -"promise.prototype.finally@^3.1.0": - "integrity" "sha512-nNc3YbgMfLzqtqvO/q5DP6RR0SiHI9pUPGzyDf1q+usTwCN2kjvAnJkBb7bHe3o+fFSBPpsGMoYtaSi+LTNqng==" - "resolved" "https://registry.npmjs.org/promise.prototype.finally/-/promise.prototype.finally-3.1.4.tgz" - "version" "3.1.4" +promise.prototype.finally@^3.1.0: + version "3.1.4" + resolved "https://registry.npmjs.org/promise.prototype.finally/-/promise.prototype.finally-3.1.4.tgz" + integrity sha512-nNc3YbgMfLzqtqvO/q5DP6RR0SiHI9pUPGzyDf1q+usTwCN2kjvAnJkBb7bHe3o+fFSBPpsGMoYtaSi+LTNqng== dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.1.4" - "es-abstract" "^1.20.4" + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" -"promise@^7.1.1": - "integrity" "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==" - "resolved" "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz" - "version" "7.3.1" +promise@^7.1.1: + version "7.3.1" + resolved "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz" + integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg== dependencies: - "asap" "~2.0.3" + asap "~2.0.3" -"promise@^8.0.3": - "integrity" "sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==" - "resolved" "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz" - "version" "8.3.0" +promise@^8.0.3, promise@^8.1.0: + version "8.3.0" + resolved "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz" + integrity sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg== dependencies: - "asap" "~2.0.6" + asap "~2.0.6" -"promise@^8.1.0": - "integrity" "sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==" - "resolved" "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz" - "version" "8.3.0" +prompts@2.4.0, prompts@^2.0.1, prompts@^2.4.0: + version "2.4.0" + resolved "https://registry.npmjs.org/prompts/-/prompts-2.4.0.tgz" + integrity sha512-awZAKrk3vN6CroQukBL+R9051a4R3zCZBlJm/HBfrSZ8iTpYix3VX1vU4mveiLpiwmOJT4wokTF9m6HUk4KqWQ== dependencies: - "asap" "~2.0.6" + kleur "^3.0.3" + sisteransi "^1.0.5" -"prompts@^2.0.1", "prompts@^2.4.0", "prompts@2.4.0": - "integrity" "sha512-awZAKrk3vN6CroQukBL+R9051a4R3zCZBlJm/HBfrSZ8iTpYix3VX1vU4mveiLpiwmOJT4wokTF9m6HUk4KqWQ==" - "resolved" "https://registry.npmjs.org/prompts/-/prompts-2.4.0.tgz" - "version" "2.4.0" +prompts@^2.4.2: + version "2.4.2" + resolved "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz" + integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== dependencies: - "kleur" "^3.0.3" - "sisteransi" "^1.0.5" + kleur "^3.0.3" + sisteransi "^1.0.5" -"prompts@^2.4.2": - "integrity" "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==" - "resolved" "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz" - "version" "2.4.2" +prop-types-exact@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/prop-types-exact/-/prop-types-exact-1.2.0.tgz" + integrity sha512-K+Tk3Kd9V0odiXFP9fwDHUYRyvK3Nun3GVyPapSIs5OBkITAm15W0CPFD/YKTkMUAbc0b9CUwRQp2ybiBIq+eA== dependencies: - "kleur" "^3.0.3" - "sisteransi" "^1.0.5" + has "^1.0.3" + object.assign "^4.1.0" + reflect.ownkeys "^0.2.0" -"prop-types-exact@^1.2.0": - "integrity" "sha512-K+Tk3Kd9V0odiXFP9fwDHUYRyvK3Nun3GVyPapSIs5OBkITAm15W0CPFD/YKTkMUAbc0b9CUwRQp2ybiBIq+eA==" - "resolved" "https://registry.npmjs.org/prop-types-exact/-/prop-types-exact-1.2.0.tgz" - "version" "1.2.0" +prop-types@^15.0.0, prop-types@^15.5.7, prop-types@^15.5.8, prop-types@^15.6.0, prop-types@^15.6.1, prop-types@^15.6.2, prop-types@^15.7.2, prop-types@^15.8.1: + version "15.8.1" + resolved "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz" + integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== dependencies: - "has" "^1.0.3" - "object.assign" "^4.1.0" - "reflect.ownkeys" "^0.2.0" + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.13.1" -"prop-types@^15.0.0", "prop-types@^15.5.7", "prop-types@^15.5.8", "prop-types@^15.6.0", "prop-types@^15.6.1", "prop-types@^15.6.2", "prop-types@^15.7.2", "prop-types@^15.8.1", "prop-types@>=15.6.1": - "integrity" "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==" - "resolved" "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz" - "version" "15.8.1" +property-information@^5.0.0, property-information@^5.3.0: + version "5.6.0" + resolved "https://registry.npmjs.org/property-information/-/property-information-5.6.0.tgz" + integrity sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA== dependencies: - "loose-envify" "^1.4.0" - "object-assign" "^4.1.1" - "react-is" "^16.13.1" + xtend "^4.0.0" -"property-information@^5.0.0", "property-information@^5.3.0": - "integrity" "sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==" - "resolved" "https://registry.npmjs.org/property-information/-/property-information-5.6.0.tgz" - "version" "5.6.0" +proxy-addr@~2.0.7: + 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: - "xtend" "^4.0.0" + forwarded "0.2.0" + ipaddr.js "1.9.1" -"proxy-addr@~2.0.7": - "integrity" "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==" - "resolved" "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz" - "version" "2.0.7" +proxy-from-env@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz" + integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== + +prr@~1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz" + integrity sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw== + +psl@^1.1.28, psl@^1.1.33: + version "1.9.0" + resolved "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz" + integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== + +public-encrypt@^4.0.0: + version "4.0.3" + resolved "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz" + integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== dependencies: - "forwarded" "0.2.0" - "ipaddr.js" "1.9.1" + bn.js "^4.1.0" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + parse-asn1 "^5.0.0" + randombytes "^2.0.1" + safe-buffer "^5.1.2" -"proxy-from-env@^1.0.0": - "integrity" "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" - "resolved" "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz" - "version" "1.1.0" - -"prr@~1.0.1": - "integrity" "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==" - "resolved" "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz" - "version" "1.0.1" - -"psl@^1.1.28", "psl@^1.1.33": - "integrity" "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" - "resolved" "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz" - "version" "1.9.0" - -"public-encrypt@^4.0.0": - "integrity" "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==" - "resolved" "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz" - "version" "4.0.3" +pump@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz" + integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== dependencies: - "bn.js" "^4.1.0" - "browserify-rsa" "^4.0.0" - "create-hash" "^1.1.0" - "parse-asn1" "^5.0.0" - "randombytes" "^2.0.1" - "safe-buffer" "^5.1.2" + end-of-stream "^1.1.0" + once "^1.3.1" -"pump@^2.0.0": - "integrity" "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==" - "resolved" "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz" - "version" "2.0.1" +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== dependencies: - "end-of-stream" "^1.1.0" - "once" "^1.3.1" + end-of-stream "^1.1.0" + once "^1.3.1" -"pump@^3.0.0": - "integrity" "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==" - "resolved" "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz" - "version" "3.0.0" +pumpify@^1.3.3: + version "1.5.1" + resolved "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz" + integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== dependencies: - "end-of-stream" "^1.1.0" - "once" "^1.3.1" + duplexify "^3.6.0" + inherits "^2.0.3" + pump "^2.0.0" -"pumpify@^1.3.3": - "integrity" "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==" - "resolved" "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz" - "version" "1.5.1" +punycode@1.3.2: + version "1.3.2" + resolved "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz" + integrity sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw== + +punycode@^1.2.4: + version "1.4.1" + resolved "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz" + integrity sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ== + +punycode@^2.1.0, punycode@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + +pupa@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz" + integrity sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A== dependencies: - "duplexify" "^3.6.0" - "inherits" "^2.0.3" - "pump" "^2.0.0" + escape-goat "^2.0.0" -"punycode@^1.2.4": - "integrity" "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==" - "resolved" "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz" - "version" "1.4.1" - -"punycode@^2.1.0", "punycode@^2.1.1": - "integrity" "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" - "resolved" "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz" - "version" "2.1.1" - -"punycode@1.3.2": - "integrity" "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==" - "resolved" "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz" - "version" "1.3.2" - -"pupa@^2.1.1": - "integrity" "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==" - "resolved" "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz" - "version" "2.1.1" - dependencies: - "escape-goat" "^2.0.0" - -"puppeteer-core@^2.1.1": - "integrity" "sha512-n13AWriBMPYxnpbb6bnaY5YoY6rGj8vPLrz6CZF3o0qJNEwlcfJVxBzYZ0NJsQ21UbdJoijPCDrM++SUVEz7+w==" - "resolved" "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-2.1.1.tgz" - "version" "2.1.1" +puppeteer-core@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-2.1.1.tgz" + integrity sha512-n13AWriBMPYxnpbb6bnaY5YoY6rGj8vPLrz6CZF3o0qJNEwlcfJVxBzYZ0NJsQ21UbdJoijPCDrM++SUVEz7+w== dependencies: "@types/mime-types" "^2.1.0" - "debug" "^4.1.0" - "extract-zip" "^1.6.6" - "https-proxy-agent" "^4.0.0" - "mime" "^2.0.3" - "mime-types" "^2.1.25" - "progress" "^2.0.1" - "proxy-from-env" "^1.0.0" - "rimraf" "^2.6.1" - "ws" "^6.1.0" + debug "^4.1.0" + extract-zip "^1.6.6" + https-proxy-agent "^4.0.0" + mime "^2.0.3" + mime-types "^2.1.25" + progress "^2.0.1" + proxy-from-env "^1.0.0" + rimraf "^2.6.1" + ws "^6.1.0" -"q@^1.1.2": - "integrity" "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==" - "resolved" "https://registry.npmjs.org/q/-/q-1.5.1.tgz" - "version" "1.5.1" +q@^1.1.2: + version "1.5.1" + resolved "https://registry.npmjs.org/q/-/q-1.5.1.tgz" + integrity sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw== -"qs@^6.10.0": - "integrity" "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==" - "resolved" "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz" - "version" "6.11.0" +qs@6.11.0, qs@^6.10.0: + version "6.11.0" + resolved "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz" + integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== dependencies: - "side-channel" "^1.0.4" + side-channel "^1.0.4" -"qs@~6.5.2": - "integrity" "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==" - "resolved" "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz" - "version" "6.5.3" +qs@~6.5.2: + version "6.5.3" + resolved "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz" + integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA== -"qs@6.11.0": - "integrity" "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==" - "resolved" "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz" - "version" "6.11.0" +query-string@^4.1.0: + version "4.3.4" + resolved "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz" + integrity sha512-O2XLNDBIg1DnTOa+2XrIwSiXEV8h2KImXUnjhhn2+UsvZ+Es2uyd5CCRTNQlDGbzUQOW3aYCBx9rVA6dzsiY7Q== dependencies: - "side-channel" "^1.0.4" + object-assign "^4.1.0" + strict-uri-encode "^1.0.0" -"query-string@^4.1.0": - "integrity" "sha512-O2XLNDBIg1DnTOa+2XrIwSiXEV8h2KImXUnjhhn2+UsvZ+Es2uyd5CCRTNQlDGbzUQOW3aYCBx9rVA6dzsiY7Q==" - "resolved" "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz" - "version" "4.3.4" +querystring-es3@^0.2.0: + version "0.2.1" + resolved "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz" + integrity sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA== + +querystring@0.2.0, querystring@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz" + integrity sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g== + +querystringify@^2.0.0, querystringify@^2.1.1: + version "2.2.0" + resolved "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz" + integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== + +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +quick-lru@^5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz" + integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== + +quickselect@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/quickselect/-/quickselect-2.0.0.tgz" + integrity sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw== + +raf-schd@^4.0.0: + version "4.0.3" + resolved "https://registry.npmjs.org/raf-schd/-/raf-schd-4.0.3.tgz" + integrity sha512-tQkJl2GRWh83ui2DiPTJz9wEiMN20syf+5oKfB03yYP7ioZcJwsIK8FjrtLwH1m7C7e+Tt2yYBlrOpdT+dyeIQ== + +raf@^3.1.0, raf@^3.4.1: + version "3.4.1" + resolved "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz" + integrity sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA== dependencies: - "object-assign" "^4.1.0" - "strict-uri-encode" "^1.0.0" + performance-now "^2.1.0" -"querystring-es3@^0.2.0": - "integrity" "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==" - "resolved" "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz" - "version" "0.2.1" +railroad-diagrams@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz" + integrity sha512-cz93DjNeLY0idrCNOH6PviZGRN9GJhsdm9hpn1YCS879fj4W+x5IFJhhkRZcwVgMmFF7R82UA/7Oh+R8lLZg6A== -"querystring@^0.2.0", "querystring@0.2.0": - "integrity" "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==" - "resolved" "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz" - "version" "0.2.0" +ramda@0.26.1: + version "0.26.1" + resolved "https://registry.npmjs.org/ramda/-/ramda-0.26.1.tgz" + integrity sha512-hLWjpy7EnsDBb0p+Z3B7rPi3GDeRG5ZtiI33kJhTt+ORCd38AbAIjB/9zRIUoeTbE/AVX5ZkU7m6bznsvrf8eQ== -"querystringify@^2.0.0", "querystringify@^2.1.1": - "integrity" "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" - "resolved" "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz" - "version" "2.2.0" +ramda@^0.28.0: + version "0.28.0" + resolved "https://registry.npmjs.org/ramda/-/ramda-0.28.0.tgz" + integrity sha512-9QnLuG/kPVgWvMQ4aODhsBUFKOUmnbUnsSXACv+NCQZcHbeb+v8Lodp8OVxtRULN1/xOyYLLaL6npE6dMq5QTA== -"queue-microtask@^1.2.2": - "integrity" "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" - "resolved" "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" - "version" "1.2.3" - -"quick-lru@^5.1.1": - "integrity" "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==" - "resolved" "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz" - "version" "5.1.1" - -"quickselect@^2.0.0": - "integrity" "sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw==" - "resolved" "https://registry.npmjs.org/quickselect/-/quickselect-2.0.0.tgz" - "version" "2.0.0" - -"raf-schd@^4.0.0": - "integrity" "sha512-tQkJl2GRWh83ui2DiPTJz9wEiMN20syf+5oKfB03yYP7ioZcJwsIK8FjrtLwH1m7C7e+Tt2yYBlrOpdT+dyeIQ==" - "resolved" "https://registry.npmjs.org/raf-schd/-/raf-schd-4.0.3.tgz" - "version" "4.0.3" - -"raf@^3.1.0", "raf@^3.4.1": - "integrity" "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==" - "resolved" "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz" - "version" "3.4.1" +randexp@0.4.6: + version "0.4.6" + resolved "https://registry.npmjs.org/randexp/-/randexp-0.4.6.tgz" + integrity sha512-80WNmd9DA0tmZrw9qQa62GPPWfuXJknrmVmLcxvq4uZBdYqb1wYoKTmnlGUchvVWe0XiLupYkBoXVOxz3C8DYQ== dependencies: - "performance-now" "^2.1.0" + discontinuous-range "1.0.0" + ret "~0.1.10" -"railroad-diagrams@^1.0.0": - "integrity" "sha512-cz93DjNeLY0idrCNOH6PviZGRN9GJhsdm9hpn1YCS879fj4W+x5IFJhhkRZcwVgMmFF7R82UA/7Oh+R8lLZg6A==" - "resolved" "https://registry.npmjs.org/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz" - "version" "1.0.0" - -"ramda@^0.28.0": - "integrity" "sha512-9QnLuG/kPVgWvMQ4aODhsBUFKOUmnbUnsSXACv+NCQZcHbeb+v8Lodp8OVxtRULN1/xOyYLLaL6npE6dMq5QTA==" - "resolved" "https://registry.npmjs.org/ramda/-/ramda-0.28.0.tgz" - "version" "0.28.0" - -"ramda@0.26.1": - "integrity" "sha512-hLWjpy7EnsDBb0p+Z3B7rPi3GDeRG5ZtiI33kJhTt+ORCd38AbAIjB/9zRIUoeTbE/AVX5ZkU7m6bznsvrf8eQ==" - "resolved" "https://registry.npmjs.org/ramda/-/ramda-0.26.1.tgz" - "version" "0.26.1" - -"randexp@0.4.6": - "integrity" "sha512-80WNmd9DA0tmZrw9qQa62GPPWfuXJknrmVmLcxvq4uZBdYqb1wYoKTmnlGUchvVWe0XiLupYkBoXVOxz3C8DYQ==" - "resolved" "https://registry.npmjs.org/randexp/-/randexp-0.4.6.tgz" - "version" "0.4.6" +randomatic@^3.0.0: + version "3.1.1" + resolved "https://registry.npmjs.org/randomatic/-/randomatic-3.1.1.tgz" + integrity sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw== dependencies: - "discontinuous-range" "1.0.0" - "ret" "~0.1.10" + is-number "^4.0.0" + kind-of "^6.0.0" + math-random "^1.0.1" -"randomatic@^3.0.0": - "integrity" "sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw==" - "resolved" "https://registry.npmjs.org/randomatic/-/randomatic-3.1.1.tgz" - "version" "3.1.1" +randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== dependencies: - "is-number" "^4.0.0" - "kind-of" "^6.0.0" - "math-random" "^1.0.1" + safe-buffer "^5.1.0" -"randombytes@^2.0.0", "randombytes@^2.0.1", "randombytes@^2.0.5", "randombytes@^2.1.0": - "integrity" "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==" - "resolved" "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz" - "version" "2.1.0" +randomfill@^1.0.3: + version "1.0.4" + resolved "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz" + integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== dependencies: - "safe-buffer" "^5.1.0" + randombytes "^2.0.5" + safe-buffer "^5.1.0" -"randomfill@^1.0.3": - "integrity" "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==" - "resolved" "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz" - "version" "1.0.4" +range-parser@^1.2.1, range-parser@~1.2.1: + 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@2.5.1: + version "2.5.1" + resolved "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz" + integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig== dependencies: - "randombytes" "^2.0.5" - "safe-buffer" "^5.1.0" + bytes "3.1.2" + http-errors "2.0.0" + iconv-lite "0.4.24" + unpipe "1.0.0" -"range-parser@^1.2.1", "range-parser@~1.2.1": - "integrity" "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" - "resolved" "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz" - "version" "1.2.1" - -"raw-body@2.5.1": - "integrity" "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==" - "resolved" "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz" - "version" "2.5.1" +raw-loader@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/raw-loader/-/raw-loader-4.0.2.tgz" + integrity sha512-ZnScIV3ag9A4wPX/ZayxL/jZH+euYb6FcUinPcgiQW0+UBtEv0O6Q3lGd3cqJ+GHH+rksEv3Pj99oxJ3u3VIKA== dependencies: - "bytes" "3.1.2" - "http-errors" "2.0.0" - "iconv-lite" "0.4.24" - "unpipe" "1.0.0" + loader-utils "^2.0.0" + schema-utils "^3.0.0" -"raw-loader@^4.0.2": - "integrity" "sha512-ZnScIV3ag9A4wPX/ZayxL/jZH+euYb6FcUinPcgiQW0+UBtEv0O6Q3lGd3cqJ+GHH+rksEv3Pj99oxJ3u3VIKA==" - "resolved" "https://registry.npmjs.org/raw-loader/-/raw-loader-4.0.2.tgz" - "version" "4.0.2" +rbush@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/rbush/-/rbush-3.0.1.tgz" + integrity sha512-XRaVO0YecOpEuIvbhbpTrZgoiI6xBlz6hnlr6EHhd+0x9ase6EmeN+hdwwUaJvLcsFFQ8iWVF1GAK1yB0BWi0w== dependencies: - "loader-utils" "^2.0.0" - "schema-utils" "^3.0.0" + quickselect "^2.0.0" -"rbush@^3.0.1": - "integrity" "sha512-XRaVO0YecOpEuIvbhbpTrZgoiI6xBlz6hnlr6EHhd+0x9ase6EmeN+hdwwUaJvLcsFFQ8iWVF1GAK1yB0BWi0w==" - "resolved" "https://registry.npmjs.org/rbush/-/rbush-3.0.1.tgz" - "version" "3.0.1" - dependencies: - "quickselect" "^2.0.0" - -"rc-align@^4.0.0": - "integrity" "sha512-3DuwSJp8iC/dgHzwreOQl52soj40LchlfUHtgACOUtwGuoFIOVh6n/sCpfqCU8kO5+iz6qR0YKvjgB8iPdE3aQ==" - "resolved" "https://registry.npmjs.org/rc-align/-/rc-align-4.0.12.tgz" - "version" "4.0.12" +rc-align@^4.0.0: + version "4.0.12" + resolved "https://registry.npmjs.org/rc-align/-/rc-align-4.0.12.tgz" + integrity sha512-3DuwSJp8iC/dgHzwreOQl52soj40LchlfUHtgACOUtwGuoFIOVh6n/sCpfqCU8kO5+iz6qR0YKvjgB8iPdE3aQ== dependencies: "@babel/runtime" "^7.10.1" - "classnames" "2.x" - "dom-align" "^1.7.0" - "lodash" "^4.17.21" - "rc-util" "^5.3.0" - "resize-observer-polyfill" "^1.5.1" + classnames "2.x" + dom-align "^1.7.0" + lodash "^4.17.21" + rc-util "^5.3.0" + resize-observer-polyfill "^1.5.1" -"rc-cascader@~3.7.0": - "integrity" "sha512-SFtGpwmYN7RaWEAGTS4Rkc62ZV/qmQGg/tajr/7mfIkleuu8ro9Hlk6J+aA0x1YS4zlaZBtTcSaXM01QMiEV/A==" - "resolved" "https://registry.npmjs.org/rc-cascader/-/rc-cascader-3.7.0.tgz" - "version" "3.7.0" +rc-cascader@~3.7.0: + version "3.7.0" + resolved "https://registry.npmjs.org/rc-cascader/-/rc-cascader-3.7.0.tgz" + integrity sha512-SFtGpwmYN7RaWEAGTS4Rkc62ZV/qmQGg/tajr/7mfIkleuu8ro9Hlk6J+aA0x1YS4zlaZBtTcSaXM01QMiEV/A== dependencies: "@babel/runtime" "^7.12.5" - "array-tree-filter" "^2.1.0" - "classnames" "^2.3.1" - "rc-select" "~14.1.0" - "rc-tree" "~5.7.0" - "rc-util" "^5.6.1" + array-tree-filter "^2.1.0" + classnames "^2.3.1" + rc-select "~14.1.0" + rc-tree "~5.7.0" + rc-util "^5.6.1" -"rc-checkbox@~2.3.0": - "integrity" "sha512-afVi1FYiGv1U0JlpNH/UaEXdh6WUJjcWokj/nUN2TgG80bfG+MDdbfHKlLcNNba94mbjy2/SXJ1HDgrOkXGAjg==" - "resolved" "https://registry.npmjs.org/rc-checkbox/-/rc-checkbox-2.3.2.tgz" - "version" "2.3.2" +rc-checkbox@~2.3.0: + version "2.3.2" + resolved "https://registry.npmjs.org/rc-checkbox/-/rc-checkbox-2.3.2.tgz" + integrity sha512-afVi1FYiGv1U0JlpNH/UaEXdh6WUJjcWokj/nUN2TgG80bfG+MDdbfHKlLcNNba94mbjy2/SXJ1HDgrOkXGAjg== dependencies: "@babel/runtime" "^7.10.1" - "classnames" "^2.2.1" + classnames "^2.2.1" -"rc-collapse@~3.4.2": - "integrity" "sha512-jpTwLgJzkhAgp2Wpi3xmbTbbYExg6fkptL67Uu5LCRVEj6wqmy0DHTjjeynsjOLsppHGHu41t1ELntZ0lEvS/Q==" - "resolved" "https://registry.npmjs.org/rc-collapse/-/rc-collapse-3.4.2.tgz" - "version" "3.4.2" +rc-collapse@~3.4.2: + version "3.4.2" + resolved "https://registry.npmjs.org/rc-collapse/-/rc-collapse-3.4.2.tgz" + integrity sha512-jpTwLgJzkhAgp2Wpi3xmbTbbYExg6fkptL67Uu5LCRVEj6wqmy0DHTjjeynsjOLsppHGHu41t1ELntZ0lEvS/Q== dependencies: "@babel/runtime" "^7.10.1" - "classnames" "2.x" - "rc-motion" "^2.3.4" - "rc-util" "^5.2.1" - "shallowequal" "^1.1.0" + classnames "2.x" + rc-motion "^2.3.4" + rc-util "^5.2.1" + shallowequal "^1.1.0" -"rc-dialog@~9.0.0", "rc-dialog@~9.0.2": - "integrity" "sha512-s3U+24xWUuB6Bn2Lk/Qt6rufy+uT+QvWkiFhNBcO9APLxcFFczWamaq7x9h8SCuhfc1nHcW4y8NbMsnAjNnWyg==" - "resolved" "https://registry.npmjs.org/rc-dialog/-/rc-dialog-9.0.2.tgz" - "version" "9.0.2" +rc-dialog@~9.0.0, rc-dialog@~9.0.2: + version "9.0.2" + resolved "https://registry.npmjs.org/rc-dialog/-/rc-dialog-9.0.2.tgz" + integrity sha512-s3U+24xWUuB6Bn2Lk/Qt6rufy+uT+QvWkiFhNBcO9APLxcFFczWamaq7x9h8SCuhfc1nHcW4y8NbMsnAjNnWyg== dependencies: "@babel/runtime" "^7.10.1" "@rc-component/portal" "^1.0.0-8" - "classnames" "^2.2.6" - "rc-motion" "^2.3.0" - "rc-util" "^5.21.0" + classnames "^2.2.6" + rc-motion "^2.3.0" + rc-util "^5.21.0" -"rc-drawer@~6.0.0": - "integrity" "sha512-ibWXGf8I+KRPXE03X4s0/xXzQI37YWXUV+oPy+R29GKxkjr98UTMgwvoQDKlZTm5AiaRuVFqhTKm0kNHqJh+TQ==" - "resolved" "https://registry.npmjs.org/rc-drawer/-/rc-drawer-6.0.1.tgz" - "version" "6.0.1" +rc-drawer@~6.0.0: + version "6.0.1" + resolved "https://registry.npmjs.org/rc-drawer/-/rc-drawer-6.0.1.tgz" + integrity sha512-ibWXGf8I+KRPXE03X4s0/xXzQI37YWXUV+oPy+R29GKxkjr98UTMgwvoQDKlZTm5AiaRuVFqhTKm0kNHqJh+TQ== dependencies: "@babel/runtime" "^7.10.1" "@rc-component/portal" "^1.0.0-6" - "classnames" "^2.2.6" - "rc-motion" "^2.6.1" - "rc-util" "^5.21.2" + classnames "^2.2.6" + rc-motion "^2.6.1" + rc-util "^5.21.2" -"rc-dropdown@~4.0.0": - "integrity" "sha512-OdpXuOcme1rm45cR0Jzgfl1otzmU4vuBVb+etXM8vcaULGokAKVpKlw8p6xzspG7jGd/XxShvq+N3VNEfk/l5g==" - "resolved" "https://registry.npmjs.org/rc-dropdown/-/rc-dropdown-4.0.1.tgz" - "version" "4.0.1" +rc-dropdown@~4.0.0: + version "4.0.1" + resolved "https://registry.npmjs.org/rc-dropdown/-/rc-dropdown-4.0.1.tgz" + integrity sha512-OdpXuOcme1rm45cR0Jzgfl1otzmU4vuBVb+etXM8vcaULGokAKVpKlw8p6xzspG7jGd/XxShvq+N3VNEfk/l5g== dependencies: "@babel/runtime" "^7.18.3" - "classnames" "^2.2.6" - "rc-trigger" "^5.3.1" - "rc-util" "^5.17.0" + classnames "^2.2.6" + rc-trigger "^5.3.1" + rc-util "^5.17.0" -"rc-field-form@~1.27.0": - "integrity" "sha512-HGqxHnmGQgkPApEcikV4qTg3BLPC82uB/cwBDftDt1pYaqitJfSl5TFTTUMKVEJVT5RqJ2Zi68ME1HmIMX2HAw==" - "resolved" "https://registry.npmjs.org/rc-field-form/-/rc-field-form-1.27.3.tgz" - "version" "1.27.3" +rc-field-form@~1.27.0: + version "1.27.3" + resolved "https://registry.npmjs.org/rc-field-form/-/rc-field-form-1.27.3.tgz" + integrity sha512-HGqxHnmGQgkPApEcikV4qTg3BLPC82uB/cwBDftDt1pYaqitJfSl5TFTTUMKVEJVT5RqJ2Zi68ME1HmIMX2HAw== dependencies: "@babel/runtime" "^7.18.0" - "async-validator" "^4.1.0" - "rc-util" "^5.8.0" + async-validator "^4.1.0" + rc-util "^5.8.0" -"rc-image@~5.12.0": - "integrity" "sha512-ubZIPfT81jmb0hLf/sIKbgi7kJT2+26RxWPshppDElhXoJZ9Xb0y+QRBcYGgCAPy76RIuaKT2RL5x8Owvhrcjg==" - "resolved" "https://registry.npmjs.org/rc-image/-/rc-image-5.12.0.tgz" - "version" "5.12.0" +rc-image@~5.12.0: + version "5.12.0" + resolved "https://registry.npmjs.org/rc-image/-/rc-image-5.12.0.tgz" + integrity sha512-ubZIPfT81jmb0hLf/sIKbgi7kJT2+26RxWPshppDElhXoJZ9Xb0y+QRBcYGgCAPy76RIuaKT2RL5x8Owvhrcjg== dependencies: "@babel/runtime" "^7.11.2" "@rc-component/portal" "^1.0.2" - "classnames" "^2.2.6" - "rc-dialog" "~9.0.0" - "rc-util" "^5.0.6" + classnames "^2.2.6" + rc-dialog "~9.0.0" + rc-util "^5.0.6" -"rc-input-number@~7.3.9": - "integrity" "sha512-aMWPEjFeles6PQnMqP5eWpxzsvHm9rh1jQOWXExUEIxhX62Fyl/ptifLHOn17+waDG1T/YUb6flfJbvwRhHrbA==" - "resolved" "https://registry.npmjs.org/rc-input-number/-/rc-input-number-7.3.11.tgz" - "version" "7.3.11" +rc-input-number@~7.3.9: + version "7.3.11" + resolved "https://registry.npmjs.org/rc-input-number/-/rc-input-number-7.3.11.tgz" + integrity sha512-aMWPEjFeles6PQnMqP5eWpxzsvHm9rh1jQOWXExUEIxhX62Fyl/ptifLHOn17+waDG1T/YUb6flfJbvwRhHrbA== dependencies: "@babel/runtime" "^7.10.1" - "classnames" "^2.2.5" - "rc-util" "^5.23.0" + classnames "^2.2.5" + rc-util "^5.23.0" -"rc-input@~0.1.4": - "integrity" "sha512-FqDdNz+fV2dKNgfXzcSLKvC+jEs1709t7nD+WdfjrdSaOcefpgc7BUJYadc3usaING+b7ediMTfKxuJBsEFbXA==" - "resolved" "https://registry.npmjs.org/rc-input/-/rc-input-0.1.4.tgz" - "version" "0.1.4" +rc-input@~0.1.4: + version "0.1.4" + resolved "https://registry.npmjs.org/rc-input/-/rc-input-0.1.4.tgz" + integrity sha512-FqDdNz+fV2dKNgfXzcSLKvC+jEs1709t7nD+WdfjrdSaOcefpgc7BUJYadc3usaING+b7ediMTfKxuJBsEFbXA== dependencies: "@babel/runtime" "^7.11.1" - "classnames" "^2.2.1" - "rc-util" "^5.18.1" + classnames "^2.2.1" + rc-util "^5.18.1" -"rc-mentions@~1.11.0": - "integrity" "sha512-0C78O4wvG8UwsT7DtcwV8j7k4T+urrM0VuRT9gmSGbX187Ftl/JbCXL6WMGHSWBYI+LxInw1x4gw0Zi6qOcaig==" - "resolved" "https://registry.npmjs.org/rc-mentions/-/rc-mentions-1.11.0.tgz" - "version" "1.11.0" +rc-mentions@~1.11.0: + version "1.11.0" + resolved "https://registry.npmjs.org/rc-mentions/-/rc-mentions-1.11.0.tgz" + integrity sha512-0C78O4wvG8UwsT7DtcwV8j7k4T+urrM0VuRT9gmSGbX187Ftl/JbCXL6WMGHSWBYI+LxInw1x4gw0Zi6qOcaig== dependencies: "@babel/runtime" "^7.10.1" - "classnames" "^2.2.6" - "rc-menu" "~9.7.2" - "rc-textarea" "^0.4.0" - "rc-trigger" "^5.0.4" - "rc-util" "^5.22.5" + classnames "^2.2.6" + rc-menu "~9.7.2" + rc-textarea "^0.4.0" + rc-trigger "^5.0.4" + rc-util "^5.22.5" -"rc-menu@~9.7.2": - "integrity" "sha512-zyri6Qwr955SOdjzDn7/ylz7Zj8r89wGyoRw0lV9G8K6a3VBfSrP2XMYEc0JgeC62OTghUcRWad7KFqNXysxaA==" - "resolved" "https://registry.npmjs.org/rc-menu/-/rc-menu-9.7.2.tgz" - "version" "9.7.2" +rc-menu@~9.7.2: + version "9.7.2" + resolved "https://registry.npmjs.org/rc-menu/-/rc-menu-9.7.2.tgz" + integrity sha512-zyri6Qwr955SOdjzDn7/ylz7Zj8r89wGyoRw0lV9G8K6a3VBfSrP2XMYEc0JgeC62OTghUcRWad7KFqNXysxaA== dependencies: "@babel/runtime" "^7.10.1" - "classnames" "2.x" - "rc-motion" "^2.4.3" - "rc-overflow" "^1.2.8" - "rc-trigger" "^5.1.2" - "rc-util" "^5.12.0" - "shallowequal" "^1.1.0" + classnames "2.x" + rc-motion "^2.4.3" + rc-overflow "^1.2.8" + rc-trigger "^5.1.2" + rc-util "^5.12.0" + shallowequal "^1.1.0" -"rc-motion@^2.0.0", "rc-motion@^2.0.1", "rc-motion@^2.2.0", "rc-motion@^2.3.0", "rc-motion@^2.3.4", "rc-motion@^2.4.3", "rc-motion@^2.4.4", "rc-motion@^2.6.1", "rc-motion@^2.6.2": - "integrity" "sha512-4w1FaX3dtV749P8GwfS4fYnFG4Rb9pxvCYPc/b2fw1cmlHJWNNgOFIz7ysiD+eOrzJSvnLJWlNQQncpNMXwwpg==" - "resolved" "https://registry.npmjs.org/rc-motion/-/rc-motion-2.6.2.tgz" - "version" "2.6.2" +rc-motion@^2.0.0, rc-motion@^2.0.1, rc-motion@^2.2.0, rc-motion@^2.3.0, rc-motion@^2.3.4, rc-motion@^2.4.3, rc-motion@^2.4.4, rc-motion@^2.6.1, rc-motion@^2.6.2: + version "2.6.2" + resolved "https://registry.npmjs.org/rc-motion/-/rc-motion-2.6.2.tgz" + integrity sha512-4w1FaX3dtV749P8GwfS4fYnFG4Rb9pxvCYPc/b2fw1cmlHJWNNgOFIz7ysiD+eOrzJSvnLJWlNQQncpNMXwwpg== dependencies: "@babel/runtime" "^7.11.1" - "classnames" "^2.2.1" - "rc-util" "^5.21.0" + classnames "^2.2.1" + rc-util "^5.21.0" -"rc-notification@~4.6.0": - "integrity" "sha512-NSmFYwrrdY3+un1GvDAJQw62Xi9LNMSsoQyo95tuaYrcad5Bn9gJUL8AREufRxSQAQnr64u3LtP3EUyLYT6bhw==" - "resolved" "https://registry.npmjs.org/rc-notification/-/rc-notification-4.6.1.tgz" - "version" "4.6.1" +rc-notification@~4.6.0: + version "4.6.1" + resolved "https://registry.npmjs.org/rc-notification/-/rc-notification-4.6.1.tgz" + integrity sha512-NSmFYwrrdY3+un1GvDAJQw62Xi9LNMSsoQyo95tuaYrcad5Bn9gJUL8AREufRxSQAQnr64u3LtP3EUyLYT6bhw== dependencies: "@babel/runtime" "^7.10.1" - "classnames" "2.x" - "rc-motion" "^2.2.0" - "rc-util" "^5.20.1" + classnames "2.x" + rc-motion "^2.2.0" + rc-util "^5.20.1" -"rc-overflow@^1.0.0", "rc-overflow@^1.2.8": - "integrity" "sha512-QJ0UItckWPQ37ZL1dMEBAdY1dhfTXFL9k6oTTcyydVwoUNMnMqCGqnRNA98axSr/OeDKqR6DVFyi8eA5RQI/uQ==" - "resolved" "https://registry.npmjs.org/rc-overflow/-/rc-overflow-1.2.8.tgz" - "version" "1.2.8" +rc-overflow@^1.0.0, rc-overflow@^1.2.8: + version "1.2.8" + resolved "https://registry.npmjs.org/rc-overflow/-/rc-overflow-1.2.8.tgz" + integrity sha512-QJ0UItckWPQ37ZL1dMEBAdY1dhfTXFL9k6oTTcyydVwoUNMnMqCGqnRNA98axSr/OeDKqR6DVFyi8eA5RQI/uQ== dependencies: "@babel/runtime" "^7.11.1" - "classnames" "^2.2.1" - "rc-resize-observer" "^1.0.0" - "rc-util" "^5.19.2" + classnames "^2.2.1" + rc-resize-observer "^1.0.0" + rc-util "^5.19.2" -"rc-pagination@~3.2.0": - "integrity" "sha512-5tIXjB670WwwcAJzAqp2J+cOBS9W3cH/WU1EiYwXljuZ4vtZXKlY2Idq8FZrnYBz8KhN3vwPo9CoV/SJS6SL1w==" - "resolved" "https://registry.npmjs.org/rc-pagination/-/rc-pagination-3.2.0.tgz" - "version" "3.2.0" +rc-pagination@~3.2.0: + version "3.2.0" + resolved "https://registry.npmjs.org/rc-pagination/-/rc-pagination-3.2.0.tgz" + integrity sha512-5tIXjB670WwwcAJzAqp2J+cOBS9W3cH/WU1EiYwXljuZ4vtZXKlY2Idq8FZrnYBz8KhN3vwPo9CoV/SJS6SL1w== dependencies: "@babel/runtime" "^7.10.1" - "classnames" "^2.2.1" + classnames "^2.2.1" -"rc-picker@~2.7.0": - "integrity" "sha512-oZH6FZ3j4iuBxHB4NvQ6ABRsS2If/Kpty1YFFsji7/aej6ruGmfM7WnJWQ88AoPfpJ++ya5z+nVEA8yCRYGKyw==" - "resolved" "https://registry.npmjs.org/rc-picker/-/rc-picker-2.7.0.tgz" - "version" "2.7.0" +rc-picker@~2.7.0: + version "2.7.0" + resolved "https://registry.npmjs.org/rc-picker/-/rc-picker-2.7.0.tgz" + integrity sha512-oZH6FZ3j4iuBxHB4NvQ6ABRsS2If/Kpty1YFFsji7/aej6ruGmfM7WnJWQ88AoPfpJ++ya5z+nVEA8yCRYGKyw== dependencies: "@babel/runtime" "^7.10.1" - "classnames" "^2.2.1" - "date-fns" "2.x" - "dayjs" "1.x" - "moment" "^2.24.0" - "rc-trigger" "^5.0.4" - "rc-util" "^5.4.0" - "shallowequal" "^1.1.0" + classnames "^2.2.1" + date-fns "2.x" + dayjs "1.x" + moment "^2.24.0" + rc-trigger "^5.0.4" + rc-util "^5.4.0" + shallowequal "^1.1.0" -"rc-progress@~3.4.1": - "integrity" "sha512-eAFDHXlk8aWpoXl0llrenPMt9qKHQXphxcVsnKs0FHC6eCSk1ebJtyaVjJUzKe0233ogiLDeEFK1Uihz3s67hw==" - "resolved" "https://registry.npmjs.org/rc-progress/-/rc-progress-3.4.1.tgz" - "version" "3.4.1" +rc-progress@~3.4.1: + version "3.4.1" + resolved "https://registry.npmjs.org/rc-progress/-/rc-progress-3.4.1.tgz" + integrity sha512-eAFDHXlk8aWpoXl0llrenPMt9qKHQXphxcVsnKs0FHC6eCSk1ebJtyaVjJUzKe0233ogiLDeEFK1Uihz3s67hw== dependencies: "@babel/runtime" "^7.10.1" - "classnames" "^2.2.6" - "rc-util" "^5.16.1" + classnames "^2.2.6" + rc-util "^5.16.1" -"rc-rate@~2.9.0": - "integrity" "sha512-SaiZFyN8pe0Fgphv8t3+kidlej+cq/EALkAJAc3A0w0XcPaH2L1aggM8bhe1u6GAGuQNAoFvTLjw4qLPGRKV5g==" - "resolved" "https://registry.npmjs.org/rc-rate/-/rc-rate-2.9.2.tgz" - "version" "2.9.2" +rc-rate@~2.9.0: + version "2.9.2" + resolved "https://registry.npmjs.org/rc-rate/-/rc-rate-2.9.2.tgz" + integrity sha512-SaiZFyN8pe0Fgphv8t3+kidlej+cq/EALkAJAc3A0w0XcPaH2L1aggM8bhe1u6GAGuQNAoFvTLjw4qLPGRKV5g== dependencies: "@babel/runtime" "^7.10.1" - "classnames" "^2.2.5" - "rc-util" "^5.0.1" + classnames "^2.2.5" + rc-util "^5.0.1" -"rc-resize-observer@^1.0.0", "rc-resize-observer@^1.1.0", "rc-resize-observer@^1.2.0": - "integrity" "sha512-6W+UzT3PyDM0wVCEHfoW3qTHPTvbdSgiA43buiy8PzmeMnfgnDeb9NjdimMXMl3/TcrvvWl5RRVdp+NqcR47pQ==" - "resolved" "https://registry.npmjs.org/rc-resize-observer/-/rc-resize-observer-1.2.0.tgz" - "version" "1.2.0" +rc-resize-observer@^1.0.0, rc-resize-observer@^1.1.0, rc-resize-observer@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/rc-resize-observer/-/rc-resize-observer-1.2.0.tgz" + integrity sha512-6W+UzT3PyDM0wVCEHfoW3qTHPTvbdSgiA43buiy8PzmeMnfgnDeb9NjdimMXMl3/TcrvvWl5RRVdp+NqcR47pQ== dependencies: "@babel/runtime" "^7.10.1" - "classnames" "^2.2.1" - "rc-util" "^5.15.0" - "resize-observer-polyfill" "^1.5.1" + classnames "^2.2.1" + rc-util "^5.15.0" + resize-observer-polyfill "^1.5.1" -"rc-segmented@~2.1.0": - "integrity" "sha512-hUlonro+pYoZcwrH6Vm56B2ftLfQh046hrwif/VwLIw1j3zGt52p5mREBwmeVzXnSwgnagpOpfafspzs1asjGw==" - "resolved" "https://registry.npmjs.org/rc-segmented/-/rc-segmented-2.1.0.tgz" - "version" "2.1.0" +rc-segmented@~2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/rc-segmented/-/rc-segmented-2.1.0.tgz" + integrity sha512-hUlonro+pYoZcwrH6Vm56B2ftLfQh046hrwif/VwLIw1j3zGt52p5mREBwmeVzXnSwgnagpOpfafspzs1asjGw== dependencies: "@babel/runtime" "^7.11.1" - "classnames" "^2.2.1" - "rc-motion" "^2.4.4" - "rc-util" "^5.17.0" + classnames "^2.2.1" + rc-motion "^2.4.4" + rc-util "^5.17.0" -"rc-select@~14.1.0", "rc-select@~14.1.13": - "integrity" "sha512-QARbPioNxyrwUzMaXep0Lx6dSyGSvtBqDOTiMwR9H0UZSvz50oYt9Vn7AZiF/8MR+SOwYtybbT6sIMcN+Xvcwg==" - "resolved" "https://registry.npmjs.org/rc-select/-/rc-select-14.1.14.tgz" - "version" "14.1.14" +rc-select@~14.1.0, rc-select@~14.1.13: + version "14.1.14" + resolved "https://registry.npmjs.org/rc-select/-/rc-select-14.1.14.tgz" + integrity sha512-QARbPioNxyrwUzMaXep0Lx6dSyGSvtBqDOTiMwR9H0UZSvz50oYt9Vn7AZiF/8MR+SOwYtybbT6sIMcN+Xvcwg== dependencies: "@babel/runtime" "^7.10.1" - "classnames" "2.x" - "rc-motion" "^2.0.1" - "rc-overflow" "^1.0.0" - "rc-trigger" "^5.0.4" - "rc-util" "^5.16.1" - "rc-virtual-list" "^3.2.0" + classnames "2.x" + rc-motion "^2.0.1" + rc-overflow "^1.0.0" + rc-trigger "^5.0.4" + rc-util "^5.16.1" + rc-virtual-list "^3.2.0" -"rc-slider@~10.0.0": - "integrity" "sha512-igTKF3zBet7oS/3yNiIlmU8KnZ45npmrmHlUUio8PNbIhzMcsh+oE/r2UD42Y6YD2D/s+kzCQkzQrPD6RY435Q==" - "resolved" "https://registry.npmjs.org/rc-slider/-/rc-slider-10.0.1.tgz" - "version" "10.0.1" +rc-slider@~10.0.0: + version "10.0.1" + resolved "https://registry.npmjs.org/rc-slider/-/rc-slider-10.0.1.tgz" + integrity sha512-igTKF3zBet7oS/3yNiIlmU8KnZ45npmrmHlUUio8PNbIhzMcsh+oE/r2UD42Y6YD2D/s+kzCQkzQrPD6RY435Q== dependencies: "@babel/runtime" "^7.10.1" - "classnames" "^2.2.5" - "rc-util" "^5.18.1" - "shallowequal" "^1.1.0" + classnames "^2.2.5" + rc-util "^5.18.1" + shallowequal "^1.1.0" -"rc-steps@~5.0.0-alpha.2": - "integrity" "sha512-9TgRvnVYirdhbV0C3syJFj9EhCRqoJAsxt4i1rED5o8/ZcSv5TLIYyo4H8MCjLPvbe2R+oBAm/IYBEtC+OS1Rw==" - "resolved" "https://registry.npmjs.org/rc-steps/-/rc-steps-5.0.0.tgz" - "version" "5.0.0" +rc-steps@~5.0.0-alpha.2: + version "5.0.0" + resolved "https://registry.npmjs.org/rc-steps/-/rc-steps-5.0.0.tgz" + integrity sha512-9TgRvnVYirdhbV0C3syJFj9EhCRqoJAsxt4i1rED5o8/ZcSv5TLIYyo4H8MCjLPvbe2R+oBAm/IYBEtC+OS1Rw== dependencies: "@babel/runtime" "^7.16.7" - "classnames" "^2.2.3" - "rc-util" "^5.16.1" + classnames "^2.2.3" + rc-util "^5.16.1" -"rc-switch@~3.2.0": - "integrity" "sha512-+gUJClsZZzvAHGy1vZfnwySxj+MjLlGRyXKXScrtCTcmiYNPzxDFOxdQ/3pK1Kt/0POvwJ/6ALOR8gwdXGhs+A==" - "resolved" "https://registry.npmjs.org/rc-switch/-/rc-switch-3.2.2.tgz" - "version" "3.2.2" +rc-switch@~3.2.0: + version "3.2.2" + resolved "https://registry.npmjs.org/rc-switch/-/rc-switch-3.2.2.tgz" + integrity sha512-+gUJClsZZzvAHGy1vZfnwySxj+MjLlGRyXKXScrtCTcmiYNPzxDFOxdQ/3pK1Kt/0POvwJ/6ALOR8gwdXGhs+A== dependencies: "@babel/runtime" "^7.10.1" - "classnames" "^2.2.1" - "rc-util" "^5.0.1" + classnames "^2.2.1" + rc-util "^5.0.1" -"rc-table@~7.26.0": - "integrity" "sha512-0cD8e6S+DTGAt5nBZQIPFYEaIukn17sfa5uFL98faHlH/whZzD8ii3dbFL4wmUDEL4BLybhYop+QUfZJ4CPvNQ==" - "resolved" "https://registry.npmjs.org/rc-table/-/rc-table-7.26.0.tgz" - "version" "7.26.0" +rc-table@~7.26.0: + version "7.26.0" + resolved "https://registry.npmjs.org/rc-table/-/rc-table-7.26.0.tgz" + integrity sha512-0cD8e6S+DTGAt5nBZQIPFYEaIukn17sfa5uFL98faHlH/whZzD8ii3dbFL4wmUDEL4BLybhYop+QUfZJ4CPvNQ== dependencies: "@babel/runtime" "^7.10.1" - "classnames" "^2.2.5" - "rc-resize-observer" "^1.1.0" - "rc-util" "^5.22.5" - "shallowequal" "^1.1.0" + classnames "^2.2.5" + rc-resize-observer "^1.1.0" + rc-util "^5.22.5" + shallowequal "^1.1.0" -"rc-tabs@~12.3.0": - "integrity" "sha512-/mOHuq4h/mNC0QmB3iEOrYeiNMvciosSo/v7SMtvoc+jfk63AzZtQzwsC50t6kkL9ViEqyjDqj4bFfxKdQtozA==" - "resolved" "https://registry.npmjs.org/rc-tabs/-/rc-tabs-12.3.0.tgz" - "version" "12.3.0" +rc-tabs@~12.3.0: + version "12.3.0" + resolved "https://registry.npmjs.org/rc-tabs/-/rc-tabs-12.3.0.tgz" + integrity sha512-/mOHuq4h/mNC0QmB3iEOrYeiNMvciosSo/v7SMtvoc+jfk63AzZtQzwsC50t6kkL9ViEqyjDqj4bFfxKdQtozA== dependencies: "@babel/runtime" "^7.11.2" - "classnames" "2.x" - "rc-dropdown" "~4.0.0" - "rc-menu" "~9.7.2" - "rc-motion" "^2.6.2" - "rc-resize-observer" "^1.0.0" - "rc-util" "^5.16.0" + classnames "2.x" + rc-dropdown "~4.0.0" + rc-menu "~9.7.2" + rc-motion "^2.6.2" + rc-resize-observer "^1.0.0" + rc-util "^5.16.0" -"rc-textarea@^0.4.0", "rc-textarea@~0.4.5": - "integrity" "sha512-IQPd1CDI3mnMlkFyzt2O4gQ2lxUsnBAeJEoZGJnkkXgORNqyM9qovdrCj9NzcRfpHgLdzaEbU3AmobNFGUznwQ==" - "resolved" "https://registry.npmjs.org/rc-textarea/-/rc-textarea-0.4.7.tgz" - "version" "0.4.7" +rc-textarea@^0.4.0, rc-textarea@~0.4.5: + version "0.4.7" + resolved "https://registry.npmjs.org/rc-textarea/-/rc-textarea-0.4.7.tgz" + integrity sha512-IQPd1CDI3mnMlkFyzt2O4gQ2lxUsnBAeJEoZGJnkkXgORNqyM9qovdrCj9NzcRfpHgLdzaEbU3AmobNFGUznwQ== dependencies: "@babel/runtime" "^7.10.1" - "classnames" "^2.2.1" - "rc-resize-observer" "^1.0.0" - "rc-util" "^5.24.4" - "shallowequal" "^1.1.0" + classnames "^2.2.1" + rc-resize-observer "^1.0.0" + rc-util "^5.24.4" + shallowequal "^1.1.0" -"rc-tooltip@~5.2.0": - "integrity" "sha512-jtQzU/18S6EI3lhSGoDYhPqNpWajMtS5VV/ld1LwyfrDByQpYmw/LW6U7oFXXLukjfDHQ7Ju705A82PRNFWYhg==" - "resolved" "https://registry.npmjs.org/rc-tooltip/-/rc-tooltip-5.2.2.tgz" - "version" "5.2.2" +rc-tooltip@~5.2.0: + version "5.2.2" + resolved "https://registry.npmjs.org/rc-tooltip/-/rc-tooltip-5.2.2.tgz" + integrity sha512-jtQzU/18S6EI3lhSGoDYhPqNpWajMtS5VV/ld1LwyfrDByQpYmw/LW6U7oFXXLukjfDHQ7Ju705A82PRNFWYhg== dependencies: "@babel/runtime" "^7.11.2" - "classnames" "^2.3.1" - "rc-trigger" "^5.0.0" + classnames "^2.3.1" + rc-trigger "^5.0.0" -"rc-tree-select@~5.5.0": - "integrity" "sha512-k2av7jF6tW9bIO4mQhaVdV4kJ1c54oxV3/hHVU+oD251Gb5JN+m1RbJFTMf1o0rAFqkvto33rxMdpafaGKQRJw==" - "resolved" "https://registry.npmjs.org/rc-tree-select/-/rc-tree-select-5.5.5.tgz" - "version" "5.5.5" +rc-tree-select@~5.5.0: + version "5.5.5" + resolved "https://registry.npmjs.org/rc-tree-select/-/rc-tree-select-5.5.5.tgz" + integrity sha512-k2av7jF6tW9bIO4mQhaVdV4kJ1c54oxV3/hHVU+oD251Gb5JN+m1RbJFTMf1o0rAFqkvto33rxMdpafaGKQRJw== dependencies: "@babel/runtime" "^7.10.1" - "classnames" "2.x" - "rc-select" "~14.1.0" - "rc-tree" "~5.7.0" - "rc-util" "^5.16.1" + classnames "2.x" + rc-select "~14.1.0" + rc-tree "~5.7.0" + rc-util "^5.16.1" -"rc-tree@~5.7.0": - "integrity" "sha512-fP04wmM5oyi9jT3DvmweLENswMHuNV5bDqT/1lWcmzAUqJ5/O/Bj7y8dMR5JlnnTojsRoJP6HlS+Az4Bc1h9jA==" - "resolved" "https://registry.npmjs.org/rc-tree/-/rc-tree-5.7.1.tgz" - "version" "5.7.1" +rc-tree@~5.7.0: + version "5.7.1" + resolved "https://registry.npmjs.org/rc-tree/-/rc-tree-5.7.1.tgz" + integrity sha512-fP04wmM5oyi9jT3DvmweLENswMHuNV5bDqT/1lWcmzAUqJ5/O/Bj7y8dMR5JlnnTojsRoJP6HlS+Az4Bc1h9jA== dependencies: "@babel/runtime" "^7.10.1" - "classnames" "2.x" - "rc-motion" "^2.0.1" - "rc-util" "^5.16.1" - "rc-virtual-list" "^3.4.8" + classnames "2.x" + rc-motion "^2.0.1" + rc-util "^5.16.1" + rc-virtual-list "^3.4.8" -"rc-trigger@^5.0.0", "rc-trigger@^5.0.4", "rc-trigger@^5.1.2", "rc-trigger@^5.2.10", "rc-trigger@^5.3.1": - "integrity" "sha512-IC4nuTSAME7RJSgwvHCNDQrIzhvGMKf6NDu5veX+zk1MG7i1UnwTWWthcP9WHw3+FZfP3oZGvkrHFPu/EGkFKw==" - "resolved" "https://registry.npmjs.org/rc-trigger/-/rc-trigger-5.3.3.tgz" - "version" "5.3.3" +rc-trigger@^5.0.0, rc-trigger@^5.0.4, rc-trigger@^5.1.2, rc-trigger@^5.2.10, rc-trigger@^5.3.1: + version "5.3.3" + resolved "https://registry.npmjs.org/rc-trigger/-/rc-trigger-5.3.3.tgz" + integrity sha512-IC4nuTSAME7RJSgwvHCNDQrIzhvGMKf6NDu5veX+zk1MG7i1UnwTWWthcP9WHw3+FZfP3oZGvkrHFPu/EGkFKw== dependencies: "@babel/runtime" "^7.18.3" - "classnames" "^2.2.6" - "rc-align" "^4.0.0" - "rc-motion" "^2.0.0" - "rc-util" "^5.19.2" + classnames "^2.2.6" + rc-align "^4.0.0" + rc-motion "^2.0.0" + rc-util "^5.19.2" -"rc-upload@~4.3.0": - "integrity" "sha512-uVbtHFGNjHG/RyAfm9fluXB6pvArAGyAx8z7XzXXyorEgVIWj6mOlriuDm0XowDHYz4ycNK0nE0oP3cbFnzxiQ==" - "resolved" "https://registry.npmjs.org/rc-upload/-/rc-upload-4.3.4.tgz" - "version" "4.3.4" +rc-upload@~4.3.0: + version "4.3.4" + resolved "https://registry.npmjs.org/rc-upload/-/rc-upload-4.3.4.tgz" + integrity sha512-uVbtHFGNjHG/RyAfm9fluXB6pvArAGyAx8z7XzXXyorEgVIWj6mOlriuDm0XowDHYz4ycNK0nE0oP3cbFnzxiQ== dependencies: "@babel/runtime" "^7.18.3" - "classnames" "^2.2.5" - "rc-util" "^5.2.0" + classnames "^2.2.5" + rc-util "^5.2.0" -"rc-util@^5.0.1", "rc-util@^5.0.6", "rc-util@^5.12.0", "rc-util@^5.15.0", "rc-util@^5.16.0", "rc-util@^5.16.1", "rc-util@^5.17.0", "rc-util@^5.18.1", "rc-util@^5.19.2", "rc-util@^5.2.0", "rc-util@^5.2.1", "rc-util@^5.20.1", "rc-util@^5.21.0", "rc-util@^5.21.2", "rc-util@^5.22.5", "rc-util@^5.23.0", "rc-util@^5.24.4", "rc-util@^5.3.0", "rc-util@^5.4.0", "rc-util@^5.6.1", "rc-util@^5.8.0", "rc-util@^5.9.4": - "integrity" "sha512-Y5b6qQ2/tZKRT8MvL0/ky++JOMAijZPvepTMbt20eRDDMqXUbmIR+lkjcTfzDu845ysEyq0YGdRsaae3hrpnQg==" - "resolved" "https://registry.npmjs.org/rc-util/-/rc-util-5.24.5.tgz" - "version" "5.24.5" +rc-util@^5.0.1, rc-util@^5.0.6, rc-util@^5.12.0, rc-util@^5.15.0, rc-util@^5.16.0, rc-util@^5.16.1, rc-util@^5.17.0, rc-util@^5.18.1, rc-util@^5.19.2, rc-util@^5.2.0, rc-util@^5.2.1, rc-util@^5.20.1, rc-util@^5.21.0, rc-util@^5.21.2, rc-util@^5.22.5, rc-util@^5.23.0, rc-util@^5.24.4, rc-util@^5.3.0, rc-util@^5.4.0, rc-util@^5.6.1, rc-util@^5.8.0, rc-util@^5.9.4: + version "5.24.5" + resolved "https://registry.npmjs.org/rc-util/-/rc-util-5.24.5.tgz" + integrity sha512-Y5b6qQ2/tZKRT8MvL0/ky++JOMAijZPvepTMbt20eRDDMqXUbmIR+lkjcTfzDu845ysEyq0YGdRsaae3hrpnQg== dependencies: "@babel/runtime" "^7.18.3" - "react-is" "^16.12.0" - "shallowequal" "^1.1.0" + react-is "^16.12.0" + shallowequal "^1.1.0" -"rc-virtual-list@^3.2.0", "rc-virtual-list@^3.4.8": - "integrity" "sha512-BvUUH60kkeTBPigN5F89HtGaA5jSP4y2aM6cJ4dk9Y42I9yY+h6i08wF6UKeDcxdfOU8j3I5HxkSS/xA77J3wA==" - "resolved" "https://registry.npmjs.org/rc-virtual-list/-/rc-virtual-list-3.4.11.tgz" - "version" "3.4.11" +rc-virtual-list@^3.2.0, rc-virtual-list@^3.4.8: + version "3.4.11" + resolved "https://registry.npmjs.org/rc-virtual-list/-/rc-virtual-list-3.4.11.tgz" + integrity sha512-BvUUH60kkeTBPigN5F89HtGaA5jSP4y2aM6cJ4dk9Y42I9yY+h6i08wF6UKeDcxdfOU8j3I5HxkSS/xA77J3wA== dependencies: "@babel/runtime" "^7.20.0" - "classnames" "^2.2.6" - "rc-resize-observer" "^1.0.0" - "rc-util" "^5.15.0" + classnames "^2.2.6" + rc-resize-observer "^1.0.0" + rc-util "^5.15.0" -"rc@^1.2.8", "rc@1.2.8": - "integrity" "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==" - "resolved" "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz" - "version" "1.2.8" +rc@1.2.8, rc@^1.2.8: + version "1.2.8" + resolved "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz" + integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== dependencies: - "deep-extend" "^0.6.0" - "ini" "~1.3.0" - "minimist" "^1.2.0" - "strip-json-comments" "~2.0.1" + deep-extend "^0.6.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.0.1" -"react-ace@^9.1.1": - "integrity" "sha512-4l5FgwGh6K7A0yWVMQlPIXDItM4Q9zzXRqOae8KkCl6MkOob7sC1CzHxZdOGvV+QioKWbX2p5HcdOVUv6cAdSg==" - "resolved" "https://registry.npmjs.org/react-ace/-/react-ace-9.5.0.tgz" - "version" "9.5.0" +react-ace@^9.1.1: + version "9.5.0" + resolved "https://registry.npmjs.org/react-ace/-/react-ace-9.5.0.tgz" + integrity sha512-4l5FgwGh6K7A0yWVMQlPIXDItM4Q9zzXRqOae8KkCl6MkOob7sC1CzHxZdOGvV+QioKWbX2p5HcdOVUv6cAdSg== dependencies: - "ace-builds" "^1.4.13" - "diff-match-patch" "^1.0.5" - "lodash.get" "^4.4.2" - "lodash.isequal" "^4.5.0" - "prop-types" "^15.7.2" + ace-builds "^1.4.13" + diff-match-patch "^1.0.5" + lodash.get "^4.4.2" + lodash.isequal "^4.5.0" + prop-types "^15.7.2" -"react-app-polyfill@^1.0.6": - "integrity" "sha512-OfBnObtnGgLGfweORmdZbyEz+3dgVePQBb3zipiaDsMHV1NpWm0rDFYIVXFV/AK+x4VIIfWHhrdMIeoTLyRr2g==" - "resolved" "https://registry.npmjs.org/react-app-polyfill/-/react-app-polyfill-1.0.6.tgz" - "version" "1.0.6" +react-app-polyfill@^1.0.6: + version "1.0.6" + resolved "https://registry.npmjs.org/react-app-polyfill/-/react-app-polyfill-1.0.6.tgz" + integrity sha512-OfBnObtnGgLGfweORmdZbyEz+3dgVePQBb3zipiaDsMHV1NpWm0rDFYIVXFV/AK+x4VIIfWHhrdMIeoTLyRr2g== dependencies: - "core-js" "^3.5.0" - "object-assign" "^4.1.1" - "promise" "^8.0.3" - "raf" "^3.4.1" - "regenerator-runtime" "^0.13.3" - "whatwg-fetch" "^3.0.0" + core-js "^3.5.0" + object-assign "^4.1.1" + promise "^8.0.3" + raf "^3.4.1" + regenerator-runtime "^0.13.3" + whatwg-fetch "^3.0.0" -"react-app-polyfill@^3.0.0": - "integrity" "sha512-sZ41cxiU5llIB003yxxQBYrARBqe0repqPTTYBTmMqTz9szeBbE37BehCE891NZsmdZqqP+xWKdT3eo3vOzN8w==" - "resolved" "https://registry.npmjs.org/react-app-polyfill/-/react-app-polyfill-3.0.0.tgz" - "version" "3.0.0" +react-app-polyfill@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/react-app-polyfill/-/react-app-polyfill-3.0.0.tgz" + integrity sha512-sZ41cxiU5llIB003yxxQBYrARBqe0repqPTTYBTmMqTz9szeBbE37BehCE891NZsmdZqqP+xWKdT3eo3vOzN8w== dependencies: - "core-js" "^3.19.2" - "object-assign" "^4.1.1" - "promise" "^8.1.0" - "raf" "^3.4.1" - "regenerator-runtime" "^0.13.9" - "whatwg-fetch" "^3.6.2" + core-js "^3.19.2" + object-assign "^4.1.1" + promise "^8.1.0" + raf "^3.4.1" + regenerator-runtime "^0.13.9" + whatwg-fetch "^3.6.2" -"react-beautiful-dnd@10.1.0": - "integrity" "sha512-oij2ZLIQ6SFmqy/MiXbuO8HUFHQ39gaPsTYj0Ewk0XwbLM32L+diVP0NXbEK7nhYv5lF2jviXGnda+BYMi6+nA==" - "resolved" "https://registry.npmjs.org/react-beautiful-dnd/-/react-beautiful-dnd-10.1.0.tgz" - "version" "10.1.0" +react-beautiful-dnd@10.1.0: + version "10.1.0" + resolved "https://registry.npmjs.org/react-beautiful-dnd/-/react-beautiful-dnd-10.1.0.tgz" + integrity sha512-oij2ZLIQ6SFmqy/MiXbuO8HUFHQ39gaPsTYj0Ewk0XwbLM32L+diVP0NXbEK7nhYv5lF2jviXGnda+BYMi6+nA== dependencies: "@babel/runtime-corejs2" "^7.3.4" - "css-box-model" "^1.1.1" - "memoize-one" "^5.0.0" - "prop-types" "^15.6.1" - "raf-schd" "^4.0.0" - "react-redux" "^5.0.7" - "redux" "^4.0.1" - "tiny-invariant" "^1.0.3" + css-box-model "^1.1.1" + memoize-one "^5.0.0" + prop-types "^15.6.1" + raf-schd "^4.0.0" + react-redux "^5.0.7" + redux "^4.0.1" + tiny-invariant "^1.0.3" -"react-cookie@^4.1.1": - "integrity" "sha512-ffn7Y7G4bXiFbnE+dKhHhbP+b8I34mH9jqnm8Llhj89zF4nPxPutxHT1suUqMeCEhLDBI7InYwf1tpaSoK5w8A==" - "resolved" "https://registry.npmjs.org/react-cookie/-/react-cookie-4.1.1.tgz" - "version" "4.1.1" +react-cookie@^4.1.1: + version "4.1.1" + resolved "https://registry.npmjs.org/react-cookie/-/react-cookie-4.1.1.tgz" + integrity sha512-ffn7Y7G4bXiFbnE+dKhHhbP+b8I34mH9jqnm8Llhj89zF4nPxPutxHT1suUqMeCEhLDBI7InYwf1tpaSoK5w8A== dependencies: "@types/hoist-non-react-statics" "^3.0.1" - "hoist-non-react-statics" "^3.0.0" - "universal-cookie" "^4.0.0" + hoist-non-react-statics "^3.0.0" + universal-cookie "^4.0.0" -"react-dev-utils@^11.0.4": - "integrity" "sha512-dx0LvIGHcOPtKbeiSUM4jqpBl3TcY7CDjZdfOIcKeznE7BWr9dg0iPG90G5yfVQ+p/rGNMXdbfStvzQZEVEi4A==" - "resolved" "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-11.0.4.tgz" - "version" "11.0.4" +react-dev-utils@^11.0.4: + version "11.0.4" + resolved "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-11.0.4.tgz" + integrity sha512-dx0LvIGHcOPtKbeiSUM4jqpBl3TcY7CDjZdfOIcKeznE7BWr9dg0iPG90G5yfVQ+p/rGNMXdbfStvzQZEVEi4A== dependencies: "@babel/code-frame" "7.10.4" - "address" "1.1.2" - "browserslist" "4.14.2" - "chalk" "2.4.2" - "cross-spawn" "7.0.3" - "detect-port-alt" "1.1.6" - "escape-string-regexp" "2.0.0" - "filesize" "6.1.0" - "find-up" "4.1.0" - "fork-ts-checker-webpack-plugin" "4.1.6" - "global-modules" "2.0.0" - "globby" "11.0.1" - "gzip-size" "5.1.1" - "immer" "8.0.1" - "is-root" "2.1.0" - "loader-utils" "2.0.0" - "open" "^7.0.2" - "pkg-up" "3.1.0" - "prompts" "2.4.0" - "react-error-overlay" "^6.0.9" - "recursive-readdir" "2.2.2" - "shell-quote" "1.7.2" - "strip-ansi" "6.0.0" - "text-table" "0.2.0" + address "1.1.2" + browserslist "4.14.2" + chalk "2.4.2" + cross-spawn "7.0.3" + detect-port-alt "1.1.6" + escape-string-regexp "2.0.0" + filesize "6.1.0" + find-up "4.1.0" + fork-ts-checker-webpack-plugin "4.1.6" + global-modules "2.0.0" + globby "11.0.1" + gzip-size "5.1.1" + immer "8.0.1" + is-root "2.1.0" + loader-utils "2.0.0" + open "^7.0.2" + pkg-up "3.1.0" + prompts "2.4.0" + react-error-overlay "^6.0.9" + recursive-readdir "2.2.2" + shell-quote "1.7.2" + strip-ansi "6.0.0" + text-table "0.2.0" -"react-dev-utils@^12.0.1": - "integrity" "sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ==" - "resolved" "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-12.0.1.tgz" - "version" "12.0.1" +react-dev-utils@^12.0.1: + version "12.0.1" + resolved "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-12.0.1.tgz" + integrity sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ== dependencies: "@babel/code-frame" "^7.16.0" - "address" "^1.1.2" - "browserslist" "^4.18.1" - "chalk" "^4.1.2" - "cross-spawn" "^7.0.3" - "detect-port-alt" "^1.1.6" - "escape-string-regexp" "^4.0.0" - "filesize" "^8.0.6" - "find-up" "^5.0.0" - "fork-ts-checker-webpack-plugin" "^6.5.0" - "global-modules" "^2.0.0" - "globby" "^11.0.4" - "gzip-size" "^6.0.0" - "immer" "^9.0.7" - "is-root" "^2.1.0" - "loader-utils" "^3.2.0" - "open" "^8.4.0" - "pkg-up" "^3.1.0" - "prompts" "^2.4.2" - "react-error-overlay" "^6.0.11" - "recursive-readdir" "^2.2.2" - "shell-quote" "^1.7.3" - "strip-ansi" "^6.0.1" - "text-table" "^0.2.0" + address "^1.1.2" + browserslist "^4.18.1" + chalk "^4.1.2" + cross-spawn "^7.0.3" + detect-port-alt "^1.1.6" + escape-string-regexp "^4.0.0" + filesize "^8.0.6" + find-up "^5.0.0" + fork-ts-checker-webpack-plugin "^6.5.0" + global-modules "^2.0.0" + globby "^11.0.4" + gzip-size "^6.0.0" + immer "^9.0.7" + is-root "^2.1.0" + loader-utils "^3.2.0" + open "^8.4.0" + pkg-up "^3.1.0" + prompts "^2.4.2" + react-error-overlay "^6.0.11" + recursive-readdir "^2.2.2" + shell-quote "^1.7.3" + strip-ansi "^6.0.1" + text-table "^0.2.0" -"react-docgen-typescript-plugin@^1.0.0": - "integrity" "sha512-/8OKrPRDTAGDnOkumGvDWixfrNPrRWhEMGLZnJr1NiJtRwdvNRGqGA2J/SeSvWerawqSPxNyXK+EfERCir6mMw==" - "resolved" "https://registry.npmjs.org/react-docgen-typescript-plugin/-/react-docgen-typescript-plugin-1.0.2.tgz" - "version" "1.0.2" +react-docgen-typescript-plugin@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/react-docgen-typescript-plugin/-/react-docgen-typescript-plugin-1.0.2.tgz" + integrity sha512-/8OKrPRDTAGDnOkumGvDWixfrNPrRWhEMGLZnJr1NiJtRwdvNRGqGA2J/SeSvWerawqSPxNyXK+EfERCir6mMw== dependencies: - "debug" "^4.1.1" - "endent" "^2.0.1" - "find-cache-dir" "^3.3.1" - "flat-cache" "^3.0.4" - "micromatch" "^4.0.2" - "react-docgen-typescript" "^2.2.2" - "tslib" "^2.0.0" - "webpack-sources" "^2.2.0" + debug "^4.1.1" + endent "^2.0.1" + find-cache-dir "^3.3.1" + flat-cache "^3.0.4" + micromatch "^4.0.2" + react-docgen-typescript "^2.2.2" + tslib "^2.0.0" + webpack-sources "^2.2.0" -"react-docgen-typescript@^2.1.1", "react-docgen-typescript@^2.2.2": - "integrity" "sha512-tvg2ZtOpOi6QDwsb3GZhOjDkkX0h8Z2gipvTg6OVMUyoYoURhEiRNePT8NZItTVCDh39JJHnLdfCOkzoLbFnTg==" - "resolved" "https://registry.npmjs.org/react-docgen-typescript/-/react-docgen-typescript-2.2.2.tgz" - "version" "2.2.2" +react-docgen-typescript@^2.1.1, react-docgen-typescript@^2.2.2: + version "2.2.2" + resolved "https://registry.npmjs.org/react-docgen-typescript/-/react-docgen-typescript-2.2.2.tgz" + integrity sha512-tvg2ZtOpOi6QDwsb3GZhOjDkkX0h8Z2gipvTg6OVMUyoYoURhEiRNePT8NZItTVCDh39JJHnLdfCOkzoLbFnTg== -"react-docgen@^5.0.0": - "integrity" "sha512-xlLJyOlnfr8lLEEeaDZ+X2J/KJoe6Nr9AzxnkdQWush5hz2ZSu66w6iLMOScMmxoSHWpWMn+k3v5ZiyCfcWsOA==" - "resolved" "https://registry.npmjs.org/react-docgen/-/react-docgen-5.4.3.tgz" - "version" "5.4.3" +react-docgen@^5.0.0: + version "5.4.3" + resolved "https://registry.npmjs.org/react-docgen/-/react-docgen-5.4.3.tgz" + integrity sha512-xlLJyOlnfr8lLEEeaDZ+X2J/KJoe6Nr9AzxnkdQWush5hz2ZSu66w6iLMOScMmxoSHWpWMn+k3v5ZiyCfcWsOA== dependencies: "@babel/core" "^7.7.5" "@babel/generator" "^7.12.11" "@babel/runtime" "^7.7.6" - "ast-types" "^0.14.2" - "commander" "^2.19.0" - "doctrine" "^3.0.0" - "estree-to-babel" "^3.1.0" - "neo-async" "^2.6.1" - "node-dir" "^0.1.10" - "strip-indent" "^3.0.0" + ast-types "^0.14.2" + commander "^2.19.0" + doctrine "^3.0.0" + estree-to-babel "^3.1.0" + neo-async "^2.6.1" + node-dir "^0.1.10" + strip-indent "^3.0.0" -"react-dom@*", "react-dom@^0.13.0 || ^0.14.0 || ^15.0.1 || ^16.0.0 || ^17.0.0", "react-dom@^0.14 || >=15", "react-dom@^0.14.0 || ^15.0.0 || ^16.0.0", "react-dom@^0.14.8 || ^15 || ^16", "react-dom@^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1", "react-dom@^15.3.0 || ^16.0.0-alpha", "react-dom@^15.5.4 || ^16.0.0 || ^17.0.0", "react-dom@^16", "react-dom@^16 || ^17", "react-dom@^16 || ^17 || ^18", "react-dom@^16.0.0-0", "react-dom@^16.7.0", "react-dom@^16.8.0 || ^17.0.0", "react-dom@^16.8.0 || ^17.0.0 || ^18.0.0", "react-dom@^16.8.6", "react-dom@^17.0.2", "react-dom@>= 16.8.6", "react-dom@>=0.14.0", "react-dom@>=16 || >=17 || >= 18", "react-dom@>=16.0.0", "react-dom@>=16.11.0", "react-dom@>=16.3.2", "react-dom@>=16.3.3", "react-dom@>=16.4.2", "react-dom@>=16.6.0", "react-dom@>=16.9.0": - "integrity" "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==" - "resolved" "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz" - "version" "17.0.2" +react-dom@^17.0.2: + version "17.0.2" + resolved "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz" + integrity sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA== dependencies: - "loose-envify" "^1.1.0" - "object-assign" "^4.1.1" - "scheduler" "^0.20.2" + loose-envify "^1.1.0" + object-assign "^4.1.1" + scheduler "^0.20.2" -"react-element-to-jsx-string@^14.3.4": - "integrity" "sha512-t4ZwvV6vwNxzujDQ+37bspnLwA4JlgUPWhLjBJWsNIDceAf6ZKUTCjdm08cN6WeZ5pTMKiCJkmAYnpmR4Bm+dg==" - "resolved" "https://registry.npmjs.org/react-element-to-jsx-string/-/react-element-to-jsx-string-14.3.4.tgz" - "version" "14.3.4" +react-element-to-jsx-string@^14.3.4: + version "14.3.4" + resolved "https://registry.npmjs.org/react-element-to-jsx-string/-/react-element-to-jsx-string-14.3.4.tgz" + integrity sha512-t4ZwvV6vwNxzujDQ+37bspnLwA4JlgUPWhLjBJWsNIDceAf6ZKUTCjdm08cN6WeZ5pTMKiCJkmAYnpmR4Bm+dg== dependencies: "@base2/pretty-print-object" "1.0.1" - "is-plain-object" "5.0.0" - "react-is" "17.0.2" + is-plain-object "5.0.0" + react-is "17.0.2" -"react-emojione@^5.0.1": - "integrity" "sha512-sjI6k8uQ14rWENYoAb+2BFQGLBt/cpLDJJNhnZvdFJytAJijhv+JmbmyyrfQPdyID0Cs4N8XFqnek0xq6POwGA==" - "resolved" "https://registry.npmjs.org/react-emojione/-/react-emojione-5.0.1.tgz" - "version" "5.0.1" +react-emojione@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/react-emojione/-/react-emojione-5.0.1.tgz" + integrity sha512-sjI6k8uQ14rWENYoAb+2BFQGLBt/cpLDJJNhnZvdFJytAJijhv+JmbmyyrfQPdyID0Cs4N8XFqnek0xq6POwGA== -"react-error-overlay@^6.0.11", "react-error-overlay@^6.0.9": - "integrity" "sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg==" - "resolved" "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.11.tgz" - "version" "6.0.11" +react-error-overlay@^6.0.11, react-error-overlay@^6.0.9: + version "6.0.11" + resolved "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.11.tgz" + integrity sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg== -"react-fast-compare@^3.0.1": - "integrity" "sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA==" - "resolved" "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.0.tgz" - "version" "3.2.0" +react-fast-compare@^3.0.1: + version "3.2.0" + resolved "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.0.tgz" + integrity sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA== -"react-fastclick@^3.0.2": - "integrity" "sha512-ia0v5WamwSHmGsWaeKVvR79ubjpa5gIxm+ZFqzSbKrZrUfF4t3PF1+cvQzfbSe51muO7VwUHLBW4uu+oGIwEow==" - "resolved" "https://registry.npmjs.org/react-fastclick/-/react-fastclick-3.0.2.tgz" - "version" "3.0.2" +react-fastclick@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/react-fastclick/-/react-fastclick-3.0.2.tgz" + integrity sha512-ia0v5WamwSHmGsWaeKVvR79ubjpa5gIxm+ZFqzSbKrZrUfF4t3PF1+cvQzfbSe51muO7VwUHLBW4uu+oGIwEow== -"react-feather@^2.0.8": - "integrity" "sha512-BLhukwJ+Z92Nmdcs+EMw6dy1Z/VLiJTzEQACDUEnWMClhYnFykJCGWQx+NmwP/qQHGX/5CzQ+TGi8ofg2+HzVQ==" - "resolved" "https://registry.npmjs.org/react-feather/-/react-feather-2.0.10.tgz" - "version" "2.0.10" +react-feather@^2.0.8: + version "2.0.10" + resolved "https://registry.npmjs.org/react-feather/-/react-feather-2.0.10.tgz" + integrity sha512-BLhukwJ+Z92Nmdcs+EMw6dy1Z/VLiJTzEQACDUEnWMClhYnFykJCGWQx+NmwP/qQHGX/5CzQ+TGi8ofg2+HzVQ== dependencies: - "prop-types" "^15.7.2" + prop-types "^15.7.2" -"react-google-login@^5.1.1": - "integrity" "sha512-JUngfvaSMcOuV0lFff7+SzJ2qviuNMQdqlsDJkUM145xkGPVIfqWXq9Ui+2Dr6jdJWH5KYdynz9+4CzKjI5u6g==" - "resolved" "https://registry.npmjs.org/react-google-login/-/react-google-login-5.2.2.tgz" - "version" "5.2.2" +react-google-login@^5.1.1: + version "5.2.2" + resolved "https://registry.npmjs.org/react-google-login/-/react-google-login-5.2.2.tgz" + integrity sha512-JUngfvaSMcOuV0lFff7+SzJ2qviuNMQdqlsDJkUM145xkGPVIfqWXq9Ui+2Dr6jdJWH5KYdynz9+4CzKjI5u6g== dependencies: "@types/react" "*" - "prop-types" "^15.6.0" + prop-types "^15.6.0" -"react-highlight-words@^0.18.0": - "integrity" "sha512-5z+46eLPjB4JWgOhuQ0E+6iUPTD1U3amiy5KKjzZmeJ5zyvHr91hnzBT3UHya/KlySm5KRTKpYpba9vs67oO2A==" - "resolved" "https://registry.npmjs.org/react-highlight-words/-/react-highlight-words-0.18.0.tgz" - "version" "0.18.0" +react-highlight-words@^0.18.0: + version "0.18.0" + resolved "https://registry.npmjs.org/react-highlight-words/-/react-highlight-words-0.18.0.tgz" + integrity sha512-5z+46eLPjB4JWgOhuQ0E+6iUPTD1U3amiy5KKjzZmeJ5zyvHr91hnzBT3UHya/KlySm5KRTKpYpba9vs67oO2A== dependencies: - "highlight-words-core" "^1.2.0" - "memoize-one" "^4.0.0" - "prop-types" "^15.5.8" + highlight-words-core "^1.2.0" + memoize-one "^4.0.0" + prop-types "^15.5.8" -"react-i18next@^11.15.3": - "integrity" "sha512-yHb2F9BiT0lqoQDt8loZ5gWP331GwctHz9tYQ8A2EIEUu+CcEdjBLQWli1USG3RdWQt3W+jqQLg/d4rrQR96LA==" - "resolved" "https://registry.npmjs.org/react-i18next/-/react-i18next-11.18.6.tgz" - "version" "11.18.6" +react-i18next@^11.15.3: + version "11.18.6" + resolved "https://registry.npmjs.org/react-i18next/-/react-i18next-11.18.6.tgz" + integrity sha512-yHb2F9BiT0lqoQDt8loZ5gWP331GwctHz9tYQ8A2EIEUu+CcEdjBLQWli1USG3RdWQt3W+jqQLg/d4rrQR96LA== dependencies: "@babel/runtime" "^7.14.5" - "html-parse-stringify" "^3.0.1" + html-parse-stringify "^3.0.1" -"react-inspector@^5.1.0": - "integrity" "sha512-GURDaYzoLbW8pMGXwYPDBIv6nqei4kK7LPRZ9q9HCZF54wqXz/dnylBp/kfE9XmekBhHvLDdcYeyIwSrvtOiWg==" - "resolved" "https://registry.npmjs.org/react-inspector/-/react-inspector-5.1.1.tgz" - "version" "5.1.1" +react-inspector@^5.1.0: + version "5.1.1" + resolved "https://registry.npmjs.org/react-inspector/-/react-inspector-5.1.1.tgz" + integrity sha512-GURDaYzoLbW8pMGXwYPDBIv6nqei4kK7LPRZ9q9HCZF54wqXz/dnylBp/kfE9XmekBhHvLDdcYeyIwSrvtOiWg== dependencies: "@babel/runtime" "^7.0.0" - "is-dom" "^1.0.0" - "prop-types" "^15.0.0" + is-dom "^1.0.0" + prop-types "^15.0.0" -"react-is@^16.12.0", "react-is@^16.12.0 || ^17.0.0 || ^18.0.0", "react-is@^16.13.1", "react-is@^16.6.0", "react-is@^16.7.0", "react-is@^16.8.0 || ^17.0.0", "react-is@^16.8.4", "react-is@^16.8.6": - "integrity" "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" - "resolved" "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz" - "version" "16.13.1" +react-is@17.0.2, react-is@^17.0.1, react-is@^17.0.2: + version "17.0.2" + resolved "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz" + integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== -"react-is@^17.0.1": - "integrity" "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" - "resolved" "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz" - "version" "17.0.2" +react-is@^16.12.0, "react-is@^16.12.0 || ^17.0.0 || ^18.0.0", react-is@^16.13.1, react-is@^16.6.0, react-is@^16.7.0, "react-is@^16.8.0 || ^17.0.0", react-is@^16.8.4, react-is@^16.8.6: + version "16.13.1" + resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== -"react-is@^17.0.2": - "integrity" "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" - "resolved" "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz" - "version" "17.0.2" +react-is@^18.0.0: + version "18.2.0" + resolved "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz" + integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== -"react-is@^18.0.0": - "integrity" "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" - "resolved" "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz" - "version" "18.2.0" +react-lifecycles-compat@^3.0.0, react-lifecycles-compat@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz" + integrity sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA== -"react-is@17.0.2": - "integrity" "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" - "resolved" "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz" - "version" "17.0.2" +react-merge-refs@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/react-merge-refs/-/react-merge-refs-1.1.0.tgz" + integrity sha512-alTKsjEL0dKH/ru1Iyn7vliS2QRcBp9zZPGoWxUOvRGWPUYgjo+V01is7p04It6KhgrzhJGnIj9GgX8W4bZoCQ== -"react-lifecycles-compat@^3.0.0", "react-lifecycles-compat@^3.0.4": - "integrity" "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" - "resolved" "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz" - "version" "3.0.4" +react-moment@^0.9.7: + version "0.9.7" + resolved "https://registry.npmjs.org/react-moment/-/react-moment-0.9.7.tgz" + integrity sha512-ifzUrUGF6KRsUN2pRG5k56kO0mJBr8kRkWb0wNvtFIsBIxOuPxhUpL1YlXwpbQCbHq23hUu6A0VEk64HsFxk9g== -"react-merge-refs@^1.0.0": - "integrity" "sha512-alTKsjEL0dKH/ru1Iyn7vliS2QRcBp9zZPGoWxUOvRGWPUYgjo+V01is7p04It6KhgrzhJGnIj9GgX8W4bZoCQ==" - "resolved" "https://registry.npmjs.org/react-merge-refs/-/react-merge-refs-1.1.0.tgz" - "version" "1.1.0" - -"react-moment@^0.9.7": - "integrity" "sha512-ifzUrUGF6KRsUN2pRG5k56kO0mJBr8kRkWb0wNvtFIsBIxOuPxhUpL1YlXwpbQCbHq23hUu6A0VEk64HsFxk9g==" - "resolved" "https://registry.npmjs.org/react-moment/-/react-moment-0.9.7.tgz" - "version" "0.9.7" - -"react-motion@^0.5.2": - "integrity" "sha512-9q3YAvHoUiWlP3cK0v+w1N5Z23HXMj4IF4YuvjvWegWqNPfLXsOBE/V7UvQGpXxHFKRQQcNcVQE31g9SB/6qgQ==" - "resolved" "https://registry.npmjs.org/react-motion/-/react-motion-0.5.2.tgz" - "version" "0.5.2" +react-motion@^0.5.2: + version "0.5.2" + resolved "https://registry.npmjs.org/react-motion/-/react-motion-0.5.2.tgz" + integrity sha512-9q3YAvHoUiWlP3cK0v+w1N5Z23HXMj4IF4YuvjvWegWqNPfLXsOBE/V7UvQGpXxHFKRQQcNcVQE31g9SB/6qgQ== dependencies: - "performance-now" "^0.2.0" - "prop-types" "^15.5.8" - "raf" "^3.1.0" + performance-now "^0.2.0" + prop-types "^15.5.8" + raf "^3.1.0" -"react-outside-click-handler@^1.3.0": - "integrity" "sha512-Te/7zFU0oHpAnctl//pP3hEAeobfeHMyygHB8MnjP6sX5OR8KHT1G3jmLsV3U9RnIYo+Yn+peJYWu+D5tUS8qQ==" - "resolved" "https://registry.npmjs.org/react-outside-click-handler/-/react-outside-click-handler-1.3.0.tgz" - "version" "1.3.0" +react-outside-click-handler@^1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/react-outside-click-handler/-/react-outside-click-handler-1.3.0.tgz" + integrity sha512-Te/7zFU0oHpAnctl//pP3hEAeobfeHMyygHB8MnjP6sX5OR8KHT1G3jmLsV3U9RnIYo+Yn+peJYWu+D5tUS8qQ== dependencies: - "airbnb-prop-types" "^2.15.0" - "consolidated-events" "^1.1.1 || ^2.0.0" - "document.contains" "^1.0.1" - "object.values" "^1.1.0" - "prop-types" "^15.7.2" + airbnb-prop-types "^2.15.0" + consolidated-events "^1.1.1 || ^2.0.0" + document.contains "^1.0.1" + object.values "^1.1.0" + prop-types "^15.7.2" -"react-page-visibility@^7.0.0": - "integrity" "sha512-d4Kq/8TtJSr8dQc8EJeAZcSKTrGzC5OPTm6UrMur9BnwP0fgTawI9+Nd+ZGB7vwCfn2yZS0qDF9DR3/QYTGazw==" - "resolved" "https://registry.npmjs.org/react-page-visibility/-/react-page-visibility-7.0.0.tgz" - "version" "7.0.0" +react-page-visibility@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/react-page-visibility/-/react-page-visibility-7.0.0.tgz" + integrity sha512-d4Kq/8TtJSr8dQc8EJeAZcSKTrGzC5OPTm6UrMur9BnwP0fgTawI9+Nd+ZGB7vwCfn2yZS0qDF9DR3/QYTGazw== dependencies: - "prop-types" "^15.7.2" + prop-types "^15.7.2" -"react-perfect-scrollbar@^1.5.8": - "integrity" "sha512-bQ46m70gp/HJtiBOF3gRzBISSZn8FFGNxznTdmTG8AAwpxG1bJCyn7shrgjEvGSQ5FJEafVEiosY+ccER11OSA==" - "resolved" "https://registry.npmjs.org/react-perfect-scrollbar/-/react-perfect-scrollbar-1.5.8.tgz" - "version" "1.5.8" +react-perfect-scrollbar@^1.5.8: + version "1.5.8" + resolved "https://registry.npmjs.org/react-perfect-scrollbar/-/react-perfect-scrollbar-1.5.8.tgz" + integrity sha512-bQ46m70gp/HJtiBOF3gRzBISSZn8FFGNxznTdmTG8AAwpxG1bJCyn7shrgjEvGSQ5FJEafVEiosY+ccER11OSA== dependencies: - "perfect-scrollbar" "^1.5.0" - "prop-types" "^15.6.1" + perfect-scrollbar "^1.5.0" + prop-types "^15.6.1" -"react-player@^2.10.1": - "integrity" "sha512-fIrwpuXOBXdEg1FiyV9isKevZOaaIsAAtZy5fcjkQK9Nhmk1I2NXzY/hkPos8V0zb/ZX416LFy8gv7l/1k3a5w==" - "resolved" "https://registry.npmjs.org/react-player/-/react-player-2.11.0.tgz" - "version" "2.11.0" +react-player@^2.10.1: + version "2.11.0" + resolved "https://registry.npmjs.org/react-player/-/react-player-2.11.0.tgz" + integrity sha512-fIrwpuXOBXdEg1FiyV9isKevZOaaIsAAtZy5fcjkQK9Nhmk1I2NXzY/hkPos8V0zb/ZX416LFy8gv7l/1k3a5w== dependencies: - "deepmerge" "^4.0.0" - "load-script" "^1.0.0" - "memoize-one" "^5.1.1" - "prop-types" "^15.7.2" - "react-fast-compare" "^3.0.1" + deepmerge "^4.0.0" + load-script "^1.0.0" + memoize-one "^5.1.1" + prop-types "^15.7.2" + react-fast-compare "^3.0.1" -"react-redux@^5.0.7": - "integrity" "sha512-Ns1G0XXc8hDyH/OcBHOxNgQx9ayH3SPxBnFCOidGKSle8pKihysQw2rG/PmciUQRoclhVBO8HMhiRmGXnDja9Q==" - "resolved" "https://registry.npmjs.org/react-redux/-/react-redux-5.1.2.tgz" - "version" "5.1.2" +react-redux@^5.0.7: + version "5.1.2" + resolved "https://registry.npmjs.org/react-redux/-/react-redux-5.1.2.tgz" + integrity sha512-Ns1G0XXc8hDyH/OcBHOxNgQx9ayH3SPxBnFCOidGKSle8pKihysQw2rG/PmciUQRoclhVBO8HMhiRmGXnDja9Q== dependencies: "@babel/runtime" "^7.1.2" - "hoist-non-react-statics" "^3.3.0" - "invariant" "^2.2.4" - "loose-envify" "^1.1.0" - "prop-types" "^15.6.1" - "react-is" "^16.6.0" - "react-lifecycles-compat" "^3.0.0" + hoist-non-react-statics "^3.3.0" + invariant "^2.2.4" + loose-envify "^1.1.0" + prop-types "^15.6.1" + react-is "^16.6.0" + react-lifecycles-compat "^3.0.0" -"react-redux@^7.2.0": - "integrity" "sha512-Gx4L3uM182jEEayZfRbI/G11ZpYdNAnBs70lFVMNdHJI76XYtR+7m0MN+eAs7UHBPhWXcnFPaS+9owSCJQHNpQ==" - "resolved" "https://registry.npmjs.org/react-redux/-/react-redux-7.2.9.tgz" - "version" "7.2.9" +react-redux@^7.2.0: + version "7.2.9" + resolved "https://registry.npmjs.org/react-redux/-/react-redux-7.2.9.tgz" + integrity sha512-Gx4L3uM182jEEayZfRbI/G11ZpYdNAnBs70lFVMNdHJI76XYtR+7m0MN+eAs7UHBPhWXcnFPaS+9owSCJQHNpQ== dependencies: "@babel/runtime" "^7.15.4" "@types/react-redux" "^7.1.20" - "hoist-non-react-statics" "^3.3.2" - "loose-envify" "^1.4.0" - "prop-types" "^15.7.2" - "react-is" "^17.0.2" + hoist-non-react-statics "^3.3.2" + loose-envify "^1.4.0" + prop-types "^15.7.2" + react-is "^17.0.2" -"react-refresh@^0.11.0", "react-refresh@>=0.10.0 <1.0.0", "react-refresh@>=0.8.3 <0.10.0": - "integrity" "sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A==" - "resolved" "https://registry.npmjs.org/react-refresh/-/react-refresh-0.11.0.tgz" - "version" "0.11.0" +react-refresh@^0.11.0: + version "0.11.0" + resolved "https://registry.npmjs.org/react-refresh/-/react-refresh-0.11.0.tgz" + integrity sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A== -"react-router-dom@^5.2.0": - "integrity" "sha512-m4EqFMHv/Ih4kpcBCONHbkT68KoAeHN4p3lAGoNryfHi0dMy0kCzEZakiKRsvg5wHZ/JLrLW8o8KomWiz/qbYQ==" - "resolved" "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.3.4.tgz" - "version" "5.3.4" +react-router-dom@^5.2.0: + version "5.3.4" + resolved "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.3.4.tgz" + integrity sha512-m4EqFMHv/Ih4kpcBCONHbkT68KoAeHN4p3lAGoNryfHi0dMy0kCzEZakiKRsvg5wHZ/JLrLW8o8KomWiz/qbYQ== dependencies: "@babel/runtime" "^7.12.13" - "history" "^4.9.0" - "loose-envify" "^1.3.1" - "prop-types" "^15.6.2" - "react-router" "5.3.4" - "tiny-invariant" "^1.0.2" - "tiny-warning" "^1.0.0" + history "^4.9.0" + loose-envify "^1.3.1" + prop-types "^15.6.2" + react-router "5.3.4" + tiny-invariant "^1.0.2" + tiny-warning "^1.0.0" -"react-router@5.3.4": - "integrity" "sha512-Ys9K+ppnJah3QuaRiLxk+jDWOR1MekYQrlytiXxC1RyfbdsZkS5pvKAzCCr031xHixZwpnsYNT5xysdFHQaYsA==" - "resolved" "https://registry.npmjs.org/react-router/-/react-router-5.3.4.tgz" - "version" "5.3.4" +react-router@5.3.4: + version "5.3.4" + resolved "https://registry.npmjs.org/react-router/-/react-router-5.3.4.tgz" + integrity sha512-Ys9K+ppnJah3QuaRiLxk+jDWOR1MekYQrlytiXxC1RyfbdsZkS5pvKAzCCr031xHixZwpnsYNT5xysdFHQaYsA== dependencies: "@babel/runtime" "^7.12.13" - "history" "^4.9.0" - "hoist-non-react-statics" "^3.1.0" - "loose-envify" "^1.3.1" - "path-to-regexp" "^1.7.0" - "prop-types" "^15.6.2" - "react-is" "^16.6.0" - "tiny-invariant" "^1.0.2" - "tiny-warning" "^1.0.0" + history "^4.9.0" + hoist-non-react-statics "^3.1.0" + loose-envify "^1.3.1" + path-to-regexp "^1.7.0" + prop-types "^15.6.2" + react-is "^16.6.0" + tiny-invariant "^1.0.2" + tiny-warning "^1.0.0" -"react-scripts@^4.0.0", "react-scripts@^5.0.0", "react-scripts@^5.0.1", "react-scripts@>=3.0.0", "react-scripts@>=5.0.0": - "integrity" "sha512-8VAmEm/ZAwQzJ+GOMLbBsTdDKOpuZh7RPs0UymvBR2vRk4iZWCskjbFnxqjrzoIvlNNRZ3QJFx6/qDSi6zSnaQ==" - "resolved" "https://registry.npmjs.org/react-scripts/-/react-scripts-5.0.1.tgz" - "version" "5.0.1" +react-scripts@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/react-scripts/-/react-scripts-5.0.1.tgz" + integrity sha512-8VAmEm/ZAwQzJ+GOMLbBsTdDKOpuZh7RPs0UymvBR2vRk4iZWCskjbFnxqjrzoIvlNNRZ3QJFx6/qDSi6zSnaQ== dependencies: "@babel/core" "^7.16.0" "@pmmmwh/react-refresh-webpack-plugin" "^0.5.3" "@svgr/webpack" "^5.5.0" - "babel-jest" "^27.4.2" - "babel-loader" "^8.2.3" - "babel-plugin-named-asset-import" "^0.3.8" - "babel-preset-react-app" "^10.0.1" - "bfj" "^7.0.2" - "browserslist" "^4.18.1" - "camelcase" "^6.2.1" - "case-sensitive-paths-webpack-plugin" "^2.4.0" - "css-loader" "^6.5.1" - "css-minimizer-webpack-plugin" "^3.2.0" - "dotenv" "^10.0.0" - "dotenv-expand" "^5.1.0" - "eslint" "^8.3.0" - "eslint-config-react-app" "^7.0.1" - "eslint-webpack-plugin" "^3.1.1" - "file-loader" "^6.2.0" - "fs-extra" "^10.0.0" - "html-webpack-plugin" "^5.5.0" - "identity-obj-proxy" "^3.0.0" - "jest" "^27.4.3" - "jest-resolve" "^27.4.2" - "jest-watch-typeahead" "^1.0.0" - "mini-css-extract-plugin" "^2.4.5" - "postcss" "^8.4.4" - "postcss-flexbugs-fixes" "^5.0.2" - "postcss-loader" "^6.2.1" - "postcss-normalize" "^10.0.1" - "postcss-preset-env" "^7.0.1" - "prompts" "^2.4.2" - "react-app-polyfill" "^3.0.0" - "react-dev-utils" "^12.0.1" - "react-refresh" "^0.11.0" - "resolve" "^1.20.0" - "resolve-url-loader" "^4.0.0" - "sass-loader" "^12.3.0" - "semver" "^7.3.5" - "source-map-loader" "^3.0.0" - "style-loader" "^3.3.1" - "tailwindcss" "^3.0.2" - "terser-webpack-plugin" "^5.2.5" - "webpack" "^5.64.4" - "webpack-dev-server" "^4.6.0" - "webpack-manifest-plugin" "^4.0.2" - "workbox-webpack-plugin" "^6.4.1" + babel-jest "^27.4.2" + babel-loader "^8.2.3" + babel-plugin-named-asset-import "^0.3.8" + babel-preset-react-app "^10.0.1" + bfj "^7.0.2" + browserslist "^4.18.1" + camelcase "^6.2.1" + case-sensitive-paths-webpack-plugin "^2.4.0" + css-loader "^6.5.1" + css-minimizer-webpack-plugin "^3.2.0" + dotenv "^10.0.0" + dotenv-expand "^5.1.0" + eslint "^8.3.0" + eslint-config-react-app "^7.0.1" + eslint-webpack-plugin "^3.1.1" + file-loader "^6.2.0" + fs-extra "^10.0.0" + html-webpack-plugin "^5.5.0" + identity-obj-proxy "^3.0.0" + jest "^27.4.3" + jest-resolve "^27.4.2" + jest-watch-typeahead "^1.0.0" + mini-css-extract-plugin "^2.4.5" + postcss "^8.4.4" + postcss-flexbugs-fixes "^5.0.2" + postcss-loader "^6.2.1" + postcss-normalize "^10.0.1" + postcss-preset-env "^7.0.1" + prompts "^2.4.2" + react-app-polyfill "^3.0.0" + react-dev-utils "^12.0.1" + react-refresh "^0.11.0" + resolve "^1.20.0" + resolve-url-loader "^4.0.0" + sass-loader "^12.3.0" + semver "^7.3.5" + source-map-loader "^3.0.0" + style-loader "^3.3.1" + tailwindcss "^3.0.2" + terser-webpack-plugin "^5.2.5" + webpack "^5.64.4" + webpack-dev-server "^4.6.0" + webpack-manifest-plugin "^4.0.2" + workbox-webpack-plugin "^6.4.1" optionalDependencies: - "fsevents" "^2.3.2" + fsevents "^2.3.2" -"react-scrollbar@^0.5.6": - "integrity" "sha512-TsSLsuovOlxmfTxY9bRjRUfQjycvfs73L4gz7yE+2D8Qs7U3zhwbGS0lj0JScCDipcyn7EX66LsaI00cU3aRSQ==" - "resolved" "https://registry.npmjs.org/react-scrollbar/-/react-scrollbar-0.5.6.tgz" - "version" "0.5.6" +react-scrollbar@^0.5.6: + version "0.5.6" + resolved "https://registry.npmjs.org/react-scrollbar/-/react-scrollbar-0.5.6.tgz" + integrity sha512-TsSLsuovOlxmfTxY9bRjRUfQjycvfs73L4gz7yE+2D8Qs7U3zhwbGS0lj0JScCDipcyn7EX66LsaI00cU3aRSQ== dependencies: - "config" "^1.24.0" - "line-height" "^0.1.1" - "react-motion" "^0.5.2" + config "^1.24.0" + line-height "^0.1.1" + react-motion "^0.5.2" -"react-shallow-renderer@^16.13.1": - "integrity" "sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA==" - "resolved" "https://registry.npmjs.org/react-shallow-renderer/-/react-shallow-renderer-16.15.0.tgz" - "version" "16.15.0" +react-shallow-renderer@^16.13.1: + version "16.15.0" + resolved "https://registry.npmjs.org/react-shallow-renderer/-/react-shallow-renderer-16.15.0.tgz" + integrity sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA== dependencies: - "object-assign" "^4.1.1" - "react-is" "^16.12.0 || ^17.0.0 || ^18.0.0" + object-assign "^4.1.1" + react-is "^16.12.0 || ^17.0.0 || ^18.0.0" -"react-shortcuts@^2.1.0": - "integrity" "sha512-yETQgoy/KRCOPjdlGSnfTjyVHwJYsFoHtVmuLzJABYBAnilpm1M14DhDavuAAMElbaQlXunOwKjh0Oq3I6Vt0A==" - "resolved" "https://registry.npmjs.org/react-shortcuts/-/react-shortcuts-2.1.0.tgz" - "version" "2.1.0" +react-shortcuts@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/react-shortcuts/-/react-shortcuts-2.1.0.tgz" + integrity sha512-yETQgoy/KRCOPjdlGSnfTjyVHwJYsFoHtVmuLzJABYBAnilpm1M14DhDavuAAMElbaQlXunOwKjh0Oq3I6Vt0A== dependencies: - "combokeys" "^3.0.1" - "events" "^1.0.2" - "invariant" "^2.1.0" - "just-reduce-object" "^1.0.3" - "platform" "^1.3.0" - "prop-types" "^15.5.8" + combokeys "^3.0.1" + events "^1.0.2" + invariant "^2.1.0" + just-reduce-object "^1.0.3" + platform "^1.3.0" + prop-types "^15.5.8" -"react-showdown@^2.1.0": - "integrity" "sha512-3O9Gz6HF1MQbGK17gYOO6EJP27h9Sp+g/L7KeOhMJERuutYP3802MPaL8JybjeI97X9HTeeN4A89WjOpEHl3NQ==" - "resolved" "https://registry.npmjs.org/react-showdown/-/react-showdown-2.3.1.tgz" - "version" "2.3.1" +react-showdown@^2.1.0: + version "2.3.1" + resolved "https://registry.npmjs.org/react-showdown/-/react-showdown-2.3.1.tgz" + integrity sha512-3O9Gz6HF1MQbGK17gYOO6EJP27h9Sp+g/L7KeOhMJERuutYP3802MPaL8JybjeI97X9HTeeN4A89WjOpEHl3NQ== dependencies: - "domhandler" "^4.0.0" - "htmlparser2" "^6.0.1" - "showdown" "^1.9.1" + domhandler "^4.0.0" + htmlparser2 "^6.0.1" + showdown "^1.9.1" -"react-sidebar@^3.0.2": - "integrity" "sha512-LG/JO1cJvdRqSmUT+DOhJrml/b45/UqM9nm8emcgbJb5EKNegKCObZcrRqyzVix42VfFf0odytviAAFEYYTu1Q==" - "resolved" "https://registry.npmjs.org/react-sidebar/-/react-sidebar-3.0.2.tgz" - "version" "3.0.2" +react-sidebar@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/react-sidebar/-/react-sidebar-3.0.2.tgz" + integrity sha512-LG/JO1cJvdRqSmUT+DOhJrml/b45/UqM9nm8emcgbJb5EKNegKCObZcrRqyzVix42VfFf0odytviAAFEYYTu1Q== dependencies: "@babel/runtime" ">=7.0.0-beta.56" - "prop-types" "^15.6.2" + prop-types "^15.6.2" -"react-sortable-hoc@^1.11.0": - "integrity" "sha512-v1CDCvdfoR3zLGNp6qsBa4J1BWMEVH25+UKxF/RvQRh+mrB+emqtVHMgZ+WreUiKJoEaiwYoScaueIKhMVBHUg==" - "resolved" "https://registry.npmjs.org/react-sortable-hoc/-/react-sortable-hoc-1.11.0.tgz" - "version" "1.11.0" +react-sortable-hoc@^1.11.0: + version "1.11.0" + resolved "https://registry.npmjs.org/react-sortable-hoc/-/react-sortable-hoc-1.11.0.tgz" + integrity sha512-v1CDCvdfoR3zLGNp6qsBa4J1BWMEVH25+UKxF/RvQRh+mrB+emqtVHMgZ+WreUiKJoEaiwYoScaueIKhMVBHUg== dependencies: "@babel/runtime" "^7.2.0" - "invariant" "^2.2.4" - "prop-types" "^15.5.7" + invariant "^2.2.4" + prop-types "^15.5.7" -"react-svg@^11.0.29": - "integrity" "sha512-uUMhRVdU//5qktiTSO2W6nQeHRLwYA1FsWANQFB5O33UgT2uT0V5wVapu46+wz1mx6wt1j53+1aA8QuNn4lJ6A==" - "resolved" "https://registry.npmjs.org/react-svg/-/react-svg-11.2.5.tgz" - "version" "11.2.5" +react-svg@^11.0.29: + version "11.2.5" + resolved "https://registry.npmjs.org/react-svg/-/react-svg-11.2.5.tgz" + integrity sha512-uUMhRVdU//5qktiTSO2W6nQeHRLwYA1FsWANQFB5O33UgT2uT0V5wVapu46+wz1mx6wt1j53+1aA8QuNn4lJ6A== dependencies: "@babel/runtime" "^7.12.13" "@tanem/svg-injector" "^8.2.4" - "prop-types" "^15.7.2" + prop-types "^15.7.2" -"react-swipeable@^5.5.1": - "integrity" "sha512-EQObuU3Qg3JdX3WxOn5reZvOSCpU4fwpUAs+NlXSN3y+qtsO2r8VGkVnOQzmByt3BSYj9EWYdUOUfi7vaMdZZw==" - "resolved" "https://registry.npmjs.org/react-swipeable/-/react-swipeable-5.5.1.tgz" - "version" "5.5.1" +react-swipeable@^5.5.1: + version "5.5.1" + resolved "https://registry.npmjs.org/react-swipeable/-/react-swipeable-5.5.1.tgz" + integrity sha512-EQObuU3Qg3JdX3WxOn5reZvOSCpU4fwpUAs+NlXSN3y+qtsO2r8VGkVnOQzmByt3BSYj9EWYdUOUfi7vaMdZZw== dependencies: - "prop-types" "^15.6.2" + prop-types "^15.6.2" -"react-syntax-highlighter@^15.4.5": - "integrity" "sha512-+zq2myprEnQmH5yw6Gqc8lD55QHnpKaU8TOcFeC/Lg/MQSs8UknEA0JC4nTZGFAXC2J2Hyj/ijJ7NlabyPi2gg==" - "resolved" "https://registry.npmjs.org/react-syntax-highlighter/-/react-syntax-highlighter-15.5.0.tgz" - "version" "15.5.0" +react-syntax-highlighter@^15.4.5: + version "15.5.0" + resolved "https://registry.npmjs.org/react-syntax-highlighter/-/react-syntax-highlighter-15.5.0.tgz" + integrity sha512-+zq2myprEnQmH5yw6Gqc8lD55QHnpKaU8TOcFeC/Lg/MQSs8UknEA0JC4nTZGFAXC2J2Hyj/ijJ7NlabyPi2gg== dependencies: "@babel/runtime" "^7.3.1" - "highlight.js" "^10.4.1" - "lowlight" "^1.17.0" - "prismjs" "^1.27.0" - "refractor" "^3.6.0" + highlight.js "^10.4.1" + lowlight "^1.17.0" + prismjs "^1.27.0" + refractor "^3.6.0" -"react-test-renderer@^16.0.0-0": - "integrity" "sha512-L8yPjqPE5CZO6rKsKXRO/rVPiaCOy0tQQJbC+UjPNlobl5mad59lvPjwFsQHTvL03caVDIVr9x9/OSgDe6I5Eg==" - "resolved" "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-16.14.0.tgz" - "version" "16.14.0" +react-test-renderer@^16.0.0-0: + version "16.14.0" + resolved "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-16.14.0.tgz" + integrity sha512-L8yPjqPE5CZO6rKsKXRO/rVPiaCOy0tQQJbC+UjPNlobl5mad59lvPjwFsQHTvL03caVDIVr9x9/OSgDe6I5Eg== dependencies: - "object-assign" "^4.1.1" - "prop-types" "^15.6.2" - "react-is" "^16.8.6" - "scheduler" "^0.19.1" + object-assign "^4.1.1" + prop-types "^15.6.2" + react-is "^16.8.6" + scheduler "^0.19.1" -"react-test-renderer@^17.0.0": - "integrity" "sha512-yaQ9cB89c17PUb0x6UfWRs7kQCorVdHlutU1boVPEsB8IDZH6n9tHxMacc3y0JoXOJUsZb/t/Mb8FUWMKaM7iQ==" - "resolved" "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-17.0.2.tgz" - "version" "17.0.2" +react-test-renderer@^17.0.0: + version "17.0.2" + resolved "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-17.0.2.tgz" + integrity sha512-yaQ9cB89c17PUb0x6UfWRs7kQCorVdHlutU1boVPEsB8IDZH6n9tHxMacc3y0JoXOJUsZb/t/Mb8FUWMKaM7iQ== dependencies: - "object-assign" "^4.1.1" - "react-is" "^17.0.2" - "react-shallow-renderer" "^16.13.1" - "scheduler" "^0.20.2" + object-assign "^4.1.1" + react-is "^17.0.2" + react-shallow-renderer "^16.13.1" + scheduler "^0.20.2" -"react-textarea-autosize@^8.2.0": - "integrity" "sha512-YrTFaEHLgJsi8sJVYHBzYn+mkP3prGkmP2DKb/tm0t7CLJY5t1Rxix8070LAKb0wby7bl/lf2EeHkuMihMZMwQ==" - "resolved" "https://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-8.4.0.tgz" - "version" "8.4.0" +react-textarea-autosize@^8.2.0: + version "8.4.0" + resolved "https://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-8.4.0.tgz" + integrity sha512-YrTFaEHLgJsi8sJVYHBzYn+mkP3prGkmP2DKb/tm0t7CLJY5t1Rxix8070LAKb0wby7bl/lf2EeHkuMihMZMwQ== dependencies: "@babel/runtime" "^7.10.2" - "use-composed-ref" "^1.3.0" - "use-latest" "^1.2.1" + use-composed-ref "^1.3.0" + use-latest "^1.2.1" -"react-transition-group@^4.4.0", "react-transition-group@^4.4.1": - "integrity" "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==" - "resolved" "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz" - "version" "4.4.5" +react-transition-group@^4.4.0, react-transition-group@^4.4.1: + version "4.4.5" + resolved "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz" + integrity sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g== dependencies: "@babel/runtime" "^7.5.5" - "dom-helpers" "^5.0.1" - "loose-envify" "^1.4.0" - "prop-types" "^15.6.2" + dom-helpers "^5.0.1" + loose-envify "^1.4.0" + prop-types "^15.6.2" -"react-virtualized@^9.22.2": - "integrity" "sha512-MKovKMxWTcwPSxE1kK1HcheQTWfuCxAuBoSTf2gwyMM21NdX/PXUhnoP8Uc5dRKd+nKm8v41R36OellhdCpkrw==" - "resolved" "https://registry.npmjs.org/react-virtualized/-/react-virtualized-9.22.3.tgz" - "version" "9.22.3" +react-virtualized@^9.22.2: + version "9.22.3" + resolved "https://registry.npmjs.org/react-virtualized/-/react-virtualized-9.22.3.tgz" + integrity sha512-MKovKMxWTcwPSxE1kK1HcheQTWfuCxAuBoSTf2gwyMM21NdX/PXUhnoP8Uc5dRKd+nKm8v41R36OellhdCpkrw== dependencies: "@babel/runtime" "^7.7.2" - "clsx" "^1.0.4" - "dom-helpers" "^5.1.3" - "loose-envify" "^1.4.0" - "prop-types" "^15.7.2" - "react-lifecycles-compat" "^3.0.4" + clsx "^1.0.4" + dom-helpers "^5.1.3" + loose-envify "^1.4.0" + prop-types "^15.7.2" + react-lifecycles-compat "^3.0.4" -"react-virtuoso@2.10.2": - "integrity" "sha512-nQ8Wt/q64q6walcXo4y9SXkvZqjwuLiNUv7aKW3poKoZno8agTgeqcX1GMq3GPlaJ8wR5XMGwBxX4HONBMAGfg==" - "resolved" "https://registry.npmjs.org/react-virtuoso/-/react-virtuoso-2.10.2.tgz" - "version" "2.10.2" +react-virtuoso@2.10.2: + version "2.10.2" + resolved "https://registry.npmjs.org/react-virtuoso/-/react-virtuoso-2.10.2.tgz" + integrity sha512-nQ8Wt/q64q6walcXo4y9SXkvZqjwuLiNUv7aKW3poKoZno8agTgeqcX1GMq3GPlaJ8wR5XMGwBxX4HONBMAGfg== dependencies: "@virtuoso.dev/react-urx" "^0.2.12" "@virtuoso.dev/urx" "^0.2.12" -"react-zoom-pan-pinch@^2.1.3": - "integrity" "sha512-a5AChOWhjo0RmxsNZXGQIlNh3e3nLU6m4V6M+6dlbPNk5d+MtMxgKWyA5zpR06Lp3OZkZVF9nR8JeWSvKwck9g==" - "resolved" "https://registry.npmjs.org/react-zoom-pan-pinch/-/react-zoom-pan-pinch-2.1.3.tgz" - "version" "2.1.3" - -"react@*", "react@^0.13.0 || ^0.14.0 || ^15.0.1 || ^16.0.0 || ^17.0.0", "react@^0.14 || ^15.0.0 || ^16.0.0-alpha", "react@^0.14 || >=15", "react@^0.14.0 || ^15.0.0 || ^16.0.0", "react@^0.14.0 || ^15.0.0 || ^16.0.0-0 || ^17.0.0-0 || ^18.0.0-0", "react@^0.14.0 || ^15.0.0-0 || ^16.0.0 || ^17.0.0", "react@^0.14.0 || ^15.0.0-0 || ^16.0.0-0", "react@^0.14.8 || ^15 || ^16", "react@^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1", "react@^0.14.9 || ^15.3.0 || ^16.0.0", "react@^15.3.0 || ^16.0.0-alpha", "react@^15.3.0 || ^16.0.0-rc || ^16.0", "react@^15.5.4 || ^16.0.0 || ^17.0.0", "react@^15.6.0 || ^16.0.0", "react@^16", "react@^16 || ^17", "react@^16 || ^17 || ^18", "react@^16.0.0 || ^17.0.0 || ^18.0.0", "react@^16.0.0-0", "react@^16.13.1 || ^17.0.0", "react@^16.13.1 || ^17.0.0 || ^18.0.0", "react@^16.14.0", "react@^16.3.1", "react@^16.7.0", "react@^16.8.0 || ^17.0.0", "react@^16.8.0 || ^17.0.0 || ^18.0.0", "react@^16.8.3 || ^17 || ^18", "react@^16.8.4 || ^17.0.0", "react@^16.8.6", "react@^17.0.2", "react@>= 0.14.0", "react@>= 16", "react@>= 16.3.0", "react@>= 16.8.0", "react@>= 16.8.6", "react@>=0.14.0", "react@>=15", "react@>=16", "react@>=16 || >=17 || >= 18", "react@>=16.0.0", "react@>=16.11.0", "react@>=16.13.1", "react@>=16.3", "react@>=16.3.2", "react@>=16.3.3", "react@>=16.4.2", "react@>=16.6.0", "react@>=16.8.6", "react@>=16.9.0", "react@0.13.x || 0.14.x || ^15.0.0-0 || ^16.0.0-0", "react@17.0.2": - "integrity" "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==" - "resolved" "https://registry.npmjs.org/react/-/react-17.0.2.tgz" - "version" "17.0.2" - dependencies: - "loose-envify" "^1.1.0" - "object-assign" "^4.1.1" +react-zoom-pan-pinch@^2.1.3: + version "2.1.3" + resolved "https://registry.npmjs.org/react-zoom-pan-pinch/-/react-zoom-pan-pinch-2.1.3.tgz" + integrity sha512-a5AChOWhjo0RmxsNZXGQIlNh3e3nLU6m4V6M+6dlbPNk5d+MtMxgKWyA5zpR06Lp3OZkZVF9nR8JeWSvKwck9g== "react@>=15.0.0 <17.0.0": - "integrity" "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==" - "resolved" "https://registry.npmjs.org/react/-/react-16.14.0.tgz" - "version" "16.14.0" + version "16.14.0" + resolved "https://registry.npmjs.org/react/-/react-16.14.0.tgz" + integrity sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g== dependencies: - "loose-envify" "^1.1.0" - "object-assign" "^4.1.1" - "prop-types" "^15.6.2" + loose-envify "^1.1.0" + object-assign "^4.1.1" + prop-types "^15.6.2" -"read-cache@^1.0.0": - "integrity" "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==" - "resolved" "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz" - "version" "1.0.0" +react@^17.0.2: + version "17.0.2" + resolved "https://registry.npmjs.org/react/-/react-17.0.2.tgz" + integrity sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA== dependencies: - "pify" "^2.3.0" + loose-envify "^1.1.0" + object-assign "^4.1.1" -"read-pkg-up@^1.0.1": - "integrity" "sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A==" - "resolved" "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz" - "version" "1.0.1" +read-cache@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz" + integrity sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA== dependencies: - "find-up" "^1.0.0" - "read-pkg" "^1.0.0" + pify "^2.3.0" -"read-pkg-up@^3.0.0": - "integrity" "sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw==" - "resolved" "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz" - "version" "3.0.0" +read-pkg-up@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz" + integrity sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A== dependencies: - "find-up" "^2.0.0" - "read-pkg" "^3.0.0" + find-up "^1.0.0" + read-pkg "^1.0.0" -"read-pkg-up@^4.0.0": - "integrity" "sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA==" - "resolved" "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-4.0.0.tgz" - "version" "4.0.0" +read-pkg-up@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz" + integrity sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw== dependencies: - "find-up" "^3.0.0" - "read-pkg" "^3.0.0" + find-up "^2.0.0" + read-pkg "^3.0.0" -"read-pkg-up@^7.0.1": - "integrity" "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==" - "resolved" "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz" - "version" "7.0.1" +read-pkg-up@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-4.0.0.tgz" + integrity sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA== dependencies: - "find-up" "^4.1.0" - "read-pkg" "^5.2.0" - "type-fest" "^0.8.1" + find-up "^3.0.0" + read-pkg "^3.0.0" -"read-pkg@^1.0.0": - "integrity" "sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ==" - "resolved" "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz" - "version" "1.1.0" +read-pkg-up@^7.0.1: + version "7.0.1" + resolved "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz" + integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== dependencies: - "load-json-file" "^1.0.0" - "normalize-package-data" "^2.3.2" - "path-type" "^1.0.0" + find-up "^4.1.0" + read-pkg "^5.2.0" + type-fest "^0.8.1" -"read-pkg@^3.0.0": - "integrity" "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==" - "resolved" "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz" - "version" "3.0.0" +read-pkg@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz" + integrity sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ== dependencies: - "load-json-file" "^4.0.0" - "normalize-package-data" "^2.3.2" - "path-type" "^3.0.0" + load-json-file "^1.0.0" + normalize-package-data "^2.3.2" + path-type "^1.0.0" -"read-pkg@^5.2.0": - "integrity" "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==" - "resolved" "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz" - "version" "5.2.0" +read-pkg@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz" + integrity sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA== + dependencies: + load-json-file "^4.0.0" + normalize-package-data "^2.3.2" + path-type "^3.0.0" + +read-pkg@^5.2.0: + version "5.2.0" + resolved "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz" + integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== dependencies: "@types/normalize-package-data" "^2.4.0" - "normalize-package-data" "^2.5.0" - "parse-json" "^5.0.0" - "type-fest" "^0.6.0" + normalize-package-data "^2.5.0" + parse-json "^5.0.0" + type-fest "^0.6.0" -"readable-stream@^2.0.0", "readable-stream@^2.0.1", "readable-stream@^2.0.2", "readable-stream@^2.1.5", "readable-stream@^2.2.2", "readable-stream@^2.3.3", "readable-stream@^2.3.6", "readable-stream@~2.3.6", "readable-stream@1 || 2": - "integrity" "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==" - "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz" - "version" "2.3.7" +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: + 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" + 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" -"readable-stream@^3.0.6": - "integrity" "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==" - "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz" - "version" "3.6.0" +readable-stream@^3.0.6, readable-stream@^3.6.0: + version "3.6.0" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz" + integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== dependencies: - "inherits" "^2.0.3" - "string_decoder" "^1.1.1" - "util-deprecate" "^1.0.1" + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" -"readable-stream@^3.6.0": - "integrity" "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==" - "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz" - "version" "3.6.0" +readdirp@^2.0.0, readdirp@^2.2.1: + version "2.2.1" + resolved "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz" + integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== dependencies: - "inherits" "^2.0.3" - "string_decoder" "^1.1.1" - "util-deprecate" "^1.0.1" + graceful-fs "^4.1.11" + micromatch "^3.1.10" + readable-stream "^2.0.2" -"readdirp@^2.0.0": - "integrity" "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==" - "resolved" "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz" - "version" "2.2.1" +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== dependencies: - "graceful-fs" "^4.1.11" - "micromatch" "^3.1.10" - "readable-stream" "^2.0.2" + picomatch "^2.2.1" -"readdirp@^2.2.1": - "integrity" "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==" - "resolved" "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz" - "version" "2.2.1" +realpath-native@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/realpath-native/-/realpath-native-1.1.0.tgz" + integrity sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA== dependencies: - "graceful-fs" "^4.1.11" - "micromatch" "^3.1.10" - "readable-stream" "^2.0.2" + util.promisify "^1.0.0" -"readdirp@~3.6.0": - "integrity" "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==" - "resolved" "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz" - "version" "3.6.0" +recast@^0.19.0: + version "0.19.1" + resolved "https://registry.npmjs.org/recast/-/recast-0.19.1.tgz" + integrity sha512-8FCjrBxjeEU2O6I+2hyHyBFH1siJbMBLwIRvVr1T3FD2cL754sOaJDsJ/8h3xYltasbJ8jqWRIhMuDGBSiSbjw== dependencies: - "picomatch" "^2.2.1" + ast-types "0.13.3" + esprima "~4.0.0" + private "^0.1.8" + source-map "~0.6.1" -"realpath-native@^1.1.0": - "integrity" "sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA==" - "resolved" "https://registry.npmjs.org/realpath-native/-/realpath-native-1.1.0.tgz" - "version" "1.1.0" +recast@^0.20.4: + version "0.20.5" + resolved "https://registry.npmjs.org/recast/-/recast-0.20.5.tgz" + integrity sha512-E5qICoPoNL4yU0H0NoBDntNB0Q5oMSNh9usFctYniLBluTthi3RsQVBXIJNbApOlvSwW/RGxIuokPcAc59J5fQ== dependencies: - "util.promisify" "^1.0.0" + ast-types "0.14.2" + esprima "~4.0.0" + source-map "~0.6.1" + tslib "^2.0.1" -"recast@^0.19.0": - "integrity" "sha512-8FCjrBxjeEU2O6I+2hyHyBFH1siJbMBLwIRvVr1T3FD2cL754sOaJDsJ/8h3xYltasbJ8jqWRIhMuDGBSiSbjw==" - "resolved" "https://registry.npmjs.org/recast/-/recast-0.19.1.tgz" - "version" "0.19.1" +rechoir@^0.6.2: + version "0.6.2" + resolved "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz" + integrity sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw== dependencies: - "ast-types" "0.13.3" - "esprima" "~4.0.0" - "private" "^0.1.8" - "source-map" "~0.6.1" + resolve "^1.1.6" -"recast@^0.20.4": - "integrity" "sha512-E5qICoPoNL4yU0H0NoBDntNB0Q5oMSNh9usFctYniLBluTthi3RsQVBXIJNbApOlvSwW/RGxIuokPcAc59J5fQ==" - "resolved" "https://registry.npmjs.org/recast/-/recast-0.20.5.tgz" - "version" "0.20.5" +recoil@^0.7.6: + version "0.7.6" + resolved "https://registry.npmjs.org/recoil/-/recoil-0.7.6.tgz" + integrity sha512-hsBEw7jFdpBCY/tu2GweiyaqHKxVj6EqF2/SfrglbKvJHhpN57SANWvPW+gE90i3Awi+A5gssOd3u+vWlT+g7g== dependencies: - "ast-types" "0.14.2" - "esprima" "~4.0.0" - "source-map" "~0.6.1" - "tslib" "^2.0.1" + hamt_plus "1.0.2" -"rechoir@^0.6.2": - "integrity" "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==" - "resolved" "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz" - "version" "0.6.2" +recursive-readdir@2.2.2, recursive-readdir@^2.2.2: + version "2.2.2" + resolved "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.2.tgz" + integrity sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg== dependencies: - "resolve" "^1.1.6" + minimatch "3.0.4" -"recoil@^0.7.6": - "integrity" "sha512-hsBEw7jFdpBCY/tu2GweiyaqHKxVj6EqF2/SfrglbKvJHhpN57SANWvPW+gE90i3Awi+A5gssOd3u+vWlT+g7g==" - "resolved" "https://registry.npmjs.org/recoil/-/recoil-0.7.6.tgz" - "version" "0.7.6" +redent@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz" + integrity sha512-qtW5hKzGQZqKoh6JNSD+4lfitfPKGz42e6QwiRmPM5mmKtR0N41AbJRYu0xJi7nhOJ4WDgRkKvAk6tw4WIwR4g== dependencies: - "hamt_plus" "1.0.2" + indent-string "^2.1.0" + strip-indent "^1.0.1" -"recursive-readdir@^2.2.2", "recursive-readdir@2.2.2": - "integrity" "sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg==" - "resolved" "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.2.tgz" - "version" "2.2.2" +redent@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz" + integrity sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg== dependencies: - "minimatch" "3.0.4" + indent-string "^4.0.0" + strip-indent "^3.0.0" -"redent@^1.0.0": - "integrity" "sha512-qtW5hKzGQZqKoh6JNSD+4lfitfPKGz42e6QwiRmPM5mmKtR0N41AbJRYu0xJi7nhOJ4WDgRkKvAk6tw4WIwR4g==" - "resolved" "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "indent-string" "^2.1.0" - "strip-indent" "^1.0.1" - -"redent@^3.0.0": - "integrity" "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==" - "resolved" "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "indent-string" "^4.0.0" - "strip-indent" "^3.0.0" - -"redux@^2.0.0 || ^3.0.0 || ^4.0.0-0", "redux@^4.0.0", "redux@^4.0.1", "redux@^4.0.5": - "integrity" "sha512-oSBmcKKIuIR4ME29/AeNUnl5L+hvBq7OaJWzaptTQJAntaPvxIJqfnjbaEiCzzaIz+XmVILfqAM3Ob0aXLPfjA==" - "resolved" "https://registry.npmjs.org/redux/-/redux-4.2.0.tgz" - "version" "4.2.0" +redux@^4.0.0, redux@^4.0.1, redux@^4.0.5: + version "4.2.0" + resolved "https://registry.npmjs.org/redux/-/redux-4.2.0.tgz" + integrity sha512-oSBmcKKIuIR4ME29/AeNUnl5L+hvBq7OaJWzaptTQJAntaPvxIJqfnjbaEiCzzaIz+XmVILfqAM3Ob0aXLPfjA== dependencies: "@babel/runtime" "^7.9.2" -"reflect.ownkeys@^0.2.0": - "integrity" "sha512-qOLsBKHCpSOFKK1NUOCGC5VyeufB6lEsFe92AL2bhIJsacZS1qdoOZSbPk3MYKuT2cFlRDnulKXuuElIrMjGUg==" - "resolved" "https://registry.npmjs.org/reflect.ownkeys/-/reflect.ownkeys-0.2.0.tgz" - "version" "0.2.0" +reflect.ownkeys@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/reflect.ownkeys/-/reflect.ownkeys-0.2.0.tgz" + integrity sha512-qOLsBKHCpSOFKK1NUOCGC5VyeufB6lEsFe92AL2bhIJsacZS1qdoOZSbPk3MYKuT2cFlRDnulKXuuElIrMjGUg== -"refractor@^3.6.0": - "integrity" "sha512-MY9W41IOWxxk31o+YvFCNyNzdkc9M20NoZK5vq6jkv4I/uh2zkWcfudj0Q1fovjUQJrNewS9NMzeTtqPf+n5EA==" - "resolved" "https://registry.npmjs.org/refractor/-/refractor-3.6.0.tgz" - "version" "3.6.0" +refractor@^3.6.0: + version "3.6.0" + resolved "https://registry.npmjs.org/refractor/-/refractor-3.6.0.tgz" + integrity sha512-MY9W41IOWxxk31o+YvFCNyNzdkc9M20NoZK5vq6jkv4I/uh2zkWcfudj0Q1fovjUQJrNewS9NMzeTtqPf+n5EA== dependencies: - "hastscript" "^6.0.0" - "parse-entities" "^2.0.0" - "prismjs" "~1.27.0" + hastscript "^6.0.0" + parse-entities "^2.0.0" + prismjs "~1.27.0" -"regenerate-unicode-properties@^10.1.0": - "integrity" "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==" - "resolved" "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz" - "version" "10.1.0" +regenerate-unicode-properties@^10.1.0: + version "10.1.0" + resolved "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz" + integrity sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ== dependencies: - "regenerate" "^1.4.2" + regenerate "^1.4.2" -"regenerate@^1.2.1", "regenerate@^1.4.2": - "integrity" "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==" - "resolved" "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz" - "version" "1.4.2" +regenerate@^1.2.1, regenerate@^1.4.2: + version "1.4.2" + resolved "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz" + integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== -"regenerator-runtime@^0.10.5": - "integrity" "sha512-02YopEIhAgiBHWeoTiA8aitHDt8z6w+rQqNuIftlM+ZtvSl/brTouaU7DW6GO/cHtvxJvS4Hwv2ibKdxIRi24w==" - "resolved" "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz" - "version" "0.10.5" +regenerator-runtime@^0.10.5: + version "0.10.5" + resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz" + integrity sha512-02YopEIhAgiBHWeoTiA8aitHDt8z6w+rQqNuIftlM+ZtvSl/brTouaU7DW6GO/cHtvxJvS4Hwv2ibKdxIRi24w== -"regenerator-runtime@^0.11.0": - "integrity" "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" - "resolved" "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz" - "version" "0.11.1" +regenerator-runtime@^0.11.0: + version "0.11.1" + resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz" + integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== -"regenerator-runtime@^0.13.10", "regenerator-runtime@^0.13.2", "regenerator-runtime@^0.13.3", "regenerator-runtime@^0.13.4", "regenerator-runtime@^0.13.7", "regenerator-runtime@^0.13.9": - "integrity" "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" - "resolved" "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz" - "version" "0.13.11" +regenerator-runtime@^0.13.10, regenerator-runtime@^0.13.2, regenerator-runtime@^0.13.3, regenerator-runtime@^0.13.4, regenerator-runtime@^0.13.7, regenerator-runtime@^0.13.9: + version "0.13.11" + resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz" + integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== -"regenerator-transform@^0.10.0": - "integrity" "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==" - "resolved" "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz" - "version" "0.10.1" +regenerator-transform@^0.10.0: + version "0.10.1" + resolved "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz" + integrity sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q== dependencies: - "babel-runtime" "^6.18.0" - "babel-types" "^6.19.0" - "private" "^0.1.6" + babel-runtime "^6.18.0" + babel-types "^6.19.0" + private "^0.1.6" -"regenerator-transform@^0.15.0": - "integrity" "sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==" - "resolved" "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.1.tgz" - "version" "0.15.1" +regenerator-transform@^0.15.0: + version "0.15.1" + resolved "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.1.tgz" + integrity sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg== dependencies: "@babel/runtime" "^7.8.4" -"regex-cache@^0.4.2": - "integrity" "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==" - "resolved" "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz" - "version" "0.4.4" +regex-cache@^0.4.2: + version "0.4.4" + resolved "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz" + integrity sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ== dependencies: - "is-equal-shallow" "^0.1.3" + is-equal-shallow "^0.1.3" -"regex-not@^1.0.0", "regex-not@^1.0.2": - "integrity" "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==" - "resolved" "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz" - "version" "1.0.2" +regex-not@^1.0.0, regex-not@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz" + integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== dependencies: - "extend-shallow" "^3.0.2" - "safe-regex" "^1.1.0" + extend-shallow "^3.0.2" + safe-regex "^1.1.0" -"regex-parser@^2.2.11": - "integrity" "sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==" - "resolved" "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.11.tgz" - "version" "2.2.11" +regex-parser@^2.2.11: + version "2.2.11" + resolved "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.11.tgz" + integrity sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q== -"regexp.prototype.flags@^1.4.3": - "integrity" "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==" - "resolved" "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz" - "version" "1.4.3" +regexp.prototype.flags@^1.4.3: + version "1.4.3" + resolved "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz" + integrity sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA== dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.1.3" - "functions-have-names" "^1.2.2" + call-bind "^1.0.2" + define-properties "^1.1.3" + functions-have-names "^1.2.2" -"regexpp@^3.2.0": - "integrity" "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==" - "resolved" "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz" - "version" "3.2.0" +regexpp@^3.2.0: + version "3.2.0" + resolved "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz" + integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== -"regexpu-core@^2.0.0": - "integrity" "sha512-tJ9+S4oKjxY8IZ9jmjnp/mtytu1u3iyIQAfmI51IKWH6bFf7XR1ybtaO6j7INhZKXOTYADk7V5qxaqLkmNxiZQ==" - "resolved" "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz" - "version" "2.0.0" +regexpu-core@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz" + integrity sha512-tJ9+S4oKjxY8IZ9jmjnp/mtytu1u3iyIQAfmI51IKWH6bFf7XR1ybtaO6j7INhZKXOTYADk7V5qxaqLkmNxiZQ== dependencies: - "regenerate" "^1.2.1" - "regjsgen" "^0.2.0" - "regjsparser" "^0.1.4" + regenerate "^1.2.1" + regjsgen "^0.2.0" + regjsparser "^0.1.4" -"regexpu-core@^5.1.0": - "integrity" "sha512-T0+1Zp2wjF/juXMrMxHxidqGYn8U4R+zleSJhX9tQ1PUsS8a9UtYfbsF9LdiVgNX3kiX8RNaKM42nfSgvFJjmw==" - "resolved" "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.2.2.tgz" - "version" "5.2.2" +regexpu-core@^5.1.0: + version "5.2.2" + resolved "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.2.2.tgz" + integrity sha512-T0+1Zp2wjF/juXMrMxHxidqGYn8U4R+zleSJhX9tQ1PUsS8a9UtYfbsF9LdiVgNX3kiX8RNaKM42nfSgvFJjmw== dependencies: - "regenerate" "^1.4.2" - "regenerate-unicode-properties" "^10.1.0" - "regjsgen" "^0.7.1" - "regjsparser" "^0.9.1" - "unicode-match-property-ecmascript" "^2.0.0" - "unicode-match-property-value-ecmascript" "^2.1.0" + regenerate "^1.4.2" + regenerate-unicode-properties "^10.1.0" + regjsgen "^0.7.1" + regjsparser "^0.9.1" + unicode-match-property-ecmascript "^2.0.0" + unicode-match-property-value-ecmascript "^2.1.0" -"registry-auth-token@^4.0.0": - "integrity" "sha512-PC5ZysNb42zpFME6D/XlIgtNGdTl8bBOCw90xQLVMpzuuubJKYDWFAEuUNc+Cn8Z8724tg2SDhDRrkVEsqfDMg==" - "resolved" "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.2.tgz" - "version" "4.2.2" +registry-auth-token@^4.0.0: + version "4.2.2" + resolved "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.2.tgz" + integrity sha512-PC5ZysNb42zpFME6D/XlIgtNGdTl8bBOCw90xQLVMpzuuubJKYDWFAEuUNc+Cn8Z8724tg2SDhDRrkVEsqfDMg== dependencies: - "rc" "1.2.8" + rc "1.2.8" -"registry-url@^5.0.0": - "integrity" "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==" - "resolved" "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz" - "version" "5.1.0" +registry-url@^5.0.0: + version "5.1.0" + resolved "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz" + integrity sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw== dependencies: - "rc" "^1.2.8" + rc "^1.2.8" -"regjsgen@^0.2.0": - "integrity" "sha512-x+Y3yA24uF68m5GA+tBjbGYo64xXVJpbToBaWCoSNSc1hdk6dfctaRWrNFTVJZIIhL5GxW8zwjoixbnifnK59g==" - "resolved" "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz" - "version" "0.2.0" +regjsgen@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz" + integrity sha512-x+Y3yA24uF68m5GA+tBjbGYo64xXVJpbToBaWCoSNSc1hdk6dfctaRWrNFTVJZIIhL5GxW8zwjoixbnifnK59g== -"regjsgen@^0.7.1": - "integrity" "sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA==" - "resolved" "https://registry.npmjs.org/regjsgen/-/regjsgen-0.7.1.tgz" - "version" "0.7.1" +regjsgen@^0.7.1: + version "0.7.1" + resolved "https://registry.npmjs.org/regjsgen/-/regjsgen-0.7.1.tgz" + integrity sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA== -"regjsparser@^0.1.4": - "integrity" "sha512-jlQ9gYLfk2p3V5Ag5fYhA7fv7OHzd1KUH0PRP46xc3TgwjwgROIW572AfYg/X9kaNq/LJnu6oJcFRXlIrGoTRw==" - "resolved" "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz" - "version" "0.1.5" +regjsparser@^0.1.4: + version "0.1.5" + resolved "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz" + integrity sha512-jlQ9gYLfk2p3V5Ag5fYhA7fv7OHzd1KUH0PRP46xc3TgwjwgROIW572AfYg/X9kaNq/LJnu6oJcFRXlIrGoTRw== dependencies: - "jsesc" "~0.5.0" + jsesc "~0.5.0" -"regjsparser@^0.9.1": - "integrity" "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==" - "resolved" "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz" - "version" "0.9.1" +regjsparser@^0.9.1: + version "0.9.1" + resolved "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz" + integrity sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ== dependencies: - "jsesc" "~0.5.0" + jsesc "~0.5.0" -"relateurl@^0.2.7": - "integrity" "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==" - "resolved" "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz" - "version" "0.2.7" +relateurl@^0.2.7: + version "0.2.7" + resolved "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz" + integrity sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog== -"remark-external-links@^8.0.0": - "integrity" "sha512-5vPSX0kHoSsqtdftSHhIYofVINC8qmp0nctkeU9YoJwV3YfiBRiI6cbFRJ0oI/1F9xS+bopXG0m2KS8VFscuKA==" - "resolved" "https://registry.npmjs.org/remark-external-links/-/remark-external-links-8.0.0.tgz" - "version" "8.0.0" +remark-external-links@^8.0.0: + version "8.0.0" + resolved "https://registry.npmjs.org/remark-external-links/-/remark-external-links-8.0.0.tgz" + integrity sha512-5vPSX0kHoSsqtdftSHhIYofVINC8qmp0nctkeU9YoJwV3YfiBRiI6cbFRJ0oI/1F9xS+bopXG0m2KS8VFscuKA== dependencies: - "extend" "^3.0.0" - "is-absolute-url" "^3.0.0" - "mdast-util-definitions" "^4.0.0" - "space-separated-tokens" "^1.0.0" - "unist-util-visit" "^2.0.0" + extend "^3.0.0" + is-absolute-url "^3.0.0" + mdast-util-definitions "^4.0.0" + space-separated-tokens "^1.0.0" + unist-util-visit "^2.0.0" -"remark-footnotes@2.0.0": - "integrity" "sha512-3Clt8ZMH75Ayjp9q4CorNeyjwIxHFcTkaektplKGl2A1jNGEUey8cKL0ZC5vJwfcD5GFGsNLImLG/NGzWIzoMQ==" - "resolved" "https://registry.npmjs.org/remark-footnotes/-/remark-footnotes-2.0.0.tgz" - "version" "2.0.0" +remark-footnotes@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/remark-footnotes/-/remark-footnotes-2.0.0.tgz" + integrity sha512-3Clt8ZMH75Ayjp9q4CorNeyjwIxHFcTkaektplKGl2A1jNGEUey8cKL0ZC5vJwfcD5GFGsNLImLG/NGzWIzoMQ== -"remark-mdx@1.6.22": - "integrity" "sha512-phMHBJgeV76uyFkH4rvzCftLfKCr2RZuF+/gmVcaKrpsihyzmhXjA0BEMDaPTXG5y8qZOKPVo83NAOX01LPnOQ==" - "resolved" "https://registry.npmjs.org/remark-mdx/-/remark-mdx-1.6.22.tgz" - "version" "1.6.22" +remark-mdx@1.6.22: + version "1.6.22" + resolved "https://registry.npmjs.org/remark-mdx/-/remark-mdx-1.6.22.tgz" + integrity sha512-phMHBJgeV76uyFkH4rvzCftLfKCr2RZuF+/gmVcaKrpsihyzmhXjA0BEMDaPTXG5y8qZOKPVo83NAOX01LPnOQ== dependencies: "@babel/core" "7.12.9" "@babel/helper-plugin-utils" "7.10.4" "@babel/plugin-proposal-object-rest-spread" "7.12.1" "@babel/plugin-syntax-jsx" "7.12.1" "@mdx-js/util" "1.6.22" - "is-alphabetical" "1.0.4" - "remark-parse" "8.0.3" - "unified" "9.2.0" + is-alphabetical "1.0.4" + remark-parse "8.0.3" + unified "9.2.0" -"remark-parse@8.0.3": - "integrity" "sha512-E1K9+QLGgggHxCQtLt++uXltxEprmWzNfg+MxpfHsZlrddKzZ/hZyWHDbK3/Ap8HJQqYJRXP+jHczdL6q6i85Q==" - "resolved" "https://registry.npmjs.org/remark-parse/-/remark-parse-8.0.3.tgz" - "version" "8.0.3" +remark-parse@8.0.3: + version "8.0.3" + resolved "https://registry.npmjs.org/remark-parse/-/remark-parse-8.0.3.tgz" + integrity sha512-E1K9+QLGgggHxCQtLt++uXltxEprmWzNfg+MxpfHsZlrddKzZ/hZyWHDbK3/Ap8HJQqYJRXP+jHczdL6q6i85Q== dependencies: - "ccount" "^1.0.0" - "collapse-white-space" "^1.0.2" - "is-alphabetical" "^1.0.0" - "is-decimal" "^1.0.0" - "is-whitespace-character" "^1.0.0" - "is-word-character" "^1.0.0" - "markdown-escapes" "^1.0.0" - "parse-entities" "^2.0.0" - "repeat-string" "^1.5.4" - "state-toggle" "^1.0.0" - "trim" "0.0.1" - "trim-trailing-lines" "^1.0.0" - "unherit" "^1.0.4" - "unist-util-remove-position" "^2.0.0" - "vfile-location" "^3.0.0" - "xtend" "^4.0.1" + ccount "^1.0.0" + collapse-white-space "^1.0.2" + is-alphabetical "^1.0.0" + is-decimal "^1.0.0" + is-whitespace-character "^1.0.0" + is-word-character "^1.0.0" + markdown-escapes "^1.0.0" + parse-entities "^2.0.0" + repeat-string "^1.5.4" + state-toggle "^1.0.0" + trim "0.0.1" + trim-trailing-lines "^1.0.0" + unherit "^1.0.4" + unist-util-remove-position "^2.0.0" + vfile-location "^3.0.0" + xtend "^4.0.1" -"remark-slug@^6.0.0": - "integrity" "sha512-oGCxDF9deA8phWvxFuyr3oSJsdyUAxMFbA0mZ7Y1Sas+emILtO+e5WutF9564gDsEN4IXaQXm5pFo6MLH+YmwQ==" - "resolved" "https://registry.npmjs.org/remark-slug/-/remark-slug-6.1.0.tgz" - "version" "6.1.0" +remark-slug@^6.0.0: + version "6.1.0" + resolved "https://registry.npmjs.org/remark-slug/-/remark-slug-6.1.0.tgz" + integrity sha512-oGCxDF9deA8phWvxFuyr3oSJsdyUAxMFbA0mZ7Y1Sas+emILtO+e5WutF9564gDsEN4IXaQXm5pFo6MLH+YmwQ== dependencies: - "github-slugger" "^1.0.0" - "mdast-util-to-string" "^1.0.0" - "unist-util-visit" "^2.0.0" + github-slugger "^1.0.0" + mdast-util-to-string "^1.0.0" + unist-util-visit "^2.0.0" -"remark-squeeze-paragraphs@4.0.0": - "integrity" "sha512-8qRqmL9F4nuLPIgl92XUuxI3pFxize+F1H0e/W3llTk0UsjJaj01+RrirkMw7P21RKe4X6goQhYRSvNWX+70Rw==" - "resolved" "https://registry.npmjs.org/remark-squeeze-paragraphs/-/remark-squeeze-paragraphs-4.0.0.tgz" - "version" "4.0.0" +remark-squeeze-paragraphs@4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/remark-squeeze-paragraphs/-/remark-squeeze-paragraphs-4.0.0.tgz" + integrity sha512-8qRqmL9F4nuLPIgl92XUuxI3pFxize+F1H0e/W3llTk0UsjJaj01+RrirkMw7P21RKe4X6goQhYRSvNWX+70Rw== dependencies: - "mdast-squeeze-paragraphs" "^4.0.0" + mdast-squeeze-paragraphs "^4.0.0" -"remarkable@^2.0.1": - "integrity" "sha512-YJyMcOH5lrR+kZdmB0aJJ4+93bEojRZ1HGDn9Eagu6ibg7aVZhc3OWbbShRid+Q5eAfsEqWxpe+g5W5nYNfNiA==" - "resolved" "https://registry.npmjs.org/remarkable/-/remarkable-2.0.1.tgz" - "version" "2.0.1" +remarkable@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/remarkable/-/remarkable-2.0.1.tgz" + integrity sha512-YJyMcOH5lrR+kZdmB0aJJ4+93bEojRZ1HGDn9Eagu6ibg7aVZhc3OWbbShRid+Q5eAfsEqWxpe+g5W5nYNfNiA== dependencies: - "argparse" "^1.0.10" - "autolinker" "^3.11.0" + argparse "^1.0.10" + autolinker "^3.11.0" -"remove-trailing-separator@^1.0.1": - "integrity" "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==" - "resolved" "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz" - "version" "1.1.0" +remove-trailing-separator@^1.0.1: + version "1.1.0" + resolved "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz" + integrity sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw== -"renderkid@^2.0.4": - "integrity" "sha512-oCcFyxaMrKsKcTY59qnCAtmDVSLfPbrv6A3tVbPdFMMrv5jaK10V6m40cKsoPNhAqN6rmHW9sswW4o3ruSrwUQ==" - "resolved" "https://registry.npmjs.org/renderkid/-/renderkid-2.0.7.tgz" - "version" "2.0.7" +renderkid@^2.0.4: + version "2.0.7" + resolved "https://registry.npmjs.org/renderkid/-/renderkid-2.0.7.tgz" + integrity sha512-oCcFyxaMrKsKcTY59qnCAtmDVSLfPbrv6A3tVbPdFMMrv5jaK10V6m40cKsoPNhAqN6rmHW9sswW4o3ruSrwUQ== dependencies: - "css-select" "^4.1.3" - "dom-converter" "^0.2.0" - "htmlparser2" "^6.1.0" - "lodash" "^4.17.21" - "strip-ansi" "^3.0.1" + css-select "^4.1.3" + dom-converter "^0.2.0" + htmlparser2 "^6.1.0" + lodash "^4.17.21" + strip-ansi "^3.0.1" -"renderkid@^3.0.0": - "integrity" "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==" - "resolved" "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz" - "version" "3.0.0" +renderkid@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz" + integrity sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg== dependencies: - "css-select" "^4.1.3" - "dom-converter" "^0.2.0" - "htmlparser2" "^6.1.0" - "lodash" "^4.17.21" - "strip-ansi" "^6.0.1" + css-select "^4.1.3" + dom-converter "^0.2.0" + htmlparser2 "^6.1.0" + lodash "^4.17.21" + strip-ansi "^6.0.1" -"repeat-element@^1.1.2": - "integrity" "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==" - "resolved" "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz" - "version" "1.1.4" +repeat-element@^1.1.2: + version "1.1.4" + resolved "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz" + integrity sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ== -"repeat-string@^1.5.2", "repeat-string@^1.5.4", "repeat-string@^1.6.1": - "integrity" "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==" - "resolved" "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz" - "version" "1.6.1" +repeat-string@^1.5.2, repeat-string@^1.5.4, repeat-string@^1.6.1: + version "1.6.1" + resolved "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz" + integrity sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w== -"repeating@^2.0.0": - "integrity" "sha512-ZqtSMuVybkISo2OWvqvm7iHSWngvdaW3IpsT9/uP8v4gMi591LY6h35wdOfvQdWCKFWZWm2Y1Opp4kV7vQKT6A==" - "resolved" "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz" - "version" "2.0.1" +repeating@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz" + integrity sha512-ZqtSMuVybkISo2OWvqvm7iHSWngvdaW3IpsT9/uP8v4gMi591LY6h35wdOfvQdWCKFWZWm2Y1Opp4kV7vQKT6A== dependencies: - "is-finite" "^1.0.0" + is-finite "^1.0.0" -"request-promise-core@1.1.4": - "integrity" "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==" - "resolved" "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz" - "version" "1.1.4" +request-promise-core@1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz" + integrity sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw== dependencies: - "lodash" "^4.17.19" + lodash "^4.17.19" -"request-promise-native@^1.0.5": - "integrity" "sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==" - "resolved" "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz" - "version" "1.0.9" +request-promise-native@^1.0.5: + version "1.0.9" + resolved "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz" + integrity sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g== dependencies: - "request-promise-core" "1.1.4" - "stealthy-require" "^1.1.1" - "tough-cookie" "^2.3.3" + request-promise-core "1.1.4" + stealthy-require "^1.1.1" + tough-cookie "^2.3.3" -"request@^2.34", "request@^2.88.0": - "integrity" "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==" - "resolved" "https://registry.npmjs.org/request/-/request-2.88.2.tgz" - "version" "2.88.2" +request@^2.88.0: + version "2.88.2" + resolved "https://registry.npmjs.org/request/-/request-2.88.2.tgz" + integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== dependencies: - "aws-sign2" "~0.7.0" - "aws4" "^1.8.0" - "caseless" "~0.12.0" - "combined-stream" "~1.0.6" - "extend" "~3.0.2" - "forever-agent" "~0.6.1" - "form-data" "~2.3.2" - "har-validator" "~5.1.3" - "http-signature" "~1.2.0" - "is-typedarray" "~1.0.0" - "isstream" "~0.1.2" - "json-stringify-safe" "~5.0.1" - "mime-types" "~2.1.19" - "oauth-sign" "~0.9.0" - "performance-now" "^2.1.0" - "qs" "~6.5.2" - "safe-buffer" "^5.1.2" - "tough-cookie" "~2.5.0" - "tunnel-agent" "^0.6.0" - "uuid" "^3.3.2" + aws-sign2 "~0.7.0" + aws4 "^1.8.0" + caseless "~0.12.0" + combined-stream "~1.0.6" + extend "~3.0.2" + forever-agent "~0.6.1" + form-data "~2.3.2" + har-validator "~5.1.3" + http-signature "~1.2.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.19" + oauth-sign "~0.9.0" + performance-now "^2.1.0" + qs "~6.5.2" + safe-buffer "^5.1.2" + tough-cookie "~2.5.0" + tunnel-agent "^0.6.0" + uuid "^3.3.2" -"require-directory@^2.1.1": - "integrity" "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==" - "resolved" "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" - "version" "2.1.1" +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== -"require-from-string@^2.0.2": - "integrity" "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==" - "resolved" "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz" - "version" "2.0.2" +require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== -"require-main-filename@^2.0.0": - "integrity" "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" - "resolved" "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz" - "version" "2.0.0" +require-main-filename@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz" + integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== -"requireindex@^1.1.0": - "integrity" "sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==" - "resolved" "https://registry.npmjs.org/requireindex/-/requireindex-1.2.0.tgz" - "version" "1.2.0" +requireindex@^1.1.0: + version "1.2.0" + resolved "https://registry.npmjs.org/requireindex/-/requireindex-1.2.0.tgz" + integrity sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww== -"requires-port@^1.0.0": - "integrity" "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" - "resolved" "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz" - "version" "1.0.0" +requires-port@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz" + integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== -"resize-observer-polyfill@^1.5.1": - "integrity" "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==" - "resolved" "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz" - "version" "1.5.1" +resize-observer-polyfill@^1.5.1: + version "1.5.1" + resolved "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz" + integrity sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg== -"resolve-cwd@^3.0.0": - "integrity" "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==" - "resolved" "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz" - "version" "3.0.0" +resolve-cwd@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz" + integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== dependencies: - "resolve-from" "^5.0.0" + resolve-from "^5.0.0" -"resolve-from@^3.0.0": - "integrity" "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==" - "resolved" "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz" - "version" "3.0.0" +resolve-from@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz" + integrity sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw== -"resolve-from@^4.0.0": - "integrity" "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" - "resolved" "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" - "version" "4.0.0" +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== -"resolve-from@^5.0.0": - "integrity" "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==" - "resolved" "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz" - "version" "5.0.0" +resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== -"resolve-pathname@^3.0.0": - "integrity" "sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==" - "resolved" "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-3.0.0.tgz" - "version" "3.0.0" +resolve-pathname@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-3.0.0.tgz" + integrity sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng== -"resolve-url-loader@^4.0.0": - "integrity" "sha512-05VEMczVREcbtT7Bz+C+96eUO5HDNvdthIiMB34t7FcF8ehcu4wC0sSgPUubs3XW2Q3CNLJk/BJrCU9wVRymiA==" - "resolved" "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-4.0.0.tgz" - "version" "4.0.0" +resolve-url-loader@3.1.2: + version "3.1.2" + resolved "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-3.1.2.tgz" + integrity sha512-QEb4A76c8Mi7I3xNKXlRKQSlLBwjUV/ULFMP+G7n3/7tJZ8MG5wsZ3ucxP1Jz8Vevn6fnJsxDx9cIls+utGzPQ== dependencies: - "adjust-sourcemap-loader" "^4.0.0" - "convert-source-map" "^1.7.0" - "loader-utils" "^2.0.0" - "postcss" "^7.0.35" - "source-map" "0.6.1" + adjust-sourcemap-loader "3.0.0" + camelcase "5.3.1" + compose-function "3.0.3" + convert-source-map "1.7.0" + es6-iterator "2.0.3" + loader-utils "1.2.3" + postcss "7.0.21" + rework "1.0.1" + rework-visit "1.0.0" + source-map "0.6.1" -"resolve-url-loader@3.1.2": - "integrity" "sha512-QEb4A76c8Mi7I3xNKXlRKQSlLBwjUV/ULFMP+G7n3/7tJZ8MG5wsZ3ucxP1Jz8Vevn6fnJsxDx9cIls+utGzPQ==" - "resolved" "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-3.1.2.tgz" - "version" "3.1.2" +resolve-url-loader@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-4.0.0.tgz" + integrity sha512-05VEMczVREcbtT7Bz+C+96eUO5HDNvdthIiMB34t7FcF8ehcu4wC0sSgPUubs3XW2Q3CNLJk/BJrCU9wVRymiA== dependencies: - "adjust-sourcemap-loader" "3.0.0" - "camelcase" "5.3.1" - "compose-function" "3.0.3" - "convert-source-map" "1.7.0" - "es6-iterator" "2.0.3" - "loader-utils" "1.2.3" - "postcss" "7.0.21" - "rework" "1.0.1" - "rework-visit" "1.0.0" - "source-map" "0.6.1" + adjust-sourcemap-loader "^4.0.0" + convert-source-map "^1.7.0" + loader-utils "^2.0.0" + postcss "^7.0.35" + source-map "0.6.1" -"resolve-url@^0.2.1": - "integrity" "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==" - "resolved" "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz" - "version" "0.2.1" +resolve-url@^0.2.1: + version "0.2.1" + resolved "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz" + integrity sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg== -"resolve.exports@^1.1.0": - "integrity" "sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==" - "resolved" "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz" - "version" "1.1.0" +resolve.exports@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz" + integrity sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ== -"resolve@^1.1.6", "resolve@^1.1.7", "resolve@^1.10.0", "resolve@^1.12.0", "resolve@^1.14.2", "resolve@^1.19.0", "resolve@^1.3.2", "resolve@^1.8.1", "resolve@1.19.0": - "integrity" "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==" - "resolved" "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz" - "version" "1.19.0" +resolve@1.1.7: + version "1.1.7" + resolved "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz" + integrity sha512-9znBF0vBcaSN3W2j7wKvdERPwqTxSpCq+if5C0WoTCyV9n24rua28jeuQ2pL/HOf+yUe/Mef+H/5p60K0Id3bg== + +resolve@1.19.0, resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.12.0, resolve@^1.14.2, resolve@^1.19.0, resolve@^1.3.2, resolve@^1.8.1: + version "1.19.0" + resolved "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz" + integrity sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg== dependencies: - "is-core-module" "^2.1.0" - "path-parse" "^1.0.6" + is-core-module "^2.1.0" + path-parse "^1.0.6" -"resolve@^1.20.0", "resolve@^1.22.0": - "integrity" "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==" - "resolved" "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz" - "version" "1.22.1" +resolve@^1.20.0, resolve@^1.22.0, resolve@^1.22.1: + version "1.22.1" + resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz" + 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" + is-core-module "^2.9.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" -"resolve@^1.22.1": - "integrity" "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==" - "resolved" "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz" - "version" "1.22.1" +resolve@^2.0.0-next.3: + version "2.0.0-next.4" + resolved "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz" + integrity sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ== dependencies: - "is-core-module" "^2.9.0" - "path-parse" "^1.0.7" - "supports-preserve-symlinks-flag" "^1.0.0" + is-core-module "^2.9.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" -"resolve@^2.0.0-next.3": - "integrity" "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==" - "resolved" "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz" - "version" "2.0.0-next.4" +responselike@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz" + integrity sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ== dependencies: - "is-core-module" "^2.9.0" - "path-parse" "^1.0.7" - "supports-preserve-symlinks-flag" "^1.0.0" + lowercase-keys "^1.0.0" -"resolve@1.1.7": - "integrity" "sha512-9znBF0vBcaSN3W2j7wKvdERPwqTxSpCq+if5C0WoTCyV9n24rua28jeuQ2pL/HOf+yUe/Mef+H/5p60K0Id3bg==" - "resolved" "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz" - "version" "1.1.7" +ret@~0.1.10: + version "0.1.15" + resolved "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz" + integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== -"responselike@^1.0.2": - "integrity" "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==" - "resolved" "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz" - "version" "1.0.2" +retry@^0.13.1: + version "0.13.1" + resolved "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz" + integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg== + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +rework-visit@1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/rework-visit/-/rework-visit-1.0.0.tgz" + integrity sha512-W6V2fix7nCLUYX1v6eGPrBOZlc03/faqzP4sUxMAJMBMOPYhfV/RyLegTufn5gJKaOITyi+gvf0LXDZ9NzkHnQ== + +rework@1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/rework/-/rework-1.0.1.tgz" + integrity sha512-eEjL8FdkdsxApd0yWVZgBGzfCQiT8yqSc2H1p4jpZpQdtz7ohETiDMoje5PlM8I9WgkqkreVxFUKYOiJdVWDXw== dependencies: - "lowercase-keys" "^1.0.0" + convert-source-map "^0.3.3" + css "^2.0.0" -"ret@~0.1.10": - "integrity" "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" - "resolved" "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz" - "version" "0.1.15" +rgb-regex@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz" + integrity sha512-gDK5mkALDFER2YLqH6imYvK6g02gpNGM4ILDZ472EwWfXZnC2ZEpoB2ECXTyOVUKuk/bPJZMzwQPBYICzP+D3w== -"retry@^0.13.1": - "integrity" "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==" - "resolved" "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz" - "version" "0.13.1" +rgba-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz" + integrity sha512-zgn5OjNQXLUTdq8m17KdaicF6w89TZs8ZU8y0AYENIU6wG8GG6LLm0yLSiPY8DmaYmHdgRW8rnApjoT0fQRfMg== -"reusify@^1.0.4": - "integrity" "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" - "resolved" "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz" - "version" "1.0.4" - -"rework-visit@1.0.0": - "integrity" "sha512-W6V2fix7nCLUYX1v6eGPrBOZlc03/faqzP4sUxMAJMBMOPYhfV/RyLegTufn5gJKaOITyi+gvf0LXDZ9NzkHnQ==" - "resolved" "https://registry.npmjs.org/rework-visit/-/rework-visit-1.0.0.tgz" - "version" "1.0.0" - -"rework@1.0.1": - "integrity" "sha512-eEjL8FdkdsxApd0yWVZgBGzfCQiT8yqSc2H1p4jpZpQdtz7ohETiDMoje5PlM8I9WgkqkreVxFUKYOiJdVWDXw==" - "resolved" "https://registry.npmjs.org/rework/-/rework-1.0.1.tgz" - "version" "1.0.1" +rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.3: + version "2.7.1" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== dependencies: - "convert-source-map" "^0.3.3" - "css" "^2.0.0" + glob "^7.1.3" -"rgb-regex@^1.0.1": - "integrity" "sha512-gDK5mkALDFER2YLqH6imYvK6g02gpNGM4ILDZ472EwWfXZnC2ZEpoB2ECXTyOVUKuk/bPJZMzwQPBYICzP+D3w==" - "resolved" "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz" - "version" "1.0.1" - -"rgba-regex@^1.0.0": - "integrity" "sha512-zgn5OjNQXLUTdq8m17KdaicF6w89TZs8ZU8y0AYENIU6wG8GG6LLm0yLSiPY8DmaYmHdgRW8rnApjoT0fQRfMg==" - "resolved" "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz" - "version" "1.0.0" - -"rimraf@^2.5.4": - "integrity" "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==" - "resolved" "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz" - "version" "2.7.1" +rimraf@^3.0.0, rimraf@^3.0.2: + 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" + glob "^7.1.3" -"rimraf@^2.6.1": - "integrity" "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==" - "resolved" "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz" - "version" "2.7.1" +rimraf@~2.6.2: + version "2.6.3" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz" + integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== dependencies: - "glob" "^7.1.3" + glob "^7.1.3" -"rimraf@^2.6.3": - "integrity" "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==" - "resolved" "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz" - "version" "2.7.1" +ripemd160@^2.0.0, ripemd160@^2.0.1: + version "2.0.2" + resolved "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz" + integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== dependencies: - "glob" "^7.1.3" + hash-base "^3.0.0" + inherits "^2.0.1" -"rimraf@^3.0.0", "rimraf@^3.0.2": - "integrity" "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==" - "resolved" "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz" - "version" "3.0.2" - dependencies: - "glob" "^7.1.3" - -"rimraf@~2.6.2": - "integrity" "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==" - "resolved" "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz" - "version" "2.6.3" - dependencies: - "glob" "^7.1.3" - -"ripemd160@^2.0.0", "ripemd160@^2.0.1": - "integrity" "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==" - "resolved" "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz" - "version" "2.0.2" - dependencies: - "hash-base" "^3.0.0" - "inherits" "^2.0.1" - -"rollup-plugin-terser@^7.0.0": - "integrity" "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==" - "resolved" "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz" - "version" "7.0.2" +rollup-plugin-terser@^7.0.0: + version "7.0.2" + resolved "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz" + integrity sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ== dependencies: "@babel/code-frame" "^7.10.4" - "jest-worker" "^26.2.1" - "serialize-javascript" "^4.0.0" - "terser" "^5.0.0" + jest-worker "^26.2.1" + serialize-javascript "^4.0.0" + terser "^5.0.0" -"rollup@^1.20.0 || ^2.0.0", "rollup@^1.20.0||^2.0.0", "rollup@^2.0.0", "rollup@^2.43.1": - "integrity" "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==" - "resolved" "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz" - "version" "2.79.1" +rollup@^2.43.1: + version "2.79.1" + resolved "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz" + integrity sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw== optionalDependencies: - "fsevents" "~2.3.2" + fsevents "~2.3.2" -"rst-selector-parser@^2.2.3": - "integrity" "sha512-nDG1rZeP6oFTLN6yNDV/uiAvs1+FS/KlrEwh7+y7dpuApDBy6bI2HTBcc0/V8lv9OTqfyD34eF7au2pm8aBbhA==" - "resolved" "https://registry.npmjs.org/rst-selector-parser/-/rst-selector-parser-2.2.3.tgz" - "version" "2.2.3" +rst-selector-parser@^2.2.3: + version "2.2.3" + resolved "https://registry.npmjs.org/rst-selector-parser/-/rst-selector-parser-2.2.3.tgz" + integrity sha512-nDG1rZeP6oFTLN6yNDV/uiAvs1+FS/KlrEwh7+y7dpuApDBy6bI2HTBcc0/V8lv9OTqfyD34eF7au2pm8aBbhA== dependencies: - "lodash.flattendeep" "^4.4.0" - "nearley" "^2.7.10" + lodash.flattendeep "^4.4.0" + nearley "^2.7.10" -"rsvp@^4.8.4": - "integrity" "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==" - "resolved" "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz" - "version" "4.8.5" +rsvp@^4.8.4: + version "4.8.5" + resolved "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz" + integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA== -"run-parallel@^1.1.9": - "integrity" "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==" - "resolved" "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz" - "version" "1.2.0" +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== dependencies: - "queue-microtask" "^1.2.2" + queue-microtask "^1.2.2" -"run-queue@^1.0.0", "run-queue@^1.0.3": - "integrity" "sha512-ntymy489o0/QQplUDnpYAYUsO50K9SBrIVaKCWDOJzYJts0f9WH9RFJkyagebkw5+y1oi00R7ynNW/d12GBumg==" - "resolved" "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz" - "version" "1.0.3" +run-queue@^1.0.0, run-queue@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz" + integrity sha512-ntymy489o0/QQplUDnpYAYUsO50K9SBrIVaKCWDOJzYJts0f9WH9RFJkyagebkw5+y1oi00R7ynNW/d12GBumg== dependencies: - "aproba" "^1.1.1" + aproba "^1.1.1" -"rxjs@^7.0.0": - "integrity" "sha512-z9MzKh/UcOqB3i20H6rtrlaE/CgjLOvheWK/9ILrbhROGTweAi1BaFsTT9FbwZi5Trr1qNRs+MXkhmR06awzQA==" - "resolved" "https://registry.npmjs.org/rxjs/-/rxjs-7.5.7.tgz" - "version" "7.5.7" +rxjs@^7.0.0: + version "7.5.7" + resolved "https://registry.npmjs.org/rxjs/-/rxjs-7.5.7.tgz" + integrity sha512-z9MzKh/UcOqB3i20H6rtrlaE/CgjLOvheWK/9ILrbhROGTweAi1BaFsTT9FbwZi5Trr1qNRs+MXkhmR06awzQA== dependencies: - "tslib" "^2.1.0" + tslib "^2.1.0" -"safe-buffer@^5.0.1", "safe-buffer@^5.1.0", "safe-buffer@^5.1.1", "safe-buffer@^5.1.2", "safe-buffer@>=5.1.0", "safe-buffer@~5.1.0", "safe-buffer@~5.1.1", "safe-buffer@5.1.2": - "integrity" "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - "resolved" "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" - "version" "5.1.2" +safe-buffer@5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz" + integrity sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg== -"safe-buffer@^5.2.0": - "integrity" "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - "resolved" "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" - "version" "5.2.1" +safe-buffer@5.1.2, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -"safe-buffer@5.1.1": - "integrity" "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" - "resolved" "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz" - "version" "5.1.1" +safe-buffer@5.2.1, safe-buffer@^5.2.0: + version "5.2.1" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== -"safe-buffer@5.2.1": - "integrity" "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - "resolved" "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" - "version" "5.2.1" - -"safe-regex-test@^1.0.0": - "integrity" "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==" - "resolved" "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz" - "version" "1.0.0" +safe-regex-test@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz" + integrity sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA== dependencies: - "call-bind" "^1.0.2" - "get-intrinsic" "^1.1.3" - "is-regex" "^1.1.4" + call-bind "^1.0.2" + get-intrinsic "^1.1.3" + is-regex "^1.1.4" -"safe-regex@^1.1.0": - "integrity" "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==" - "resolved" "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz" - "version" "1.1.0" +safe-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz" + integrity sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg== dependencies: - "ret" "~0.1.10" + ret "~0.1.10" -"safer-buffer@^2.0.2", "safer-buffer@^2.1.0", "safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", "safer-buffer@~2.1.0": - "integrity" "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - "resolved" "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" - "version" "2.1.2" +"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: + version "2.1.2" + resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -"sane@^4.0.3": - "integrity" "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==" - "resolved" "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz" - "version" "4.1.0" +sane@^4.0.3: + version "4.1.0" + resolved "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz" + integrity sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA== dependencies: "@cnakazawa/watch" "^1.0.3" - "anymatch" "^2.0.0" - "capture-exit" "^2.0.0" - "exec-sh" "^0.3.2" - "execa" "^1.0.0" - "fb-watchman" "^2.0.0" - "micromatch" "^3.1.4" - "minimist" "^1.1.1" - "walker" "~1.0.5" + anymatch "^2.0.0" + capture-exit "^2.0.0" + exec-sh "^0.3.2" + execa "^1.0.0" + fb-watchman "^2.0.0" + micromatch "^3.1.4" + minimist "^1.1.1" + walker "~1.0.5" -"sanitize.css@*", "sanitize.css@^10.0.0": - "integrity" "sha512-vTxrZz4dX5W86M6oVWVdOVe72ZiPs41Oi7Z6Km4W5Turyz28mrXSJhhEBZoRtzJWIv3833WKVwLSDWWkEfupMg==" - "resolved" "https://registry.npmjs.org/sanitize.css/-/sanitize.css-10.0.0.tgz" - "version" "10.0.0" +sanitize.css@*, sanitize.css@^10.0.0: + version "10.0.0" + resolved "https://registry.npmjs.org/sanitize.css/-/sanitize.css-10.0.0.tgz" + integrity sha512-vTxrZz4dX5W86M6oVWVdOVe72ZiPs41Oi7Z6Km4W5Turyz28mrXSJhhEBZoRtzJWIv3833WKVwLSDWWkEfupMg== -"sass-loader@^12.3.0": - "integrity" "sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA==" - "resolved" "https://registry.npmjs.org/sass-loader/-/sass-loader-12.6.0.tgz" - "version" "12.6.0" +sass-loader@8.0.2: + version "8.0.2" + resolved "https://registry.npmjs.org/sass-loader/-/sass-loader-8.0.2.tgz" + integrity sha512-7o4dbSK8/Ol2KflEmSco4jTjQoV988bM82P9CZdmo9hR3RLnvNc0ufMNdMrB0caq38JQ/FgF4/7RcbcfKzxoFQ== dependencies: - "klona" "^2.0.4" - "neo-async" "^2.6.2" + clone-deep "^4.0.1" + loader-utils "^1.2.3" + neo-async "^2.6.1" + schema-utils "^2.6.1" + semver "^6.3.0" -"sass-loader@8.0.2": - "integrity" "sha512-7o4dbSK8/Ol2KflEmSco4jTjQoV988bM82P9CZdmo9hR3RLnvNc0ufMNdMrB0caq38JQ/FgF4/7RcbcfKzxoFQ==" - "resolved" "https://registry.npmjs.org/sass-loader/-/sass-loader-8.0.2.tgz" - "version" "8.0.2" +sass-loader@^12.3.0: + version "12.6.0" + resolved "https://registry.npmjs.org/sass-loader/-/sass-loader-12.6.0.tgz" + integrity sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA== dependencies: - "clone-deep" "^4.0.1" - "loader-utils" "^1.2.3" - "neo-async" "^2.6.1" - "schema-utils" "^2.6.1" - "semver" "^6.3.0" + klona "^2.0.4" + neo-async "^2.6.2" -"sass@^1.3.0", "sass@^1.49.9": - "integrity" "sha512-VpEyKpyBPCxE7qGDtOcdJ6fFbcpOM+Emu7uZLxVrkX8KVU/Dp5UF7WLvzqRuUhB6mqqQt1xffLoG+AndxTZrCQ==" - "resolved" "https://registry.npmjs.org/sass/-/sass-1.56.1.tgz" - "version" "1.56.1" +sass@^1.49.9: + version "1.56.1" + resolved "https://registry.npmjs.org/sass/-/sass-1.56.1.tgz" + integrity sha512-VpEyKpyBPCxE7qGDtOcdJ6fFbcpOM+Emu7uZLxVrkX8KVU/Dp5UF7WLvzqRuUhB6mqqQt1xffLoG+AndxTZrCQ== dependencies: - "chokidar" ">=3.0.0 <4.0.0" - "immutable" "^4.0.0" - "source-map-js" ">=0.6.2 <2.0.0" + chokidar ">=3.0.0 <4.0.0" + immutable "^4.0.0" + source-map-js ">=0.6.2 <2.0.0" -"sax@^1.2.4", "sax@~1.2.4": - "integrity" "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" - "resolved" "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz" - "version" "1.2.4" +sax@^1.2.4, sax@~1.2.4: + version "1.2.4" + resolved "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz" + integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== -"saxes@^3.1.9": - "integrity" "sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g==" - "resolved" "https://registry.npmjs.org/saxes/-/saxes-3.1.11.tgz" - "version" "3.1.11" +saxes@^3.1.9: + version "3.1.11" + resolved "https://registry.npmjs.org/saxes/-/saxes-3.1.11.tgz" + integrity sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g== dependencies: - "xmlchars" "^2.1.1" + xmlchars "^2.1.1" -"saxes@^5.0.1": - "integrity" "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==" - "resolved" "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz" - "version" "5.0.1" +saxes@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz" + integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== dependencies: - "xmlchars" "^2.2.0" + xmlchars "^2.2.0" -"scheduler@^0.19.1": - "integrity" "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==" - "resolved" "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz" - "version" "0.19.1" +scheduler@^0.19.1: + version "0.19.1" + resolved "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz" + integrity sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA== dependencies: - "loose-envify" "^1.1.0" - "object-assign" "^4.1.1" + loose-envify "^1.1.0" + object-assign "^4.1.1" -"scheduler@^0.20.2": - "integrity" "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==" - "resolved" "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz" - "version" "0.20.2" +scheduler@^0.20.2: + version "0.20.2" + resolved "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz" + integrity sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ== dependencies: - "loose-envify" "^1.1.0" - "object-assign" "^4.1.1" + loose-envify "^1.1.0" + object-assign "^4.1.1" -"schema-utils@^1.0.0": - "integrity" "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==" - "resolved" "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "ajv" "^6.1.0" - "ajv-errors" "^1.0.0" - "ajv-keywords" "^3.1.0" - -"schema-utils@^2.5.0": - "integrity" "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==" - "resolved" "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz" - "version" "2.7.1" - dependencies: - "@types/json-schema" "^7.0.5" - "ajv" "^6.12.4" - "ajv-keywords" "^3.5.2" - -"schema-utils@^2.6.1": - "integrity" "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==" - "resolved" "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz" - "version" "2.7.1" - dependencies: - "@types/json-schema" "^7.0.5" - "ajv" "^6.12.4" - "ajv-keywords" "^3.5.2" - -"schema-utils@^2.6.5": - "integrity" "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==" - "resolved" "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz" - "version" "2.7.1" - dependencies: - "@types/json-schema" "^7.0.5" - "ajv" "^6.12.4" - "ajv-keywords" "^3.5.2" - -"schema-utils@^2.6.6": - "integrity" "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==" - "resolved" "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz" - "version" "2.7.1" - dependencies: - "@types/json-schema" "^7.0.5" - "ajv" "^6.12.4" - "ajv-keywords" "^3.5.2" - -"schema-utils@^2.7.0": - "integrity" "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==" - "resolved" "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz" - "version" "2.7.1" - dependencies: - "@types/json-schema" "^7.0.5" - "ajv" "^6.12.4" - "ajv-keywords" "^3.5.2" - -"schema-utils@^3.0.0", "schema-utils@^3.1.0", "schema-utils@^3.1.1": - "integrity" "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==" - "resolved" "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz" - "version" "3.1.1" - dependencies: - "@types/json-schema" "^7.0.8" - "ajv" "^6.12.5" - "ajv-keywords" "^3.5.2" - -"schema-utils@^4.0.0": - "integrity" "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==" - "resolved" "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "@types/json-schema" "^7.0.9" - "ajv" "^8.8.0" - "ajv-formats" "^2.1.1" - "ajv-keywords" "^5.0.0" - -"schema-utils@2.7.0": - "integrity" "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==" - "resolved" "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz" - "version" "2.7.0" +schema-utils@2.7.0: + version "2.7.0" + resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz" + integrity sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A== dependencies: "@types/json-schema" "^7.0.4" - "ajv" "^6.12.2" - "ajv-keywords" "^3.4.1" + ajv "^6.12.2" + ajv-keywords "^3.4.1" -"scroll-into-view-if-needed@^2.2.25": - "integrity" "sha512-hxpAR6AN+Gh53AdAimHM6C8oTN1ppwVZITihix+WqalywBeFcQ6LdQP5ABNl26nX8GTEL7VT+b8lKpdqq65wXg==" - "resolved" "https://registry.npmjs.org/scroll-into-view-if-needed/-/scroll-into-view-if-needed-2.2.29.tgz" - "version" "2.2.29" +schema-utils@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz" + integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g== dependencies: - "compute-scroll-into-view" "^1.0.17" + ajv "^6.1.0" + ajv-errors "^1.0.0" + ajv-keywords "^3.1.0" -"select-hose@^2.0.0": - "integrity" "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==" - "resolved" "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz" - "version" "2.0.0" - -"selfsigned@^2.1.1": - "integrity" "sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==" - "resolved" "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz" - "version" "2.1.1" +schema-utils@^2.5.0, schema-utils@^2.6.1, schema-utils@^2.6.5, schema-utils@^2.6.6, schema-utils@^2.7.0: + version "2.7.1" + resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz" + integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== dependencies: - "node-forge" "^1" + "@types/json-schema" "^7.0.5" + ajv "^6.12.4" + ajv-keywords "^3.5.2" -"semaphore@^1.1.0": - "integrity" "sha512-O4OZEaNtkMd/K0i6js9SL+gqy0ZCBMgUvlSqHKi4IBdjhe7wB8pwztUk1BbZ1fmrvpwFrPbHzqd2w5pTcJH6LA==" - "resolved" "https://registry.npmjs.org/semaphore/-/semaphore-1.1.0.tgz" - "version" "1.1.0" - -"semver-diff@^3.1.1": - "integrity" "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==" - "resolved" "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz" - "version" "3.1.1" +schema-utils@^3.0.0, schema-utils@^3.1.0, schema-utils@^3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz" + integrity sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw== dependencies: - "semver" "^6.3.0" + "@types/json-schema" "^7.0.8" + ajv "^6.12.5" + ajv-keywords "^3.5.2" -"semver@^5.3.0": - "integrity" "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - "resolved" "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" - "version" "5.7.1" - -"semver@^5.4.1", "semver@^5.5.0": - "integrity" "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - "resolved" "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" - "version" "5.7.1" - -"semver@^5.5.0": - "integrity" "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - "resolved" "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" - "version" "5.7.1" - -"semver@^5.5.1": - "integrity" "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - "resolved" "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" - "version" "5.7.1" - -"semver@^5.6.0": - "integrity" "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - "resolved" "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" - "version" "5.7.1" - -"semver@^5.7.0": - "integrity" "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - "resolved" "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" - "version" "5.7.1" - -"semver@^5.7.1": - "integrity" "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - "resolved" "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" - "version" "5.7.1" - -"semver@^6.0.0", "semver@^6.1.1", "semver@^6.1.2", "semver@^6.2.0", "semver@^6.3.0", "semver@6.3.0": - "integrity" "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - "resolved" "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" - "version" "6.3.0" - -"semver@^7.3.2", "semver@^7.3.5", "semver@^7.3.8": - "integrity" "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==" - "resolved" "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz" - "version" "7.3.8" +schema-utils@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz" + integrity sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg== dependencies: - "lru-cache" "^6.0.0" + "@types/json-schema" "^7.0.9" + ajv "^8.8.0" + ajv-formats "^2.1.1" + ajv-keywords "^5.0.0" -"semver@^7.3.4": - "integrity" "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==" - "resolved" "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz" - "version" "7.3.8" +scroll-into-view-if-needed@^2.2.25: + version "2.2.29" + resolved "https://registry.npmjs.org/scroll-into-view-if-needed/-/scroll-into-view-if-needed-2.2.29.tgz" + integrity sha512-hxpAR6AN+Gh53AdAimHM6C8oTN1ppwVZITihix+WqalywBeFcQ6LdQP5ABNl26nX8GTEL7VT+b8lKpdqq65wXg== dependencies: - "lru-cache" "^6.0.0" + compute-scroll-into-view "^1.0.17" -"semver@^7.3.7": - "integrity" "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==" - "resolved" "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz" - "version" "7.3.8" +select-hose@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz" + integrity sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg== + +selfsigned@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz" + integrity sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ== dependencies: - "lru-cache" "^6.0.0" + node-forge "^1" -"semver@2 || 3 || 4 || 5": - "integrity" "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - "resolved" "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" - "version" "5.7.1" +semaphore@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/semaphore/-/semaphore-1.1.0.tgz" + integrity sha512-O4OZEaNtkMd/K0i6js9SL+gqy0ZCBMgUvlSqHKi4IBdjhe7wB8pwztUk1BbZ1fmrvpwFrPbHzqd2w5pTcJH6LA== -"send@0.18.0": - "integrity" "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==" - "resolved" "https://registry.npmjs.org/send/-/send-0.18.0.tgz" - "version" "0.18.0" +semver-diff@^3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz" + integrity sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg== 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" + semver "^6.3.0" -"serialize-javascript@^4.0.0": - "integrity" "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==" - "resolved" "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz" - "version" "4.0.0" +"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0, semver@^5.7.0, semver@^5.7.1: + version "5.7.1" + resolved "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + +semver@6.3.0, semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0: + version "6.3.0" + resolved "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + +semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8: + version "7.3.8" + resolved "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz" + integrity sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A== dependencies: - "randombytes" "^2.1.0" + lru-cache "^6.0.0" -"serialize-javascript@^5.0.1": - "integrity" "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==" - "resolved" "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz" - "version" "5.0.1" +send@0.18.0: + version "0.18.0" + resolved "https://registry.npmjs.org/send/-/send-0.18.0.tgz" + integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== dependencies: - "randombytes" "^2.1.0" + 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" -"serialize-javascript@^6.0.0": - "integrity" "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==" - "resolved" "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz" - "version" "6.0.0" +serialize-javascript@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz" + integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== dependencies: - "randombytes" "^2.1.0" + randombytes "^2.1.0" -"serve-favicon@^2.5.0": - "integrity" "sha512-FMW2RvqNr03x+C0WxTyu6sOv21oOjkq5j8tjquWccwa6ScNyGFOGJVpuS1NmTVGBAHS07xnSKotgf2ehQmf9iA==" - "resolved" "https://registry.npmjs.org/serve-favicon/-/serve-favicon-2.5.0.tgz" - "version" "2.5.0" +serialize-javascript@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz" + integrity sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA== dependencies: - "etag" "~1.8.1" - "fresh" "0.5.2" - "ms" "2.1.1" - "parseurl" "~1.3.2" - "safe-buffer" "5.1.1" + randombytes "^2.1.0" -"serve-index@^1.9.1": - "integrity" "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==" - "resolved" "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz" - "version" "1.9.1" +serialize-javascript@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz" + integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag== dependencies: - "accepts" "~1.3.4" - "batch" "0.6.1" - "debug" "2.6.9" - "escape-html" "~1.0.3" - "http-errors" "~1.6.2" - "mime-types" "~2.1.17" - "parseurl" "~1.3.2" + randombytes "^2.1.0" -"serve-static@1.15.0": - "integrity" "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==" - "resolved" "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz" - "version" "1.15.0" +serve-favicon@^2.5.0: + version "2.5.0" + resolved "https://registry.npmjs.org/serve-favicon/-/serve-favicon-2.5.0.tgz" + integrity sha512-FMW2RvqNr03x+C0WxTyu6sOv21oOjkq5j8tjquWccwa6ScNyGFOGJVpuS1NmTVGBAHS07xnSKotgf2ehQmf9iA== dependencies: - "encodeurl" "~1.0.2" - "escape-html" "~1.0.3" - "parseurl" "~1.3.3" - "send" "0.18.0" + etag "~1.8.1" + fresh "0.5.2" + ms "2.1.1" + parseurl "~1.3.2" + safe-buffer "5.1.1" -"set-blocking@^2.0.0": - "integrity" "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" - "resolved" "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz" - "version" "2.0.0" - -"set-value@^2.0.0", "set-value@^2.0.1": - "integrity" "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==" - "resolved" "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz" - "version" "2.0.1" +serve-index@^1.9.1: + version "1.9.1" + resolved "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz" + integrity sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw== dependencies: - "extend-shallow" "^2.0.1" - "is-extendable" "^0.1.1" - "is-plain-object" "^2.0.3" - "split-string" "^3.0.1" + accepts "~1.3.4" + batch "0.6.1" + debug "2.6.9" + escape-html "~1.0.3" + http-errors "~1.6.2" + mime-types "~2.1.17" + parseurl "~1.3.2" -"setimmediate@^1.0.4", "setimmediate@^1.0.5": - "integrity" "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" - "resolved" "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz" - "version" "1.0.5" - -"setprototypeof@1.1.0": - "integrity" "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" - "resolved" "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz" - "version" "1.1.0" - -"setprototypeof@1.2.0": - "integrity" "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" - "resolved" "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz" - "version" "1.2.0" - -"sha.js@^2.4.0", "sha.js@^2.4.8": - "integrity" "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==" - "resolved" "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz" - "version" "2.4.11" +serve-static@1.15.0: + version "1.15.0" + resolved "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz" + integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== dependencies: - "inherits" "^2.0.1" - "safe-buffer" "^5.0.1" + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.18.0" -"shallow-clone@^0.1.2": - "integrity" "sha512-J1zdXCky5GmNnuauESROVu31MQSnLoYvlyEn6j2Ztk6Q5EHFIhxkMhYcv6vuDzl2XEzoRr856QwzMgWM/TmZgw==" - "resolved" "https://registry.npmjs.org/shallow-clone/-/shallow-clone-0.1.2.tgz" - "version" "0.1.2" +set-blocking@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz" + integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== + +set-value@^2.0.0, set-value@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz" + integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== dependencies: - "is-extendable" "^0.1.1" - "kind-of" "^2.0.1" - "lazy-cache" "^0.2.3" - "mixin-object" "^2.0.1" + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.3" + split-string "^3.0.1" -"shallow-clone@^3.0.0": - "integrity" "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==" - "resolved" "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz" - "version" "3.0.1" +setimmediate@^1.0.4, setimmediate@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz" + integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== + +setprototypeof@1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz" + integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== + +setprototypeof@1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz" + integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== + +sha.js@^2.4.0, sha.js@^2.4.8: + version "2.4.11" + resolved "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz" + integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== dependencies: - "kind-of" "^6.0.2" + inherits "^2.0.1" + safe-buffer "^5.0.1" -"shallowequal@^1.1.0": - "integrity" "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==" - "resolved" "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz" - "version" "1.1.0" - -"shebang-command@^1.2.0": - "integrity" "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==" - "resolved" "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz" - "version" "1.2.0" +shallow-clone@^0.1.2: + version "0.1.2" + resolved "https://registry.npmjs.org/shallow-clone/-/shallow-clone-0.1.2.tgz" + integrity sha512-J1zdXCky5GmNnuauESROVu31MQSnLoYvlyEn6j2Ztk6Q5EHFIhxkMhYcv6vuDzl2XEzoRr856QwzMgWM/TmZgw== dependencies: - "shebang-regex" "^1.0.0" + is-extendable "^0.1.1" + kind-of "^2.0.1" + lazy-cache "^0.2.3" + mixin-object "^2.0.1" -"shebang-command@^2.0.0": - "integrity" "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==" - "resolved" "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" - "version" "2.0.0" +shallow-clone@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz" + integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== dependencies: - "shebang-regex" "^3.0.0" + kind-of "^6.0.2" -"shebang-regex@^1.0.0": - "integrity" "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==" - "resolved" "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz" - "version" "1.0.0" +shallowequal@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz" + integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ== -"shebang-regex@^3.0.0": - "integrity" "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" - "resolved" "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" - "version" "3.0.0" - -"shell-quote@^1.7.3": - "integrity" "sha512-8o/QEhSSRb1a5i7TFR0iM4G16Z0vYB2OQVs4G3aAFXjn3T6yEx8AZxy1PgDF7I00LZHYA3WxaSYIf5e5sAX8Rw==" - "resolved" "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.4.tgz" - "version" "1.7.4" - -"shell-quote@1.7.2": - "integrity" "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==" - "resolved" "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz" - "version" "1.7.2" - -"shelljs@^0.8.5": - "integrity" "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==" - "resolved" "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz" - "version" "0.8.5" +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz" + integrity sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg== dependencies: - "glob" "^7.0.0" - "interpret" "^1.0.0" - "rechoir" "^0.6.2" + shebang-regex "^1.0.0" -"short-uuid@^4.1.0": - "integrity" "sha512-IE7hDSGV2U/VZoCsjctKX6l5t5ak2jE0+aeGJi3KtvjIUNuZVmHVYUjNBhmo369FIWGDtaieRaO8A83Lvwfpqw==" - "resolved" "https://registry.npmjs.org/short-uuid/-/short-uuid-4.2.2.tgz" - "version" "4.2.2" +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== dependencies: - "any-base" "^1.1.0" - "uuid" "^8.3.2" + shebang-regex "^3.0.0" -"shortcuts@^1.6.1": - "integrity" "sha512-2AURf/O3BbPHuzLtnnzrF/mXut8xZy3oneFTGjvXPQn1+apw1cBpy1+493NEKab+yO8ND3rbCdD7uVK+J2C93A==" - "resolved" "https://registry.npmjs.org/shortcuts/-/shortcuts-1.8.1.tgz" - "version" "1.8.1" +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz" + integrity sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ== -"showdown@^1.9.1": - "integrity" "sha512-9cGuS382HcvExtf5AHk7Cb4pAeQQ+h0eTr33V1mu+crYWV4KvWAw6el92bDrqGEk5d46Ai/fhbEUwqJ/mTCNEA==" - "resolved" "https://registry.npmjs.org/showdown/-/showdown-1.9.1.tgz" - "version" "1.9.1" +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +shell-quote@1.7.2: + version "1.7.2" + resolved "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz" + integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg== + +shell-quote@^1.7.3: + version "1.7.4" + resolved "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.4.tgz" + integrity sha512-8o/QEhSSRb1a5i7TFR0iM4G16Z0vYB2OQVs4G3aAFXjn3T6yEx8AZxy1PgDF7I00LZHYA3WxaSYIf5e5sAX8Rw== + +shelljs@^0.8.5: + version "0.8.5" + resolved "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz" + integrity sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow== dependencies: - "yargs" "^14.2" + glob "^7.0.0" + interpret "^1.0.0" + rechoir "^0.6.2" -"side-channel@^1.0.4": - "integrity" "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==" - "resolved" "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz" - "version" "1.0.4" +short-uuid@^4.1.0: + version "4.2.2" + resolved "https://registry.npmjs.org/short-uuid/-/short-uuid-4.2.2.tgz" + integrity sha512-IE7hDSGV2U/VZoCsjctKX6l5t5ak2jE0+aeGJi3KtvjIUNuZVmHVYUjNBhmo369FIWGDtaieRaO8A83Lvwfpqw== dependencies: - "call-bind" "^1.0.0" - "get-intrinsic" "^1.0.2" - "object-inspect" "^1.9.0" + any-base "^1.1.0" + uuid "^8.3.2" -"signal-exit@^3.0.0", "signal-exit@^3.0.2", "signal-exit@^3.0.3": - "integrity" "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" - "resolved" "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz" - "version" "3.0.7" +shortcuts@^1.6.1: + version "1.8.1" + resolved "https://registry.npmjs.org/shortcuts/-/shortcuts-1.8.1.tgz" + integrity sha512-2AURf/O3BbPHuzLtnnzrF/mXut8xZy3oneFTGjvXPQn1+apw1cBpy1+493NEKab+yO8ND3rbCdD7uVK+J2C93A== -"simple-swizzle@^0.2.2": - "integrity" "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==" - "resolved" "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz" - "version" "0.2.2" +showdown@^1.9.1: + version "1.9.1" + resolved "https://registry.npmjs.org/showdown/-/showdown-1.9.1.tgz" + integrity sha512-9cGuS382HcvExtf5AHk7Cb4pAeQQ+h0eTr33V1mu+crYWV4KvWAw6el92bDrqGEk5d46Ai/fhbEUwqJ/mTCNEA== dependencies: - "is-arrayish" "^0.3.1" + yargs "^14.2" -"sisteransi@^1.0.5": - "integrity" "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==" - "resolved" "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz" - "version" "1.0.5" - -"slash@^1.0.0": - "integrity" "sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg==" - "resolved" "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz" - "version" "1.0.0" - -"slash@^2.0.0": - "integrity" "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==" - "resolved" "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz" - "version" "2.0.0" - -"slash@^3.0.0": - "integrity" "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" - "resolved" "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz" - "version" "3.0.0" - -"slash@^4.0.0": - "integrity" "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==" - "resolved" "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz" - "version" "4.0.0" - -"snapdragon-node@^2.0.1": - "integrity" "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==" - "resolved" "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz" - "version" "2.1.1" +side-channel@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz" + integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== dependencies: - "define-property" "^1.0.0" - "isobject" "^3.0.0" - "snapdragon-util" "^3.0.1" + call-bind "^1.0.0" + get-intrinsic "^1.0.2" + object-inspect "^1.9.0" -"snapdragon-util@^3.0.1": - "integrity" "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==" - "resolved" "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz" - "version" "3.0.1" +signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3: + version "3.0.7" + resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + +simple-swizzle@^0.2.2: + version "0.2.2" + resolved "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz" + integrity sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg== dependencies: - "kind-of" "^3.2.0" + is-arrayish "^0.3.1" -"snapdragon@^0.8.1": - "integrity" "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==" - "resolved" "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz" - "version" "0.8.2" +sisteransi@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz" + integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== + +slash@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz" + integrity sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg== + +slash@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz" + integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +slash@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz" + integrity sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew== + +snapdragon-node@^2.0.1: + version "2.1.1" + resolved "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz" + integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== dependencies: - "base" "^0.11.1" - "debug" "^2.2.0" - "define-property" "^0.2.5" - "extend-shallow" "^2.0.1" - "map-cache" "^0.2.2" - "source-map" "^0.5.6" - "source-map-resolve" "^0.5.0" - "use" "^3.1.0" + define-property "^1.0.0" + isobject "^3.0.0" + snapdragon-util "^3.0.1" -"socket.io-client@^2.3.1": - "integrity" "sha512-lOO9clmdgssDykiOmVQQitwBAF3I6mYcQAo7hQ7AM6Ny5X7fp8hIJ3HcQs3Rjz4SoggoxA1OgrQyY8EgTbcPYw==" - "resolved" "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.5.0.tgz" - "version" "2.5.0" +snapdragon-util@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz" + integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== dependencies: - "backo2" "1.0.2" - "component-bind" "1.0.0" - "component-emitter" "~1.3.0" - "debug" "~3.1.0" - "engine.io-client" "~3.5.0" - "has-binary2" "~1.0.2" - "indexof" "0.0.1" - "parseqs" "0.0.6" - "parseuri" "0.0.6" - "socket.io-parser" "~3.3.0" - "to-array" "0.1.4" + kind-of "^3.2.0" -"socket.io-parser@~3.3.0": - "integrity" "sha512-qOg87q1PMWWTeO01768Yh9ogn7chB9zkKtQnya41Y355S0UmpXgpcrFwAgjYJxu9BdKug5r5e9YtVSeWhKBUZg==" - "resolved" "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.3.3.tgz" - "version" "3.3.3" +snapdragon@^0.8.1: + version "0.8.2" + resolved "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz" + integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== dependencies: - "component-emitter" "~1.3.0" - "debug" "~3.1.0" - "isarray" "2.0.1" + base "^0.11.1" + debug "^2.2.0" + define-property "^0.2.5" + extend-shallow "^2.0.1" + map-cache "^0.2.2" + source-map "^0.5.6" + source-map-resolve "^0.5.0" + use "^3.1.0" -"sockjs@^0.3.24": - "integrity" "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==" - "resolved" "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz" - "version" "0.3.24" +socket.io-client@^2.3.1: + version "2.5.0" + resolved "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.5.0.tgz" + integrity sha512-lOO9clmdgssDykiOmVQQitwBAF3I6mYcQAo7hQ7AM6Ny5X7fp8hIJ3HcQs3Rjz4SoggoxA1OgrQyY8EgTbcPYw== dependencies: - "faye-websocket" "^0.11.3" - "uuid" "^8.3.2" - "websocket-driver" "^0.7.4" + backo2 "1.0.2" + component-bind "1.0.0" + component-emitter "~1.3.0" + debug "~3.1.0" + engine.io-client "~3.5.0" + has-binary2 "~1.0.2" + indexof "0.0.1" + parseqs "0.0.6" + parseuri "0.0.6" + socket.io-parser "~3.3.0" + to-array "0.1.4" -"sort-keys@^1.0.0": - "integrity" "sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg==" - "resolved" "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz" - "version" "1.1.2" +socket.io-parser@~3.3.0: + version "3.3.3" + resolved "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.3.3.tgz" + integrity sha512-qOg87q1PMWWTeO01768Yh9ogn7chB9zkKtQnya41Y355S0UmpXgpcrFwAgjYJxu9BdKug5r5e9YtVSeWhKBUZg== dependencies: - "is-plain-obj" "^1.0.0" + component-emitter "~1.3.0" + debug "~3.1.0" + isarray "2.0.1" -"source-list-map@^2.0.0", "source-list-map@^2.0.1": - "integrity" "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==" - "resolved" "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz" - "version" "2.0.1" - -"source-map-js@^1.0.1", "source-map-js@^1.0.2", "source-map-js@>=0.6.2 <2.0.0": - "integrity" "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" - "resolved" "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz" - "version" "1.0.2" - -"source-map-loader@^3.0.0": - "integrity" "sha512-BokxPoLjyl3iOrgkWaakaxqnelAJSS+0V+De0kKIq6lyWrXuiPgYTGp6z3iHmqljKAaLXwZa+ctD8GccRJeVvg==" - "resolved" "https://registry.npmjs.org/source-map-loader/-/source-map-loader-3.0.2.tgz" - "version" "3.0.2" +sockjs@^0.3.24: + version "0.3.24" + resolved "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz" + integrity sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ== dependencies: - "abab" "^2.0.5" - "iconv-lite" "^0.6.3" - "source-map-js" "^1.0.1" + faye-websocket "^0.11.3" + uuid "^8.3.2" + websocket-driver "^0.7.4" -"source-map-resolve@^0.5.0", "source-map-resolve@^0.5.2": - "integrity" "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==" - "resolved" "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz" - "version" "0.5.3" +sort-keys@^1.0.0: + version "1.1.2" + resolved "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz" + integrity sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg== dependencies: - "atob" "^2.1.2" - "decode-uri-component" "^0.2.0" - "resolve-url" "^0.2.1" - "source-map-url" "^0.4.0" - "urix" "^0.1.0" + is-plain-obj "^1.0.0" -"source-map-support@^0.4.15": - "integrity" "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==" - "resolved" "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz" - "version" "0.4.18" +source-list-map@^2.0.0, source-list-map@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz" + integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== + +"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.1, source-map-js@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz" + integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== + +source-map-loader@^3.0.0: + version "3.0.2" + resolved "https://registry.npmjs.org/source-map-loader/-/source-map-loader-3.0.2.tgz" + integrity sha512-BokxPoLjyl3iOrgkWaakaxqnelAJSS+0V+De0kKIq6lyWrXuiPgYTGp6z3iHmqljKAaLXwZa+ctD8GccRJeVvg== dependencies: - "source-map" "^0.5.6" + abab "^2.0.5" + iconv-lite "^0.6.3" + source-map-js "^1.0.1" -"source-map-support@^0.5.16": - "integrity" "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==" - "resolved" "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz" - "version" "0.5.21" +source-map-resolve@^0.5.0, source-map-resolve@^0.5.2: + version "0.5.3" + resolved "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz" + integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== dependencies: - "buffer-from" "^1.0.0" - "source-map" "^0.6.0" + atob "^2.1.2" + decode-uri-component "^0.2.0" + resolve-url "^0.2.1" + source-map-url "^0.4.0" + urix "^0.1.0" -"source-map-support@^0.5.6": - "integrity" "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==" - "resolved" "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz" - "version" "0.5.21" +source-map-support@^0.4.15: + version "0.4.18" + resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz" + integrity sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA== dependencies: - "buffer-from" "^1.0.0" - "source-map" "^0.6.0" + source-map "^0.5.6" -"source-map-support@~0.5.12", "source-map-support@~0.5.20": - "integrity" "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==" - "resolved" "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz" - "version" "0.5.21" +source-map-support@^0.5.16, source-map-support@^0.5.6, source-map-support@~0.5.12, source-map-support@~0.5.20: + version "0.5.21" + resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== dependencies: - "buffer-from" "^1.0.0" - "source-map" "^0.6.0" + buffer-from "^1.0.0" + source-map "^0.6.0" -"source-map-url@^0.4.0": - "integrity" "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==" - "resolved" "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz" - "version" "0.4.1" +source-map-url@^0.4.0: + version "0.4.1" + resolved "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz" + integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== -"source-map@^0.5.0", "source-map@^0.5.6", "source-map@^0.5.7": - "integrity" "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==" - "resolved" "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz" - "version" "0.5.7" +source-map@0.6.1, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -"source-map@^0.6.0", "source-map@^0.6.1", "source-map@~0.6.0", "source-map@~0.6.1", "source-map@0.6.1": - "integrity" "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - "resolved" "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" - "version" "0.6.1" +source-map@^0.5.0, source-map@^0.5.6, source-map@^0.5.7: + version "0.5.7" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz" + integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== -"source-map@^0.7.3": - "integrity" "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==" - "resolved" "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz" - "version" "0.7.4" +source-map@^0.7.3: + version "0.7.4" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz" + integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== -"source-map@^0.8.0-beta.0": - "integrity" "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==" - "resolved" "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz" - "version" "0.8.0-beta.0" +source-map@^0.8.0-beta.0: + version "0.8.0-beta.0" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz" + integrity sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA== dependencies: - "whatwg-url" "^7.0.0" + whatwg-url "^7.0.0" -"sourcemap-codec@^1.4.8": - "integrity" "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" - "resolved" "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz" - "version" "1.4.8" +sourcemap-codec@^1.4.8: + version "1.4.8" + resolved "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz" + integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== -"space-separated-tokens@^1.0.0": - "integrity" "sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==" - "resolved" "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz" - "version" "1.1.5" +space-separated-tokens@^1.0.0: + version "1.1.5" + resolved "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz" + integrity sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA== -"spawn-command@^0.0.2-1": - "integrity" "sha512-n98l9E2RMSJ9ON1AKisHzz7V42VDiBQGY6PB1BwRglz99wpVsSuGzQ+jOi6lFXBGVTCrRpltvjm+/XA+tpeJrg==" - "resolved" "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz" - "version" "0.0.2-1" +spawn-command@^0.0.2-1: + version "0.0.2-1" + resolved "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz" + integrity sha512-n98l9E2RMSJ9ON1AKisHzz7V42VDiBQGY6PB1BwRglz99wpVsSuGzQ+jOi6lFXBGVTCrRpltvjm+/XA+tpeJrg== -"spdx-correct@^3.0.0": - "integrity" "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==" - "resolved" "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz" - "version" "3.1.1" +spdx-correct@^3.0.0: + version "3.1.1" + resolved "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz" + integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== dependencies: - "spdx-expression-parse" "^3.0.0" - "spdx-license-ids" "^3.0.0" + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" -"spdx-exceptions@^2.1.0": - "integrity" "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==" - "resolved" "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz" - "version" "2.3.0" +spdx-exceptions@^2.1.0: + version "2.3.0" + resolved "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz" + integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== -"spdx-expression-parse@^3.0.0": - "integrity" "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==" - "resolved" "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz" - "version" "3.0.1" +spdx-expression-parse@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz" + integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== dependencies: - "spdx-exceptions" "^2.1.0" - "spdx-license-ids" "^3.0.0" + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" -"spdx-license-ids@^3.0.0": - "integrity" "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==" - "resolved" "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz" - "version" "3.0.12" +spdx-license-ids@^3.0.0: + version "3.0.12" + resolved "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz" + integrity sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA== -"spdy-transport@^3.0.0": - "integrity" "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==" - "resolved" "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz" - "version" "3.0.0" +spdy-transport@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz" + integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw== dependencies: - "debug" "^4.1.0" - "detect-node" "^2.0.4" - "hpack.js" "^2.1.6" - "obuf" "^1.1.2" - "readable-stream" "^3.0.6" - "wbuf" "^1.7.3" + debug "^4.1.0" + detect-node "^2.0.4" + hpack.js "^2.1.6" + obuf "^1.1.2" + readable-stream "^3.0.6" + wbuf "^1.7.3" -"spdy@^4.0.2": - "integrity" "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==" - "resolved" "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz" - "version" "4.0.2" +spdy@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz" + integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA== dependencies: - "debug" "^4.1.0" - "handle-thing" "^2.0.0" - "http-deceiver" "^1.2.7" - "select-hose" "^2.0.0" - "spdy-transport" "^3.0.0" + debug "^4.1.0" + handle-thing "^2.0.0" + http-deceiver "^1.2.7" + select-hose "^2.0.0" + spdy-transport "^3.0.0" -"splaytree@^3.1.0": - "integrity" "sha512-9FaQ18FF0+sZc/ieEeXHt+Jw2eSpUgUtTLDYB/HXKWvhYVyOc7h1hzkn5MMO3GPib9MmXG1go8+OsBBzs/NMww==" - "resolved" "https://registry.npmjs.org/splaytree/-/splaytree-3.1.1.tgz" - "version" "3.1.1" +splaytree@^3.1.0: + version "3.1.1" + resolved "https://registry.npmjs.org/splaytree/-/splaytree-3.1.1.tgz" + integrity sha512-9FaQ18FF0+sZc/ieEeXHt+Jw2eSpUgUtTLDYB/HXKWvhYVyOc7h1hzkn5MMO3GPib9MmXG1go8+OsBBzs/NMww== -"split-string@^3.0.1", "split-string@^3.0.2": - "integrity" "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==" - "resolved" "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz" - "version" "3.1.0" +split-string@^3.0.1, split-string@^3.0.2: + version "3.1.0" + resolved "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz" + integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== dependencies: - "extend-shallow" "^3.0.0" + extend-shallow "^3.0.0" -"sprintf-js@~1.0.2": - "integrity" "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" - "resolved" "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" - "version" "1.0.3" +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" + integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== -"sshpk@^1.7.0": - "integrity" "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==" - "resolved" "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz" - "version" "1.17.0" +sshpk@^1.7.0: + version "1.17.0" + resolved "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz" + integrity sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ== dependencies: - "asn1" "~0.2.3" - "assert-plus" "^1.0.0" - "bcrypt-pbkdf" "^1.0.0" - "dashdash" "^1.12.0" - "ecc-jsbn" "~0.1.1" - "getpass" "^0.1.1" - "jsbn" "~0.1.0" - "safer-buffer" "^2.0.2" - "tweetnacl" "~0.14.0" + asn1 "~0.2.3" + assert-plus "^1.0.0" + bcrypt-pbkdf "^1.0.0" + dashdash "^1.12.0" + ecc-jsbn "~0.1.1" + getpass "^0.1.1" + jsbn "~0.1.0" + safer-buffer "^2.0.2" + tweetnacl "~0.14.0" -"ssri@^6.0.1": - "integrity" "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==" - "resolved" "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz" - "version" "6.0.2" +ssri@^6.0.1: + version "6.0.2" + resolved "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz" + integrity sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q== dependencies: - "figgy-pudding" "^3.5.1" + figgy-pudding "^3.5.1" -"ssri@^8.0.1": - "integrity" "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==" - "resolved" "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz" - "version" "8.0.1" +ssri@^8.0.1: + version "8.0.1" + resolved "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz" + integrity sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ== dependencies: - "minipass" "^3.1.1" + minipass "^3.1.1" -"stable@^0.1.8": - "integrity" "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==" - "resolved" "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz" - "version" "0.1.8" +stable@^0.1.8: + version "0.1.8" + resolved "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz" + integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== -"stack-utils@^1.0.1": - "integrity" "sha512-KZiTzuV3CnSnSvgMRrARVCj+Ht7rMbauGDK0LdVFRGyenwdylpajAp4Q0i6SX8rEmbTpMMf6ryq2gb8pPq2WgQ==" - "resolved" "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.5.tgz" - "version" "1.0.5" +stack-utils@^1.0.1: + version "1.0.5" + resolved "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.5.tgz" + integrity sha512-KZiTzuV3CnSnSvgMRrARVCj+Ht7rMbauGDK0LdVFRGyenwdylpajAp4Q0i6SX8rEmbTpMMf6ryq2gb8pPq2WgQ== dependencies: - "escape-string-regexp" "^2.0.0" + escape-string-regexp "^2.0.0" -"stack-utils@^2.0.2": - "integrity" "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==" - "resolved" "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz" - "version" "2.0.6" +stack-utils@^2.0.2, stack-utils@^2.0.3: + version "2.0.6" + resolved "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz" + integrity sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ== dependencies: - "escape-string-regexp" "^2.0.0" + escape-string-regexp "^2.0.0" -"stack-utils@^2.0.3": - "integrity" "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==" - "resolved" "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz" - "version" "2.0.6" +stackframe@^1.3.4: + version "1.3.4" + resolved "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz" + integrity sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw== + +state-toggle@^1.0.0: + version "1.0.3" + resolved "https://registry.npmjs.org/state-toggle/-/state-toggle-1.0.3.tgz" + integrity sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ== + +static-extend@^0.1.1: + version "0.1.2" + resolved "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz" + integrity sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g== dependencies: - "escape-string-regexp" "^2.0.0" + define-property "^0.2.5" + object-copy "^0.1.0" -"stackframe@^1.3.4": - "integrity" "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==" - "resolved" "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz" - "version" "1.3.4" - -"state-toggle@^1.0.0": - "integrity" "sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ==" - "resolved" "https://registry.npmjs.org/state-toggle/-/state-toggle-1.0.3.tgz" - "version" "1.0.3" - -"static-extend@^0.1.1": - "integrity" "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==" - "resolved" "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz" - "version" "0.1.2" - dependencies: - "define-property" "^0.2.5" - "object-copy" "^0.1.0" +statuses@2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz" + integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== "statuses@>= 1.4.0 < 2": - "integrity" "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==" - "resolved" "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz" - "version" "1.5.0" + version "1.5.0" + resolved "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz" + integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== -"statuses@2.0.1": - "integrity" "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" - "resolved" "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz" - "version" "2.0.1" +stealthy-require@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz" + integrity sha512-ZnWpYnYugiOVEY5GkcuJK1io5V8QmNYChG62gSit9pQVGErXtrKuPC55ITaVSukmMta5qpMU7vqLt2Lnni4f/g== -"stealthy-require@^1.1.1": - "integrity" "sha512-ZnWpYnYugiOVEY5GkcuJK1io5V8QmNYChG62gSit9pQVGErXtrKuPC55ITaVSukmMta5qpMU7vqLt2Lnni4f/g==" - "resolved" "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz" - "version" "1.1.1" +store2@^2.12.0: + version "2.14.2" + resolved "https://registry.npmjs.org/store2/-/store2-2.14.2.tgz" + integrity sha512-siT1RiqlfQnGqgT/YzXVUNsom9S0H1OX+dpdGN1xkyYATo4I6sep5NmsRD/40s3IIOvlCq6akxkqG82urIZW1w== -"store2@^2.12.0": - "integrity" "sha512-siT1RiqlfQnGqgT/YzXVUNsom9S0H1OX+dpdGN1xkyYATo4I6sep5NmsRD/40s3IIOvlCq6akxkqG82urIZW1w==" - "resolved" "https://registry.npmjs.org/store2/-/store2-2.14.2.tgz" - "version" "2.14.2" - -"storybook-dark-mode@=1.1.0": - "integrity" "sha512-F+hG02zYGBzxGTUonA1XDV/CtMYm3OjF38Tu1CIUN+w+8hwUrwLcOtgtLLw6VjSrZdJ/ECK+tjXdKTV4oZqAXw==" - "resolved" "https://registry.npmjs.org/storybook-dark-mode/-/storybook-dark-mode-1.1.0.tgz" - "version" "1.1.0" +storybook-dark-mode@=1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/storybook-dark-mode/-/storybook-dark-mode-1.1.0.tgz" + integrity sha512-F+hG02zYGBzxGTUonA1XDV/CtMYm3OjF38Tu1CIUN+w+8hwUrwLcOtgtLLw6VjSrZdJ/ECK+tjXdKTV4oZqAXw== dependencies: - "fast-deep-equal" "^3.0.0" - "memoizerific" "^1.11.3" + fast-deep-equal "^3.0.0" + memoizerific "^1.11.3" -"storybook-preset-craco@=0.0.6": - "integrity" "sha512-1HwDzjVDcUi7hJJvj4mYRbabvF1MGFgpnph9wQml8j9yamgLm2ISA9vaFMskWGNId9vyfPivINcEhcTNdmPhBA==" - "resolved" "https://registry.npmjs.org/storybook-preset-craco/-/storybook-preset-craco-0.0.6.tgz" - "version" "0.0.6" +storybook-preset-craco@=0.0.6: + version "0.0.6" + resolved "https://registry.npmjs.org/storybook-preset-craco/-/storybook-preset-craco-0.0.6.tgz" + integrity sha512-1HwDzjVDcUi7hJJvj4mYRbabvF1MGFgpnph9wQml8j9yamgLm2ISA9vaFMskWGNId9vyfPivINcEhcTNdmPhBA== dependencies: "@storybook/preset-create-react-app" "^3.1.5" -"stream-browserify@^2.0.1": - "integrity" "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==" - "resolved" "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz" - "version" "2.0.2" +stream-browserify@^2.0.1: + version "2.0.2" + resolved "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz" + integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== dependencies: - "inherits" "~2.0.1" - "readable-stream" "^2.0.2" + inherits "~2.0.1" + readable-stream "^2.0.2" -"stream-each@^1.1.0": - "integrity" "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==" - "resolved" "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz" - "version" "1.2.3" +stream-each@^1.1.0: + version "1.2.3" + resolved "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz" + integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw== dependencies: - "end-of-stream" "^1.1.0" - "stream-shift" "^1.0.0" + end-of-stream "^1.1.0" + stream-shift "^1.0.0" -"stream-http@^2.7.2": - "integrity" "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==" - "resolved" "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz" - "version" "2.8.3" +stream-http@^2.7.2: + version "2.8.3" + resolved "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz" + integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== dependencies: - "builtin-status-codes" "^3.0.0" - "inherits" "^2.0.1" - "readable-stream" "^2.3.6" - "to-arraybuffer" "^1.0.0" - "xtend" "^4.0.0" + builtin-status-codes "^3.0.0" + inherits "^2.0.1" + readable-stream "^2.3.6" + to-arraybuffer "^1.0.0" + xtend "^4.0.0" -"stream-shift@^1.0.0": - "integrity" "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==" - "resolved" "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz" - "version" "1.0.1" +stream-shift@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz" + integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== -"strict-uri-encode@^1.0.0": - "integrity" "sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==" - "resolved" "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz" - "version" "1.1.0" +strict-uri-encode@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz" + integrity sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ== -"string_decoder@^1.0.0", "string_decoder@^1.1.1", "string_decoder@~1.1.1": - "integrity" "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==" - "resolved" "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" - "version" "1.1.1" +string-convert@^0.2.0: + version "0.2.1" + resolved "https://registry.npmjs.org/string-convert/-/string-convert-0.2.1.tgz" + integrity sha512-u/1tdPl4yQnPBjnVrmdLo9gtuLvELKsAoRapekWggdiQNvvvum+jYF329d84NAa660KQw7pB2n36KrIKVoXa3A== + +string-length@^4.0.1: + version "4.0.2" + resolved "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz" + integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== dependencies: - "safe-buffer" "~5.1.0" + char-regex "^1.0.2" + strip-ansi "^6.0.0" -"string-convert@^0.2.0": - "integrity" "sha512-u/1tdPl4yQnPBjnVrmdLo9gtuLvELKsAoRapekWggdiQNvvvum+jYF329d84NAa660KQw7pB2n36KrIKVoXa3A==" - "resolved" "https://registry.npmjs.org/string-convert/-/string-convert-0.2.1.tgz" - "version" "0.2.1" - -"string-length@^4.0.1": - "integrity" "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==" - "resolved" "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz" - "version" "4.0.2" +string-length@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/string-length/-/string-length-5.0.1.tgz" + integrity sha512-9Ep08KAMUn0OadnVaBuRdE2l615CQ508kr0XMadjClfYpdCyvrbFp6Taebo8yyxokQ4viUd/xPPUA4FGgUa0ow== dependencies: - "char-regex" "^1.0.2" - "strip-ansi" "^6.0.0" + char-regex "^2.0.0" + strip-ansi "^7.0.1" -"string-length@^5.0.1": - "integrity" "sha512-9Ep08KAMUn0OadnVaBuRdE2l615CQ508kr0XMadjClfYpdCyvrbFp6Taebo8yyxokQ4viUd/xPPUA4FGgUa0ow==" - "resolved" "https://registry.npmjs.org/string-length/-/string-length-5.0.1.tgz" - "version" "5.0.1" +string-natural-compare@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/string-natural-compare/-/string-natural-compare-3.0.1.tgz" + integrity sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw== + +"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== dependencies: - "char-regex" "^2.0.0" - "strip-ansi" "^7.0.1" + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" -"string-natural-compare@^3.0.1": - "integrity" "sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw==" - "resolved" "https://registry.npmjs.org/string-natural-compare/-/string-natural-compare-3.0.1.tgz" - "version" "3.0.1" - -"string-width@^1.0.2 || 2 || 3 || 4", "string-width@^4.0.0", "string-width@^4.1.0", "string-width@^4.2.0", "string-width@^4.2.2", "string-width@^4.2.3": - "integrity" "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==" - "resolved" "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" - "version" "4.2.3" +string-width@^3.0.0, string-width@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz" + integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== dependencies: - "emoji-regex" "^8.0.0" - "is-fullwidth-code-point" "^3.0.0" - "strip-ansi" "^6.0.1" + emoji-regex "^7.0.1" + is-fullwidth-code-point "^2.0.0" + strip-ansi "^5.1.0" -"string-width@^3.0.0", "string-width@^3.1.0": - "integrity" "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==" - "resolved" "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz" - "version" "3.1.0" +"string.prototype.matchall@^4.0.0 || ^3.0.1", string.prototype.matchall@^4.0.6, string.prototype.matchall@^4.0.8: + version "4.0.8" + resolved "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz" + integrity sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg== dependencies: - "emoji-regex" "^7.0.1" - "is-fullwidth-code-point" "^2.0.0" - "strip-ansi" "^5.1.0" + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + get-intrinsic "^1.1.3" + has-symbols "^1.0.3" + internal-slot "^1.0.3" + regexp.prototype.flags "^1.4.3" + side-channel "^1.0.4" -"string.prototype.matchall@^4.0.0 || ^3.0.1", "string.prototype.matchall@^4.0.6", "string.prototype.matchall@^4.0.8": - "integrity" "sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==" - "resolved" "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz" - "version" "4.0.8" +string.prototype.padend@^3.0.0: + version "3.1.4" + resolved "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.4.tgz" + integrity sha512-67otBXoksdjsnXXRUq+KMVTdlVRZ2af422Y0aTyTjVaoQkGr3mxl2Bc5emi7dOQ3OGVVQQskmLEWwFXwommpNw== dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.1.4" - "es-abstract" "^1.20.4" - "get-intrinsic" "^1.1.3" - "has-symbols" "^1.0.3" - "internal-slot" "^1.0.3" - "regexp.prototype.flags" "^1.4.3" - "side-channel" "^1.0.4" + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" -"string.prototype.padend@^3.0.0": - "integrity" "sha512-67otBXoksdjsnXXRUq+KMVTdlVRZ2af422Y0aTyTjVaoQkGr3mxl2Bc5emi7dOQ3OGVVQQskmLEWwFXwommpNw==" - "resolved" "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.4.tgz" - "version" "3.1.4" +string.prototype.padstart@^3.0.0: + version "3.1.4" + resolved "https://registry.npmjs.org/string.prototype.padstart/-/string.prototype.padstart-3.1.4.tgz" + integrity sha512-XqOHj8horGsF+zwxraBvMTkBFM28sS/jHBJajh17JtJKA92qazidiQbLosV4UA18azvLOVKYo/E3g3T9Y5826w== dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.1.4" - "es-abstract" "^1.20.4" + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" -"string.prototype.padstart@^3.0.0": - "integrity" "sha512-XqOHj8horGsF+zwxraBvMTkBFM28sS/jHBJajh17JtJKA92qazidiQbLosV4UA18azvLOVKYo/E3g3T9Y5826w==" - "resolved" "https://registry.npmjs.org/string.prototype.padstart/-/string.prototype.padstart-3.1.4.tgz" - "version" "3.1.4" +string.prototype.trim@^1.2.1: + version "1.2.7" + resolved "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz" + integrity sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg== dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.1.4" - "es-abstract" "^1.20.4" + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" -"string.prototype.trim@^1.2.1": - "integrity" "sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==" - "resolved" "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz" - "version" "1.2.7" +string.prototype.trimend@^1.0.5: + version "1.0.6" + resolved "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz" + integrity sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ== dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.1.4" - "es-abstract" "^1.20.4" + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" -"string.prototype.trimend@^1.0.5": - "integrity" "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==" - "resolved" "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz" - "version" "1.0.6" +string.prototype.trimstart@^1.0.5: + version "1.0.6" + resolved "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz" + integrity sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA== dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.1.4" - "es-abstract" "^1.20.4" + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" -"string.prototype.trimstart@^1.0.5": - "integrity" "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==" - "resolved" "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz" - "version" "1.0.6" +string_decoder@^1.0.0, string_decoder@^1.1.1, string_decoder@~1.1.1: + 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: - "call-bind" "^1.0.2" - "define-properties" "^1.1.4" - "es-abstract" "^1.20.4" + safe-buffer "~5.1.0" -"stringify-object@^3.3.0": - "integrity" "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==" - "resolved" "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz" - "version" "3.3.0" +stringify-object@^3.3.0: + version "3.3.0" + resolved "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz" + integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw== dependencies: - "get-own-enumerable-property-symbols" "^3.0.0" - "is-obj" "^1.0.1" - "is-regexp" "^1.0.0" + get-own-enumerable-property-symbols "^3.0.0" + is-obj "^1.0.1" + is-regexp "^1.0.0" -"strip-ansi@^3.0.0", "strip-ansi@^3.0.1": - "integrity" "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==" - "resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz" - "version" "3.0.1" +strip-ansi@6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz" + integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== dependencies: - "ansi-regex" "^2.0.0" + ansi-regex "^5.0.0" -"strip-ansi@^5.0.0", "strip-ansi@^5.1.0", "strip-ansi@^5.2.0": - "integrity" "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==" - "resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz" - "version" "5.2.0" +strip-ansi@^3.0.0, strip-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz" + integrity sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg== dependencies: - "ansi-regex" "^4.1.0" + ansi-regex "^2.0.0" -"strip-ansi@^6.0.0", "strip-ansi@^6.0.1": - "integrity" "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==" - "resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" - "version" "6.0.1" +strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: + version "5.2.0" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz" + integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== dependencies: - "ansi-regex" "^5.0.1" + ansi-regex "^4.1.0" -"strip-ansi@^7.0.1": - "integrity" "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==" - "resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz" - "version" "7.0.1" +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== dependencies: - "ansi-regex" "^6.0.1" + ansi-regex "^5.0.1" -"strip-ansi@6.0.0": - "integrity" "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==" - "resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz" - "version" "6.0.0" +strip-ansi@^7.0.1: + version "7.0.1" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz" + integrity sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw== dependencies: - "ansi-regex" "^5.0.0" + ansi-regex "^6.0.1" -"strip-bom@^2.0.0": - "integrity" "sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==" - "resolved" "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz" - "version" "2.0.0" +strip-bom@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz" + integrity sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g== dependencies: - "is-utf8" "^0.2.0" + is-utf8 "^0.2.0" -"strip-bom@^3.0.0": - "integrity" "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==" - "resolved" "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz" - "version" "3.0.0" +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz" + integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== -"strip-bom@^4.0.0": - "integrity" "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==" - "resolved" "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz" - "version" "4.0.0" +strip-bom@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz" + integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== -"strip-comments@^1.0.2": - "integrity" "sha512-kL97alc47hoyIQSV165tTt9rG5dn4w1dNnBhOQ3bOU1Nc1hel09jnXANaHJ7vzHLd4Ju8kseDGzlev96pghLFw==" - "resolved" "https://registry.npmjs.org/strip-comments/-/strip-comments-1.0.2.tgz" - "version" "1.0.2" +strip-comments@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/strip-comments/-/strip-comments-1.0.2.tgz" + integrity sha512-kL97alc47hoyIQSV165tTt9rG5dn4w1dNnBhOQ3bOU1Nc1hel09jnXANaHJ7vzHLd4Ju8kseDGzlev96pghLFw== dependencies: - "babel-extract-comments" "^1.0.0" - "babel-plugin-transform-object-rest-spread" "^6.26.0" + babel-extract-comments "^1.0.0" + babel-plugin-transform-object-rest-spread "^6.26.0" -"strip-comments@^2.0.1": - "integrity" "sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw==" - "resolved" "https://registry.npmjs.org/strip-comments/-/strip-comments-2.0.1.tgz" - "version" "2.0.1" +strip-comments@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/strip-comments/-/strip-comments-2.0.1.tgz" + integrity sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw== -"strip-eof@^1.0.0": - "integrity" "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==" - "resolved" "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz" - "version" "1.0.0" +strip-eof@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz" + integrity sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q== -"strip-final-newline@^2.0.0": - "integrity" "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==" - "resolved" "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz" - "version" "2.0.0" +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== -"strip-indent@^1.0.1": - "integrity" "sha512-I5iQq6aFMM62fBEAIB/hXzwJD6EEZ0xEGCX2t7oXqaKPIRgt4WruAQ285BISgdkP+HLGWyeGmNJcpIwFeRYRUA==" - "resolved" "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz" - "version" "1.0.1" +strip-indent@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz" + integrity sha512-I5iQq6aFMM62fBEAIB/hXzwJD6EEZ0xEGCX2t7oXqaKPIRgt4WruAQ285BISgdkP+HLGWyeGmNJcpIwFeRYRUA== dependencies: - "get-stdin" "^4.0.1" + get-stdin "^4.0.1" -"strip-indent@^3.0.0": - "integrity" "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==" - "resolved" "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz" - "version" "3.0.0" +strip-indent@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz" + integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== dependencies: - "min-indent" "^1.0.0" + min-indent "^1.0.0" -"strip-json-comments@^3.0.1", "strip-json-comments@^3.1.0", "strip-json-comments@^3.1.1": - "integrity" "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==" - "resolved" "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" - "version" "3.1.1" +strip-json-comments@^3.0.1, strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== -"strip-json-comments@~2.0.1": - "integrity" "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==" - "resolved" "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz" - "version" "2.0.1" +strip-json-comments@~2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz" + integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== -"style-loader@^1.3.0": - "integrity" "sha512-V7TCORko8rs9rIqkSrlMfkqA63DfoGBBJmK1kKGCcSi+BWb4cqz0SRsnp4l6rU5iwOEd0/2ePv68SV22VXon4Q==" - "resolved" "https://registry.npmjs.org/style-loader/-/style-loader-1.3.0.tgz" - "version" "1.3.0" +style-loader@0.23.1: + version "0.23.1" + resolved "https://registry.npmjs.org/style-loader/-/style-loader-0.23.1.tgz" + integrity sha512-XK+uv9kWwhZMZ1y7mysB+zoihsEj4wneFWAS5qoiLwzW0WzSqMrrsIy+a3zkQJq0ipFtBpX5W3MqyRIBF/WFGg== dependencies: - "loader-utils" "^2.0.0" - "schema-utils" "^2.7.0" + loader-utils "^1.1.0" + schema-utils "^1.0.0" -"style-loader@^2.0.0": - "integrity" "sha512-Z0gYUJmzZ6ZdRUqpg1r8GsaFKypE+3xAzuFeMuoHgjc9KZv3wMyCRjQIWEbhoFSq7+7yoHXySDJyyWQaPajeiQ==" - "resolved" "https://registry.npmjs.org/style-loader/-/style-loader-2.0.0.tgz" - "version" "2.0.0" +style-loader@^1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/style-loader/-/style-loader-1.3.0.tgz" + integrity sha512-V7TCORko8rs9rIqkSrlMfkqA63DfoGBBJmK1kKGCcSi+BWb4cqz0SRsnp4l6rU5iwOEd0/2ePv68SV22VXon4Q== dependencies: - "loader-utils" "^2.0.0" - "schema-utils" "^3.0.0" + loader-utils "^2.0.0" + schema-utils "^2.7.0" -"style-loader@^3.3.1": - "integrity" "sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ==" - "resolved" "https://registry.npmjs.org/style-loader/-/style-loader-3.3.1.tgz" - "version" "3.3.1" - -"style-loader@0.23.1": - "integrity" "sha512-XK+uv9kWwhZMZ1y7mysB+zoihsEj4wneFWAS5qoiLwzW0WzSqMrrsIy+a3zkQJq0ipFtBpX5W3MqyRIBF/WFGg==" - "resolved" "https://registry.npmjs.org/style-loader/-/style-loader-0.23.1.tgz" - "version" "0.23.1" +style-loader@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/style-loader/-/style-loader-2.0.0.tgz" + integrity sha512-Z0gYUJmzZ6ZdRUqpg1r8GsaFKypE+3xAzuFeMuoHgjc9KZv3wMyCRjQIWEbhoFSq7+7yoHXySDJyyWQaPajeiQ== dependencies: - "loader-utils" "^1.1.0" - "schema-utils" "^1.0.0" + loader-utils "^2.0.0" + schema-utils "^3.0.0" -"style-to-object@^0.3.0", "style-to-object@0.3.0": - "integrity" "sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA==" - "resolved" "https://registry.npmjs.org/style-to-object/-/style-to-object-0.3.0.tgz" - "version" "0.3.0" +style-loader@^3.3.1: + version "3.3.1" + resolved "https://registry.npmjs.org/style-loader/-/style-loader-3.3.1.tgz" + integrity sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ== + +style-to-object@0.3.0, style-to-object@^0.3.0: + version "0.3.0" + resolved "https://registry.npmjs.org/style-to-object/-/style-to-object-0.3.0.tgz" + integrity sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA== dependencies: - "inline-style-parser" "0.1.1" + inline-style-parser "0.1.1" -"stylehacks@^4.0.0": - "integrity" "sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==" - "resolved" "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz" - "version" "4.0.3" +stylehacks@^4.0.0: + version "4.0.3" + resolved "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz" + integrity sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g== dependencies: - "browserslist" "^4.0.0" - "postcss" "^7.0.0" - "postcss-selector-parser" "^3.0.0" + browserslist "^4.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" -"stylehacks@^5.1.1": - "integrity" "sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==" - "resolved" "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.1.tgz" - "version" "5.1.1" +stylehacks@^5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.1.tgz" + integrity sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw== dependencies: - "browserslist" "^4.21.4" - "postcss-selector-parser" "^6.0.4" + browserslist "^4.21.4" + postcss-selector-parser "^6.0.4" -"supports-color@^2.0.0": - "integrity" "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==" - "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" - "version" "2.0.0" +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" + integrity sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g== -"supports-color@^5.3.0": - "integrity" "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==" - "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" - "version" "5.5.0" +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== dependencies: - "has-flag" "^3.0.0" + has-flag "^3.0.0" -"supports-color@^6.1.0": - "integrity" "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==" - "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz" - "version" "6.1.0" +supports-color@^6.1.0: + version "6.1.0" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz" + integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== dependencies: - "has-flag" "^3.0.0" + has-flag "^3.0.0" -"supports-color@^7.0.0", "supports-color@^7.1.0": - "integrity" "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==" - "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" - "version" "7.2.0" +supports-color@^7.0.0, supports-color@^7.1.0: + 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" + has-flag "^4.0.0" -"supports-color@^8.0.0": - "integrity" "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==" - "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" - "version" "8.1.1" +supports-color@^8.0.0, supports-color@^8.1.0: + version "8.1.1" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== dependencies: - "has-flag" "^4.0.0" + has-flag "^4.0.0" -"supports-color@^8.1.0": - "integrity" "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==" - "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" - "version" "8.1.1" +supports-hyperlinks@^2.0.0: + version "2.3.0" + resolved "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz" + integrity sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA== dependencies: - "has-flag" "^4.0.0" + has-flag "^4.0.0" + supports-color "^7.0.0" -"supports-hyperlinks@^2.0.0": - "integrity" "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==" - "resolved" "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz" - "version" "2.3.0" +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +svg-parser@^2.0.0, svg-parser@^2.0.2: + version "2.0.4" + resolved "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz" + integrity sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ== + +svgo@^1.0.0, svgo@^1.2.2: + version "1.3.2" + resolved "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz" + integrity sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw== dependencies: - "has-flag" "^4.0.0" - "supports-color" "^7.0.0" + chalk "^2.4.1" + coa "^2.0.2" + css-select "^2.0.0" + css-select-base-adapter "^0.1.1" + css-tree "1.0.0-alpha.37" + csso "^4.0.2" + js-yaml "^3.13.1" + mkdirp "~0.5.1" + object.values "^1.1.0" + sax "~1.2.4" + stable "^0.1.8" + unquote "~1.1.1" + util.promisify "~1.0.0" -"supports-preserve-symlinks-flag@^1.0.0": - "integrity" "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" - "resolved" "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz" - "version" "1.0.0" - -"svg-parser@^2.0.0", "svg-parser@^2.0.2": - "integrity" "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==" - "resolved" "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz" - "version" "2.0.4" - -"svgo@^1.0.0", "svgo@^1.2.2": - "integrity" "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==" - "resolved" "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz" - "version" "1.3.2" - dependencies: - "chalk" "^2.4.1" - "coa" "^2.0.2" - "css-select" "^2.0.0" - "css-select-base-adapter" "^0.1.1" - "css-tree" "1.0.0-alpha.37" - "csso" "^4.0.2" - "js-yaml" "^3.13.1" - "mkdirp" "~0.5.1" - "object.values" "^1.1.0" - "sax" "~1.2.4" - "stable" "^0.1.8" - "unquote" "~1.1.1" - "util.promisify" "~1.0.0" - -"svgo@^2.7.0": - "integrity" "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==" - "resolved" "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz" - "version" "2.8.0" +svgo@^2.7.0: + version "2.8.0" + resolved "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz" + integrity sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg== dependencies: "@trysound/sax" "0.2.0" - "commander" "^7.2.0" - "css-select" "^4.1.3" - "css-tree" "^1.1.3" - "csso" "^4.2.0" - "picocolors" "^1.0.0" - "stable" "^0.1.8" + commander "^7.2.0" + css-select "^4.1.3" + css-tree "^1.1.3" + csso "^4.2.0" + picocolors "^1.0.0" + stable "^0.1.8" -"symbol-tree@^3.2.2", "symbol-tree@^3.2.4": - "integrity" "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==" - "resolved" "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz" - "version" "3.2.4" +symbol-tree@^3.2.2, symbol-tree@^3.2.4: + version "3.2.4" + resolved "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz" + integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== -"symbol.prototype.description@^1.0.0": - "integrity" "sha512-x738iXRYsrAt9WBhRCVG5BtIC3B7CUkFwbHW2zOvGtwM33s7JjrCDyq8V0zgMYVb5ymsL8+qkzzpANH63CPQaQ==" - "resolved" "https://registry.npmjs.org/symbol.prototype.description/-/symbol.prototype.description-1.0.5.tgz" - "version" "1.0.5" +symbol.prototype.description@^1.0.0: + version "1.0.5" + resolved "https://registry.npmjs.org/symbol.prototype.description/-/symbol.prototype.description-1.0.5.tgz" + integrity sha512-x738iXRYsrAt9WBhRCVG5BtIC3B7CUkFwbHW2zOvGtwM33s7JjrCDyq8V0zgMYVb5ymsL8+qkzzpANH63CPQaQ== dependencies: - "call-bind" "^1.0.2" - "get-symbol-description" "^1.0.0" - "has-symbols" "^1.0.2" - "object.getownpropertydescriptors" "^2.1.2" + call-bind "^1.0.2" + get-symbol-description "^1.0.0" + has-symbols "^1.0.2" + object.getownpropertydescriptors "^2.1.2" -"synchronous-promise@^2.0.15": - "integrity" "sha512-AsS729u2RHUfEra9xJrE39peJcc2stq2+poBXX8bcM08Y6g9j/i/PUzwNQqkaJde7Ntg1TO7bSREbR5sdosQ+g==" - "resolved" "https://registry.npmjs.org/synchronous-promise/-/synchronous-promise-2.0.17.tgz" - "version" "2.0.17" +synchronous-promise@^2.0.15: + version "2.0.17" + resolved "https://registry.npmjs.org/synchronous-promise/-/synchronous-promise-2.0.17.tgz" + integrity sha512-AsS729u2RHUfEra9xJrE39peJcc2stq2+poBXX8bcM08Y6g9j/i/PUzwNQqkaJde7Ntg1TO7bSREbR5sdosQ+g== -"synthetic-dom@^1.4.0": - "integrity" "sha512-mHv51ZsmZ+ShT/4s5kg+MGUIhY7Ltq4v03xpN1c8T1Krb5pScsh/lzEjyhrVD0soVDbThbd2e+4dD9vnDG4rhg==" - "resolved" "https://registry.npmjs.org/synthetic-dom/-/synthetic-dom-1.4.0.tgz" - "version" "1.4.0" +synthetic-dom@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/synthetic-dom/-/synthetic-dom-1.4.0.tgz" + integrity sha512-mHv51ZsmZ+ShT/4s5kg+MGUIhY7Ltq4v03xpN1c8T1Krb5pScsh/lzEjyhrVD0soVDbThbd2e+4dD9vnDG4rhg== -"tailwindcss@*", "tailwindcss@^3.0.2", "tailwindcss@^3.1.2", "tailwindcss@>=3.0.0 || >= 3.0.0-alpha.1": - "integrity" "sha512-AhwtHCKMtR71JgeYDaswmZXhPcW9iuI9Sp2LvZPo9upDZ7231ZJ7eA9RaURbhpXGVlrjX4cFNlB4ieTetEb7hQ==" - "resolved" "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.2.4.tgz" - "version" "3.2.4" +tailwindcss@*, tailwindcss@^3.0.2, tailwindcss@^3.1.2: + version "3.2.4" + resolved "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.2.4.tgz" + integrity sha512-AhwtHCKMtR71JgeYDaswmZXhPcW9iuI9Sp2LvZPo9upDZ7231ZJ7eA9RaURbhpXGVlrjX4cFNlB4ieTetEb7hQ== dependencies: - "arg" "^5.0.2" - "chokidar" "^3.5.3" - "color-name" "^1.1.4" - "detective" "^5.2.1" - "didyoumean" "^1.2.2" - "dlv" "^1.1.3" - "fast-glob" "^3.2.12" - "glob-parent" "^6.0.2" - "is-glob" "^4.0.3" - "lilconfig" "^2.0.6" - "micromatch" "^4.0.5" - "normalize-path" "^3.0.0" - "object-hash" "^3.0.0" - "picocolors" "^1.0.0" - "postcss" "^8.4.18" - "postcss-import" "^14.1.0" - "postcss-js" "^4.0.0" - "postcss-load-config" "^3.1.4" - "postcss-nested" "6.0.0" - "postcss-selector-parser" "^6.0.10" - "postcss-value-parser" "^4.2.0" - "quick-lru" "^5.1.1" - "resolve" "^1.22.1" + arg "^5.0.2" + chokidar "^3.5.3" + color-name "^1.1.4" + detective "^5.2.1" + didyoumean "^1.2.2" + dlv "^1.1.3" + fast-glob "^3.2.12" + glob-parent "^6.0.2" + is-glob "^4.0.3" + lilconfig "^2.0.6" + micromatch "^4.0.5" + normalize-path "^3.0.0" + object-hash "^3.0.0" + picocolors "^1.0.0" + postcss "^8.4.18" + postcss-import "^14.1.0" + postcss-js "^4.0.0" + postcss-load-config "^3.1.4" + postcss-nested "6.0.0" + postcss-selector-parser "^6.0.10" + postcss-value-parser "^4.2.0" + quick-lru "^5.1.1" + resolve "^1.22.1" -"tapable@^1.0.0", "tapable@^1.1.3": - "integrity" "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==" - "resolved" "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz" - "version" "1.1.3" +tapable@^1.0.0, tapable@^1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz" + integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== -"tapable@^2.0.0": - "integrity" "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==" - "resolved" "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz" - "version" "2.2.1" +tapable@^2.0.0, tapable@^2.1.1, tapable@^2.2.0: + version "2.2.1" + resolved "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz" + integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== -"tapable@^2.1.1": - "integrity" "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==" - "resolved" "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz" - "version" "2.2.1" - -"tapable@^2.2.0": - "integrity" "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==" - "resolved" "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz" - "version" "2.2.1" - -"tar@^6.0.2": - "integrity" "sha512-jU4TdemS31uABHd+Lt5WEYJuzn+TJTCBLljvIAHZOz6M9Os5pJ4dD+vRFLxPa/n3T0iEFzpi+0x1UfuDZYbRMw==" - "resolved" "https://registry.npmjs.org/tar/-/tar-6.1.12.tgz" - "version" "6.1.12" +tar@^6.0.2: + version "6.1.12" + resolved "https://registry.npmjs.org/tar/-/tar-6.1.12.tgz" + integrity sha512-jU4TdemS31uABHd+Lt5WEYJuzn+TJTCBLljvIAHZOz6M9Os5pJ4dD+vRFLxPa/n3T0iEFzpi+0x1UfuDZYbRMw== 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" + 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" -"telejson@^6.0.8": - "integrity" "sha512-nerNXi+j8NK1QEfBHtZUN/aLdDcyupA//9kAboYLrtzZlPLpUfqbVGWb9zz91f/mIjRbAYhbgtnJHY8I1b5MBg==" - "resolved" "https://registry.npmjs.org/telejson/-/telejson-6.0.8.tgz" - "version" "6.0.8" +telejson@^6.0.8: + version "6.0.8" + resolved "https://registry.npmjs.org/telejson/-/telejson-6.0.8.tgz" + integrity sha512-nerNXi+j8NK1QEfBHtZUN/aLdDcyupA//9kAboYLrtzZlPLpUfqbVGWb9zz91f/mIjRbAYhbgtnJHY8I1b5MBg== dependencies: "@types/is-function" "^1.0.0" - "global" "^4.4.0" - "is-function" "^1.0.2" - "is-regex" "^1.1.2" - "is-symbol" "^1.0.3" - "isobject" "^4.0.0" - "lodash" "^4.17.21" - "memoizerific" "^1.11.3" + global "^4.4.0" + is-function "^1.0.2" + is-regex "^1.1.2" + is-symbol "^1.0.3" + isobject "^4.0.0" + lodash "^4.17.21" + memoizerific "^1.11.3" -"temp-dir@^2.0.0": - "integrity" "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==" - "resolved" "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz" - "version" "2.0.0" +temp-dir@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz" + integrity sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg== -"temp@^0.8.4": - "integrity" "sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg==" - "resolved" "https://registry.npmjs.org/temp/-/temp-0.8.4.tgz" - "version" "0.8.4" +temp@^0.8.4: + version "0.8.4" + resolved "https://registry.npmjs.org/temp/-/temp-0.8.4.tgz" + integrity sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg== dependencies: - "rimraf" "~2.6.2" + rimraf "~2.6.2" -"tempy@^0.6.0": - "integrity" "sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw==" - "resolved" "https://registry.npmjs.org/tempy/-/tempy-0.6.0.tgz" - "version" "0.6.0" +tempy@^0.6.0: + version "0.6.0" + resolved "https://registry.npmjs.org/tempy/-/tempy-0.6.0.tgz" + integrity sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw== dependencies: - "is-stream" "^2.0.0" - "temp-dir" "^2.0.0" - "type-fest" "^0.16.0" - "unique-string" "^2.0.0" + is-stream "^2.0.0" + temp-dir "^2.0.0" + type-fest "^0.16.0" + unique-string "^2.0.0" -"terminal-link@^2.0.0": - "integrity" "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==" - "resolved" "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz" - "version" "2.1.1" +terminal-link@^2.0.0: + version "2.1.1" + resolved "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz" + integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ== dependencies: - "ansi-escapes" "^4.2.1" - "supports-hyperlinks" "^2.0.0" + ansi-escapes "^4.2.1" + supports-hyperlinks "^2.0.0" -"terser-webpack-plugin@^1.4.3": - "integrity" "sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==" - "resolved" "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz" - "version" "1.4.5" +terser-webpack-plugin@3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-3.1.0.tgz" + integrity sha512-cjdZte66fYkZ65rQ2oJfrdCAkkhJA7YLYk5eGOcGCSGlq0ieZupRdjedSQXYknMPo2IveQL+tPdrxUkERENCFA== dependencies: - "cacache" "^12.0.2" - "find-cache-dir" "^2.1.0" - "is-wsl" "^1.1.0" - "schema-utils" "^1.0.0" - "serialize-javascript" "^4.0.0" - "source-map" "^0.6.1" - "terser" "^4.1.2" - "webpack-sources" "^1.4.0" - "worker-farm" "^1.7.0" + cacache "^15.0.5" + find-cache-dir "^3.3.1" + jest-worker "^26.2.1" + p-limit "^3.0.2" + schema-utils "^2.6.6" + serialize-javascript "^4.0.0" + source-map "^0.6.1" + terser "^4.8.0" + webpack-sources "^1.4.3" -"terser-webpack-plugin@^4.2.3": - "integrity" "sha512-jTgXh40RnvOrLQNgIkwEKnQ8rmHjHK4u+6UBEi+W+FPmvb+uo+chJXntKe7/3lW5mNysgSWD60KyesnhW8D6MQ==" - "resolved" "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-4.2.3.tgz" - "version" "4.2.3" +terser-webpack-plugin@^1.4.3: + version "1.4.5" + resolved "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz" + integrity sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw== dependencies: - "cacache" "^15.0.5" - "find-cache-dir" "^3.3.1" - "jest-worker" "^26.5.0" - "p-limit" "^3.0.2" - "schema-utils" "^3.0.0" - "serialize-javascript" "^5.0.1" - "source-map" "^0.6.1" - "terser" "^5.3.4" - "webpack-sources" "^1.4.3" + cacache "^12.0.2" + find-cache-dir "^2.1.0" + is-wsl "^1.1.0" + schema-utils "^1.0.0" + serialize-javascript "^4.0.0" + source-map "^0.6.1" + terser "^4.1.2" + webpack-sources "^1.4.0" + worker-farm "^1.7.0" -"terser-webpack-plugin@^5.0.3": - "integrity" "sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==" - "resolved" "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz" - "version" "5.3.6" +terser-webpack-plugin@^4.2.3: + version "4.2.3" + resolved "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-4.2.3.tgz" + integrity sha512-jTgXh40RnvOrLQNgIkwEKnQ8rmHjHK4u+6UBEi+W+FPmvb+uo+chJXntKe7/3lW5mNysgSWD60KyesnhW8D6MQ== + dependencies: + cacache "^15.0.5" + find-cache-dir "^3.3.1" + jest-worker "^26.5.0" + p-limit "^3.0.2" + schema-utils "^3.0.0" + serialize-javascript "^5.0.1" + source-map "^0.6.1" + terser "^5.3.4" + webpack-sources "^1.4.3" + +terser-webpack-plugin@^5.0.3, terser-webpack-plugin@^5.1.3, terser-webpack-plugin@^5.2.5: + version "5.3.6" + resolved "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz" + integrity sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ== dependencies: "@jridgewell/trace-mapping" "^0.3.14" - "jest-worker" "^27.4.5" - "schema-utils" "^3.1.1" - "serialize-javascript" "^6.0.0" - "terser" "^5.14.1" + jest-worker "^27.4.5" + schema-utils "^3.1.1" + serialize-javascript "^6.0.0" + terser "^5.14.1" -"terser-webpack-plugin@^5.1.3": - "integrity" "sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==" - "resolved" "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz" - "version" "5.3.6" +terser@^4.1.2, terser@^4.6.3, terser@^4.8.0: + version "4.8.1" + resolved "https://registry.npmjs.org/terser/-/terser-4.8.1.tgz" + integrity sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw== dependencies: - "@jridgewell/trace-mapping" "^0.3.14" - "jest-worker" "^27.4.5" - "schema-utils" "^3.1.1" - "serialize-javascript" "^6.0.0" - "terser" "^5.14.1" + commander "^2.20.0" + source-map "~0.6.1" + source-map-support "~0.5.12" -"terser-webpack-plugin@^5.2.5": - "integrity" "sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==" - "resolved" "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz" - "version" "5.3.6" - dependencies: - "@jridgewell/trace-mapping" "^0.3.14" - "jest-worker" "^27.4.5" - "schema-utils" "^3.1.1" - "serialize-javascript" "^6.0.0" - "terser" "^5.14.1" - -"terser-webpack-plugin@3.1.0": - "integrity" "sha512-cjdZte66fYkZ65rQ2oJfrdCAkkhJA7YLYk5eGOcGCSGlq0ieZupRdjedSQXYknMPo2IveQL+tPdrxUkERENCFA==" - "resolved" "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-3.1.0.tgz" - "version" "3.1.0" - dependencies: - "cacache" "^15.0.5" - "find-cache-dir" "^3.3.1" - "jest-worker" "^26.2.1" - "p-limit" "^3.0.2" - "schema-utils" "^2.6.6" - "serialize-javascript" "^4.0.0" - "source-map" "^0.6.1" - "terser" "^4.8.0" - "webpack-sources" "^1.4.3" - -"terser@^4.1.2", "terser@^4.6.3", "terser@^4.8.0": - "integrity" "sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==" - "resolved" "https://registry.npmjs.org/terser/-/terser-4.8.1.tgz" - "version" "4.8.1" - dependencies: - "commander" "^2.20.0" - "source-map" "~0.6.1" - "source-map-support" "~0.5.12" - -"terser@^5.0.0": - "integrity" "sha512-K1faMUvpm/FBxjBXud0LWVAGxmvoPbZbfTCYbSgaaYQaIXI3/TdI7a7ZGA73Zrou6Q8Zmz3oeUTsp/dj+ag2Xw==" - "resolved" "https://registry.npmjs.org/terser/-/terser-5.15.1.tgz" - "version" "5.15.1" +terser@^5.0.0, terser@^5.10.0, terser@^5.14.1: + version "5.15.1" + resolved "https://registry.npmjs.org/terser/-/terser-5.15.1.tgz" + integrity sha512-K1faMUvpm/FBxjBXud0LWVAGxmvoPbZbfTCYbSgaaYQaIXI3/TdI7a7ZGA73Zrou6Q8Zmz3oeUTsp/dj+ag2Xw== dependencies: "@jridgewell/source-map" "^0.3.2" - "acorn" "^8.5.0" - "commander" "^2.20.0" - "source-map-support" "~0.5.20" + acorn "^8.5.0" + commander "^2.20.0" + source-map-support "~0.5.20" -"terser@^5.10.0", "terser@^5.14.1": - "integrity" "sha512-K1faMUvpm/FBxjBXud0LWVAGxmvoPbZbfTCYbSgaaYQaIXI3/TdI7a7ZGA73Zrou6Q8Zmz3oeUTsp/dj+ag2Xw==" - "resolved" "https://registry.npmjs.org/terser/-/terser-5.15.1.tgz" - "version" "5.15.1" +terser@^5.3.4: + version "5.16.3" + resolved "https://registry.npmjs.org/terser/-/terser-5.16.3.tgz" + integrity sha512-v8wWLaS/xt3nE9dgKEWhNUFP6q4kngO5B8eYFUuebsu7Dw/UNAnpUod6UHo04jSSkv8TzKHjZDSd7EXdDQAl8Q== dependencies: "@jridgewell/source-map" "^0.3.2" - "acorn" "^8.5.0" - "commander" "^2.20.0" - "source-map-support" "~0.5.20" + acorn "^8.5.0" + commander "^2.20.0" + source-map-support "~0.5.20" -"terser@^5.3.4": - "integrity" "sha512-v8wWLaS/xt3nE9dgKEWhNUFP6q4kngO5B8eYFUuebsu7Dw/UNAnpUod6UHo04jSSkv8TzKHjZDSd7EXdDQAl8Q==" - "resolved" "https://registry.npmjs.org/terser/-/terser-5.16.3.tgz" - "version" "5.16.3" +test-exclude@^5.2.3: + version "5.2.3" + resolved "https://registry.npmjs.org/test-exclude/-/test-exclude-5.2.3.tgz" + integrity sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g== dependencies: - "@jridgewell/source-map" "^0.3.2" - "acorn" "^8.5.0" - "commander" "^2.20.0" - "source-map-support" "~0.5.20" + glob "^7.1.3" + minimatch "^3.0.4" + read-pkg-up "^4.0.0" + require-main-filename "^2.0.0" -"test-exclude@^5.2.3": - "integrity" "sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g==" - "resolved" "https://registry.npmjs.org/test-exclude/-/test-exclude-5.2.3.tgz" - "version" "5.2.3" - dependencies: - "glob" "^7.1.3" - "minimatch" "^3.0.4" - "read-pkg-up" "^4.0.0" - "require-main-filename" "^2.0.0" - -"test-exclude@^6.0.0": - "integrity" "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==" - "resolved" "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz" - "version" "6.0.0" +test-exclude@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz" + integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== dependencies: "@istanbuljs/schema" "^0.1.2" - "glob" "^7.1.4" - "minimatch" "^3.0.4" + glob "^7.1.4" + minimatch "^3.0.4" -"text-table@^0.2.0", "text-table@0.2.0": - "integrity" "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==" - "resolved" "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" - "version" "0.2.0" +text-table@0.2.0, text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" + integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== -"throat@^6.0.1": - "integrity" "sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w==" - "resolved" "https://registry.npmjs.org/throat/-/throat-6.0.1.tgz" - "version" "6.0.1" +throat@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/throat/-/throat-6.0.1.tgz" + integrity sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w== -"through2@^2.0.0": - "integrity" "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==" - "resolved" "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz" - "version" "2.0.5" +through2@^2.0.0: + version "2.0.5" + resolved "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz" + integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== dependencies: - "readable-stream" "~2.3.6" - "xtend" "~4.0.1" + readable-stream "~2.3.6" + xtend "~4.0.1" -"thunky@^1.0.2": - "integrity" "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==" - "resolved" "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz" - "version" "1.1.0" +thunky@^1.0.2: + version "1.1.0" + resolved "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz" + integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== -"timers-browserify@^2.0.4": - "integrity" "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==" - "resolved" "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz" - "version" "2.0.12" +timers-browserify@^2.0.4: + version "2.0.12" + resolved "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz" + integrity sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ== dependencies: - "setimmediate" "^1.0.4" + setimmediate "^1.0.4" -"timsort@^0.3.0": - "integrity" "sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A==" - "resolved" "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz" - "version" "0.3.0" +timsort@^0.3.0: + version "0.3.0" + resolved "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz" + integrity sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A== -"tiny-invariant@^1.0.2", "tiny-invariant@^1.0.3", "tiny-invariant@^1.0.6": - "integrity" "sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==" - "resolved" "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.1.tgz" - "version" "1.3.1" +tiny-invariant@^1.0.2, tiny-invariant@^1.0.3, tiny-invariant@^1.0.6: + version "1.3.1" + resolved "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.1.tgz" + integrity sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw== -"tiny-warning@^1.0.0", "tiny-warning@^1.0.2": - "integrity" "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==" - "resolved" "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz" - "version" "1.0.3" +tiny-warning@^1.0.0, tiny-warning@^1.0.2: + version "1.0.3" + resolved "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz" + integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA== -"tmpl@1.0.5": - "integrity" "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==" - "resolved" "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz" - "version" "1.0.5" +tmpl@1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz" + integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== -"to-array@0.1.4": - "integrity" "sha512-LhVdShQD/4Mk4zXNroIQZJC+Ap3zgLcDuwEdcmLv9CCO73NWockQDwyUnW/m8VX/EElfL6FcYx7EeutN4HJA6A==" - "resolved" "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz" - "version" "0.1.4" +to-array@0.1.4: + version "0.1.4" + resolved "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz" + integrity sha512-LhVdShQD/4Mk4zXNroIQZJC+Ap3zgLcDuwEdcmLv9CCO73NWockQDwyUnW/m8VX/EElfL6FcYx7EeutN4HJA6A== -"to-arraybuffer@^1.0.0": - "integrity" "sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA==" - "resolved" "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz" - "version" "1.0.1" +to-arraybuffer@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz" + integrity sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA== -"to-fast-properties@^1.0.3": - "integrity" "sha512-lxrWP8ejsq+7E3nNjwYmUBMAgjMTZoTI+sdBOpvNyijeDLa29LUn9QaoXAHv4+Z578hbmHHJKZknzxVtvo77og==" - "resolved" "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz" - "version" "1.0.3" +to-fast-properties@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz" + integrity sha512-lxrWP8ejsq+7E3nNjwYmUBMAgjMTZoTI+sdBOpvNyijeDLa29LUn9QaoXAHv4+Z578hbmHHJKZknzxVtvo77og== -"to-fast-properties@^2.0.0": - "integrity" "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==" - "resolved" "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz" - "version" "2.0.0" +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz" + integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== -"to-object-path@^0.3.0": - "integrity" "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==" - "resolved" "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz" - "version" "0.3.0" +to-object-path@^0.3.0: + version "0.3.0" + resolved "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz" + integrity sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg== dependencies: - "kind-of" "^3.0.2" + kind-of "^3.0.2" -"to-readable-stream@^1.0.0": - "integrity" "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==" - "resolved" "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz" - "version" "1.0.0" +to-readable-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz" + integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q== -"to-regex-range@^2.1.0": - "integrity" "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==" - "resolved" "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz" - "version" "2.1.1" +to-regex-range@^2.1.0: + version "2.1.1" + resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz" + integrity sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg== dependencies: - "is-number" "^3.0.0" - "repeat-string" "^1.6.1" + is-number "^3.0.0" + repeat-string "^1.6.1" -"to-regex-range@^5.0.1": - "integrity" "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==" - "resolved" "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" - "version" "5.0.1" +to-regex-range@^5.0.1: + 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== dependencies: - "is-number" "^7.0.0" + is-number "^7.0.0" -"to-regex@^3.0.1", "to-regex@^3.0.2": - "integrity" "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==" - "resolved" "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz" - "version" "3.0.2" +to-regex@^3.0.1, to-regex@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz" + integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== dependencies: - "define-property" "^2.0.2" - "extend-shallow" "^3.0.2" - "regex-not" "^1.0.2" - "safe-regex" "^1.1.0" + define-property "^2.0.2" + extend-shallow "^3.0.2" + regex-not "^1.0.2" + safe-regex "^1.1.0" -"toggle-selection@^1.0.6": - "integrity" "sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==" - "resolved" "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz" - "version" "1.0.6" +toggle-selection@^1.0.6: + version "1.0.6" + resolved "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz" + integrity sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ== -"toidentifier@1.0.1": - "integrity" "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" - "resolved" "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz" - "version" "1.0.1" +toidentifier@1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz" + integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== -"tough-cookie@^2.3.3", "tough-cookie@^2.5.0", "tough-cookie@~2.5.0": - "integrity" "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==" - "resolved" "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz" - "version" "2.5.0" +tough-cookie@^2.3.3, tough-cookie@^2.5.0, tough-cookie@~2.5.0: + version "2.5.0" + resolved "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz" + integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== dependencies: - "psl" "^1.1.28" - "punycode" "^2.1.1" + psl "^1.1.28" + punycode "^2.1.1" -"tough-cookie@^4.0.0": - "integrity" "sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==" - "resolved" "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.2.tgz" - "version" "4.1.2" +tough-cookie@^4.0.0: + version "4.1.2" + resolved "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.2.tgz" + integrity sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ== dependencies: - "psl" "^1.1.33" - "punycode" "^2.1.1" - "universalify" "^0.2.0" - "url-parse" "^1.5.3" + psl "^1.1.33" + punycode "^2.1.1" + universalify "^0.2.0" + url-parse "^1.5.3" -"tr46@^1.0.1": - "integrity" "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==" - "resolved" "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz" - "version" "1.0.1" +tr46@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz" + integrity sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA== dependencies: - "punycode" "^2.1.0" + punycode "^2.1.0" -"tr46@^2.1.0": - "integrity" "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==" - "resolved" "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz" - "version" "2.1.0" +tr46@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz" + integrity sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw== dependencies: - "punycode" "^2.1.1" + punycode "^2.1.1" -"tr46@~0.0.3": - "integrity" "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - "resolved" "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz" - "version" "0.0.3" +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz" + integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== -"tree-kill@^1.2.2": - "integrity" "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==" - "resolved" "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz" - "version" "1.2.2" +tree-kill@^1.2.2: + version "1.2.2" + resolved "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz" + integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== -"trim-newlines@^1.0.0": - "integrity" "sha512-Nm4cF79FhSTzrLKGDMi3I4utBtFv8qKy4sq1enftf2gMdpqI8oVQTAfySkTz5r49giVzDj88SVZXP4CeYQwjaw==" - "resolved" "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz" - "version" "1.0.0" +trim-newlines@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz" + integrity sha512-Nm4cF79FhSTzrLKGDMi3I4utBtFv8qKy4sq1enftf2gMdpqI8oVQTAfySkTz5r49giVzDj88SVZXP4CeYQwjaw== -"trim-right@^1.0.1": - "integrity" "sha512-WZGXGstmCWgeevgTL54hrCuw1dyMQIzWy7ZfqRJfSmJZBwklI15egmQytFP6bPidmw3M8d5yEowl1niq4vmqZw==" - "resolved" "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz" - "version" "1.0.1" +trim-right@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz" + integrity sha512-WZGXGstmCWgeevgTL54hrCuw1dyMQIzWy7ZfqRJfSmJZBwklI15egmQytFP6bPidmw3M8d5yEowl1niq4vmqZw== -"trim-trailing-lines@^1.0.0": - "integrity" "sha512-rjUWSqnfTNrjbB9NQWfPMH/xRK1deHeGsHoVfpxJ++XeYXE0d6B1En37AHfw3jtfTU7dzMzZL2jjpe8Qb5gLIQ==" - "resolved" "https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-1.1.4.tgz" - "version" "1.1.4" +trim-trailing-lines@^1.0.0: + version "1.1.4" + resolved "https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-1.1.4.tgz" + integrity sha512-rjUWSqnfTNrjbB9NQWfPMH/xRK1deHeGsHoVfpxJ++XeYXE0d6B1En37AHfw3jtfTU7dzMzZL2jjpe8Qb5gLIQ== -"trim@0.0.1": - "integrity" "sha512-YzQV+TZg4AxpKxaTHK3c3D+kRDCGVEE7LemdlQZoQXn0iennk10RsIoY6ikzAqJTc9Xjl9C1/waHom/J86ziAQ==" - "resolved" "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz" - "version" "0.0.1" +trim@0.0.1: + version "0.0.1" + resolved "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz" + integrity sha512-YzQV+TZg4AxpKxaTHK3c3D+kRDCGVEE7LemdlQZoQXn0iennk10RsIoY6ikzAqJTc9Xjl9C1/waHom/J86ziAQ== -"trough@^1.0.0": - "integrity" "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==" - "resolved" "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz" - "version" "1.0.5" +trough@^1.0.0: + version "1.0.5" + resolved "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz" + integrity sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA== -"tryer@^1.0.1": - "integrity" "sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==" - "resolved" "https://registry.npmjs.org/tryer/-/tryer-1.0.1.tgz" - "version" "1.0.1" +tryer@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/tryer/-/tryer-1.0.1.tgz" + integrity sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA== -"ts-dedent@^2.0.0", "ts-dedent@^2.2.0": - "integrity" "sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==" - "resolved" "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.2.0.tgz" - "version" "2.2.0" +ts-dedent@^2.0.0, ts-dedent@^2.2.0: + version "2.2.0" + resolved "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.2.0.tgz" + integrity sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ== -"ts-node@^10.7.0", "ts-node@>=9.0.0": - "integrity" "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==" - "resolved" "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz" - "version" "10.9.1" +ts-node@^10.7.0: + version "10.9.1" + resolved "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz" + 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" + 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" -"ts-pnp@^1.1.6", "ts-pnp@1.2.0": - "integrity" "sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==" - "resolved" "https://registry.npmjs.org/ts-pnp/-/ts-pnp-1.2.0.tgz" - "version" "1.2.0" +ts-pnp@1.2.0, ts-pnp@^1.1.6: + version "1.2.0" + resolved "https://registry.npmjs.org/ts-pnp/-/ts-pnp-1.2.0.tgz" + integrity sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw== -"tsconfig-paths@^3.14.1", "tsconfig-paths@^3.9.0": - "integrity" "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==" - "resolved" "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz" - "version" "3.14.1" +tsconfig-paths@^3.14.1, tsconfig-paths@^3.9.0: + version "3.14.1" + resolved "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz" + integrity sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ== dependencies: "@types/json5" "^0.0.29" - "json5" "^1.0.1" - "minimist" "^1.2.6" - "strip-bom" "^3.0.0" + json5 "^1.0.1" + minimist "^1.2.6" + strip-bom "^3.0.0" -"tslib@^1.8.1", "tslib@^1.9.3": - "integrity" "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - "resolved" "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" - "version" "1.14.1" +tslib@^1.8.1, tslib@^1.9.3: + version "1.14.1" + resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -"tslib@^2.0.0": - "integrity" "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" - "resolved" "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz" - "version" "2.4.1" +tslib@^2.0.0, tslib@^2.0.1, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.0: + version "2.4.1" + resolved "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz" + integrity sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA== -"tslib@^2.0.1": - "integrity" "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" - "resolved" "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz" - "version" "2.4.1" - -"tslib@^2.0.3": - "integrity" "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" - "resolved" "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz" - "version" "2.4.1" - -"tslib@^2.1.0": - "integrity" "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" - "resolved" "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz" - "version" "2.4.1" - -"tslib@^2.3.0": - "integrity" "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" - "resolved" "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz" - "version" "2.4.1" - -"tsutils@^3.21.0": - "integrity" "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==" - "resolved" "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz" - "version" "3.21.0" +tsutils@^3.21.0: + version "3.21.0" + resolved "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz" + integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== dependencies: - "tslib" "^1.8.1" + tslib "^1.8.1" -"tty-browserify@0.0.0": - "integrity" "sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw==" - "resolved" "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz" - "version" "0.0.0" +tty-browserify@0.0.0: + version "0.0.0" + resolved "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz" + integrity sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw== -"tunnel-agent@^0.6.0": - "integrity" "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==" - "resolved" "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz" - "version" "0.6.0" +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz" + integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== dependencies: - "safe-buffer" "^5.0.1" + safe-buffer "^5.0.1" -"tweetnacl@^0.14.3", "tweetnacl@~0.14.0": - "integrity" "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==" - "resolved" "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz" - "version" "0.14.5" +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz" + integrity sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA== -"type-check@^0.4.0", "type-check@~0.4.0": - "integrity" "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==" - "resolved" "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz" - "version" "0.4.0" +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== dependencies: - "prelude-ls" "^1.2.1" + prelude-ls "^1.2.1" -"type-check@~0.3.2": - "integrity" "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==" - "resolved" "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz" - "version" "0.3.2" +type-check@~0.3.2: + version "0.3.2" + resolved "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz" + integrity sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg== dependencies: - "prelude-ls" "~1.1.2" + prelude-ls "~1.1.2" -"type-detect@4.0.8": - "integrity" "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==" - "resolved" "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz" - "version" "4.0.8" +type-detect@4.0.8: + version "4.0.8" + resolved "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== -"type-fest@^0.13.1", "type-fest@^0.20.2", "type-fest@>=0.17.0 <4.0.0": - "integrity" "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==" - "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz" - "version" "0.20.2" +type-fest@^0.16.0: + version "0.16.0" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz" + integrity sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg== -"type-fest@^0.16.0": - "integrity" "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==" - "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz" - "version" "0.16.0" +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== -"type-fest@^0.21.3": - "integrity" "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==" - "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz" - "version" "0.21.3" +type-fest@^0.21.3: + version "0.21.3" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz" + integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== -"type-fest@^0.6.0": - "integrity" "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==" - "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz" - "version" "0.6.0" +type-fest@^0.6.0: + version "0.6.0" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz" + integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== -"type-fest@^0.8.1": - "integrity" "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==" - "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz" - "version" "0.8.1" +type-fest@^0.8.1: + version "0.8.1" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz" + integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== -"type-is@~1.6.18": - "integrity" "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==" - "resolved" "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz" - "version" "1.6.18" +type-is@~1.6.18: + 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" + media-typer "0.3.0" + mime-types "~2.1.24" -"type@^1.0.1": - "integrity" "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" - "resolved" "https://registry.npmjs.org/type/-/type-1.2.0.tgz" - "version" "1.2.0" +type@^1.0.1: + version "1.2.0" + resolved "https://registry.npmjs.org/type/-/type-1.2.0.tgz" + integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== -"type@^2.7.2": - "integrity" "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==" - "resolved" "https://registry.npmjs.org/type/-/type-2.7.2.tgz" - "version" "2.7.2" +type@^2.7.2: + version "2.7.2" + resolved "https://registry.npmjs.org/type/-/type-2.7.2.tgz" + integrity sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw== -"typedarray-to-buffer@^3.1.5": - "integrity" "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==" - "resolved" "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz" - "version" "3.1.5" +typedarray-to-buffer@^3.1.5: + version "3.1.5" + resolved "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz" + integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== dependencies: - "is-typedarray" "^1.0.0" + is-typedarray "^1.0.0" -"typedarray@^0.0.6": - "integrity" "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" - "resolved" "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz" - "version" "0.0.6" +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz" + integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== -"typescript@^3.2.1 || ^4", "typescript@^4.9.3", "typescript@>= 2.7", "typescript@>= 3.x", "typescript@>= 4.3.x", "typescript@>= 4.x", "typescript@>=2.7", "typescript@>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta", "typescript@>=3": - "integrity" "sha512-CIfGzTelbKNEnLpLdGFgdyKhG23CKdKgQPOBc+OUNrkJ2vr+KSzsSV5kq5iWhEQbok+quxgGzrAtGWCyU7tHnA==" - "resolved" "https://registry.npmjs.org/typescript/-/typescript-4.9.3.tgz" - "version" "4.9.3" +typescript@^4.9.3: + version "4.9.3" + resolved "https://registry.npmjs.org/typescript/-/typescript-4.9.3.tgz" + integrity sha512-CIfGzTelbKNEnLpLdGFgdyKhG23CKdKgQPOBc+OUNrkJ2vr+KSzsSV5kq5iWhEQbok+quxgGzrAtGWCyU7tHnA== -"ua-parser-js@^0.7.18": - "integrity" "sha512-f9BESNVhzlhEFf2CHMSj40NWOjYPl1YKYbrvIr/hFTDEmLq7SRbWvm7FcdcpCYT95zrOhC7gZSxjdnnTpBcwVw==" - "resolved" "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.32.tgz" - "version" "0.7.32" +ua-parser-js@^0.7.18: + version "0.7.32" + resolved "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.32.tgz" + integrity sha512-f9BESNVhzlhEFf2CHMSj40NWOjYPl1YKYbrvIr/hFTDEmLq7SRbWvm7FcdcpCYT95zrOhC7gZSxjdnnTpBcwVw== -"uglify-js@^3.1.4": - "integrity" "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==" - "resolved" "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz" - "version" "3.17.4" +uglify-js@^3.1.4: + version "3.17.4" + resolved "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz" + integrity sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g== -"unbox-primitive@^1.0.2": - "integrity" "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==" - "resolved" "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz" - "version" "1.0.2" +unbox-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz" + integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== dependencies: - "call-bind" "^1.0.2" - "has-bigints" "^1.0.2" - "has-symbols" "^1.0.3" - "which-boxed-primitive" "^1.0.2" + call-bind "^1.0.2" + has-bigints "^1.0.2" + has-symbols "^1.0.3" + which-boxed-primitive "^1.0.2" -"unfetch@^4.2.0": - "integrity" "sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA==" - "resolved" "https://registry.npmjs.org/unfetch/-/unfetch-4.2.0.tgz" - "version" "4.2.0" +unfetch@^4.2.0: + version "4.2.0" + resolved "https://registry.npmjs.org/unfetch/-/unfetch-4.2.0.tgz" + integrity sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA== -"unherit@^1.0.4": - "integrity" "sha512-Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ==" - "resolved" "https://registry.npmjs.org/unherit/-/unherit-1.1.3.tgz" - "version" "1.1.3" +unherit@^1.0.4: + version "1.1.3" + resolved "https://registry.npmjs.org/unherit/-/unherit-1.1.3.tgz" + integrity sha512-Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ== dependencies: - "inherits" "^2.0.0" - "xtend" "^4.0.0" + inherits "^2.0.0" + xtend "^4.0.0" -"unicode-canonical-property-names-ecmascript@^2.0.0": - "integrity" "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==" - "resolved" "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz" - "version" "2.0.0" +unicode-canonical-property-names-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz" + integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== -"unicode-match-property-ecmascript@^2.0.0": - "integrity" "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==" - "resolved" "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz" - "version" "2.0.0" +unicode-match-property-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz" + integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== dependencies: - "unicode-canonical-property-names-ecmascript" "^2.0.0" - "unicode-property-aliases-ecmascript" "^2.0.0" + unicode-canonical-property-names-ecmascript "^2.0.0" + unicode-property-aliases-ecmascript "^2.0.0" -"unicode-match-property-value-ecmascript@^2.1.0": - "integrity" "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==" - "resolved" "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz" - "version" "2.1.0" +unicode-match-property-value-ecmascript@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz" + integrity sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA== -"unicode-property-aliases-ecmascript@^2.0.0": - "integrity" "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==" - "resolved" "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz" - "version" "2.1.0" +unicode-property-aliases-ecmascript@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz" + integrity sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w== -"unified@9.2.0": - "integrity" "sha512-vx2Z0vY+a3YoTj8+pttM3tiJHCwY5UFbYdiWrwBEbHmK8pvsPj2rtAX2BFfgXen8T39CJWblWRDT4L5WGXtDdg==" - "resolved" "https://registry.npmjs.org/unified/-/unified-9.2.0.tgz" - "version" "9.2.0" +unified@9.2.0: + version "9.2.0" + resolved "https://registry.npmjs.org/unified/-/unified-9.2.0.tgz" + integrity sha512-vx2Z0vY+a3YoTj8+pttM3tiJHCwY5UFbYdiWrwBEbHmK8pvsPj2rtAX2BFfgXen8T39CJWblWRDT4L5WGXtDdg== dependencies: - "bail" "^1.0.0" - "extend" "^3.0.0" - "is-buffer" "^2.0.0" - "is-plain-obj" "^2.0.0" - "trough" "^1.0.0" - "vfile" "^4.0.0" + bail "^1.0.0" + extend "^3.0.0" + is-buffer "^2.0.0" + is-plain-obj "^2.0.0" + trough "^1.0.0" + vfile "^4.0.0" -"union-value@^1.0.0": - "integrity" "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==" - "resolved" "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz" - "version" "1.0.1" +union-value@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz" + integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== dependencies: - "arr-union" "^3.1.0" - "get-value" "^2.0.6" - "is-extendable" "^0.1.1" - "set-value" "^2.0.1" + arr-union "^3.1.0" + get-value "^2.0.6" + is-extendable "^0.1.1" + set-value "^2.0.1" -"uniq@^1.0.1": - "integrity" "sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA==" - "resolved" "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz" - "version" "1.0.1" +uniq@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz" + integrity sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA== -"uniqs@^2.0.0": - "integrity" "sha512-mZdDpf3vBV5Efh29kMw5tXoup/buMgxLzOt/XKFKcVmi+15ManNQWr6HfZ2aiZTYlYixbdNJ0KFmIZIv52tHSQ==" - "resolved" "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz" - "version" "2.0.0" +uniqs@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz" + integrity sha512-mZdDpf3vBV5Efh29kMw5tXoup/buMgxLzOt/XKFKcVmi+15ManNQWr6HfZ2aiZTYlYixbdNJ0KFmIZIv52tHSQ== -"unique-filename@^1.1.1": - "integrity" "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==" - "resolved" "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz" - "version" "1.1.1" +unique-filename@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz" + integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== dependencies: - "unique-slug" "^2.0.0" + unique-slug "^2.0.0" -"unique-slug@^2.0.0": - "integrity" "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==" - "resolved" "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz" - "version" "2.0.2" +unique-slug@^2.0.0: + version "2.0.2" + resolved "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz" + integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== dependencies: - "imurmurhash" "^0.1.4" + imurmurhash "^0.1.4" -"unique-string@^2.0.0": - "integrity" "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==" - "resolved" "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz" - "version" "2.0.0" +unique-string@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz" + integrity sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg== dependencies: - "crypto-random-string" "^2.0.0" + crypto-random-string "^2.0.0" -"unist-builder@^2.0.0", "unist-builder@2.0.3": - "integrity" "sha512-f98yt5pnlMWlzP539tPc4grGMsFaQQlP/vM396b00jngsiINumNmsY8rkXjfoi1c6QaM8nQ3vaGDuoKWbe/1Uw==" - "resolved" "https://registry.npmjs.org/unist-builder/-/unist-builder-2.0.3.tgz" - "version" "2.0.3" +unist-builder@2.0.3, unist-builder@^2.0.0: + version "2.0.3" + resolved "https://registry.npmjs.org/unist-builder/-/unist-builder-2.0.3.tgz" + integrity sha512-f98yt5pnlMWlzP539tPc4grGMsFaQQlP/vM396b00jngsiINumNmsY8rkXjfoi1c6QaM8nQ3vaGDuoKWbe/1Uw== -"unist-util-generated@^1.0.0": - "integrity" "sha512-cln2Mm1/CZzN5ttGK7vkoGw+RZ8VcUH6BtGbq98DDtRGquAAOXig1mrBQYelOwMXYS8rK+vZDyyojSjp7JX+Lg==" - "resolved" "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-1.1.6.tgz" - "version" "1.1.6" +unist-util-generated@^1.0.0: + version "1.1.6" + resolved "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-1.1.6.tgz" + integrity sha512-cln2Mm1/CZzN5ttGK7vkoGw+RZ8VcUH6BtGbq98DDtRGquAAOXig1mrBQYelOwMXYS8rK+vZDyyojSjp7JX+Lg== -"unist-util-is@^4.0.0": - "integrity" "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==" - "resolved" "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz" - "version" "4.1.0" +unist-util-is@^4.0.0: + version "4.1.0" + resolved "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz" + integrity sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg== -"unist-util-position@^3.0.0": - "integrity" "sha512-w+PkwCbYSFw8vpgWD0v7zRCl1FpY3fjDSQ3/N/wNd9Ffa4gPi8+4keqt99N3XW6F99t/mUzp2xAhNmfKWp95QA==" - "resolved" "https://registry.npmjs.org/unist-util-position/-/unist-util-position-3.1.0.tgz" - "version" "3.1.0" +unist-util-position@^3.0.0: + version "3.1.0" + resolved "https://registry.npmjs.org/unist-util-position/-/unist-util-position-3.1.0.tgz" + integrity sha512-w+PkwCbYSFw8vpgWD0v7zRCl1FpY3fjDSQ3/N/wNd9Ffa4gPi8+4keqt99N3XW6F99t/mUzp2xAhNmfKWp95QA== -"unist-util-remove-position@^2.0.0": - "integrity" "sha512-fDZsLYIe2uT+oGFnuZmy73K6ZxOPG/Qcm+w7jbEjaFcJgbQ6cqjs/eSPzXhsmGpAsWPkqZM9pYjww5QTn3LHMA==" - "resolved" "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-2.0.1.tgz" - "version" "2.0.1" +unist-util-remove-position@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-2.0.1.tgz" + integrity sha512-fDZsLYIe2uT+oGFnuZmy73K6ZxOPG/Qcm+w7jbEjaFcJgbQ6cqjs/eSPzXhsmGpAsWPkqZM9pYjww5QTn3LHMA== dependencies: - "unist-util-visit" "^2.0.0" + unist-util-visit "^2.0.0" -"unist-util-remove@^2.0.0": - "integrity" "sha512-J8NYPyBm4baYLdCbjmf1bhPu45Cr1MWTm77qd9istEkzWpnN6O9tMsEbB2JhNnBCqGENRqEWomQ+He6au0B27Q==" - "resolved" "https://registry.npmjs.org/unist-util-remove/-/unist-util-remove-2.1.0.tgz" - "version" "2.1.0" +unist-util-remove@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/unist-util-remove/-/unist-util-remove-2.1.0.tgz" + integrity sha512-J8NYPyBm4baYLdCbjmf1bhPu45Cr1MWTm77qd9istEkzWpnN6O9tMsEbB2JhNnBCqGENRqEWomQ+He6au0B27Q== dependencies: - "unist-util-is" "^4.0.0" + unist-util-is "^4.0.0" -"unist-util-stringify-position@^2.0.0": - "integrity" "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==" - "resolved" "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz" - "version" "2.0.3" +unist-util-stringify-position@^2.0.0: + version "2.0.3" + resolved "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz" + integrity sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g== dependencies: "@types/unist" "^2.0.2" -"unist-util-visit-parents@^3.0.0": - "integrity" "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==" - "resolved" "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz" - "version" "3.1.1" +unist-util-visit-parents@^3.0.0: + version "3.1.1" + resolved "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz" + integrity sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg== dependencies: "@types/unist" "^2.0.0" - "unist-util-is" "^4.0.0" + unist-util-is "^4.0.0" -"unist-util-visit@^2.0.0", "unist-util-visit@2.0.3": - "integrity" "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==" - "resolved" "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz" - "version" "2.0.3" +unist-util-visit@2.0.3, unist-util-visit@^2.0.0: + version "2.0.3" + resolved "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz" + integrity sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q== dependencies: "@types/unist" "^2.0.0" - "unist-util-is" "^4.0.0" - "unist-util-visit-parents" "^3.0.0" + unist-util-is "^4.0.0" + unist-util-visit-parents "^3.0.0" -"universal-cookie@^4.0.0": - "integrity" "sha512-lbRVHoOMtItjWbM7TwDLdl8wug7izB0tq3/YVKhT/ahB4VDvWMyvnADfnJI8y6fSvsjh51Ix7lTGC6Tn4rMPhw==" - "resolved" "https://registry.npmjs.org/universal-cookie/-/universal-cookie-4.0.4.tgz" - "version" "4.0.4" +universal-cookie@^4.0.0: + version "4.0.4" + resolved "https://registry.npmjs.org/universal-cookie/-/universal-cookie-4.0.4.tgz" + integrity sha512-lbRVHoOMtItjWbM7TwDLdl8wug7izB0tq3/YVKhT/ahB4VDvWMyvnADfnJI8y6fSvsjh51Ix7lTGC6Tn4rMPhw== dependencies: "@types/cookie" "^0.3.3" - "cookie" "^0.4.0" + cookie "^0.4.0" -"universalify@^0.1.0": - "integrity" "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" - "resolved" "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz" - "version" "0.1.2" +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== -"universalify@^0.2.0": - "integrity" "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==" - "resolved" "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz" - "version" "0.2.0" +universalify@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz" + integrity sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg== -"universalify@^2.0.0": - "integrity" "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" - "resolved" "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz" - "version" "2.0.0" +universalify@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz" + integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== -"unpipe@~1.0.0", "unpipe@1.0.0": - "integrity" "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==" - "resolved" "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" - "version" "1.0.0" +unpipe@1.0.0, unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" + integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== -"unquote@~1.1.1": - "integrity" "sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==" - "resolved" "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz" - "version" "1.1.1" +unquote@~1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz" + integrity sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg== -"unset-value@^1.0.0": - "integrity" "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==" - "resolved" "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz" - "version" "1.0.0" +unset-value@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz" + integrity sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ== dependencies: - "has-value" "^0.3.1" - "isobject" "^3.0.0" + has-value "^0.3.1" + isobject "^3.0.0" -"untildify@^2.0.0": - "integrity" "sha512-sJjbDp2GodvkB0FZZcn7k6afVisqX5BZD7Yq3xp4nN2O15BBK0cLm3Vwn2vQaF7UDS0UUsrQMkkplmDI5fskig==" - "resolved" "https://registry.npmjs.org/untildify/-/untildify-2.1.0.tgz" - "version" "2.1.0" +untildify@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/untildify/-/untildify-2.1.0.tgz" + integrity sha512-sJjbDp2GodvkB0FZZcn7k6afVisqX5BZD7Yq3xp4nN2O15BBK0cLm3Vwn2vQaF7UDS0UUsrQMkkplmDI5fskig== dependencies: - "os-homedir" "^1.0.0" + os-homedir "^1.0.0" -"upath@^1.1.1", "upath@^1.2.0": - "integrity" "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==" - "resolved" "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz" - "version" "1.2.0" +upath@^1.1.1, upath@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz" + integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== -"update-browserslist-db@^1.0.9": - "integrity" "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==" - "resolved" "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz" - "version" "1.0.10" +update-browserslist-db@^1.0.9: + version "1.0.10" + resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz" + integrity sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ== dependencies: - "escalade" "^3.1.1" - "picocolors" "^1.0.0" + escalade "^3.1.1" + picocolors "^1.0.0" -"update-notifier@^5.0.1": - "integrity" "sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw==" - "resolved" "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz" - "version" "5.1.0" +update-notifier@^5.0.1: + version "5.1.0" + resolved "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz" + integrity sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw== dependencies: - "boxen" "^5.0.0" - "chalk" "^4.1.0" - "configstore" "^5.0.1" - "has-yarn" "^2.1.0" - "import-lazy" "^2.1.0" - "is-ci" "^2.0.0" - "is-installed-globally" "^0.4.0" - "is-npm" "^5.0.0" - "is-yarn-global" "^0.3.0" - "latest-version" "^5.1.0" - "pupa" "^2.1.1" - "semver" "^7.3.4" - "semver-diff" "^3.1.1" - "xdg-basedir" "^4.0.0" + boxen "^5.0.0" + chalk "^4.1.0" + configstore "^5.0.1" + has-yarn "^2.1.0" + import-lazy "^2.1.0" + is-ci "^2.0.0" + is-installed-globally "^0.4.0" + is-npm "^5.0.0" + is-yarn-global "^0.3.0" + latest-version "^5.1.0" + pupa "^2.1.1" + semver "^7.3.4" + semver-diff "^3.1.1" + xdg-basedir "^4.0.0" -"uri-js@^4.2.2": - "integrity" "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==" - "resolved" "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz" - "version" "4.4.1" +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== dependencies: - "punycode" "^2.1.0" + punycode "^2.1.0" -"urix@^0.1.0": - "integrity" "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==" - "resolved" "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz" - "version" "0.1.0" +urix@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz" + integrity sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg== -"url-loader@^4.1.1": - "integrity" "sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==" - "resolved" "https://registry.npmjs.org/url-loader/-/url-loader-4.1.1.tgz" - "version" "4.1.1" +url-loader@2.3.0: + version "2.3.0" + resolved "https://registry.npmjs.org/url-loader/-/url-loader-2.3.0.tgz" + integrity sha512-goSdg8VY+7nPZKUEChZSEtW5gjbS66USIGCeSJ1OVOJ7Yfuh/36YxCwMi5HVEJh6mqUYOoy3NJ0vlOMrWsSHog== dependencies: - "loader-utils" "^2.0.0" - "mime-types" "^2.1.27" - "schema-utils" "^3.0.0" + loader-utils "^1.2.3" + mime "^2.4.4" + schema-utils "^2.5.0" -"url-loader@2.3.0": - "integrity" "sha512-goSdg8VY+7nPZKUEChZSEtW5gjbS66USIGCeSJ1OVOJ7Yfuh/36YxCwMi5HVEJh6mqUYOoy3NJ0vlOMrWsSHog==" - "resolved" "https://registry.npmjs.org/url-loader/-/url-loader-2.3.0.tgz" - "version" "2.3.0" +url-loader@^4.1.1: + version "4.1.1" + resolved "https://registry.npmjs.org/url-loader/-/url-loader-4.1.1.tgz" + integrity sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA== dependencies: - "loader-utils" "^1.2.3" - "mime" "^2.4.4" - "schema-utils" "^2.5.0" + loader-utils "^2.0.0" + mime-types "^2.1.27" + schema-utils "^3.0.0" -"url-parse-lax@^3.0.0": - "integrity" "sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==" - "resolved" "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz" - "version" "3.0.0" +url-parse-lax@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz" + integrity sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ== dependencies: - "prepend-http" "^2.0.0" + prepend-http "^2.0.0" -"url-parse@^1.5.3", "url-parse@^1.5.9": - "integrity" "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==" - "resolved" "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz" - "version" "1.5.10" +url-parse@1.4.4: + version "1.4.4" + resolved "https://registry.npmjs.org/url-parse/-/url-parse-1.4.4.tgz" + integrity sha512-/92DTTorg4JjktLNLe6GPS2/RvAd/RGr6LuktmWSMLEOa6rjnlrFXNgSbSmkNvCoL2T028A0a1JaJLzRMlFoHg== dependencies: - "querystringify" "^2.1.1" - "requires-port" "^1.0.0" + querystringify "^2.0.0" + requires-port "^1.0.0" -"url-parse@1.4.4": - "integrity" "sha512-/92DTTorg4JjktLNLe6GPS2/RvAd/RGr6LuktmWSMLEOa6rjnlrFXNgSbSmkNvCoL2T028A0a1JaJLzRMlFoHg==" - "resolved" "https://registry.npmjs.org/url-parse/-/url-parse-1.4.4.tgz" - "version" "1.4.4" +url-parse@^1.5.3, url-parse@^1.5.9: + version "1.5.10" + resolved "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz" + integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ== dependencies: - "querystringify" "^2.0.0" - "requires-port" "^1.0.0" + querystringify "^2.1.1" + requires-port "^1.0.0" -"url@^0.11.0": - "integrity" "sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==" - "resolved" "https://registry.npmjs.org/url/-/url-0.11.0.tgz" - "version" "0.11.0" +url@^0.11.0: + version "0.11.0" + resolved "https://registry.npmjs.org/url/-/url-0.11.0.tgz" + integrity sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ== dependencies: - "punycode" "1.3.2" - "querystring" "0.2.0" + punycode "1.3.2" + querystring "0.2.0" -"use-composed-ref@^1.3.0": - "integrity" "sha512-GLMG0Jc/jiKov/3Ulid1wbv3r54K9HlMW29IWcDFPEqFkSO2nS0MuefWgMJpeHQ9YJeXDL3ZUF+P3jdXlZX/cQ==" - "resolved" "https://registry.npmjs.org/use-composed-ref/-/use-composed-ref-1.3.0.tgz" - "version" "1.3.0" +use-composed-ref@^1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/use-composed-ref/-/use-composed-ref-1.3.0.tgz" + integrity sha512-GLMG0Jc/jiKov/3Ulid1wbv3r54K9HlMW29IWcDFPEqFkSO2nS0MuefWgMJpeHQ9YJeXDL3ZUF+P3jdXlZX/cQ== -"use-isomorphic-layout-effect@^1.1.1": - "integrity" "sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==" - "resolved" "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz" - "version" "1.1.2" +use-isomorphic-layout-effect@^1.1.1: + version "1.1.2" + resolved "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz" + integrity sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA== -"use-latest@^1.2.1": - "integrity" "sha512-xA+AVm/Wlg3e2P/JiItTziwS7FK92LWrDB0p+hgXloIMuVCeJJ8v6f0eeHyPZaJrM+usM1FkFfbNCrJGs8A/zw==" - "resolved" "https://registry.npmjs.org/use-latest/-/use-latest-1.2.1.tgz" - "version" "1.2.1" +use-latest@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/use-latest/-/use-latest-1.2.1.tgz" + integrity sha512-xA+AVm/Wlg3e2P/JiItTziwS7FK92LWrDB0p+hgXloIMuVCeJJ8v6f0eeHyPZaJrM+usM1FkFfbNCrJGs8A/zw== dependencies: - "use-isomorphic-layout-effect" "^1.1.1" + use-isomorphic-layout-effect "^1.1.1" -"use@^3.1.0": - "integrity" "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==" - "resolved" "https://registry.npmjs.org/use/-/use-3.1.1.tgz" - "version" "3.1.1" +use@^3.1.0: + version "3.1.1" + resolved "https://registry.npmjs.org/use/-/use-3.1.1.tgz" + integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== -"user-home@^1.1.1": - "integrity" "sha512-aggiKfEEubv3UwRNqTzLInZpAOmKzwdHqEBmW/hBA/mt99eg+b4VrX6i+IRLxU8+WJYfa33rGwRseg4eElUgsQ==" - "resolved" "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz" - "version" "1.1.1" +user-home@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz" + integrity sha512-aggiKfEEubv3UwRNqTzLInZpAOmKzwdHqEBmW/hBA/mt99eg+b4VrX6i+IRLxU8+WJYfa33rGwRseg4eElUgsQ== -"util-deprecate@^1.0.1", "util-deprecate@^1.0.2", "util-deprecate@~1.0.1": - "integrity" "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - "resolved" "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" - "version" "1.0.2" +util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== -"util.promisify@^1.0.0", "util.promisify@~1.0.0": - "integrity" "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==" - "resolved" "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz" - "version" "1.0.1" +util.promisify@1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz" + integrity sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA== dependencies: - "define-properties" "^1.1.3" - "es-abstract" "^1.17.2" - "has-symbols" "^1.0.1" - "object.getownpropertydescriptors" "^2.1.0" + define-properties "^1.1.2" + object.getownpropertydescriptors "^2.0.3" -"util.promisify@1.0.0": - "integrity" "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==" - "resolved" "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz" - "version" "1.0.0" +util.promisify@^1.0.0, util.promisify@~1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz" + integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA== dependencies: - "define-properties" "^1.1.2" - "object.getownpropertydescriptors" "^2.0.3" + define-properties "^1.1.3" + es-abstract "^1.17.2" + has-symbols "^1.0.1" + object.getownpropertydescriptors "^2.1.0" -"util@^0.11.0": - "integrity" "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==" - "resolved" "https://registry.npmjs.org/util/-/util-0.11.1.tgz" - "version" "0.11.1" +util@0.10.3: + version "0.10.3" + resolved "https://registry.npmjs.org/util/-/util-0.10.3.tgz" + integrity sha512-5KiHfsmkqacuKjkRkdV7SsfDJ2EGiPsK92s2MhNSY0craxjTdKTtqKsJaCWp4LW33ZZ0OPUv1WO/TFvNQRiQxQ== dependencies: - "inherits" "2.0.3" + inherits "2.0.1" -"util@^0.12.0": - "integrity" "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==" - "resolved" "https://registry.npmjs.org/util/-/util-0.12.5.tgz" - "version" "0.12.5" +util@^0.11.0: + version "0.11.1" + resolved "https://registry.npmjs.org/util/-/util-0.11.1.tgz" + integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ== dependencies: - "inherits" "^2.0.3" - "is-arguments" "^1.0.4" - "is-generator-function" "^1.0.7" - "is-typed-array" "^1.1.3" - "which-typed-array" "^1.1.2" + inherits "2.0.3" -"util@0.10.3": - "integrity" "sha512-5KiHfsmkqacuKjkRkdV7SsfDJ2EGiPsK92s2MhNSY0craxjTdKTtqKsJaCWp4LW33ZZ0OPUv1WO/TFvNQRiQxQ==" - "resolved" "https://registry.npmjs.org/util/-/util-0.10.3.tgz" - "version" "0.10.3" +util@^0.12.0: + version "0.12.5" + resolved "https://registry.npmjs.org/util/-/util-0.12.5.tgz" + integrity sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA== dependencies: - "inherits" "2.0.1" + inherits "^2.0.3" + is-arguments "^1.0.4" + is-generator-function "^1.0.7" + is-typed-array "^1.1.3" + which-typed-array "^1.1.2" -"utila@~0.4": - "integrity" "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==" - "resolved" "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz" - "version" "0.4.0" +utila@~0.4: + version "0.4.0" + resolved "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz" + integrity sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA== -"utils-merge@1.0.1": - "integrity" "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==" - "resolved" "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz" - "version" "1.0.1" +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz" + integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== -"uuid-browser@^3.1.0": - "integrity" "sha512-dsNgbLaTrd6l3MMxTtouOCFw4CBFc/3a+GgYA2YyrJvyQ1u6q4pcu3ktLoUZ/VN/Aw9WsauazbgsgdfVWgAKQg==" - "resolved" "https://registry.npmjs.org/uuid-browser/-/uuid-browser-3.1.0.tgz" - "version" "3.1.0" +uuid-browser@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/uuid-browser/-/uuid-browser-3.1.0.tgz" + integrity sha512-dsNgbLaTrd6l3MMxTtouOCFw4CBFc/3a+GgYA2YyrJvyQ1u6q4pcu3ktLoUZ/VN/Aw9WsauazbgsgdfVWgAKQg== -"uuid-time@^1.0.0": - "integrity" "sha512-F0EzKK+aqt41uDutE+qukIta0CkMJ212qkIWT7uUCy0DjbyMEGpNkiLQfdByBveEt28Z/ywZU7u4CQ/a03oCaA==" - "resolved" "https://registry.npmjs.org/uuid-time/-/uuid-time-1.0.0.tgz" - "version" "1.0.0" +uuid-time@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/uuid-time/-/uuid-time-1.0.0.tgz" + integrity sha512-F0EzKK+aqt41uDutE+qukIta0CkMJ212qkIWT7uUCy0DjbyMEGpNkiLQfdByBveEt28Z/ywZU7u4CQ/a03oCaA== -"uuid@^3.3.2": - "integrity" "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" - "resolved" "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz" - "version" "3.4.0" +uuid@^3.3.2: + version "3.4.0" + resolved "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz" + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== -"uuid@^8.3.1", "uuid@^8.3.2": - "integrity" "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" - "resolved" "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz" - "version" "8.3.2" +uuid@^8.3.1, uuid@^8.3.2: + version "8.3.2" + resolved "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== -"v8-compile-cache-lib@^3.0.1": - "integrity" "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==" - "resolved" "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz" - "version" "3.0.1" +v8-compile-cache-lib@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz" + integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== -"v8-to-istanbul@^8.1.0": - "integrity" "sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==" - "resolved" "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz" - "version" "8.1.1" +v8-to-istanbul@^8.1.0: + version "8.1.1" + resolved "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz" + integrity sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w== dependencies: "@types/istanbul-lib-coverage" "^2.0.1" - "convert-source-map" "^1.6.0" - "source-map" "^0.7.3" + convert-source-map "^1.6.0" + source-map "^0.7.3" -"v8-to-istanbul@^9.0.0": - "integrity" "sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w==" - "resolved" "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.0.1.tgz" - "version" "9.0.1" +v8-to-istanbul@^9.0.0: + version "9.0.1" + resolved "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.0.1.tgz" + integrity sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w== dependencies: "@jridgewell/trace-mapping" "^0.3.12" "@types/istanbul-lib-coverage" "^2.0.1" - "convert-source-map" "^1.6.0" + convert-source-map "^1.6.0" -"v8flags@^2.1.1": - "integrity" "sha512-SKfhk/LlaXzvtowJabLZwD4K6SGRYeoxA7KJeISlUMAB/NT4CBkZjMq3WceX2Ckm4llwqYVo8TICgsDYCBU2tA==" - "resolved" "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz" - "version" "2.1.1" +v8flags@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz" + integrity sha512-SKfhk/LlaXzvtowJabLZwD4K6SGRYeoxA7KJeISlUMAB/NT4CBkZjMq3WceX2Ckm4llwqYVo8TICgsDYCBU2tA== dependencies: - "user-home" "^1.1.1" + user-home "^1.1.1" -"validate-npm-package-license@^3.0.1": - "integrity" "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==" - "resolved" "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz" - "version" "3.0.4" +validate-npm-package-license@^3.0.1: + version "3.0.4" + resolved "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== dependencies: - "spdx-correct" "^3.0.0" - "spdx-expression-parse" "^3.0.0" + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" -"value-equal@^1.0.1": - "integrity" "sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==" - "resolved" "https://registry.npmjs.org/value-equal/-/value-equal-1.0.1.tgz" - "version" "1.0.1" +value-equal@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/value-equal/-/value-equal-1.0.1.tgz" + integrity sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw== -"vary@~1.1.2": - "integrity" "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==" - "resolved" "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz" - "version" "1.1.2" +vary@~1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz" + integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== -"vendors@^1.0.0": - "integrity" "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==" - "resolved" "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz" - "version" "1.0.4" +vendors@^1.0.0: + version "1.0.4" + resolved "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz" + integrity sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w== -"verror@1.10.0": - "integrity" "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==" - "resolved" "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz" - "version" "1.10.0" +verror@1.10.0: + version "1.10.0" + resolved "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz" + integrity sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw== dependencies: - "assert-plus" "^1.0.0" - "core-util-is" "1.0.2" - "extsprintf" "^1.2.0" + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" -"vfile-location@^3.0.0", "vfile-location@^3.2.0": - "integrity" "sha512-aLEIZKv/oxuCDZ8lkJGhuhztf/BW4M+iHdCwglA/eWc+vtuRFJj8EtgceYFX4LRjOhCAAiNHsKGssC6onJ+jbA==" - "resolved" "https://registry.npmjs.org/vfile-location/-/vfile-location-3.2.0.tgz" - "version" "3.2.0" +vfile-location@^3.0.0, vfile-location@^3.2.0: + version "3.2.0" + resolved "https://registry.npmjs.org/vfile-location/-/vfile-location-3.2.0.tgz" + integrity sha512-aLEIZKv/oxuCDZ8lkJGhuhztf/BW4M+iHdCwglA/eWc+vtuRFJj8EtgceYFX4LRjOhCAAiNHsKGssC6onJ+jbA== -"vfile-message@^2.0.0": - "integrity" "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==" - "resolved" "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz" - "version" "2.0.4" +vfile-message@^2.0.0: + version "2.0.4" + resolved "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz" + integrity sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ== dependencies: "@types/unist" "^2.0.0" - "unist-util-stringify-position" "^2.0.0" + unist-util-stringify-position "^2.0.0" -"vfile@^4.0.0": - "integrity" "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==" - "resolved" "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz" - "version" "4.2.1" +vfile@^4.0.0: + version "4.2.1" + resolved "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz" + integrity sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA== dependencies: "@types/unist" "^2.0.0" - "is-buffer" "^2.0.0" - "unist-util-stringify-position" "^2.0.0" - "vfile-message" "^2.0.0" + is-buffer "^2.0.0" + unist-util-stringify-position "^2.0.0" + vfile-message "^2.0.0" -"vm-browserify@^1.0.1": - "integrity" "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==" - "resolved" "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz" - "version" "1.1.2" +vm-browserify@^1.0.1: + version "1.1.2" + resolved "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz" + integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== -"void-elements@3.1.0": - "integrity" "sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==" - "resolved" "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz" - "version" "3.1.0" +void-elements@3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz" + integrity sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w== -"w3c-hr-time@^1.0.1", "w3c-hr-time@^1.0.2": - "integrity" "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==" - "resolved" "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz" - "version" "1.0.2" +w3c-hr-time@^1.0.1, w3c-hr-time@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz" + integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== dependencies: - "browser-process-hrtime" "^1.0.0" + browser-process-hrtime "^1.0.0" -"w3c-xmlserializer@^1.1.2": - "integrity" "sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==" - "resolved" "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz" - "version" "1.1.2" +w3c-xmlserializer@^1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz" + integrity sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg== dependencies: - "domexception" "^1.0.1" - "webidl-conversions" "^4.0.2" - "xml-name-validator" "^3.0.0" + domexception "^1.0.1" + webidl-conversions "^4.0.2" + xml-name-validator "^3.0.0" -"w3c-xmlserializer@^2.0.0": - "integrity" "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==" - "resolved" "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz" - "version" "2.0.0" +w3c-xmlserializer@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz" + integrity sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA== dependencies: - "xml-name-validator" "^3.0.0" + xml-name-validator "^3.0.0" -"wait-for-expect@^3.0.2": - "integrity" "sha512-cfS1+DZxuav1aBYbaO/kE06EOS8yRw7qOFoD3XtjTkYvCvh3zUvNST8DXK/nPaeqIzIv3P3kL3lRJn8iwOiSag==" - "resolved" "https://registry.npmjs.org/wait-for-expect/-/wait-for-expect-3.0.2.tgz" - "version" "3.0.2" +wait-for-expect@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/wait-for-expect/-/wait-for-expect-3.0.2.tgz" + integrity sha512-cfS1+DZxuav1aBYbaO/kE06EOS8yRw7qOFoD3XtjTkYvCvh3zUvNST8DXK/nPaeqIzIv3P3kL3lRJn8iwOiSag== -"walker@^1.0.7", "walker@~1.0.5": - "integrity" "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==" - "resolved" "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz" - "version" "1.0.8" +walker@^1.0.7, walker@~1.0.5: + version "1.0.8" + resolved "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz" + integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== dependencies: - "makeerror" "1.0.12" + makeerror "1.0.12" -"watchpack-chokidar2@^2.0.1": - "integrity" "sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==" - "resolved" "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz" - "version" "2.0.1" +watchpack-chokidar2@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz" + integrity sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww== dependencies: - "chokidar" "^2.1.8" + chokidar "^2.1.8" -"watchpack@^1.7.4": - "integrity" "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==" - "resolved" "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz" - "version" "1.7.5" +watchpack@^1.7.4: + version "1.7.5" + resolved "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz" + integrity sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ== dependencies: - "graceful-fs" "^4.1.2" - "neo-async" "^2.5.0" + graceful-fs "^4.1.2" + neo-async "^2.5.0" optionalDependencies: - "chokidar" "^3.4.1" - "watchpack-chokidar2" "^2.0.1" + chokidar "^3.4.1" + watchpack-chokidar2 "^2.0.1" -"watchpack@^2.2.0", "watchpack@^2.4.0": - "integrity" "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==" - "resolved" "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz" - "version" "2.4.0" +watchpack@^2.2.0, watchpack@^2.4.0: + version "2.4.0" + resolved "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz" + integrity sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg== dependencies: - "glob-to-regexp" "^0.4.1" - "graceful-fs" "^4.1.2" + glob-to-regexp "^0.4.1" + graceful-fs "^4.1.2" -"wbuf@^1.1.0", "wbuf@^1.7.3": - "integrity" "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==" - "resolved" "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz" - "version" "1.7.3" +wbuf@^1.1.0, wbuf@^1.7.3: + version "1.7.3" + resolved "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz" + integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== dependencies: - "minimalistic-assert" "^1.0.0" + minimalistic-assert "^1.0.0" -"web-namespaces@^1.0.0": - "integrity" "sha512-wYxSGajtmoP4WxfejAPIr4l0fVh+jeMXZb08wNc0tMg6xsfZXj3cECqIK0G7ZAqUq0PP8WlMDtaOGVBTAWztNw==" - "resolved" "https://registry.npmjs.org/web-namespaces/-/web-namespaces-1.1.4.tgz" - "version" "1.1.4" +web-namespaces@^1.0.0: + version "1.1.4" + resolved "https://registry.npmjs.org/web-namespaces/-/web-namespaces-1.1.4.tgz" + integrity sha512-wYxSGajtmoP4WxfejAPIr4l0fVh+jeMXZb08wNc0tMg6xsfZXj3cECqIK0G7ZAqUq0PP8WlMDtaOGVBTAWztNw== -"webidl-conversions@^3.0.0": - "integrity" "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" - "resolved" "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz" - "version" "3.0.1" +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz" + integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== -"webidl-conversions@^4.0.2": - "integrity" "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==" - "resolved" "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz" - "version" "4.0.2" +webidl-conversions@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz" + integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== -"webidl-conversions@^5.0.0": - "integrity" "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==" - "resolved" "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz" - "version" "5.0.0" +webidl-conversions@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz" + integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA== -"webidl-conversions@^6.1.0": - "integrity" "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==" - "resolved" "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz" - "version" "6.1.0" +webidl-conversions@^6.1.0: + version "6.1.0" + resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz" + integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== -"webpack-dev-middleware@^3.7.3": - "integrity" "sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ==" - "resolved" "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz" - "version" "3.7.3" +webpack-dev-middleware@^3.7.3: + version "3.7.3" + resolved "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz" + integrity sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ== dependencies: - "memory-fs" "^0.4.1" - "mime" "^2.4.4" - "mkdirp" "^0.5.1" - "range-parser" "^1.2.1" - "webpack-log" "^2.0.0" + memory-fs "^0.4.1" + mime "^2.4.4" + mkdirp "^0.5.1" + range-parser "^1.2.1" + webpack-log "^2.0.0" -"webpack-dev-middleware@^4.1.0": - "integrity" "sha512-PjwyVY95/bhBh6VUqt6z4THplYcsvQ8YNNBTBM873xLVmw8FLeALn0qurHbs9EmcfhzQis/eoqypSnZeuUz26w==" - "resolved" "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-4.3.0.tgz" - "version" "4.3.0" +webpack-dev-middleware@^4.1.0: + version "4.3.0" + resolved "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-4.3.0.tgz" + integrity sha512-PjwyVY95/bhBh6VUqt6z4THplYcsvQ8YNNBTBM873xLVmw8FLeALn0qurHbs9EmcfhzQis/eoqypSnZeuUz26w== dependencies: - "colorette" "^1.2.2" - "mem" "^8.1.1" - "memfs" "^3.2.2" - "mime-types" "^2.1.30" - "range-parser" "^1.2.1" - "schema-utils" "^3.0.0" + colorette "^1.2.2" + mem "^8.1.1" + memfs "^3.2.2" + mime-types "^2.1.30" + range-parser "^1.2.1" + schema-utils "^3.0.0" -"webpack-dev-middleware@^5.3.1": - "integrity" "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==" - "resolved" "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz" - "version" "5.3.3" +webpack-dev-middleware@^5.3.1: + version "5.3.3" + resolved "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz" + integrity sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA== dependencies: - "colorette" "^2.0.10" - "memfs" "^3.4.3" - "mime-types" "^2.1.31" - "range-parser" "^1.2.1" - "schema-utils" "^4.0.0" + colorette "^2.0.10" + memfs "^3.4.3" + mime-types "^2.1.31" + range-parser "^1.2.1" + schema-utils "^4.0.0" -"webpack-dev-server@^4.6.0", "webpack-dev-server@3.x", "webpack-dev-server@3.x || 4.x": - "integrity" "sha512-lILVz9tAUy1zGFwieuaQtYiadImb5M3d+H+L1zDYalYoDl0cksAB1UNyuE5MMWJrG6zR1tXkCP2fitl7yoUJiw==" - "resolved" "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.11.1.tgz" - "version" "4.11.1" +webpack-dev-server@^4.6.0: + version "4.11.1" + resolved "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.11.1.tgz" + integrity sha512-lILVz9tAUy1zGFwieuaQtYiadImb5M3d+H+L1zDYalYoDl0cksAB1UNyuE5MMWJrG6zR1tXkCP2fitl7yoUJiw== dependencies: "@types/bonjour" "^3.5.9" "@types/connect-history-api-fallback" "^1.3.5" @@ -22791,360 +21897,324 @@ "@types/serve-static" "^1.13.10" "@types/sockjs" "^0.3.33" "@types/ws" "^8.5.1" - "ansi-html-community" "^0.0.8" - "bonjour-service" "^1.0.11" - "chokidar" "^3.5.3" - "colorette" "^2.0.10" - "compression" "^1.7.4" - "connect-history-api-fallback" "^2.0.0" - "default-gateway" "^6.0.3" - "express" "^4.17.3" - "graceful-fs" "^4.2.6" - "html-entities" "^2.3.2" - "http-proxy-middleware" "^2.0.3" - "ipaddr.js" "^2.0.1" - "open" "^8.0.9" - "p-retry" "^4.5.0" - "rimraf" "^3.0.2" - "schema-utils" "^4.0.0" - "selfsigned" "^2.1.1" - "serve-index" "^1.9.1" - "sockjs" "^0.3.24" - "spdy" "^4.0.2" - "webpack-dev-middleware" "^5.3.1" - "ws" "^8.4.2" + ansi-html-community "^0.0.8" + bonjour-service "^1.0.11" + chokidar "^3.5.3" + colorette "^2.0.10" + compression "^1.7.4" + connect-history-api-fallback "^2.0.0" + default-gateway "^6.0.3" + express "^4.17.3" + graceful-fs "^4.2.6" + html-entities "^2.3.2" + http-proxy-middleware "^2.0.3" + ipaddr.js "^2.0.1" + open "^8.0.9" + p-retry "^4.5.0" + rimraf "^3.0.2" + schema-utils "^4.0.0" + selfsigned "^2.1.1" + serve-index "^1.9.1" + sockjs "^0.3.24" + spdy "^4.0.2" + webpack-dev-middleware "^5.3.1" + ws "^8.4.2" -"webpack-filter-warnings-plugin@^1.2.1": - "integrity" "sha512-Ez6ytc9IseDMLPo0qCuNNYzgtUl8NovOqjIq4uAU8LTD4uoa1w1KpZyyzFtLTEMZpkkOkLfL9eN+KGYdk1Qtwg==" - "resolved" "https://registry.npmjs.org/webpack-filter-warnings-plugin/-/webpack-filter-warnings-plugin-1.2.1.tgz" - "version" "1.2.1" +webpack-filter-warnings-plugin@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/webpack-filter-warnings-plugin/-/webpack-filter-warnings-plugin-1.2.1.tgz" + integrity sha512-Ez6ytc9IseDMLPo0qCuNNYzgtUl8NovOqjIq4uAU8LTD4uoa1w1KpZyyzFtLTEMZpkkOkLfL9eN+KGYdk1Qtwg== -"webpack-hot-middleware@^2.25.1", "webpack-hot-middleware@2.x": - "integrity" "sha512-IK/0WAHs7MTu1tzLTjio73LjS3Ov+VvBKQmE8WPlJutgG5zT6Urgq/BbAdRrHTRpyzK0dvAvFh1Qg98akxgZpA==" - "resolved" "https://registry.npmjs.org/webpack-hot-middleware/-/webpack-hot-middleware-2.25.3.tgz" - "version" "2.25.3" +webpack-hot-middleware@^2.25.1: + version "2.25.3" + resolved "https://registry.npmjs.org/webpack-hot-middleware/-/webpack-hot-middleware-2.25.3.tgz" + integrity sha512-IK/0WAHs7MTu1tzLTjio73LjS3Ov+VvBKQmE8WPlJutgG5zT6Urgq/BbAdRrHTRpyzK0dvAvFh1Qg98akxgZpA== dependencies: - "ansi-html-community" "0.0.8" - "html-entities" "^2.1.0" - "strip-ansi" "^6.0.0" + ansi-html-community "0.0.8" + html-entities "^2.1.0" + strip-ansi "^6.0.0" -"webpack-log@^2.0.0": - "integrity" "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==" - "resolved" "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz" - "version" "2.0.0" +webpack-log@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz" + integrity sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg== dependencies: - "ansi-colors" "^3.0.0" - "uuid" "^3.3.2" + ansi-colors "^3.0.0" + uuid "^3.3.2" -"webpack-manifest-plugin@^4.0.2": - "integrity" "sha512-YXUAwxtfKIJIKkhg03MKuiFAD72PlrqCiwdwO4VEXdRO5V0ORCNwaOwAZawPZalCbmH9kBDmXnNeQOw+BIEiow==" - "resolved" "https://registry.npmjs.org/webpack-manifest-plugin/-/webpack-manifest-plugin-4.1.1.tgz" - "version" "4.1.1" +webpack-manifest-plugin@^4.0.2: + version "4.1.1" + resolved "https://registry.npmjs.org/webpack-manifest-plugin/-/webpack-manifest-plugin-4.1.1.tgz" + integrity sha512-YXUAwxtfKIJIKkhg03MKuiFAD72PlrqCiwdwO4VEXdRO5V0ORCNwaOwAZawPZalCbmH9kBDmXnNeQOw+BIEiow== dependencies: - "tapable" "^2.0.0" - "webpack-sources" "^2.2.0" + tapable "^2.0.0" + webpack-sources "^2.2.0" -"webpack-merge@^4.2.2": - "integrity" "sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==" - "resolved" "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.2.tgz" - "version" "4.2.2" +webpack-merge@^4.2.2: + version "4.2.2" + resolved "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.2.tgz" + integrity sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g== dependencies: - "lodash" "^4.17.15" + lodash "^4.17.15" -"webpack-sources@^1.1.0", "webpack-sources@^1.4.0", "webpack-sources@^1.4.1", "webpack-sources@^1.4.3": - "integrity" "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==" - "resolved" "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz" - "version" "1.4.3" +webpack-sources@^1.1.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1, webpack-sources@^1.4.3: + version "1.4.3" + resolved "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz" + integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== dependencies: - "source-list-map" "^2.0.0" - "source-map" "~0.6.1" + source-list-map "^2.0.0" + source-map "~0.6.1" -"webpack-sources@^2.2.0": - "integrity" "sha512-y9EI9AO42JjEcrTJFOYmVywVZdKVUfOvDUPsJea5GIr1JOEGFVqwlY2K098fFoIjOkDzHn2AjRvM8dsBZu+gCA==" - "resolved" "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.3.1.tgz" - "version" "2.3.1" +webpack-sources@^2.2.0: + version "2.3.1" + resolved "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.3.1.tgz" + integrity sha512-y9EI9AO42JjEcrTJFOYmVywVZdKVUfOvDUPsJea5GIr1JOEGFVqwlY2K098fFoIjOkDzHn2AjRvM8dsBZu+gCA== dependencies: - "source-list-map" "^2.0.1" - "source-map" "^0.6.1" + source-list-map "^2.0.1" + source-map "^0.6.1" -"webpack-sources@^3.2.3": - "integrity" "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==" - "resolved" "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz" - "version" "3.2.3" +webpack-sources@^3.2.3: + version "3.2.3" + resolved "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz" + integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== -"webpack-virtual-modules@^0.2.2": - "integrity" "sha512-kDUmfm3BZrei0y+1NTHJInejzxfhtU8eDj2M7OKb2IWrPFAeO1SOH2KuQ68MSZu9IGEHcxbkKKR1v18FrUSOmA==" - "resolved" "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.2.2.tgz" - "version" "0.2.2" +webpack-virtual-modules@^0.2.2: + version "0.2.2" + resolved "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.2.2.tgz" + integrity sha512-kDUmfm3BZrei0y+1NTHJInejzxfhtU8eDj2M7OKb2IWrPFAeO1SOH2KuQ68MSZu9IGEHcxbkKKR1v18FrUSOmA== dependencies: - "debug" "^3.0.0" + debug "^3.0.0" -"webpack-virtual-modules@^0.4.1": - "integrity" "sha512-5tyDlKLqPfMqjT3Q9TAqf2YqjwmnUleZwzJi1A5qXnlBCdj2AtOJ6wAWdglTIDOPgOiOrXeBeFcsQ8+aGQ6QbA==" - "resolved" "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.4.6.tgz" - "version" "0.4.6" +webpack-virtual-modules@^0.4.1: + version "0.4.6" + resolved "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.4.6.tgz" + integrity sha512-5tyDlKLqPfMqjT3Q9TAqf2YqjwmnUleZwzJi1A5qXnlBCdj2AtOJ6wAWdglTIDOPgOiOrXeBeFcsQ8+aGQ6QbA== -"webpack@*", "webpack@^2.0.0 || ^3.0.0 || ^4.0.0", "webpack@^4.0.0", "webpack@^4.0.0 || ^5.0.0", "webpack@^4.27.0 || ^5.0.0", "webpack@^4.36.0 || ^5.0.0", "webpack@^4.37.0 || ^5.0.0", "webpack@^4.4.0 || ^5.0.0", "webpack@^4.4.0 || ^5.9.0", "webpack@^4.44.2 || ^5.47.0", "webpack@^5.0.0", "webpack@^5.1.0", "webpack@^5.20.0", "webpack@^5.64.4", "webpack@^5.9.0", "webpack@>= 4", "webpack@>=2", "webpack@>=4.43.0 <6.0.0", "webpack@5": - "integrity" "sha512-piaIaoVJlqMsPtX/+3KTTO6jfvrSYgauFVdt8cr9LTHKmcq/AMd4mhzsiP7ZF/PGRNPGA8336jldh9l2Kt2ogQ==" - "resolved" "https://registry.npmjs.org/webpack/-/webpack-5.75.0.tgz" - "version" "5.75.0" +webpack@4: + version "4.46.0" + resolved "https://registry.npmjs.org/webpack/-/webpack-4.46.0.tgz" + integrity sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-module-context" "1.9.0" + "@webassemblyjs/wasm-edit" "1.9.0" + "@webassemblyjs/wasm-parser" "1.9.0" + acorn "^6.4.1" + ajv "^6.10.2" + ajv-keywords "^3.4.1" + chrome-trace-event "^1.0.2" + enhanced-resolve "^4.5.0" + eslint-scope "^4.0.3" + json-parse-better-errors "^1.0.2" + loader-runner "^2.4.0" + loader-utils "^1.2.3" + memory-fs "^0.4.1" + micromatch "^3.1.10" + mkdirp "^0.5.3" + neo-async "^2.6.1" + node-libs-browser "^2.2.1" + schema-utils "^1.0.0" + tapable "^1.1.3" + terser-webpack-plugin "^1.4.3" + watchpack "^1.7.4" + webpack-sources "^1.4.1" + +webpack@5, "webpack@>=4.43.0 <6.0.0", webpack@^5.64.4, webpack@^5.9.0: + version "5.75.0" + resolved "https://registry.npmjs.org/webpack/-/webpack-5.75.0.tgz" + integrity sha512-piaIaoVJlqMsPtX/+3KTTO6jfvrSYgauFVdt8cr9LTHKmcq/AMd4mhzsiP7ZF/PGRNPGA8336jldh9l2Kt2ogQ== dependencies: "@types/eslint-scope" "^3.7.3" "@types/estree" "^0.0.51" "@webassemblyjs/ast" "1.11.1" "@webassemblyjs/wasm-edit" "1.11.1" "@webassemblyjs/wasm-parser" "1.11.1" - "acorn" "^8.7.1" - "acorn-import-assertions" "^1.7.6" - "browserslist" "^4.14.5" - "chrome-trace-event" "^1.0.2" - "enhanced-resolve" "^5.10.0" - "es-module-lexer" "^0.9.0" - "eslint-scope" "5.1.1" - "events" "^3.2.0" - "glob-to-regexp" "^0.4.1" - "graceful-fs" "^4.2.9" - "json-parse-even-better-errors" "^2.3.1" - "loader-runner" "^4.2.0" - "mime-types" "^2.1.27" - "neo-async" "^2.6.2" - "schema-utils" "^3.1.0" - "tapable" "^2.1.1" - "terser-webpack-plugin" "^5.1.3" - "watchpack" "^2.4.0" - "webpack-sources" "^3.2.3" + acorn "^8.7.1" + acorn-import-assertions "^1.7.6" + browserslist "^4.14.5" + chrome-trace-event "^1.0.2" + enhanced-resolve "^5.10.0" + es-module-lexer "^0.9.0" + eslint-scope "5.1.1" + events "^3.2.0" + glob-to-regexp "^0.4.1" + graceful-fs "^4.2.9" + json-parse-even-better-errors "^2.3.1" + loader-runner "^4.2.0" + mime-types "^2.1.27" + neo-async "^2.6.2" + schema-utils "^3.1.0" + tapable "^2.1.1" + terser-webpack-plugin "^5.1.3" + watchpack "^2.4.0" + webpack-sources "^3.2.3" -"webpack@4": - "integrity" "sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q==" - "resolved" "https://registry.npmjs.org/webpack/-/webpack-4.46.0.tgz" - "version" "4.46.0" +websocket-driver@>=0.5.1, websocket-driver@^0.7.4: + version "0.7.4" + resolved "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz" + integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-module-context" "1.9.0" - "@webassemblyjs/wasm-edit" "1.9.0" - "@webassemblyjs/wasm-parser" "1.9.0" - "acorn" "^6.4.1" - "ajv" "^6.10.2" - "ajv-keywords" "^3.4.1" - "chrome-trace-event" "^1.0.2" - "enhanced-resolve" "^4.5.0" - "eslint-scope" "^4.0.3" - "json-parse-better-errors" "^1.0.2" - "loader-runner" "^2.4.0" - "loader-utils" "^1.2.3" - "memory-fs" "^0.4.1" - "micromatch" "^3.1.10" - "mkdirp" "^0.5.3" - "neo-async" "^2.6.1" - "node-libs-browser" "^2.2.1" - "schema-utils" "^1.0.0" - "tapable" "^1.1.3" - "terser-webpack-plugin" "^1.4.3" - "watchpack" "^1.7.4" - "webpack-sources" "^1.4.1" + http-parser-js ">=0.5.1" + safe-buffer ">=5.1.0" + websocket-extensions ">=0.1.1" -"websocket-driver@^0.7.4", "websocket-driver@>=0.5.1": - "integrity" "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==" - "resolved" "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz" - "version" "0.7.4" +websocket-extensions@>=0.1.1: + version "0.1.4" + resolved "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz" + integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== + +whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz" + integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== dependencies: - "http-parser-js" ">=0.5.1" - "safe-buffer" ">=5.1.0" - "websocket-extensions" ">=0.1.1" + iconv-lite "0.4.24" -"websocket-extensions@>=0.1.1": - "integrity" "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==" - "resolved" "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz" - "version" "0.1.4" +whatwg-fetch@^3.0.0, whatwg-fetch@^3.6.2: + version "3.6.2" + resolved "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz" + integrity sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA== -"whatwg-encoding@^1.0.1", "whatwg-encoding@^1.0.5": - "integrity" "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==" - "resolved" "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz" - "version" "1.0.5" +whatwg-mimetype@^2.2.0, whatwg-mimetype@^2.3.0: + version "2.3.0" + resolved "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz" + integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== + +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz" + integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== dependencies: - "iconv-lite" "0.4.24" + tr46 "~0.0.3" + webidl-conversions "^3.0.0" -"whatwg-fetch@^3.0.0", "whatwg-fetch@^3.6.2": - "integrity" "sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA==" - "resolved" "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz" - "version" "3.6.2" - -"whatwg-mimetype@^2.2.0", "whatwg-mimetype@^2.3.0": - "integrity" "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==" - "resolved" "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz" - "version" "2.3.0" - -"whatwg-url@^5.0.0": - "integrity" "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==" - "resolved" "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz" - "version" "5.0.0" +whatwg-url@^7.0.0: + version "7.1.0" + resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz" + integrity sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg== dependencies: - "tr46" "~0.0.3" - "webidl-conversions" "^3.0.0" + lodash.sortby "^4.7.0" + tr46 "^1.0.1" + webidl-conversions "^4.0.2" -"whatwg-url@^7.0.0": - "integrity" "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==" - "resolved" "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz" - "version" "7.1.0" +whatwg-url@^8.0.0, whatwg-url@^8.5.0: + version "8.7.0" + resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz" + integrity sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg== dependencies: - "lodash.sortby" "^4.7.0" - "tr46" "^1.0.1" - "webidl-conversions" "^4.0.2" + lodash "^4.7.0" + tr46 "^2.1.0" + webidl-conversions "^6.1.0" -"whatwg-url@^8.0.0", "whatwg-url@^8.5.0": - "integrity" "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==" - "resolved" "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz" - "version" "8.7.0" +which-boxed-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz" + integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== dependencies: - "lodash" "^4.7.0" - "tr46" "^2.1.0" - "webidl-conversions" "^6.1.0" + is-bigint "^1.0.1" + is-boolean-object "^1.1.0" + is-number-object "^1.0.4" + is-string "^1.0.5" + is-symbol "^1.0.3" -"which-boxed-primitive@^1.0.2": - "integrity" "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==" - "resolved" "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz" - "version" "1.0.2" +which-collection@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz" + integrity sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A== dependencies: - "is-bigint" "^1.0.1" - "is-boolean-object" "^1.1.0" - "is-number-object" "^1.0.4" - "is-string" "^1.0.5" - "is-symbol" "^1.0.3" + is-map "^2.0.1" + is-set "^2.0.1" + is-weakmap "^2.0.1" + is-weakset "^2.0.1" -"which-collection@^1.0.1": - "integrity" "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==" - "resolved" "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz" - "version" "1.0.1" +which-module@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz" + integrity sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q== + +which-typed-array@^1.1.2, which-typed-array@^1.1.8: + version "1.1.9" + resolved "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz" + integrity sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA== dependencies: - "is-map" "^2.0.1" - "is-set" "^2.0.1" - "is-weakmap" "^2.0.1" - "is-weakset" "^2.0.1" + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + for-each "^0.3.3" + gopd "^1.0.1" + has-tostringtag "^1.0.0" + is-typed-array "^1.1.10" -"which-module@^2.0.0": - "integrity" "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==" - "resolved" "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz" - "version" "2.0.0" - -"which-typed-array@^1.1.2", "which-typed-array@^1.1.8": - "integrity" "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==" - "resolved" "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz" - "version" "1.1.9" +which@^1.2.9, which@^1.3.1: + version "1.3.1" + resolved "https://registry.npmjs.org/which/-/which-1.3.1.tgz" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== dependencies: - "available-typed-arrays" "^1.0.5" - "call-bind" "^1.0.2" - "for-each" "^0.3.3" - "gopd" "^1.0.1" - "has-tostringtag" "^1.0.0" - "is-typed-array" "^1.1.10" + isexe "^2.0.0" -"which@^1.2.9": - "integrity" "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==" - "resolved" "https://registry.npmjs.org/which/-/which-1.3.1.tgz" - "version" "1.3.1" +which@^2.0.1: + version "2.0.2" + resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== dependencies: - "isexe" "^2.0.0" + isexe "^2.0.0" -"which@^1.3.1": - "integrity" "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==" - "resolved" "https://registry.npmjs.org/which/-/which-1.3.1.tgz" - "version" "1.3.1" +wide-align@^1.1.2: + version "1.1.5" + resolved "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz" + integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== dependencies: - "isexe" "^2.0.0" + string-width "^1.0.2 || 2 || 3 || 4" -"which@^2.0.1": - "integrity" "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==" - "resolved" "https://registry.npmjs.org/which/-/which-2.0.2.tgz" - "version" "2.0.2" +widest-line@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz" + integrity sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg== dependencies: - "isexe" "^2.0.0" + string-width "^4.0.0" -"wide-align@^1.1.2": - "integrity" "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==" - "resolved" "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz" - "version" "1.1.5" +word-wrap@^1.2.3, word-wrap@~1.2.3: + version "1.2.3" + resolved "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz" + integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== + +wordwrap@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz" + integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q== + +workbox-background-sync@6.5.4: + version "6.5.4" + resolved "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-6.5.4.tgz" + integrity sha512-0r4INQZMyPky/lj4Ou98qxcThrETucOde+7mRGJl13MPJugQNKeZQOdIJe/1AchOP23cTqHcN/YVpD6r8E6I8g== dependencies: - "string-width" "^1.0.2 || 2 || 3 || 4" + idb "^7.0.1" + workbox-core "6.5.4" -"widest-line@^3.1.0": - "integrity" "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==" - "resolved" "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz" - "version" "3.1.0" +workbox-background-sync@^4.3.1: + version "4.3.1" + resolved "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-4.3.1.tgz" + integrity sha512-1uFkvU8JXi7L7fCHVBEEnc3asPpiAL33kO495UMcD5+arew9IbKW2rV5lpzhoWcm/qhGB89YfO4PmB/0hQwPRg== dependencies: - "string-width" "^4.0.0" + workbox-core "^4.3.1" -"word-wrap@^1.2.3", "word-wrap@~1.2.3": - "integrity" "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==" - "resolved" "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz" - "version" "1.2.3" - -"wordwrap@^1.0.0": - "integrity" "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==" - "resolved" "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz" - "version" "1.0.0" - -"workbox-background-sync@^4.3.1": - "integrity" "sha512-1uFkvU8JXi7L7fCHVBEEnc3asPpiAL33kO495UMcD5+arew9IbKW2rV5lpzhoWcm/qhGB89YfO4PmB/0hQwPRg==" - "resolved" "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-4.3.1.tgz" - "version" "4.3.1" +workbox-broadcast-update@6.5.4: + version "6.5.4" + resolved "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-6.5.4.tgz" + integrity sha512-I/lBERoH1u3zyBosnpPEtcAVe5lwykx9Yg1k6f8/BGEPGaMMgZrwVrqL1uA9QZ1NGGFoyE6t9i7lBjOlDhFEEw== dependencies: - "workbox-core" "^4.3.1" + workbox-core "6.5.4" -"workbox-background-sync@6.5.4": - "integrity" "sha512-0r4INQZMyPky/lj4Ou98qxcThrETucOde+7mRGJl13MPJugQNKeZQOdIJe/1AchOP23cTqHcN/YVpD6r8E6I8g==" - "resolved" "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-6.5.4.tgz" - "version" "6.5.4" +workbox-broadcast-update@^4.3.1: + version "4.3.1" + resolved "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-4.3.1.tgz" + integrity sha512-MTSfgzIljpKLTBPROo4IpKjESD86pPFlZwlvVG32Kb70hW+aob4Jxpblud8EhNb1/L5m43DUM4q7C+W6eQMMbA== dependencies: - "idb" "^7.0.1" - "workbox-core" "6.5.4" + workbox-core "^4.3.1" -"workbox-broadcast-update@^4.3.1": - "integrity" "sha512-MTSfgzIljpKLTBPROo4IpKjESD86pPFlZwlvVG32Kb70hW+aob4Jxpblud8EhNb1/L5m43DUM4q7C+W6eQMMbA==" - "resolved" "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-4.3.1.tgz" - "version" "4.3.1" - dependencies: - "workbox-core" "^4.3.1" - -"workbox-broadcast-update@6.5.4": - "integrity" "sha512-I/lBERoH1u3zyBosnpPEtcAVe5lwykx9Yg1k6f8/BGEPGaMMgZrwVrqL1uA9QZ1NGGFoyE6t9i7lBjOlDhFEEw==" - "resolved" "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-6.5.4.tgz" - "version" "6.5.4" - dependencies: - "workbox-core" "6.5.4" - -"workbox-build@^4.3.1": - "integrity" "sha512-UHdwrN3FrDvicM3AqJS/J07X0KXj67R8Cg0waq1MKEOqzo89ap6zh6LmaLnRAjpB+bDIz+7OlPye9iii9KBnxw==" - "resolved" "https://registry.npmjs.org/workbox-build/-/workbox-build-4.3.1.tgz" - "version" "4.3.1" - dependencies: - "@babel/runtime" "^7.3.4" - "@hapi/joi" "^15.0.0" - "common-tags" "^1.8.0" - "fs-extra" "^4.0.2" - "glob" "^7.1.3" - "lodash.template" "^4.4.0" - "pretty-bytes" "^5.1.0" - "stringify-object" "^3.3.0" - "strip-comments" "^1.0.2" - "workbox-background-sync" "^4.3.1" - "workbox-broadcast-update" "^4.3.1" - "workbox-cacheable-response" "^4.3.1" - "workbox-core" "^4.3.1" - "workbox-expiration" "^4.3.1" - "workbox-google-analytics" "^4.3.1" - "workbox-navigation-preload" "^4.3.1" - "workbox-precaching" "^4.3.1" - "workbox-range-requests" "^4.3.1" - "workbox-routing" "^4.3.1" - "workbox-strategies" "^4.3.1" - "workbox-streams" "^4.3.1" - "workbox-sw" "^4.3.1" - "workbox-window" "^4.3.1" - -"workbox-build@6.5.4": - "integrity" "sha512-kgRevLXEYvUW9WS4XoziYqZ8Q9j/2ziJYEtTrjdz5/L/cTUa2XfyMP2i7c3p34lgqJ03+mTiz13SdFef2POwbA==" - "resolved" "https://registry.npmjs.org/workbox-build/-/workbox-build-6.5.4.tgz" - "version" "6.5.4" +workbox-build@6.5.4: + version "6.5.4" + resolved "https://registry.npmjs.org/workbox-build/-/workbox-build-6.5.4.tgz" + integrity sha512-kgRevLXEYvUW9WS4XoziYqZ8Q9j/2ziJYEtTrjdz5/L/cTUa2XfyMP2i7c3p34lgqJ03+mTiz13SdFef2POwbA== dependencies: "@apideck/better-ajv-errors" "^0.3.1" "@babel/core" "^7.11.1" @@ -23154,464 +22224,493 @@ "@rollup/plugin-node-resolve" "^11.2.1" "@rollup/plugin-replace" "^2.4.1" "@surma/rollup-plugin-off-main-thread" "^2.2.3" - "ajv" "^8.6.0" - "common-tags" "^1.8.0" - "fast-json-stable-stringify" "^2.1.0" - "fs-extra" "^9.0.1" - "glob" "^7.1.6" - "lodash" "^4.17.20" - "pretty-bytes" "^5.3.0" - "rollup" "^2.43.1" - "rollup-plugin-terser" "^7.0.0" - "source-map" "^0.8.0-beta.0" - "stringify-object" "^3.3.0" - "strip-comments" "^2.0.1" - "tempy" "^0.6.0" - "upath" "^1.2.0" - "workbox-background-sync" "6.5.4" - "workbox-broadcast-update" "6.5.4" - "workbox-cacheable-response" "6.5.4" - "workbox-core" "6.5.4" - "workbox-expiration" "6.5.4" - "workbox-google-analytics" "6.5.4" - "workbox-navigation-preload" "6.5.4" - "workbox-precaching" "6.5.4" - "workbox-range-requests" "6.5.4" - "workbox-recipes" "6.5.4" - "workbox-routing" "6.5.4" - "workbox-strategies" "6.5.4" - "workbox-streams" "6.5.4" - "workbox-sw" "6.5.4" - "workbox-window" "6.5.4" + ajv "^8.6.0" + common-tags "^1.8.0" + fast-json-stable-stringify "^2.1.0" + fs-extra "^9.0.1" + glob "^7.1.6" + lodash "^4.17.20" + pretty-bytes "^5.3.0" + rollup "^2.43.1" + rollup-plugin-terser "^7.0.0" + source-map "^0.8.0-beta.0" + stringify-object "^3.3.0" + strip-comments "^2.0.1" + tempy "^0.6.0" + upath "^1.2.0" + workbox-background-sync "6.5.4" + workbox-broadcast-update "6.5.4" + workbox-cacheable-response "6.5.4" + workbox-core "6.5.4" + workbox-expiration "6.5.4" + workbox-google-analytics "6.5.4" + workbox-navigation-preload "6.5.4" + workbox-precaching "6.5.4" + workbox-range-requests "6.5.4" + workbox-recipes "6.5.4" + workbox-routing "6.5.4" + workbox-strategies "6.5.4" + workbox-streams "6.5.4" + workbox-sw "6.5.4" + workbox-window "6.5.4" -"workbox-cacheable-response@^4.3.1": - "integrity" "sha512-Rp5qlzm6z8IOvnQNkCdO9qrDgDpoPNguovs0H8C+wswLuPgSzSp9p2afb5maUt9R1uTIwOXrVQMmPfPypv+npw==" - "resolved" "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-4.3.1.tgz" - "version" "4.3.1" +workbox-build@^4.3.1: + version "4.3.1" + resolved "https://registry.npmjs.org/workbox-build/-/workbox-build-4.3.1.tgz" + integrity sha512-UHdwrN3FrDvicM3AqJS/J07X0KXj67R8Cg0waq1MKEOqzo89ap6zh6LmaLnRAjpB+bDIz+7OlPye9iii9KBnxw== dependencies: - "workbox-core" "^4.3.1" + "@babel/runtime" "^7.3.4" + "@hapi/joi" "^15.0.0" + common-tags "^1.8.0" + fs-extra "^4.0.2" + glob "^7.1.3" + lodash.template "^4.4.0" + pretty-bytes "^5.1.0" + stringify-object "^3.3.0" + strip-comments "^1.0.2" + workbox-background-sync "^4.3.1" + workbox-broadcast-update "^4.3.1" + workbox-cacheable-response "^4.3.1" + workbox-core "^4.3.1" + workbox-expiration "^4.3.1" + workbox-google-analytics "^4.3.1" + workbox-navigation-preload "^4.3.1" + workbox-precaching "^4.3.1" + workbox-range-requests "^4.3.1" + workbox-routing "^4.3.1" + workbox-strategies "^4.3.1" + workbox-streams "^4.3.1" + workbox-sw "^4.3.1" + workbox-window "^4.3.1" -"workbox-cacheable-response@6.5.4": - "integrity" "sha512-DCR9uD0Fqj8oB2TSWQEm1hbFs/85hXXoayVwFKLVuIuxwJaihBsLsp4y7J9bvZbqtPJ1KlCkmYVGQKrBU4KAug==" - "resolved" "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-6.5.4.tgz" - "version" "6.5.4" +workbox-cacheable-response@6.5.4: + version "6.5.4" + resolved "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-6.5.4.tgz" + integrity sha512-DCR9uD0Fqj8oB2TSWQEm1hbFs/85hXXoayVwFKLVuIuxwJaihBsLsp4y7J9bvZbqtPJ1KlCkmYVGQKrBU4KAug== dependencies: - "workbox-core" "6.5.4" + workbox-core "6.5.4" -"workbox-core@^4.3.1": - "integrity" "sha512-I3C9jlLmMKPxAC1t0ExCq+QoAMd0vAAHULEgRZ7kieCdUd919n53WC0AfvokHNwqRhGn+tIIj7vcb5duCjs2Kg==" - "resolved" "https://registry.npmjs.org/workbox-core/-/workbox-core-4.3.1.tgz" - "version" "4.3.1" - -"workbox-core@6.5.4": - "integrity" "sha512-OXYb+m9wZm8GrORlV2vBbE5EC1FKu71GGp0H4rjmxmF4/HLbMCoTFws87M3dFwgpmg0v00K++PImpNQ6J5NQ6Q==" - "resolved" "https://registry.npmjs.org/workbox-core/-/workbox-core-6.5.4.tgz" - "version" "6.5.4" - -"workbox-expiration@^4.3.1": - "integrity" "sha512-vsJLhgQsQouv9m0rpbXubT5jw0jMQdjpkum0uT+d9tTwhXcEZks7qLfQ9dGSaufTD2eimxbUOJfWLbNQpIDMPw==" - "resolved" "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-4.3.1.tgz" - "version" "4.3.1" +workbox-cacheable-response@^4.3.1: + version "4.3.1" + resolved "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-4.3.1.tgz" + integrity sha512-Rp5qlzm6z8IOvnQNkCdO9qrDgDpoPNguovs0H8C+wswLuPgSzSp9p2afb5maUt9R1uTIwOXrVQMmPfPypv+npw== dependencies: - "workbox-core" "^4.3.1" + workbox-core "^4.3.1" -"workbox-expiration@6.5.4": - "integrity" "sha512-jUP5qPOpH1nXtjGGh1fRBa1wJL2QlIb5mGpct3NzepjGG2uFFBn4iiEBiI9GUmfAFR2ApuRhDydjcRmYXddiEQ==" - "resolved" "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-6.5.4.tgz" - "version" "6.5.4" +workbox-core@6.5.4: + version "6.5.4" + resolved "https://registry.npmjs.org/workbox-core/-/workbox-core-6.5.4.tgz" + integrity sha512-OXYb+m9wZm8GrORlV2vBbE5EC1FKu71GGp0H4rjmxmF4/HLbMCoTFws87M3dFwgpmg0v00K++PImpNQ6J5NQ6Q== + +workbox-core@^4.3.1: + version "4.3.1" + resolved "https://registry.npmjs.org/workbox-core/-/workbox-core-4.3.1.tgz" + integrity sha512-I3C9jlLmMKPxAC1t0ExCq+QoAMd0vAAHULEgRZ7kieCdUd919n53WC0AfvokHNwqRhGn+tIIj7vcb5duCjs2Kg== + +workbox-expiration@6.5.4: + version "6.5.4" + resolved "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-6.5.4.tgz" + integrity sha512-jUP5qPOpH1nXtjGGh1fRBa1wJL2QlIb5mGpct3NzepjGG2uFFBn4iiEBiI9GUmfAFR2ApuRhDydjcRmYXddiEQ== dependencies: - "idb" "^7.0.1" - "workbox-core" "6.5.4" + idb "^7.0.1" + workbox-core "6.5.4" -"workbox-google-analytics@^4.3.1": - "integrity" "sha512-xzCjAoKuOb55CBSwQrbyWBKqp35yg1vw9ohIlU2wTy06ZrYfJ8rKochb1MSGlnoBfXGWss3UPzxR5QL5guIFdg==" - "resolved" "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-4.3.1.tgz" - "version" "4.3.1" +workbox-expiration@^4.3.1: + version "4.3.1" + resolved "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-4.3.1.tgz" + integrity sha512-vsJLhgQsQouv9m0rpbXubT5jw0jMQdjpkum0uT+d9tTwhXcEZks7qLfQ9dGSaufTD2eimxbUOJfWLbNQpIDMPw== dependencies: - "workbox-background-sync" "^4.3.1" - "workbox-core" "^4.3.1" - "workbox-routing" "^4.3.1" - "workbox-strategies" "^4.3.1" + workbox-core "^4.3.1" -"workbox-google-analytics@6.5.4": - "integrity" "sha512-8AU1WuaXsD49249Wq0B2zn4a/vvFfHkpcFfqAFHNHwln3jK9QUYmzdkKXGIZl9wyKNP+RRX30vcgcyWMcZ9VAg==" - "resolved" "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-6.5.4.tgz" - "version" "6.5.4" +workbox-google-analytics@6.5.4: + version "6.5.4" + resolved "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-6.5.4.tgz" + integrity sha512-8AU1WuaXsD49249Wq0B2zn4a/vvFfHkpcFfqAFHNHwln3jK9QUYmzdkKXGIZl9wyKNP+RRX30vcgcyWMcZ9VAg== dependencies: - "workbox-background-sync" "6.5.4" - "workbox-core" "6.5.4" - "workbox-routing" "6.5.4" - "workbox-strategies" "6.5.4" + workbox-background-sync "6.5.4" + workbox-core "6.5.4" + workbox-routing "6.5.4" + workbox-strategies "6.5.4" -"workbox-navigation-preload@^4.3.1": - "integrity" "sha512-K076n3oFHYp16/C+F8CwrRqD25GitA6Rkd6+qAmLmMv1QHPI2jfDwYqrytOfKfYq42bYtW8Pr21ejZX7GvALOw==" - "resolved" "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-4.3.1.tgz" - "version" "4.3.1" +workbox-google-analytics@^4.3.1: + version "4.3.1" + resolved "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-4.3.1.tgz" + integrity sha512-xzCjAoKuOb55CBSwQrbyWBKqp35yg1vw9ohIlU2wTy06ZrYfJ8rKochb1MSGlnoBfXGWss3UPzxR5QL5guIFdg== dependencies: - "workbox-core" "^4.3.1" + workbox-background-sync "^4.3.1" + workbox-core "^4.3.1" + workbox-routing "^4.3.1" + workbox-strategies "^4.3.1" -"workbox-navigation-preload@6.5.4": - "integrity" "sha512-IIwf80eO3cr8h6XSQJF+Hxj26rg2RPFVUmJLUlM0+A2GzB4HFbQyKkrgD5y2d84g2IbJzP4B4j5dPBRzamHrng==" - "resolved" "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-6.5.4.tgz" - "version" "6.5.4" +workbox-navigation-preload@6.5.4: + version "6.5.4" + resolved "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-6.5.4.tgz" + integrity sha512-IIwf80eO3cr8h6XSQJF+Hxj26rg2RPFVUmJLUlM0+A2GzB4HFbQyKkrgD5y2d84g2IbJzP4B4j5dPBRzamHrng== dependencies: - "workbox-core" "6.5.4" + workbox-core "6.5.4" -"workbox-precaching@^4.3.1": - "integrity" "sha512-piSg/2csPoIi/vPpp48t1q5JLYjMkmg5gsXBQkh/QYapCdVwwmKlU9mHdmy52KsDGIjVaqEUMFvEzn2LRaigqQ==" - "resolved" "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-4.3.1.tgz" - "version" "4.3.1" +workbox-navigation-preload@^4.3.1: + version "4.3.1" + resolved "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-4.3.1.tgz" + integrity sha512-K076n3oFHYp16/C+F8CwrRqD25GitA6Rkd6+qAmLmMv1QHPI2jfDwYqrytOfKfYq42bYtW8Pr21ejZX7GvALOw== dependencies: - "workbox-core" "^4.3.1" + workbox-core "^4.3.1" -"workbox-precaching@6.5.4": - "integrity" "sha512-hSMezMsW6btKnxHB4bFy2Qfwey/8SYdGWvVIKFaUm8vJ4E53JAY+U2JwLTRD8wbLWoP6OVUdFlXsTdKu9yoLTg==" - "resolved" "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-6.5.4.tgz" - "version" "6.5.4" +workbox-precaching@6.5.4: + version "6.5.4" + resolved "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-6.5.4.tgz" + integrity sha512-hSMezMsW6btKnxHB4bFy2Qfwey/8SYdGWvVIKFaUm8vJ4E53JAY+U2JwLTRD8wbLWoP6OVUdFlXsTdKu9yoLTg== dependencies: - "workbox-core" "6.5.4" - "workbox-routing" "6.5.4" - "workbox-strategies" "6.5.4" + workbox-core "6.5.4" + workbox-routing "6.5.4" + workbox-strategies "6.5.4" -"workbox-range-requests@^4.3.1": - "integrity" "sha512-S+HhL9+iTFypJZ/yQSl/x2Bf5pWnbXdd3j57xnb0V60FW1LVn9LRZkPtneODklzYuFZv7qK6riZ5BNyc0R0jZA==" - "resolved" "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-4.3.1.tgz" - "version" "4.3.1" +workbox-precaching@^4.3.1: + version "4.3.1" + resolved "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-4.3.1.tgz" + integrity sha512-piSg/2csPoIi/vPpp48t1q5JLYjMkmg5gsXBQkh/QYapCdVwwmKlU9mHdmy52KsDGIjVaqEUMFvEzn2LRaigqQ== dependencies: - "workbox-core" "^4.3.1" + workbox-core "^4.3.1" -"workbox-range-requests@6.5.4": - "integrity" "sha512-Je2qR1NXCFC8xVJ/Lux6saH6IrQGhMpDrPXWZWWS8n/RD+WZfKa6dSZwU+/QksfEadJEr/NfY+aP/CXFFK5JFg==" - "resolved" "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-6.5.4.tgz" - "version" "6.5.4" +workbox-range-requests@6.5.4: + version "6.5.4" + resolved "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-6.5.4.tgz" + integrity sha512-Je2qR1NXCFC8xVJ/Lux6saH6IrQGhMpDrPXWZWWS8n/RD+WZfKa6dSZwU+/QksfEadJEr/NfY+aP/CXFFK5JFg== dependencies: - "workbox-core" "6.5.4" + workbox-core "6.5.4" -"workbox-recipes@6.5.4": - "integrity" "sha512-QZNO8Ez708NNwzLNEXTG4QYSKQ1ochzEtRLGaq+mr2PyoEIC1xFW7MrWxrONUxBFOByksds9Z4//lKAX8tHyUA==" - "resolved" "https://registry.npmjs.org/workbox-recipes/-/workbox-recipes-6.5.4.tgz" - "version" "6.5.4" +workbox-range-requests@^4.3.1: + version "4.3.1" + resolved "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-4.3.1.tgz" + integrity sha512-S+HhL9+iTFypJZ/yQSl/x2Bf5pWnbXdd3j57xnb0V60FW1LVn9LRZkPtneODklzYuFZv7qK6riZ5BNyc0R0jZA== dependencies: - "workbox-cacheable-response" "6.5.4" - "workbox-core" "6.5.4" - "workbox-expiration" "6.5.4" - "workbox-precaching" "6.5.4" - "workbox-routing" "6.5.4" - "workbox-strategies" "6.5.4" + workbox-core "^4.3.1" -"workbox-routing@^4.3.1": - "integrity" "sha512-FkbtrODA4Imsi0p7TW9u9MXuQ5P4pVs1sWHK4dJMMChVROsbEltuE79fBoIk/BCztvOJ7yUpErMKa4z3uQLX+g==" - "resolved" "https://registry.npmjs.org/workbox-routing/-/workbox-routing-4.3.1.tgz" - "version" "4.3.1" +workbox-recipes@6.5.4: + version "6.5.4" + resolved "https://registry.npmjs.org/workbox-recipes/-/workbox-recipes-6.5.4.tgz" + integrity sha512-QZNO8Ez708NNwzLNEXTG4QYSKQ1ochzEtRLGaq+mr2PyoEIC1xFW7MrWxrONUxBFOByksds9Z4//lKAX8tHyUA== dependencies: - "workbox-core" "^4.3.1" + workbox-cacheable-response "6.5.4" + workbox-core "6.5.4" + workbox-expiration "6.5.4" + workbox-precaching "6.5.4" + workbox-routing "6.5.4" + workbox-strategies "6.5.4" -"workbox-routing@6.5.4": - "integrity" "sha512-apQswLsbrrOsBUWtr9Lf80F+P1sHnQdYodRo32SjiByYi36IDyL2r7BH1lJtFX8fwNHDa1QOVY74WKLLS6o5Pg==" - "resolved" "https://registry.npmjs.org/workbox-routing/-/workbox-routing-6.5.4.tgz" - "version" "6.5.4" +workbox-routing@6.5.4: + version "6.5.4" + resolved "https://registry.npmjs.org/workbox-routing/-/workbox-routing-6.5.4.tgz" + integrity sha512-apQswLsbrrOsBUWtr9Lf80F+P1sHnQdYodRo32SjiByYi36IDyL2r7BH1lJtFX8fwNHDa1QOVY74WKLLS6o5Pg== dependencies: - "workbox-core" "6.5.4" + workbox-core "6.5.4" -"workbox-strategies@^4.3.1": - "integrity" "sha512-F/+E57BmVG8dX6dCCopBlkDvvhg/zj6VDs0PigYwSN23L8hseSRwljrceU2WzTvk/+BSYICsWmRq5qHS2UYzhw==" - "resolved" "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-4.3.1.tgz" - "version" "4.3.1" +workbox-routing@^4.3.1: + version "4.3.1" + resolved "https://registry.npmjs.org/workbox-routing/-/workbox-routing-4.3.1.tgz" + integrity sha512-FkbtrODA4Imsi0p7TW9u9MXuQ5P4pVs1sWHK4dJMMChVROsbEltuE79fBoIk/BCztvOJ7yUpErMKa4z3uQLX+g== dependencies: - "workbox-core" "^4.3.1" + workbox-core "^4.3.1" -"workbox-strategies@6.5.4": - "integrity" "sha512-DEtsxhx0LIYWkJBTQolRxG4EI0setTJkqR4m7r4YpBdxtWJH1Mbg01Cj8ZjNOO8etqfA3IZaOPHUxCs8cBsKLw==" - "resolved" "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-6.5.4.tgz" - "version" "6.5.4" +workbox-strategies@6.5.4: + version "6.5.4" + resolved "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-6.5.4.tgz" + integrity sha512-DEtsxhx0LIYWkJBTQolRxG4EI0setTJkqR4m7r4YpBdxtWJH1Mbg01Cj8ZjNOO8etqfA3IZaOPHUxCs8cBsKLw== dependencies: - "workbox-core" "6.5.4" + workbox-core "6.5.4" -"workbox-streams@^4.3.1": - "integrity" "sha512-4Kisis1f/y0ihf4l3u/+ndMkJkIT4/6UOacU3A4BwZSAC9pQ9vSvJpIi/WFGQRH/uPXvuVjF5c2RfIPQFSS2uA==" - "resolved" "https://registry.npmjs.org/workbox-streams/-/workbox-streams-4.3.1.tgz" - "version" "4.3.1" +workbox-strategies@^4.3.1: + version "4.3.1" + resolved "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-4.3.1.tgz" + integrity sha512-F/+E57BmVG8dX6dCCopBlkDvvhg/zj6VDs0PigYwSN23L8hseSRwljrceU2WzTvk/+BSYICsWmRq5qHS2UYzhw== dependencies: - "workbox-core" "^4.3.1" + workbox-core "^4.3.1" -"workbox-streams@6.5.4": - "integrity" "sha512-FXKVh87d2RFXkliAIheBojBELIPnWbQdyDvsH3t74Cwhg0fDheL1T8BqSM86hZvC0ZESLsznSYWw+Va+KVbUzg==" - "resolved" "https://registry.npmjs.org/workbox-streams/-/workbox-streams-6.5.4.tgz" - "version" "6.5.4" +workbox-streams@6.5.4: + version "6.5.4" + resolved "https://registry.npmjs.org/workbox-streams/-/workbox-streams-6.5.4.tgz" + integrity sha512-FXKVh87d2RFXkliAIheBojBELIPnWbQdyDvsH3t74Cwhg0fDheL1T8BqSM86hZvC0ZESLsznSYWw+Va+KVbUzg== dependencies: - "workbox-core" "6.5.4" - "workbox-routing" "6.5.4" + workbox-core "6.5.4" + workbox-routing "6.5.4" -"workbox-sw@^4.3.1": - "integrity" "sha512-0jXdusCL2uC5gM3yYFT6QMBzKfBr2XTk0g5TPAV4y8IZDyVNDyj1a8uSXy3/XrvkVTmQvLN4O5k3JawGReXr9w==" - "resolved" "https://registry.npmjs.org/workbox-sw/-/workbox-sw-4.3.1.tgz" - "version" "4.3.1" - -"workbox-sw@6.5.4": - "integrity" "sha512-vo2RQo7DILVRoH5LjGqw3nphavEjK4Qk+FenXeUsknKn14eCNedHOXWbmnvP4ipKhlE35pvJ4yl4YYf6YsJArA==" - "resolved" "https://registry.npmjs.org/workbox-sw/-/workbox-sw-6.5.4.tgz" - "version" "6.5.4" - -"workbox-webpack-plugin@^6.4.1": - "integrity" "sha512-LmWm/zoaahe0EGmMTrSLUi+BjyR3cdGEfU3fS6PN1zKFYbqAKuQ+Oy/27e4VSXsyIwAw8+QDfk1XHNGtZu9nQg==" - "resolved" "https://registry.npmjs.org/workbox-webpack-plugin/-/workbox-webpack-plugin-6.5.4.tgz" - "version" "6.5.4" +workbox-streams@^4.3.1: + version "4.3.1" + resolved "https://registry.npmjs.org/workbox-streams/-/workbox-streams-4.3.1.tgz" + integrity sha512-4Kisis1f/y0ihf4l3u/+ndMkJkIT4/6UOacU3A4BwZSAC9pQ9vSvJpIi/WFGQRH/uPXvuVjF5c2RfIPQFSS2uA== dependencies: - "fast-json-stable-stringify" "^2.1.0" - "pretty-bytes" "^5.4.1" - "upath" "^1.2.0" - "webpack-sources" "^1.4.3" - "workbox-build" "6.5.4" + workbox-core "^4.3.1" -"workbox-webpack-plugin@4.3.1": - "integrity" "sha512-gJ9jd8Mb8wHLbRz9ZvGN57IAmknOipD3W4XNE/Lk/4lqs5Htw4WOQgakQy/o/4CoXQlMCYldaqUg+EJ35l9MEQ==" - "resolved" "https://registry.npmjs.org/workbox-webpack-plugin/-/workbox-webpack-plugin-4.3.1.tgz" - "version" "4.3.1" +workbox-sw@6.5.4: + version "6.5.4" + resolved "https://registry.npmjs.org/workbox-sw/-/workbox-sw-6.5.4.tgz" + integrity sha512-vo2RQo7DILVRoH5LjGqw3nphavEjK4Qk+FenXeUsknKn14eCNedHOXWbmnvP4ipKhlE35pvJ4yl4YYf6YsJArA== + +workbox-sw@^4.3.1: + version "4.3.1" + resolved "https://registry.npmjs.org/workbox-sw/-/workbox-sw-4.3.1.tgz" + integrity sha512-0jXdusCL2uC5gM3yYFT6QMBzKfBr2XTk0g5TPAV4y8IZDyVNDyj1a8uSXy3/XrvkVTmQvLN4O5k3JawGReXr9w== + +workbox-webpack-plugin@4.3.1: + version "4.3.1" + resolved "https://registry.npmjs.org/workbox-webpack-plugin/-/workbox-webpack-plugin-4.3.1.tgz" + integrity sha512-gJ9jd8Mb8wHLbRz9ZvGN57IAmknOipD3W4XNE/Lk/4lqs5Htw4WOQgakQy/o/4CoXQlMCYldaqUg+EJ35l9MEQ== dependencies: "@babel/runtime" "^7.0.0" - "json-stable-stringify" "^1.0.1" - "workbox-build" "^4.3.1" + json-stable-stringify "^1.0.1" + workbox-build "^4.3.1" -"workbox-window@^4.3.1": - "integrity" "sha512-C5gWKh6I58w3GeSc0wp2Ne+rqVw8qwcmZnQGpjiek8A2wpbxSJb1FdCoQVO+jDJs35bFgo/WETgl1fqgsxN0Hg==" - "resolved" "https://registry.npmjs.org/workbox-window/-/workbox-window-4.3.1.tgz" - "version" "4.3.1" +workbox-webpack-plugin@^6.4.1: + version "6.5.4" + resolved "https://registry.npmjs.org/workbox-webpack-plugin/-/workbox-webpack-plugin-6.5.4.tgz" + integrity sha512-LmWm/zoaahe0EGmMTrSLUi+BjyR3cdGEfU3fS6PN1zKFYbqAKuQ+Oy/27e4VSXsyIwAw8+QDfk1XHNGtZu9nQg== dependencies: - "workbox-core" "^4.3.1" + fast-json-stable-stringify "^2.1.0" + pretty-bytes "^5.4.1" + upath "^1.2.0" + webpack-sources "^1.4.3" + workbox-build "6.5.4" -"workbox-window@6.5.4": - "integrity" "sha512-HnLZJDwYBE+hpG25AQBO8RUWBJRaCsI9ksQJEp3aCOFCaG5kqaToAYXFRAHxzRluM2cQbGzdQF5rjKPWPA1fug==" - "resolved" "https://registry.npmjs.org/workbox-window/-/workbox-window-6.5.4.tgz" - "version" "6.5.4" +workbox-window@6.5.4: + version "6.5.4" + resolved "https://registry.npmjs.org/workbox-window/-/workbox-window-6.5.4.tgz" + integrity sha512-HnLZJDwYBE+hpG25AQBO8RUWBJRaCsI9ksQJEp3aCOFCaG5kqaToAYXFRAHxzRluM2cQbGzdQF5rjKPWPA1fug== dependencies: "@types/trusted-types" "^2.0.2" - "workbox-core" "6.5.4" + workbox-core "6.5.4" -"worker-farm@^1.7.0": - "integrity" "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==" - "resolved" "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz" - "version" "1.7.0" +workbox-window@^4.3.1: + version "4.3.1" + resolved "https://registry.npmjs.org/workbox-window/-/workbox-window-4.3.1.tgz" + integrity sha512-C5gWKh6I58w3GeSc0wp2Ne+rqVw8qwcmZnQGpjiek8A2wpbxSJb1FdCoQVO+jDJs35bFgo/WETgl1fqgsxN0Hg== dependencies: - "errno" "~0.1.7" + workbox-core "^4.3.1" -"worker-rpc@^0.1.0": - "integrity" "sha512-P1WjMrUB3qgJNI9jfmpZ/htmBEjFh//6l/5y8SD9hg1Ef5zTTVVoRjTrTEzPrNBQvmhMxkoTsjOXN10GWU7aCg==" - "resolved" "https://registry.npmjs.org/worker-rpc/-/worker-rpc-0.1.1.tgz" - "version" "0.1.1" +worker-farm@^1.7.0: + version "1.7.0" + resolved "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz" + integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw== dependencies: - "microevent.ts" "~0.1.1" + errno "~0.1.7" -"wrap-ansi@^5.1.0": - "integrity" "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==" - "resolved" "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz" - "version" "5.1.0" +worker-rpc@^0.1.0: + version "0.1.1" + resolved "https://registry.npmjs.org/worker-rpc/-/worker-rpc-0.1.1.tgz" + integrity sha512-P1WjMrUB3qgJNI9jfmpZ/htmBEjFh//6l/5y8SD9hg1Ef5zTTVVoRjTrTEzPrNBQvmhMxkoTsjOXN10GWU7aCg== dependencies: - "ansi-styles" "^3.2.0" - "string-width" "^3.0.0" - "strip-ansi" "^5.0.0" + microevent.ts "~0.1.1" -"wrap-ansi@^7.0.0": - "integrity" "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==" - "resolved" "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" - "version" "7.0.0" +wrap-ansi@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz" + integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== dependencies: - "ansi-styles" "^4.0.0" - "string-width" "^4.1.0" - "strip-ansi" "^6.0.0" + ansi-styles "^3.2.0" + string-width "^3.0.0" + strip-ansi "^5.0.0" -"wrappy@1": - "integrity" "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - "resolved" "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - "version" "1.0.2" - -"write-file-atomic@^2.3.0", "write-file-atomic@2.4.1": - "integrity" "sha512-TGHFeZEZMnv+gBFRfjAcxL5bPHrsGKtnb4qsFAws7/vlh+QfwAaySIw4AXP9ZskTTh5GWu3FLuJhsWVdiJPGvg==" - "resolved" "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.1.tgz" - "version" "2.4.1" +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== dependencies: - "graceful-fs" "^4.1.11" - "imurmurhash" "^0.1.4" - "signal-exit" "^3.0.2" + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" -"write-file-atomic@^3.0.0": - "integrity" "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==" - "resolved" "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz" - "version" "3.0.3" +wrappy@1: + version "1.0.2" + resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +write-file-atomic@2.4.1, write-file-atomic@^2.3.0: + version "2.4.1" + resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.1.tgz" + integrity sha512-TGHFeZEZMnv+gBFRfjAcxL5bPHrsGKtnb4qsFAws7/vlh+QfwAaySIw4AXP9ZskTTh5GWu3FLuJhsWVdiJPGvg== dependencies: - "imurmurhash" "^0.1.4" - "is-typedarray" "^1.0.0" - "signal-exit" "^3.0.2" - "typedarray-to-buffer" "^3.1.5" + graceful-fs "^4.1.11" + imurmurhash "^0.1.4" + signal-exit "^3.0.2" -"ws@^6.1.0", "ws@^6.1.2": - "integrity" "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==" - "resolved" "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz" - "version" "6.2.2" +write-file-atomic@^3.0.0: + version "3.0.3" + resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz" + integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== dependencies: - "async-limiter" "~1.0.0" + imurmurhash "^0.1.4" + is-typedarray "^1.0.0" + signal-exit "^3.0.2" + typedarray-to-buffer "^3.1.5" -"ws@^7.4.6": - "integrity" "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==" - "resolved" "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz" - "version" "7.5.9" +ws@^6.1.0, ws@^6.1.2: + version "6.2.2" + resolved "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz" + integrity sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw== + dependencies: + async-limiter "~1.0.0" -"ws@^8.2.3": - "integrity" "sha512-kU62emKIdKVeEIOIKVegvqpXMSTAMLJozpHZaJNDYqBjzlSYXQGviYwN1osDLJ9av68qHd4a2oSjd7yD4pacig==" - "resolved" "https://registry.npmjs.org/ws/-/ws-8.12.0.tgz" - "version" "8.12.0" +ws@^7.4.6: + version "7.5.9" + resolved "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz" + integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== -"ws@^8.4.2": - "integrity" "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==" - "resolved" "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz" - "version" "8.11.0" +ws@^8.2.3: + version "8.12.0" + resolved "https://registry.npmjs.org/ws/-/ws-8.12.0.tgz" + integrity sha512-kU62emKIdKVeEIOIKVegvqpXMSTAMLJozpHZaJNDYqBjzlSYXQGviYwN1osDLJ9av68qHd4a2oSjd7yD4pacig== -"ws@~7.4.2": - "integrity" "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==" - "resolved" "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz" - "version" "7.4.6" +ws@^8.4.2: + version "8.11.0" + resolved "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz" + integrity sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg== -"x-default-browser@^0.4.0": - "integrity" "sha512-7LKo7RtWfoFN/rHx1UELv/2zHGMx8MkZKDq1xENmOCTkfIqZJ0zZ26NEJX8czhnPXVcqS0ARjjfJB+eJ0/5Cvw==" - "resolved" "https://registry.npmjs.org/x-default-browser/-/x-default-browser-0.4.0.tgz" - "version" "0.4.0" +ws@~7.4.2: + version "7.4.6" + resolved "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz" + integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== + +x-default-browser@^0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/x-default-browser/-/x-default-browser-0.4.0.tgz" + integrity sha512-7LKo7RtWfoFN/rHx1UELv/2zHGMx8MkZKDq1xENmOCTkfIqZJ0zZ26NEJX8czhnPXVcqS0ARjjfJB+eJ0/5Cvw== optionalDependencies: - "default-browser-id" "^1.0.4" + default-browser-id "^1.0.4" -"xdg-basedir@^4.0.0": - "integrity" "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==" - "resolved" "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz" - "version" "4.0.0" +xdg-basedir@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz" + integrity sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q== -"xml-name-validator@^3.0.0": - "integrity" "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==" - "resolved" "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz" - "version" "3.0.0" +xml-name-validator@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz" + integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== -"xmlchars@^2.1.1", "xmlchars@^2.2.0": - "integrity" "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==" - "resolved" "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz" - "version" "2.2.0" +xmlchars@^2.1.1, xmlchars@^2.2.0: + version "2.2.0" + resolved "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz" + integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== -"xmlhttprequest-ssl@~1.6.2": - "integrity" "sha512-3XfeQE/wNkvrIktn2Kf0869fC0BN6UpydVasGIeSm2B1Llihf7/0UfZM+eCkOw3P7bP4+qPgqhm7ZoxuJtFU0Q==" - "resolved" "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.6.3.tgz" - "version" "1.6.3" +xmlhttprequest-ssl@~1.6.2: + version "1.6.3" + resolved "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.6.3.tgz" + integrity sha512-3XfeQE/wNkvrIktn2Kf0869fC0BN6UpydVasGIeSm2B1Llihf7/0UfZM+eCkOw3P7bP4+qPgqhm7ZoxuJtFU0Q== -"xtend@^4.0.0", "xtend@^4.0.1", "xtend@^4.0.2", "xtend@~4.0.1": - "integrity" "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" - "resolved" "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz" - "version" "4.0.2" +xtend@^4.0.0, xtend@^4.0.1, xtend@^4.0.2, xtend@~4.0.1: + version "4.0.2" + resolved "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== -"y18n@^4.0.0": - "integrity" "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" - "resolved" "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz" - "version" "4.0.3" +y18n@^4.0.0: + version "4.0.3" + resolved "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz" + integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== -"y18n@^5.0.5": - "integrity" "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" - "resolved" "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz" - "version" "5.0.8" +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== -"yallist@^3.0.2": - "integrity" "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" - "resolved" "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz" - "version" "3.1.1" +yallist@^3.0.2: + version "3.1.1" + resolved "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== -"yallist@^4.0.0": - "integrity" "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - "resolved" "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz" - "version" "4.0.0" +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== -"yaml@^1.10.0", "yaml@^1.10.2", "yaml@^1.7.2": - "integrity" "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==" - "resolved" "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz" - "version" "1.10.2" +yaml@^1.10.0, yaml@^1.10.2, yaml@^1.7.2: + version "1.10.2" + resolved "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz" + integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== -"yargs-parser@^15.0.1": - "integrity" "sha512-/MVEVjTXy/cGAjdtQf8dW3V9b97bPN7rNn8ETj6BmAQL7ibC7O1Q9SPJbGjgh3SlwoBNXMzj/ZGIj8mBgl12YA==" - "resolved" "https://registry.npmjs.org/yargs-parser/-/yargs-parser-15.0.3.tgz" - "version" "15.0.3" +yargs-parser@^15.0.1: + version "15.0.3" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-15.0.3.tgz" + integrity sha512-/MVEVjTXy/cGAjdtQf8dW3V9b97bPN7rNn8ETj6BmAQL7ibC7O1Q9SPJbGjgh3SlwoBNXMzj/ZGIj8mBgl12YA== dependencies: - "camelcase" "^5.0.0" - "decamelize" "^1.2.0" + camelcase "^5.0.0" + decamelize "^1.2.0" -"yargs-parser@^20.2.2", "yargs-parser@^20.2.9": - "integrity" "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==" - "resolved" "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz" - "version" "20.2.9" +yargs-parser@^20.2.2, yargs-parser@^20.2.9: + version "20.2.9" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz" + integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== -"yargs-parser@^21.1.1": - "integrity" "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==" - "resolved" "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz" - "version" "21.1.1" +yargs-parser@^21.1.1: + version "21.1.1" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz" + integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== -"yargs@^14.2": - "integrity" "sha512-ZbotRWhF+lkjijC/VhmOT9wSgyBQ7+zr13+YLkhfsSiTriYsMzkTUFP18pFhWwBeMa5gUc1MzbhrO6/VB7c9Xg==" - "resolved" "https://registry.npmjs.org/yargs/-/yargs-14.2.3.tgz" - "version" "14.2.3" +yargs@^14.2: + version "14.2.3" + resolved "https://registry.npmjs.org/yargs/-/yargs-14.2.3.tgz" + integrity sha512-ZbotRWhF+lkjijC/VhmOT9wSgyBQ7+zr13+YLkhfsSiTriYsMzkTUFP18pFhWwBeMa5gUc1MzbhrO6/VB7c9Xg== dependencies: - "cliui" "^5.0.0" - "decamelize" "^1.2.0" - "find-up" "^3.0.0" - "get-caller-file" "^2.0.1" - "require-directory" "^2.1.1" - "require-main-filename" "^2.0.0" - "set-blocking" "^2.0.0" - "string-width" "^3.0.0" - "which-module" "^2.0.0" - "y18n" "^4.0.0" - "yargs-parser" "^15.0.1" + cliui "^5.0.0" + decamelize "^1.2.0" + find-up "^3.0.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^3.0.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^15.0.1" -"yargs@^16.2.0": - "integrity" "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==" - "resolved" "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz" - "version" "16.2.0" +yargs@^16.2.0: + version "16.2.0" + resolved "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz" + integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== dependencies: - "cliui" "^7.0.2" - "escalade" "^3.1.1" - "get-caller-file" "^2.0.5" - "require-directory" "^2.1.1" - "string-width" "^4.2.0" - "y18n" "^5.0.5" - "yargs-parser" "^20.2.2" + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.0" + y18n "^5.0.5" + yargs-parser "^20.2.2" -"yargs@^17.3.1": - "integrity" "sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==" - "resolved" "https://registry.npmjs.org/yargs/-/yargs-17.6.2.tgz" - "version" "17.6.2" +yargs@^17.3.1: + version "17.6.2" + resolved "https://registry.npmjs.org/yargs/-/yargs-17.6.2.tgz" + integrity sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw== dependencies: - "cliui" "^8.0.1" - "escalade" "^3.1.1" - "get-caller-file" "^2.0.5" - "require-directory" "^2.1.1" - "string-width" "^4.2.3" - "y18n" "^5.0.5" - "yargs-parser" "^21.1.1" + cliui "^8.0.1" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.3" + y18n "^5.0.5" + yargs-parser "^21.1.1" -"yauzl@^2.10.0": - "integrity" "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==" - "resolved" "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz" - "version" "2.10.0" +yauzl@^2.10.0: + version "2.10.0" + resolved "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz" + integrity sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g== dependencies: - "buffer-crc32" "~0.2.3" - "fd-slicer" "~1.1.0" + buffer-crc32 "~0.2.3" + fd-slicer "~1.1.0" -"yeast@0.1.2": - "integrity" "sha512-8HFIh676uyGYP6wP13R/j6OJ/1HwJ46snpvzE7aHAN3Ryqh2yX6Xox2B4CUmTwwOIzlG3Bs7ocsP5dZH/R1Qbg==" - "resolved" "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz" - "version" "0.1.2" +yeast@0.1.2: + version "0.1.2" + resolved "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz" + integrity sha512-8HFIh676uyGYP6wP13R/j6OJ/1HwJ46snpvzE7aHAN3Ryqh2yX6Xox2B4CUmTwwOIzlG3Bs7ocsP5dZH/R1Qbg== -"yn@3.1.1": - "integrity" "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==" - "resolved" "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz" - "version" "3.1.1" +yn@3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz" + integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== -"yocto-queue@^0.1.0": - "integrity" "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==" - "resolved" "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" - "version" "0.1.0" +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== -"zwitch@^1.0.0": - "integrity" "sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==" - "resolved" "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz" - "version" "1.0.5" +zwitch@^1.0.0: + version "1.0.5" + resolved "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz" + integrity sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw== diff --git a/twake/integration-test/.gitignore b/twake/integration-test/.gitignore deleted file mode 100644 index 8920d707..00000000 --- a/twake/integration-test/.gitignore +++ /dev/null @@ -1,27 +0,0 @@ -# See https://help.github.com/ignore-files/ for more about ignoring files. - -# dependencies -/node_modules -/dist -coverage - -# misc -.DS_Store -.env.local -.env.development.local -.env.test.local -.env.production.local - -npm-debug.log* -yarn-debug.log* -yarn-error.log* - -/.bin/ -/.storybook/ -/.idea/ -/public/dist/ -/public/public/dist/ -/storybook-static/ -/build/ -/counter-clone/ -__old diff --git a/twake/integration-test/babel.config.js b/twake/integration-test/babel.config.js deleted file mode 100644 index 721e8b82..00000000 --- a/twake/integration-test/babel.config.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = { presets: ["@babel/preset-env"] }; diff --git a/twake/integration-test/jest.config.js b/twake/integration-test/jest.config.js deleted file mode 100644 index 3e05acdb..00000000 --- a/twake/integration-test/jest.config.js +++ /dev/null @@ -1,8 +0,0 @@ -module.exports = { - preset: "ts-jest", - transform: { - "^.+\\.(ts|tsx)?$": "ts-jest", - "^.+\\.(js|jsx)$": "babel-jest", - }, - testTimeout: 60000, -}; diff --git a/twake/integration-test/package.json b/twake/integration-test/package.json deleted file mode 100644 index 3feb1041..00000000 --- a/twake/integration-test/package.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "twake", - "version": "2020.3.107", - "repository": "https://github.com/Twake/Twake", - "license": "AGPL-3.0", - "scripts": { - "test:all": "jest --detectOpenHandles --forceExit --coverage --runInBand --verbose false", - "test:login": "tsc && node ./dist/commands/test-login.js", - "test:signin": "tsc && node ./dist/commands/test-signin.js", - "test:create-channel": "tsc && node ./dist/commands/test-create-channel.js" - }, - "devDependencies": { - "@faker-js/faker": "^6.1.2", - "@types/jest": "^27.4.1", - "@types/node": "^17.0.23", - "ts-jest": "^27.1.4", - "typescript": "^4.6.3" - }, - "dependencies": { - "babel-jest": "^27.5.1", - "jest": "^27.5.1", - "puppeteer": "^13.5.2" - } -} diff --git a/twake/integration-test/src/commands/test-all.ts b/twake/integration-test/src/commands/test-all.ts deleted file mode 100644 index 12247ae4..00000000 --- a/twake/integration-test/src/commands/test-all.ts +++ /dev/null @@ -1,35 +0,0 @@ -import puppeteer from "puppeteer"; - -import config from "../config"; - -import { createChannel } from "../steps/create-channel"; -import { login } from "../steps/login"; -import { signIn } from "../steps/signin"; - -// This is the entry point for the integration tests. -async function init() { - const { headless, slowMo, executablePath, args } = config; - const browser = await puppeteer.launch({ - headless, - slowMo, - executablePath, - args, - }); - - await Promise.all([ - signIn(config.twake_url, browser, config.accounts_for_sign_in[0], { - withConsole: config.console, - }), - - login(config.twake_url, browser, config.accounts_for_login[0], { - withConsole: config.console, - }), - - createChannel(config.twake_url, browser, undefined, { - withConsole: config.console, - }), - // Do other tests here - ]); -} - -init(); diff --git a/twake/integration-test/src/commands/test-create-channel.ts b/twake/integration-test/src/commands/test-create-channel.ts deleted file mode 100644 index 967ee2d5..00000000 --- a/twake/integration-test/src/commands/test-create-channel.ts +++ /dev/null @@ -1,21 +0,0 @@ -import puppeteer from "puppeteer"; - -import config from "../config"; - -import { createChannel } from "../steps/create-channel"; - -async function init() { - const { headless, slowMo, executablePath, args } = config; - const browser = await puppeteer.launch({ - headless, - slowMo, - executablePath, - args, - }); - - await createChannel(config.twake_url, browser, config.accounts_for_login[0], { - withConsole: config.console, - }); -} - -init(); diff --git a/twake/integration-test/src/commands/test-login.ts b/twake/integration-test/src/commands/test-login.ts deleted file mode 100644 index cd787b46..00000000 --- a/twake/integration-test/src/commands/test-login.ts +++ /dev/null @@ -1,21 +0,0 @@ -import puppeteer from "puppeteer"; - -import config from "../config"; - -import { login } from "../steps/login"; - -async function init() { - const { headless, slowMo, executablePath, args } = config; - const browser = await puppeteer.launch({ - headless, - slowMo, - executablePath, - args, - }); - - await login(config.twake_url, browser, config.accounts_for_login[0], { - withConsole: config.console, - }); -} - -init(); diff --git a/twake/integration-test/src/commands/test-signin.ts b/twake/integration-test/src/commands/test-signin.ts deleted file mode 100644 index b8dc68ba..00000000 --- a/twake/integration-test/src/commands/test-signin.ts +++ /dev/null @@ -1,21 +0,0 @@ -import puppeteer from "puppeteer"; - -import config from "../config"; - -import { signIn } from "../steps/signin"; - -async function init() { - const { headless, slowMo, executablePath, args } = config; - const browser = await puppeteer.launch({ - headless, - slowMo, - executablePath, - args, - }); - - await signIn(config.twake_url, browser, config.accounts_for_sign_in[0], { - withConsole: config.console, - }); -} - -init(); diff --git a/twake/integration-test/src/config.ts b/twake/integration-test/src/config.ts deleted file mode 100644 index 1b992987..00000000 --- a/twake/integration-test/src/config.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { createSomeFakeChannels } from "./utils/create-some-fake-channels"; -import { createSomeFakeUsers } from "./utils/create-some-fake-users"; - -export default { - twake_url: process.env.SERVER || "http://localhost:3000", - executablePath: "/usr/bin/google-chrome", //"/Applications/Chromium.app/Contents/MacOS/Chromium" - args: ["--no-sandbox"], - screenshot_path: "screenshots/", - console: false, - headless: true, - slowMo: 50, - accounts_for_login: createSomeFakeUsers(5), - accounts_for_sign_in: createSomeFakeUsers(5), - channels_for_create: createSomeFakeChannels(5), -}; diff --git a/twake/integration-test/src/steps/create-channel.ts b/twake/integration-test/src/steps/create-channel.ts deleted file mode 100644 index 6ec1a086..00000000 --- a/twake/integration-test/src/steps/create-channel.ts +++ /dev/null @@ -1,71 +0,0 @@ -import { Browser, Page } from "puppeteer"; - -import config from "../config"; - -import { signIn } from "./signin"; - -const popupSelector = "div.int-channel-edit-modal"; -const plusIconBtnSelector = - "div.workspace_channels div.channel_category div.add"; -const createChannelMenuItemSelector = "div.menu.add-channel"; -const inputChannelNameSelector = ".int-channel-name"; -const inputChannelDescriptionSelector = ".int-channel-description"; -const createButtonSelector = ".int-channel-save-information"; - -export async function createChannel( - url: string, - browser: Browser, - credentials: { email: string; password: string }, - opts: { withConsole: boolean } = { withConsole: false } -): Promise<Page> { - const page = await signIn(url, browser, credentials, { - withConsole: opts.withConsole, - }); - - await Promise.all([ - // Click on the hamburger icon (depend the screensize) - //await page.waitForSelector(hamburgerIconBtnSelector), - //await page.click(hamburgerIconBtnSelector), - - // Click on the plus icon - await page.waitForSelector(plusIconBtnSelector), - await page.hover(plusIconBtnSelector), - await page.click(plusIconBtnSelector), - - // Click on the create channel menu item - await page.waitForSelector(createChannelMenuItemSelector), - await page.hover(createChannelMenuItemSelector), - await page.click(createChannelMenuItemSelector), - - await new Promise((resolve) => setTimeout(resolve, 1000)), - - // Wait for the popup to appear - await page.waitForSelector(popupSelector), - - // Filling the channel name - await page.waitForSelector(inputChannelNameSelector), - await page.focus(inputChannelNameSelector), - await page.keyboard.type(config.channels_for_create[0].name), - - // Filling the channel description - await page.waitForSelector(inputChannelDescriptionSelector), - await page.focus(inputChannelDescriptionSelector), - await page.keyboard.type(config.channels_for_create[0].description), - - // Click the channel visibility select - // await page.waitForSelector(selectChannelVisibilitySelector), - // await page.click(selectChannelVisibilitySelector), - - // FIXME: Select the channel visibility - // await page.waitForSelector(selectChannelVisibilityItemSelector), - // await page.click(selectChannelVisibilityItemSelector), - - // Click the create button - await page.waitForSelector(createButtonSelector), - await page.click(createButtonSelector), - - await page.waitForSelector(createButtonSelector), - ]); - - return page; -} diff --git a/twake/integration-test/src/steps/login.ts b/twake/integration-test/src/steps/login.ts deleted file mode 100644 index 433c24fc..00000000 --- a/twake/integration-test/src/steps/login.ts +++ /dev/null @@ -1,55 +0,0 @@ -import { Browser, Page } from "puppeteer"; - -const usernameInputSelector = { console: "#userfield", local: "#username" }; -const passwordInputSelector = { console: "#passwordfield", local: "#password" }; -const loginButtonSelector = { console: "#sign_in_button", local: "#login_btn" }; - -export async function login( - url: string, - browser: Browser, - credentials: { email: string; password: string }, - opts: { withConsole: boolean } = { withConsole: false } -): Promise<Page> { - const context = await browser.createIncognitoBrowserContext(); - const page = await context.newPage(); - await page.setViewport({ width: 1920, height: 1080 }); - - await Promise.all([ - // Go to the url - await page.goto(url), - - // Username - await page.waitForSelector( - opts?.withConsole - ? usernameInputSelector.console - : usernameInputSelector.local - ), - await page.focus( - opts?.withConsole - ? usernameInputSelector.console - : usernameInputSelector.local - ), - await page.keyboard.type(credentials.email ?? ""), - - // Password - await page.waitForSelector( - opts?.withConsole - ? passwordInputSelector.console - : passwordInputSelector.local - ), - await page.focus( - opts?.withConsole - ? passwordInputSelector.console - : passwordInputSelector.local - ), - await page.keyboard.type(credentials.password ?? ""), - - await page.click( - opts?.withConsole - ? loginButtonSelector.console - : loginButtonSelector.local - ), - ]); - - return page; -} diff --git a/twake/integration-test/src/steps/signin.ts b/twake/integration-test/src/steps/signin.ts deleted file mode 100644 index d4877599..00000000 --- a/twake/integration-test/src/steps/signin.ts +++ /dev/null @@ -1,60 +0,0 @@ -import { Browser, Page } from "puppeteer"; - -const signInBtnSelector = { local: "#create_btn" }; -const firstNameInputSelector = { local: "#first_name_create" }; -const lastNameInputSelector = { local: "#last_name_create" }; -const emailInputSelector = { local: "#email_create" }; -const passwordInputSelector = { local: "#password_create" }; -const signInContinueBtnSelector = { local: "#continue_btn" }; -const signedInSelector = { local: ".channels_view" }; - -export async function signIn( - url: string, - browser: Browser, - credentials: { - email: string; - password: string; - first_name?: string; - last_name?: string; - }, - _opts: { withConsole?: boolean } = { withConsole: false } -): Promise<Page> { - const context = await browser.createIncognitoBrowserContext(); - const page = await context.newPage(); - await page.setViewport({ width: 1920, height: 1080 }); - - await Promise.all([ - // Click on the sign in button - await page.goto(url), - await page.waitForSelector(signInBtnSelector.local), - await page.click(signInBtnSelector.local), - - // First name - await page.waitForSelector(firstNameInputSelector.local), - await page.focus(firstNameInputSelector.local), - await page.keyboard.type(credentials.first_name ?? ""), - - // Last name - await page.waitForSelector(lastNameInputSelector.local), - await page.focus(lastNameInputSelector.local), - await page.keyboard.type(credentials.last_name ?? ""), - - // Email - await page.waitForSelector(emailInputSelector.local), - await page.focus(emailInputSelector.local), - await page.keyboard.type(credentials.email), - - // Password - await page.waitForSelector(passwordInputSelector.local), - await page.focus(passwordInputSelector.local), - await page.keyboard.type(credentials.password), - - // Continue - await page.waitForSelector(signInContinueBtnSelector.local), - await page.click(signInContinueBtnSelector.local), - - await new Promise((resolve) => setTimeout(resolve, 5000)), - ]); - - return page; -} diff --git a/twake/integration-test/src/tests/create-channel.test.ts b/twake/integration-test/src/tests/create-channel.test.ts deleted file mode 100644 index 378af2b9..00000000 --- a/twake/integration-test/src/tests/create-channel.test.ts +++ /dev/null @@ -1,33 +0,0 @@ -import puppeteer from "puppeteer"; - -import config from "../config"; - -import { createChannel } from "../steps/create-channel"; - -import { createSomeFakeUsers } from "../utils/create-some-fake-users"; - -describe("Create channel", () => { - it("should be defined after creating a channel", async () => { - const { headless, slowMo, executablePath, args } = config; - const browser = await puppeteer.launch({ - headless, - slowMo, - executablePath, - args, - }); - - const page = await createChannel( - config.twake_url, - browser, - createSomeFakeUsers(1)[0], - { - withConsole: config.console, - } - ); - - expect(page).toBeDefined(); - - await page.close(); - await browser.close(); - }); -}); diff --git a/twake/integration-test/src/tests/login.test.ts b/twake/integration-test/src/tests/login.test.ts deleted file mode 100644 index 8be7bfa5..00000000 --- a/twake/integration-test/src/tests/login.test.ts +++ /dev/null @@ -1,31 +0,0 @@ -import puppeteer from "puppeteer"; - -import config from "../config"; - -import { login } from "../steps/login"; - -describe("Login", () => { - it("should be defined after login", async () => { - const { headless, slowMo, executablePath, args } = config; - const browser = await puppeteer.launch({ - headless, - slowMo, - executablePath, - args, - }); - - const page = await login( - config.twake_url, - browser, - config.accounts_for_login[0], - { - withConsole: config.console, - } - ); - - expect(page).toBeDefined(); - - await page.close(); - await browser.close(); - }); -}); diff --git a/twake/integration-test/src/tests/signin.test.ts b/twake/integration-test/src/tests/signin.test.ts deleted file mode 100644 index 5b4e1cc2..00000000 --- a/twake/integration-test/src/tests/signin.test.ts +++ /dev/null @@ -1,31 +0,0 @@ -import puppeteer from "puppeteer"; - -import config from "../config"; - -import { signIn } from "../steps/signin"; - -describe("Sign in", () => { - it("should be defined after sign in", async () => { - const { headless, slowMo, executablePath, args } = config; - const browser = await puppeteer.launch({ - headless, - slowMo, - executablePath, - args, - }); - - const page = await signIn( - config.twake_url, - browser, - config.accounts_for_sign_in[0], - { - withConsole: config.console, - } - ); - - expect(page).toBeDefined(); - - await page.close(); - await browser.close(); - }); -}); diff --git a/twake/integration-test/src/utils/create-some-fake-channels.ts b/twake/integration-test/src/utils/create-some-fake-channels.ts deleted file mode 100644 index 24ca4f30..00000000 --- a/twake/integration-test/src/utils/create-some-fake-channels.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { faker } from "@faker-js/faker"; - -export function createSomeFakeChannels(nbOfChannels: number = 1) { - let channels: { - icon: string; - name: string; - description?: string; - visibility: "public" | "private"; - is_default: boolean; - }[] = []; - - for (let i = 0; i < nbOfChannels; i++) { - channels.push({ - icon: ":smile:", - name: faker.commerce.department(), - description: faker.lorem.sentence(), - visibility: "private", - is_default: false, - }); - } - - return channels; -} diff --git a/twake/integration-test/src/utils/create-some-fake-users.ts b/twake/integration-test/src/utils/create-some-fake-users.ts deleted file mode 100644 index dbc0e61d..00000000 --- a/twake/integration-test/src/utils/create-some-fake-users.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { faker } from "@faker-js/faker"; - -export function createSomeFakeUsers(nbOfUsers: number = 1) { - let users: { - email: string; - password: string; - first_name?: string; - last_name?: string; - }[] = []; - - for (let i = 0; i < nbOfUsers; i++) { - users.push({ - first_name: faker.name.firstName(), - last_name: faker.name.lastName(), - email: faker.internet.email().toLocaleLowerCase(), - password: faker.internet.password(), - }); - } - - return users; -} diff --git a/twake/integration-test/src/utils/screenshot.ts b/twake/integration-test/src/utils/screenshot.ts deleted file mode 100644 index 5fcdbb9a..00000000 --- a/twake/integration-test/src/utils/screenshot.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { Page } from "puppeteer"; - -import config from "../config"; - -export const screenshot = async (context: string, page: Page) => { - const currentDate = new Date().toLocaleTimeString(); - await page.screenshot({ - path: `${config.screenshot_path}/${context}-${currentDate}.png`, - }); -}; diff --git a/twake/integration-test/tsconfig.json b/twake/integration-test/tsconfig.json deleted file mode 100644 index 7020dc3d..00000000 --- a/twake/integration-test/tsconfig.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "compilerOptions": { - "experimentalDecorators": true, - "emitDecoratorMetadata": true, - "module": "commonjs", - "esModuleInterop": true, - "allowSyntheticDefaultImports": true, - "target": "es6", - "noImplicitAny": true, - "moduleResolution": "node", - "sourceMap": true, - "outDir": "dist", - "baseUrl": ".", - "resolveJsonModule": true - }, - "include": ["src/**/*"] -} diff --git a/twake/integration-test/yarn.lock b/twake/integration-test/yarn.lock deleted file mode 100644 index 6475a8bd..00000000 --- a/twake/integration-test/yarn.lock +++ /dev/null @@ -1,2812 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@ampproject/remapping@^2.1.0": - version "2.1.2" - resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.1.2.tgz#4edca94973ded9630d20101cd8559cedb8d8bd34" - integrity sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg== - dependencies: - "@jridgewell/trace-mapping" "^0.3.0" - -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.7.tgz#44416b6bd7624b998f5b1af5d470856c40138789" - integrity sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg== - dependencies: - "@babel/highlight" "^7.16.7" - -"@babel/compat-data@^7.17.7": - version "7.17.7" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.17.7.tgz#078d8b833fbbcc95286613be8c716cef2b519fa2" - integrity sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ== - -"@babel/core@^7.1.0", "@babel/core@^7.12.3", "@babel/core@^7.7.2", "@babel/core@^7.8.0": - version "7.17.9" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.17.9.tgz#6bae81a06d95f4d0dec5bb9d74bbc1f58babdcfe" - integrity sha512-5ug+SfZCpDAkVp9SFIZAzlW18rlzsOcJGaetCjkySnrXXDUw9AR8cDUm1iByTmdWM6yxX6/zycaV76w3YTF2gw== - dependencies: - "@ampproject/remapping" "^2.1.0" - "@babel/code-frame" "^7.16.7" - "@babel/generator" "^7.17.9" - "@babel/helper-compilation-targets" "^7.17.7" - "@babel/helper-module-transforms" "^7.17.7" - "@babel/helpers" "^7.17.9" - "@babel/parser" "^7.17.9" - "@babel/template" "^7.16.7" - "@babel/traverse" "^7.17.9" - "@babel/types" "^7.17.0" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.2.1" - semver "^6.3.0" - -"@babel/generator@^7.17.9", "@babel/generator@^7.7.2": - version "7.17.9" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.17.9.tgz#f4af9fd38fa8de143c29fce3f71852406fc1e2fc" - integrity sha512-rAdDousTwxbIxbz5I7GEQ3lUip+xVCXooZNbsydCWs3xA7ZsYOv+CFRdzGxRX78BmQHu9B1Eso59AOZQOJDEdQ== - dependencies: - "@babel/types" "^7.17.0" - jsesc "^2.5.1" - source-map "^0.5.0" - -"@babel/helper-compilation-targets@^7.17.7": - version "7.17.7" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.7.tgz#a3c2924f5e5f0379b356d4cfb313d1414dc30e46" - integrity sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w== - dependencies: - "@babel/compat-data" "^7.17.7" - "@babel/helper-validator-option" "^7.16.7" - browserslist "^4.17.5" - semver "^6.3.0" - -"@babel/helper-environment-visitor@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz#ff484094a839bde9d89cd63cba017d7aae80ecd7" - integrity sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag== - dependencies: - "@babel/types" "^7.16.7" - -"@babel/helper-function-name@^7.17.9": - version "7.17.9" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz#136fcd54bc1da82fcb47565cf16fd8e444b1ff12" - integrity sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg== - dependencies: - "@babel/template" "^7.16.7" - "@babel/types" "^7.17.0" - -"@babel/helper-hoist-variables@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz#86bcb19a77a509c7b77d0e22323ef588fa58c246" - integrity sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg== - dependencies: - "@babel/types" "^7.16.7" - -"@babel/helper-module-imports@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz#25612a8091a999704461c8a222d0efec5d091437" - integrity sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg== - dependencies: - "@babel/types" "^7.16.7" - -"@babel/helper-module-transforms@^7.17.7": - version "7.17.7" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz#3943c7f777139e7954a5355c815263741a9c1cbd" - integrity sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw== - dependencies: - "@babel/helper-environment-visitor" "^7.16.7" - "@babel/helper-module-imports" "^7.16.7" - "@babel/helper-simple-access" "^7.17.7" - "@babel/helper-split-export-declaration" "^7.16.7" - "@babel/helper-validator-identifier" "^7.16.7" - "@babel/template" "^7.16.7" - "@babel/traverse" "^7.17.3" - "@babel/types" "^7.17.0" - -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.8.0": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz#aa3a8ab4c3cceff8e65eb9e73d87dc4ff320b2f5" - integrity sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA== - -"@babel/helper-simple-access@^7.17.7": - version "7.17.7" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz#aaa473de92b7987c6dfa7ce9a7d9674724823367" - integrity sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA== - dependencies: - "@babel/types" "^7.17.0" - -"@babel/helper-split-export-declaration@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz#0b648c0c42da9d3920d85ad585f2778620b8726b" - integrity sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw== - dependencies: - "@babel/types" "^7.16.7" - -"@babel/helper-validator-identifier@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad" - integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw== - -"@babel/helper-validator-option@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz#b203ce62ce5fe153899b617c08957de860de4d23" - integrity sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ== - -"@babel/helpers@^7.17.9": - version "7.17.9" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.17.9.tgz#b2af120821bfbe44f9907b1826e168e819375a1a" - integrity sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q== - dependencies: - "@babel/template" "^7.16.7" - "@babel/traverse" "^7.17.9" - "@babel/types" "^7.17.0" - -"@babel/highlight@^7.16.7": - version "7.17.9" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.17.9.tgz#61b2ee7f32ea0454612def4fccdae0de232b73e3" - integrity sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg== - dependencies: - "@babel/helper-validator-identifier" "^7.16.7" - chalk "^2.0.0" - js-tokens "^4.0.0" - -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.16.7", "@babel/parser@^7.17.9": - version "7.17.9" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.17.9.tgz#9c94189a6062f0291418ca021077983058e171ef" - integrity sha512-vqUSBLP8dQHFPdPi9bc5GK9vRkYHJ49fsZdtoJ8EQ8ibpwk5rPKfvNIwChB0KVXcIjcepEBBd2VHC5r9Gy8ueg== - -"@babel/plugin-syntax-async-generators@^7.8.4": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" - integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-bigint@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" - integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-class-properties@^7.8.3": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" - integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-syntax-import-meta@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" - integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-json-strings@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" - integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-logical-assignment-operators@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" - integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" - integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-numeric-separator@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" - integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-object-rest-spread@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" - integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-catch-binding@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" - integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-chaining@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" - integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-top-level-await@^7.8.3": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" - integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-typescript@^7.7.2": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.7.tgz#39c9b55ee153151990fb038651d58d3fd03f98f8" - integrity sha512-YhUIJHHGkqPgEcMYkPCKTyGUdoGKWtopIycQyjJH8OjvRgOYsXsaKehLVPScKJWAULPxMa4N1vCe6szREFlZ7A== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - -"@babel/template@^7.16.7", "@babel/template@^7.3.3": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.7.tgz#8d126c8701fde4d66b264b3eba3d96f07666d155" - integrity sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w== - dependencies: - "@babel/code-frame" "^7.16.7" - "@babel/parser" "^7.16.7" - "@babel/types" "^7.16.7" - -"@babel/traverse@^7.17.3", "@babel/traverse@^7.17.9", "@babel/traverse@^7.7.2": - version "7.17.9" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.17.9.tgz#1f9b207435d9ae4a8ed6998b2b82300d83c37a0d" - integrity sha512-PQO8sDIJ8SIwipTPiR71kJQCKQYB5NGImbOviK8K+kg5xkNSYXLBupuX9QhatFowrsvo9Hj8WgArg3W7ijNAQw== - dependencies: - "@babel/code-frame" "^7.16.7" - "@babel/generator" "^7.17.9" - "@babel/helper-environment-visitor" "^7.16.7" - "@babel/helper-function-name" "^7.17.9" - "@babel/helper-hoist-variables" "^7.16.7" - "@babel/helper-split-export-declaration" "^7.16.7" - "@babel/parser" "^7.17.9" - "@babel/types" "^7.17.0" - debug "^4.1.0" - globals "^11.1.0" - -"@babel/types@^7.0.0", "@babel/types@^7.16.7", "@babel/types@^7.17.0", "@babel/types@^7.3.0", "@babel/types@^7.3.3": - version "7.17.0" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.17.0.tgz#a826e368bccb6b3d84acd76acad5c0d87342390b" - integrity sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw== - dependencies: - "@babel/helper-validator-identifier" "^7.16.7" - to-fast-properties "^2.0.0" - -"@bcoe/v8-coverage@^0.2.3": - version "0.2.3" - resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" - integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== - -"@faker-js/faker@^6.1.2": - version "6.1.2" - resolved "https://registry.yarnpkg.com/@faker-js/faker/-/faker-6.1.2.tgz#7093ea65e6d78eae388918a46968c083366bd621" - integrity sha512-QSvmexHCxeRUk1/yKmoEDaWB5Hohjvtim5g2JJwy8S/l0L4b3y/GxSpE6vN4SBoVGGahEQW21uqyRr7EofI35A== - -"@istanbuljs/load-nyc-config@^1.0.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" - integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== - dependencies: - camelcase "^5.3.1" - find-up "^4.1.0" - get-package-type "^0.1.0" - js-yaml "^3.13.1" - resolve-from "^5.0.0" - -"@istanbuljs/schema@^0.1.2": - version "0.1.3" - resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" - integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== - -"@jest/console@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-27.5.1.tgz#260fe7239602fe5130a94f1aa386eff54b014bba" - integrity sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg== - dependencies: - "@jest/types" "^27.5.1" - "@types/node" "*" - chalk "^4.0.0" - jest-message-util "^27.5.1" - jest-util "^27.5.1" - slash "^3.0.0" - -"@jest/core@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-27.5.1.tgz#267ac5f704e09dc52de2922cbf3af9edcd64b626" - integrity sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ== - dependencies: - "@jest/console" "^27.5.1" - "@jest/reporters" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/transform" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/node" "*" - ansi-escapes "^4.2.1" - chalk "^4.0.0" - emittery "^0.8.1" - exit "^0.1.2" - graceful-fs "^4.2.9" - jest-changed-files "^27.5.1" - jest-config "^27.5.1" - jest-haste-map "^27.5.1" - jest-message-util "^27.5.1" - jest-regex-util "^27.5.1" - jest-resolve "^27.5.1" - jest-resolve-dependencies "^27.5.1" - jest-runner "^27.5.1" - jest-runtime "^27.5.1" - jest-snapshot "^27.5.1" - jest-util "^27.5.1" - jest-validate "^27.5.1" - jest-watcher "^27.5.1" - micromatch "^4.0.4" - rimraf "^3.0.0" - slash "^3.0.0" - strip-ansi "^6.0.0" - -"@jest/environment@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-27.5.1.tgz#d7425820511fe7158abbecc010140c3fd3be9c74" - integrity sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA== - dependencies: - "@jest/fake-timers" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/node" "*" - jest-mock "^27.5.1" - -"@jest/fake-timers@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-27.5.1.tgz#76979745ce0579c8a94a4678af7a748eda8ada74" - integrity sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ== - dependencies: - "@jest/types" "^27.5.1" - "@sinonjs/fake-timers" "^8.0.1" - "@types/node" "*" - jest-message-util "^27.5.1" - jest-mock "^27.5.1" - jest-util "^27.5.1" - -"@jest/globals@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-27.5.1.tgz#7ac06ce57ab966566c7963431cef458434601b2b" - integrity sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q== - dependencies: - "@jest/environment" "^27.5.1" - "@jest/types" "^27.5.1" - expect "^27.5.1" - -"@jest/reporters@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-27.5.1.tgz#ceda7be96170b03c923c37987b64015812ffec04" - integrity sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw== - dependencies: - "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/transform" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/node" "*" - chalk "^4.0.0" - collect-v8-coverage "^1.0.0" - exit "^0.1.2" - glob "^7.1.2" - graceful-fs "^4.2.9" - istanbul-lib-coverage "^3.0.0" - istanbul-lib-instrument "^5.1.0" - istanbul-lib-report "^3.0.0" - istanbul-lib-source-maps "^4.0.0" - istanbul-reports "^3.1.3" - jest-haste-map "^27.5.1" - jest-resolve "^27.5.1" - jest-util "^27.5.1" - jest-worker "^27.5.1" - slash "^3.0.0" - source-map "^0.6.0" - string-length "^4.0.1" - terminal-link "^2.0.0" - v8-to-istanbul "^8.1.0" - -"@jest/source-map@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-27.5.1.tgz#6608391e465add4205eae073b55e7f279e04e8cf" - integrity sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg== - dependencies: - callsites "^3.0.0" - graceful-fs "^4.2.9" - source-map "^0.6.0" - -"@jest/test-result@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-27.5.1.tgz#56a6585fa80f7cdab72b8c5fc2e871d03832f5bb" - integrity sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag== - dependencies: - "@jest/console" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/istanbul-lib-coverage" "^2.0.0" - collect-v8-coverage "^1.0.0" - -"@jest/test-sequencer@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz#4057e0e9cea4439e544c6353c6affe58d095745b" - integrity sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ== - dependencies: - "@jest/test-result" "^27.5.1" - graceful-fs "^4.2.9" - jest-haste-map "^27.5.1" - jest-runtime "^27.5.1" - -"@jest/transform@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-27.5.1.tgz#6c3501dcc00c4c08915f292a600ece5ecfe1f409" - integrity sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw== - dependencies: - "@babel/core" "^7.1.0" - "@jest/types" "^27.5.1" - babel-plugin-istanbul "^6.1.1" - chalk "^4.0.0" - convert-source-map "^1.4.0" - fast-json-stable-stringify "^2.0.0" - graceful-fs "^4.2.9" - jest-haste-map "^27.5.1" - jest-regex-util "^27.5.1" - jest-util "^27.5.1" - micromatch "^4.0.4" - pirates "^4.0.4" - slash "^3.0.0" - source-map "^0.6.1" - write-file-atomic "^3.0.0" - -"@jest/types@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-27.5.1.tgz#3c79ec4a8ba61c170bf937bcf9e98a9df175ec80" - integrity sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw== - dependencies: - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^3.0.0" - "@types/node" "*" - "@types/yargs" "^16.0.0" - chalk "^4.0.0" - -"@jridgewell/resolve-uri@^3.0.3": - version "3.0.6" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.6.tgz#4ac237f4dabc8dd93330386907b97591801f7352" - integrity sha512-R7xHtBSNm+9SyvpJkdQl+qrM3Hm2fea3Ef197M3mUug+v+yR+Rhfbs7PBtcBUVnIWJ4JcAdjvij+c8hXS9p5aw== - -"@jridgewell/sourcemap-codec@^1.4.10": - version "1.4.11" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz#771a1d8d744eeb71b6adb35808e1a6c7b9b8c8ec" - integrity sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg== - -"@jridgewell/trace-mapping@^0.3.0": - 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" - -"@sinonjs/commons@^1.7.0": - version "1.8.3" - resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.3.tgz#3802ddd21a50a949b6721ddd72da36e67e7f1b2d" - integrity sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ== - dependencies: - type-detect "4.0.8" - -"@sinonjs/fake-timers@^8.0.1": - version "8.1.0" - resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz#3fdc2b6cb58935b21bfb8d1625eb1300484316e7" - integrity sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg== - dependencies: - "@sinonjs/commons" "^1.7.0" - -"@tootallnate/once@1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" - integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== - -"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14": - version "7.1.19" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.19.tgz#7b497495b7d1b4812bdb9d02804d0576f43ee460" - integrity sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw== - dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" - "@types/babel__generator" "*" - "@types/babel__template" "*" - "@types/babel__traverse" "*" - -"@types/babel__generator@*": - version "7.6.4" - resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.4.tgz#1f20ce4c5b1990b37900b63f050182d28c2439b7" - integrity sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg== - dependencies: - "@babel/types" "^7.0.0" - -"@types/babel__template@*": - version "7.4.1" - resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.1.tgz#3d1a48fd9d6c0edfd56f2ff578daed48f36c8969" - integrity sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g== - dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" - -"@types/babel__traverse@*", "@types/babel__traverse@^7.0.4", "@types/babel__traverse@^7.0.6": - version "7.17.0" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.17.0.tgz#7a9b80f712fe2052bc20da153ff1e552404d8e4b" - integrity sha512-r8aveDbd+rzGP+ykSdF3oPuTVRWRfbBiHl0rVDM2yNEmSMXfkObQLV46b4RnCv3Lra51OlfnZhkkFaDl2MIRaA== - dependencies: - "@babel/types" "^7.3.0" - -"@types/graceful-fs@^4.1.2": - version "4.1.5" - resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.5.tgz#21ffba0d98da4350db64891f92a9e5db3cdb4e15" - integrity sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw== - dependencies: - "@types/node" "*" - -"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44" - integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== - -"@types/istanbul-lib-report@*": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" - integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== - dependencies: - "@types/istanbul-lib-coverage" "*" - -"@types/istanbul-reports@^3.0.0": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz#9153fe98bba2bd565a63add9436d6f0d7f8468ff" - integrity sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw== - dependencies: - "@types/istanbul-lib-report" "*" - -"@types/jest@^27.4.1": - version "27.4.1" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-27.4.1.tgz#185cbe2926eaaf9662d340cc02e548ce9e11ab6d" - integrity sha512-23iPJADSmicDVrWk+HT58LMJtzLAnB2AgIzplQuq/bSrGaxCrlvRFjGbXmamnnk/mAmCdLStiGqggu28ocUyiw== - dependencies: - jest-matcher-utils "^27.0.0" - pretty-format "^27.0.0" - -"@types/node@*", "@types/node@^17.0.23": - version "17.0.23" - resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.23.tgz#3b41a6e643589ac6442bdbd7a4a3ded62f33f7da" - integrity sha512-UxDxWn7dl97rKVeVS61vErvw086aCYhDLyvRQZ5Rk65rZKepaFdm53GeqXaKBuOhED4e9uWq34IC3TdSdJJ2Gw== - -"@types/prettier@^2.1.5": - version "2.6.0" - resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.6.0.tgz#efcbd41937f9ae7434c714ab698604822d890759" - integrity sha512-G/AdOadiZhnJp0jXCaBQU449W2h716OW/EoXeYkCytxKL06X1WCXB4DZpp8TpZ8eyIJVS1cw4lrlkkSYU21cDw== - -"@types/stack-utils@^2.0.0": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c" - integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== - -"@types/yargs-parser@*": - version "21.0.0" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.0.tgz#0c60e537fa790f5f9472ed2776c2b71ec117351b" - integrity sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA== - -"@types/yargs@^16.0.0": - version "16.0.4" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-16.0.4.tgz#26aad98dd2c2a38e421086ea9ad42b9e51642977" - integrity sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw== - dependencies: - "@types/yargs-parser" "*" - -"@types/yauzl@^2.9.1": - version "2.9.2" - resolved "https://registry.yarnpkg.com/@types/yauzl/-/yauzl-2.9.2.tgz#c48e5d56aff1444409e39fa164b0b4d4552a7b7a" - integrity sha512-8uALY5LTvSuHgloDVUvWP3pIauILm+8/0pDMokuDYIoNsOkSwd5AiHBTSEJjKTDcZr5z8UpgOWZkxBF4iJftoA== - dependencies: - "@types/node" "*" - -abab@^2.0.3, abab@^2.0.5: - version "2.0.6" - resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" - integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== - -acorn-globals@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45" - integrity sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg== - dependencies: - acorn "^7.1.1" - acorn-walk "^7.1.1" - -acorn-walk@^7.1.1: - version "7.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" - integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== - -acorn@^7.1.1: - version "7.4.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" - integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== - -acorn@^8.2.4: - version "8.7.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.0.tgz#90951fde0f8f09df93549481e5fc141445b791cf" - integrity sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ== - -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" - -ansi-escapes@^4.2.1: - version "4.3.2" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" - integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== - dependencies: - type-fest "^0.21.3" - -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@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -ansi-styles@^4.0.0, 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" - -ansi-styles@^5.0.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" - integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== - -anymatch@^3.0.3: - version "3.1.2" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" - integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== - dependencies: - sprintf-js "~1.0.2" - -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= - -babel-jest@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-27.5.1.tgz#a1bf8d61928edfefd21da27eb86a695bfd691444" - integrity sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg== - dependencies: - "@jest/transform" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/babel__core" "^7.1.14" - babel-plugin-istanbul "^6.1.1" - babel-preset-jest "^27.5.1" - chalk "^4.0.0" - graceful-fs "^4.2.9" - slash "^3.0.0" - -babel-plugin-istanbul@^6.1.1: - version "6.1.1" - resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" - integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@istanbuljs/load-nyc-config" "^1.0.0" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-instrument "^5.0.4" - test-exclude "^6.0.0" - -babel-plugin-jest-hoist@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz#9be98ecf28c331eb9f5df9c72d6f89deb8181c2e" - integrity sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ== - dependencies: - "@babel/template" "^7.3.3" - "@babel/types" "^7.3.3" - "@types/babel__core" "^7.0.0" - "@types/babel__traverse" "^7.0.6" - -babel-preset-current-node-syntax@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" - integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== - dependencies: - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/plugin-syntax-bigint" "^7.8.3" - "@babel/plugin-syntax-class-properties" "^7.8.3" - "@babel/plugin-syntax-import-meta" "^7.8.3" - "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.8.3" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - "@babel/plugin-syntax-top-level-await" "^7.8.3" - -babel-preset-jest@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz#91f10f58034cb7989cb4f962b69fa6eef6a6bc81" - integrity sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag== - dependencies: - babel-plugin-jest-hoist "^27.5.1" - babel-preset-current-node-syntax "^1.0.0" - -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== - -base64-js@^1.3.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" - integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== - -bl@^4.0.3: - version "4.1.0" - resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" - integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== - dependencies: - buffer "^5.5.0" - inherits "^2.0.4" - readable-stream "^3.4.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: - 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" - -browser-process-hrtime@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" - integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== - -browserslist@^4.17.5: - version "4.20.3" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.20.3.tgz#eb7572f49ec430e054f56d52ff0ebe9be915f8bf" - integrity sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg== - dependencies: - caniuse-lite "^1.0.30001332" - electron-to-chromium "^1.4.118" - escalade "^3.1.1" - node-releases "^2.0.3" - picocolors "^1.0.0" - -bs-logger@0.x: - version "0.2.6" - resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8" - integrity sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog== - dependencies: - fast-json-stable-stringify "2.x" - -bser@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" - integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== - dependencies: - node-int64 "^0.4.0" - -buffer-crc32@~0.2.3: - version "0.2.13" - resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" - integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI= - -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== - -buffer@^5.2.1, buffer@^5.5.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" - integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.1.13" - -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== - -camelcase@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" - integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - -camelcase@^6.2.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" - integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== - -caniuse-lite@^1.0.30001332: - version "1.0.30001332" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001332.tgz#39476d3aa8d83ea76359c70302eafdd4a1d727dd" - integrity sha512-10T30NYOEQtN6C11YGg411yebhvpnC6Z102+B95eAsN0oB6KUs01ivE8u+G6FMIRtIrVlYXhL+LUwQ3/hXwDWw== - -chalk@^2.0.0: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -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" - -char-regex@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" - integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== - -chownr@^1.1.1: - version "1.1.4" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" - integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== - -ci-info@^3.2.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.3.0.tgz#b4ed1fb6818dea4803a55c623041f9165d2066b2" - integrity sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw== - -cjs-module-lexer@^1.0.0: - version "1.2.2" - resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz#9f84ba3244a512f3a54e5277e8eef4c489864e40" - integrity sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA== - -cliui@^7.0.2: - version "7.0.4" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" - integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.0" - wrap-ansi "^7.0.0" - -co@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" - integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= - -collect-v8-coverage@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" - integrity sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg== - -color-convert@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - -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.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= - -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== - -combined-stream@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" - integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== - dependencies: - delayed-stream "~1.0.0" - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= - -convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369" - integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA== - dependencies: - safe-buffer "~5.1.1" - -cross-fetch@3.1.5: - version "3.1.5" - resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.5.tgz#e1389f44d9e7ba767907f7af8454787952ab534f" - integrity sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw== - dependencies: - node-fetch "2.6.7" - -cross-spawn@^7.0.3: - 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" - -cssom@^0.4.4: - version "0.4.4" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" - integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw== - -cssom@~0.3.6: - version "0.3.8" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" - integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== - -cssstyle@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" - integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== - dependencies: - cssom "~0.3.6" - -data-urls@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b" - integrity sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ== - dependencies: - abab "^2.0.3" - whatwg-mimetype "^2.3.0" - whatwg-url "^8.0.0" - -debug@4, debug@4.3.4, debug@^4.1.0, debug@^4.1.1: - 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" - -decimal.js@^10.2.1: - version "10.3.1" - resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.3.1.tgz#d8c3a444a9c6774ba60ca6ad7261c3a94fd5e783" - integrity sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ== - -dedent@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" - integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw= - -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== - -deepmerge@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" - integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= - -detect-newline@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" - integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== - -devtools-protocol@0.0.969999: - version "0.0.969999" - resolved "https://registry.yarnpkg.com/devtools-protocol/-/devtools-protocol-0.0.969999.tgz#3d6be0a126b3607bb399ae2719b471dda71f3478" - integrity sha512-6GfzuDWU0OFAuOvBokXpXPLxjOJ5DZ157Ue3sGQQM3LgAamb8m0R0ruSfN0DDu+XG5XJgT50i6zZ/0o8RglreQ== - -diff-sequences@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-27.5.1.tgz#eaecc0d327fd68c8d9672a1e64ab8dccb2ef5327" - integrity sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ== - -domexception@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304" - integrity sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg== - dependencies: - webidl-conversions "^5.0.0" - -electron-to-chromium@^1.4.118: - version "1.4.118" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.118.tgz#2d917c71712dac9652cc01af46c7d0bd51552974" - integrity sha512-maZIKjnYDvF7Fs35nvVcyr44UcKNwybr93Oba2n3HkKDFAtk0svERkLN/HyczJDS3Fo4wU9th9fUQd09ZLtj1w== - -emittery@^0.8.1: - version "0.8.1" - resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.8.1.tgz#bb23cc86d03b30aa75a7f734819dee2e1ba70860" - integrity sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg== - -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== - -end-of-stream@^1.1.0, end-of-stream@^1.4.1: - version "1.4.4" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" - integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== - dependencies: - once "^1.4.0" - -error-ex@^1.3.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" - integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== - dependencies: - is-arrayish "^0.2.1" - -escalade@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" - integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== - -escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= - -escape-string-regexp@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" - integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== - -escodegen@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.0.0.tgz#5e32b12833e8aa8fa35e1bf0befa89380484c7dd" - integrity sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw== - dependencies: - esprima "^4.0.1" - estraverse "^5.2.0" - esutils "^2.0.2" - optionator "^0.8.1" - optionalDependencies: - source-map "~0.6.1" - -esprima@^4.0.0, esprima@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== - -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== - -execa@^5.0.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" - integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== - dependencies: - cross-spawn "^7.0.3" - get-stream "^6.0.0" - human-signals "^2.1.0" - is-stream "^2.0.0" - merge-stream "^2.0.0" - npm-run-path "^4.0.1" - onetime "^5.1.2" - signal-exit "^3.0.3" - strip-final-newline "^2.0.0" - -exit@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" - integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= - -expect@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/expect/-/expect-27.5.1.tgz#83ce59f1e5bdf5f9d2b94b61d2050db48f3fef74" - integrity sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw== - dependencies: - "@jest/types" "^27.5.1" - jest-get-type "^27.5.1" - jest-matcher-utils "^27.5.1" - jest-message-util "^27.5.1" - -extract-zip@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-2.0.1.tgz#663dca56fe46df890d5f131ef4a06d22bb8ba13a" - integrity sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg== - dependencies: - debug "^4.1.1" - get-stream "^5.1.0" - yauzl "^2.10.0" - optionalDependencies: - "@types/yauzl" "^2.9.1" - -fast-json-stable-stringify@2.x, 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 sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= - -fb-watchman@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85" - integrity sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg== - dependencies: - bser "2.1.1" - -fd-slicer@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" - integrity sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4= - dependencies: - pend "~1.2.0" - -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" - -find-up@^4.0.0, find-up@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" - integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== - dependencies: - locate-path "^5.0.0" - path-exists "^4.0.0" - -form-data@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" - integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.8" - mime-types "^2.1.12" - -fs-constants@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" - integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= - -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== - -gensync@^1.0.0-beta.2: - version "1.0.0-beta.2" - resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" - integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== - -get-caller-file@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" - integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== - -get-package-type@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" - integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== - -get-stream@^5.1.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" - integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== - dependencies: - pump "^3.0.0" - -get-stream@^6.0.0: - version "6.0.1" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" - integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== - -glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: - version "7.2.0" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" - integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== - 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" - -globals@^11.1.0: - version "11.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" - integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== - -graceful-fs@^4.2.9: - version "4.2.10" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" - integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= - -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@^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" - -html-encoding-sniffer@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3" - integrity sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ== - dependencies: - whatwg-encoding "^1.0.5" - -html-escaper@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" - integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== - -http-proxy-agent@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" - integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== - dependencies: - "@tootallnate/once" "1" - agent-base "6" - debug "4" - -https-proxy-agent@5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2" - integrity sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA== - dependencies: - agent-base "6" - debug "4" - -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" - -human-signals@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" - integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== - -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" - -ieee754@^1.1.13: - version "1.2.1" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" - integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== - -import-local@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" - integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== - dependencies: - pkg-dir "^4.2.0" - resolve-cwd "^3.0.0" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@^2.0.3, inherits@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= - -is-core-module@^2.8.1: - version "2.9.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.9.0.tgz#e1c34429cd51c6dd9e09e0799e396e27b19a9c69" - integrity sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A== - dependencies: - has "^1.0.3" - -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-generator-fn@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" - integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== - -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-potential-custom-element-name@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" - integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== - -is-stream@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" - integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== - -is-typedarray@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= - -istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3" - integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw== - -istanbul-lib-instrument@^5.0.4, istanbul-lib-instrument@^5.1.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.0.tgz#31d18bdd127f825dd02ea7bfdfd906f8ab840e9f" - integrity sha512-6Lthe1hqXHBNsqvgDzGO6l03XNeu3CrG4RqQ1KM9+l5+jNGpEJfIELx1NS3SEHmJQA8np/u+E4EPRKRiu6m19A== - dependencies: - "@babel/core" "^7.12.3" - "@babel/parser" "^7.14.7" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-coverage "^3.2.0" - semver "^6.3.0" - -istanbul-lib-report@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" - integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== - dependencies: - istanbul-lib-coverage "^3.0.0" - make-dir "^3.0.0" - supports-color "^7.1.0" - -istanbul-lib-source-maps@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz#895f3a709fcfba34c6de5a42939022f3e4358551" - integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw== - dependencies: - debug "^4.1.1" - istanbul-lib-coverage "^3.0.0" - source-map "^0.6.1" - -istanbul-reports@^3.1.3: - version "3.1.4" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.4.tgz#1b6f068ecbc6c331040aab5741991273e609e40c" - integrity sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw== - dependencies: - html-escaper "^2.0.0" - istanbul-lib-report "^3.0.0" - -jest-changed-files@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-27.5.1.tgz#a348aed00ec9bf671cc58a66fcbe7c3dfd6a68f5" - integrity sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw== - dependencies: - "@jest/types" "^27.5.1" - execa "^5.0.0" - throat "^6.0.1" - -jest-circus@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-27.5.1.tgz#37a5a4459b7bf4406e53d637b49d22c65d125ecc" - integrity sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw== - dependencies: - "@jest/environment" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/node" "*" - chalk "^4.0.0" - co "^4.6.0" - dedent "^0.7.0" - expect "^27.5.1" - is-generator-fn "^2.0.0" - jest-each "^27.5.1" - jest-matcher-utils "^27.5.1" - jest-message-util "^27.5.1" - jest-runtime "^27.5.1" - jest-snapshot "^27.5.1" - jest-util "^27.5.1" - pretty-format "^27.5.1" - slash "^3.0.0" - stack-utils "^2.0.3" - throat "^6.0.1" - -jest-cli@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-27.5.1.tgz#278794a6e6458ea8029547e6c6cbf673bd30b145" - integrity sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw== - dependencies: - "@jest/core" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/types" "^27.5.1" - chalk "^4.0.0" - exit "^0.1.2" - graceful-fs "^4.2.9" - import-local "^3.0.2" - jest-config "^27.5.1" - jest-util "^27.5.1" - jest-validate "^27.5.1" - prompts "^2.0.1" - yargs "^16.2.0" - -jest-config@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-27.5.1.tgz#5c387de33dca3f99ad6357ddeccd91bf3a0e4a41" - integrity sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA== - dependencies: - "@babel/core" "^7.8.0" - "@jest/test-sequencer" "^27.5.1" - "@jest/types" "^27.5.1" - babel-jest "^27.5.1" - chalk "^4.0.0" - ci-info "^3.2.0" - deepmerge "^4.2.2" - glob "^7.1.1" - graceful-fs "^4.2.9" - jest-circus "^27.5.1" - jest-environment-jsdom "^27.5.1" - jest-environment-node "^27.5.1" - jest-get-type "^27.5.1" - jest-jasmine2 "^27.5.1" - jest-regex-util "^27.5.1" - jest-resolve "^27.5.1" - jest-runner "^27.5.1" - jest-util "^27.5.1" - jest-validate "^27.5.1" - micromatch "^4.0.4" - parse-json "^5.2.0" - pretty-format "^27.5.1" - slash "^3.0.0" - strip-json-comments "^3.1.1" - -jest-diff@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-27.5.1.tgz#a07f5011ac9e6643cf8a95a462b7b1ecf6680def" - integrity sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw== - dependencies: - chalk "^4.0.0" - diff-sequences "^27.5.1" - jest-get-type "^27.5.1" - pretty-format "^27.5.1" - -jest-docblock@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-27.5.1.tgz#14092f364a42c6108d42c33c8cf30e058e25f6c0" - integrity sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ== - dependencies: - detect-newline "^3.0.0" - -jest-each@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-27.5.1.tgz#5bc87016f45ed9507fed6e4702a5b468a5b2c44e" - integrity sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ== - dependencies: - "@jest/types" "^27.5.1" - chalk "^4.0.0" - jest-get-type "^27.5.1" - jest-util "^27.5.1" - pretty-format "^27.5.1" - -jest-environment-jsdom@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz#ea9ccd1fc610209655a77898f86b2b559516a546" - integrity sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw== - dependencies: - "@jest/environment" "^27.5.1" - "@jest/fake-timers" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/node" "*" - jest-mock "^27.5.1" - jest-util "^27.5.1" - jsdom "^16.6.0" - -jest-environment-node@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-27.5.1.tgz#dedc2cfe52fab6b8f5714b4808aefa85357a365e" - integrity sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw== - dependencies: - "@jest/environment" "^27.5.1" - "@jest/fake-timers" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/node" "*" - jest-mock "^27.5.1" - jest-util "^27.5.1" - -jest-get-type@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-27.5.1.tgz#3cd613c507b0f7ace013df407a1c1cd578bcb4f1" - integrity sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw== - -jest-haste-map@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-27.5.1.tgz#9fd8bd7e7b4fa502d9c6164c5640512b4e811e7f" - integrity sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng== - dependencies: - "@jest/types" "^27.5.1" - "@types/graceful-fs" "^4.1.2" - "@types/node" "*" - anymatch "^3.0.3" - fb-watchman "^2.0.0" - graceful-fs "^4.2.9" - jest-regex-util "^27.5.1" - jest-serializer "^27.5.1" - jest-util "^27.5.1" - jest-worker "^27.5.1" - micromatch "^4.0.4" - walker "^1.0.7" - optionalDependencies: - fsevents "^2.3.2" - -jest-jasmine2@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz#a037b0034ef49a9f3d71c4375a796f3b230d1ac4" - integrity sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ== - dependencies: - "@jest/environment" "^27.5.1" - "@jest/source-map" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/node" "*" - chalk "^4.0.0" - co "^4.6.0" - expect "^27.5.1" - is-generator-fn "^2.0.0" - jest-each "^27.5.1" - jest-matcher-utils "^27.5.1" - jest-message-util "^27.5.1" - jest-runtime "^27.5.1" - jest-snapshot "^27.5.1" - jest-util "^27.5.1" - pretty-format "^27.5.1" - throat "^6.0.1" - -jest-leak-detector@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz#6ec9d54c3579dd6e3e66d70e3498adf80fde3fb8" - integrity sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ== - dependencies: - jest-get-type "^27.5.1" - pretty-format "^27.5.1" - -jest-matcher-utils@^27.0.0, jest-matcher-utils@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz#9c0cdbda8245bc22d2331729d1091308b40cf8ab" - integrity sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw== - dependencies: - chalk "^4.0.0" - jest-diff "^27.5.1" - jest-get-type "^27.5.1" - pretty-format "^27.5.1" - -jest-message-util@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-27.5.1.tgz#bdda72806da10d9ed6425e12afff38cd1458b6cf" - integrity sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g== - dependencies: - "@babel/code-frame" "^7.12.13" - "@jest/types" "^27.5.1" - "@types/stack-utils" "^2.0.0" - chalk "^4.0.0" - graceful-fs "^4.2.9" - micromatch "^4.0.4" - pretty-format "^27.5.1" - slash "^3.0.0" - stack-utils "^2.0.3" - -jest-mock@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-27.5.1.tgz#19948336d49ef4d9c52021d34ac7b5f36ff967d6" - integrity sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og== - dependencies: - "@jest/types" "^27.5.1" - "@types/node" "*" - -jest-pnp-resolver@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c" - integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w== - -jest-regex-util@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-27.5.1.tgz#4da143f7e9fd1e542d4aa69617b38e4a78365b95" - integrity sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg== - -jest-resolve-dependencies@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz#d811ecc8305e731cc86dd79741ee98fed06f1da8" - integrity sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg== - dependencies: - "@jest/types" "^27.5.1" - jest-regex-util "^27.5.1" - jest-snapshot "^27.5.1" - -jest-resolve@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-27.5.1.tgz#a2f1c5a0796ec18fe9eb1536ac3814c23617b384" - integrity sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw== - dependencies: - "@jest/types" "^27.5.1" - chalk "^4.0.0" - graceful-fs "^4.2.9" - jest-haste-map "^27.5.1" - jest-pnp-resolver "^1.2.2" - jest-util "^27.5.1" - jest-validate "^27.5.1" - resolve "^1.20.0" - resolve.exports "^1.1.0" - slash "^3.0.0" - -jest-runner@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-27.5.1.tgz#071b27c1fa30d90540805c5645a0ec167c7b62e5" - integrity sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ== - dependencies: - "@jest/console" "^27.5.1" - "@jest/environment" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/transform" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/node" "*" - chalk "^4.0.0" - emittery "^0.8.1" - graceful-fs "^4.2.9" - jest-docblock "^27.5.1" - jest-environment-jsdom "^27.5.1" - jest-environment-node "^27.5.1" - jest-haste-map "^27.5.1" - jest-leak-detector "^27.5.1" - jest-message-util "^27.5.1" - jest-resolve "^27.5.1" - jest-runtime "^27.5.1" - jest-util "^27.5.1" - jest-worker "^27.5.1" - source-map-support "^0.5.6" - throat "^6.0.1" - -jest-runtime@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-27.5.1.tgz#4896003d7a334f7e8e4a53ba93fb9bcd3db0a1af" - integrity sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A== - dependencies: - "@jest/environment" "^27.5.1" - "@jest/fake-timers" "^27.5.1" - "@jest/globals" "^27.5.1" - "@jest/source-map" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/transform" "^27.5.1" - "@jest/types" "^27.5.1" - chalk "^4.0.0" - cjs-module-lexer "^1.0.0" - collect-v8-coverage "^1.0.0" - execa "^5.0.0" - glob "^7.1.3" - graceful-fs "^4.2.9" - jest-haste-map "^27.5.1" - jest-message-util "^27.5.1" - jest-mock "^27.5.1" - jest-regex-util "^27.5.1" - jest-resolve "^27.5.1" - jest-snapshot "^27.5.1" - jest-util "^27.5.1" - slash "^3.0.0" - strip-bom "^4.0.0" - -jest-serializer@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-27.5.1.tgz#81438410a30ea66fd57ff730835123dea1fb1f64" - integrity sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w== - dependencies: - "@types/node" "*" - graceful-fs "^4.2.9" - -jest-snapshot@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-27.5.1.tgz#b668d50d23d38054a51b42c4039cab59ae6eb6a1" - integrity sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA== - dependencies: - "@babel/core" "^7.7.2" - "@babel/generator" "^7.7.2" - "@babel/plugin-syntax-typescript" "^7.7.2" - "@babel/traverse" "^7.7.2" - "@babel/types" "^7.0.0" - "@jest/transform" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/babel__traverse" "^7.0.4" - "@types/prettier" "^2.1.5" - babel-preset-current-node-syntax "^1.0.0" - chalk "^4.0.0" - expect "^27.5.1" - graceful-fs "^4.2.9" - jest-diff "^27.5.1" - jest-get-type "^27.5.1" - jest-haste-map "^27.5.1" - jest-matcher-utils "^27.5.1" - jest-message-util "^27.5.1" - jest-util "^27.5.1" - natural-compare "^1.4.0" - pretty-format "^27.5.1" - semver "^7.3.2" - -jest-util@^27.0.0, jest-util@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-27.5.1.tgz#3ba9771e8e31a0b85da48fe0b0891fb86c01c2f9" - integrity sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw== - dependencies: - "@jest/types" "^27.5.1" - "@types/node" "*" - chalk "^4.0.0" - ci-info "^3.2.0" - graceful-fs "^4.2.9" - picomatch "^2.2.3" - -jest-validate@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-27.5.1.tgz#9197d54dc0bdb52260b8db40b46ae668e04df067" - integrity sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ== - dependencies: - "@jest/types" "^27.5.1" - camelcase "^6.2.0" - chalk "^4.0.0" - jest-get-type "^27.5.1" - leven "^3.1.0" - pretty-format "^27.5.1" - -jest-watcher@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-27.5.1.tgz#71bd85fb9bde3a2c2ec4dc353437971c43c642a2" - integrity sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw== - dependencies: - "@jest/test-result" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/node" "*" - ansi-escapes "^4.2.1" - chalk "^4.0.0" - jest-util "^27.5.1" - string-length "^4.0.1" - -jest-worker@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" - integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== - dependencies: - "@types/node" "*" - merge-stream "^2.0.0" - supports-color "^8.0.0" - -jest@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest/-/jest-27.5.1.tgz#dadf33ba70a779be7a6fc33015843b51494f63fc" - integrity sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ== - dependencies: - "@jest/core" "^27.5.1" - import-local "^3.0.2" - jest-cli "^27.5.1" - -js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -js-yaml@^3.13.1: - version "3.14.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" - integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -jsdom@^16.6.0: - version "16.7.0" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.7.0.tgz#918ae71965424b197c819f8183a754e18977b710" - integrity sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw== - dependencies: - abab "^2.0.5" - acorn "^8.2.4" - acorn-globals "^6.0.0" - cssom "^0.4.4" - cssstyle "^2.3.0" - data-urls "^2.0.0" - decimal.js "^10.2.1" - domexception "^2.0.1" - escodegen "^2.0.0" - form-data "^3.0.0" - html-encoding-sniffer "^2.0.1" - http-proxy-agent "^4.0.1" - https-proxy-agent "^5.0.0" - is-potential-custom-element-name "^1.0.1" - nwsapi "^2.2.0" - parse5 "6.0.1" - saxes "^5.0.1" - symbol-tree "^3.2.4" - tough-cookie "^4.0.0" - w3c-hr-time "^1.0.2" - w3c-xmlserializer "^2.0.0" - webidl-conversions "^6.1.0" - whatwg-encoding "^1.0.5" - whatwg-mimetype "^2.3.0" - whatwg-url "^8.5.0" - ws "^7.4.6" - xml-name-validator "^3.0.0" - -jsesc@^2.5.1: - version "2.5.2" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" - integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== - -json-parse-even-better-errors@^2.3.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" - integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== - -json5@2.x, json5@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c" - integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA== - -kleur@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" - integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== - -leven@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" - integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== - -levn@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" - integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= - dependencies: - prelude-ls "~1.1.2" - type-check "~0.3.2" - -lines-and-columns@^1.1.6: - version "1.2.4" - resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" - integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== - -locate-path@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" - integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== - dependencies: - p-locate "^4.1.0" - -lodash.memoize@4.x: - version "4.1.2" - resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" - integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= - -lodash@^4.7.0: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - -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" - -make-dir@^3.0.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.x: - version "1.3.6" - resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" - integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== - -makeerror@1.0.12: - version "1.0.12" - resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" - integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== - dependencies: - tmpl "1.0.5" - -merge-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" - integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== - -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.12: - 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" - -mimic-fn@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== - -minimatch@^3.0.4: - 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" - -mkdirp-classic@^0.5.2: - version "0.5.3" - resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" - integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== - -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== - -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= - -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" - -node-int64@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" - integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= - -node-releases@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.3.tgz#225ee7488e4a5e636da8da52854844f9d716ca96" - integrity sha512-maHFz6OLqYxz+VQyCAtA3PTX4UP/53pa05fyDNc9CwjvJ0yEh6+xBwKsgCxMNhS8taUKBFYxfuiaD9U/55iFaw== - -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== - -npm-run-path@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" - integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== - dependencies: - path-key "^3.0.0" - -nwsapi@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" - integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== - -once@^1.3.0, once@^1.3.1, once@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= - dependencies: - wrappy "1" - -onetime@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" - integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== - dependencies: - mimic-fn "^2.1.0" - -optionator@^0.8.1: - version "0.8.3" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" - integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== - dependencies: - deep-is "~0.1.3" - fast-levenshtein "~2.0.6" - levn "~0.3.0" - prelude-ls "~1.1.2" - type-check "~0.3.2" - word-wrap "~1.2.3" - -p-limit@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" - integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== - dependencies: - p-try "^2.0.0" - -p-locate@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" - integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== - dependencies: - p-limit "^2.2.0" - -p-try@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" - integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== - -parse-json@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" - integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== - dependencies: - "@babel/code-frame" "^7.0.0" - error-ex "^1.3.1" - json-parse-even-better-errors "^2.3.0" - lines-and-columns "^1.1.6" - -parse5@6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" - integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== - -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 sha1-F0uSaHNVNP+8es5r9TpanhtcX18= - -path-key@^3.0.0, 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== - -pend@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" - integrity sha1-elfrVQpng/kRUzH89GY9XI4AelA= - -picocolors@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" - integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== - -picomatch@^2.0.4, picomatch@^2.2.3, picomatch@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" - integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== - -pirates@^4.0.4: - version "4.0.5" - resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b" - integrity sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ== - -pkg-dir@4.2.0, pkg-dir@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" - integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== - dependencies: - find-up "^4.0.0" - -prelude-ls@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" - integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= - -pretty-format@^27.0.0, pretty-format@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.5.1.tgz#2181879fdea51a7a5851fb39d920faa63f01d88e" - integrity sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ== - dependencies: - ansi-regex "^5.0.1" - ansi-styles "^5.0.0" - react-is "^17.0.1" - -progress@2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" - integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== - -prompts@^2.0.1: - version "2.4.2" - resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" - integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== - dependencies: - kleur "^3.0.3" - sisteransi "^1.0.5" - -proxy-from-env@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" - integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== - -psl@^1.1.33: - version "1.8.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" - integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== - -pump@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" - integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -punycode@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" - integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== - -puppeteer@^13.5.2: - version "13.5.2" - resolved "https://registry.yarnpkg.com/puppeteer/-/puppeteer-13.5.2.tgz#73ae84969cbf514aeee871a05ec4549d67f6abee" - integrity sha512-DJAyXODBikZ3xPs8C35CtExEw78LZR9RyelGDAs0tX1dERv3OfW7qpQ9VPBgsfz+hG2HiMTO/Tyf7BuMVWsrxg== - dependencies: - cross-fetch "3.1.5" - debug "4.3.4" - devtools-protocol "0.0.969999" - extract-zip "2.0.1" - https-proxy-agent "5.0.0" - pkg-dir "4.2.0" - progress "2.0.3" - proxy-from-env "1.1.0" - rimraf "3.0.2" - tar-fs "2.1.1" - unbzip2-stream "1.4.3" - ws "8.5.0" - -react-is@^17.0.1: - version "17.0.2" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" - integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== - -readable-stream@^3.1.1, readable-stream@^3.4.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" - -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= - -resolve-cwd@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" - integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== - dependencies: - resolve-from "^5.0.0" - -resolve-from@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" - integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== - -resolve.exports@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-1.1.0.tgz#5ce842b94b05146c0e03076985d1d0e7e48c90c9" - integrity sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ== - -resolve@^1.20.0: - version "1.22.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.0.tgz#5e0b8c67c15df57a89bdbabe603a002f21731198" - integrity sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw== - dependencies: - is-core-module "^2.8.1" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - -rimraf@3.0.2, rimraf@^3.0.0: - 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" - -safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - -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== - -saxes@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" - integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== - dependencies: - xmlchars "^2.2.0" - -semver@7.x, semver@^7.3.2: - version "7.3.7" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f" - integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g== - dependencies: - lru-cache "^6.0.0" - -semver@^6.0.0, semver@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== - -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== - -signal-exit@^3.0.2, signal-exit@^3.0.3: - 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== - -sisteransi@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" - integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== - -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.6: - 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.5.0: - version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= - -source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -source-map@^0.7.3: - version "0.7.3" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" - integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== - -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= - -stack-utils@^2.0.3: - version "2.0.5" - resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.5.tgz#d25265fca995154659dbbfba3b49254778d2fdd5" - integrity sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA== - dependencies: - escape-string-regexp "^2.0.0" - -string-length@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" - integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== - dependencies: - char-regex "^1.0.2" - strip-ansi "^6.0.0" - -string-width@^4.1.0, string-width@^4.2.0: - 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.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@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" - integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== - -strip-final-newline@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" - integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== - -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@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -supports-color@^7.0.0, 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-color@^8.0.0: - version "8.1.1" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" - integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== - dependencies: - has-flag "^4.0.0" - -supports-hyperlinks@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz#4f77b42488765891774b70c79babd87f9bd594bb" - integrity sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ== - dependencies: - has-flag "^4.0.0" - supports-color "^7.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== - -symbol-tree@^3.2.4: - version "3.2.4" - resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" - integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== - -tar-fs@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784" - integrity sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng== - dependencies: - chownr "^1.1.1" - mkdirp-classic "^0.5.2" - pump "^3.0.0" - tar-stream "^2.1.4" - -tar-stream@^2.1.4: - version "2.2.0" - resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" - integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== - dependencies: - bl "^4.0.3" - end-of-stream "^1.4.1" - fs-constants "^1.0.0" - inherits "^2.0.3" - readable-stream "^3.1.1" - -terminal-link@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" - integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ== - dependencies: - ansi-escapes "^4.2.1" - supports-hyperlinks "^2.0.0" - -test-exclude@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" - integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== - dependencies: - "@istanbuljs/schema" "^0.1.2" - glob "^7.1.4" - minimatch "^3.0.4" - -throat@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/throat/-/throat-6.0.1.tgz#d514fedad95740c12c2d7fc70ea863eb51ade375" - integrity sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w== - -through@^2.3.8: - version "2.3.8" - resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" - integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= - -tmpl@1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" - integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== - -to-fast-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" - integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= - -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" - -tough-cookie@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.0.0.tgz#d822234eeca882f991f0f908824ad2622ddbece4" - integrity sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg== - dependencies: - psl "^1.1.33" - punycode "^2.1.1" - universalify "^0.1.2" - -tr46@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.1.0.tgz#fa87aa81ca5d5941da8cbf1f9b749dc969a4e240" - integrity sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw== - dependencies: - punycode "^2.1.1" - -tr46@~0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" - integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o= - -ts-jest@^27.1.4: - version "27.1.4" - resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-27.1.4.tgz#84d42cf0f4e7157a52e7c64b1492c46330943e00" - integrity sha512-qjkZlVPWVctAezwsOD1OPzbZ+k7zA5z3oxII4dGdZo5ggX/PL7kvwTM0pXTr10fAtbiVpJaL3bWd502zAhpgSQ== - dependencies: - bs-logger "0.x" - fast-json-stable-stringify "2.x" - jest-util "^27.0.0" - json5 "2.x" - lodash.memoize "4.x" - make-error "1.x" - semver "7.x" - yargs-parser "20.x" - -type-check@~0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" - integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= - dependencies: - prelude-ls "~1.1.2" - -type-detect@4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" - integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== - -type-fest@^0.21.3: - version "0.21.3" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" - integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== - -typedarray-to-buffer@^3.1.5: - version "3.1.5" - resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" - integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== - dependencies: - is-typedarray "^1.0.0" - -typescript@^4.6.3: - version "4.6.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.6.3.tgz#eefeafa6afdd31d725584c67a0eaba80f6fc6c6c" - integrity sha512-yNIatDa5iaofVozS/uQJEl3JRWLKKGJKh6Yaiv0GLGSuhpFJe7P3SbHZ8/yjAHRQwKRoA6YZqlfjXWmVzoVSMw== - -unbzip2-stream@1.4.3: - version "1.4.3" - resolved "https://registry.yarnpkg.com/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz#b0da04c4371311df771cdc215e87f2130991ace7" - integrity sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg== - dependencies: - buffer "^5.2.1" - through "^2.3.8" - -universalify@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" - integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== - -util-deprecate@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= - -v8-to-istanbul@^8.1.0: - version "8.1.1" - resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz#77b752fd3975e31bbcef938f85e9bd1c7a8d60ed" - integrity sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w== - dependencies: - "@types/istanbul-lib-coverage" "^2.0.1" - convert-source-map "^1.6.0" - source-map "^0.7.3" - -w3c-hr-time@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" - integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== - dependencies: - browser-process-hrtime "^1.0.0" - -w3c-xmlserializer@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz#3e7104a05b75146cc60f564380b7f683acf1020a" - integrity sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA== - dependencies: - xml-name-validator "^3.0.0" - -walker@^1.0.7: - version "1.0.8" - resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" - integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== - dependencies: - makeerror "1.0.12" - -webidl-conversions@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" - integrity sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE= - -webidl-conversions@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" - integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA== - -webidl-conversions@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" - integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== - -whatwg-encoding@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" - integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== - dependencies: - iconv-lite "0.4.24" - -whatwg-mimetype@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" - integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== - -whatwg-url@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" - integrity sha1-lmRU6HZUYuN2RNNib2dCzotwll0= - dependencies: - tr46 "~0.0.3" - webidl-conversions "^3.0.0" - -whatwg-url@^8.0.0, whatwg-url@^8.5.0: - version "8.7.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.7.0.tgz#656a78e510ff8f3937bc0bcbe9f5c0ac35941b77" - integrity sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg== - dependencies: - lodash "^4.7.0" - tr46 "^2.1.0" - webidl-conversions "^6.1.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" - -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== - -wrap-ansi@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= - -write-file-atomic@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" - integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== - dependencies: - imurmurhash "^0.1.4" - is-typedarray "^1.0.0" - signal-exit "^3.0.2" - typedarray-to-buffer "^3.1.5" - -ws@8.5.0: - version "8.5.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.5.0.tgz#bfb4be96600757fe5382de12c670dab984a1ed4f" - integrity sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg== - -ws@^7.4.6: - version "7.5.7" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.7.tgz#9e0ac77ee50af70d58326ecff7e85eb3fa375e67" - integrity sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A== - -xml-name-validator@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" - integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== - -xmlchars@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" - integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== - -y18n@^5.0.5: - version "5.0.8" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" - integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== - -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== - -yargs-parser@20.x, yargs-parser@^20.2.2: - version "20.2.9" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" - integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== - -yargs@^16.2.0: - version "16.2.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" - integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== - dependencies: - cliui "^7.0.2" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.0" - y18n "^5.0.5" - yargs-parser "^20.2.2" - -yauzl@^2.10.0: - version "2.10.0" - resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" - integrity sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk= - dependencies: - buffer-crc32 "~0.2.3" - fd-slicer "~1.1.0" diff --git a/twake/plugins/.gitignore b/twake/plugins/.gitignore deleted file mode 100644 index 05c23e0c..00000000 --- a/twake/plugins/.gitignore +++ /dev/null @@ -1,42 +0,0 @@ -# compiled output -/dist -/node_modules - -# Logs -logs -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* -lerna-debug.log* - -# OS -.DS_Store - -# Tests -/coverage -/.nyc_output -plugins - -# IDEs and editors -/.idea -.project -.classpath -.c9/ -*.launch -.settings/ -*.sublime-workspace - -# IDE - VSCode -.vscode/* -!.vscode/settings.json -!.vscode/tasks.json -!.vscode/launch.json -!.vscode/extensions.json - -.env.development -config/local.json -config/production.json -config/development.json -jest.config.js -/config/test-local.json diff --git a/twake/plugins/HowItWorks.png b/twake/plugins/HowItWorks.png deleted file mode 100644 index 0283039c..00000000 Binary files a/twake/plugins/HowItWorks.png and /dev/null differ diff --git a/twake/plugins/HowScriptsWorks.png b/twake/plugins/HowScriptsWorks.png deleted file mode 100644 index 5f66115e..00000000 Binary files a/twake/plugins/HowScriptsWorks.png and /dev/null differ diff --git a/twake/plugins/README.md b/twake/plugins/README.md deleted file mode 100644 index 9ce52b5b..00000000 --- a/twake/plugins/README.md +++ /dev/null @@ -1,56 +0,0 @@ -# PluginsServer - This module is WIP and not ready for production ⚠️ - -A simple to use docker image for Twake plugins. This image use docker in docker to permit to deploy plugin easily and quickly everywhere. Docker in Docker is useful but is not ready for production environment because you need to use the root container with privileged. Furthermore, with Dockerception 127.0.0.1 is not home so this is a little schema to help understanding how this container work with Twake. -![Alt text](twake/plugins/HowItWorks.png "How it works !") - -# How to use this image - -Here is a picture representing how script works together to let you install and manage plugins easily -![Alt text](twake/plugins/HowScriptsWorks.png "Scripts") - -## Start plugin server - -docker-compose -f <docker-compose.yml> up -d plugins - -## Add a plugin - -By using the command below, you clone a plugins repo, add it to a list of already installed plugins, build and run it and start the nginx reverse proxy. After this the plugin will be up and running on a port specified in the plugins.json list. -If you need for example to add environment variable to your plugin you can add it with a string as <environnemen-variable> like this: "-e GIPHY_APIKEY=toto -e GIPHY_SERET=tata" - - docker-compose -f <docker-compose.yml> exec plugins add <plugin-git-repo> <twake-plugin-id> <twake-plugin-secret> <environnement-variable> - -## Start all plugins installed - -This script will start all plugins installed and saved in plugin.json - - docker-compose -f <docker-compose.yml> exec plugins start - -### build already installed plugin - -When you already have installed a plugin, Add script will not install a plugin a second time. So you can check the configuration in plugin.json a use build script to build your image. - - docker-compose -f <docker-compose.yml> exec plugins build <plugin-git-repo> - -### Run already installed and built plugin - -If your plugin is installed and the image associated is built, just run the plugin. Before running a plugin manually check if the network (docker network ls) is already created, if not restart your nginx with script start_nginx. - - docker-compose -f <docker-compose.yml> exec plugins start_nginx && docker-compose -f <docker-compose.yml> exec plugins up <plugin-name> - -## Update a plugin - -To update a plugin, use the update script that will pull last version of the plugin on github. - - docker-compose -f <docker-compose.yml> exec plugins update <plugin-name> - -## delete a plugin - - docker-compose -f <docker-compose.yml> exec plugins delete <plugin-name> - -## list all plugin installed - - docker-compose -f <docker-compose.yml> exec plugins list - -## Start Nginx - - docker-compose -f <docker-compose.yml> exec plugins start_nginx diff --git a/twake/plugins/helpers/add.js b/twake/plugins/helpers/add.js deleted file mode 100644 index b004cbc3..00000000 --- a/twake/plugins/helpers/add.js +++ /dev/null @@ -1,75 +0,0 @@ -var fs = require("fs"); -var child_process = require("child_process"); - -const plugin_repository = process.argv[2]; -const plugin_name = process.argv[3]; -var plugin_id = ""; -var plugin_secret = ""; -if (process.argv[4] && process.argv[5]) { - plugin_id = process.argv[4]; - plugin_secret = process.argv[5]; -} -var venv = ""; -if (process.argv[6]) venv = process.argv[6]; - -var port = 8001; - -fs.readFile("/usr/src/app/plugins.json", function (err, data) { - if (err) throw err; - - var json = JSON.parse(data).plugins; - var existing = false; - - json.forEach((plugin) => { - if (plugin.port >= port) { - port = plugin.port + 1; - } - if (plugin.name === plugin_name) { - console.log(`${plugin_name.toUpperCase()} is already saved`); - existing = true; - - return existing; - } - }); - - if (existing) return; - - let obj = { - name: plugin_name, - repository: plugin_repository, - port: port, - id: plugin_id, - secret: plugin_secret, - venv: venv, - }; - - json.push(obj); - - child_process.exec( - `git clone ${plugin_repository} /usr/src/app/plugins/${plugin_name}`, - (err) => { - if (err) throw err; - fs.writeFile( - "/usr/src/app/plugins.json", - JSON.stringify({ plugins: json }), - (err) => { - if (err) throw err; - console.log( - `${plugin_name.toUpperCase()} is now cloned and saved \nWaiting for ${plugin_name.toUpperCase()} build` - ); - } - ); - child_process.exec(`build ${plugin_name} && up ${plugin_name}`, (err) => { - if (err) throw err; - console.log( - `${plugin_name.toUpperCase()} built and running on port ${port}` - ); - child_process.exec(`start_nginx`, () => { - console.log( - `${plugin_name.toUpperCase()} Reachable from host on http://localhost:8080/plugins/${plugin_name}` - ); - }); - }); - } - ); -}); diff --git a/twake/plugins/helpers/build.js b/twake/plugins/helpers/build.js deleted file mode 100644 index e98111b6..00000000 --- a/twake/plugins/helpers/build.js +++ /dev/null @@ -1,22 +0,0 @@ -var fs = require("fs"); -var child_process = require("child_process"); - -const plugin_name = process.argv[2]; - -fs.readFile("/usr/src/app/plugins.json", function (err, data) { - if (err) throw err; - - var json = JSON.parse(data).plugins; - - json.forEach((plugin) => { - if (plugin.name === plugin_name) { - existing = true; - child_process.exec( - `cd /usr/src/app/plugins/${plugin_name} && docker build -t ${plugin_name} . && cd ../..`, - (err) => { - if (err) throw err; - } - ); - } - }); -}); diff --git a/twake/plugins/helpers/delete.js b/twake/plugins/helpers/delete.js deleted file mode 100644 index f147d600..00000000 --- a/twake/plugins/helpers/delete.js +++ /dev/null @@ -1,37 +0,0 @@ -var fs = require("fs"); -var child_process = require("child_process"); - -const plugin_name = process.argv[2]; - -fs.readFile("/usr/src/app/plugins.json", function (err, data) { - if (err) throw err; - - var json = JSON.parse(data).plugins; - var existing = false; - - json.forEach((plugin) => { - if (plugin.name === plugin_name) { - existing = true; - child_process.exec( - `cd /usr/src/app/plugins/ && rm -fr ${plugin_name} && docker stop ${plugin_name} && docker system prune -f -a --volumes `, - (err) => { - const new_json = json.filter((plugin) => plugin.name !== plugin_name); - fs.writeFile( - "/usr/src/app/plugins.json", - JSON.stringify({ plugins: new_json }), - (err) => { - if (err) throw err; - child_process.exec(`start_nginx`, () => { - console.log(`nginx restarted`); - }); - console.log(`${plugin_name.toUpperCase()} deleted`); - } - ); - } - ); - } - }); - if (!existing) { - console.log(`${plugin_name.toUpperCase()} is not yet installed`); - } -}); diff --git a/twake/plugins/helpers/list.js b/twake/plugins/helpers/list.js deleted file mode 100644 index b362e774..00000000 --- a/twake/plugins/helpers/list.js +++ /dev/null @@ -1,18 +0,0 @@ -var fs = require("fs"); -fs.readFile("/usr/src/app/plugins.json", function (err, data) { - if (err) throw err; - - var json = JSON.parse(data).plugins; - var counter = 1; - - if (json.length === 0) { - console.log("No plugins saved"); - } - - json.forEach((plugin) => { - console.log( - `${counter} - ${plugin.name} from ${plugin.repository} on local port ${plugin.port}` - ); - counter++; - }); -}); diff --git a/twake/plugins/helpers/start.js b/twake/plugins/helpers/start.js deleted file mode 100644 index cd322f5a..00000000 --- a/twake/plugins/helpers/start.js +++ /dev/null @@ -1,20 +0,0 @@ -var fs = require("fs"); -var child_process = require("child_process"); - -fs.readFile("/usr/src/app/plugins.json", async function (err, data) { - if (err) throw err; - - var json = JSON.parse(data).plugins; - - json.forEach((plugin) => { - console.log(`Preparing plugin ${plugin.name}`); - child_process.exec( - `cd /usr/src/app/plugins/${plugin.name} && build ${plugin.name} && up ${plugin.name} && cd ../..`, - (err) => { - if (err) throw err; - console.log(`Plugin ${plugin.name} running on port ${plugin.port}`); - child_process.exec(`cd /usr/src/app && start_nginx`, () => {}); - } - ); - }); -}); diff --git a/twake/plugins/helpers/start_nginx.js b/twake/plugins/helpers/start_nginx.js deleted file mode 100644 index 0f53cc5f..00000000 --- a/twake/plugins/helpers/start_nginx.js +++ /dev/null @@ -1,70 +0,0 @@ -var fs = require("fs"); -var child_process = require("child_process"); - -fs.readFile("/usr/src/app/plugins.json", function (err, data) { - if (err) throw err; - - var json = JSON.parse(data).plugins; - - const conf = generate_config(json); - - fs.writeFile("/usr/src/app/nginx/nginx.conf", conf, (err) => { - if (err) throw err; - console.log("Plugins reverse proxy ready for building"); - }); - - child_process.exec( - `docker stop nginx_host && docker system prune -f -a --volumes`, - (err) => { - console.log(`Clean nginx container and rebuild`); - child_process.exec( - `cd nginx && docker build -t nginx_host . && docker run --name nginx_host --network=test-net --restart unless-stopped -dp 8080:80 nginx_host && cd ..`, - (err) => { - if (err) throw err; - console.log( - `Plugins container reverse proxy built and running on port 8080` - ); - } - ); - } - ); -}); - -const generate_config = (json) => { - var conf = ` - events {} - http { - server { - - listen 80 default_server; - listen [::]:80 default_server; - - sendfile on; - tcp_nopush on; - tcp_nodelay on; - keepalive_timeout 65; - types_hash_max_size 2048; - - location / { - # First attempt to serve request as file, then - # as directory, then fall back to displaying a 404. - try_files $uri $uri/ =408; - } - - location /api { - #proxy_set_header X-Forwarded-Host $host - proxy_pass http://172.21.0.1:3000; - } - - `; - - json.forEach((plugin) => { - conf += ` - location /plugins/${plugin.name} { - proxy_pass http://172.64.0.1:${plugin.port}; - } - `; - }); - conf += `}}`; - return conf; -}; diff --git a/twake/plugins/helpers/up.js b/twake/plugins/helpers/up.js deleted file mode 100644 index 6838a7dd..00000000 --- a/twake/plugins/helpers/up.js +++ /dev/null @@ -1,22 +0,0 @@ -var fs = require("fs"); -var child_process = require("child_process"); - -const plugin_name = process.argv[2]; - -fs.readFile("/usr/src/app/plugins.json", function (err, data) { - if (err) throw err; - - var json = JSON.parse(data).plugins; - - json.forEach((plugin) => { - if (plugin.name === plugin_name) { - existing = true; - child_process.exec( - `cd /usr/src/app/plugins/${plugin_name} && docker run --name ${plugin_name} --network=dind-net --restart unless-stopped -dp ${plugin.port}:${plugin.port} -e SERVER_PORT=${plugin.port} -e SERVER_PREFIX='/plugins/${plugin_name}' -e CREDENTIALS_ENDPOINT='http://172.64.0.1:8080' -e CREDENTIALS_SECRET=${plugin.secret} -e CREDENTIALS_ID=${plugin.id} -e SERVER_ORIGIN='http://localhost:8080' ${plugin.venv} ${plugin_name} && cd ../..`, - (err) => { - if (err) throw err; - } - ); - } - }); -}); diff --git a/twake/plugins/helpers/update.js b/twake/plugins/helpers/update.js deleted file mode 100644 index dbb729bd..00000000 --- a/twake/plugins/helpers/update.js +++ /dev/null @@ -1,31 +0,0 @@ -var fs = require("fs"); -var child_process = require("child_process"); - -const plugin_name = process.argv[2]; - -fs.readFile("/usr/src/app/plugins.json", function (err, data) { - if (err) throw err; - - var json = JSON.parse(data).plugins; - var existing = false; - - json.forEach((plugin) => { - if (plugin.name === plugin_name) { - existing = true; - child_process.exec( - `delete ${plugin_name} && add https://github.com/linagora/Twake-plugins-${plugin_name} ${plugin.id} ${plugin.secret} ${plugin.venv}`, - (err) => { - if (err) throw err; - - console.log( - `${plugin_name.toUpperCase()} is now updated, built, running and reachable from host on http://localhost:8080/plugins/${plugin_name}` - ); - } - ); - } - }); - - if (!existing) { - console.log(`${plugin_name.toUpperCase()} is not yet installed`); - } -}); diff --git a/twake/plugins/nginx/Dockerfile b/twake/plugins/nginx/Dockerfile deleted file mode 100644 index 0a1e85fc..00000000 --- a/twake/plugins/nginx/Dockerfile +++ /dev/null @@ -1,12 +0,0 @@ -FROM nginx:latest - -#RUN rm /etc/nginx/nginx.conf /etc/nginx/conf.d/default.conf - -COPY . /usr/share/nginx/html/ -COPY nginx.conf /etc/nginx - - -VOLUME /usr/share/nginx/html -VOLUME /etc/nginx - -EXPOSE 8080:80 \ No newline at end of file diff --git a/twake/plugins/nginx/nginx.conf b/twake/plugins/nginx/nginx.conf deleted file mode 100644 index 58708492..00000000 --- a/twake/plugins/nginx/nginx.conf +++ /dev/null @@ -1,29 +0,0 @@ -events {} - -http { - server { - - listen 80 default_server; - listen [::]:80 default_server; - - sendfile on; - tcp_nopush on; - tcp_nodelay on; - keepalive_timeout 65; - types_hash_max_size 2048; - - location / { - # First attempt to serve request as file, then - # as directory, then fall back to displaying a 404. - try_files $uri $uri/ =404; - } - - location /api { - #proxy_set_header X-Forwarded-Host $host - proxy_pass http://twake_node_1:3000; - } - - } - - -} \ No newline at end of file diff --git a/twake/plugins/plugins.json b/twake/plugins/plugins.json deleted file mode 100644 index d8a81e41..00000000 --- a/twake/plugins/plugins.json +++ /dev/null @@ -1 +0,0 @@ -{"plugins":[]} \ No newline at end of file diff --git a/twake/plugins/scripts/add b/twake/plugins/scripts/add deleted file mode 100644 index f220e647..00000000 --- a/twake/plugins/scripts/add +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/bash - - -GITURL=$1 -FOLDERNAME=${GITURL##*-} -ID=$2 -SECRET=$3 -VENV=$4 - - - -docker network create \ - --driver=bridge \ - --subnet=172.64.0.0/16 \ - --ip-range=172.64.0.0/24 \ - --gateway=172.64.0.1 \ - dind-net - - -node /usr/src/app/helpers/add.js $1 ${FOLDERNAME} ${ID} ${SECRET} "${VENV}" - - - - - - diff --git a/twake/plugins/scripts/build b/twake/plugins/scripts/build deleted file mode 100644 index d2729f1a..00000000 --- a/twake/plugins/scripts/build +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash - -node /usr/src/app/helpers/build.js $1 \ No newline at end of file diff --git a/twake/plugins/scripts/delete b/twake/plugins/scripts/delete deleted file mode 100644 index 6ac6a2f0..00000000 --- a/twake/plugins/scripts/delete +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash - -node /usr/src/app/helpers/delete.js $1 diff --git a/twake/plugins/scripts/list b/twake/plugins/scripts/list deleted file mode 100644 index b13b722d..00000000 --- a/twake/plugins/scripts/list +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash - -node /usr/src/app/helpers/list.js diff --git a/twake/plugins/scripts/start b/twake/plugins/scripts/start deleted file mode 100644 index 5f388f8f..00000000 --- a/twake/plugins/scripts/start +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash - -docker network create \ - --driver=bridge \ - --subnet=172.64.0.0/16 \ - --ip-range=172.64.0.0/24 \ - --gateway=172.64.0.1 \ - dind-net - - -node /usr/src/app/helpers/start.js diff --git a/twake/plugins/scripts/start_nginx b/twake/plugins/scripts/start_nginx deleted file mode 100644 index 607710e8..00000000 --- a/twake/plugins/scripts/start_nginx +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/bash - -docker network create \ - --driver=bridge \ - --subnet=172.64.0.0/16 \ - --ip-range=172.64.0.0/24 \ - --gateway=172.64.0.1 \ - dind-net - - -node /usr/src/app/helpers/start_nginx.js - diff --git a/twake/plugins/scripts/up b/twake/plugins/scripts/up deleted file mode 100644 index 98236858..00000000 --- a/twake/plugins/scripts/up +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash - -node /usr/src/app/helpers/up.js $1 \ No newline at end of file diff --git a/twake/plugins/scripts/update b/twake/plugins/scripts/update deleted file mode 100644 index b3937408..00000000 --- a/twake/plugins/scripts/update +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash - -node /usr/src/app/helpers/update.js $1