diff --git a/server/routers/old/basket/auth.js b/.bzr/legacy/basket/auth.js similarity index 100% rename from server/routers/old/basket/auth.js rename to .bzr/legacy/basket/auth.js diff --git a/server/routers/old/basket/categories.js b/.bzr/legacy/basket/categories.js similarity index 100% rename from server/routers/old/basket/categories.js rename to .bzr/legacy/basket/categories.js diff --git a/server/routers/old/basket/controller.js b/.bzr/legacy/basket/controller.js similarity index 100% rename from server/routers/old/basket/controller.js rename to .bzr/legacy/basket/controller.js diff --git a/server/routers/old/basket/dashboard.js b/.bzr/legacy/basket/dashboard.js similarity index 100% rename from server/routers/old/basket/dashboard.js rename to .bzr/legacy/basket/dashboard.js diff --git a/server/routers/old/basket/index.js b/.bzr/legacy/basket/index.js similarity index 100% rename from server/routers/old/basket/index.js rename to .bzr/legacy/basket/index.js diff --git a/server/routers/old/basket/json/auth/sign-in.json b/.bzr/legacy/basket/json/auth/sign-in.json similarity index 100% rename from server/routers/old/basket/json/auth/sign-in.json rename to .bzr/legacy/basket/json/auth/sign-in.json diff --git a/server/routers/old/basket/json/categories/add/success.json b/.bzr/legacy/basket/json/categories/add/success.json similarity index 100% rename from server/routers/old/basket/json/categories/add/success.json rename to .bzr/legacy/basket/json/categories/add/success.json diff --git a/server/routers/old/basket/json/categories/current/success.json b/.bzr/legacy/basket/json/categories/current/success.json similarity index 100% rename from server/routers/old/basket/json/categories/current/success.json rename to .bzr/legacy/basket/json/categories/current/success.json diff --git a/server/routers/old/basket/json/dashboard/common/error.json b/.bzr/legacy/basket/json/dashboard/common/error.json similarity index 100% rename from server/routers/old/basket/json/dashboard/common/error.json rename to .bzr/legacy/basket/json/dashboard/common/error.json diff --git a/server/routers/old/basket/json/dashboard/common/success.json b/.bzr/legacy/basket/json/dashboard/common/success.json similarity index 100% rename from server/routers/old/basket/json/dashboard/common/success.json rename to .bzr/legacy/basket/json/dashboard/common/success.json diff --git a/server/routers/old/basket/json/dashboard/list/empty.json b/.bzr/legacy/basket/json/dashboard/list/empty.json similarity index 100% rename from server/routers/old/basket/json/dashboard/list/empty.json rename to .bzr/legacy/basket/json/dashboard/list/empty.json diff --git a/server/routers/old/basket/json/dashboard/list/error.json b/.bzr/legacy/basket/json/dashboard/list/error.json similarity index 100% rename from server/routers/old/basket/json/dashboard/list/error.json rename to .bzr/legacy/basket/json/dashboard/list/error.json diff --git a/server/routers/old/basket/json/dashboard/list/success.json b/.bzr/legacy/basket/json/dashboard/list/success.json similarity index 100% rename from server/routers/old/basket/json/dashboard/list/success.json rename to .bzr/legacy/basket/json/dashboard/list/success.json diff --git a/server/routers/old/basket/json/landing/error.json b/.bzr/legacy/basket/json/landing/error.json similarity index 100% rename from server/routers/old/basket/json/landing/error.json rename to .bzr/legacy/basket/json/landing/error.json diff --git a/server/routers/old/basket/json/landing/success.json b/.bzr/legacy/basket/json/landing/success.json similarity index 100% rename from server/routers/old/basket/json/landing/success.json rename to .bzr/legacy/basket/json/landing/success.json diff --git a/server/routers/old/basket/json/listItem/item/error.json b/.bzr/legacy/basket/json/listItem/item/error.json similarity index 100% rename from server/routers/old/basket/json/listItem/item/error.json rename to .bzr/legacy/basket/json/listItem/item/error.json diff --git a/server/routers/old/basket/json/listItem/item/success.json b/.bzr/legacy/basket/json/listItem/item/success.json similarity index 100% rename from server/routers/old/basket/json/listItem/item/success.json rename to .bzr/legacy/basket/json/listItem/item/success.json diff --git a/server/routers/old/basket/json/listItem/shoppingList/error.json b/.bzr/legacy/basket/json/listItem/shoppingList/error.json similarity index 100% rename from server/routers/old/basket/json/listItem/shoppingList/error.json rename to .bzr/legacy/basket/json/listItem/shoppingList/error.json diff --git a/server/routers/old/basket/json/listItem/shoppingList/success.json b/.bzr/legacy/basket/json/listItem/shoppingList/success.json similarity index 100% rename from server/routers/old/basket/json/listItem/shoppingList/success.json rename to .bzr/legacy/basket/json/listItem/shoppingList/success.json diff --git a/server/routers/old/basket/key.js b/.bzr/legacy/basket/key.js similarity index 100% rename from server/routers/old/basket/key.js rename to .bzr/legacy/basket/key.js diff --git a/server/routers/old/basket/landing.js b/.bzr/legacy/basket/landing.js similarity index 100% rename from server/routers/old/basket/landing.js rename to .bzr/legacy/basket/landing.js diff --git a/server/routers/old/basket/listItem.js b/.bzr/legacy/basket/listItem.js similarity index 100% rename from server/routers/old/basket/listItem.js rename to .bzr/legacy/basket/listItem.js diff --git a/server/routers/old/bushou/episodes/success.json b/.bzr/legacy/bushou/episodes/success.json similarity index 100% rename from server/routers/old/bushou/episodes/success.json rename to .bzr/legacy/bushou/episodes/success.json diff --git a/.bzr/legacy/bushou/images.tar b/.bzr/legacy/bushou/images.tar new file mode 100644 index 0000000..766d40c Binary files /dev/null and b/.bzr/legacy/bushou/images.tar differ diff --git a/server/routers/old/bushou/index.js b/.bzr/legacy/bushou/index.js similarity index 100% rename from server/routers/old/bushou/index.js rename to .bzr/legacy/bushou/index.js diff --git a/server/routers/old/bushou/radicals/success.json b/.bzr/legacy/bushou/radicals/success.json similarity index 100% rename from server/routers/old/bushou/radicals/success.json rename to .bzr/legacy/bushou/radicals/success.json diff --git a/server/routers/old/bushou/tokenize/success.json b/.bzr/legacy/bushou/tokenize/success.json similarity index 100% rename from server/routers/old/bushou/tokenize/success.json rename to .bzr/legacy/bushou/tokenize/success.json diff --git a/server/routers/old/car-wash/auth/index.js b/.bzr/legacy/car-wash/auth/index.js similarity index 100% rename from server/routers/old/car-wash/auth/index.js rename to .bzr/legacy/car-wash/auth/index.js diff --git a/server/routers/old/car-wash/auth/login/error.json b/.bzr/legacy/car-wash/auth/login/error.json similarity index 100% rename from server/routers/old/car-wash/auth/login/error.json rename to .bzr/legacy/car-wash/auth/login/error.json diff --git a/server/routers/old/car-wash/auth/login/index.js b/.bzr/legacy/car-wash/auth/login/index.js similarity index 100% rename from server/routers/old/car-wash/auth/login/index.js rename to .bzr/legacy/car-wash/auth/login/index.js diff --git a/server/routers/old/car-wash/auth/login/success.json b/.bzr/legacy/car-wash/auth/login/success.json similarity index 100% rename from server/routers/old/car-wash/auth/login/success.json rename to .bzr/legacy/car-wash/auth/login/success.json diff --git a/server/routers/old/car-wash/auth/logrec/error.json b/.bzr/legacy/car-wash/auth/logrec/error.json similarity index 100% rename from server/routers/old/car-wash/auth/logrec/error.json rename to .bzr/legacy/car-wash/auth/logrec/error.json diff --git a/server/routers/old/car-wash/auth/logrec/index.js b/.bzr/legacy/car-wash/auth/logrec/index.js similarity index 100% rename from server/routers/old/car-wash/auth/logrec/index.js rename to .bzr/legacy/car-wash/auth/logrec/index.js diff --git a/server/routers/old/car-wash/auth/logrec/success.json b/.bzr/legacy/car-wash/auth/logrec/success.json similarity index 100% rename from server/routers/old/car-wash/auth/logrec/success.json rename to .bzr/legacy/car-wash/auth/logrec/success.json diff --git a/server/routers/old/car-wash/auth/passrec/error.json b/.bzr/legacy/car-wash/auth/passrec/error.json similarity index 100% rename from server/routers/old/car-wash/auth/passrec/error.json rename to .bzr/legacy/car-wash/auth/passrec/error.json diff --git a/server/routers/old/car-wash/auth/passrec/index.js b/.bzr/legacy/car-wash/auth/passrec/index.js similarity index 100% rename from server/routers/old/car-wash/auth/passrec/index.js rename to .bzr/legacy/car-wash/auth/passrec/index.js diff --git a/server/routers/old/car-wash/auth/passrec/success.json b/.bzr/legacy/car-wash/auth/passrec/success.json similarity index 100% rename from server/routers/old/car-wash/auth/passrec/success.json rename to .bzr/legacy/car-wash/auth/passrec/success.json diff --git a/server/routers/old/car-wash/auth/registration/dooble.json b/.bzr/legacy/car-wash/auth/registration/dooble.json similarity index 100% rename from server/routers/old/car-wash/auth/registration/dooble.json rename to .bzr/legacy/car-wash/auth/registration/dooble.json diff --git a/server/routers/old/car-wash/auth/registration/dooblephone.json b/.bzr/legacy/car-wash/auth/registration/dooblephone.json similarity index 100% rename from server/routers/old/car-wash/auth/registration/dooblephone.json rename to .bzr/legacy/car-wash/auth/registration/dooblephone.json diff --git a/server/routers/old/car-wash/auth/registration/error.json b/.bzr/legacy/car-wash/auth/registration/error.json similarity index 100% rename from server/routers/old/car-wash/auth/registration/error.json rename to .bzr/legacy/car-wash/auth/registration/error.json diff --git a/server/routers/old/car-wash/auth/registration/index.js b/.bzr/legacy/car-wash/auth/registration/index.js similarity index 100% rename from server/routers/old/car-wash/auth/registration/index.js rename to .bzr/legacy/car-wash/auth/registration/index.js diff --git a/server/routers/old/car-wash/auth/registration/success.json b/.bzr/legacy/car-wash/auth/registration/success.json similarity index 100% rename from server/routers/old/car-wash/auth/registration/success.json rename to .bzr/legacy/car-wash/auth/registration/success.json diff --git a/server/routers/old/car-wash/carousel/carousel-en.json b/.bzr/legacy/car-wash/carousel/carousel-en.json similarity index 100% rename from server/routers/old/car-wash/carousel/carousel-en.json rename to .bzr/legacy/car-wash/carousel/carousel-en.json diff --git a/server/routers/old/car-wash/carousel/carousel-ru.json b/.bzr/legacy/car-wash/carousel/carousel-ru.json similarity index 100% rename from server/routers/old/car-wash/carousel/carousel-ru.json rename to .bzr/legacy/car-wash/carousel/carousel-ru.json diff --git a/server/routers/old/car-wash/carousel/index.js b/.bzr/legacy/car-wash/carousel/index.js similarity index 100% rename from server/routers/old/car-wash/carousel/index.js rename to .bzr/legacy/car-wash/carousel/index.js diff --git a/server/routers/old/car-wash/index.js b/.bzr/legacy/car-wash/index.js similarity index 100% rename from server/routers/old/car-wash/index.js rename to .bzr/legacy/car-wash/index.js diff --git a/server/routers/old/car-wash/map/index.js b/.bzr/legacy/car-wash/map/index.js similarity index 100% rename from server/routers/old/car-wash/map/index.js rename to .bzr/legacy/car-wash/map/index.js diff --git a/server/routers/old/car-wash/map/map-info-en.json b/.bzr/legacy/car-wash/map/map-info-en.json similarity index 100% rename from server/routers/old/car-wash/map/map-info-en.json rename to .bzr/legacy/car-wash/map/map-info-en.json diff --git a/server/routers/old/car-wash/map/map-info-ru.json b/.bzr/legacy/car-wash/map/map-info-ru.json similarity index 100% rename from server/routers/old/car-wash/map/map-info-ru.json rename to .bzr/legacy/car-wash/map/map-info-ru.json diff --git a/server/routers/old/car-wash/prices/index.js b/.bzr/legacy/car-wash/prices/index.js similarity index 100% rename from server/routers/old/car-wash/prices/index.js rename to .bzr/legacy/car-wash/prices/index.js diff --git a/server/routers/old/car-wash/prices/prices-en.json b/.bzr/legacy/car-wash/prices/prices-en.json similarity index 100% rename from server/routers/old/car-wash/prices/prices-en.json rename to .bzr/legacy/car-wash/prices/prices-en.json diff --git a/server/routers/old/car-wash/prices/prices-ru.json b/.bzr/legacy/car-wash/prices/prices-ru.json similarity index 100% rename from server/routers/old/car-wash/prices/prices-ru.json rename to .bzr/legacy/car-wash/prices/prices-ru.json diff --git a/server/routers/old/coder/catalog/cardData.json b/.bzr/legacy/coder/catalog/cardData.json similarity index 100% rename from server/routers/old/coder/catalog/cardData.json rename to .bzr/legacy/coder/catalog/cardData.json diff --git a/server/routers/old/coder/catalog/error.json b/.bzr/legacy/coder/catalog/error.json similarity index 100% rename from server/routers/old/coder/catalog/error.json rename to .bzr/legacy/coder/catalog/error.json diff --git a/server/routers/old/coder/catalog/index.js b/.bzr/legacy/coder/catalog/index.js similarity index 100% rename from server/routers/old/coder/catalog/index.js rename to .bzr/legacy/coder/catalog/index.js diff --git a/server/routers/old/coder/controllers.js b/.bzr/legacy/coder/controllers.js similarity index 100% rename from server/routers/old/coder/controllers.js rename to .bzr/legacy/coder/controllers.js diff --git a/server/routers/old/coder/forum/categories.json b/.bzr/legacy/coder/forum/categories.json similarity index 100% rename from server/routers/old/coder/forum/categories.json rename to .bzr/legacy/coder/forum/categories.json diff --git a/server/routers/old/coder/forum/error.json b/.bzr/legacy/coder/forum/error.json similarity index 100% rename from server/routers/old/coder/forum/error.json rename to .bzr/legacy/coder/forum/error.json diff --git a/server/routers/old/coder/forum/index.js b/.bzr/legacy/coder/forum/index.js similarity index 100% rename from server/routers/old/coder/forum/index.js rename to .bzr/legacy/coder/forum/index.js diff --git a/server/routers/old/coder/forum/topic-comments.json b/.bzr/legacy/coder/forum/topic-comments.json similarity index 100% rename from server/routers/old/coder/forum/topic-comments.json rename to .bzr/legacy/coder/forum/topic-comments.json diff --git a/server/routers/old/coder/forum/topic-list.json b/.bzr/legacy/coder/forum/topic-list.json similarity index 100% rename from server/routers/old/coder/forum/topic-list.json rename to .bzr/legacy/coder/forum/topic-list.json diff --git a/server/routers/old/coder/forum/topic-tags.json b/.bzr/legacy/coder/forum/topic-tags.json similarity index 100% rename from server/routers/old/coder/forum/topic-tags.json rename to .bzr/legacy/coder/forum/topic-tags.json diff --git a/server/routers/old/coder/forum/topic.json b/.bzr/legacy/coder/forum/topic.json similarity index 100% rename from server/routers/old/coder/forum/topic.json rename to .bzr/legacy/coder/forum/topic.json diff --git a/server/routers/old/coder/forum/users.json b/.bzr/legacy/coder/forum/users.json similarity index 100% rename from server/routers/old/coder/forum/users.json rename to .bzr/legacy/coder/forum/users.json diff --git a/server/routers/old/coder/index.js b/.bzr/legacy/coder/index.js similarity index 100% rename from server/routers/old/coder/index.js rename to .bzr/legacy/coder/index.js diff --git a/server/routers/old/coder/topic/dynamic-programming.json b/.bzr/legacy/coder/topic/dynamic-programming.json similarity index 100% rename from server/routers/old/coder/topic/dynamic-programming.json rename to .bzr/legacy/coder/topic/dynamic-programming.json diff --git a/server/routers/old/coder/topic/dynamic-programming/arrays-and-strings.json b/.bzr/legacy/coder/topic/dynamic-programming/arrays-and-strings.json similarity index 100% rename from server/routers/old/coder/topic/dynamic-programming/arrays-and-strings.json rename to .bzr/legacy/coder/topic/dynamic-programming/arrays-and-strings.json diff --git a/server/routers/old/coder/topic/dynamic-programming/dynamic-programming.json b/.bzr/legacy/coder/topic/dynamic-programming/dynamic-programming.json similarity index 100% rename from server/routers/old/coder/topic/dynamic-programming/dynamic-programming.json rename to .bzr/legacy/coder/topic/dynamic-programming/dynamic-programming.json diff --git a/server/routers/old/coder/topic/dynamic-programming/linked-list.json b/.bzr/legacy/coder/topic/dynamic-programming/linked-list.json similarity index 100% rename from server/routers/old/coder/topic/dynamic-programming/linked-list.json rename to .bzr/legacy/coder/topic/dynamic-programming/linked-list.json diff --git a/server/routers/old/coder/topic/dynamic-programming/overview.json b/.bzr/legacy/coder/topic/dynamic-programming/overview.json similarity index 100% rename from server/routers/old/coder/topic/dynamic-programming/overview.json rename to .bzr/legacy/coder/topic/dynamic-programming/overview.json diff --git a/server/routers/old/coder/topic/error.json b/.bzr/legacy/coder/topic/error.json similarity index 100% rename from server/routers/old/coder/topic/error.json rename to .bzr/legacy/coder/topic/error.json diff --git a/server/routers/old/coder/topic/index.js b/.bzr/legacy/coder/topic/index.js similarity index 100% rename from server/routers/old/coder/topic/index.js rename to .bzr/legacy/coder/topic/index.js diff --git a/server/routers/old/easy-project/auth.js b/.bzr/legacy/easy-project/auth.js similarity index 100% rename from server/routers/old/easy-project/auth.js rename to .bzr/legacy/easy-project/auth.js diff --git a/server/routers/old/easy-project/constants.js b/.bzr/legacy/easy-project/constants.js similarity index 100% rename from server/routers/old/easy-project/constants.js rename to .bzr/legacy/easy-project/constants.js diff --git a/server/routers/old/easy-project/db.js b/.bzr/legacy/easy-project/db.js similarity index 100% rename from server/routers/old/easy-project/db.js rename to .bzr/legacy/easy-project/db.js diff --git a/server/routers/old/easy-project/index.js b/.bzr/legacy/easy-project/index.js similarity index 100% rename from server/routers/old/easy-project/index.js rename to .bzr/legacy/easy-project/index.js diff --git a/server/routers/old/easy-project/middlewares/auth-middleware.js b/.bzr/legacy/easy-project/middlewares/auth-middleware.js similarity index 100% rename from server/routers/old/easy-project/middlewares/auth-middleware.js rename to .bzr/legacy/easy-project/middlewares/auth-middleware.js diff --git a/server/routers/old/easy-project/projects.js b/.bzr/legacy/easy-project/projects.js similarity index 100% rename from server/routers/old/easy-project/projects.js rename to .bzr/legacy/easy-project/projects.js diff --git a/server/routers/old/easy-project/tasks.js b/.bzr/legacy/easy-project/tasks.js similarity index 100% rename from server/routers/old/easy-project/tasks.js rename to .bzr/legacy/easy-project/tasks.js diff --git a/server/routers/old/easy-project/users.js b/.bzr/legacy/easy-project/users.js similarity index 100% rename from server/routers/old/easy-project/users.js rename to .bzr/legacy/easy-project/users.js diff --git a/server/routers/old/easy-project/utils.js b/.bzr/legacy/easy-project/utils.js similarity index 100% rename from server/routers/old/easy-project/utils.js rename to .bzr/legacy/easy-project/utils.js diff --git a/server/routers/old/edateam/auth.js b/.bzr/legacy/edateam/auth.js similarity index 100% rename from server/routers/old/edateam/auth.js rename to .bzr/legacy/edateam/auth.js diff --git a/server/routers/old/edateam/controllers.js b/.bzr/legacy/edateam/controllers.js similarity index 100% rename from server/routers/old/edateam/controllers.js rename to .bzr/legacy/edateam/controllers.js diff --git a/server/routers/old/edateam/index.js b/.bzr/legacy/edateam/index.js similarity index 100% rename from server/routers/old/edateam/index.js rename to .bzr/legacy/edateam/index.js diff --git a/server/routers/old/edateam/json/homepage-data/success.json b/.bzr/legacy/edateam/json/homepage-data/success.json similarity index 100% rename from server/routers/old/edateam/json/homepage-data/success.json rename to .bzr/legacy/edateam/json/homepage-data/success.json diff --git a/server/routers/old/edateam/json/recipe-data/success.json b/.bzr/legacy/edateam/json/recipe-data/success.json similarity index 100% rename from server/routers/old/edateam/json/recipe-data/success.json rename to .bzr/legacy/edateam/json/recipe-data/success.json diff --git a/server/routers/old/edateam/json/userpage-data/success.json b/.bzr/legacy/edateam/json/userpage-data/success.json similarity index 100% rename from server/routers/old/edateam/json/userpage-data/success.json rename to .bzr/legacy/edateam/json/userpage-data/success.json diff --git a/server/routers/old/edateam/key.js b/.bzr/legacy/edateam/key.js similarity index 100% rename from server/routers/old/edateam/key.js rename to .bzr/legacy/edateam/key.js diff --git a/server/routers/old/edateam/main.js b/.bzr/legacy/edateam/main.js similarity index 100% rename from server/routers/old/edateam/main.js rename to .bzr/legacy/edateam/main.js diff --git a/server/routers/old/edateam/user.js b/.bzr/legacy/edateam/user.js similarity index 100% rename from server/routers/old/edateam/user.js rename to .bzr/legacy/edateam/user.js diff --git a/server/routers/old/epja-2023-2/example/index.js b/.bzr/legacy/epja-2023-2/example/index.js similarity index 100% rename from server/routers/old/epja-2023-2/example/index.js rename to .bzr/legacy/epja-2023-2/example/index.js diff --git a/server/routers/old/epja-2023-2/example/news.json b/.bzr/legacy/epja-2023-2/example/news.json similarity index 100% rename from server/routers/old/epja-2023-2/example/news.json rename to .bzr/legacy/epja-2023-2/example/news.json diff --git a/server/routers/old/epja-2023-2/index.js b/.bzr/legacy/epja-2023-2/index.js similarity index 100% rename from server/routers/old/epja-2023-2/index.js rename to .bzr/legacy/epja-2023-2/index.js diff --git a/server/routers/old/epja-2023-2/pen-plotter/index.js b/.bzr/legacy/epja-2023-2/pen-plotter/index.js similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/index.js rename to .bzr/legacy/epja-2023-2/pen-plotter/index.js diff --git a/server/routers/old/epja-2023-2/pen-plotter/paths.js b/.bzr/legacy/epja-2023-2/pen-plotter/paths.js similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/paths.js rename to .bzr/legacy/epja-2023-2/pen-plotter/paths.js diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Andrei Konakhau/lower-e/0.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Andrei Konakhau/lower-e/0.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Andrei Konakhau/lower-e/0.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Andrei Konakhau/lower-e/0.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Andrei Konakhau/lower-k/0.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Andrei Konakhau/lower-k/0.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Andrei Konakhau/lower-k/0.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Andrei Konakhau/lower-k/0.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Andrei Konakhau/lower-y/0.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Andrei Konakhau/lower-y/0.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Andrei Konakhau/lower-y/0.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Andrei Konakhau/lower-y/0.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Andrei Konakhau/upper-H/0.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Andrei Konakhau/upper-H/0.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Andrei Konakhau/upper-H/0.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Andrei Konakhau/upper-H/0.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Andrei Konakhau/upper-M/0.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Andrei Konakhau/upper-M/0.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Andrei Konakhau/upper-M/0.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Andrei Konakhau/upper-M/0.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/ampersand/0.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/ampersand/0.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/ampersand/0.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/ampersand/0.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/asterisk/0.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/asterisk/0.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/asterisk/0.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/asterisk/0.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/caret/0.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/caret/0.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/caret/0.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/caret/0.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/colon/0.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/colon/0.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/colon/0.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/colon/0.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/comma/0.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/comma/0.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/comma/0.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/comma/0.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/dollar/0.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/dollar/0.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/dollar/0.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/dollar/0.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/doubleQuote/0.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/doubleQuote/0.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/doubleQuote/0.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/doubleQuote/0.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/eight/0.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/eight/0.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/eight/0.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/eight/0.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/equal/0.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/equal/0.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/equal/0.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/equal/0.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/exclamationMark/0.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/exclamationMark/0.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/exclamationMark/0.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/exclamationMark/0.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/five/0.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/five/0.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/five/0.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/five/0.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/four/0.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/four/0.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/four/0.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/four/0.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/graveAccent/0.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/graveAccent/0.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/graveAccent/0.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/graveAccent/0.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/greaterThan/0.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/greaterThan/0.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/greaterThan/0.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/greaterThan/0.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/hash/0.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/hash/0.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/hash/0.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/hash/0.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/hyphen/0.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/hyphen/0.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/hyphen/0.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/hyphen/0.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/leftCurlyBrace/0.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/leftCurlyBrace/0.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/leftCurlyBrace/0.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/leftCurlyBrace/0.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/leftParenthesis/0.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/leftParenthesis/0.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/leftParenthesis/0.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/leftParenthesis/0.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/leftSquareBracket/0.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/leftSquareBracket/0.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/leftSquareBracket/0.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/leftSquareBracket/0.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lessThan/0.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lessThan/0.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lessThan/0.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lessThan/0.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-a/0.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-a/0.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-a/0.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-a/0.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-b/0.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-b/0.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-b/0.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-b/0.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-c/0.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-c/0.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-c/0.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-c/0.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-d/0.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-d/0.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-d/0.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-d/0.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-d/1.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-d/1.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-d/1.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-d/1.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-e/0.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-e/0.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-e/0.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-e/0.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-f/0.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-f/0.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-f/0.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-f/0.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-g/0.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-g/0.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-g/0.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-g/0.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-h/0.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-h/0.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-h/0.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-h/0.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-i/0.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-i/0.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-i/0.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-i/0.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-j/0.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-j/0.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-j/0.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-j/0.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-k/0.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-k/0.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-k/0.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-k/0.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-l/0.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-l/0.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-l/0.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-l/0.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-m/0.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-m/0.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-m/0.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-m/0.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-n/0.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-n/0.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-n/0.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-n/0.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-o/0.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-o/0.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-o/0.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-o/0.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-p/0.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-p/0.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-p/0.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-p/0.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-q/0.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-q/0.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-q/0.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-q/0.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-r/0.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-r/0.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-r/0.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-r/0.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-s/0.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-s/0.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-s/0.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-s/0.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-t/0.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-t/0.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-t/0.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-t/0.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-u/0.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-u/0.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-u/0.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-u/0.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-v/0.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-v/0.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-v/0.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-v/0.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-w/0.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-w/0.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-w/0.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-w/0.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-x/0.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-x/0.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-x/0.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-x/0.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-y/0.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-y/0.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-y/0.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-y/0.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-z/0.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-z/0.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-z/0.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/lower-z/0.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/nine/0.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/nine/0.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/nine/0.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/nine/0.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/one/0.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/one/0.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/one/0.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/one/0.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/percent/0.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/percent/0.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/percent/0.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/percent/0.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/period/0.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/period/0.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/period/0.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/period/0.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/pipe/0.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/pipe/0.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/pipe/0.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/pipe/0.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/plus/0.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/plus/0.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/plus/0.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/plus/0.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/questionMark/0.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/questionMark/0.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/questionMark/0.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/questionMark/0.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/rightCurlyBrace/0.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/rightCurlyBrace/0.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/rightCurlyBrace/0.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/rightCurlyBrace/0.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/rightParenthesis/0.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/rightParenthesis/0.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/rightParenthesis/0.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/rightParenthesis/0.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/rightSquareBracket/0.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/rightSquareBracket/0.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/rightSquareBracket/0.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/rightSquareBracket/0.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/seven/0.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/seven/0.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/seven/0.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/seven/0.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/singleQuote/0.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/singleQuote/0.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/singleQuote/0.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/singleQuote/0.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/six/0.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/six/0.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/six/0.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/six/0.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/slash/0.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/slash/0.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/slash/0.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/slash/0.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/three/0.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/three/0.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/three/0.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/three/0.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/tilde/0.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/tilde/0.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/tilde/0.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/tilde/0.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/two/0.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/two/0.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/two/0.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/two/0.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/underscore/0.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/underscore/0.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/underscore/0.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/underscore/0.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-;/0.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-;/0.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-;/0.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-;/0.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-A/0.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-A/0.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-A/0.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-A/0.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-B/0.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-B/0.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-B/0.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-B/0.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-C/0.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-C/0.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-C/0.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-C/0.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-D/0.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-D/0.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-D/0.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-D/0.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-E/0.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-E/0.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-E/0.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-E/0.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-F/0.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-F/0.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-F/0.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-F/0.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-G/0.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-G/0.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-G/0.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-G/0.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-H/0.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-H/0.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-H/0.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-H/0.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-I/0.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-I/0.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-I/0.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-I/0.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-J/0.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-J/0.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-J/0.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-J/0.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-K/0.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-K/0.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-K/0.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-K/0.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-L/0.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-L/0.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-L/0.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-L/0.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-M/0.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-M/0.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-M/0.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-M/0.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-N/0.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-N/0.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-N/0.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-N/0.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-O/0.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-O/0.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-O/0.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-O/0.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-P/0.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-P/0.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-P/0.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-P/0.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-Q/0.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-Q/0.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-Q/0.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-Q/0.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-R/0.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-R/0.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-R/0.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-R/0.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-S/0.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-S/0.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-S/0.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-S/0.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-T/0.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-T/0.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-T/0.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-T/0.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-U/0.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-U/0.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-U/0.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-U/0.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-V/0.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-V/0.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-V/0.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-V/0.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-W/0.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-W/0.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-W/0.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-W/0.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-X/0.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-X/0.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-X/0.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-X/0.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-Y/0.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-Y/0.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-Y/0.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-Y/0.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-Z/0.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-Z/0.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-Z/0.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/upper-Z/0.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/zero/0.svg b/.bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/zero/0.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/zero/0.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/profiles/Zeyad Alagamy/zero/0.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/routes/api.js b/.bzr/legacy/epja-2023-2/pen-plotter/routes/api.js similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/routes/api.js rename to .bzr/legacy/epja-2023-2/pen-plotter/routes/api.js diff --git a/server/routers/old/epja-2023-2/pen-plotter/routes/sub-routes/svg.js b/.bzr/legacy/epja-2023-2/pen-plotter/routes/sub-routes/svg.js similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/routes/sub-routes/svg.js rename to .bzr/legacy/epja-2023-2/pen-plotter/routes/sub-routes/svg.js diff --git a/server/routers/old/epja-2023-2/pen-plotter/routes/sub-routes/users.js b/.bzr/legacy/epja-2023-2/pen-plotter/routes/sub-routes/users.js similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/routes/sub-routes/users.js rename to .bzr/legacy/epja-2023-2/pen-plotter/routes/sub-routes/users.js diff --git a/server/routers/old/epja-2023-2/pen-plotter/static/generated.svg b/.bzr/legacy/epja-2023-2/pen-plotter/static/generated.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/static/generated.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/static/generated.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/static/p.svg b/.bzr/legacy/epja-2023-2/pen-plotter/static/p.svg similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/static/p.svg rename to .bzr/legacy/epja-2023-2/pen-plotter/static/p.svg diff --git a/server/routers/old/epja-2023-2/pen-plotter/utilities/svg.js b/.bzr/legacy/epja-2023-2/pen-plotter/utilities/svg.js similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/utilities/svg.js rename to .bzr/legacy/epja-2023-2/pen-plotter/utilities/svg.js diff --git a/server/routers/old/epja-2023-2/pen-plotter/utilities/user.js b/.bzr/legacy/epja-2023-2/pen-plotter/utilities/user.js similarity index 100% rename from server/routers/old/epja-2023-2/pen-plotter/utilities/user.js rename to .bzr/legacy/epja-2023-2/pen-plotter/utilities/user.js diff --git a/server/routers/old/epja-2023-2/score-scout/index.js b/.bzr/legacy/epja-2023-2/score-scout/index.js similarity index 100% rename from server/routers/old/epja-2023-2/score-scout/index.js rename to .bzr/legacy/epja-2023-2/score-scout/index.js diff --git a/server/routers/old/epja-2023-2/score-scout/tournament-empty.json b/.bzr/legacy/epja-2023-2/score-scout/tournament-empty.json similarity index 100% rename from server/routers/old/epja-2023-2/score-scout/tournament-empty.json rename to .bzr/legacy/epja-2023-2/score-scout/tournament-empty.json diff --git a/server/routers/old/epja-2023-2/score-scout/tournament.json b/.bzr/legacy/epja-2023-2/score-scout/tournament.json similarity index 100% rename from server/routers/old/epja-2023-2/score-scout/tournament.json rename to .bzr/legacy/epja-2023-2/score-scout/tournament.json diff --git a/server/routers/old/epja-2023-2/score-scout/tournaments_active.json b/.bzr/legacy/epja-2023-2/score-scout/tournaments_active.json similarity index 100% rename from server/routers/old/epja-2023-2/score-scout/tournaments_active.json rename to .bzr/legacy/epja-2023-2/score-scout/tournaments_active.json diff --git a/server/routers/old/epja-2023-2/score-scout/tournaments_archived.json b/.bzr/legacy/epja-2023-2/score-scout/tournaments_archived.json similarity index 100% rename from server/routers/old/epja-2023-2/score-scout/tournaments_archived.json rename to .bzr/legacy/epja-2023-2/score-scout/tournaments_archived.json diff --git a/server/routers/old/hub-video/index.js b/.bzr/legacy/hub-video/index.js similarity index 100% rename from server/routers/old/hub-video/index.js rename to .bzr/legacy/hub-video/index.js diff --git a/server/routers/old/lobsters/index.js b/.bzr/legacy/lobsters/index.js similarity index 100% rename from server/routers/old/lobsters/index.js rename to .bzr/legacy/lobsters/index.js diff --git a/server/routers/old/lobsters/stubs/allCourses.json b/.bzr/legacy/lobsters/stubs/allCourses.json similarity index 100% rename from server/routers/old/lobsters/stubs/allCourses.json rename to .bzr/legacy/lobsters/stubs/allCourses.json diff --git a/server/routers/old/music-learn/index.js b/.bzr/legacy/music-learn/index.js similarity index 100% rename from server/routers/old/music-learn/index.js rename to .bzr/legacy/music-learn/index.js diff --git a/server/routers/old/music-learn/mocks/courses/1/success.json b/.bzr/legacy/music-learn/mocks/courses/1/success.json similarity index 100% rename from server/routers/old/music-learn/mocks/courses/1/success.json rename to .bzr/legacy/music-learn/mocks/courses/1/success.json diff --git a/server/routers/old/music-learn/mocks/courses/success.json b/.bzr/legacy/music-learn/mocks/courses/success.json similarity index 100% rename from server/routers/old/music-learn/mocks/courses/success.json rename to .bzr/legacy/music-learn/mocks/courses/success.json diff --git a/server/routers/old/music-learn/mocks/notes/success.json b/.bzr/legacy/music-learn/mocks/notes/success.json similarity index 100% rename from server/routers/old/music-learn/mocks/notes/success.json rename to .bzr/legacy/music-learn/mocks/notes/success.json diff --git a/server/routers/old/music-learn/mocks/user/courses/add/success.json b/.bzr/legacy/music-learn/mocks/user/courses/add/success.json similarity index 100% rename from server/routers/old/music-learn/mocks/user/courses/add/success.json rename to .bzr/legacy/music-learn/mocks/user/courses/add/success.json diff --git a/server/routers/old/music-learn/mocks/user/courses/success.json b/.bzr/legacy/music-learn/mocks/user/courses/success.json similarity index 100% rename from server/routers/old/music-learn/mocks/user/courses/success.json rename to .bzr/legacy/music-learn/mocks/user/courses/success.json diff --git a/server/routers/old/music-learn/mocks/user/login/success.json b/.bzr/legacy/music-learn/mocks/user/login/success.json similarity index 100% rename from server/routers/old/music-learn/mocks/user/login/success.json rename to .bzr/legacy/music-learn/mocks/user/login/success.json diff --git a/server/routers/old/music-learn/mocks/user/logout/success.json b/.bzr/legacy/music-learn/mocks/user/logout/success.json similarity index 100% rename from server/routers/old/music-learn/mocks/user/logout/success.json rename to .bzr/legacy/music-learn/mocks/user/logout/success.json diff --git a/server/routers/old/music-learn/mocks/user/notes/success.json b/.bzr/legacy/music-learn/mocks/user/notes/success.json similarity index 100% rename from server/routers/old/music-learn/mocks/user/notes/success.json rename to .bzr/legacy/music-learn/mocks/user/notes/success.json diff --git a/server/routers/old/music-learn/mocks/user/success.json b/.bzr/legacy/music-learn/mocks/user/success.json similarity index 100% rename from server/routers/old/music-learn/mocks/user/success.json rename to .bzr/legacy/music-learn/mocks/user/success.json diff --git a/server/routers/old/my/index.js b/.bzr/legacy/my/index.js similarity index 100% rename from server/routers/old/my/index.js rename to .bzr/legacy/my/index.js diff --git a/server/routers/old/my/json/catalog-data/success.json b/.bzr/legacy/my/json/catalog-data/success.json similarity index 100% rename from server/routers/old/my/json/catalog-data/success.json rename to .bzr/legacy/my/json/catalog-data/success.json diff --git a/server/routers/old/my/json/item-data/newsuccess.json b/.bzr/legacy/my/json/item-data/newsuccess.json similarity index 100% rename from server/routers/old/my/json/item-data/newsuccess.json rename to .bzr/legacy/my/json/item-data/newsuccess.json diff --git a/server/routers/old/neptunium/index.js b/.bzr/legacy/neptunium/index.js similarity index 100% rename from server/routers/old/neptunium/index.js rename to .bzr/legacy/neptunium/index.js diff --git a/server/routers/old/publicium/index.js b/.bzr/legacy/publicium/index.js similarity index 100% rename from server/routers/old/publicium/index.js rename to .bzr/legacy/publicium/index.js diff --git a/server/routers/old/publicium/mocks/games.json b/.bzr/legacy/publicium/mocks/games.json similarity index 100% rename from server/routers/old/publicium/mocks/games.json rename to .bzr/legacy/publicium/mocks/games.json diff --git a/server/routers/old/publicium/mocks/games/trending.json b/.bzr/legacy/publicium/mocks/games/trending.json similarity index 100% rename from server/routers/old/publicium/mocks/games/trending.json rename to .bzr/legacy/publicium/mocks/games/trending.json diff --git a/server/routers/old/publicium/mocks/maps/by/id.json b/.bzr/legacy/publicium/mocks/maps/by/id.json similarity index 100% rename from server/routers/old/publicium/mocks/maps/by/id.json rename to .bzr/legacy/publicium/mocks/maps/by/id.json diff --git a/server/routers/old/publicium/mocks/maps/trending.json b/.bzr/legacy/publicium/mocks/maps/trending.json similarity index 100% rename from server/routers/old/publicium/mocks/maps/trending.json rename to .bzr/legacy/publicium/mocks/maps/trending.json diff --git a/server/routers/old/publicium/mocks/search.json b/.bzr/legacy/publicium/mocks/search.json similarity index 100% rename from server/routers/old/publicium/mocks/search.json rename to .bzr/legacy/publicium/mocks/search.json diff --git a/server/routers/old/publicium/mocks/users/12.json b/.bzr/legacy/publicium/mocks/users/12.json similarity index 100% rename from server/routers/old/publicium/mocks/users/12.json rename to .bzr/legacy/publicium/mocks/users/12.json diff --git a/server/routers/old/publicium/mocks/users/12/collection.json b/.bzr/legacy/publicium/mocks/users/12/collection.json similarity index 100% rename from server/routers/old/publicium/mocks/users/12/collection.json rename to .bzr/legacy/publicium/mocks/users/12/collection.json diff --git a/server/routers/old/publicium/mocks/users/top-load.json b/.bzr/legacy/publicium/mocks/users/top-load.json similarity index 100% rename from server/routers/old/publicium/mocks/users/top-load.json rename to .bzr/legacy/publicium/mocks/users/top-load.json diff --git a/server/routers/old/r-and-m/index.js b/.bzr/legacy/r-and-m/index.js similarity index 100% rename from server/routers/old/r-and-m/index.js rename to .bzr/legacy/r-and-m/index.js diff --git a/server/routers/old/r-and-m/json/landing-data/error.json b/.bzr/legacy/r-and-m/json/landing-data/error.json similarity index 100% rename from server/routers/old/r-and-m/json/landing-data/error.json rename to .bzr/legacy/r-and-m/json/landing-data/error.json diff --git a/server/routers/old/r-and-m/json/landing-data/success.json b/.bzr/legacy/r-and-m/json/landing-data/success.json similarity index 100% rename from server/routers/old/r-and-m/json/landing-data/success.json rename to .bzr/legacy/r-and-m/json/landing-data/success.json diff --git a/server/routers/old/r-and-m/json/seach/alive.success.json b/.bzr/legacy/r-and-m/json/seach/alive.success.json similarity index 100% rename from server/routers/old/r-and-m/json/seach/alive.success.json rename to .bzr/legacy/r-and-m/json/seach/alive.success.json diff --git a/server/routers/old/r-and-m/json/seach/success.json b/.bzr/legacy/r-and-m/json/seach/success.json similarity index 100% rename from server/routers/old/r-and-m/json/seach/success.json rename to .bzr/legacy/r-and-m/json/seach/success.json diff --git a/server/routers/old/school-stage/index.js b/.bzr/legacy/school-stage/index.js similarity index 100% rename from server/routers/old/school-stage/index.js rename to .bzr/legacy/school-stage/index.js diff --git a/server/routers/old/school-stage/json/account/account.json b/.bzr/legacy/school-stage/json/account/account.json similarity index 100% rename from server/routers/old/school-stage/json/account/account.json rename to .bzr/legacy/school-stage/json/account/account.json diff --git a/server/routers/old/school-stage/json/login/success.json b/.bzr/legacy/school-stage/json/login/success.json similarity index 100% rename from server/routers/old/school-stage/json/login/success.json rename to .bzr/legacy/school-stage/json/login/success.json diff --git a/server/routers/old/school-stage/json/teachers/success.json b/.bzr/legacy/school-stage/json/teachers/success.json similarity index 100% rename from server/routers/old/school-stage/json/teachers/success.json rename to .bzr/legacy/school-stage/json/teachers/success.json diff --git a/server/routers/old/stc-21-03/controllers.js b/.bzr/legacy/stc-21-03/controllers.js similarity index 100% rename from server/routers/old/stc-21-03/controllers.js rename to .bzr/legacy/stc-21-03/controllers.js diff --git a/server/routers/old/stc-21-03/index.js b/.bzr/legacy/stc-21-03/index.js similarity index 100% rename from server/routers/old/stc-21-03/index.js rename to .bzr/legacy/stc-21-03/index.js diff --git a/server/routers/old/stc-22-24/controller.js b/.bzr/legacy/stc-22-24/controller.js similarity index 100% rename from server/routers/old/stc-22-24/controller.js rename to .bzr/legacy/stc-22-24/controller.js diff --git a/server/routers/old/stc-22-24/data/dishdata.json b/.bzr/legacy/stc-22-24/data/dishdata.json similarity index 100% rename from server/routers/old/stc-22-24/data/dishdata.json rename to .bzr/legacy/stc-22-24/data/dishdata.json diff --git a/server/routers/old/stc-22-24/data/tabs.json b/.bzr/legacy/stc-22-24/data/tabs.json similarity index 100% rename from server/routers/old/stc-22-24/data/tabs.json rename to .bzr/legacy/stc-22-24/data/tabs.json diff --git a/server/routers/old/stc-22-24/index.js b/.bzr/legacy/stc-22-24/index.js similarity index 100% rename from server/routers/old/stc-22-24/index.js rename to .bzr/legacy/stc-22-24/index.js diff --git a/server/routers/old/stc-22-24/midlewares/checkRequired.midleware.js b/.bzr/legacy/stc-22-24/midlewares/checkRequired.midleware.js similarity index 100% rename from server/routers/old/stc-22-24/midlewares/checkRequired.midleware.js rename to .bzr/legacy/stc-22-24/midlewares/checkRequired.midleware.js diff --git a/server/routers/old/stc-22-24/routes/auth.js b/.bzr/legacy/stc-22-24/routes/auth.js similarity index 100% rename from server/routers/old/stc-22-24/routes/auth.js rename to .bzr/legacy/stc-22-24/routes/auth.js diff --git a/server/routers/old/stc-22-24/routes/dish.js b/.bzr/legacy/stc-22-24/routes/dish.js similarity index 100% rename from server/routers/old/stc-22-24/routes/dish.js rename to .bzr/legacy/stc-22-24/routes/dish.js diff --git a/server/routers/old/stc-22-24/routes/key.js b/.bzr/legacy/stc-22-24/routes/key.js similarity index 100% rename from server/routers/old/stc-22-24/routes/key.js rename to .bzr/legacy/stc-22-24/routes/key.js diff --git a/server/routers/old/stc-22-24/routes/order.js b/.bzr/legacy/stc-22-24/routes/order.js similarity index 100% rename from server/routers/old/stc-22-24/routes/order.js rename to .bzr/legacy/stc-22-24/routes/order.js diff --git a/server/routers/old/stc-22-24/routes/reservation.js b/.bzr/legacy/stc-22-24/routes/reservation.js similarity index 100% rename from server/routers/old/stc-22-24/routes/reservation.js rename to .bzr/legacy/stc-22-24/routes/reservation.js diff --git a/server/routers/old/stc-22-24/utils/common.js b/.bzr/legacy/stc-22-24/utils/common.js similarity index 100% rename from server/routers/old/stc-22-24/utils/common.js rename to .bzr/legacy/stc-22-24/utils/common.js diff --git a/server/routers/old/stc/controllers.js b/.bzr/legacy/stc/controllers.js similarity index 100% rename from server/routers/old/stc/controllers.js rename to .bzr/legacy/stc/controllers.js diff --git a/server/routers/old/stc/index.js b/.bzr/legacy/stc/index.js similarity index 100% rename from server/routers/old/stc/index.js rename to .bzr/legacy/stc/index.js diff --git a/server/routers/old/sugarbun/collections/adminstats.json b/.bzr/legacy/sugarbun/collections/adminstats.json similarity index 100% rename from server/routers/old/sugarbun/collections/adminstats.json rename to .bzr/legacy/sugarbun/collections/adminstats.json diff --git a/server/routers/old/sugarbun/collections/cakeitem.json b/.bzr/legacy/sugarbun/collections/cakeitem.json similarity index 100% rename from server/routers/old/sugarbun/collections/cakeitem.json rename to .bzr/legacy/sugarbun/collections/cakeitem.json diff --git a/server/routers/old/sugarbun/collections/cakeshape.json b/.bzr/legacy/sugarbun/collections/cakeshape.json similarity index 100% rename from server/routers/old/sugarbun/collections/cakeshape.json rename to .bzr/legacy/sugarbun/collections/cakeshape.json diff --git a/server/routers/old/sugarbun/collections/cakesweight.json b/.bzr/legacy/sugarbun/collections/cakesweight.json similarity index 100% rename from server/routers/old/sugarbun/collections/cakesweight.json rename to .bzr/legacy/sugarbun/collections/cakesweight.json diff --git a/server/routers/old/sugarbun/collections/ingredients.json b/.bzr/legacy/sugarbun/collections/ingredients.json similarity index 100% rename from server/routers/old/sugarbun/collections/ingredients.json rename to .bzr/legacy/sugarbun/collections/ingredients.json diff --git a/server/routers/old/sugarbun/controller.js b/.bzr/legacy/sugarbun/controller.js similarity index 100% rename from server/routers/old/sugarbun/controller.js rename to .bzr/legacy/sugarbun/controller.js diff --git a/server/routers/old/sugarbun/index.js b/.bzr/legacy/sugarbun/index.js similarity index 100% rename from server/routers/old/sugarbun/index.js rename to .bzr/legacy/sugarbun/index.js diff --git a/server/routers/old/task-boss/auth.js b/.bzr/legacy/task-boss/auth.js similarity index 100% rename from server/routers/old/task-boss/auth.js rename to .bzr/legacy/task-boss/auth.js diff --git a/server/routers/old/task-boss/constants.js b/.bzr/legacy/task-boss/constants.js similarity index 100% rename from server/routers/old/task-boss/constants.js rename to .bzr/legacy/task-boss/constants.js diff --git a/server/routers/old/task-boss/controllers.js b/.bzr/legacy/task-boss/controllers.js similarity index 100% rename from server/routers/old/task-boss/controllers.js rename to .bzr/legacy/task-boss/controllers.js diff --git a/server/routers/old/task-boss/index.js b/.bzr/legacy/task-boss/index.js similarity index 100% rename from server/routers/old/task-boss/index.js rename to .bzr/legacy/task-boss/index.js diff --git a/server/routers/old/task-boss/stubs/depts.json b/.bzr/legacy/task-boss/stubs/depts.json similarity index 100% rename from server/routers/old/task-boss/stubs/depts.json rename to .bzr/legacy/task-boss/stubs/depts.json diff --git a/server/routers/old/task-boss/stubs/error.json b/.bzr/legacy/task-boss/stubs/error.json similarity index 100% rename from server/routers/old/task-boss/stubs/error.json rename to .bzr/legacy/task-boss/stubs/error.json diff --git a/server/routers/old/task-boss/stubs/peoples/success.json b/.bzr/legacy/task-boss/stubs/peoples/success.json similarity index 100% rename from server/routers/old/task-boss/stubs/peoples/success.json rename to .bzr/legacy/task-boss/stubs/peoples/success.json diff --git a/server/routers/old/task-boss/stubs/tasks/delete.json b/.bzr/legacy/task-boss/stubs/tasks/delete.json similarity index 100% rename from server/routers/old/task-boss/stubs/tasks/delete.json rename to .bzr/legacy/task-boss/stubs/tasks/delete.json diff --git a/server/routers/old/task-boss/stubs/tasks/tasks.json b/.bzr/legacy/task-boss/stubs/tasks/tasks.json similarity index 100% rename from server/routers/old/task-boss/stubs/tasks/tasks.json rename to .bzr/legacy/task-boss/stubs/tasks/tasks.json diff --git a/server/routers/old/uryndyklar/index.js b/.bzr/legacy/uryndyklar/index.js similarity index 100% rename from server/routers/old/uryndyklar/index.js rename to .bzr/legacy/uryndyklar/index.js diff --git a/server/routers/old/uryndyklar/mocks/cart_get/empty.json b/.bzr/legacy/uryndyklar/mocks/cart_get/empty.json similarity index 100% rename from server/routers/old/uryndyklar/mocks/cart_get/empty.json rename to .bzr/legacy/uryndyklar/mocks/cart_get/empty.json diff --git a/server/routers/old/uryndyklar/mocks/cart_get/error.json b/.bzr/legacy/uryndyklar/mocks/cart_get/error.json similarity index 100% rename from server/routers/old/uryndyklar/mocks/cart_get/error.json rename to .bzr/legacy/uryndyklar/mocks/cart_get/error.json diff --git a/server/routers/old/uryndyklar/mocks/cart_get/success.json b/.bzr/legacy/uryndyklar/mocks/cart_get/success.json similarity index 100% rename from server/routers/old/uryndyklar/mocks/cart_get/success.json rename to .bzr/legacy/uryndyklar/mocks/cart_get/success.json diff --git a/server/routers/old/uryndyklar/mocks/cart_post/error.json b/.bzr/legacy/uryndyklar/mocks/cart_post/error.json similarity index 100% rename from server/routers/old/uryndyklar/mocks/cart_post/error.json rename to .bzr/legacy/uryndyklar/mocks/cart_post/error.json diff --git a/server/routers/old/uryndyklar/mocks/cart_post/success.json b/.bzr/legacy/uryndyklar/mocks/cart_post/success.json similarity index 100% rename from server/routers/old/uryndyklar/mocks/cart_post/success.json rename to .bzr/legacy/uryndyklar/mocks/cart_post/success.json diff --git a/server/routers/old/uryndyklar/mocks/search_get/empty.json b/.bzr/legacy/uryndyklar/mocks/search_get/empty.json similarity index 100% rename from server/routers/old/uryndyklar/mocks/search_get/empty.json rename to .bzr/legacy/uryndyklar/mocks/search_get/empty.json diff --git a/server/routers/old/uryndyklar/mocks/search_get/error.json b/.bzr/legacy/uryndyklar/mocks/search_get/error.json similarity index 100% rename from server/routers/old/uryndyklar/mocks/search_get/error.json rename to .bzr/legacy/uryndyklar/mocks/search_get/error.json diff --git a/server/routers/old/uryndyklar/mocks/search_get/ikea.json b/.bzr/legacy/uryndyklar/mocks/search_get/ikea.json similarity index 100% rename from server/routers/old/uryndyklar/mocks/search_get/ikea.json rename to .bzr/legacy/uryndyklar/mocks/search_get/ikea.json diff --git a/server/routers/old/uryndyklar/mocks/search_get/ikea_multicolor.json b/.bzr/legacy/uryndyklar/mocks/search_get/ikea_multicolor.json similarity index 100% rename from server/routers/old/uryndyklar/mocks/search_get/ikea_multicolor.json rename to .bzr/legacy/uryndyklar/mocks/search_get/ikea_multicolor.json diff --git a/server/routers/old/uryndyklar/mocks/search_get/modelH.json b/.bzr/legacy/uryndyklar/mocks/search_get/modelH.json similarity index 100% rename from server/routers/old/uryndyklar/mocks/search_get/modelH.json rename to .bzr/legacy/uryndyklar/mocks/search_get/modelH.json diff --git a/server/routers/old/uryndyklar/mocks/search_get/success.json b/.bzr/legacy/uryndyklar/mocks/search_get/success.json similarity index 100% rename from server/routers/old/uryndyklar/mocks/search_get/success.json rename to .bzr/legacy/uryndyklar/mocks/search_get/success.json diff --git a/server/routers/old/webstar-project/index.js b/.bzr/legacy/webstar-project/index.js similarity index 100% rename from server/routers/old/webstar-project/index.js rename to .bzr/legacy/webstar-project/index.js diff --git a/server/routers/old/webstar-project/json/cards-data/success.json b/.bzr/legacy/webstar-project/json/cards-data/success.json similarity index 100% rename from server/routers/old/webstar-project/json/cards-data/success.json rename to .bzr/legacy/webstar-project/json/cards-data/success.json diff --git a/server/routers/old/webstar-project/json/messages/success.json b/.bzr/legacy/webstar-project/json/messages/success.json similarity index 100% rename from server/routers/old/webstar-project/json/messages/success.json rename to .bzr/legacy/webstar-project/json/messages/success.json diff --git a/server/routers/old/webstar-project/json/users-data/success.json b/.bzr/legacy/webstar-project/json/users-data/success.json similarity index 100% rename from server/routers/old/webstar-project/json/users-data/success.json rename to .bzr/legacy/webstar-project/json/users-data/success.json diff --git a/server/routers/old/webstar-project/middleware/auth-middleware.js b/.bzr/legacy/webstar-project/middleware/auth-middleware.js similarity index 100% rename from server/routers/old/webstar-project/middleware/auth-middleware.js rename to .bzr/legacy/webstar-project/middleware/auth-middleware.js diff --git a/server/routers/old/zoom-bar/index.js b/.bzr/legacy/zoom-bar/index.js similarity index 100% rename from server/routers/old/zoom-bar/index.js rename to .bzr/legacy/zoom-bar/index.js diff --git a/.gitignore b/.gitignore index 9e34c1a..128c9b6 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ node_modules/ .env .idea coverage/ +server/log/ diff --git a/Dockerfile b/Dockerfile index c99c37f..d37b6fc 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,6 @@ FROM node:20 -RUN mkdir -p /usr/src/app/server/ +RUN mkdir -p /usr/src/app/server/log/ WORKDIR /usr/src/app/ COPY ./server /usr/src/app/server diff --git a/docker-compose.yaml b/docker-compose.yaml index 845cf5a..76b4b32 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -2,6 +2,7 @@ version: "3" volumes: ms_volume8: + ms_logs: services: mongoDb: @@ -15,6 +16,8 @@ services: # build: . image: bro.js/ms/bh:$TAG restart: always + volumes: + - ms_logs:/usr/src/app/server/log ports: - 8044:8044 environment: diff --git a/package-lock.json b/package-lock.json index 23c7064..5470ae5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "multi-stub", - "version": "1.0.1", + "version": "1.2.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "multi-stub", - "version": "1.0.1", + "version": "1.2.0", "license": "MIT", "dependencies": { "ai": "^4.1.13", @@ -16,27 +16,29 @@ "cookie-parser": "^1.4.5", "cors": "^2.8.5", "cross-env": "^7.0.3", - "crypto-js": "^4.1.1", - "dotenv": "^16.3.1", - "express": "^4.18.2", - "express-jwt": "^8.4.1", - "express-session": "^1.17.3", - "jsdom": "^22.1.0", - "jsonwebtoken": "^8.5.1", - "mongodb": "^3.6.8", - "mongoose": "^8.7.1", + "crypto-js": "^4.2.0", + "dotenv": "^16.4.7", + "express": "5.0.1", + "express-jwt": "^8.5.1", + "express-session": "^1.18.1", + "jsdom": "^25.0.1", + "jsonwebtoken": "^9.0.2", + "mongodb": "^6.12.0", + "mongoose": "^8.9.2", + "morgan": "^1.10.0", "pbkdf2-password": "^1.2.1", - "socket.io": "^4.7.1", - "uuid": "^9.0.0" + "rotating-file-stream": "^3.2.5", + "socket.io": "^4.8.1", + "uuid": "^11.0.3" }, "devDependencies": { - "@eslint/js": "^9.12.0", - "@types/node": "18.17.1", - "eslint": "^9.12.0", - "globals": "^15.11.0", + "@eslint/js": "^9.17.0", + "@types/node": "22.10.2", + "eslint": "^9.17.0", + "globals": "^15.14.0", "jest": "^29.7.0", "mockingoose": "^2.16.2", - "nodemon": "3.0.1", + "nodemon": "3.1.9", "supertest": "^7.0.0" } }, @@ -138,6 +140,25 @@ "node": ">=6.0.0" } }, + "node_modules/@asamuzakjp/css-color": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/@asamuzakjp/css-color/-/css-color-2.8.3.tgz", + "integrity": "sha512-GIc76d9UI1hCvOATjZPyHFmE5qhRccp3/zGfMPapK3jBi+yocEzp6BBB0UnfRYP9NP4FANqUZYb0hnfs3TM3hw==", + "license": "MIT", + "dependencies": { + "@csstools/css-calc": "^2.1.1", + "@csstools/css-color-parser": "^3.0.7", + "@csstools/css-parser-algorithms": "^3.0.4", + "@csstools/css-tokenizer": "^3.0.3", + "lru-cache": "^10.4.3" + } + }, + "node_modules/@asamuzakjp/css-color/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "license": "ISC" + }, "node_modules/@babel/code-frame": { "version": "7.25.7", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.25.7.tgz", @@ -829,6 +850,116 @@ "dev": true, "license": "MIT" }, + "node_modules/@csstools/color-helpers": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.0.1.tgz", + "integrity": "sha512-MKtmkA0BX87PKaO1NFRTFH+UnkgnmySQOvNxJubsadusqPEC2aJ9MOQiMceZJJ6oitUl/i0L6u0M1IrmAOmgBA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + } + }, + "node_modules/@csstools/css-calc": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.1.1.tgz", + "integrity": "sha512-rL7kaUnTkL9K+Cvo2pnCieqNpTKgQzy5f+N+5Iuko9HAoasP+xgprVh7KN/MaJVvVL1l0EzQq2MoqBHKSrDrag==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.4", + "@csstools/css-tokenizer": "^3.0.3" + } + }, + "node_modules/@csstools/css-color-parser": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.0.7.tgz", + "integrity": "sha512-nkMp2mTICw32uE5NN+EsJ4f5N+IGFeCFu4bGpiKgb2Pq/7J/MpyLBeQ5ry4KKtRFZaYs6sTmcMYrSRIyj5DFKA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "dependencies": { + "@csstools/color-helpers": "^5.0.1", + "@csstools/css-calc": "^2.1.1" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.4", + "@csstools/css-tokenizer": "^3.0.3" + } + }, + "node_modules/@csstools/css-parser-algorithms": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.4.tgz", + "integrity": "sha512-Up7rBoV77rv29d3uKHUIVubz1BTcgyUK72IvCQAbfbMv584xHcGKCKbWh7i8hPrRJ7qU4Y8IO3IY9m+iTB7P3A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-tokenizer": "^3.0.3" + } + }, + "node_modules/@csstools/css-tokenizer": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.3.tgz", + "integrity": "sha512-UJnjoFsmxfKUdNYdWgOB0mWUypuLvAfQPH1+pyvRJs6euowbFkFC6P13w1l8mJyi3vxYMxc9kld5jZEGRQs6bw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + } + }, "node_modules/@eslint-community/eslint-utils": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", @@ -859,9 +990,9 @@ } }, "node_modules/@eslint-community/regexpp": { - "version": "4.11.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.1.tgz", - "integrity": "sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==", + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", "dev": true, "license": "MIT", "engines": { @@ -869,13 +1000,13 @@ } }, "node_modules/@eslint/config-array": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.18.0.tgz", - "integrity": "sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==", + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.1.tgz", + "integrity": "sha512-fo6Mtm5mWyKjA/Chy1BYTdn5mGJoDNjC7C64ug20ADsRDGrA85bN3uK3MaKbeRkRuuIEAR5N33Jr1pbm411/PA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@eslint/object-schema": "^2.1.4", + "@eslint/object-schema": "^2.1.5", "debug": "^4.3.1", "minimatch": "^3.1.2" }, @@ -884,9 +1015,9 @@ } }, "node_modules/@eslint/config-array/node_modules/debug": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", - "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", "dev": true, "license": "MIT", "dependencies": { @@ -909,19 +1040,22 @@ "license": "MIT" }, "node_modules/@eslint/core": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.6.0.tgz", - "integrity": "sha512-8I2Q8ykA4J0x0o7cg67FPVnehcqWTBehu/lmY+bolPFHGjh49YzGBMXTvpqVgEbBdvNCSxj6iFgiIyHzf03lzg==", + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.10.0.tgz", + "integrity": "sha512-gFHJ+xBOo4G3WRlR1e/3G8A6/KZAH6zcE/hkLRCZTi/B9avAG365QhFA8uOGzTMqgTghpn7/fSnscW++dpMSAw==", "dev": true, "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, "node_modules/@eslint/eslintrc": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.1.0.tgz", - "integrity": "sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.2.0.tgz", + "integrity": "sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==", "dev": true, "license": "MIT", "dependencies": { @@ -943,9 +1077,9 @@ } }, "node_modules/@eslint/eslintrc/node_modules/debug": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", - "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", "dev": true, "license": "MIT", "dependencies": { @@ -981,9 +1115,9 @@ "license": "MIT" }, "node_modules/@eslint/js": { - "version": "9.12.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.12.0.tgz", - "integrity": "sha512-eohesHH8WFRUprDNyEREgqP6beG6htMeUYeCpkEgBCieCMme5r9zFWjzAJp//9S+Kub4rqE+jXe9Cp1a7IYIIA==", + "version": "9.19.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.19.0.tgz", + "integrity": "sha512-rbq9/g38qjfqFLOVPvwjIvFFdNziEC5S65jmjPw5r6A//QH+W91akh9irMwjDN8zKUTak6W9EsAv4m/7Wnw0UQ==", "dev": true, "license": "MIT", "engines": { @@ -991,9 +1125,9 @@ } }, "node_modules/@eslint/object-schema": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.4.tgz", - "integrity": "sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==", + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.5.tgz", + "integrity": "sha512-o0bhxnL89h5Bae5T318nFoFzGy+YE5i/gGkoPAgkmTVdRKTiv3p8JHevPiPaMwoloKfEiiaHlawCqaZMqRm+XQ==", "dev": true, "license": "Apache-2.0", "engines": { @@ -1001,12 +1135,13 @@ } }, "node_modules/@eslint/plugin-kit": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.0.tgz", - "integrity": "sha512-vH9PiIMMwvhCx31Af3HiGzsVNULDbyVkHXwlemn/B0TFj/00ho3y55efXrUZTfQipxoHC5u4xq6zblww1zm1Ig==", + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.5.tgz", + "integrity": "sha512-lB05FkqEdUg2AA0xEbUz0SnkXT1LcCTa438W4IWTUh4hdOnVbQyOJ81OrDXsJk/LSiJHubgGEFoR5EHq1NsH1A==", "dev": true, "license": "Apache-2.0", "dependencies": { + "@eslint/core": "^0.10.0", "levn": "^0.4.1" }, "engines": { @@ -1014,9 +1149,9 @@ } }, "node_modules/@humanfs/core": { - "version": "0.19.0", - "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.0.tgz", - "integrity": "sha512-2cbWIHbZVEweE853g8jymffCA+NCMiuqeECeBBLm8dg2oFdjuGJhgN4UAbI+6v0CKbbhvtXA4qV8YR5Ji86nmw==", + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", "dev": true, "license": "Apache-2.0", "engines": { @@ -1024,19 +1159,33 @@ } }, "node_modules/@humanfs/node": { - "version": "0.16.5", - "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.5.tgz", - "integrity": "sha512-KSPA4umqSG4LHYRodq31VDwKAvaTF4xmVlzM8Aeh4PlU1JQ3IG0wiA8C25d3RQ9nJyM3mBHyI53K06VVL/oFFg==", + "version": "0.16.6", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", + "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@humanfs/core": "^0.19.0", + "@humanfs/core": "^0.19.1", "@humanwhocodes/retry": "^0.3.0" }, "engines": { "node": ">=18.18.0" } }, + "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", + "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, "node_modules/@humanwhocodes/module-importer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", @@ -1052,9 +1201,9 @@ } }, "node_modules/@humanwhocodes/retry": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", - "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.1.tgz", + "integrity": "sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==", "dev": true, "license": "Apache-2.0", "engines": { @@ -1596,14 +1745,6 @@ "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==" }, - "node_modules/@tootallnate/once": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", - "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", - "engines": { - "node": ">= 10" - } - }, "node_modules/@types/babel__core": { "version": "7.20.5", "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", @@ -1649,15 +1790,11 @@ "@babel/types": "^7.20.7" } }, - "node_modules/@types/cookie": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", - "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==" - }, "node_modules/@types/cors": { - "version": "2.8.13", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.13.tgz", - "integrity": "sha512-RG8AStHlUiV5ysZQKq97copd2UmVYw3/pRMLefISZ3S1hK104Cwm7iLQ3fTKx+lsUH2CE8FlLaYeEA2LSeqYUA==", + "version": "2.8.17", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.17.tgz", + "integrity": "sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==", + "license": "MIT", "dependencies": { "@types/node": "*" } @@ -1728,9 +1865,13 @@ } }, "node_modules/@types/node": { - "version": "18.17.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.17.1.tgz", - "integrity": "sha512-xlR1jahfizdplZYRU59JlUx9uzF1ARa8jbhM11ccpCJya8kvos5jwdm2ZAgxSCwOl0fq21svP18EVwPBXMQudw==" + "version": "22.10.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.2.tgz", + "integrity": "sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==", + "license": "MIT", + "dependencies": { + "undici-types": "~6.20.0" + } }, "node_modules/@types/stack-utils": { "version": "2.0.3", @@ -1771,11 +1912,6 @@ "dev": true, "license": "MIT" }, - "node_modules/abab": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", - "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==" - }, "node_modules/abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", @@ -1794,9 +1930,9 @@ } }, "node_modules/acorn": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.13.0.tgz", - "integrity": "sha512-8zSiw54Oxrdym50NlZ9sUusyO1Z1ZchgRLWRaK6c86XJFClyCgFKetdowBg5bKxyp/u+CDBJG4Mpp0m3HLZl9w==", + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", + "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", "dev": true, "license": "MIT", "bin": { @@ -1985,9 +2121,10 @@ "license": "Python-2.0" }, "node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-3.0.0.tgz", + "integrity": "sha512-zPMVc3ZYlGLNk4mpK1NzP2wg0ml9t7fUgDsayR5Y5rSzxQilzR9FGu/EH2jQOcKSAeAfWeylyW8juy3OkWRvNA==", + "license": "MIT" }, "node_modules/asap": { "version": "2.0.6", @@ -2147,10 +2284,29 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", + "license": "MIT", "engines": { "node": "^4.5.0 || >= 5.9" } }, + "node_modules/basic-auth": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", + "license": "MIT", + "dependencies": { + "safe-buffer": "5.1.2" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/basic-auth/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, "node_modules/bcrypt": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-5.1.0.tgz", @@ -2173,19 +2329,11 @@ "node": ">=8" } }, - "node_modules/bl": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/bl/-/bl-2.2.1.tgz", - "integrity": "sha512-6Pesp1w0DEX1N550i/uGV/TqucVL4AM/pgThFSN/Qq9si1/DF9aIHs1BxD8V/QU0HoeHO6cQRTAuYnLPKq1e4g==", - "dependencies": { - "readable-stream": "^2.3.5", - "safe-buffer": "^5.1.1" - } - }, "node_modules/body-parser": { - "version": "1.20.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", - "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", + "version": "1.20.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", + "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", + "license": "MIT", "dependencies": { "bytes": "3.1.2", "content-type": "~1.0.5", @@ -2195,7 +2343,7 @@ "http-errors": "2.0.0", "iconv-lite": "0.4.24", "on-finished": "2.4.1", - "qs": "6.11.0", + "qs": "6.13.0", "raw-body": "2.5.2", "type-is": "~1.6.18", "unpipe": "1.0.0" @@ -2271,11 +2419,12 @@ } }, "node_modules/bson": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/bson/-/bson-1.1.6.tgz", - "integrity": "sha512-EvVNVeGo4tHxwi8L6bPj3y3itEvStdwvvlojVxxbyYfoaxJ6keLgrTuKdyfEAszFK+H3olzBuafE0yoh0D1gdg==", + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/bson/-/bson-6.10.2.tgz", + "integrity": "sha512-5afhLTjqDSA3akH56E+/2J6kTDuSIlBxyXPdQslj9hcIgOUE378xdOfZvC/9q3LifJNI6KR/juZ+d0NRNYBwXg==", + "license": "Apache-2.0", "engines": { - "node": ">=0.6.19" + "node": ">=16.20.1" } }, "node_modules/buffer-equal-constant-time": { @@ -2298,13 +2447,30 @@ "node": ">= 0.8" } }, - "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "node_modules/call-bind-apply-helpers": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz", + "integrity": "sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==", + "license": "MIT", "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.3.tgz", + "integrity": "sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -2541,9 +2707,10 @@ "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==" }, "node_modules/content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.0.tgz", + "integrity": "sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==", + "license": "MIT", "dependencies": { "safe-buffer": "5.2.1" }, @@ -2567,19 +2734,21 @@ "license": "MIT" }, "node_modules/cookie": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", - "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==", + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/cookie-parser": { - "version": "1.4.6", - "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.6.tgz", - "integrity": "sha512-z3IzaNjdwUC2olLIB5/ITd0/setiaFMLYiZJle7xg5Fe9KWAceil7xszYfHHBtDFYLSgJduS2Ty0P1uJdPDJeA==", + "version": "1.4.7", + "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.7.tgz", + "integrity": "sha512-nGUvgXnotP3BsjiLX2ypbQnWoGUPIIfHQNZkkC668ntrzGWEZVW70HDEB1qnNGMicPje6EttlIgzo51YSwNQGw==", + "license": "MIT", "dependencies": { - "cookie": "0.4.1", + "cookie": "0.7.2", "cookie-signature": "1.0.6" }, "engines": { @@ -2598,11 +2767,6 @@ "dev": true, "license": "MIT" }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" - }, "node_modules/cors": { "version": "2.8.5", "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", @@ -2655,9 +2819,10 @@ } }, "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "license": "MIT", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -2668,63 +2833,75 @@ } }, "node_modules/crypto-js": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz", - "integrity": "sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==" + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.2.0.tgz", + "integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==", + "license": "MIT" }, "node_modules/cssstyle": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-3.0.0.tgz", - "integrity": "sha512-N4u2ABATi3Qplzf0hWbVCdjenim8F3ojEXpBDF5hBpjzW182MjNGLqfmQ0SkSPeQ+V86ZXgeH8aXj6kayd4jgg==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.2.1.tgz", + "integrity": "sha512-9+vem03dMXG7gDmZ62uqmRiMRNtinIZ9ZyuF6BdxzfOD+FdN5hretzynkn0ReS2DO2GSw76RWHs0UmJPI2zUjw==", + "license": "MIT", "dependencies": { - "rrweb-cssom": "^0.6.0" + "@asamuzakjp/css-color": "^2.8.2", + "rrweb-cssom": "^0.8.0" }, "engines": { - "node": ">=14" + "node": ">=18" } }, + "node_modules/cssstyle/node_modules/rrweb-cssom": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.8.0.tgz", + "integrity": "sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==", + "license": "MIT" + }, "node_modules/data-urls": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-4.0.0.tgz", - "integrity": "sha512-/mMTei/JXPqvFqQtfyTowxmJVwr2PVAeCcDxyFf6LhoOu/09TX2OX3kb2wzi4DMXcfj4OItwDOnhl5oziPnT6g==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-5.0.0.tgz", + "integrity": "sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==", + "license": "MIT", "dependencies": { - "abab": "^2.0.6", - "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^12.0.0" + "whatwg-mimetype": "^4.0.0", + "whatwg-url": "^14.0.0" }, "engines": { - "node": ">=14" + "node": ">=18" } }, "node_modules/data-urls/node_modules/tr46": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-4.1.1.tgz", - "integrity": "sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.0.0.tgz", + "integrity": "sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==", + "license": "MIT", "dependencies": { - "punycode": "^2.3.0" + "punycode": "^2.3.1" }, "engines": { - "node": ">=14" + "node": ">=18" } }, "node_modules/data-urls/node_modules/webidl-conversions": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "license": "BSD-2-Clause", "engines": { "node": ">=12" } }, "node_modules/data-urls/node_modules/whatwg-url": { - "version": "12.0.1", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-12.0.1.tgz", - "integrity": "sha512-Ed/LrqB8EPlGxjS+TrsXcpUond1mhccS3pchLhzSgPCnTimUCKj3IZE75pAs5m6heB2U2TMerKFUXheyHY+VDQ==", + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.1.0.tgz", + "integrity": "sha512-jlf/foYIKywAt3x/XWKZ/3rz8OSJPiWktjmk891alJUEjiVxKX9LEO92qH3hv4aJ0mN3MWPvGMCy8jQi95xK4w==", + "license": "MIT", "dependencies": { - "tr46": "^4.1.1", + "tr46": "^5.0.0", "webidl-conversions": "^7.0.0" }, "engines": { - "node": ">=14" + "node": ">=18" } }, "node_modules/debug": { @@ -2785,14 +2962,6 @@ "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==" }, - "node_modules/denque": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/denque/-/denque-1.5.1.tgz", - "integrity": "sha512-XwE+iZ4D6ZUB7mfYRMb5wByE8L74HCn30FBN7sWnXksWc1LO1bPDl67pBR9o/kC4z/xSNAwkMYcGgqDV3BE3Hw==", - "engines": { - "node": ">=0.10" - } - }, "node_modules/depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", @@ -2864,34 +3033,30 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/domexception": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz", - "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==", - "dependencies": { - "webidl-conversions": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/domexception/node_modules/webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", - "engines": { - "node": ">=12" - } - }, "node_modules/dotenv": { - "version": "16.3.1", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz", - "integrity": "sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==", + "version": "16.4.7", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz", + "integrity": "sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==", + "license": "BSD-2-Clause", "engines": { "node": ">=12" }, "funding": { - "url": "https://github.com/motdotla/dotenv?sponsor=1" + "url": "https://dotenvx.com" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" } }, "node_modules/ecdsa-sig-formatter": { @@ -2933,47 +3098,50 @@ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, "node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "license": "MIT", "engines": { "node": ">= 0.8" } }, "node_modules/engine.io": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.5.1.tgz", - "integrity": "sha512-mGqhI+D7YxS9KJMppR6Iuo37Ed3abhU8NdfgSvJSDUafQutrN+sPTncJYTyM9+tkhSmWodKtVYGPPHyXJEwEQA==", + "version": "6.6.4", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.6.4.tgz", + "integrity": "sha512-ZCkIjSYNDyGn0R6ewHDtXgns/Zre/NT6Agvq1/WobF7JXgFff4SeDroKiCO3fNJreU9YG429Sc81o4w5ok/W5g==", + "license": "MIT", "dependencies": { - "@types/cookie": "^0.4.1", "@types/cors": "^2.8.12", "@types/node": ">=10.0.0", "accepts": "~1.3.4", "base64id": "2.0.0", - "cookie": "~0.4.1", + "cookie": "~0.7.2", "cors": "~2.8.5", "debug": "~4.3.1", - "engine.io-parser": "~5.1.0", - "ws": "~8.11.0" + "engine.io-parser": "~5.2.1", + "ws": "~8.17.1" }, "engines": { - "node": ">=10.0.0" + "node": ">=10.2.0" } }, "node_modules/engine.io-parser": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.1.0.tgz", - "integrity": "sha512-enySgNiK5tyZFynt3z7iqBR+Bto9EVVVvDFuTT0ioHCGbzirZVGDGiQjZzEp8hWl6hd5FSVytJGuScX1C1C35w==", + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.3.tgz", + "integrity": "sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==", + "license": "MIT", "engines": { "node": ">=10.0.0" } }, "node_modules/engine.io/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "license": "MIT", "dependencies": { - "ms": "2.1.2" + "ms": "^2.1.3" }, "engines": { "node": ">=6.0" @@ -2985,9 +3153,10 @@ } }, "node_modules/engine.io/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" }, "node_modules/entities": { "version": "4.5.0", @@ -3010,6 +3179,36 @@ "is-arrayish": "^0.2.1" } }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/escalade": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", @@ -3023,7 +3222,8 @@ "node_modules/escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "license": "MIT" }, "node_modules/escape-string-regexp": { "version": "4.0.0", @@ -3039,32 +3239,32 @@ } }, "node_modules/eslint": { - "version": "9.12.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.12.0.tgz", - "integrity": "sha512-UVIOlTEWxwIopRL1wgSQYdnVDcEvs2wyaO6DGo5mXqe3r16IoCNWkR29iHhyaP4cICWjbgbmFUGAhh0GJRuGZw==", + "version": "9.19.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.19.0.tgz", + "integrity": "sha512-ug92j0LepKlbbEv6hD911THhoRHmbdXt2gX+VDABAW/Ir7D3nqKdv5Pf5vtlyY6HQMTEP2skXY43ueqTCWssEA==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.11.0", - "@eslint/config-array": "^0.18.0", - "@eslint/core": "^0.6.0", - "@eslint/eslintrc": "^3.1.0", - "@eslint/js": "9.12.0", - "@eslint/plugin-kit": "^0.2.0", - "@humanfs/node": "^0.16.5", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.19.0", + "@eslint/core": "^0.10.0", + "@eslint/eslintrc": "^3.2.0", + "@eslint/js": "9.19.0", + "@eslint/plugin-kit": "^0.2.5", + "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", - "@humanwhocodes/retry": "^0.3.1", + "@humanwhocodes/retry": "^0.4.1", "@types/estree": "^1.0.6", "@types/json-schema": "^7.0.15", "ajv": "^6.12.4", "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", + "cross-spawn": "^7.0.6", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^8.1.0", - "eslint-visitor-keys": "^4.1.0", - "espree": "^10.2.0", + "eslint-scope": "^8.2.0", + "eslint-visitor-keys": "^4.2.0", + "espree": "^10.3.0", "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", @@ -3078,8 +3278,7 @@ "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "text-table": "^0.2.0" + "optionator": "^0.9.3" }, "bin": { "eslint": "bin/eslint.js" @@ -3100,9 +3299,9 @@ } }, "node_modules/eslint-scope": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.1.0.tgz", - "integrity": "sha512-14dSvlhaVhKKsa9Fx1l8A17s7ah7Ef7wCakJ10LYk6+GYmP9yDti2oq2SEwcyndt6knfcZyhyxwY3i9yL78EQw==", + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.2.0.tgz", + "integrity": "sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -3117,9 +3316,9 @@ } }, "node_modules/eslint-visitor-keys": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.1.0.tgz", - "integrity": "sha512-Q7lok0mqMUSf5a/AdAZkA5a/gHcO6snwQClVNNvFKCAVlxXucdU8pKydU5ZVZjBx5xr37vGbFFWtLQYreLzrZg==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", "dev": true, "license": "Apache-2.0", "engines": { @@ -3155,15 +3354,15 @@ "license": "MIT" }, "node_modules/espree": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-10.2.0.tgz", - "integrity": "sha512-upbkBJbckcCNBDBDXEbuhjbP68n+scUd3k/U2EkyM9nw+I/jPiL4cLF/Al06CF96wRltFda16sxDFrxsI1v0/g==", + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz", + "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==", "dev": true, "license": "BSD-2-Clause", "dependencies": { - "acorn": "^8.12.0", + "acorn": "^8.14.0", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^4.1.0" + "eslint-visitor-keys": "^4.2.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -3236,6 +3435,7 @@ "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -3299,50 +3499,53 @@ } }, "node_modules/express": { - "version": "4.18.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", - "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/express/-/express-5.0.1.tgz", + "integrity": "sha512-ORF7g6qGnD+YtUG9yx4DFoqCShNMmUKiXuT5oWMHiOvt/4WFbHC6yCwQMTSBMno7AqntNCAzzcnnjowRkTL9eQ==", + "license": "MIT", "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.1", - "content-disposition": "0.5.4", + "accepts": "^2.0.0", + "body-parser": "^2.0.1", + "content-disposition": "^1.0.0", "content-type": "~1.0.4", - "cookie": "0.5.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", + "cookie": "0.7.1", + "cookie-signature": "^1.2.1", + "debug": "4.3.6", "depd": "2.0.0", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", - "finalhandler": "1.2.0", - "fresh": "0.5.2", + "finalhandler": "^2.0.0", + "fresh": "2.0.0", "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", + "merge-descriptors": "^2.0.0", "methods": "~1.1.2", + "mime-types": "^3.0.0", "on-finished": "2.4.1", + "once": "1.4.0", "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", "proxy-addr": "~2.0.7", - "qs": "6.11.0", + "qs": "6.13.0", "range-parser": "~1.2.1", + "router": "^2.0.0", "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", + "send": "^1.1.0", + "serve-static": "^2.1.0", "setprototypeof": "1.2.0", "statuses": "2.0.1", - "type-is": "~1.6.18", + "type-is": "^2.0.0", "utils-merge": "1.0.1", "vary": "~1.1.2" }, "engines": { - "node": ">= 0.10.0" + "node": ">= 18" } }, "node_modules/express-jwt": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/express-jwt/-/express-jwt-8.4.1.tgz", - "integrity": "sha512-IZoZiDv2yZJAb3QrbaSATVtTCYT11OcqgFGoTN4iKVyN6NBkBkhtVIixww5fmakF0Upt5HfOxJuS6ZmJVeOtTQ==", + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/express-jwt/-/express-jwt-8.5.1.tgz", + "integrity": "sha512-Dv6QjDLpR2jmdb8M6XQXiCcpEom7mK8TOqnr0/TngDKsG2DHVkO8+XnVxkJVN7BuS1I3OrGw6N8j5DaaGgkDRQ==", + "license": "MIT", "dependencies": { "@types/jsonwebtoken": "^9", "express-unless": "^2.1.3", @@ -3352,33 +3555,14 @@ "node": ">= 8.0.0" } }, - "node_modules/express-jwt/node_modules/jsonwebtoken": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.1.tgz", - "integrity": "sha512-K8wx7eJ5TPvEjuiVSkv167EVboBDv9PZdDoF7BgeQnBLVvZWW9clr2PsQHVJDTKaEIH5JBIwHujGcHp7GgI2eg==", - "dependencies": { - "jws": "^3.2.2", - "lodash": "^4.17.21", - "ms": "^2.1.1", - "semver": "^7.3.8" - }, - "engines": { - "node": ">=12", - "npm": ">=6" - } - }, - "node_modules/express-jwt/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - }, "node_modules/express-session": { - "version": "1.17.3", - "resolved": "https://registry.npmjs.org/express-session/-/express-session-1.17.3.tgz", - "integrity": "sha512-4+otWXlShYlG1Ma+2Jnn+xgKUZTMJ5QD3YvfilX3AcocOAbIkVylSWEklzALe/+Pu4qV6TYBj5GwOBFfdKqLBw==", + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/express-session/-/express-session-1.18.1.tgz", + "integrity": "sha512-a5mtTqEaZvBCL9A9aqkrtfz+3SMDhOVUnjafjo+s7A9Txkq+SVX2DLvSp1Zrv4uCXa3lMSK3viWnh9Gg07PBUA==", + "license": "MIT", "dependencies": { - "cookie": "0.4.2", - "cookie-signature": "1.0.6", + "cookie": "0.7.2", + "cookie-signature": "1.0.7", "debug": "2.6.9", "depd": "~2.0.0", "on-headers": "~1.0.2", @@ -3390,64 +3574,227 @@ "node": ">= 0.8.0" } }, - "node_modules/express-session/node_modules/cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", - "engines": { - "node": ">= 0.6" - } + "node_modules/express-session/node_modules/cookie-signature": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.7.tgz", + "integrity": "sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==", + "license": "MIT" }, "node_modules/express-unless": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/express-unless/-/express-unless-2.1.3.tgz", "integrity": "sha512-wj4tLMyCVYuIIKHGt0FhCtIViBcwzWejX0EjNxveAa6dG+0XBCQhMbx+PnkLkFCxLC69qoFrxds4pIyL88inaQ==" }, - "node_modules/express/node_modules/body-parser": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", - "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "node_modules/express/node_modules/accepts": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", + "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", + "license": "MIT", "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" + "mime-types": "^3.0.0", + "negotiator": "^1.0.0" }, "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" + "node": ">= 0.6" + } + }, + "node_modules/express/node_modules/body-parser": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.0.2.tgz", + "integrity": "sha512-SNMk0OONlQ01uk8EPeiBvTW7W4ovpL5b1O3t1sjpPgfxOQ6BqQJ6XjxinDPR79Z6HdcD5zBBwr5ssiTlgdNztQ==", + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.5", + "debug": "3.1.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.5.2", + "on-finished": "2.4.1", + "qs": "6.13.0", + "raw-body": "^3.0.0", + "type-is": "~1.6.18" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/express/node_modules/body-parser/node_modules/debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/body-parser/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express/node_modules/body-parser/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express/node_modules/body-parser/node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "license": "MIT", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" } }, "node_modules/express/node_modules/cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", + "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express/node_modules/cookie-signature": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", + "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", + "license": "MIT", + "engines": { + "node": ">=6.6.0" + } + }, + "node_modules/express/node_modules/debug": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/express/node_modules/debug/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "license": "MIT" + }, + "node_modules/express/node_modules/iconv-lite": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.5.2.tgz", + "integrity": "sha512-kERHXvpSaB4aU3eANwidg79K8FlrN77m8G9V+0vOR3HYaRifrlwMEpT7ZBJqLSEIHnEgJTHcWK82wwLwwKwtag==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/express/node_modules/mime-db": { + "version": "1.53.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.53.0.tgz", + "integrity": "sha512-oHlN/w+3MQ3rba9rqFr6V/ypF10LSkdwUysQL7GkXoTgIWeV+tcXGA852TBxH+gsh8UWoyhR1hKcoMJTuWflpg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express/node_modules/mime-types": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.0.tgz", + "integrity": "sha512-XqoSHeCGjVClAmoGFG3lVFqQFRIrTVw2OH3axRqAcfaw+gHWIfnASS92AV+Rl/mk0MupgZTRHQOjxY6YVnzK5w==", + "license": "MIT", + "dependencies": { + "mime-db": "^1.53.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express/node_modules/negotiator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", + "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", + "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/express/node_modules/raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.0.tgz", + "integrity": "sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==", + "license": "MIT", "dependencies": { "bytes": "3.1.2", "http-errors": "2.0.0", - "iconv-lite": "0.4.24", + "iconv-lite": "0.6.3", "unpipe": "1.0.0" }, "engines": { "node": ">= 0.8" } }, + "node_modules/express/node_modules/raw-body/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/express/node_modules/type-is": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.0.tgz", + "integrity": "sha512-gd0sGezQYCbWSbkZr75mln4YBidWUN60+devscpLF5mtRDUpiaTvKpBNrdaCvel1NdR2k6vclXybU5fBd2i+nw==", + "license": "MIT", + "dependencies": { + "content-type": "^1.0.5", + "media-typer": "^1.1.0", + "mime-types": "^3.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express/node_modules/type-is/node_modules/media-typer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", + "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -3524,9 +3871,10 @@ } }, "node_modules/finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.0.0.tgz", + "integrity": "sha512-MX6Zo2adDViYh+GcxxB1dpO43eypOGUOL12rLCOTMQv/DfIbpSJUy4oQIIZhVZkH9e+bZWKMon0XHFEju16tkQ==", + "license": "MIT", "dependencies": { "debug": "2.6.9", "encodeurl": "~1.0.2", @@ -3540,6 +3888,15 @@ "node": ">= 0.8" } }, + "node_modules/finalhandler/node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", @@ -3635,11 +3992,12 @@ } }, "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", + "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", + "license": "MIT", "engines": { - "node": ">= 0.6" + "node": ">= 0.8" } }, "node_modules/fs-minipass": { @@ -3669,21 +4027,6 @@ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, "node_modules/function-bind": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", @@ -3733,14 +4076,24 @@ } }, "node_modules/get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.7.tgz", + "integrity": "sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==", + "license": "MIT", "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" + "call-bind-apply-helpers": "^1.0.1", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "function-bind": "^1.1.2", + "get-proto": "^1.0.0", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -3756,6 +4109,19 @@ "node": ">=8.0.0" } }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/get-stream": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", @@ -3801,9 +4167,9 @@ } }, "node_modules/globals": { - "version": "15.11.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-15.11.0.tgz", - "integrity": "sha512-yeyNSjdbyVaWurlwCpcA6XNBrHTMIeDdj0/hnvX/OLJ9ekOXYbLsLinH/MucQyGvNnXhidTdNhTtJaffL2sMfw==", + "version": "15.14.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.14.0.tgz", + "integrity": "sha512-OkToC372DtlQeje9/zHIo5CT8lRP/FUgEOKBEhU4e0abL7J7CD24fD9ohiLN5hagG/kWCYj4K5oaxxtj2Z0Dig==", "dev": true, "license": "MIT", "engines": { @@ -3813,6 +4179,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", @@ -3820,17 +4198,6 @@ "dev": true, "license": "ISC" }, - "node_modules/has": { - "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" - }, - "engines": { - "node": ">= 0.4.0" - } - }, "node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -3841,21 +4208,11 @@ "node": ">=8" } }, - "node_modules/has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -3872,7 +4229,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dev": true, "license": "MIT", "dependencies": { "function-bind": "^1.1.2" @@ -3892,14 +4248,15 @@ } }, "node_modules/html-encoding-sniffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", - "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz", + "integrity": "sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==", + "license": "MIT", "dependencies": { - "whatwg-encoding": "^2.0.0" + "whatwg-encoding": "^3.1.1" }, "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/html-escaper": { @@ -3925,24 +4282,34 @@ } }, "node_modules/http-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "license": "MIT", "dependencies": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" + "agent-base": "^7.1.0", + "debug": "^4.3.4" }, "engines": { - "node": ">= 6" + "node": ">= 14" + } + }, + "node_modules/http-proxy-agent/node_modules/agent-base": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz", + "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==", + "license": "MIT", + "engines": { + "node": ">= 14" } }, "node_modules/http-proxy-agent/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "license": "MIT", "dependencies": { - "ms": "2.1.2" + "ms": "^2.1.3" }, "engines": { "node": ">=6.0" @@ -3954,9 +4321,10 @@ } }, "node_modules/http-proxy-agent/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" }, "node_modules/https-proxy-agent": { "version": "5.0.1", @@ -4185,6 +4553,12 @@ "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==" }, + "node_modules/is-promise": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", + "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", + "license": "MIT" + }, "node_modules/is-stream": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", @@ -4197,11 +4571,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" - }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -4923,39 +5292,38 @@ } }, "node_modules/jsdom": { - "version": "22.1.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-22.1.0.tgz", - "integrity": "sha512-/9AVW7xNbsBv6GfWho4TTNjEo9fe6Zhf9O7s0Fhhr3u+awPwAJMKwAMXnkk5vBxflqLW9hTHX/0cs+P3gW+cQw==", + "version": "25.0.1", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-25.0.1.tgz", + "integrity": "sha512-8i7LzZj7BF8uplX+ZyOlIz86V6TAsSs+np6m1kpW9u0JWi4z/1t+FzcK1aek+ybTnAC4KhBL4uXCNT0wcUIeCw==", + "license": "MIT", "dependencies": { - "abab": "^2.0.6", - "cssstyle": "^3.0.0", - "data-urls": "^4.0.0", + "cssstyle": "^4.1.0", + "data-urls": "^5.0.0", "decimal.js": "^10.4.3", - "domexception": "^4.0.0", "form-data": "^4.0.0", - "html-encoding-sniffer": "^3.0.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.1", + "html-encoding-sniffer": "^4.0.0", + "http-proxy-agent": "^7.0.2", + "https-proxy-agent": "^7.0.5", "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.4", + "nwsapi": "^2.2.12", "parse5": "^7.1.2", - "rrweb-cssom": "^0.6.0", + "rrweb-cssom": "^0.7.1", "saxes": "^6.0.0", "symbol-tree": "^3.2.4", - "tough-cookie": "^4.1.2", - "w3c-xmlserializer": "^4.0.0", + "tough-cookie": "^5.0.0", + "w3c-xmlserializer": "^5.0.0", "webidl-conversions": "^7.0.0", - "whatwg-encoding": "^2.0.0", - "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^12.0.1", - "ws": "^8.13.0", - "xml-name-validator": "^4.0.0" + "whatwg-encoding": "^3.1.1", + "whatwg-mimetype": "^4.0.0", + "whatwg-url": "^14.0.0", + "ws": "^8.18.0", + "xml-name-validator": "^5.0.0" }, "engines": { - "node": ">=16" + "node": ">=18" }, "peerDependencies": { - "canvas": "^2.5.0" + "canvas": "^2.11.2" }, "peerDependenciesMeta": { "canvas": { @@ -4963,41 +5331,90 @@ } } }, - "node_modules/jsdom/node_modules/tr46": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-4.1.1.tgz", - "integrity": "sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==", + "node_modules/jsdom/node_modules/agent-base": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz", + "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==", + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "node_modules/jsdom/node_modules/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "license": "MIT", "dependencies": { - "punycode": "^2.3.0" + "ms": "^2.1.3" }, "engines": { - "node": ">=14" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/jsdom/node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/jsdom/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/jsdom/node_modules/tr46": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.0.0.tgz", + "integrity": "sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==", + "license": "MIT", + "dependencies": { + "punycode": "^2.3.1" + }, + "engines": { + "node": ">=18" } }, "node_modules/jsdom/node_modules/webidl-conversions": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "license": "BSD-2-Clause", "engines": { "node": ">=12" } }, "node_modules/jsdom/node_modules/whatwg-url": { - "version": "12.0.1", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-12.0.1.tgz", - "integrity": "sha512-Ed/LrqB8EPlGxjS+TrsXcpUond1mhccS3pchLhzSgPCnTimUCKj3IZE75pAs5m6heB2U2TMerKFUXheyHY+VDQ==", + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.1.0.tgz", + "integrity": "sha512-jlf/foYIKywAt3x/XWKZ/3rz8OSJPiWktjmk891alJUEjiVxKX9LEO92qH3hv4aJ0mN3MWPvGMCy8jQi95xK4w==", + "license": "MIT", "dependencies": { - "tr46": "^4.1.1", + "tr46": "^5.0.0", "webidl-conversions": "^7.0.0" }, "engines": { - "node": ">=14" + "node": ">=18" } }, "node_modules/jsdom/node_modules/ws": { - "version": "8.14.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.14.2.tgz", - "integrity": "sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==", + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", + "license": "MIT", "engines": { "node": ">=10.0.0" }, @@ -5104,9 +5521,10 @@ } }, "node_modules/jsonwebtoken": { - "version": "8.5.1", - "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", - "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==", + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", + "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==", + "license": "MIT", "dependencies": { "jws": "^3.2.2", "lodash.includes": "^4.3.0", @@ -5117,11 +5535,11 @@ "lodash.isstring": "^4.0.1", "lodash.once": "^4.0.0", "ms": "^2.1.1", - "semver": "^5.6.0" + "semver": "^7.5.4" }, "engines": { - "node": ">=4", - "npm": ">=1.4.28" + "node": ">=12", + "npm": ">=6" } }, "node_modules/jsonwebtoken/node_modules/ms": { @@ -5129,14 +5547,6 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, - "node_modules/jsonwebtoken/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "bin": { - "semver": "bin/semver" - } - }, "node_modules/jwa": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", @@ -5232,11 +5642,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, "node_modules/lodash.includes": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", @@ -5322,6 +5727,15 @@ "tmpl": "1.0.5" } }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", @@ -5336,9 +5750,16 @@ "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==" }, "node_modules/merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz", + "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, "node_modules/merge-stream": { "version": "2.0.0", @@ -5368,17 +5789,6 @@ "node": ">=8.6" } }, - "node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", @@ -5474,27 +5884,35 @@ } }, "node_modules/mongodb": { - "version": "3.7.4", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.7.4.tgz", - "integrity": "sha512-K5q8aBqEXMwWdVNh94UQTwZ6BejVbFhh1uB6c5FKtPE9eUMZPUO3sRZdgIEcHSrAWmxzpG/FeODDKL388sqRmw==", + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.13.0.tgz", + "integrity": "sha512-KeESYR5TEaFxOuwRqkOm3XOsMqCSkdeDMjaW5u2nuKfX7rqaofp7JQGoi7sVqQcNJTKuveNbzZtWMstb8ABP6Q==", + "license": "Apache-2.0", "dependencies": { - "bl": "^2.2.1", - "bson": "^1.1.4", - "denque": "^1.4.1", - "optional-require": "^1.1.8", - "safe-buffer": "^5.1.2" + "@mongodb-js/saslprep": "^1.1.9", + "bson": "^6.10.1", + "mongodb-connection-string-url": "^3.0.0" }, "engines": { - "node": ">=4" + "node": ">=16.20.1" }, - "optionalDependencies": { - "saslprep": "^1.0.0" + "peerDependencies": { + "@aws-sdk/credential-providers": "^3.188.0", + "@mongodb-js/zstd": "^1.1.0 || ^2.0.0", + "gcp-metadata": "^5.2.0", + "kerberos": "^2.0.1", + "mongodb-client-encryption": ">=6.0.0 <7", + "snappy": "^7.2.2", + "socks": "^2.7.1" }, "peerDependenciesMeta": { - "aws4": { + "@aws-sdk/credential-providers": { "optional": true }, - "bson-ext": { + "@mongodb-js/zstd": { + "optional": true + }, + "gcp-metadata": { "optional": true }, "kerberos": { @@ -5503,34 +5921,34 @@ "mongodb-client-encryption": { "optional": true }, - "mongodb-extjson": { + "snappy": { "optional": true }, - "snappy": { + "socks": { "optional": true } } }, "node_modules/mongodb-connection-string-url": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-3.0.1.tgz", - "integrity": "sha512-XqMGwRX0Lgn05TDB4PyG2h2kKO/FfWJyCzYQbIhXUxz7ETt0I/FqHjUeqj37irJ+Dl1ZtU82uYyj14u2XsZKfg==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-3.0.2.tgz", + "integrity": "sha512-rMO7CGo/9BFwyZABcKAWL8UJwH/Kc2x0g72uhDWzG48URRax5TCIcJ7Rc3RZqffZzO/Gwff/jyKwCU9TN8gehA==", "license": "Apache-2.0", "dependencies": { "@types/whatwg-url": "^11.0.2", - "whatwg-url": "^13.0.0" + "whatwg-url": "^14.1.0 || ^13.0.0" } }, "node_modules/mongodb-connection-string-url/node_modules/tr46": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-4.1.1.tgz", - "integrity": "sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.0.0.tgz", + "integrity": "sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==", "license": "MIT", "dependencies": { - "punycode": "^2.3.0" + "punycode": "^2.3.1" }, "engines": { - "node": ">=14" + "node": ">=18" } }, "node_modules/mongodb-connection-string-url/node_modules/webidl-conversions": { @@ -5543,27 +5961,27 @@ } }, "node_modules/mongodb-connection-string-url/node_modules/whatwg-url": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-13.0.0.tgz", - "integrity": "sha512-9WWbymnqj57+XEuqADHrCJ2eSXzn8WXIW/YSGaZtb2WKAInQ6CHfaUUcTyyver0p8BDg5StLQq8h1vtZuwmOig==", + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.1.0.tgz", + "integrity": "sha512-jlf/foYIKywAt3x/XWKZ/3rz8OSJPiWktjmk891alJUEjiVxKX9LEO92qH3hv4aJ0mN3MWPvGMCy8jQi95xK4w==", "license": "MIT", "dependencies": { - "tr46": "^4.1.1", + "tr46": "^5.0.0", "webidl-conversions": "^7.0.0" }, "engines": { - "node": ">=16" + "node": ">=18" } }, "node_modules/mongoose": { - "version": "8.7.1", - "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-8.7.1.tgz", - "integrity": "sha512-RpNMyhyzLVCVbf8xTVbrf/18G3MqQzNw5pJdvOJ60fzbCa3cOZzz9L+8XpqzBXtRlgZGWv0T7MmOtvrT8ocp1Q==", + "version": "8.9.5", + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-8.9.5.tgz", + "integrity": "sha512-SPhOrgBm0nKV3b+IIHGqpUTOmgVL5Z3OO9AwkFEmvOZznXTvplbomstCnPOGAyungtRXE5pJTgKpKcZTdjeESg==", "license": "MIT", "dependencies": { - "bson": "^6.7.0", + "bson": "^6.10.1", "kareem": "2.6.3", - "mongodb": "6.9.0", + "mongodb": "~6.12.0", "mpath": "0.9.0", "mquery": "5.0.0", "ms": "2.1.3", @@ -5577,23 +5995,14 @@ "url": "https://opencollective.com/mongoose" } }, - "node_modules/mongoose/node_modules/bson": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/bson/-/bson-6.8.0.tgz", - "integrity": "sha512-iOJg8pr7wq2tg/zSlCCHMi3hMm5JTOxLTagf3zxhcenHsFp+c6uOs6K7W5UE7A4QIJGtqh/ZovFNMP4mOPJynQ==", - "license": "Apache-2.0", - "engines": { - "node": ">=16.20.1" - } - }, "node_modules/mongoose/node_modules/mongodb": { - "version": "6.9.0", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.9.0.tgz", - "integrity": "sha512-UMopBVx1LmEUbW/QE0Hw18u583PEDVQmUmVzzBRH0o/xtE9DBRA5ZYLOjpLIa03i8FXjzvQECJcqoMvCXftTUA==", + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.12.0.tgz", + "integrity": "sha512-RM7AHlvYfS7jv7+BXund/kR64DryVI+cHbVAy9P61fnb1RcWZqOW1/Wj2YhqMCx+MuYhqTRGv7AwHBzmsCKBfA==", "license": "Apache-2.0", "dependencies": { - "@mongodb-js/saslprep": "^1.1.5", - "bson": "^6.7.0", + "@mongodb-js/saslprep": "^1.1.9", + "bson": "^6.10.1", "mongodb-connection-string-url": "^3.0.0" }, "engines": { @@ -5601,7 +6010,7 @@ }, "peerDependencies": { "@aws-sdk/credential-providers": "^3.188.0", - "@mongodb-js/zstd": "^1.1.0", + "@mongodb-js/zstd": "^1.1.0 || ^2.0.0", "gcp-metadata": "^5.2.0", "kerberos": "^2.0.1", "mongodb-client-encryption": ">=6.0.0 <7", @@ -5638,6 +6047,34 @@ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "license": "MIT" }, + "node_modules/morgan": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz", + "integrity": "sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==", + "license": "MIT", + "dependencies": { + "basic-auth": "~2.0.1", + "debug": "2.6.9", + "depd": "~2.0.0", + "on-finished": "~2.3.0", + "on-headers": "~1.0.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/morgan/node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/mpath": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.9.0.tgz", @@ -5759,13 +6196,14 @@ "license": "MIT" }, "node_modules/nodemon": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.0.1.tgz", - "integrity": "sha512-g9AZ7HmkhQkqXkRc20w+ZfQ73cHLbE8hnPbtaFbFtCumZsjyMhKk9LajQ07U5Ux28lvFjZ5X7HvWR1xzU8jHVw==", + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.1.9.tgz", + "integrity": "sha512-hdr1oIb2p6ZSxu3PB2JWWYS7ZQ0qvaZsc3hK8DR8f02kRzc8rjYmxAIvdz+aYC+8F2IjNaB7HMcSDg8nQpJxyg==", "dev": true, + "license": "MIT", "dependencies": { "chokidar": "^3.5.2", - "debug": "^3.2.7", + "debug": "^4", "ignore-by-default": "^1.0.1", "minimatch": "^3.1.2", "pstree.remy": "^1.1.8", @@ -5787,12 +6225,21 @@ } }, "node_modules/nodemon/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", "dev": true, + "license": "MIT", "dependencies": { - "ms": "^2.1.1" + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, "node_modules/nodemon/node_modules/has-flag": { @@ -5808,7 +6255,8 @@ "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/nodemon/node_modules/supports-color": { "version": "5.5.0", @@ -5869,9 +6317,10 @@ } }, "node_modules/nwsapi": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.7.tgz", - "integrity": "sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==" + "version": "2.2.16", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.16.tgz", + "integrity": "sha512-F1I/bimDpj3ncaNDhfyMWuFqmQDBwDB0Fogc2qpL3BWvkQteFD/8BzWuIRl83rq0DXfm8SGt/HFhLXZyljTXcQ==", + "license": "MIT" }, "node_modules/object-assign": { "version": "4.1.1", @@ -5882,9 +6331,13 @@ } }, "node_modules/object-inspect": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz", + "integrity": "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -5931,17 +6384,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/optional-require": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/optional-require/-/optional-require-1.1.8.tgz", - "integrity": "sha512-jq83qaUb0wNg9Krv1c5OQ+58EK+vHde6aBPzLvPPqJm89UQWsvSuFy9X/OSNJnFeSOKo7btE0n8Nl2+nE+z5nA==", - "dependencies": { - "require-at": "^1.0.6" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/optionator": { "version": "0.9.4", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", @@ -6087,9 +6529,13 @@ "license": "MIT" }, "node_modules/path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.2.0.tgz", + "integrity": "sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==", + "license": "MIT", + "engines": { + "node": ">=16" + } }, "node_modules/pbkdf2-password": { "version": "1.2.1", @@ -6235,11 +6681,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - }, "node_modules/prompts": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", @@ -6272,11 +6713,6 @@ "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", "license": "MIT" }, - "node_modules/psl": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", - "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" - }, "node_modules/pstree.remy": { "version": "1.1.8", "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", @@ -6284,9 +6720,10 @@ "dev": true }, "node_modules/punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "license": "MIT", "engines": { "node": ">=6" } @@ -6309,11 +6746,12 @@ "license": "MIT" }, "node_modules/qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "license": "BSD-3-Clause", "dependencies": { - "side-channel": "^1.0.4" + "side-channel": "^1.0.6" }, "engines": { "node": ">=0.6" @@ -6322,11 +6760,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" - }, "node_modules/random-bytes": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz", @@ -6339,6 +6772,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -6374,25 +6808,6 @@ "dev": true, "license": "MIT" }, - "node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/readable-stream/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, "node_modules/readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", @@ -6405,14 +6820,6 @@ "node": ">=8.10.0" } }, - "node_modules/require-at": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/require-at/-/require-at-1.0.6.tgz", - "integrity": "sha512-7i1auJbMUrXEAZCOQ0VNJgmcT2VOKPRl2YGJwgpHpC9CE91Mv4/4UYIUm4chGJaI381ZDq1JUicFii64Hapd8g==", - "engines": { - "node": ">=4" - } - }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -6423,11 +6830,6 @@ "node": ">=0.10.0" } }, - "node_modules/requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" - }, "node_modules/resolve": { "version": "1.22.8", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", @@ -6512,10 +6914,41 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/rotating-file-stream": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/rotating-file-stream/-/rotating-file-stream-3.2.5.tgz", + "integrity": "sha512-T8iBxUA4SookMTU97cIHUPck7beLOvN4g+y4db9E2eLn54OFsdp4qMnxuqmmJ05lcQHzueEVnPRykxfnPG948g==", + "license": "MIT", + "engines": { + "node": ">=14.0" + }, + "funding": { + "url": "https://www.blockchain.com/btc/address/12p1p5q7sK75tPyuesZmssiMYr4TKzpSCN" + } + }, + "node_modules/router": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/router/-/router-2.0.0.tgz", + "integrity": "sha512-dIM5zVoG8xhC6rnSN8uoAgFARwTE7BQs8YwHEvK0VCmfxQXMaOuA1uiR1IPwsW7JyK5iTt7Od/TC9StasS2NPQ==", + "license": "MIT", + "dependencies": { + "array-flatten": "3.0.0", + "is-promise": "4.0.0", + "methods": "~1.1.2", + "parseurl": "~1.3.3", + "path-to-regexp": "^8.0.0", + "setprototypeof": "1.2.0", + "utils-merge": "1.0.1" + }, + "engines": { + "node": ">= 0.10" + } + }, "node_modules/rrweb-cssom": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.6.0.tgz", - "integrity": "sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==" + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.7.1.tgz", + "integrity": "sha512-TrEMa7JGdVm0UThDJSx7ddw5nVm3UJS9o9CCIZ72B1vSyEZoziDqBYP3XIoi/12lKrJR8rE3jeFHMok2F/Mnsg==", + "license": "MIT" }, "node_modules/safe-buffer": { "version": "5.2.1", @@ -6541,18 +6974,6 @@ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, - "node_modules/saslprep": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz", - "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==", - "optional": true, - "dependencies": { - "sparse-bitfield": "^3.0.3" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/saxes": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", @@ -6585,45 +7006,73 @@ } }, "node_modules/send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/send/-/send-1.1.0.tgz", + "integrity": "sha512-v67WcEouB5GxbTWL/4NeToqcZiAWEq90N888fczVArY8A79J0L4FD7vj5hm3eUMua5EpoQ59wa/oovY6TLvRUA==", + "license": "MIT", "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" + "debug": "^4.3.5", + "destroy": "^1.2.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "fresh": "^0.5.2", + "http-errors": "^2.0.0", + "mime-types": "^2.1.35", + "ms": "^2.1.3", + "on-finished": "^2.4.1", + "range-parser": "^1.2.1", + "statuses": "^2.0.1" }, "engines": { - "node": ">= 0.8.0" + "node": ">= 18" + } + }, + "node_modules/send/node_modules/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/send/node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "license": "MIT", + "engines": { + "node": ">= 0.6" } }, "node_modules/send/node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" }, "node_modules/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.1.0.tgz", + "integrity": "sha512-A3We5UfEjG8Z7VkDv6uItWw6HY2bBSBJT1KtVESn6EOoOr2jAxNhxWCLY3jDE2WcuHXByWju74ck3ZgLwL8xmA==", + "license": "MIT", "dependencies": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.18.0" + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "parseurl": "^1.3.3", + "send": "^1.0.0" }, "engines": { - "node": ">= 0.8.0" + "node": ">= 18" } }, "node_modules/set-blocking": { @@ -6656,13 +7105,72 @@ } }, "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -6709,30 +7217,56 @@ } }, "node_modules/socket.io": { - "version": "4.7.1", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.7.1.tgz", - "integrity": "sha512-W+utHys2w//dhFjy7iQQu9sGd3eokCjGbl2r59tyLqNiJJBdIebn3GAKEXBr3osqHTObJi2die/25bCx2zsaaw==", + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.8.1.tgz", + "integrity": "sha512-oZ7iUCxph8WYRHHcjBEc9unw3adt5CmSNlppj/5Q4k2RIrhl8Z5yY2Xr4j9zj0+wzVZ0bxmYoGSzKJnRl6A4yg==", + "license": "MIT", "dependencies": { "accepts": "~1.3.4", "base64id": "~2.0.0", "cors": "~2.8.5", "debug": "~4.3.2", - "engine.io": "~6.5.0", + "engine.io": "~6.6.0", "socket.io-adapter": "~2.5.2", "socket.io-parser": "~4.2.4" }, "engines": { - "node": ">=10.0.0" + "node": ">=10.2.0" } }, "node_modules/socket.io-adapter": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.2.tgz", - "integrity": "sha512-87C3LO/NOMc+eMcpcxUBebGjkpMDkNBS9tf7KJqcDsmL936EChtVva71Dw2q4tQcuVC+hAUy4an2NO/sYXmwRA==", + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.5.tgz", + "integrity": "sha512-eLDQas5dzPgOWCk9GuuJC2lBqItuhKI4uxGgo9aIV7MYbk2h9Q6uULEh8WBzThoI7l+qU9Ast9fVUmkqPP9wYg==", + "license": "MIT", "dependencies": { - "ws": "~8.11.0" + "debug": "~4.3.4", + "ws": "~8.17.1" } }, + "node_modules/socket.io-adapter/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/socket.io-adapter/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, "node_modules/socket.io-parser": { "version": "4.2.4", "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", @@ -7055,9 +7589,10 @@ "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==" }, "node_modules/tar": { - "version": "6.1.15", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.15.tgz", - "integrity": "sha512-/zKt9UyngnxIT/EAGYuxaMYgOIJiP81ab9ZfkILq4oNLPFX50qyYmu7jRj9qeXoxmJHjGlbH0+cm2uy1WCs10A==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", + "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", + "license": "ISC", "dependencies": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", @@ -7085,13 +7620,6 @@ "node": ">=8" } }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true, - "license": "MIT" - }, "node_modules/throttleit": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-2.1.0.tgz", @@ -7104,6 +7632,24 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/tldts": { + "version": "6.1.75", + "resolved": "https://registry.npmjs.org/tldts/-/tldts-6.1.75.tgz", + "integrity": "sha512-+lFzEXhpl7JXgWYaXcB6DqTYXbUArvrWAE/5ioq/X3CdWLbDjpPP4XTrQBmEJ91y3xbe4Fkw7Lxv4P3GWeJaNg==", + "license": "MIT", + "dependencies": { + "tldts-core": "^6.1.75" + }, + "bin": { + "tldts": "bin/cli.js" + } + }, + "node_modules/tldts-core": { + "version": "6.1.75", + "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-6.1.75.tgz", + "integrity": "sha512-AOvV5YYIAFFBfransBzSTyztkc3IMfz5Eq3YluaRiEu55nn43Fzaufx70UqEKYr8BoLCach4q8g/bg6e5+/aFw==", + "license": "MIT" + }, "node_modules/tmpl": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", @@ -7170,17 +7716,15 @@ } }, "node_modules/tough-cookie": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz", - "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-5.1.0.tgz", + "integrity": "sha512-rvZUv+7MoBYTiDmFPBrhL7Ujx9Sk+q9wwm22x8c8T5IJaR+Wsyc7TNxbVxo84kZoRJZZMazowFLqpankBEQrGg==", + "license": "BSD-3-Clause", "dependencies": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.2.0", - "url-parse": "^1.5.3" + "tldts": "^6.1.32" }, "engines": { - "node": ">=6" + "node": ">=16" } }, "node_modules/tr46": { @@ -7253,13 +7797,11 @@ "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", "dev": true }, - "node_modules/universalify": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", - "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", - "engines": { - "node": ">= 4.0.0" - } + "node_modules/undici-types": { + "version": "6.20.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", + "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", + "license": "MIT" }, "node_modules/unpipe": { "version": "1.0.0", @@ -7310,15 +7852,6 @@ "punycode": "^2.1.0" } }, - "node_modules/url-parse": { - "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.1.1", - "requires-port": "^1.0.0" - } - }, "node_modules/use-sync-external-store": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.4.0.tgz", @@ -7342,11 +7875,16 @@ } }, "node_modules/uuid": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", - "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", + "version": "11.0.5", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.0.5.tgz", + "integrity": "sha512-508e6IcKLrhxKdBbcA2b4KQZlLVp2+J5UwQ6F7Drckkc5N9ZJwFa4TgWtsww9UG8fGHbm6gbV19TdM5pQ4GaIA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", "bin": { - "uuid": "dist/bin/uuid" + "uuid": "dist/esm/bin/uuid" } }, "node_modules/v8-to-istanbul": { @@ -7373,14 +7911,15 @@ } }, "node_modules/w3c-xmlserializer": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz", - "integrity": "sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz", + "integrity": "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==", + "license": "MIT", "dependencies": { - "xml-name-validator": "^4.0.0" + "xml-name-validator": "^5.0.0" }, "engines": { - "node": ">=14" + "node": ">=18" } }, "node_modules/walker": { @@ -7399,20 +7938,22 @@ "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" }, "node_modules/whatwg-encoding": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", - "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", + "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", + "license": "MIT", "dependencies": { "iconv-lite": "0.6.3" }, "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/whatwg-encoding/node_modules/iconv-lite": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" }, @@ -7421,11 +7962,12 @@ } }, "node_modules/whatwg-mimetype": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", - "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", + "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", + "license": "MIT", "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/whatwg-url": { @@ -7507,15 +8049,16 @@ } }, "node_modules/ws": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", - "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", + "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", + "license": "MIT", "engines": { "node": ">=10.0.0" }, "peerDependencies": { "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" + "utf-8-validate": ">=5.0.2" }, "peerDependenciesMeta": { "bufferutil": { @@ -7527,11 +8070,12 @@ } }, "node_modules/xml-name-validator": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", - "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz", + "integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==", + "license": "Apache-2.0", "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/xmlchars": { diff --git a/package.json b/package.json index c3f6a38..e77732d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "multi-stub", - "version": "1.0.1", + "version": "1.2.0", "description": "", "main": "index.js", "scripts": { @@ -30,27 +30,29 @@ "cookie-parser": "^1.4.5", "cors": "^2.8.5", "cross-env": "^7.0.3", - "crypto-js": "^4.1.1", - "dotenv": "^16.3.1", - "express": "^4.18.2", - "express-jwt": "^8.4.1", - "express-session": "^1.17.3", - "jsdom": "^22.1.0", - "jsonwebtoken": "^8.5.1", - "mongodb": "^3.6.8", - "mongoose": "^8.7.1", + "crypto-js": "^4.2.0", + "dotenv": "^16.4.7", + "express": "5.0.1", + "express-jwt": "^8.5.1", + "express-session": "^1.18.1", + "jsdom": "^25.0.1", + "jsonwebtoken": "^9.0.2", + "mongodb": "^6.12.0", + "mongoose": "^8.9.2", + "morgan": "^1.10.0", "pbkdf2-password": "^1.2.1", - "socket.io": "^4.7.1", - "uuid": "^9.0.0" + "rotating-file-stream": "^3.2.5", + "socket.io": "^4.8.1", + "uuid": "^11.0.3" }, "devDependencies": { - "@eslint/js": "^9.12.0", - "@types/node": "18.17.1", - "eslint": "^9.12.0", - "globals": "^15.11.0", + "@eslint/js": "^9.17.0", + "@types/node": "22.10.2", + "eslint": "^9.17.0", + "globals": "^15.14.0", "jest": "^29.7.0", "mockingoose": "^2.16.2", - "nodemon": "3.0.1", + "nodemon": "3.1.9", "supertest": "^7.0.0" } } diff --git a/server/data/const.js b/server/data/const.js deleted file mode 100644 index ad185bf..0000000 --- a/server/data/const.js +++ /dev/null @@ -1,2 +0,0 @@ -exports.TODO_LIST_MODEL_NAME = 'TODO_LIST' -exports.TODO_ITEM_MODEL_NAME = 'TODO_ITEM' diff --git a/server/data/model/todo/item.js b/server/data/model/todo/item.js deleted file mode 100644 index e777be2..0000000 --- a/server/data/model/todo/item.js +++ /dev/null @@ -1,23 +0,0 @@ -const { Schema, model } = require('mongoose') - -const { TODO_ITEM_MODEL_NAME } = require('../../const') - -const schema = new Schema({ - title: String, - done: { type: Boolean, default: false }, - closed: Date, - created: { - type: Date, default: () => new Date().toISOString(), - }, -}) - -schema.set('toJSON', { - virtuals: true, - versionKey: false, -}) - -schema.virtual('id').get(function () { - return this._id.toHexString() -}) - -exports.ItemModel = model(TODO_ITEM_MODEL_NAME, schema) diff --git a/server/error.js b/server/error.js index c68abfd..b8db25c 100644 --- a/server/error.js +++ b/server/error.js @@ -6,6 +6,7 @@ module.exports = (err, req, res, next) => { success: false, error: 'Токен авторизации не найден', }) } + res.status(400).send({ success: false, error: err.message || 'Что-то пошло не так', }) diff --git a/server/index.js b/server/index.js index df0bd55..d641904 100644 --- a/server/index.js +++ b/server/index.js @@ -1,57 +1,97 @@ -const express = require('express') -const bodyParser = require('body-parser') -const cookieParser = require('cookie-parser') -const session = require('express-session') +const express = require("express") +const bodyParser = require("body-parser") +const cookieParser = require("cookie-parser") +const session = require("express-session") +const morgan = require("morgan") +const path = require("path") +const rfs = require("rotating-file-stream") const app = express() -const cors = require('cors') -require('dotenv').config() - +require("dotenv").config() exports.app = app -const config = require('../.serverrc') -const { setIo } = require('./io') +const accessLogStream = rfs.createStream("access.log", { + size: "10M", + interval: "1d", + compress: "gzip", + path: path.join(__dirname, "log"), +}) + +const errorLogStream = rfs.createStream("error.log", { + size: "10M", + interval: "1d", + compress: "gzip", + path: path.join(__dirname, "log"), +}) + +const config = require("../.serverrc") +const { setIo } = require("./io") app.use(cookieParser()) -app.options('*', cors()) -app.use(cors()) +app.use( + morgan("combined", { + stream: accessLogStream, + skip: function (req, res) { + return res.statusCode >= 400 + }, + }) +) + +// log all requests to access.log +app.use( + morgan("combined", { + stream: errorLogStream, + skip: function (req, res) { + console.log('statusCode', res.statusCode, res.statusCode <= 400) + return res.statusCode < 400 + }, + }) +) + const server = setIo(app) const sess = { - secret: 'super-secret-key', - resave: true, - saveUninitialized: true, - cookie: { - }, + secret: "super-secret-key", + resave: true, + saveUninitialized: true, + cookie: {}, } -if (app.get('env') === 'production') { - app.set('trust proxy', 1) - sess.cookie.secure = true +if (app.get("env") === "production") { + app.set("trust proxy", 1) + sess.cookie.secure = true } app.use(session(sess)) -app.use(bodyParser.json({ - limit: '50mb', -})) -app.use(bodyParser.urlencoded({ - limit: '50mb', +app.use( + bodyParser.json({ + limit: "50mb", + }) +) +app.use( + bodyParser.urlencoded({ + limit: "50mb", extended: true, -})) -app.use(require('./root')) + }) +) +app.use(require("./root")) /** * Добавляйте сюда свои routers. */ -app.use('/kfu-m-24-1', require('./routers/kfu-m-24-1')) -app.use('/epja-2024-1', require('./routers/epja-2024-1')) -app.use('/todo', require('./routers/todo/routes')) -app.use('/dogsitters-finder', require('./routers/dogsitters-finder')) -app.use('/kazan-explore', require('./routers/kazan-explore')) -app.use('/edateam', require('./routers/edateam-legacy')) -app.use('/dry-wash', require('./routers/dry-wash')) -app.use('/freetracker', require('./routers/freetracker')) -app.use('/dhs-testing', require('./routers/dhs-testing')) +app.use("/kfu-m-24-1", require("./routers/kfu-m-24-1")) +app.use("/epja-2024-1", require("./routers/epja-2024-1")) +app.use("/v1/todo", require("./routers/todo")) +app.use("/dogsitters-finder", require("./routers/dogsitters-finder")) +app.use("/kazan-explore", require("./routers/kazan-explore")) +app.use("/edateam", require("./routers/edateam-legacy")) +app.use("/dry-wash", require("./routers/dry-wash")) +app.use("/freetracker", require("./routers/freetracker")) +app.use("/dhs-testing", require("./routers/dhs-testing")) +app.use("/gamehub", require("./routers/gamehub")) +app.use("/esc", require("./routers/esc")) -app.use(require('./error')) +app.use(require("./error")) -server.listen(config.port, () => console.log(`Listening on http://localhost:${config.port}`)) +server.listen(config.port, () => + console.log(`Listening on http://localhost:${config.port}`) +) diff --git a/server/routers/kazan-explore/json/data/success.json b/server/log/dummy similarity index 100% rename from server/routers/kazan-explore/json/data/success.json rename to server/log/dummy diff --git a/server/root.js b/server/root.js index fda15a7..cb3cc8a 100644 --- a/server/root.js +++ b/server/root.js @@ -10,6 +10,7 @@ const folderPath = path.resolve(__dirname, './routers') const folders = fs.readdirSync(folderPath) router.get('/', async (req, res) => { + // throw new Error('check error message') res.send(`

multy stub is working v${pkg.version}