diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 0000000..18b8a51 --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,21 @@ +{ + "env": { + "browser": true, + "es2021": true + }, + "extends": "airbnb-base", + "parserOptions": { + "ecmaVersion": 12, + "sourceType": "module" + }, + "rules": { + "quotes": "off", + "indent": "off", + "no-console": "off", + "no-use-before-define": "off", + "no-alert": "off", + "no-restricted-globals": "off", + "quote-props": "off", + "linebreak-style": 0 + } +} \ No newline at end of file diff --git a/admin.html b/admin.html index a0a7696..069e57e 100644 --- a/admin.html +++ b/admin.html @@ -7,7 +7,8 @@ - + +
@@ -37,125 +38,19 @@

Товары

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#НазваниеЦенаФотографииНаличие в магазинах
1SSD-накопитель Kingston A4005 400 ₽/content/catalog/Kingston A400.jpg3
2Смартфон Samsung A54 6/128GB35 750 ₽/content/catalog/Samsung A54.jpg3
3Смартфон Samsung S23+ 8/256GB110 990 ₽/content/catalog/Samsung S23+.jpg3
4Смартфон POCO X5 Pro 5G 8/256GB39 990 ₽/content/catalog/POCO X5 Pro.jpg3
5Беспроводная игровая мышь SteelSeries AEROX 39 490 ₽/content/catalog/Steelseries Aerox 3 Wireless.jpg3
6Консоль Microsoft XBOX Series X82 000 ₽/content/catalog/XBOX Series X.jpg3
7Видеокарта ASUS NVIDIA DUAL RTX407076 000 ₽/content/catalog/GeForce RTX4070.jpg3
8Игровая приставка Sony PlayStation 558 990 ₽/content/catalog/PS5.jpg3
9Процессор AMD Ryzen 7 5800X3D OEM44 290 ₽/content/catalog/Ryzen 7 5800X3D.jpg3
10Процессор AMD Ryzen 5 5600G OEM14 590 ₽/content/catalog/Ryzen 5 5600G.jpg3
11Процессор AMD Ryzen 5 7600X OEM29 590 ₽/content/catalog/Ryzen 5 7600X.jpg3
12Кулер для процессора DEEPCOOL AG2001 590 ₽/content/catalog/DEEPCOOL AG200.jpg3
13Оперативная память Kingston 16Gb DDR45 190 ₽/content/catalog/Kingston 16GB DDR4 3200MHz.jp3
14SSD накопитель Samsung 980 PRO 1TB M.215 190 ₽/content/catalog/Samsung 980 PRO.jpg3
15Процессор Intel Core i5 13600KF OEM42 613 ₽/content/catalog/Intel Core i5 13600KF.jpg3
- + + + + + + + + + + + +
#НазваниеЦенаКоличество в магазинахИзображение
+
+ + diff --git a/catalog.html b/catalog.html index cd01eb1..5a979f2 100644 --- a/catalog.html +++ b/catalog.html @@ -7,8 +7,8 @@ - - + +
diff --git a/css/style.css b/css/style.css new file mode 100644 index 0000000..fc228d6 --- /dev/null +++ b/css/style.css @@ -0,0 +1,232 @@ +main, body { + min-height: 100%; +} + +form { + height: 100%; +} + +.form-horizontal{ + display:block; + height:50%; + margin:0 auto; +} + +@media only screen and (max-width: 768px) { + .picmin.box { + display: none; + } + .picture-preview.box { + max-width: 100%; + width: 450px; + } + .product-menu.box{ + display: none; + } + .pr-menu-btn.btn { + display: none; + } + #innerbox.xl-only, .catalog-menu.xl-only { + display: none !important; + } + .xl-only { + display: none !important; + } +} +#cart-pic.picmin.box { + display: block !important; +} + +.registerbox { + max-width: 725px; + width: 100%; + background: #D1D9FF; + box-shadow: 0px 5px 8px rgba(0, 0, 0, 0.25); + border-radius: 20px; +} + +.inputbox { + height: 52px; + background: white; + border-radius: 12px; + border: 0px; + font-size: 24px; +} + +.btn.btn-primary { + border-radius: 12px; + border: 0px; + color: #FFFFFF; + font-size: 24px; + cursor: pointer; + + filter: drop-shadow(0px 5px 5px rgba(0, 0, 0, 0.25)); +} + +.btn.btn-main { + border-radius: 12px; + border: 0px; + color: #FFFFFF; + font-size: 24px; + cursor: pointer; + + filter: drop-shadow(0px 5px 5px rgba(0, 0, 0, 0.25)); +} + +.btn.btn-light { + width: 197px; + height: 62px; + border-radius: 12px; + border: 0px; + color: #000000; + font-size: 20px; + cursor: pointer; + text-align: left; + padding-left: 5%; + + filter: drop-shadow(0px 5px 5px rgba(0, 0, 0, 0.25)); +} + +.box { + background: #D1D9FF; + box-shadow: 0px 5px 6px rgba(0, 0, 0, 0.25); + border-radius: 20px +} + +.inputbox { + background: white; + border-radius: 12px; +} + +#menu.box { + width: 250px; + max-height: 250px; +} + +#settings-menu.box { + max-width: 250px; + height: 550px; +} + +.catalog-menu.box { + width: 250px; +} + +#catalog.box { + width: 1250px; +} + +#innerbox.catalog.box { + background: #6376D7; +} + +#item.catalog.box { + background: white; + height: 365px; + width: 215px; +} + +.item-img { + height: 180px; + width: 180px; +} + +#product-box.box { + max-width: 925px; + width: 100%; +} + +#product-menu.box { + max-width: 250px; + width: 100%; +} + +.picture-preview.box { + background-color: white; + width: 450px; + max-height: 450px; + box-shadow: 0px 0px 0px rgba(0, 0, 0, 0.25); +} + +.picmin.box { + background-color: white; + width: 100px !important; + height: 100px !important; + box-shadow: 0px 0px 0px rgba(0, 0, 0, 0.25); +} + +#order-box.box { + background-color: white; + max-width: 300px; + height: 450px; + box-shadow: 0px 0px 0px rgba(0, 0, 0, 0.25); +} + +#cart.box { + width: 970px; + min-height: 725px; +} + +#orders.box { + width: 970px; + height: 725px; +} + +#favorite.box { + width: 970px; + height: 725px; +} + +#personal-info.box { + max-width: 970px; + min-height: 550px; + height: 100%; +} + +.innerbox { + background: #ffffff; + border-radius: 20px +} + +#cart-box.innerbox { + max-width: 550px; + height: 600px; +} + +#order-cart-box.innerbox { + height: 300px; +} + + +.btn-main { + --bs-btn-bg: #4156C2 !important; + --bs-btn-border-color: #33449d; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #2c3c8a; + --bs-btn-hover-border-color: #1a2350; + --bs-btn-focus-shadow-rgb: 51, 68, 157; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #1a2350; + --bs-btn-active-border-color: #fff; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #fff; + --bs-btn-disabled-bg: #4156C2; + --bs-btn-disabled-border-color: #33449d; + } + + .btn-quit { + --bs-btn-color: #fff !important; + --bs-btn-bg: #152683 !important; + --bs-btn-border-color: rgba(0, 0, 0, 0); + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #12206f; + --bs-btn-hover-border-color: rgba(0, 0, 0, 0.2); + --bs-btn-focus-shadow-rgb: 255, 255, 255; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #111e69; + --bs-btn-active-border-color: rgba(0, 0, 0, 0.25); + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #fff; + --bs-btn-disabled-bg: #152683; + --bs-btn-disabled-border-color: rgba(0, 0, 0, 0); + } \ No newline at end of file diff --git a/data.json b/data.json new file mode 100644 index 0000000..7aa2f79 --- /dev/null +++ b/data.json @@ -0,0 +1,123 @@ +{ + "lines": [ + { + "name": "SSD-накопитель Kingston A400", + "price": "5400.00", + "count": "31", + "image": "data:image/jpeg;base64,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", + "id": 1 + }, + { + "name": "Смартфон Samsung A54 6/128GB", + "price": "35750.00", + "count": "3", + "image": "data:image/jpeg;base64,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", + "id": 2 + }, + { + "name": "Смартфон Samsung S23+ 8/256GB", + "price": "110990.00", + "count": "5", + "image": "data:image/jpeg;base64,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", + "id": 3 + }, + { + "id": 4, + "name": "Смартфон POCO X5 Pro 5G 8/256GB", + "price": "39990.00", + "mainpicture": "/content/catalog/POCO X5 Pro.jpg", + "count": "3" + }, + { + "id": 5, + "name": "Беспроводная игровая мышь SteelSeries AEROX 3", + "price": "9490.00", + "mainpicture": "/content/catalog/Steelseries Aerox 3 Wireless.jpg", + "count": "13" + }, + { + "id": 6, + "name": "Консоль Microsoft XBOX Series X", + "price": "82000.00", + "mainpicture": "/content/catalog/XBOX Series X.jpg", + "count": "12" + }, + { + "id": 7, + "name": "Видеокарта ASUS NVIDIA DUAL RTX4070", + "price": "76000.00", + "mainpicture": "/content/catalog/GeForce RTX4070.jpg", + "count": "3" + }, + { + "id": 8, + "name": "Игровая приставка Sony PlayStation 5", + "price": "58990.00", + "mainpicture": "/content/catalog/PS5.jpg", + "count": "5" + }, + { + "id": 9, + "name": "Процессор AMD Ryzen 7 5800X3D OEM", + "price": "44290.00", + "mainpicture": "/content/catalog/Ryzen 7 5800X3D.jpg", + "count": "3" + }, + { + "id": 10, + "name": "Процессор AMD Ryzen 5 5600G OEM", + "price": "14590.00", + "mainpicture": "/content/catalog/Ryzen 5 5600G.jpg", + "count": "5" + }, + { + "id": 11, + "name": "Процессор AMD Ryzen 5 7600X OEM", + "price": "29590.00", + "mainpicture": "/content/catalog/Ryzen 5 7600X.jpg", + "count": "31" + }, + { + "id": 12, + "name": "Кулер для процессора DEEPCOOL AG200", + "price": "1590.00", + "mainpicture": "/content/catalog/DEEPCOOL AG200.jpg", + "count": "3" + }, + { + "id": 13, + "name": "Оперативная память Kingston 16Gb DDR4", + "price": "5190.00", + "mainpicture": "/content/catalog/Kingston 16GB DDR4 3200MHz.jpg", + "count": "5" + }, + { + "id": 14, + "name": "SSD накопитель Samsung 980 PRO 1TB M.2", + "price": "15190.00", + "mainpicture": "/content/catalog/Samsung 980 PRO.jpg", + "count": "3" + }, + { + "name": "Процессор Intel Core i5 13600KF OEM", + "price": "42614.00", + "count": "5", + "mainpicture": "/content/catalog/Intel Core i5 13600KF.jpg", + "id": 15 + }, + { + "name": "11", + "price": "11111.00", + "count": "111", + "image": "data:image/jpeg;base64,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", + "id": 16 + }, + { + "name": "146", + "price": "1445.00", + "count": "3", + "image": "data:image/jpeg;base64,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", + "id": 17 + } + ] +} \ No newline at end of file diff --git a/index.html b/index.html index 6f6cbb7..79f7cce 100644 --- a/index.html +++ b/index.html @@ -7,7 +7,7 @@ - + diff --git a/js/lines-modal.js b/js/lines-modal.js new file mode 100644 index 0000000..7257744 --- /dev/null +++ b/js/lines-modal.js @@ -0,0 +1,55 @@ +// Модуль для работы с модальным окном + +// импорт компонента Modal из bootstrap +import { Modal } from "bootstrap"; +import { cntrls, imagePlaceholder } from "./lines-ui"; + +// поиск модального окна на странице +const modal = document.getElementById("items-update"); +// если он найден, то создается экземпляр компонента Modal +// для программного управления модальным окном +const myModal = modal ? new Modal(modal, {}) : null; + +// поиск тега с заголовком модального кона для его смены +const modalTitle = document.getElementById("items-update-title"); + +// обнуление значений модального окна, т. к. +// используется одно окно для всех операций +function resetValues() { + cntrls.lineId.value = ""; + cntrls.name.value = ""; + cntrls.price.value = parseFloat(0).toFixed(2); + cntrls.count.value = 0; + cntrls.image.value = ""; + cntrls.imagePreview.src = imagePlaceholder; +} + +// функция для показа модального окна +// перед показом происходит заполнение формы для редактирования +// если объект item не пуст +export function showUpdateModal(item) { + modalTitle.innerHTML = item === null ? "Добавить" : "Изменить"; + console.info(item); + + if (item) { + cntrls.lineId.value = item.id; + cntrls.name.value = item.name; + cntrls.price.value = item.price; + cntrls.count.value = item.count; + cntrls.count.value = item.count; + cntrls.imagePreview.src = item.image ? item.image : imagePlaceholder; + } else { + resetValues(); + } + + myModal.show(); +} + +// функция для скрытия модального окна +export function hideUpdateModal() { + resetValues(); + + // удаление класса was-validated для скрытия результатов валидации + cntrls.form.classList.remove("was-validated"); + myModal.hide(); +} diff --git a/js/lines-rest-api.js b/js/lines-rest-api.js new file mode 100644 index 0000000..fe3fed1 --- /dev/null +++ b/js/lines-rest-api.js @@ -0,0 +1,80 @@ +// модуль для работы с REST API сервера + +// адрес сервера +const serverUrl = "http://localhost:8082"; + +// функция возвращает объект нужной структуры для отправки на сервер +function createLineObject(name, price, count, image) { + return { + name, + price: parseFloat(price).toFixed(2), + count, + image, + }; +} + +// обращение к серверу для получения всех записей (get) +export async function getAllLines() { + const response = await fetch(`${serverUrl}/lines`); + if (!response.ok) { + throw response.statusText; + } + return response.json(); +} + +// обращение к серверу для создания записи (post) +// объект отправляется в теле запроса (body) +export async function createLine(name, price, count, image) { + const itemObject = createLineObject(name, price, count, image); + + const options = { + method: "POST", + body: JSON.stringify(itemObject), + headers: { + "Accept": "application/json", + "Content-Type": "application/json", + }, + }; + + const response = await fetch(`${serverUrl}/lines`, options); + if (!response.ok) { + throw response.statusText; + } + return response.json(); +} + +// обращение к серверу для обновления записи по id (put) +// объект отправляется в теле запроса (body) +// id передается в качестве части пути URL get-запроса +export async function updateLine(id, name, price, count, image) { + const itemObject = createLineObject(name, price, count, image); + + const options = { + method: "PUT", + body: JSON.stringify(itemObject), + headers: { + "Accept": "application/json", + "Content-Type": "application/json", + }, + }; + + const response = await fetch(`${serverUrl}/lines/${id}`, options); + if (!response.ok) { + throw response.statusText; + } + return response.json(); +} + +// обращение к серверу для удаления записи по id (delete) +// id передается в качестве части пути URL get-запроса +export async function deleteLine(id) { + const options = { + method: "DELETE", + }; + + const response = await fetch(`${serverUrl}/lines/${id}`, options); + if (!response.ok) { + throw response.statusText; + } + return response.json(); +} diff --git a/js/lines-ui.js b/js/lines-ui.js new file mode 100644 index 0000000..d2677d3 --- /dev/null +++ b/js/lines-ui.js @@ -0,0 +1,85 @@ +// модуль для работы с элементами управления + +// объект для удобного получения элементов +// при обращении к атрибуту объекта вызывается +// нужная функция для поиска элемента +export const cntrls = { + button: document.getElementById("items-add"), + table: document.querySelector("#items-table tbody"), + form: document.getElementById("items-form"), + lineId: document.getElementById("items-line-id"), + name: document.getElementById("name"), + price: document.getElementById("price"), + count: document.getElementById("count"), + image: document.getElementById("image"), + imagePreview: document.getElementById("image-preview"), +}; + +export const imagePlaceholder = "https://via.placeholder.com/200"; + +// функция создает ссылку (a) для таблицы +// содержимое тега a заполняется необходимой иконкой (icon) +// при нажатии вызывается callback +// ссылка "оборачивается" тегом td +// +function createTableAnchor(icon, callback) { + const i = document.createElement("i"); + i.classList.add("fa-solid", icon); + + const a = document.createElement("a"); + a.href = "#"; + a.appendChild(i); + a.onclick = (event) => { + // чтобы в URL не добавлялась решетка + event.preventDefault(); + event.stopPropagation(); + callback(); + }; + + const td = document.createElement("td"); + td.appendChild(a); + return td; +} + +function createTableColumn(value) { + const td = document.createElement("td"); + td.textContent = value; + return td; +} + +function createImgColumn(value) { + const td = document.createElement("td"); + td.appendChild(value); + return td; +} + +export function createTableRow(item, index, editCallback, deleteCallback) { + const rowNumber = document.createElement("th"); + rowNumber.scope = "row"; + rowNumber.textContent = index + 1; + + const row = document.createElement("tr"); + row.id = `line-${item.id}`; + + const img = document.createElement("img"); + if (item.image === undefined) { + img.src = imagePlaceholder; + } + else { + img.src = item.image; + } + img.style.width = "70px"; + img.style.height = "70px"; + + + row.appendChild(rowNumber); + row.appendChild(createTableColumn(item.name)); + row.appendChild(createTableColumn(parseFloat(item.price).toFixed(2))); + row.appendChild(createTableColumn(item.count)); + row.appendChild(createImgColumn(img)); + // редактировать в модальном окне + row.appendChild(createTableAnchor("fa-pencil", editCallback)); + // удаление + row.appendChild(createTableAnchor("fa-trash", deleteCallback)); + return row; +} diff --git a/js/lines.js b/js/lines.js new file mode 100644 index 0000000..4eaee8c --- /dev/null +++ b/js/lines.js @@ -0,0 +1,183 @@ +// модуль с логикой + +import { hideUpdateModal, showUpdateModal } from "./lines-modal"; +import { + createLine, deleteLine, getAllLines, updateLine, +} from "./lines-rest-api"; +import { + cntrls, createTableRow, imagePlaceholder, +} from "./lines-ui"; + +async function drawLinesTable() { + console.info("Try to load data"); + console.log(cntrls); + if (!cntrls.table) { + console.info("No table!"); + return; + } + // вызов метода REST API для получения всех записей + const data = await getAllLines(); + cntrls.table.innerHTML = ""; + // цикл по результату ответа от сервера + // используется лямбда-выражение + // (item, index) => {} аналогично function(item, index) {} + data.forEach((item, index) => { + cntrls.table.appendChild( + createTableRow( + item, + index, + () => showUpdateModal(item), + () => removeLine(item.id), + ), + ); + }); +} + +async function addLine(name, price, count, image) { + console.info("Try to add item"); + // вызов метода REST API для добавления записи + const data = await createLine(name, price, count, image); + console.info("Added"); + console.info(data); + // загрузка и заполнение table + drawLinesTable(); +} + +async function editLine(id, name, price, count, image) { + console.info("Try to update item"); + // вызов метода REST API для обновления записи + const data = await updateLine(id, name, price, count, image); + console.info("Updated"); + console.info(data); + // загрузка и заполнение table + drawLinesTable(); +} + +async function removeLine(id) { + if (!confirm("Вы уверены, что вы хотите удалить объект?")) { + console.info("Canceled"); + return; + } + console.info("Try to remove item"); + // вызов метода REST API для удаления записи + const data = await deleteLine(id); + console.info(data); + // загрузка и заполнение table + drawLinesTable(); +} + +// Функция для обработки создания и редактирования элементов таблицы через модальное окно +// Если хотите делать через страницу, то удалите эту функцию +// eslint-disable-next-line import/prefer-default-export +export function linesForm() { + console.info("linesForm"); + + // загрузка и заполнение table + drawLinesTable(); + + // обработчик события нажатия на кнопку для показа модального окна + cntrls.button.addEventListener("click", () => showUpdateModal(null)); + + cntrls.image.addEventListener("change", () => updateImagePreview()); + + // обработчик события отправки формы + // возникает при нажатии на кнопку (button) с типом submit + // кнопка должна находится внутри тега form + cntrls.form.addEventListener("submit", async (event) => { + console.info("Form onSubmit"); + // отключение стандартного поведения формы при отправке + // при отправке страница обновляется и JS перестает работать + event.preventDefault(); + event.stopPropagation(); + // если форма не прошла валидацию, то ничего делать не нужно + if (!cntrls.form.checkValidity()) { + return; + } + + let imageBase64 = ""; + // Получение выбранного пользователем изображения в виде base64 строки + // Если пользователь ничего не выбрал, то не нужно сохранять в БД + // дефолтное изображение + if (cntrls.imagePreview.src !== imagePlaceholder) { + // Загрузка содержимого атрибута src тэга img с id image-preview + // Здесь выполняется HTTP запрос с типом GET + const result = await fetch(cntrls.imagePreview.src); + // Получение из HTTP-ответа бинарного содержимого + const blob = await result.blob(); + // Получение base64 строки для файла + // Здесь выполняется Promise из функции readFile + // Promise позволяет писать линейный код для работы с асинхронными методами + // без использования обработчиков (callback) с помощью await + imageBase64 = await readFile(blob); + } + + // получение id строки для редактирования + // это значение содержится в скрытом input + const currentId = cntrls.lineId.value; + // если значение id не задано, + // то необходимо выполнить добавление записи + // иначе обновление записи + if (!currentId) { + await addLine( + cntrls.name.value, + cntrls.price.value, + cntrls.count.value, + imageBase64, + ); + } else { + await editLine( + currentId, + cntrls.name.value, + cntrls.price.value, + cntrls.count.value, + imageBase64, + ); + } + + // после выполнения добавления/обновления модальное окно скрывается + hideUpdateModal(); + }); +} + +// функция для получения содержимого файла в виде base64 строки +// https://ru.wikipedia.org/wiki/Base64 +async function readFile(file) { + const reader = new FileReader(); + + // создание Promise-объекта для использования функции + // с помощью await (асинхронно) без коллбэков (callback) + // https://learn.javascript.ru/promise + return new Promise((resolve, reject) => { + // 2. "Возвращаем" содержимое когда файл прочитан + // через вызов resolve + // Если не использовать Promise, то всю работу по взаимодействию + // с REST API пришлось бы делать в обработчике (callback) функции + // onloadend + reader.onloadend = () => { + const fileContent = reader.result; + // Здесь могла бы быть работа с REST API + // Чтение заканчивает выполняться здесь + resolve(fileContent); + }; + // 3. Возвращаем ошибку + reader.onerror = () => { + // Или здесь в случае ошибки + reject(new Error("oops, something went wrong with the file reader.")); + }; + // Шаг 1. Сначала читаем файл + // Чтение начинает выполняться здесь + reader.readAsDataURL(file); + }); +} + +// функция для обновления блока с превью выбранного изображения +async function updateImagePreview() { + // получение выбранного файла + // возможен выбор нескольких файлов, поэтому необходимо получить только первый + const file = cntrls.image.files[0]; + // чтение содержимого файла в виде base64 строки + const fileContent = await readFile(file); + console.info("base64 ", fileContent); + // обновление атрибута src для тега img с id image-preview + cntrls.imagePreview.src = fileContent; +} \ No newline at end of file diff --git a/js/validation.js b/js/validation.js new file mode 100644 index 0000000..e5641b6 --- /dev/null +++ b/js/validation.js @@ -0,0 +1,25 @@ +// модуль используется для валидации форма на странице + +function validation() { + // поиск всех форма с классом .needs-validation + const forms = document.querySelectorAll("form.needs-validation"); + + for (let i = 0; i < forms.length; i += 1) { + const form = forms[i]; + // для каждой формы добавляется обработчик события отправки + form.addEventListener("submit", (event) => { + // если форма не прошла валидацию + // то выключить стандартное действие + if (!form.checkValidity()) { + event.preventDefault(); + // предотвращает распространение preventDefault + // на другие объекты + event.stopPropagation(); + } + // добавляет к форме класс was-validated + form.classList.add("was-validated"); + }); + } +} + +export default validation; diff --git a/jsconfig.json b/jsconfig.json new file mode 100644 index 0000000..4803f5a --- /dev/null +++ b/jsconfig.json @@ -0,0 +1,14 @@ +{ + "compilerOptions": { + "module": "ESNext", + "moduleResolution": "Node", + "target": "ES2020", + "jsx": "preserve", + "strictNullChecks": true, + "strictFunctionTypes": true + }, + "exclude": [ + "node_modules", + "**/node_modules/*" + ] +} \ No newline at end of file diff --git a/login.html b/login.html index 7f288d8..f151681 100644 --- a/login.html +++ b/login.html @@ -8,7 +8,7 @@ - + diff --git a/package-lock.json b/package-lock.json index a6f1d40..684a443 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,12 +13,25 @@ "bootstrap": "5.3.2" }, "devDependencies": { + "eslint": "8.50.0", + "eslint-config-airbnb-base": "15.0.0", + "eslint-plugin-import": "2.28.1", "http-server": "14.1.1", + "json-server": "0.17.4", "npm-run-all": "4.1.5", "sass": "1.69.5", "vite": "4.4.9" } }, + "node_modules/@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/@esbuild/android-arm": { "version": "0.18.20", "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", @@ -371,6 +384,85 @@ "node": ">=12" } }, + "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", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.3.tgz", + "integrity": "sha512-yZzuIG+jnVu6hNSzFEN07e8BxF3uAzYtQb6uDkaYZLo6oYZDCq454c5kB8zxnzfCYyP4MIuyBn10L0DqwujTmA==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@eslint/eslintrc/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/@eslint/js": { + "version": "8.50.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.50.0.tgz", + "integrity": "sha512-NCC3zz2+nvYd+Ckfh87rA47zfu2QsQpvc6k1yzTk+b9KzRj0wkGa8LSoGOXN6Zv4lRf/EIoZ80biDh9HOI+RNQ==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, "node_modules/@fortawesome/fontawesome-free": { "version": "6.4.2", "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-6.4.2.tgz", @@ -380,6 +472,97 @@ "node": ">=6" } }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.13", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", + "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/config-array/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@humanwhocodes/config-array/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz", + "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==", + "dev": true + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/@popperjs/core": { "version": "2.11.8", "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", @@ -389,6 +572,71 @@ "url": "https://opencollective.com/popperjs" } }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.11.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", + "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -417,6 +665,12 @@ "node": ">= 8" } }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, "node_modules/array-buffer-byte-length": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", @@ -430,6 +684,86 @@ "url": "https://github.com/sponsors/ljharb" } }, + "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==", + "dev": true + }, + "node_modules/array-includes": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz", + "integrity": "sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.findlastindex": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz", + "integrity": "sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0", + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", + "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", + "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/arraybuffer.prototype.slice": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz", @@ -499,6 +833,72 @@ "node": ">=8" } }, + "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==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.5", + "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.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/body-parser/node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/bootstrap": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.2.tgz", @@ -539,6 +939,15 @@ "node": ">=8" } }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/call-bind": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", @@ -553,6 +962,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -596,6 +1014,20 @@ "fsevents": "~2.3.2" } }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -614,12 +1046,150 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": true, + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dev": true, + "dependencies": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/compression/node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/compression/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/compression/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true }, + "node_modules/confusing-browser-globals": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz", + "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==", + "dev": true + }, + "node_modules/connect-pause": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/connect-pause/-/connect-pause-0.1.1.tgz", + "integrity": "sha512-a1gSWQBQD73krFXdUEYJom2RTFrWUL3YvXDCRkyv//GVXc79cdW9MngtRuN9ih4FDKBtfJAJId+BbDuX+1rh2w==", + "dev": true, + "engines": { + "node": "*" + } + }, + "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==", + "dev": true, + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-disposition/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "dev": true + }, + "node_modules/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dev": true, + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, "node_modules/corser": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/corser/-/corser-2.0.1.tgz", @@ -654,6 +1224,12 @@ "ms": "^2.1.1" } }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, "node_modules/define-data-property": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", @@ -685,6 +1261,58 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "dev": true, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", @@ -694,6 +1322,19 @@ "is-arrayish": "^0.2.1" } }, + "node_modules/errorhandler": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/errorhandler/-/errorhandler-1.5.1.tgz", + "integrity": "sha512-rcOwbfvP1WTViVoUjcfZicVzjhjTuhSMntHh6mW3IrEiyE6mJyXvsToJUJGlGlw/2xU9P5whlWNGlIDVeCiT4A==", + "dev": true, + "dependencies": { + "accepts": "~1.3.7", + "escape-html": "~1.0.3" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/es-abstract": { "version": "1.22.3", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.3.tgz", @@ -761,6 +1402,15 @@ "node": ">= 0.4" } }, + "node_modules/es-shim-unscopables": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + } + }, "node_modules/es-to-primitive": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", @@ -815,6 +1465,21 @@ "@esbuild/win32-x64": "0.18.20" } }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true + }, "node_modules/escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", @@ -824,12 +1489,583 @@ "node": ">=0.8.0" } }, + "node_modules/eslint": { + "version": "8.50.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.50.0.tgz", + "integrity": "sha512-FOnOGSuFuFLv/Sa+FDVRZl4GGVAAFFi8LecRsI5a1tMO5HIE8nCm4ivAlzt4dT3ol/PaaGC0rJEEXQmHJBGoOg==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.2", + "@eslint/js": "8.50.0", + "@humanwhocodes/config-array": "^0.11.11", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-airbnb-base": { + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-15.0.0.tgz", + "integrity": "sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==", + "dev": true, + "dependencies": { + "confusing-browser-globals": "^1.0.10", + "object.assign": "^4.1.2", + "object.entries": "^1.1.5", + "semver": "^6.3.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "peerDependencies": { + "eslint": "^7.32.0 || ^8.2.0", + "eslint-plugin-import": "^2.25.2" + } + }, + "node_modules/eslint-config-airbnb-base/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "dev": true, + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" + } + }, + "node_modules/eslint-module-utils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz", + "integrity": "sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==", + "dev": true, + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.28.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.28.1.tgz", + "integrity": "sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.findlastindex": "^1.2.2", + "array.prototype.flat": "^1.3.1", + "array.prototype.flatmap": "^1.3.1", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.7", + "eslint-module-utils": "^2.8.0", + "has": "^1.0.3", + "is-core-module": "^2.13.0", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.6", + "object.groupby": "^1.0.0", + "object.values": "^1.1.6", + "semver": "^6.3.1", + "tsconfig-paths": "^3.14.2" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" + } + }, + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-import/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/eslint/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/eslint/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/eslint/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/eslint/node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/eventemitter3": { "version": "4.0.7", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", "dev": true }, + "node_modules/express": { + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "dev": true, + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express-urlrewrite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/express-urlrewrite/-/express-urlrewrite-1.4.0.tgz", + "integrity": "sha512-PI5h8JuzoweS26vFizwQl6UTF25CAHSggNv0J25Dn/IKZscJHWZzPrI5z2Y2jgOzIaw2qh8l6+/jUcig23Z2SA==", + "dev": true, + "dependencies": { + "debug": "*", + "path-to-regexp": "^1.0.3" + } + }, + "node_modules/express-urlrewrite/node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", + "dev": true + }, + "node_modules/express-urlrewrite/node_modules/path-to-regexp": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", + "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", + "dev": true, + "dependencies": { + "isarray": "0.0.1" + } + }, + "node_modules/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==", + "dev": true, + "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" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/express/node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/express/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, "node_modules/fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", @@ -842,6 +2078,75 @@ "node": ">=8" } }, + "node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "dev": true, + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.9", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", + "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", + "dev": true + }, "node_modules/follow-redirects": { "version": "1.15.3", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz", @@ -871,6 +2176,30 @@ "is-callable": "^1.1.3" } }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, "node_modules/fsevents": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", @@ -921,6 +2250,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, "node_modules/get-intrinsic": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", @@ -952,6 +2290,26 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/glob-parent": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", @@ -964,6 +2322,21 @@ "node": ">= 6" } }, + "node_modules/globals": { + "version": "13.23.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", + "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/globalthis": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", @@ -997,6 +2370,21 @@ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "dev": true }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "node_modules/has": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.4.tgz", + "integrity": "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, "node_modules/has-bigints": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", @@ -1105,6 +2493,22 @@ "node": ">=12" } }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/http-proxy": { "version": "1.18.1", "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", @@ -1158,12 +2562,62 @@ "node": ">=0.10.0" } }, + "node_modules/ignore": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", + "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, "node_modules/immutable": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.4.tgz", "integrity": "sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==", "dev": true }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, "node_modules/internal-slot": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.6.tgz", @@ -1178,6 +2632,15 @@ "node": ">= 0.4" } }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, "node_modules/is-array-buffer": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", @@ -1286,6 +2749,15 @@ "node": ">=0.10.0" } }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -1334,6 +2806,21 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-promise": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", + "dev": true + }, "node_modules/is-regex": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", @@ -1431,12 +2918,124 @@ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true }, + "node_modules/jju": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/jju/-/jju-1.4.0.tgz", + "integrity": "sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, "node_modules/json-parse-better-errors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", "dev": true }, + "node_modules/json-parse-helpfulerror": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/json-parse-helpfulerror/-/json-parse-helpfulerror-1.0.3.tgz", + "integrity": "sha512-XgP0FGR77+QhUxjXkwOMkC94k3WtqEBfcnjWqhRd82qTat4SWKRE+9kUnynz/shm3I4ea2+qISvTIeGTNU7kJg==", + "dev": true, + "dependencies": { + "jju": "^1.1.0" + } + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-server": { + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/json-server/-/json-server-0.17.4.tgz", + "integrity": "sha512-bGBb0WtFuAKbgI7JV3A864irWnMZSvBYRJbohaOuatHwKSRFUfqtQlrYMrB6WbalXy/cJabyjlb7JkHli6dYjQ==", + "dev": true, + "dependencies": { + "body-parser": "^1.19.0", + "chalk": "^4.1.2", + "compression": "^1.7.4", + "connect-pause": "^0.1.1", + "cors": "^2.8.5", + "errorhandler": "^1.5.1", + "express": "^4.17.1", + "express-urlrewrite": "^1.4.0", + "json-parse-helpfulerror": "^1.0.3", + "lodash": "^4.17.21", + "lodash-id": "^0.14.1", + "lowdb": "^1.0.0", + "method-override": "^3.0.0", + "morgan": "^1.10.0", + "nanoid": "^3.1.23", + "please-upgrade-node": "^3.2.0", + "pluralize": "^8.0.0", + "server-destroy": "^1.0.1", + "yargs": "^17.0.1" + }, + "bin": { + "json-server": "lib/cli/bin.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/load-json-file": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", @@ -1452,12 +3051,67 @@ "node": ">=4" } }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "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==", "dev": true }, + "node_modules/lodash-id": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/lodash-id/-/lodash-id-0.14.1.tgz", + "integrity": "sha512-ikQPBTiq/d5m6dfKQlFdIXFzvThPi2Be9/AHxktOnDSfSxE1j9ICbBT5Elk1ke7HSTgM38LHTpmJovo9/klnLg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/lowdb": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lowdb/-/lowdb-1.0.0.tgz", + "integrity": "sha512-2+x8esE/Wb9SQ1F9IHaYWfsC9FIecLOPrK4g17FGEayjUWH172H6nwicRovGvSE2CPZouc2MCIqCI7h9d+GftQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.3", + "is-promise": "^2.1.0", + "lodash": "4", + "pify": "^3.0.0", + "steno": "^0.4.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/memorystream": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", @@ -1467,6 +3121,51 @@ "node": ">= 0.10.0" } }, + "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==", + "dev": true + }, + "node_modules/method-override": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/method-override/-/method-override-3.0.0.tgz", + "integrity": "sha512-IJ2NNN/mSl9w3kzWB92rcdHpz+HjkxhDJWNDBqSlas+zQdP8wBiJzITPg08M/k2uVvMow7Sk41atndNtt/PHSA==", + "dev": true, + "dependencies": { + "debug": "3.1.0", + "methods": "~1.1.2", + "parseurl": "~1.3.2", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/method-override/node_modules/debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/method-override/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/mime": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", @@ -1479,6 +3178,27 @@ "node": ">=4" } }, + "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==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "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==", + "dev": true, + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -1512,6 +3232,49 @@ "mkdirp": "bin/cmd.js" } }, + "node_modules/morgan": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz", + "integrity": "sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==", + "dev": true, + "dependencies": { + "basic-auth": "~2.0.1", + "debug": "2.6.9", + "depd": "~2.0.0", + "on-finished": "~2.3.0", + "on-headers": "~1.0.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/morgan/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/morgan/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "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==", + "dev": true, + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -1536,6 +3299,21 @@ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", @@ -1650,6 +3428,15 @@ "node": ">=4" } }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/object-inspect": { "version": "1.13.1", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", @@ -1686,6 +3473,96 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/object.entries": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.7.tgz", + "integrity": "sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.7.tgz", + "integrity": "sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.groupby": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.1.tgz", + "integrity": "sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1" + } + }, + "node_modules/object.values": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.7.tgz", + "integrity": "sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, "node_modules/opener": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", @@ -1695,6 +3572,65 @@ "opener": "bin/opener-bin.js" } }, + "node_modules/optionator": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "dev": true, + "dependencies": { + "@aashutoshrathi/word-wrap": "^1.2.3", + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/parse-json": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", @@ -1708,6 +3644,33 @@ "node": ">=4" } }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/path-key": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", @@ -1723,6 +3686,12 @@ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", + "dev": true + }, "node_modules/path-type": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", @@ -1774,6 +3743,24 @@ "node": ">=4" } }, + "node_modules/please-upgrade-node": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz", + "integrity": "sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==", + "dev": true, + "dependencies": { + "semver-compare": "^1.0.0" + } + }, + "node_modules/pluralize": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", + "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/portfinder": { "version": "1.0.32", "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.32.tgz", @@ -1816,6 +3803,37 @@ "node": "^10 || ^12 || >=14" } }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dev": true, + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/qs": { "version": "6.11.2", "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", @@ -1831,6 +3849,62 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/read-pkg": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", @@ -1874,6 +3948,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "engines": { + "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", @@ -1897,6 +3980,40 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/rollup": { "version": "3.29.4", "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz", @@ -1913,6 +4030,29 @@ "fsevents": "~2.3.2" } }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, "node_modules/safe-array-concat": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.1.tgz", @@ -1989,6 +4129,72 @@ "semver": "bin/semver" } }, + "node_modules/semver-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", + "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==", + "dev": true + }, + "node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dev": true, + "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" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "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==", + "dev": true, + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/server-destroy": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/server-destroy/-/server-destroy-1.0.1.tgz", + "integrity": "sha512-rb+9B5YBIEzYcD6x2VKidaa+cqYBJQKnU4oe4E3ANwRRN56yk/ua1YCJT1n21NTS8w6CcOclAKNP3PhdCXKYtQ==", + "dev": true + }, "node_modules/set-function-length": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", @@ -2018,6 +4224,12 @@ "node": ">= 0.4" } }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, "node_modules/shebang-command": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", @@ -2103,6 +4315,38 @@ "integrity": "sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==", "dev": true }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/steno": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/steno/-/steno-0.4.4.tgz", + "integrity": "sha512-EEHMVYHNXFHfGtgjNITnka0aHhiAlo93F7z2/Pwd+g0teG9CnM3JIINM7hVVB5/rhw9voufD7Wukwgtw2uqh6w==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.3" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/string.prototype.padend": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.5.tgz", @@ -2165,6 +4409,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/strip-bom": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", @@ -2174,6 +4430,18 @@ "node": ">=4" } }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -2198,6 +4466,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "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 + }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -2210,6 +4484,64 @@ "node": ">=8.0" } }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tsconfig-paths": { + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz", + "integrity": "sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==", + "dev": true, + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/typed-array-buffer": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", @@ -2302,12 +4634,39 @@ "node": ">= 0.8.0" } }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, "node_modules/url-join": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==", "dev": true }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, "node_modules/validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", @@ -2318,6 +4677,15 @@ "spdx-expression-parse": "^3.0.0" } }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/vite": { "version": "4.4.9", "resolved": "https://registry.npmjs.org/vite/-/vite-4.4.9.tgz", @@ -2431,6 +4799,77 @@ "funding": { "url": "https://github.com/sponsors/ljharb" } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } } } } diff --git a/package.json b/package.json index 4d3a9f0..28915c1 100644 --- a/package.json +++ b/package.json @@ -4,9 +4,12 @@ "description": "", "main": "login.html", "scripts": { - "start": "vite", + "vite": "vite", "serve": "http-server -p 3000 ./", - "test": "echo \"Error: no test specified\" && exit 1" + "build": "vite build", + "rest": "json-server --watch data.json -p 8082", + "dev": "npm-run-all --parallel rest vite", + "prod": "npm-run-all build --parallel serve rest" }, "dependencies": { "@fortawesome/fontawesome-free": "6.4.2", @@ -15,8 +18,12 @@ }, "devDependencies": { "http-server": "14.1.1", + "json-server": "0.17.4", "npm-run-all": "4.1.5", + "eslint": "8.50.0", + "eslint-config-airbnb-base": "15.0.0", + "eslint-plugin-import": "2.28.1", "sass": "1.69.5", "vite": "4.4.9" } -} +} \ No newline at end of file diff --git a/product.html b/product.html index bb9418b..73bf848 100644 --- a/product.html +++ b/product.html @@ -7,8 +7,8 @@ - - + +
diff --git a/profile.html b/profile.html index e5d3f3e..0b7c53e 100644 --- a/profile.html +++ b/profile.html @@ -7,8 +7,8 @@ - - + +
@@ -59,12 +59,12 @@
-

Итого

-

120 290 ₽

+

Итого

+

120 290 ₽

-

Товаров

-

2 шт.

+

Товаров

+

2 шт.

diff --git a/register.html b/register.html index 02f01df..048e381 100644 --- a/register.html +++ b/register.html @@ -7,7 +7,7 @@ - + diff --git a/settings.html b/settings.html index 36f62db..e4e62ef 100644 --- a/settings.html +++ b/settings.html @@ -7,7 +7,8 @@ - + +
diff --git a/vite.config.js b/vite.config.js new file mode 100644 index 0000000..06b7a08 --- /dev/null +++ b/vite.config.js @@ -0,0 +1,22 @@ +import { resolve } from "path"; +// eslint-disable-next-line import/no-extraneous-dependencies +import { defineConfig } from "vite"; + +export default defineConfig({ + build: { + sourcemap: true, + emptyOutDir: true, + rollupOptions: { + input: { + main: resolve(__dirname, "index.html"), + login: resolve(__dirname, "login.html"), + register: resolve(__dirname, "register.html"), + profile: resolve(__dirname, "profile.html"), + catalog: resolve(__dirname, "catalog.html"), + admin: resolve(__dirname, "admin.html"), + product: resolve(__dirname, "product.html"), + settings: resolve(__dirname, "settings.html"), + }, + }, + }, +});