From 47f05f8b55f832056bb908bce2ccdf9043693339 Mon Sep 17 00:00:00 2001 From: cygan3107 Date: Fri, 15 Nov 2024 15:37:37 +0100 Subject: [PATCH 01/13] commit --- routes/api/contacts.js | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/routes/api/contacts.js b/routes/api/contacts.js index a60ebd69231..29cdde0efe3 100644 --- a/routes/api/contacts.js +++ b/routes/api/contacts.js @@ -1,25 +1,25 @@ -const express = require('express') +const express = require("express"); -const router = express.Router() +const router = express.Router(); -router.get('/', async (req, res, next) => { - res.json({ message: 'template message' }) -}) +router.get("/", async (req, res, next) => { + res.json({ message: "helo world" }); +}); -router.get('/:contactId', async (req, res, next) => { - res.json({ message: 'template message' }) -}) +router.get("/:contactId", async (req, res, next) => { + res.json({ message: "template message" }); +}); -router.post('/', async (req, res, next) => { - res.json({ message: 'template message' }) -}) +router.post("/", async (req, res, next) => { + res.json({ message: "template message" }); +}); -router.delete('/:contactId', async (req, res, next) => { - res.json({ message: 'template message' }) -}) +router.delete("/:contactId", async (req, res, next) => { + res.json({ message: "template message" }); +}); -router.put('/:contactId', async (req, res, next) => { - res.json({ message: 'template message' }) -}) +router.put("/:contactId", async (req, res, next) => { + res.json({ message: "template message" }); +}); -module.exports = router +module.exports = router; From 86c1e3760081b3533a0cc18fcd534b8186feb8e0 Mon Sep 17 00:00:00 2001 From: cygan3107 Date: Fri, 15 Nov 2024 16:27:38 +0100 Subject: [PATCH 02/13] done --- app.js | 34 +- models/contacts.js | 81 +- package-lock.json | 2620 +++++++++++++--------------------------- package.json | 10 +- routes/api/contacts.js | 63 +- server.js | 4 +- 6 files changed, 1029 insertions(+), 1783 deletions(-) diff --git a/app.js b/app.js index 40fd9bc167f..bc9e12e919a 100644 --- a/app.js +++ b/app.js @@ -1,25 +1,29 @@ -const express = require('express') -const logger = require('morgan') -const cors = require('cors') +const express = require("express"); +const logger = require("morgan"); +const cors = require("cors"); -const contactsRouter = require('./routes/api/contacts') +const contactsRouter = require("./routes/api/contacts"); -const app = express() +const app = express(); -const formatsLogger = app.get('env') === 'development' ? 'dev' : 'short' +const formatsLogger = app.get("env") === "development" ? "dev" : "short"; -app.use(logger(formatsLogger)) -app.use(cors()) -app.use(express.json()) +app.use(logger(formatsLogger)); +app.use(cors()); +app.use(express.json()); -app.use('/api/contacts', contactsRouter) +app.use("/api/contacts", contactsRouter); app.use((req, res) => { - res.status(404).json({ message: 'Not found' }) -}) + res.status(404).json({ message: "Not found" }); +}); app.use((err, req, res, next) => { - res.status(500).json({ message: err.message }) -}) + res.status(500).json({ message: err.message }); +}); -module.exports = app +app.listen(3000, () => { + console.log("Server is running on port 3000"); +}); + +module.exports = app; diff --git a/models/contacts.js b/models/contacts.js index 409d11c7c09..575db6f4187 100644 --- a/models/contacts.js +++ b/models/contacts.js @@ -1,14 +1,83 @@ // const fs = require('fs/promises') -const listContacts = async () => {} +const fs = require("fs").promises; +const path = require("path"); +const contactsPath = path.join(__dirname, "contacts.json"); -const getContactById = async (contactId) => {} +const listContacts = async () => { + try { + const data = await fs.readFile(contactsPath); + return JSON.parse(data); + } catch (error) { + console.error("Error reading or parsing file:", error); + throw error; + } +}; -const removeContact = async (contactId) => {} +const getContactById = async (contactId) => { + try { + const data = await fs.readFile(contactsPath); + const contacts = JSON.parse(data); + const contact = contacts.find((contact) => contact.id === contactId); + return contact; + } catch (error) { + console.error("Error reading or parsing file:", error); + throw error; + } +}; -const addContact = async (body) => {} +const removeContact = async (contactId) => { + try { + const data = await fs.readFile(contactsPath); + const contacts = JSON.parse(data); + const contact = contacts.find((contact) => contact.id === contactId); + const newContacts = contacts.filter((contact) => contact.id !== contactId); + await fs.writeFile(contactsPath, JSON.stringify(newContacts)); + return contact; + } catch (error) { + console.error("Error reading or parsing file:", error); + throw error; + } +}; -const updateContact = async (contactId, body) => {} +const addContact = async (body) => { + try { + const { name, email, phone } = body; + const data = await fs.readFile(contactsPath); + const contacts = JSON.parse(data); + const id = contacts.length + 1; + const contactToAdd = { + id: String(id), + name, + email, + phone, + }; + contacts.push(contactToAdd); + await fs.writeFile(contactsPath, JSON.stringify(contacts)); + } catch (error) { + console.error("Error reading or parsing file:", error); + throw error; + } +}; + +const updateContact = async (contactId, body) => { + try { + const { name, email, phone } = body; + const data = await fs.readFile(contactsPath); + const contacts = JSON.parse(data); + const contact = contacts.find((contact) => contact.id === contactId); + if (contact) { + contact.name = name; + contact.email = email; + contact.phone = phone; + } + await fs.writeFile(contactsPath, JSON.stringify(contacts)); + return contact; + } catch (error) { + console.error("Error reading or parsing file:", error); + throw error; + } +}; module.exports = { listContacts, @@ -16,4 +85,4 @@ module.exports = { removeContact, addContact, updateContact, -} +}; diff --git a/package-lock.json b/package-lock.json index e6d047044e5..4ff71c1ba93 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,10 +8,12 @@ "name": "template", "version": "0.0.0", "dependencies": { - "cors": "2.8.5", + "cors": "^2.8.5", "cross-env": "7.0.3", - "express": "4.17.1", - "morgan": "1.10.0" + "express": "^4.21.1", + "joi": "^17.13.3", + "morgan": "^1.10.0", + "nanoid": "^5.0.8" }, "devDependencies": { "eslint": "7.19.0", @@ -20,7 +22,7 @@ "eslint-plugin-import": "2.25.3", "eslint-plugin-node": "^11.1.0", "eslint-plugin-promise": "5.2.0", - "nodemon": "2.0.15" + "nodemon": "^2.0.22" } }, "node_modules/@babel/code-frame": { @@ -141,27 +143,37 @@ "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/@sindresorhus/is": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", - "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", - "dev": true, - "engines": { - "node": ">=6" + "node_modules/@hapi/hoek": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", + "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==" + }, + "node_modules/@hapi/topo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", + "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", + "dependencies": { + "@hapi/hoek": "^9.0.0" } }, - "node_modules/@szmarczak/http-timer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", - "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", - "dev": true, + "node_modules/@sideway/address": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz", + "integrity": "sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==", "dependencies": { - "defer-to-connect": "^1.0.1" - }, - "engines": { - "node": ">=6" + "@hapi/hoek": "^9.0.0" } }, + "node_modules/@sideway/formula": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", + "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==" + }, + "node_modules/@sideway/pinpoint": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", + "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==" + }, "node_modules/@types/json5": { "version": "0.0.29", "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", @@ -175,12 +187,12 @@ "dev": true }, "node_modules/accepts": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", - "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", "dependencies": { - "mime-types": "~2.1.24", - "negotiator": "0.6.2" + "mime-types": "~2.1.34", + "negotiator": "0.6.3" }, "engines": { "node": ">= 0.6" @@ -223,15 +235,6 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/ansi-align": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", - "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", - "dev": true, - "dependencies": { - "string-width": "^4.1.0" - } - }, "node_modules/ansi-colors": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", @@ -364,23 +367,26 @@ } }, "node_modules/body-parser": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", - "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "version": "1.20.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", + "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", "dependencies": { - "bytes": "3.1.0", - "content-type": "~1.0.4", + "bytes": "3.1.2", + "content-type": "~1.0.5", "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.7.2", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.7.0", - "raw-body": "2.4.0", - "type-is": "~1.6.17" + "on-finished": "2.4.1", + "qs": "6.13.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" }, "engines": { - "node": ">= 0.8" + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" } }, "node_modules/body-parser/node_modules/debug": { @@ -394,40 +400,17 @@ "node_modules/body-parser/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, - "node_modules/boxen": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz", - "integrity": "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==", - "dev": true, + "node_modules/body-parser/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==", "dependencies": { - "ansi-align": "^3.0.0", - "camelcase": "^6.2.0", - "chalk": "^4.1.0", - "cli-boxes": "^2.2.1", - "string-width": "^4.2.2", - "type-fest": "^0.20.2", - "widest-line": "^3.1.0", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=10" + "ee-first": "1.1.1" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/boxen/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": ">= 0.8" } }, "node_modules/brace-expansion": { @@ -441,75 +424,38 @@ } }, "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, "dependencies": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" }, "engines": { "node": ">=8" } }, "node_modules/bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "engines": { "node": ">= 0.8" } }, - "node_modules/cacheable-request": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", - "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", - "dev": true, - "dependencies": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^3.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^4.1.0", - "responselike": "^1.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cacheable-request/node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dev": true, + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=8" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cacheable-request/node_modules/lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", - "dev": true, "engines": { - "node": ">=8" - } - }, - "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -524,18 +470,6 @@ "node": ">=6" } }, - "node_modules/camelcase": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.1.tgz", - "integrity": "sha512-tVI4q5jjFV5CavAU8DXfza/TJcZutVKo/5Foskmsqcm0MsL91moHvwiGNnqaa2o6PF/7yT5ikDRcVcl8Rj6LCA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -573,33 +507,6 @@ "fsevents": "~2.3.2" } }, - "node_modules/ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "dev": true - }, - "node_modules/cli-boxes": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", - "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", - "dev": true, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/clone-response": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", - "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", - "dev": true, - "dependencies": { - "mimic-response": "^1.0.0" - } - }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -624,46 +531,48 @@ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, - "node_modules/configstore": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", - "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", - "dev": true, - "dependencies": { - "dot-prop": "^5.2.0", - "graceful-fs": "^4.1.2", - "make-dir": "^3.0.0", - "unique-string": "^2.0.0", - "write-file-atomic": "^3.0.0", - "xdg-basedir": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/content-disposition": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", - "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", "dependencies": { - "safe-buffer": "5.1.2" + "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==", + "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.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", "engines": { "node": ">= 0.6" } }, "node_modules/cookie": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", - "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==", + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", + "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", "engines": { "node": ">= 0.6" } @@ -715,15 +624,6 @@ "node": ">= 8" } }, - "node_modules/crypto-random-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", - "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/debug": { "version": "4.3.3", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", @@ -741,38 +641,27 @@ } } }, - "node_modules/decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", - "dev": true, - "dependencies": { - "mimic-response": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "dev": true, - "engines": { - "node": ">=4.0.0" - } - }, "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/defer-to-connect": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", - "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", - "dev": true + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/define-properties": { "version": "1.1.3", @@ -787,17 +676,21 @@ } }, "node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", "engines": { - "node": ">= 0.6" + "node": ">= 0.8" } }, "node_modules/destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } }, "node_modules/doctrine": { "version": "3.0.0", @@ -811,24 +704,6 @@ "node": ">=6.0.0" } }, - "node_modules/dot-prop": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", - "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", - "dev": true, - "dependencies": { - "is-obj": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/duplexer3": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", - "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", - "dev": true - }, "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -841,22 +716,13 @@ "dev": true }, "node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", "engines": { "node": ">= 0.8" } }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, - "dependencies": { - "once": "^1.4.0" - } - }, "node_modules/enquirer": { "version": "2.3.6", "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", @@ -903,6 +769,25 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/es-to-primitive": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", @@ -920,19 +805,10 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/escape-goat": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", - "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" }, "node_modules/escape-string-regexp": { "version": "1.0.5", @@ -1180,9 +1056,9 @@ } }, "node_modules/eslint-plugin-node/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "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" @@ -1345,43 +1221,44 @@ "node_modules/etag": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", "engines": { "node": ">= 0.6" } }, "node_modules/express": { - "version": "4.17.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", - "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "version": "4.21.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.21.1.tgz", + "integrity": "sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==", "dependencies": { - "accepts": "~1.3.7", + "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.19.0", - "content-disposition": "0.5.3", + "body-parser": "1.20.3", + "content-disposition": "0.5.4", "content-type": "~1.0.4", - "cookie": "0.4.0", + "cookie": "0.7.1", "cookie-signature": "1.0.6", "debug": "2.6.9", - "depd": "~1.1.2", - "encodeurl": "~1.0.2", + "depd": "2.0.0", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", - "finalhandler": "~1.1.2", + "finalhandler": "1.3.1", "fresh": "0.5.2", - "merge-descriptors": "1.0.1", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.3", "methods": "~1.1.2", - "on-finished": "~2.3.0", + "on-finished": "2.4.1", "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.5", - "qs": "6.7.0", + "path-to-regexp": "0.1.10", + "proxy-addr": "~2.0.7", + "qs": "6.13.0", "range-parser": "~1.2.1", - "safe-buffer": "5.1.2", - "send": "0.17.1", - "serve-static": "1.14.1", - "setprototypeof": "1.1.1", - "statuses": "~1.5.0", + "safe-buffer": "5.2.1", + "send": "0.19.0", + "serve-static": "1.16.2", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", "type-is": "~1.6.18", "utils-merge": "1.0.1", "vary": "~1.1.2" @@ -1403,6 +1280,36 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, + "node_modules/express/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==", + "dependencies": { + "ee-first": "1.1.1" + }, + "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==", + "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", @@ -1434,9 +1341,9 @@ } }, "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, "dependencies": { "to-regex-range": "^5.0.1" @@ -1446,16 +1353,16 @@ } }, "node_modules/finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", + "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", "dependencies": { "debug": "2.6.9", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", - "on-finished": "~2.3.0", + "on-finished": "2.4.1", "parseurl": "~1.3.3", - "statuses": "~1.5.0", + "statuses": "2.0.1", "unpipe": "~1.0.0" }, "engines": { @@ -1473,7 +1380,18 @@ "node_modules/finalhandler/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/finalhandler/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==", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } }, "node_modules/find-up": { "version": "2.1.0", @@ -1517,7 +1435,7 @@ "node_modules/fresh": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", "engines": { "node": ">= 0.6" } @@ -1543,10 +1461,12 @@ } }, "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/functional-red-black-tree": { "version": "1.0.1", @@ -1555,31 +1475,23 @@ "dev": true }, "node_modules/get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", - "dev": true, + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/get-symbol-description": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", @@ -1628,21 +1540,6 @@ "node": ">= 6" } }, - "node_modules/global-dirs": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.0.tgz", - "integrity": "sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA==", - "dev": true, - "dependencies": { - "ini": "2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/globals": { "version": "12.4.0", "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", @@ -1658,34 +1555,17 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/got": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", - "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", - "dev": true, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", "dependencies": { - "@sindresorhus/is": "^0.14.0", - "@szmarczak/http-timer": "^1.1.2", - "cacheable-request": "^6.0.0", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^4.1.0", - "lowercase-keys": "^1.0.1", - "mimic-response": "^1.0.1", - "p-cancelable": "^1.0.0", - "to-readable-stream": "^1.0.0", - "url-parse-lax": "^3.0.0" + "get-intrinsic": "^1.1.3" }, - "engines": { - "node": ">=8.6" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/graceful-fs": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", - "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", - "dev": true - }, "node_modules/has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", @@ -1716,11 +1596,32 @@ "node": ">=8" } }, - "node_modules/has-symbols": { + "node_modules/has-property-descriptors": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", - "dev": true, + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", "engines": { "node": ">= 0.4" }, @@ -1743,34 +1644,30 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/has-yarn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", - "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==", - "dev": true, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dependencies": { + "function-bind": "^1.1.2" + }, "engines": { - "node": ">=8" + "node": ">= 0.4" } }, - "node_modules/http-cache-semantics": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", - "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", - "dev": true - }, "node_modules/http-errors": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", - "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" }, "engines": { - "node": ">= 0.6" + "node": ">= 0.8" } }, "node_modules/iconv-lite": { @@ -1815,15 +1712,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/import-lazy": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", - "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", @@ -1844,18 +1732,9 @@ } }, "node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" - }, - "node_modules/ini": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", - "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", - "dev": true, - "engines": { - "node": ">=10" - } + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "node_modules/internal-slot": { "version": "1.0.3", @@ -1931,18 +1810,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", - "dev": true, - "dependencies": { - "ci-info": "^2.0.0" - }, - "bin": { - "is-ci": "bin.js" - } - }, "node_modules/is-core-module": { "version": "2.8.0", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", @@ -2000,22 +1867,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-installed-globally": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", - "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", - "dev": true, - "dependencies": { - "global-dirs": "^3.0.0", - "is-path-inside": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-negative-zero": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", @@ -2028,18 +1879,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-npm": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz", - "integrity": "sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -2064,24 +1903,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "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-regex": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", @@ -2137,12 +1958,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true - }, "node_modules/is-weakref": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", @@ -2155,17 +1970,23 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-yarn-global": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", - "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==", - "dev": true - }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" }, + "node_modules/joi": { + "version": "17.13.3", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.13.3.tgz", + "integrity": "sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==", + "dependencies": { + "@hapi/hoek": "^9.3.0", + "@hapi/topo": "^5.1.0", + "@sideway/address": "^4.1.5", + "@sideway/formula": "^3.0.1", + "@sideway/pinpoint": "^2.0.0" + } + }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -2185,12 +2006,6 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/json-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", - "dev": true - }, "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -2204,9 +2019,9 @@ "dev": true }, "node_modules/json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "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" @@ -2215,27 +2030,6 @@ "json5": "lib/cli.js" } }, - "node_modules/keyv": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", - "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", - "dev": true, - "dependencies": { - "json-buffer": "3.0.0" - } - }, - "node_modules/latest-version": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", - "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", - "dev": true, - "dependencies": { - "package-json": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", @@ -2274,63 +2068,21 @@ "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", "dev": true }, - "node_modules/lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/make-dir/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", "engines": { "node": ">= 0.6" } }, "node_modules/merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, "node_modules/methods": { "version": "1.1.2", @@ -2352,37 +2104,28 @@ } }, "node_modules/mime-db": { - "version": "1.51.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", - "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==", + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "engines": { "node": ">= 0.6" } }, "node_modules/mime-types": { - "version": "2.1.34", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", - "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dependencies": { - "mime-db": "1.51.0" + "mime-db": "1.52.0" }, "engines": { "node": ">= 0.6" } }, - "node_modules/mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "dependencies": { "brace-expansion": "^1.1.7" @@ -2392,10 +2135,13 @@ } }, "node_modules/minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/morgan": { "version": "1.10.0", @@ -2420,14 +2166,6 @@ "ms": "2.0.0" } }, - "node_modules/morgan/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==", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/morgan/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -2439,6 +2177,23 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, + "node_modules/nanoid": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.0.8.tgz", + "integrity": "sha512-TcJPw+9RV9dibz1hHUzlLVy8N4X9TnwirAjrU08Juo6BNKggzVfP2ZJ/3ZUSq15Xl5i85i+Z89XBO90pB2PghQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.js" + }, + "engines": { + "node": "^18 || >=20" + } + }, "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -2446,30 +2201,29 @@ "dev": true }, "node_modules/negotiator": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", - "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", "engines": { "node": ">= 0.6" } }, "node_modules/nodemon": { - "version": "2.0.15", - "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.15.tgz", - "integrity": "sha512-gdHMNx47Gw7b3kWxJV64NI+Q5nfl0y5DgDbiVtShiwa7Z0IZ07Ll4RLFo6AjrhzMtoEZn5PDE3/c2AbVsiCkpA==", + "version": "2.0.22", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.22.tgz", + "integrity": "sha512-B8YqaKMmyuCO7BowF1Z1/mkPqLk6cs/l63Ojtd6otKjMx47Dq1utxfRxcavH1I7VSaL8n5BUaoutadnsX3AAVQ==", "dev": true, - "hasInstallScript": true, "dependencies": { "chokidar": "^3.5.2", "debug": "^3.2.7", "ignore-by-default": "^1.0.1", - "minimatch": "^3.0.4", + "minimatch": "^3.1.2", "pstree.remy": "^1.1.8", "semver": "^5.7.1", + "simple-update-notifier": "^1.0.7", "supports-color": "^5.5.0", "touch": "^3.1.0", - "undefsafe": "^2.0.5", - "update-notifier": "^5.1.0" + "undefsafe": "^2.0.5" }, "bin": { "nodemon": "bin/nodemon.js" @@ -2501,9 +2255,9 @@ } }, "node_modules/nodemon/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, "bin": { "semver": "bin/semver" @@ -2545,15 +2299,6 @@ "node": ">=0.10.0" } }, - "node_modules/normalize-url": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", - "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -2563,10 +2308,12 @@ } }, "node_modules/object-inspect": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.1.tgz", - "integrity": "sha512-If7BjFlpkzzBeV1cqgT3OSWT3azyoxDGajR+iGnFBfVV2EWyDyWaZZW2ERDjUaY2QM8i5jI3Sj7mhsM4DDAqWA==", - "dev": true, + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz", + "integrity": "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==", + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -2660,15 +2407,6 @@ "node": ">= 0.8.0" } }, - "node_modules/p-cancelable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", - "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/p-limit": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", @@ -2702,30 +2440,6 @@ "node": ">=4" } }, - "node_modules/package-json": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", - "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", - "dev": true, - "dependencies": { - "got": "^9.6.0", - "registry-auth-token": "^4.0.0", - "registry-url": "^5.0.0", - "semver": "^6.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/package-json/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -2779,9 +2493,9 @@ "dev": true }, "node_modules/path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz", + "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==" }, "node_modules/picomatch": { "version": "2.3.0", @@ -2816,15 +2530,6 @@ "node": ">= 0.8.0" } }, - "node_modules/prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/progress": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", @@ -2852,16 +2557,6 @@ "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", "dev": true }, - "node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, "node_modules/punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", @@ -2871,24 +2566,18 @@ "node": ">=6" } }, - "node_modules/pupa": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz", - "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==", - "dev": true, + "node_modules/qs": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", "dependencies": { - "escape-goat": "^2.0.0" + "side-channel": "^1.0.6" }, - "engines": { - "node": ">=8" - } - }, - "node_modules/qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", "engines": { "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/range-parser": { @@ -2900,12 +2589,12 @@ } }, "node_modules/raw-body": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", - "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "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==", "dependencies": { - "bytes": "3.1.0", - "http-errors": "1.7.2", + "bytes": "3.1.2", + "http-errors": "2.0.0", "iconv-lite": "0.4.24", "unpipe": "1.0.0" }, @@ -2913,36 +2602,6 @@ "node": ">= 0.8" } }, - "node_modules/rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dev": true, - "dependencies": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "bin": { - "rc": "cli.js" - } - }, - "node_modules/rc/node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true - }, - "node_modules/rc/node_modules/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", @@ -2967,30 +2626,6 @@ "url": "https://github.com/sponsors/mysticatea" } }, - "node_modules/registry-auth-token": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz", - "integrity": "sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw==", - "dev": true, - "dependencies": { - "rc": "^1.2.8" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/registry-url": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", - "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", - "dev": true, - "dependencies": { - "rc": "^1.2.8" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/require-from-string": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", @@ -3022,15 +2657,6 @@ "node": ">=4" } }, - "node_modules/responselike": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", - "dev": true, - "dependencies": { - "lowercase-keys": "^1.0.0" - } - }, "node_modules/rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", @@ -3056,60 +2682,36 @@ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, - "node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/semver-diff": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", - "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", - "dev": true, - "dependencies": { - "semver": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/semver-diff/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "dev": true, "bin": { "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, "node_modules/send": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", - "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", + "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", "dependencies": { "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", + "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": "~1.7.2", + "http-errors": "2.0.0", "mime": "1.6.0", - "ms": "2.1.1", - "on-finished": "~2.3.0", + "ms": "2.1.3", + "on-finished": "2.4.1", "range-parser": "~1.2.1", - "statuses": "~1.5.0" + "statuses": "2.0.1" }, "engines": { "node": ">= 0.8.0" @@ -3126,31 +2728,66 @@ "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": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/send/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==", + "engines": { + "node": ">= 0.8" + } }, "node_modules/send/node_modules/ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/send/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==", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } }, "node_modules/serve-static": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", - "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", + "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", "dependencies": { - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "parseurl": "~1.3.3", - "send": "0.17.1" + "send": "0.19.0" }, "engines": { "node": ">= 0.8.0" } }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/setprototypeof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", - "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" }, "node_modules/shebang-command": { "version": "2.0.0", @@ -3172,24 +2809,42 @@ } }, "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dev": true, + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/signal-exit": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.6.tgz", - "integrity": "sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==", - "dev": true + "node_modules/simple-update-notifier": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.1.0.tgz", + "integrity": "sha512-VpsrsJSUcJEseSbMHkrsrAVSdvVS5I96Qo1QAQ4FxQ9wXFcB+pjj7FB7/us9+GcgfW4ziHtYMc1J0PLczb55mg==", + "dev": true, + "dependencies": { + "semver": "~7.0.0" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/simple-update-notifier/node_modules/semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } }, "node_modules/slice-ansi": { "version": "4.0.0", @@ -3215,11 +2870,11 @@ "dev": true }, "node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "engines": { - "node": ">= 0.6" + "node": ">= 0.8" } }, "node_modules/string-width": { @@ -3351,15 +3006,6 @@ "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", "dev": true }, - "node_modules/to-readable-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", - "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -3373,9 +3019,9 @@ } }, "node_modules/toidentifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", "engines": { "node": ">=0.6" } @@ -3437,15 +3083,6 @@ "node": ">= 0.6" } }, - "node_modules/typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "dev": true, - "dependencies": { - "is-typedarray": "^1.0.0" - } - }, "node_modules/unbox-primitive": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", @@ -3467,54 +3104,14 @@ "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", "dev": true }, - "node_modules/unique-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", - "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", - "dev": true, - "dependencies": { - "crypto-random-string": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", "engines": { "node": ">= 0.8" } }, - "node_modules/update-notifier": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz", - "integrity": "sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw==", - "dev": true, - "dependencies": { - "boxen": "^5.0.0", - "chalk": "^4.1.0", - "configstore": "^5.0.1", - "has-yarn": "^2.1.0", - "import-lazy": "^2.1.0", - "is-ci": "^2.0.0", - "is-installed-globally": "^0.4.0", - "is-npm": "^5.0.0", - "is-yarn-global": "^0.3.0", - "latest-version": "^5.1.0", - "pupa": "^2.1.1", - "semver": "^7.3.4", - "semver-diff": "^3.1.1", - "xdg-basedir": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/yeoman/update-notifier?sponsor=1" - } - }, "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -3524,18 +3121,6 @@ "punycode": "^2.1.0" } }, - "node_modules/url-parse-lax": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", - "dev": true, - "dependencies": { - "prepend-http": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", @@ -3588,76 +3173,20 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/widest-line": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", - "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", - "dev": true, - "dependencies": { - "string-width": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", "dev": true, "engines": { "node": ">=0.10.0" } }, - "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": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true - }, - "node_modules/write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", - "dev": true, - "dependencies": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - }, - "node_modules/xdg-basedir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", - "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true } }, "dependencies": { @@ -3757,21 +3286,37 @@ "strip-json-comments": "^3.1.1" } }, - "@sindresorhus/is": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", - "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", - "dev": true + "@hapi/hoek": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", + "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==" }, - "@szmarczak/http-timer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", - "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", - "dev": true, + "@hapi/topo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", + "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", + "requires": { + "@hapi/hoek": "^9.0.0" + } + }, + "@sideway/address": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz", + "integrity": "sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==", "requires": { - "defer-to-connect": "^1.0.1" + "@hapi/hoek": "^9.0.0" } }, + "@sideway/formula": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", + "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==" + }, + "@sideway/pinpoint": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", + "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==" + }, "@types/json5": { "version": "0.0.29", "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", @@ -3785,12 +3330,12 @@ "dev": true }, "accepts": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", - "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "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==", "requires": { - "mime-types": "~2.1.24", - "negotiator": "0.6.2" + "mime-types": "~2.1.34", + "negotiator": "0.6.3" } }, "acorn": { @@ -3818,15 +3363,6 @@ "uri-js": "^4.2.2" } }, - "ansi-align": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", - "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", - "dev": true, - "requires": { - "string-width": "^4.1.0" - } - }, "ansi-colors": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", @@ -3923,20 +3459,22 @@ "dev": true }, "body-parser": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", - "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "version": "1.20.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", + "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", "requires": { - "bytes": "3.1.0", - "content-type": "~1.0.4", + "bytes": "3.1.2", + "content-type": "~1.0.5", "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.7.2", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.7.0", - "raw-body": "2.4.0", - "type-is": "~1.6.17" + "on-finished": "2.4.1", + "qs": "6.13.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" }, "dependencies": { "debug": { @@ -3950,31 +3488,15 @@ "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } - } - }, - "boxen": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz", - "integrity": "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==", - "dev": true, - "requires": { - "ansi-align": "^3.0.0", - "camelcase": "^6.2.0", - "chalk": "^4.1.0", - "cli-boxes": "^2.2.1", - "string-width": "^4.2.2", - "type-fest": "^0.20.2", - "widest-line": "^3.1.0", - "wrap-ansi": "^7.0.0" - }, - "dependencies": { - "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 + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "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==", + "requires": { + "ee-first": "1.1.1" + } } } }, @@ -3989,59 +3511,29 @@ } }, "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, "requires": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" } }, "bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" - }, - "cacheable-request": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", - "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", - "dev": true, - "requires": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^3.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^4.1.0", - "responselike": "^1.0.2" - }, - "dependencies": { - "get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, - "lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", - "dev": true - } - } + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" }, "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" } }, "callsites": { @@ -4050,12 +3542,6 @@ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true }, - "camelcase": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.1.tgz", - "integrity": "sha512-tVI4q5jjFV5CavAU8DXfza/TJcZutVKo/5Foskmsqcm0MsL91moHvwiGNnqaa2o6PF/7yT5ikDRcVcl8Rj6LCA==", - "dev": true - }, "chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -4082,27 +3568,6 @@ "readdirp": "~3.6.0" } }, - "ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "dev": true - }, - "cli-boxes": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", - "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", - "dev": true - }, - "clone-response": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", - "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", - "dev": true, - "requires": { - "mimic-response": "^1.0.0" - } - }, "color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -4124,37 +3589,30 @@ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, - "configstore": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", - "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", - "dev": true, - "requires": { - "dot-prop": "^5.2.0", - "graceful-fs": "^4.1.2", - "make-dir": "^3.0.0", - "unique-string": "^2.0.0", - "write-file-atomic": "^3.0.0", - "xdg-basedir": "^4.0.0" - } - }, "content-disposition": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", - "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", "requires": { - "safe-buffer": "5.1.2" + "safe-buffer": "5.2.1" + }, + "dependencies": { + "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==" + } } }, "content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==" }, "cookie": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", - "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", + "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==" }, "cookie-signature": { "version": "1.0.6", @@ -4188,12 +3646,6 @@ "which": "^2.0.1" } }, - "crypto-random-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", - "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", - "dev": true - }, "debug": { "version": "4.3.3", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", @@ -4203,32 +3655,21 @@ "ms": "2.1.2" } }, - "decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", - "dev": true, - "requires": { - "mimic-response": "^1.0.0" - } - }, - "deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "dev": true - }, "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 }, - "defer-to-connect": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", - "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", - "dev": true + "define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "requires": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + } }, "define-properties": { "version": "1.1.3", @@ -4240,14 +3681,14 @@ } }, "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" }, "destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==" }, "doctrine": { "version": "3.0.0", @@ -4258,21 +3699,6 @@ "esutils": "^2.0.2" } }, - "dot-prop": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", - "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", - "dev": true, - "requires": { - "is-obj": "^2.0.0" - } - }, - "duplexer3": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", - "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", - "dev": true - }, "ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -4285,18 +3711,9 @@ "dev": true }, "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" - }, - "end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, - "requires": { - "once": "^1.4.0" - } + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==" }, "enquirer": { "version": "2.3.6", @@ -4335,6 +3752,19 @@ "unbox-primitive": "^1.0.1" } }, + "es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "requires": { + "get-intrinsic": "^1.2.4" + } + }, + "es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==" + }, "es-to-primitive": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", @@ -4346,16 +3776,10 @@ "is-symbol": "^1.0.2" } }, - "escape-goat": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", - "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==", - "dev": true - }, "escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" }, "escape-string-regexp": { "version": "1.0.5", @@ -4543,9 +3967,9 @@ "dev": true }, "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true } } @@ -4664,40 +4088,41 @@ "etag": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==" }, "express": { - "version": "4.17.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", - "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "version": "4.21.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.21.1.tgz", + "integrity": "sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==", "requires": { - "accepts": "~1.3.7", + "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.19.0", - "content-disposition": "0.5.3", + "body-parser": "1.20.3", + "content-disposition": "0.5.4", "content-type": "~1.0.4", - "cookie": "0.4.0", + "cookie": "0.7.1", "cookie-signature": "1.0.6", "debug": "2.6.9", - "depd": "~1.1.2", - "encodeurl": "~1.0.2", + "depd": "2.0.0", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", - "finalhandler": "~1.1.2", + "finalhandler": "1.3.1", "fresh": "0.5.2", - "merge-descriptors": "1.0.1", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.3", "methods": "~1.1.2", - "on-finished": "~2.3.0", + "on-finished": "2.4.1", "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.5", - "qs": "6.7.0", + "path-to-regexp": "0.1.10", + "proxy-addr": "~2.0.7", + "qs": "6.13.0", "range-parser": "~1.2.1", - "safe-buffer": "5.1.2", - "send": "0.17.1", - "serve-static": "1.14.1", - "setprototypeof": "1.1.1", - "statuses": "~1.5.0", + "safe-buffer": "5.2.1", + "send": "0.19.0", + "serve-static": "1.16.2", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", "type-is": "~1.6.18", "utils-merge": "1.0.1", "vary": "~1.1.2" @@ -4715,6 +4140,19 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "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==", + "requires": { + "ee-first": "1.1.1" + } + }, + "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==" } } }, @@ -4746,25 +4184,25 @@ } }, "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, "requires": { "to-regex-range": "^5.0.1" } }, "finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", + "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", "requires": { "debug": "2.6.9", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", - "on-finished": "~2.3.0", + "on-finished": "2.4.1", "parseurl": "~1.3.3", - "statuses": "~1.5.0", + "statuses": "2.0.1", "unpipe": "~1.0.0" }, "dependencies": { @@ -4779,7 +4217,15 @@ "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "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==", + "requires": { + "ee-first": "1.1.1" + } } } }, @@ -4816,7 +4262,7 @@ "fresh": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==" }, "fs.realpath": { "version": "1.0.0", @@ -4832,10 +4278,9 @@ "optional": true }, "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" }, "functional-red-black-tree": { "version": "1.0.1", @@ -4844,23 +4289,15 @@ "dev": true }, "get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" - } - }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "requires": { - "pump": "^3.0.0" + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" } }, "get-symbol-description": { @@ -4896,15 +4333,6 @@ "is-glob": "^4.0.1" } }, - "global-dirs": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.0.tgz", - "integrity": "sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA==", - "dev": true, - "requires": { - "ini": "2.0.0" - } - }, "globals": { "version": "12.4.0", "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", @@ -4914,30 +4342,13 @@ "type-fest": "^0.8.1" } }, - "got": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", - "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", - "dev": true, + "gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", "requires": { - "@sindresorhus/is": "^0.14.0", - "@szmarczak/http-timer": "^1.1.2", - "cacheable-request": "^6.0.0", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^4.1.0", - "lowercase-keys": "^1.0.1", - "mimic-response": "^1.0.1", - "p-cancelable": "^1.0.0", - "to-readable-stream": "^1.0.0", - "url-parse-lax": "^3.0.0" - } - }, - "graceful-fs": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", - "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", - "dev": true + "get-intrinsic": "^1.1.3" + } }, "has": { "version": "1.0.3", @@ -4960,11 +4371,23 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "has-symbols": { + "has-property-descriptors": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", - "dev": true + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "requires": { + "es-define-property": "^1.0.0" + } + }, + "has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==" + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" }, "has-tostringtag": { "version": "1.0.0", @@ -4975,28 +4398,24 @@ "has-symbols": "^1.0.2" } }, - "has-yarn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", - "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==", - "dev": true - }, - "http-cache-semantics": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", - "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", - "dev": true + "hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "requires": { + "function-bind": "^1.1.2" + } }, "http-errors": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", - "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" } }, "iconv-lite": { @@ -5029,12 +4448,6 @@ "resolve-from": "^4.0.0" } }, - "import-lazy": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", - "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", - "dev": true - }, "imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", @@ -5052,15 +4465,9 @@ } }, "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" - }, - "ini": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", - "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", - "dev": true + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "internal-slot": { "version": "1.0.3", @@ -5112,15 +4519,6 @@ "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", "dev": true }, - "is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", - "dev": true, - "requires": { - "ci-info": "^2.0.0" - } - }, "is-core-module": { "version": "2.8.0", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", @@ -5160,28 +4558,12 @@ "is-extglob": "^2.1.1" } }, - "is-installed-globally": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", - "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", - "dev": true, - "requires": { - "global-dirs": "^3.0.0", - "is-path-inside": "^3.0.2" - } - }, "is-negative-zero": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", "dev": true }, - "is-npm": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz", - "integrity": "sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==", - "dev": true - }, "is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -5197,18 +4579,6 @@ "has-tostringtag": "^1.0.0" } }, - "is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", - "dev": true - }, - "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 - }, "is-regex": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", @@ -5243,12 +4613,6 @@ "has-symbols": "^1.0.2" } }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true - }, "is-weakref": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", @@ -5258,17 +4622,23 @@ "call-bind": "^1.0.2" } }, - "is-yarn-global": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", - "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==", - "dev": true - }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" }, + "joi": { + "version": "17.13.3", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.13.3.tgz", + "integrity": "sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==", + "requires": { + "@hapi/hoek": "^9.3.0", + "@hapi/topo": "^5.1.0", + "@sideway/address": "^4.1.5", + "@sideway/formula": "^3.0.1", + "@sideway/pinpoint": "^2.0.0" + } + }, "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -5285,12 +4655,6 @@ "esprima": "^4.0.0" } }, - "json-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", - "dev": true - }, "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -5304,32 +4668,14 @@ "dev": true }, "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "dev": true, "requires": { "minimist": "^1.2.0" } }, - "keyv": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", - "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", - "dev": true, - "requires": { - "json-buffer": "3.0.0" - } - }, - "latest-version": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", - "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", - "dev": true, - "requires": { - "package-json": "^6.3.0" - } - }, "levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", @@ -5362,47 +4708,15 @@ "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", "dev": true }, - "lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", - "dev": true - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "requires": { - "semver": "^6.0.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, "media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==" }, "merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==" }, "methods": { "version": "1.1.2", @@ -5415,37 +4729,31 @@ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" }, "mime-db": { - "version": "1.51.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", - "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==" + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" }, "mime-types": { - "version": "2.1.34", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", - "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "requires": { - "mime-db": "1.51.0" + "mime-db": "1.52.0" } }, - "mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", - "dev": true - }, "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "requires": { "brace-expansion": "^1.1.7" } }, "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "dev": true }, "morgan": { @@ -5468,11 +4776,6 @@ "ms": "2.0.0" } }, - "depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" - }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -5486,6 +4789,11 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, + "nanoid": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.0.8.tgz", + "integrity": "sha512-TcJPw+9RV9dibz1hHUzlLVy8N4X9TnwirAjrU08Juo6BNKggzVfP2ZJ/3ZUSq15Xl5i85i+Z89XBO90pB2PghQ==" + }, "natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -5493,26 +4801,26 @@ "dev": true }, "negotiator": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", - "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" }, "nodemon": { - "version": "2.0.15", - "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.15.tgz", - "integrity": "sha512-gdHMNx47Gw7b3kWxJV64NI+Q5nfl0y5DgDbiVtShiwa7Z0IZ07Ll4RLFo6AjrhzMtoEZn5PDE3/c2AbVsiCkpA==", + "version": "2.0.22", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.22.tgz", + "integrity": "sha512-B8YqaKMmyuCO7BowF1Z1/mkPqLk6cs/l63Ojtd6otKjMx47Dq1utxfRxcavH1I7VSaL8n5BUaoutadnsX3AAVQ==", "dev": true, "requires": { "chokidar": "^3.5.2", "debug": "^3.2.7", "ignore-by-default": "^1.0.1", - "minimatch": "^3.0.4", + "minimatch": "^3.1.2", "pstree.remy": "^1.1.8", "semver": "^5.7.1", + "simple-update-notifier": "^1.0.7", "supports-color": "^5.5.0", "touch": "^3.1.0", - "undefsafe": "^2.0.5", - "update-notifier": "^5.1.0" + "undefsafe": "^2.0.5" }, "dependencies": { "debug": { @@ -5531,9 +4839,9 @@ "dev": true }, "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true }, "supports-color": { @@ -5562,22 +4870,15 @@ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true }, - "normalize-url": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", - "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", - "dev": true - }, "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" }, "object-inspect": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.1.tgz", - "integrity": "sha512-If7BjFlpkzzBeV1cqgT3OSWT3azyoxDGajR+iGnFBfVV2EWyDyWaZZW2ERDjUaY2QM8i5jI3Sj7mhsM4DDAqWA==", - "dev": true + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz", + "integrity": "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==" }, "object-keys": { "version": "1.1.1", @@ -5644,12 +4945,6 @@ "word-wrap": "^1.2.3" } }, - "p-cancelable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", - "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", - "dev": true - }, "p-limit": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", @@ -5674,26 +4969,6 @@ "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", "dev": true }, - "package-json": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", - "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", - "dev": true, - "requires": { - "got": "^9.6.0", - "registry-auth-token": "^4.0.0", - "registry-url": "^5.0.0", - "semver": "^6.2.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, "parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -5732,9 +5007,9 @@ "dev": true }, "path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz", + "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==" }, "picomatch": { "version": "2.3.0", @@ -5757,12 +5032,6 @@ "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true }, - "prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", - "dev": true - }, "progress": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", @@ -5784,78 +5053,36 @@ "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", "dev": true }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", "dev": true }, - "pupa": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz", - "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==", - "dev": true, + "qs": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", "requires": { - "escape-goat": "^2.0.0" + "side-channel": "^1.0.6" } }, - "qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" - }, "range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" }, "raw-body": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", - "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "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==", "requires": { - "bytes": "3.1.0", - "http-errors": "1.7.2", + "bytes": "3.1.2", + "http-errors": "2.0.0", "iconv-lite": "0.4.24", "unpipe": "1.0.0" } }, - "rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dev": true, - "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "dependencies": { - "ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true - }, - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "dev": true - } - } - }, "readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", @@ -5871,24 +5098,6 @@ "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", "dev": true }, - "registry-auth-token": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz", - "integrity": "sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw==", - "dev": true, - "requires": { - "rc": "^1.2.8" - } - }, - "registry-url": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", - "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", - "dev": true, - "requires": { - "rc": "^1.2.8" - } - }, "require-from-string": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", @@ -5911,15 +5120,6 @@ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true }, - "responselike": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", - "dev": true, - "requires": { - "lowercase-keys": "^1.0.0" - } - }, "rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", @@ -5940,49 +5140,29 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "semver-diff": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", - "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", - "dev": true, - "requires": { - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true }, "send": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", - "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", + "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", "requires": { "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", + "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": "~1.7.2", + "http-errors": "2.0.0", "mime": "1.6.0", - "ms": "2.1.1", - "on-finished": "~2.3.0", + "ms": "2.1.3", + "on-finished": "2.4.1", "range-parser": "~1.2.1", - "statuses": "~1.5.0" + "statuses": "2.0.1" }, "dependencies": { "debug": { @@ -5996,32 +5176,58 @@ "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" } } }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==" + }, "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "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==", + "requires": { + "ee-first": "1.1.1" + } } } }, "serve-static": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", - "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", + "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", "requires": { - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "parseurl": "~1.3.3", - "send": "0.17.1" + "send": "0.19.0" + } + }, + "set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "requires": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" } }, "setprototypeof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", - "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" }, "shebang-command": { "version": "2.0.0", @@ -6037,21 +5243,32 @@ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" }, "side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dev": true, + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", "requires": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" } }, - "signal-exit": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.6.tgz", - "integrity": "sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==", - "dev": true + "simple-update-notifier": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.1.0.tgz", + "integrity": "sha512-VpsrsJSUcJEseSbMHkrsrAVSdvVS5I96Qo1QAQ4FxQ9wXFcB+pjj7FB7/us9+GcgfW4ziHtYMc1J0PLczb55mg==", + "dev": true, + "requires": { + "semver": "~7.0.0" + }, + "dependencies": { + "semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true + } + } }, "slice-ansi": { "version": "4.0.0", @@ -6071,9 +5288,9 @@ "dev": true }, "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" }, "string-width": { "version": "4.2.3", @@ -6175,12 +5392,6 @@ "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", "dev": true }, - "to-readable-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", - "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", - "dev": true - }, "to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -6191,9 +5402,9 @@ } }, "toidentifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" }, "touch": { "version": "3.1.0", @@ -6240,15 +5451,6 @@ "mime-types": "~2.1.24" } }, - "typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "dev": true, - "requires": { - "is-typedarray": "^1.0.0" - } - }, "unbox-primitive": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", @@ -6267,41 +5469,10 @@ "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", "dev": true }, - "unique-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", - "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", - "dev": true, - "requires": { - "crypto-random-string": "^2.0.0" - } - }, "unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" - }, - "update-notifier": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz", - "integrity": "sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw==", - "dev": true, - "requires": { - "boxen": "^5.0.0", - "chalk": "^4.1.0", - "configstore": "^5.0.1", - "has-yarn": "^2.1.0", - "import-lazy": "^2.1.0", - "is-ci": "^2.0.0", - "is-installed-globally": "^0.4.0", - "is-npm": "^5.0.0", - "is-yarn-global": "^0.3.0", - "latest-version": "^5.1.0", - "pupa": "^2.1.1", - "semver": "^7.3.4", - "semver-diff": "^3.1.1", - "xdg-basedir": "^4.0.0" - } + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==" }, "uri-js": { "version": "4.4.1", @@ -6312,15 +5483,6 @@ "punycode": "^2.1.0" } }, - "url-parse-lax": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", - "dev": true, - "requires": { - "prepend-http": "^2.0.0" - } - }, "utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", @@ -6358,61 +5520,17 @@ "is-symbol": "^1.0.3" } }, - "widest-line": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", - "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", - "dev": true, - "requires": { - "string-width": "^4.0.0" - } - }, "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", "dev": true }, - "wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true - }, - "write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", - "dev": true, - "requires": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - }, - "xdg-basedir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", - "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", - "dev": true - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true } } } diff --git a/package.json b/package.json index 5045e827160..8290bfb9a99 100644 --- a/package.json +++ b/package.json @@ -9,10 +9,12 @@ "lint:fix": "eslint --fix **/*.js" }, "dependencies": { - "cors": "2.8.5", + "cors": "^2.8.5", "cross-env": "7.0.3", - "express": "4.17.1", - "morgan": "1.10.0" + "express": "^4.21.1", + "joi": "^17.13.3", + "morgan": "^1.10.0", + "nanoid": "^5.0.8" }, "devDependencies": { "eslint": "7.19.0", @@ -21,6 +23,6 @@ "eslint-plugin-import": "2.25.3", "eslint-plugin-node": "^11.1.0", "eslint-plugin-promise": "5.2.0", - "nodemon": "2.0.15" + "nodemon": "^2.0.22" } } diff --git a/routes/api/contacts.js b/routes/api/contacts.js index 29cdde0efe3..c6ec87094b7 100644 --- a/routes/api/contacts.js +++ b/routes/api/contacts.js @@ -1,25 +1,78 @@ const express = require("express"); const router = express.Router(); +const Joi = require("joi"); +const { + listContacts, + getContactById, + removeContact, + addContact, + updateContact, +} = require("../../models/contacts"); + +const schema = Joi.object({ + name: Joi.required(), + email: Joi.required(), + phone: Joi.required(), +}); router.get("/", async (req, res, next) => { - res.json({ message: "helo world" }); + const contacts = await listContacts(); + res.status(200).json(contacts); + // res.json({ message: "template message" }); }); router.get("/:contactId", async (req, res, next) => { - res.json({ message: "template message" }); + const contact = await getContactById(req.params.contactId); + if (!contact) { + res.status(404).json({ + message: "Not found.", + }); + return; + } + res.status(200).json(contact); + // res.json({ message: "template message" }); }); router.post("/", async (req, res, next) => { - res.json({ message: "template message" }); + const result = schema.validate(req.body); + if (result.error) { + res.status(400).json({ message: "missing required field" }); + } else { + await addContact(req.body); + res.status(201).json(req.body); + } + // res.json({ message: "template message" }); }); router.delete("/:contactId", async (req, res, next) => { - res.json({ message: "template message" }); + const contact = await removeContact(req.params.contactId); + if (!contact) { + res.status(404).json({ + message: "Not found.", + }); + return; + } + res.status(200).json({ message: "Contact deleted" }); + // res.json({ message: "template message" }); }); router.put("/:contactId", async (req, res, next) => { - res.json({ message: "template message" }); + const result = schema.validate(req.body); + if (result.error) { + return res.status(400).json({ message: "missing required field" }); + } + + const contact = await updateContact(req.params.contactId, req.body); + if (!contact) { + res.status(404).json({ + message: "Not found.", + }); + return; + } + + res.status(200).json(req.body); + // res.json({ message: "template message" }); }); module.exports = router; diff --git a/server.js b/server.js index db330824656..ff7f536a8d0 100644 --- a/server.js +++ b/server.js @@ -1,5 +1,5 @@ const app = require('./app') -app.listen(3000, () => { - console.log("Server running. Use our API on port: 3000") +app.listen(3001, () => { + console.log("Server running. Use our API on port: 3001") }) From 1c7635242a17567215da4c20464928b2a958d429 Mon Sep 17 00:00:00 2001 From: cygan3107 Date: Fri, 15 Nov 2024 16:30:47 +0100 Subject: [PATCH 03/13] update --- server.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/server.js b/server.js index ff7f536a8d0..6730408264a 100644 --- a/server.js +++ b/server.js @@ -1,5 +1,5 @@ -const app = require('./app') +const app = require("./app"); app.listen(3001, () => { - console.log("Server running. Use our API on port: 3001") -}) + console.log("Server running. Use our API on port: 3001"); +}); From 617d14a007c92d85fd5083ff0970f5820afc9fe8 Mon Sep 17 00:00:00 2001 From: cygan3107 Date: Sun, 24 Nov 2024 22:26:50 +0100 Subject: [PATCH 04/13] summary --- app.js | 9 +- controllers/contacts.js | 91 +++++++++ controllers/services.js | 41 ++++ models/contacts.js | 110 +++-------- package-lock.json | 405 ++++++++++++++++++++++++++++++++++++++-- package.json | 3 + routes/api/contacts.js | 84 ++------- server.js | 29 ++- 8 files changed, 594 insertions(+), 178 deletions(-) create mode 100644 controllers/contacts.js create mode 100644 controllers/services.js diff --git a/app.js b/app.js index bc9e12e919a..126320b99d1 100644 --- a/app.js +++ b/app.js @@ -15,15 +15,12 @@ app.use(express.json()); app.use("/api/contacts", contactsRouter); app.use((req, res) => { - res.status(404).json({ message: "Not found" }); + res.status(404).json({ message: `Not found` }); }); app.use((err, req, res, next) => { - res.status(500).json({ message: err.message }); -}); - -app.listen(3000, () => { - console.log("Server is running on port 3000"); + const { status = 500, message = "Server error" } = err; + res.status(status).json({ message }); }); module.exports = app; diff --git a/controllers/contacts.js b/controllers/contacts.js new file mode 100644 index 00000000000..6e08858b8d8 --- /dev/null +++ b/controllers/contacts.js @@ -0,0 +1,91 @@ +const { + listContacts, + getContactById, + deleteContact, + createContact, + updateContact, + updateStatusContact, +} = require("./services"); + +const getAllContacts = async (req, res, next) => { + try { + const contacts = await listContacts(); + res.json(contacts); + } catch (error) { + next(error); + } +}; + +const getContact = async (req, res, next) => { + try { + const contact = await getContactById(req.params.contactId); + if (contact) { + res.json(contact); + } else { + next(); + } + } catch (error) { + next(error); + } +}; + +const addContact = async (req, res, next) => { + const { name, email, phone } = req.body; + try { + const result = await createContact({ name, email, phone }); + res.status(201).json(result); + } catch (error) { + next(error); + } +}; + +const removeContact = async (req, res, next) => { + const { contactId } = req.params; + try { + await deleteContact(contactId); + res.status(200).send({ message: "Task deleted" }); + } catch (error) { + next(error); + } +}; + +const putContact = async (req, res, next) => { + const id = req.params.contactId; + try { + const result = await updateContact({ + id, + toUpdate: req.body, + upsert: true, + }); + res.json(result); + } catch (error) { + next(error); + } +}; + +const patchContact = async (req, res, next) => { + const id = req.params.contactId; + console.log(typeof req.body.favorite); + try { + const result = await updateStatusContact({ + id, + favorite: req.body.favorite, + }); + if (req.body.favorite === undefined) { + return res.status(400).send({ message: "missing field favorite" }); + } else { + res.status(200).json(result); + } + } catch (error) { + next(error); + } +}; + +module.exports = { + getAllContacts, + getContact, + addContact, + removeContact, + putContact, + patchContact, +}; diff --git a/controllers/services.js b/controllers/services.js new file mode 100644 index 00000000000..2652f566646 --- /dev/null +++ b/controllers/services.js @@ -0,0 +1,41 @@ +const Contact = require("../models/contacts"); + +const listContacts = () => { + return Contact.find(); +}; + +const getContactById = (id) => { + return Contact.findOne({ _id: id }); +}; + +const createContact = ({ name, email, phone }) => { + return Contact.create({ name, email, phone }); +}; + +const deleteContact = (id) => { + return Contact.deleteOne({ _id: id }); +}; + +const updateContact = async ({ id, toUpdate, upsert = false }) => { + return Contact.findByIdAndUpdate( + { _id: id }, + { $set: toUpdate }, + { new: true, runValidators: true, strict: "throw", upsert } + ); +}; +const updateStatusContact = async ({ id, favorite }) => { + return Contact.findByIdAndUpdate( + { _id: id }, + { $set: { favorite } }, + { new: true, runValidators: true, strict: "throw" } + ); +}; + +module.exports = { + listContacts, + getContactById, + deleteContact, + createContact, + updateContact, + updateStatusContact, +}; diff --git a/models/contacts.js b/models/contacts.js index 575db6f4187..11eeb0886fe 100644 --- a/models/contacts.js +++ b/models/contacts.js @@ -1,88 +1,30 @@ -// const fs = require('fs/promises') +const mongoose = require("mongoose"); -const fs = require("fs").promises; -const path = require("path"); -const contactsPath = path.join(__dirname, "contacts.json"); - -const listContacts = async () => { - try { - const data = await fs.readFile(contactsPath); - return JSON.parse(data); - } catch (error) { - console.error("Error reading or parsing file:", error); - throw error; - } -}; - -const getContactById = async (contactId) => { - try { - const data = await fs.readFile(contactsPath); - const contacts = JSON.parse(data); - const contact = contacts.find((contact) => contact.id === contactId); - return contact; - } catch (error) { - console.error("Error reading or parsing file:", error); - throw error; - } -}; - -const removeContact = async (contactId) => { - try { - const data = await fs.readFile(contactsPath); - const contacts = JSON.parse(data); - const contact = contacts.find((contact) => contact.id === contactId); - const newContacts = contacts.filter((contact) => contact.id !== contactId); - await fs.writeFile(contactsPath, JSON.stringify(newContacts)); - return contact; - } catch (error) { - console.error("Error reading or parsing file:", error); - throw error; - } -}; - -const addContact = async (body) => { - try { - const { name, email, phone } = body; - const data = await fs.readFile(contactsPath); - const contacts = JSON.parse(data); - const id = contacts.length + 1; - const contactToAdd = { - id: String(id), - name, - email, - phone, - }; - contacts.push(contactToAdd); - await fs.writeFile(contactsPath, JSON.stringify(contacts)); - } catch (error) { - console.error("Error reading or parsing file:", error); - throw error; +const contactSchema = new mongoose.Schema( + { + name: { + type: String, + required: [true, "Set name for contact"], + }, + email: { + type: String, + required: [true, "Set email for contact"], + }, + phone: { + type: String, + required: [true, "Set phone for contact"], + }, + favorite: { + type: Boolean, + default: false, + }, + }, + { + versionKey: false, + timestamps: true, } -}; +); -const updateContact = async (contactId, body) => { - try { - const { name, email, phone } = body; - const data = await fs.readFile(contactsPath); - const contacts = JSON.parse(data); - const contact = contacts.find((contact) => contact.id === contactId); - if (contact) { - contact.name = name; - contact.email = email; - contact.phone = phone; - } - await fs.writeFile(contactsPath, JSON.stringify(contacts)); - return contact; - } catch (error) { - console.error("Error reading or parsing file:", error); - throw error; - } -}; +const Contact = mongoose.model("Contact", contactSchema); -module.exports = { - listContacts, - getContactById, - removeContact, - addContact, - updateContact, -}; +module.exports = Contact; diff --git a/package-lock.json b/package-lock.json index 4ff71c1ba93..991e8c61859 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,8 +10,11 @@ "dependencies": { "cors": "^2.8.5", "cross-env": "7.0.3", + "dotenv": "^16.4.5", "express": "^4.21.1", "joi": "^17.13.3", + "mongodb": "^6.11.0", + "mongoose": "^8.8.2", "morgan": "^1.10.0", "nanoid": "^5.0.8" }, @@ -156,6 +159,14 @@ "@hapi/hoek": "^9.0.0" } }, + "node_modules/@mongodb-js/saslprep": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.9.tgz", + "integrity": "sha512-tVkljjeEaAhCqTzajSdgbQ6gE6f3oneVwa3iXR6csiEwXXOFsiC6Uh9iAjAhXPtqa/XMDHWjjeNH/77m/Yq2dw==", + "dependencies": { + "sparse-bitfield": "^3.0.3" + } + }, "node_modules/@sideway/address": { "version": "4.1.5", "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz", @@ -180,6 +191,19 @@ "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", "dev": true }, + "node_modules/@types/webidl-conversions": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.3.tgz", + "integrity": "sha512-CiJJvcRtIgzadHCYXw7dqEnMNRjhGZlYK05Mj9OyktqV8uVT8fD2BFOB7S1uwBE3Kj2Z+4UyPmFw/Ixgw/LAlA==" + }, + "node_modules/@types/whatwg-url": { + "version": "11.0.5", + "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-11.0.5.tgz", + "integrity": "sha512-coYR071JRaHa+xoEvvYqvnIHaVqaYrLPbsufM9BF63HkwI5Lgmy2QR8Q5K/lYDYo5AK82wOvSOS0UsLTpTG7uQ==", + "dependencies": { + "@types/webidl-conversions": "*" + } + }, "node_modules/abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", @@ -435,6 +459,14 @@ "node": ">=8" } }, + "node_modules/bson": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/bson/-/bson-6.10.0.tgz", + "integrity": "sha512-ROchNosXMJD2cbQGm84KoP7vOGPO6/bOAW0veMMbzhXLqoZptcaYRVLitwvuhwhjjpU1qP4YZRWLhgETdgqUQw==", + "engines": { + "node": ">=16.20.1" + } + }, "node_modules/bytes": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", @@ -628,7 +660,6 @@ "version": "4.3.3", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", - "dev": true, "dependencies": { "ms": "2.1.2" }, @@ -704,6 +735,17 @@ "node": ">=6.0.0" } }, + "node_modules/dotenv": { + "version": "16.4.5", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", + "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -2030,6 +2072,14 @@ "json5": "lib/cli.js" } }, + "node_modules/kareem": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.6.3.tgz", + "integrity": "sha512-C3iHfuGUXK2u8/ipq9LfjFfXFxAZMQJJq7vLS45r3D9Y2xQ/m4S8zaR4zMLFWh9AsNPXmcFfUDhTEO8UIC/V6Q==", + "engines": { + "node": ">=12.0.0" + } + }, "node_modules/levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", @@ -2076,6 +2126,11 @@ "node": ">= 0.6" } }, + "node_modules/memory-pager": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", + "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==" + }, "node_modules/merge-descriptors": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", @@ -2143,6 +2198,131 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/mongodb": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.11.0.tgz", + "integrity": "sha512-yVbPw0qT268YKhG241vAMLaDQAPbRyTgo++odSgGc9kXnzOujQI60Iyj23B9sQQFPSvmNPvMZ3dsFz0aN55KgA==", + "dependencies": { + "@mongodb-js/saslprep": "^1.1.9", + "bson": "^6.10.0", + "mongodb-connection-string-url": "^3.0.0" + }, + "engines": { + "node": ">=16.20.1" + }, + "peerDependencies": { + "@aws-sdk/credential-providers": "^3.188.0", + "@mongodb-js/zstd": "^1.1.0", + "gcp-metadata": "^5.2.0", + "kerberos": "^2.0.1", + "mongodb-client-encryption": ">=6.0.0 <7", + "snappy": "^7.2.2", + "socks": "^2.7.1" + }, + "peerDependenciesMeta": { + "@aws-sdk/credential-providers": { + "optional": true + }, + "@mongodb-js/zstd": { + "optional": true + }, + "gcp-metadata": { + "optional": true + }, + "kerberos": { + "optional": true + }, + "mongodb-client-encryption": { + "optional": true + }, + "snappy": { + "optional": true + }, + "socks": { + "optional": true + } + } + }, + "node_modules/mongodb-connection-string-url": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-3.0.1.tgz", + "integrity": "sha512-XqMGwRX0Lgn05TDB4PyG2h2kKO/FfWJyCzYQbIhXUxz7ETt0I/FqHjUeqj37irJ+Dl1ZtU82uYyj14u2XsZKfg==", + "dependencies": { + "@types/whatwg-url": "^11.0.2", + "whatwg-url": "^13.0.0" + } + }, + "node_modules/mongoose": { + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-8.8.2.tgz", + "integrity": "sha512-jCTSqDANfRzk909v4YoZQi7jlGRB2MTvgG+spVBc/BA4tOs1oWJr//V6yYujqNq9UybpOtsSfBqxI0dSOEFJHQ==", + "dependencies": { + "bson": "^6.7.0", + "kareem": "2.6.3", + "mongodb": "~6.10.0", + "mpath": "0.9.0", + "mquery": "5.0.0", + "ms": "2.1.3", + "sift": "17.1.3" + }, + "engines": { + "node": ">=16.20.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mongoose" + } + }, + "node_modules/mongoose/node_modules/mongodb": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.10.0.tgz", + "integrity": "sha512-gP9vduuYWb9ZkDM546M+MP2qKVk5ZG2wPF63OvSRuUbqCR+11ZCAE1mOfllhlAG0wcoJY5yDL/rV3OmYEwXIzg==", + "dependencies": { + "@mongodb-js/saslprep": "^1.1.5", + "bson": "^6.7.0", + "mongodb-connection-string-url": "^3.0.0" + }, + "engines": { + "node": ">=16.20.1" + }, + "peerDependencies": { + "@aws-sdk/credential-providers": "^3.188.0", + "@mongodb-js/zstd": "^1.1.0", + "gcp-metadata": "^5.2.0", + "kerberos": "^2.0.1", + "mongodb-client-encryption": ">=6.0.0 <7", + "snappy": "^7.2.2", + "socks": "^2.7.1" + }, + "peerDependenciesMeta": { + "@aws-sdk/credential-providers": { + "optional": true + }, + "@mongodb-js/zstd": { + "optional": true + }, + "gcp-metadata": { + "optional": true + }, + "kerberos": { + "optional": true + }, + "mongodb-client-encryption": { + "optional": true + }, + "snappy": { + "optional": true + }, + "socks": { + "optional": true + } + } + }, + "node_modules/mongoose/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, "node_modules/morgan": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz", @@ -2171,11 +2351,29 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, + "node_modules/mpath": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.9.0.tgz", + "integrity": "sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew==", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/mquery": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/mquery/-/mquery-5.0.0.tgz", + "integrity": "sha512-iQMncpmEK8R8ncT8HJGsGc9Dsp8xcgYMVSbs5jgnm1lFHTZqMJTUWTDx1LBO8+mK3tPNZWFLBghQEIOULSTHZg==", + "dependencies": { + "debug": "4.x" + }, + "engines": { + "node": ">=14.0.0" + } + }, "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 + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "node_modules/nanoid": { "version": "5.0.8", @@ -2558,10 +2756,9 @@ "dev": true }, "node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true, + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "engines": { "node": ">=6" } @@ -2825,6 +3022,11 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/sift": { + "version": "17.1.3", + "resolved": "https://registry.npmjs.org/sift/-/sift-17.1.3.tgz", + "integrity": "sha512-Rtlj66/b0ICeFzYTuNvX/EF1igRbbnGSvEyT79McoZa/DeGhMyC5pWKOEsZKnpkqtSeovd5FL/bjHWC3CIIvCQ==" + }, "node_modules/simple-update-notifier": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.1.0.tgz", @@ -2863,6 +3065,14 @@ "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, + "node_modules/sparse-bitfield": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", + "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==", + "dependencies": { + "memory-pager": "^1.0.2" + } + }, "node_modules/sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", @@ -3038,6 +3248,17 @@ "nodetouch": "bin/nodetouch.js" } }, + "node_modules/tr46": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-4.1.1.tgz", + "integrity": "sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==", + "dependencies": { + "punycode": "^2.3.0" + }, + "engines": { + "node": ">=14" + } + }, "node_modules/tsconfig-paths": { "version": "3.12.0", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.12.0.tgz", @@ -3143,6 +3364,26 @@ "node": ">= 0.8" } }, + "node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-url": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-13.0.0.tgz", + "integrity": "sha512-9WWbymnqj57+XEuqADHrCJ2eSXzn8WXIW/YSGaZtb2WKAInQ6CHfaUUcTyyver0p8BDg5StLQq8h1vtZuwmOig==", + "dependencies": { + "tr46": "^4.1.1", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=16" + } + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -3299,6 +3540,14 @@ "@hapi/hoek": "^9.0.0" } }, + "@mongodb-js/saslprep": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.9.tgz", + "integrity": "sha512-tVkljjeEaAhCqTzajSdgbQ6gE6f3oneVwa3iXR6csiEwXXOFsiC6Uh9iAjAhXPtqa/XMDHWjjeNH/77m/Yq2dw==", + "requires": { + "sparse-bitfield": "^3.0.3" + } + }, "@sideway/address": { "version": "4.1.5", "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz", @@ -3323,6 +3572,19 @@ "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", "dev": true }, + "@types/webidl-conversions": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.3.tgz", + "integrity": "sha512-CiJJvcRtIgzadHCYXw7dqEnMNRjhGZlYK05Mj9OyktqV8uVT8fD2BFOB7S1uwBE3Kj2Z+4UyPmFw/Ixgw/LAlA==" + }, + "@types/whatwg-url": { + "version": "11.0.5", + "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-11.0.5.tgz", + "integrity": "sha512-coYR071JRaHa+xoEvvYqvnIHaVqaYrLPbsufM9BF63HkwI5Lgmy2QR8Q5K/lYDYo5AK82wOvSOS0UsLTpTG7uQ==", + "requires": { + "@types/webidl-conversions": "*" + } + }, "abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", @@ -3519,6 +3781,11 @@ "fill-range": "^7.1.1" } }, + "bson": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/bson/-/bson-6.10.0.tgz", + "integrity": "sha512-ROchNosXMJD2cbQGm84KoP7vOGPO6/bOAW0veMMbzhXLqoZptcaYRVLitwvuhwhjjpU1qP4YZRWLhgETdgqUQw==" + }, "bytes": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", @@ -3650,7 +3917,6 @@ "version": "4.3.3", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", - "dev": true, "requires": { "ms": "2.1.2" } @@ -3699,6 +3965,11 @@ "esutils": "^2.0.2" } }, + "dotenv": { + "version": "16.4.5", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", + "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==" + }, "ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -4676,6 +4947,11 @@ "minimist": "^1.2.0" } }, + "kareem": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.6.3.tgz", + "integrity": "sha512-C3iHfuGUXK2u8/ipq9LfjFfXFxAZMQJJq7vLS45r3D9Y2xQ/m4S8zaR4zMLFWh9AsNPXmcFfUDhTEO8UIC/V6Q==" + }, "levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", @@ -4713,6 +4989,11 @@ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==" }, + "memory-pager": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", + "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==" + }, "merge-descriptors": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", @@ -4756,6 +5037,56 @@ "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "dev": true }, + "mongodb": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.11.0.tgz", + "integrity": "sha512-yVbPw0qT268YKhG241vAMLaDQAPbRyTgo++odSgGc9kXnzOujQI60Iyj23B9sQQFPSvmNPvMZ3dsFz0aN55KgA==", + "requires": { + "@mongodb-js/saslprep": "^1.1.9", + "bson": "^6.10.0", + "mongodb-connection-string-url": "^3.0.0" + } + }, + "mongodb-connection-string-url": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-3.0.1.tgz", + "integrity": "sha512-XqMGwRX0Lgn05TDB4PyG2h2kKO/FfWJyCzYQbIhXUxz7ETt0I/FqHjUeqj37irJ+Dl1ZtU82uYyj14u2XsZKfg==", + "requires": { + "@types/whatwg-url": "^11.0.2", + "whatwg-url": "^13.0.0" + } + }, + "mongoose": { + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-8.8.2.tgz", + "integrity": "sha512-jCTSqDANfRzk909v4YoZQi7jlGRB2MTvgG+spVBc/BA4tOs1oWJr//V6yYujqNq9UybpOtsSfBqxI0dSOEFJHQ==", + "requires": { + "bson": "^6.7.0", + "kareem": "2.6.3", + "mongodb": "~6.10.0", + "mpath": "0.9.0", + "mquery": "5.0.0", + "ms": "2.1.3", + "sift": "17.1.3" + }, + "dependencies": { + "mongodb": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.10.0.tgz", + "integrity": "sha512-gP9vduuYWb9ZkDM546M+MP2qKVk5ZG2wPF63OvSRuUbqCR+11ZCAE1mOfllhlAG0wcoJY5yDL/rV3OmYEwXIzg==", + "requires": { + "@mongodb-js/saslprep": "^1.1.5", + "bson": "^6.7.0", + "mongodb-connection-string-url": "^3.0.0" + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + } + } + }, "morgan": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz", @@ -4783,11 +5114,23 @@ } } }, + "mpath": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.9.0.tgz", + "integrity": "sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew==" + }, + "mquery": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/mquery/-/mquery-5.0.0.tgz", + "integrity": "sha512-iQMncpmEK8R8ncT8HJGsGc9Dsp8xcgYMVSbs5jgnm1lFHTZqMJTUWTDx1LBO8+mK3tPNZWFLBghQEIOULSTHZg==", + "requires": { + "debug": "4.x" + } + }, "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 + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "nanoid": { "version": "5.0.8", @@ -5054,10 +5397,9 @@ "dev": true }, "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==" }, "qs": { "version": "6.13.0", @@ -5253,6 +5595,11 @@ "object-inspect": "^1.13.1" } }, + "sift": { + "version": "17.1.3", + "resolved": "https://registry.npmjs.org/sift/-/sift-17.1.3.tgz", + "integrity": "sha512-Rtlj66/b0ICeFzYTuNvX/EF1igRbbnGSvEyT79McoZa/DeGhMyC5pWKOEsZKnpkqtSeovd5FL/bjHWC3CIIvCQ==" + }, "simple-update-notifier": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.1.0.tgz", @@ -5281,6 +5628,14 @@ "is-fullwidth-code-point": "^3.0.0" } }, + "sparse-bitfield": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", + "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==", + "requires": { + "memory-pager": "^1.0.2" + } + }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", @@ -5415,6 +5770,14 @@ "nopt": "~1.0.10" } }, + "tr46": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-4.1.1.tgz", + "integrity": "sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==", + "requires": { + "punycode": "^2.3.0" + } + }, "tsconfig-paths": { "version": "3.12.0", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.12.0.tgz", @@ -5499,6 +5862,20 @@ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" }, + "webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==" + }, + "whatwg-url": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-13.0.0.tgz", + "integrity": "sha512-9WWbymnqj57+XEuqADHrCJ2eSXzn8WXIW/YSGaZtb2WKAInQ6CHfaUUcTyyver0p8BDg5StLQq8h1vtZuwmOig==", + "requires": { + "tr46": "^4.1.1", + "webidl-conversions": "^7.0.0" + } + }, "which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", diff --git a/package.json b/package.json index 8290bfb9a99..34c39dac93f 100644 --- a/package.json +++ b/package.json @@ -11,8 +11,11 @@ "dependencies": { "cors": "^2.8.5", "cross-env": "7.0.3", + "dotenv": "^16.4.5", "express": "^4.21.1", "joi": "^17.13.3", + "mongodb": "^6.11.0", + "mongoose": "^8.8.2", "morgan": "^1.10.0", "nanoid": "^5.0.8" }, diff --git a/routes/api/contacts.js b/routes/api/contacts.js index c6ec87094b7..ae0e4109045 100644 --- a/routes/api/contacts.js +++ b/routes/api/contacts.js @@ -1,78 +1,20 @@ const express = require("express"); const router = express.Router(); -const Joi = require("joi"); const { - listContacts, - getContactById, - removeContact, + getAllContacts, + getContact, addContact, - updateContact, -} = require("../../models/contacts"); - -const schema = Joi.object({ - name: Joi.required(), - email: Joi.required(), - phone: Joi.required(), -}); - -router.get("/", async (req, res, next) => { - const contacts = await listContacts(); - res.status(200).json(contacts); - // res.json({ message: "template message" }); -}); - -router.get("/:contactId", async (req, res, next) => { - const contact = await getContactById(req.params.contactId); - if (!contact) { - res.status(404).json({ - message: "Not found.", - }); - return; - } - res.status(200).json(contact); - // res.json({ message: "template message" }); -}); - -router.post("/", async (req, res, next) => { - const result = schema.validate(req.body); - if (result.error) { - res.status(400).json({ message: "missing required field" }); - } else { - await addContact(req.body); - res.status(201).json(req.body); - } - // res.json({ message: "template message" }); -}); - -router.delete("/:contactId", async (req, res, next) => { - const contact = await removeContact(req.params.contactId); - if (!contact) { - res.status(404).json({ - message: "Not found.", - }); - return; - } - res.status(200).json({ message: "Contact deleted" }); - // res.json({ message: "template message" }); -}); - -router.put("/:contactId", async (req, res, next) => { - const result = schema.validate(req.body); - if (result.error) { - return res.status(400).json({ message: "missing required field" }); - } - - const contact = await updateContact(req.params.contactId, req.body); - if (!contact) { - res.status(404).json({ - message: "Not found.", - }); - return; - } - - res.status(200).json(req.body); - // res.json({ message: "template message" }); -}); + removeContact, + putContact, + patchContact, +} = require("../../controllers/contacts"); + +router.get("/", getAllContacts); +router.get("/:contactId", getContact); +router.post("/", addContact); +router.put("/:contactId", putContact); +router.patch("/:contactId/favorite", patchContact); +router.delete("/:contactId", removeContact); module.exports = router; diff --git a/server.js b/server.js index 6730408264a..d37c243cf8a 100644 --- a/server.js +++ b/server.js @@ -1,5 +1,28 @@ const app = require("./app"); +const mongoose = require("mongoose"); +require("dotenv").config(); -app.listen(3001, () => { - console.log("Server running. Use our API on port: 3001"); -}); +const { DB_HOST: urlDb } = process.env; +const connection = mongoose.connect(urlDb); + +// connection.then(()=>{ +// console.log('DB connected!') +// }).catch((err)=>{ +// console.log(err) +// process.exit(1) +// }) + +const startServer = async () => { + try { + await connection; + app.listen(3000, () => { + console.log("Server running. Use our API on port: 3000"); + }); + console.log("Database connection successful!"); + } catch (err) { + console.log(err); + process.exit(1); + } +}; + +startServer(); From 0d469a689c1465fb5cedd534403101dacef0f880 Mon Sep 17 00:00:00 2001 From: cygan3107 Date: Tue, 26 Nov 2024 21:59:02 +0100 Subject: [PATCH 05/13] commit --- models/contacts.js | 4 ++-- server.js | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/models/contacts.js b/models/contacts.js index 11eeb0886fe..d09b3e612bf 100644 --- a/models/contacts.js +++ b/models/contacts.js @@ -1,6 +1,6 @@ const mongoose = require("mongoose"); - -const contactSchema = new mongoose.Schema( +const { Schema } = mongoose; +const contactSchema = new Schema( { name: { type: String, diff --git a/server.js b/server.js index d37c243cf8a..4bba35f0fb2 100644 --- a/server.js +++ b/server.js @@ -18,7 +18,7 @@ const startServer = async () => { app.listen(3000, () => { console.log("Server running. Use our API on port: 3000"); }); - console.log("Database connection successful!"); + console.log("DB connected"); } catch (err) { console.log(err); process.exit(1); From 8916b7176a8bd4f101de7236cf8cbd495d0823d1 Mon Sep 17 00:00:00 2001 From: cygan3107 Date: Tue, 26 Nov 2024 23:04:48 +0100 Subject: [PATCH 06/13] done --- controllers/contacts.js | 2 +- models/contacts.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/controllers/contacts.js b/controllers/contacts.js index 6e08858b8d8..ce3fc621eb7 100644 --- a/controllers/contacts.js +++ b/controllers/contacts.js @@ -43,7 +43,7 @@ const removeContact = async (req, res, next) => { const { contactId } = req.params; try { await deleteContact(contactId); - res.status(200).send({ message: "Task deleted" }); + res.status(200).send({ message: "Contact deleted" }); } catch (error) { next(error); } diff --git a/models/contacts.js b/models/contacts.js index d09b3e612bf..3a7da93ae03 100644 --- a/models/contacts.js +++ b/models/contacts.js @@ -25,6 +25,6 @@ const contactSchema = new Schema( } ); -const Contact = mongoose.model("Contact", contactSchema); +const Contact = mongoose.model("contact", contactSchema); module.exports = Contact; From bdd430bf830741a8f64ccbf87f6f29afe011bc6f Mon Sep 17 00:00:00 2001 From: cygan3107 Date: Thu, 28 Nov 2024 21:33:51 +0100 Subject: [PATCH 07/13] firstly --- JWT/configJWT.js | 0 JWT/middlewareJWT.js | 0 models/user.js | 41 + package-lock.json | 970 +++++++++++++++++- package.json | 6 +- routes/api/allRouter.js | 0 routes/api/authRouter.js | 0 routes/api/{contacts.js => contactsRouter.js} | 0 8 files changed, 963 insertions(+), 54 deletions(-) create mode 100644 JWT/configJWT.js create mode 100644 JWT/middlewareJWT.js create mode 100644 models/user.js create mode 100644 routes/api/allRouter.js create mode 100644 routes/api/authRouter.js rename routes/api/{contacts.js => contactsRouter.js} (100%) diff --git a/JWT/configJWT.js b/JWT/configJWT.js new file mode 100644 index 00000000000..e69de29bb2d diff --git a/JWT/middlewareJWT.js b/JWT/middlewareJWT.js new file mode 100644 index 00000000000..e69de29bb2d diff --git a/models/user.js b/models/user.js new file mode 100644 index 00000000000..626dc4e35f3 --- /dev/null +++ b/models/user.js @@ -0,0 +1,41 @@ +const mongoose = require("mongoose"); +const bCrypt = require("bcrypt"); +const { Schema } = mongoose; +const userSchema = new Schema( + { + password: { + type: String, + required: [true, "Password is required"], + }, + email: { + type: String, + required: [true, "Email is required"], + unique: true, + }, + subscription: { + type: String, + enum: ["starter", "pro", "business"], + default: "starter", + }, + token: { + type: String, + default: null, + }, + }, + { + versionKey: false, + timestamps: true, + } +); + +userSchema.methods.setPassword = async function (password) { + this.password = await bCrypt.hash(password, 10); +}; + +userSchema.methods.validatePassword = function (password) { + return bCrypt.compare(password, this.password); +}; + +const User = mongoose.model("user", userSchema, "user"); + +module.exports = User; diff --git a/package-lock.json b/package-lock.json index 991e8c61859..128733bd83a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,15 +8,19 @@ "name": "template", "version": "0.0.0", "dependencies": { + "bcrypt": "^5.1.1", "cors": "^2.8.5", "cross-env": "7.0.3", "dotenv": "^16.4.5", "express": "^4.21.1", "joi": "^17.13.3", + "jsonwebtoken": "^9.0.2", "mongodb": "^6.11.0", "mongoose": "^8.8.2", "morgan": "^1.10.0", - "nanoid": "^5.0.8" + "nanoid": "^5.0.8", + "passport": "^0.7.0", + "passport-jwt": "^4.0.1" }, "devDependencies": { "eslint": "7.19.0", @@ -159,6 +163,39 @@ "@hapi/hoek": "^9.0.0" } }, + "node_modules/@mapbox/node-pre-gyp": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz", + "integrity": "sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==", + "dependencies": { + "detect-libc": "^2.0.0", + "https-proxy-agent": "^5.0.0", + "make-dir": "^3.1.0", + "node-fetch": "^2.6.7", + "nopt": "^5.0.0", + "npmlog": "^5.0.1", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.11" + }, + "bin": { + "node-pre-gyp": "bin/node-pre-gyp" + } + }, + "node_modules/@mapbox/node-pre-gyp/node_modules/nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/@mongodb-js/saslprep": { "version": "1.1.9", "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.9.tgz", @@ -207,8 +244,7 @@ "node_modules/abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "dev": true + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" }, "node_modules/accepts": { "version": "1.3.8", @@ -243,6 +279,17 @@ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, "node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -272,7 +319,6 @@ "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" } @@ -305,6 +351,24 @@ "node": ">= 8" } }, + "node_modules/aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==" + }, + "node_modules/are-we-there-yet": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", + "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", + "deprecated": "This package is no longer supported.", + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", @@ -367,8 +431,7 @@ "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, "node_modules/basic-auth": { "version": "2.0.1", @@ -381,6 +444,19 @@ "node": ">= 0.8" } }, + "node_modules/bcrypt": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-5.1.1.tgz", + "integrity": "sha512-AGBHOG5hPYZ5Xl9KXzU5iKq9516yEmvCKDg3ecP5kX2aB6UqTeXZxk2ELnDgDm6BQSMlLt9rDB4LoSMx0rYwww==", + "hasInstallScript": true, + "dependencies": { + "@mapbox/node-pre-gyp": "^1.0.11", + "node-addon-api": "^5.0.0" + }, + "engines": { + "node": ">= 10.0.0" + } + }, "node_modules/binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", @@ -441,7 +517,6 @@ "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -467,6 +542,11 @@ "node": ">=16.20.1" } }, + "node_modules/buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==" + }, "node_modules/bytes": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", @@ -539,6 +619,14 @@ "fsevents": "~2.3.2" } }, + "node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "engines": { + "node": ">=10" + } + }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -557,11 +645,23 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "node_modules/color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "bin": { + "color-support": "bin.js" + } + }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "node_modules/console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==" }, "node_modules/content-disposition": { "version": "0.5.4", @@ -706,6 +806,11 @@ "node": ">= 0.4" } }, + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==" + }, "node_modules/depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", @@ -723,6 +828,14 @@ "npm": "1.2.8000 || >= 1.4.16" } }, + "node_modules/detect-libc": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", + "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", + "engines": { + "node": ">=8" + } + }, "node_modules/doctrine": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", @@ -746,6 +859,14 @@ "url": "https://dotenvx.com" } }, + "node_modules/ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -754,8 +875,7 @@ "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 + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, "node_modules/encodeurl": { "version": "2.0.0", @@ -1482,11 +1602,32 @@ "node": ">= 0.6" } }, + "node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/fs-minipass/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, "node_modules/fsevents": { "version": "2.3.2", @@ -1516,6 +1657,26 @@ "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", "dev": true }, + "node_modules/gauge": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", + "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", + "deprecated": "This package is no longer supported.", + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.2", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.1", + "object-assign": "^4.1.1", + "signal-exit": "^3.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.2" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/get-intrinsic": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", @@ -1554,7 +1715,6 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "dev": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -1686,6 +1846,11 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==" + }, "node_modules/hasown": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", @@ -1712,6 +1877,18 @@ "node": ">= 0.8" } }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -1767,7 +1944,6 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -1892,7 +2068,6 @@ "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" } @@ -2072,6 +2247,46 @@ "json5": "lib/cli.js" } }, + "node_modules/jsonwebtoken": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", + "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==", + "dependencies": { + "jws": "^3.2.2", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=12", + "npm": ">=6" + } + }, + "node_modules/jwa": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", + "dependencies": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jws": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", + "dependencies": { + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" + } + }, "node_modules/kareem": { "version": "2.6.3", "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.6.3.tgz", @@ -2112,12 +2327,69 @@ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, + "node_modules/lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==" + }, + "node_modules/lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==" + }, + "node_modules/lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==" + }, + "node_modules/lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==" + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" + }, + "node_modules/lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==" + }, + "node_modules/lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==" + }, "node_modules/lodash.truncate": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", "dev": true }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", @@ -2181,7 +2453,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, "dependencies": { "brace-expansion": "^1.1.7" }, @@ -2198,6 +2469,48 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/mongodb": { "version": "6.11.0", "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.11.0.tgz", @@ -2406,6 +2719,49 @@ "node": ">= 0.6" } }, + "node_modules/node-addon-api": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.1.0.tgz", + "integrity": "sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==" + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-fetch/node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "node_modules/node-fetch/node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "node_modules/node-fetch/node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, "node_modules/nodemon": { "version": "2.0.22", "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.22.tgz", @@ -2497,6 +2853,18 @@ "node": ">=0.10.0" } }, + "node_modules/npmlog": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", + "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", + "deprecated": "This package is no longer supported.", + "dependencies": { + "are-we-there-yet": "^2.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^3.0.0", + "set-blocking": "^2.0.0" + } + }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -2583,7 +2951,6 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, "dependencies": { "wrappy": "1" } @@ -2658,6 +3025,40 @@ "node": ">= 0.8" } }, + "node_modules/passport": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/passport/-/passport-0.7.0.tgz", + "integrity": "sha512-cPLl+qZpSc+ireUvt+IzqbED1cHHkDoVYMo30jbJIdOOjQ1MQYZBPiNvmi8UM6lJuOpTPXJGZQk0DtC4y61MYQ==", + "dependencies": { + "passport-strategy": "1.x.x", + "pause": "0.0.1", + "utils-merge": "^1.0.1" + }, + "engines": { + "node": ">= 0.4.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/jaredhanson" + } + }, + "node_modules/passport-jwt": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/passport-jwt/-/passport-jwt-4.0.1.tgz", + "integrity": "sha512-UCKMDYhNuGOBE9/9Ycuoyh7vP6jpeTp/+sfMJl7nLff/t6dps+iaeE0hhNkKN8/HZHcJ7lCdOyDxHdDoxoSvdQ==", + "dependencies": { + "jsonwebtoken": "^9.0.0", + "passport-strategy": "^1.0.0" + } + }, + "node_modules/passport-strategy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz", + "integrity": "sha512-CB97UUvDKJde2V0KDWWB3lyf6PC3FaZP7YxZ2G8OAtn9p4HI9j9JLP9qjOGZFvyl8uwNT8qM+hGnz/n16NI7oA==", + "engines": { + "node": ">= 0.4.0" + } + }, "node_modules/path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", @@ -2671,7 +3072,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -2695,6 +3095,11 @@ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz", "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==" }, + "node_modules/pause": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/pause/-/pause-0.0.1.tgz", + "integrity": "sha512-KG8UEiEVkR3wGEb4m5yZkVCzigAD+cVEJck2CzYZO37ZGJfctvVptVO192MwrtPhzONn6go8ylnOdMhKqi4nfg==" + }, "node_modules/picomatch": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", @@ -2799,6 +3204,19 @@ "node": ">= 0.8" } }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", @@ -2858,7 +3276,6 @@ "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" }, @@ -2883,7 +3300,6 @@ "version": "7.6.3", "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "dev": true, "bin": { "semver": "bin/semver.js" }, @@ -2965,6 +3381,11 @@ "node": ">= 0.8.0" } }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" + }, "node_modules/set-function-length": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", @@ -3027,6 +3448,11 @@ "resolved": "https://registry.npmjs.org/sift/-/sift-17.1.3.tgz", "integrity": "sha512-Rtlj66/b0ICeFzYTuNvX/EF1igRbbnGSvEyT79McoZa/DeGhMyC5pWKOEsZKnpkqtSeovd5FL/bjHWC3CIIvCQ==" }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, "node_modules/simple-update-notifier": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.1.0.tgz", @@ -3087,11 +3513,37 @@ "node": ">= 0.8" } }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string_decoder/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==", + "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/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", @@ -3131,7 +3583,6 @@ "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" }, @@ -3210,6 +3661,22 @@ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true }, + "node_modules/tar": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", + "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -3342,6 +3809,11 @@ "punycode": "^2.1.0" } }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, "node_modules/utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", @@ -3414,6 +3886,14 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, "node_modules/word-wrap": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", @@ -3426,8 +3906,12 @@ "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" } }, "dependencies": { @@ -3540,6 +4024,32 @@ "@hapi/hoek": "^9.0.0" } }, + "@mapbox/node-pre-gyp": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz", + "integrity": "sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==", + "requires": { + "detect-libc": "^2.0.0", + "https-proxy-agent": "^5.0.0", + "make-dir": "^3.1.0", + "node-fetch": "^2.6.7", + "nopt": "^5.0.0", + "npmlog": "^5.0.1", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.11" + }, + "dependencies": { + "nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "requires": { + "abbrev": "1" + } + } + } + }, "@mongodb-js/saslprep": { "version": "1.1.9", "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.9.tgz", @@ -3588,8 +4098,7 @@ "abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "dev": true + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" }, "accepts": { "version": "1.3.8", @@ -3613,6 +4122,14 @@ "dev": true, "requires": {} }, + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "requires": { + "debug": "4" + } + }, "ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -3634,8 +4151,7 @@ "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 + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" }, "ansi-styles": { "version": "4.3.0", @@ -3656,6 +4172,20 @@ "picomatch": "^2.0.4" } }, + "aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==" + }, + "are-we-there-yet": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", + "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + } + }, "argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", @@ -3703,8 +4233,7 @@ "balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, "basic-auth": { "version": "2.0.1", @@ -3714,6 +4243,15 @@ "safe-buffer": "5.1.2" } }, + "bcrypt": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-5.1.1.tgz", + "integrity": "sha512-AGBHOG5hPYZ5Xl9KXzU5iKq9516yEmvCKDg3ecP5kX2aB6UqTeXZxk2ELnDgDm6BQSMlLt9rDB4LoSMx0rYwww==", + "requires": { + "@mapbox/node-pre-gyp": "^1.0.11", + "node-addon-api": "^5.0.0" + } + }, "binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", @@ -3766,7 +4304,6 @@ "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -3786,6 +4323,11 @@ "resolved": "https://registry.npmjs.org/bson/-/bson-6.10.0.tgz", "integrity": "sha512-ROchNosXMJD2cbQGm84KoP7vOGPO6/bOAW0veMMbzhXLqoZptcaYRVLitwvuhwhjjpU1qP4YZRWLhgETdgqUQw==" }, + "buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==" + }, "bytes": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", @@ -3835,6 +4377,11 @@ "readdirp": "~3.6.0" } }, + "chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==" + }, "color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -3850,11 +4397,20 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==" + }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==" }, "content-disposition": { "version": "0.5.4", @@ -3946,6 +4502,11 @@ "object-keys": "^1.0.12" } }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==" + }, "depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", @@ -3956,6 +4517,11 @@ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==" }, + "detect-libc": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", + "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==" + }, "doctrine": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", @@ -3970,6 +4536,14 @@ "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==" }, + "ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "requires": { + "safe-buffer": "^5.0.1" + } + }, "ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -3978,8 +4552,7 @@ "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 + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, "encodeurl": { "version": "2.0.0", @@ -4535,11 +5108,28 @@ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==" }, + "fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "requires": { + "minipass": "^3.0.0" + }, + "dependencies": { + "minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "requires": { + "yallist": "^4.0.0" + } + } + } + }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, "fsevents": { "version": "2.3.2", @@ -4559,6 +5149,22 @@ "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", "dev": true }, + "gauge": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", + "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", + "requires": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.2", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.1", + "object-assign": "^4.1.1", + "signal-exit": "^3.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.2" + } + }, "get-intrinsic": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", @@ -4585,7 +5191,6 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "dev": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -4669,6 +5274,11 @@ "has-symbols": "^1.0.2" } }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==" + }, "hasown": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", @@ -4689,6 +5299,15 @@ "toidentifier": "1.0.1" } }, + "https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "requires": { + "agent-base": "6", + "debug": "4" + } + }, "iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -4729,7 +5348,6 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, "requires": { "once": "^1.3.0", "wrappy": "1" @@ -4817,8 +5435,7 @@ "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 + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" }, "is-glob": { "version": "4.0.3", @@ -4947,6 +5564,42 @@ "minimist": "^1.2.0" } }, + "jsonwebtoken": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", + "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==", + "requires": { + "jws": "^3.2.2", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "semver": "^7.5.4" + } + }, + "jwa": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", + "requires": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "jws": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", + "requires": { + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" + } + }, "kareem": { "version": "2.6.3", "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.6.3.tgz", @@ -4978,12 +5631,62 @@ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, + "lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==" + }, + "lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==" + }, + "lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==" + }, + "lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==" + }, + "lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" + }, + "lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==" + }, + "lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==" + }, "lodash.truncate": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", "dev": true }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "requires": { + "semver": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" + } + } + }, "media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", @@ -5026,7 +5729,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, "requires": { "brace-expansion": "^1.1.7" } @@ -5037,6 +5739,35 @@ "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "dev": true }, + "minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==" + }, + "minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "requires": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "dependencies": { + "minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "requires": { + "yallist": "^4.0.0" + } + } + } + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" + }, "mongodb": { "version": "6.11.0", "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.11.0.tgz", @@ -5148,6 +5879,40 @@ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" }, + "node-addon-api": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.1.0.tgz", + "integrity": "sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==" + }, + "node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "requires": { + "whatwg-url": "^5.0.0" + }, + "dependencies": { + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + } + } + }, "nodemon": { "version": "2.0.22", "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.22.tgz", @@ -5213,6 +5978,17 @@ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true }, + "npmlog": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", + "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", + "requires": { + "are-we-there-yet": "^2.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^3.0.0", + "set-blocking": "^2.0.0" + } + }, "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -5269,7 +6045,6 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, "requires": { "wrappy": "1" } @@ -5326,6 +6101,30 @@ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" }, + "passport": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/passport/-/passport-0.7.0.tgz", + "integrity": "sha512-cPLl+qZpSc+ireUvt+IzqbED1cHHkDoVYMo30jbJIdOOjQ1MQYZBPiNvmi8UM6lJuOpTPXJGZQk0DtC4y61MYQ==", + "requires": { + "passport-strategy": "1.x.x", + "pause": "0.0.1", + "utils-merge": "^1.0.1" + } + }, + "passport-jwt": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/passport-jwt/-/passport-jwt-4.0.1.tgz", + "integrity": "sha512-UCKMDYhNuGOBE9/9Ycuoyh7vP6jpeTp/+sfMJl7nLff/t6dps+iaeE0hhNkKN8/HZHcJ7lCdOyDxHdDoxoSvdQ==", + "requires": { + "jsonwebtoken": "^9.0.0", + "passport-strategy": "^1.0.0" + } + }, + "passport-strategy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz", + "integrity": "sha512-CB97UUvDKJde2V0KDWWB3lyf6PC3FaZP7YxZ2G8OAtn9p4HI9j9JLP9qjOGZFvyl8uwNT8qM+hGnz/n16NI7oA==" + }, "path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", @@ -5335,8 +6134,7 @@ "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" }, "path-key": { "version": "3.1.1", @@ -5354,6 +6152,11 @@ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz", "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==" }, + "pause": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/pause/-/pause-0.0.1.tgz", + "integrity": "sha512-KG8UEiEVkR3wGEb4m5yZkVCzigAD+cVEJck2CzYZO37ZGJfctvVptVO192MwrtPhzONn6go8ylnOdMhKqi4nfg==" + }, "picomatch": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", @@ -5425,6 +6228,16 @@ "unpipe": "1.0.0" } }, + "readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, "readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", @@ -5466,7 +6279,6 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, "requires": { "glob": "^7.1.3" } @@ -5484,8 +6296,7 @@ "semver": { "version": "7.6.3", "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "dev": true + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==" }, "send": { "version": "0.19.0", @@ -5553,6 +6364,11 @@ "send": "0.19.0" } }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" + }, "set-function-length": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", @@ -5600,6 +6416,11 @@ "resolved": "https://registry.npmjs.org/sift/-/sift-17.1.3.tgz", "integrity": "sha512-Rtlj66/b0ICeFzYTuNvX/EF1igRbbnGSvEyT79McoZa/DeGhMyC5pWKOEsZKnpkqtSeovd5FL/bjHWC3CIIvCQ==" }, + "signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, "simple-update-notifier": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.1.0.tgz", @@ -5647,11 +6468,25 @@ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "requires": { + "safe-buffer": "~5.2.0" + }, + "dependencies": { + "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==" + } + } + }, "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, "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -5682,7 +6517,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, "requires": { "ansi-regex": "^5.0.1" } @@ -5741,6 +6575,19 @@ } } }, + "tar": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", + "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", + "requires": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + } + }, "text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -5846,6 +6693,11 @@ "punycode": "^2.1.0" } }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, "utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", @@ -5897,6 +6749,14 @@ "is-symbol": "^1.0.3" } }, + "wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "requires": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, "word-wrap": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", @@ -5906,8 +6766,12 @@ "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" } } } diff --git a/package.json b/package.json index 34c39dac93f..996131c3f35 100644 --- a/package.json +++ b/package.json @@ -9,15 +9,19 @@ "lint:fix": "eslint --fix **/*.js" }, "dependencies": { + "bcrypt": "^5.1.1", "cors": "^2.8.5", "cross-env": "7.0.3", "dotenv": "^16.4.5", "express": "^4.21.1", "joi": "^17.13.3", + "jsonwebtoken": "^9.0.2", "mongodb": "^6.11.0", "mongoose": "^8.8.2", "morgan": "^1.10.0", - "nanoid": "^5.0.8" + "nanoid": "^5.0.8", + "passport": "^0.7.0", + "passport-jwt": "^4.0.1" }, "devDependencies": { "eslint": "7.19.0", diff --git a/routes/api/allRouter.js b/routes/api/allRouter.js new file mode 100644 index 00000000000..e69de29bb2d diff --git a/routes/api/authRouter.js b/routes/api/authRouter.js new file mode 100644 index 00000000000..e69de29bb2d diff --git a/routes/api/contacts.js b/routes/api/contactsRouter.js similarity index 100% rename from routes/api/contacts.js rename to routes/api/contactsRouter.js From 4fda10ff49b2795ae0ca9d9c670356e52bd728be Mon Sep 17 00:00:00 2001 From: cygan3107 Date: Sat, 30 Nov 2024 14:36:22 +0100 Subject: [PATCH 08/13] first --- JWT/configJWT.js | 27 +++++++ JWT/middlewareJWT.js | 20 +++++ app.js | 18 +++-- models/user.js | 1 + routes/allRouter.js | 11 +++ routes/api/allRouter.js | 0 routes/api/authRouter.js | 0 routes/authRouter.js | 118 +++++++++++++++++++++++++++++ routes/{api => }/contactsRouter.js | 4 +- 9 files changed, 190 insertions(+), 9 deletions(-) create mode 100644 routes/allRouter.js delete mode 100644 routes/api/allRouter.js delete mode 100644 routes/api/authRouter.js create mode 100644 routes/authRouter.js rename routes/{api => }/contactsRouter.js (91%) diff --git a/JWT/configJWT.js b/JWT/configJWT.js index e69de29bb2d..3faad142a87 100644 --- a/JWT/configJWT.js +++ b/JWT/configJWT.js @@ -0,0 +1,27 @@ +const passport = require("passport"); +const { ExtractJwt, Strategy } = require("passport-jwt"); +const User = require("../models/user"); +require("dotenv").config(); + +const JWTStrategy = () => { + const secret = process.env.SECRET; + const params = { + secretOrKey: secret, + jwtFromRequest: ExtractJwt.fromAuthHeaderAsBearerToken(), + }; + passport.use( + new Strategy(params, async function (payload, done) { + try { + const user = await User.findOne({ _id: payload.id }); + if (!user) { + return done(new Error("User not found.")); + } + return done(null, user); + } catch (error) { + return done(error); + } + }) + ); +}; + +module.exports = JWTStrategy; diff --git a/JWT/middlewareJWT.js b/JWT/middlewareJWT.js index e69de29bb2d..3fb6c60a9f2 100644 --- a/JWT/middlewareJWT.js +++ b/JWT/middlewareJWT.js @@ -0,0 +1,20 @@ +const passport = require("passport"); + +const authMiddleware = (req, res, next) => { + passport.authenticate( + "jwt", + { + session: false, + }, + (err, user) => { + if (!user || err || user.token === null) { + return res.status(401).json({ message: "Not authorized" }); + } + + res.locals.user = user; + next(); + } + )(req, res, next); +}; + +module.exports = authMiddleware; diff --git a/app.js b/app.js index 126320b99d1..3488ba0fa2d 100644 --- a/app.js +++ b/app.js @@ -1,10 +1,9 @@ const express = require("express"); const logger = require("morgan"); const cors = require("cors"); - -const contactsRouter = require("./routes/api/contacts"); - +const allRouter = require("./routes/allRouter"); const app = express(); +const JWTStrategy = require("./JWT/configJWT"); const formatsLogger = app.get("env") === "development" ? "dev" : "short"; @@ -12,15 +11,20 @@ app.use(logger(formatsLogger)); app.use(cors()); app.use(express.json()); -app.use("/api/contacts", contactsRouter); +JWTStrategy(); + +app.use("/api", allRouter); app.use((req, res) => { - res.status(404).json({ message: `Not found` }); + res.status(404).json({ message: `Not found - ${req.path}` }); }); app.use((err, req, res, next) => { - const { status = 500, message = "Server error" } = err; - res.status(status).json({ message }); + if (err.name === "ValidationError") { + return res.status(400).json({ message: err.message }); + } else { + res.status(500).json({ message: err.message || "Something went wrong" }); + } }); module.exports = app; diff --git a/models/user.js b/models/user.js index 626dc4e35f3..792a5c0ed30 100644 --- a/models/user.js +++ b/models/user.js @@ -37,5 +37,6 @@ userSchema.methods.validatePassword = function (password) { }; const User = mongoose.model("user", userSchema, "user"); +// users ostatnie ? module.exports = User; diff --git a/routes/allRouter.js b/routes/allRouter.js new file mode 100644 index 00000000000..40039895ad0 --- /dev/null +++ b/routes/allRouter.js @@ -0,0 +1,11 @@ +const express = require("express"); +const authRouter = require("./authRouter.js"); +const contactsRouter = require("./contactsRouter.js"); +const authMiddleware = require("../JWT/middlewareJWT.js"); + +const router = express.Router(); + +router.use("/users", authRouter); +router.use("/contacts", authMiddleware, contactsRouter); + +module.exports = router; diff --git a/routes/api/allRouter.js b/routes/api/allRouter.js deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/routes/api/authRouter.js b/routes/api/authRouter.js deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/routes/authRouter.js b/routes/authRouter.js new file mode 100644 index 00000000000..4dca1ed096b --- /dev/null +++ b/routes/authRouter.js @@ -0,0 +1,118 @@ +const express = require("express"); +const jwt = require("jsonwebtoken"); +const User = require("../models/user"); +const Joi = require("joi"); +const authMiddleware = require("../JWT/middlewareJWT"); + +const router = express.Router(); + +const schema = Joi.object({ + email: Joi.string() + .email({ tlds: { allow: ["com", "org", "net"] } }) + .required(), + password: Joi.string() + .min(8) + .max(20) + .regex(/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[\W_]).{8,20}$/) + .required(), +}); + +// + +router.post("/signup", async (req, res, next) => { + const { error, value } = schema.validate(req.body); + if (error) { + return res + .status(400) + .json({ message: "Validation failed", details: error.details }); + } + + const user = await User.findOne({ email: value.email }); + + if (user) { + return res.status(409).json({ message: "This email is already taken" }); + } + try { + const newUser = new User({ email: value.email }); + await newUser.setPassword(value.password); + await newUser.save(); + return res.status(201).json({ + user: { + email: newUser.email, + subscription: newUser.subscription, + }, + }); + } catch (error) { + next(error); + } +}); + +// + +router.post("/login", async (req, res, next) => { + const { error, value } = schema.validate(req.body); + if (error) { + return res + .status(400) + .json({ message: "Validation failed", details: error.details }); + } + + const user = await User.findOne({ email: value.email }); + + if (!user) { + return res + .status(400) + .json({ message: "There is no user with this email" }); + } + const isPasswordCorrect = await user.validatePassword(value.password); + + if (isPasswordCorrect) { + const payload = { + id: user._id, + }; + const token = jwt.sign(payload, process.env.SECRET, { expiresIn: "12h" }); + user.token = token; + await user.save(); + return res.status(200).json({ + token: user.token, + user: { + email: user.email, + subscription: user.subscription, + }, + }); + } else { + return res.status(401).json({ message: "Email or password is wrong" }); + } +}); + +// + +router.post("/logout", authMiddleware, async (req, res, next) => { + const userData = res.locals.user; + const user = await User.findOne({ _id: userData.id }); + + if (!user) { + return res.status(401).json({ message: "Not authorized" }); + } else { + await User.updateOne({ _id: user.id }, { $set: { token: null } }); + return res.status(204).send(); + } +}); + +// + +router.get("/current", authMiddleware, async (req, res, next) => { + const userData = res.locals.user; + const user = await User.findOne({ _id: userData.id }); + + if (!user) { + return res.status(401).json({ message: "Not authorized" }); + } else { + return res.status(200).json({ + email: user.email, + subscription: user.subscription, + }); + } +}); + +module.exports = router; diff --git a/routes/api/contactsRouter.js b/routes/contactsRouter.js similarity index 91% rename from routes/api/contactsRouter.js rename to routes/contactsRouter.js index ae0e4109045..9339ec5ec5e 100644 --- a/routes/api/contactsRouter.js +++ b/routes/contactsRouter.js @@ -1,6 +1,6 @@ const express = require("express"); - const router = express.Router(); + const { getAllContacts, getContact, @@ -8,7 +8,7 @@ const { removeContact, putContact, patchContact, -} = require("../../controllers/contacts"); +} = require("../controllers/contacts"); router.get("/", getAllContacts); router.get("/:contactId", getContact); From fdbb4bb9e842872c2d7a47a3c84de53efcb1184c Mon Sep 17 00:00:00 2001 From: cygan3107 Date: Wed, 4 Dec 2024 12:00:47 +0100 Subject: [PATCH 09/13] done --- models/user.js | 1 - routes/authRouter.js | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/models/user.js b/models/user.js index 792a5c0ed30..626dc4e35f3 100644 --- a/models/user.js +++ b/models/user.js @@ -37,6 +37,5 @@ userSchema.methods.validatePassword = function (password) { }; const User = mongoose.model("user", userSchema, "user"); -// users ostatnie ? module.exports = User; diff --git a/routes/authRouter.js b/routes/authRouter.js index 4dca1ed096b..9a0c2f146b6 100644 --- a/routes/authRouter.js +++ b/routes/authRouter.js @@ -72,6 +72,7 @@ router.post("/login", async (req, res, next) => { }; const token = jwt.sign(payload, process.env.SECRET, { expiresIn: "12h" }); user.token = token; + console.log(token); await user.save(); return res.status(200).json({ token: user.token, From bf6209db76b830d42baf13dbace959e88347fb72 Mon Sep 17 00:00:00 2001 From: cygan3107 Date: Wed, 4 Dec 2024 16:01:22 +0100 Subject: [PATCH 10/13] update --- routes/authRouter.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/routes/authRouter.js b/routes/authRouter.js index 9a0c2f146b6..56d44c670f9 100644 --- a/routes/authRouter.js +++ b/routes/authRouter.js @@ -8,7 +8,7 @@ const router = express.Router(); const schema = Joi.object({ email: Joi.string() - .email({ tlds: { allow: ["com", "org", "net"] } }) + .email({ tlds: { allow: ["pl", "com", "org", "net"] } }) .required(), password: Joi.string() .min(8) From 0a8faefd39323425f9297f41de7c8e5ecf792dd6 Mon Sep 17 00:00:00 2001 From: cygan3107 Date: Sat, 7 Dec 2024 22:15:48 +0100 Subject: [PATCH 11/13] first --- Multer/configMulter.js | 35 + app.js | 2 + controllers/avatars.js | 44 + helpers.js | 16 + package-lock.json | 2027 ++++++++++++++++++++-- package.json | 6 +- public/avatars/demo.jpg | Bin 0 -> 277829 bytes readme.es.md | 27 - readme.md | 31 - readme.ro.md | 29 - routes/allRouter.js | 4 +- routes/{authRouter.js => usersRouter.js} | 28 +- 12 files changed, 2049 insertions(+), 200 deletions(-) create mode 100644 Multer/configMulter.js create mode 100644 controllers/avatars.js create mode 100644 helpers.js create mode 100644 public/avatars/demo.jpg delete mode 100644 readme.es.md delete mode 100644 readme.md delete mode 100644 readme.ro.md rename routes/{authRouter.js => usersRouter.js} (84%) diff --git a/Multer/configMulter.js b/Multer/configMulter.js new file mode 100644 index 00000000000..494735fb6c0 --- /dev/null +++ b/Multer/configMulter.js @@ -0,0 +1,35 @@ +const multer = require("multer"); +const path = require("path"); +const { v4: uuidV4 } = require("uuid"); + +const tempDir = path.join(process.cwd(), "tmp"); + +const storage = multer.diskStorage({ + destination: (req, file, cb) => { + cb(null, tempDir); + }, + filename: (req, file, cb) => { + cb(null, `${uuidV4()}${path.extname(file.originalname)}`); + }, +}); + +const extensionWhiteList = [".jpg", ".jpeg", ".png", ".gif"]; +const mimetypeWhiteList = ["image/png", "image/jpg", "image/jpeg", "image/gif"]; + +const uploadMiddleware = multer({ + storage, + fileFilter: async (req, file, cb) => { + const extension = path.extname(file.originalname).toLowerCase(); + const mimetype = file.mimetype.toLowerCase(); + if ( + !extensionWhiteList.includes(extension) || + !mimetypeWhiteList.includes(mimetype) + ) { + return cb(new Error("Invalid file type"), false); + } + return cb(null, true); + }, + limits: { fileSize: 1024 * 1024 * 5 }, +}); + +module.exports = { uploadMiddleware }; diff --git a/app.js b/app.js index 3488ba0fa2d..d7f2a6d2c9f 100644 --- a/app.js +++ b/app.js @@ -4,12 +4,14 @@ const cors = require("cors"); const allRouter = require("./routes/allRouter"); const app = express(); const JWTStrategy = require("./JWT/configJWT"); +const path = require("path"); const formatsLogger = app.get("env") === "development" ? "dev" : "short"; app.use(logger(formatsLogger)); app.use(cors()); app.use(express.json()); +app.use(express.static(path.resolve(__dirname, "./public"))); JWTStrategy(); diff --git a/controllers/avatars.js b/controllers/avatars.js new file mode 100644 index 00000000000..3bde1078dd6 --- /dev/null +++ b/controllers/avatars.js @@ -0,0 +1,44 @@ +const fs = require("fs").promises; +const path = require("path"); +const { v4: uuidV4 } = require("uuid"); +const User = require("../models/user"); +const { isImageAndTransform } = require("../helpers"); + +const updateAvatar = async (req, res, next) => { + if (!req.file) { + return res.status(400).json({ message: "No file uploaded" }); + } + + const { path: temporaryPath } = req.file; + const extension = path.extname(temporaryPath); + const fileName = `${uuidV4()}${extension}`; + const filePath = path.join(process.cwd(), "public/avatars", fileName); + + try { + const isValidAndTransform = await isImageAndTransform( + temporaryPath, + filePath + ); + if (!isValidAndTransform) { + await fs.unlink(temporaryPath); + return res.status(400).json({ message: "File isn't a photo" }); + } + + const user = await User.findByIdAndUpdate( + res.locals.user.id, + { avatarURL: `/avatars/${fileName}` }, + { new: true } + ); + if (!user) { + return res.status(404).json({ message: "User not found" }); + } + + res.status(200).json({ + avatarURL: user.avatarURL, + }); + } catch (error) { + next(error); + } +}; + +module.exports = { updateAvatar }; diff --git a/helpers.js b/helpers.js new file mode 100644 index 00000000000..6a52949c93f --- /dev/null +++ b/helpers.js @@ -0,0 +1,16 @@ +const Jimp = require("jimp"); + +const isImageAndTransform = async (inputPath, outputPath) => { + try { + const image = await Jimp.read(inputPath); + image.resize(250, 250); + await image.writeAsync(outputPath); + + return true; + } catch (err) { + console.error(err); + return false; + } +}; + +module.exports = { isImageAndTransform }; diff --git a/package-lock.json b/package-lock.json index 128733bd83a..dc741fee2d9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,14 +13,18 @@ "cross-env": "7.0.3", "dotenv": "^16.4.5", "express": "^4.21.1", + "gravatar": "^1.8.2", + "jimp": "^1.6.0", "joi": "^17.13.3", "jsonwebtoken": "^9.0.2", "mongodb": "^6.11.0", "mongoose": "^8.8.2", "morgan": "^1.10.0", + "multer": "^1.4.5-lts.1", "nanoid": "^5.0.8", "passport": "^0.7.0", - "passport-jwt": "^4.0.1" + "passport-jwt": "^4.0.1", + "uuid": "^11.0.3" }, "devDependencies": { "eslint": "7.19.0", @@ -163,6 +167,401 @@ "@hapi/hoek": "^9.0.0" } }, + "node_modules/@jimp/core": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/core/-/core-1.6.0.tgz", + "integrity": "sha512-EQQlKU3s9QfdJqiSrZWNTxBs3rKXgO2W+GxNXDtwchF3a4IqxDheFX1ti+Env9hdJXDiYLp2jTRjlxhPthsk8w==", + "dependencies": { + "@jimp/file-ops": "1.6.0", + "@jimp/types": "1.6.0", + "@jimp/utils": "1.6.0", + "await-to-js": "^3.0.0", + "exif-parser": "^0.1.12", + "file-type": "^16.0.0", + "mime": "3" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@jimp/core/node_modules/mime": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", + "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@jimp/diff": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/diff/-/diff-1.6.0.tgz", + "integrity": "sha512-+yUAQ5gvRC5D1WHYxjBHZI7JBRusGGSLf8AmPRPCenTzh4PA+wZ1xv2+cYqQwTfQHU5tXYOhA0xDytfHUf1Zyw==", + "dependencies": { + "@jimp/plugin-resize": "1.6.0", + "@jimp/types": "1.6.0", + "@jimp/utils": "1.6.0", + "pixelmatch": "^5.3.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@jimp/file-ops": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/file-ops/-/file-ops-1.6.0.tgz", + "integrity": "sha512-Dx/bVDmgnRe1AlniRpCKrGRm5YvGmUwbDzt+MAkgmLGf+jvBT75hmMEZ003n9HQI/aPnm/YKnXjg/hOpzNCpHQ==", + "engines": { + "node": ">=18" + } + }, + "node_modules/@jimp/js-bmp": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/js-bmp/-/js-bmp-1.6.0.tgz", + "integrity": "sha512-FU6Q5PC/e3yzLyBDXupR3SnL3htU7S3KEs4e6rjDP6gNEOXRFsWs6YD3hXuXd50jd8ummy+q2WSwuGkr8wi+Gw==", + "dependencies": { + "@jimp/core": "1.6.0", + "@jimp/types": "1.6.0", + "@jimp/utils": "1.6.0", + "bmp-ts": "^1.0.9" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@jimp/js-gif": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/js-gif/-/js-gif-1.6.0.tgz", + "integrity": "sha512-N9CZPHOrJTsAUoWkWZstLPpwT5AwJ0wge+47+ix3++SdSL/H2QzyMqxbcDYNFe4MoI5MIhATfb0/dl/wmX221g==", + "dependencies": { + "@jimp/core": "1.6.0", + "@jimp/types": "1.6.0", + "gifwrap": "^0.10.1", + "omggif": "^1.0.10" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@jimp/js-jpeg": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/js-jpeg/-/js-jpeg-1.6.0.tgz", + "integrity": "sha512-6vgFDqeusblf5Pok6B2DUiMXplH8RhIKAryj1yn+007SIAQ0khM1Uptxmpku/0MfbClx2r7pnJv9gWpAEJdMVA==", + "dependencies": { + "@jimp/core": "1.6.0", + "@jimp/types": "1.6.0", + "jpeg-js": "^0.4.4" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@jimp/js-png": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/js-png/-/js-png-1.6.0.tgz", + "integrity": "sha512-AbQHScy3hDDgMRNfG0tPjL88AV6qKAILGReIa3ATpW5QFjBKpisvUaOqhzJ7Reic1oawx3Riyv152gaPfqsBVg==", + "dependencies": { + "@jimp/core": "1.6.0", + "@jimp/types": "1.6.0", + "pngjs": "^7.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@jimp/js-tiff": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/js-tiff/-/js-tiff-1.6.0.tgz", + "integrity": "sha512-zhReR8/7KO+adijj3h0ZQUOiun3mXUv79zYEAKvE0O+rP7EhgtKvWJOZfRzdZSNv0Pu1rKtgM72qgtwe2tFvyw==", + "dependencies": { + "@jimp/core": "1.6.0", + "@jimp/types": "1.6.0", + "utif2": "^4.1.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@jimp/plugin-blit": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-1.6.0.tgz", + "integrity": "sha512-M+uRWl1csi7qilnSK8uxK4RJMSuVeBiO1AY0+7APnfUbQNZm6hCe0CCFv1Iyw1D/Dhb8ph8fQgm5mwM0eSxgVA==", + "dependencies": { + "@jimp/types": "1.6.0", + "@jimp/utils": "1.6.0", + "zod": "^3.23.8" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@jimp/plugin-blur": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-1.6.0.tgz", + "integrity": "sha512-zrM7iic1OTwUCb0g/rN5y+UnmdEsT3IfuCXCJJNs8SZzP0MkZ1eTvuwK9ZidCuMo4+J3xkzCidRwYXB5CyGZTw==", + "dependencies": { + "@jimp/core": "1.6.0", + "@jimp/utils": "1.6.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@jimp/plugin-circle": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-circle/-/plugin-circle-1.6.0.tgz", + "integrity": "sha512-xt1Gp+LtdMKAXfDp3HNaG30SPZW6AQ7dtAtTnoRKorRi+5yCJjKqXRgkewS5bvj8DEh87Ko1ydJfzqS3P2tdWw==", + "dependencies": { + "@jimp/types": "1.6.0", + "zod": "^3.23.8" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@jimp/plugin-color": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-1.6.0.tgz", + "integrity": "sha512-J5q8IVCpkBsxIXM+45XOXTrsyfblyMZg3a9eAo0P7VPH4+CrvyNQwaYatbAIamSIN1YzxmO3DkIZXzRjFSz1SA==", + "dependencies": { + "@jimp/core": "1.6.0", + "@jimp/types": "1.6.0", + "@jimp/utils": "1.6.0", + "tinycolor2": "^1.6.0", + "zod": "^3.23.8" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@jimp/plugin-contain": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-1.6.0.tgz", + "integrity": "sha512-oN/n+Vdq/Qg9bB4yOBOxtY9IPAtEfES8J1n9Ddx+XhGBYT1/QTU/JYkGaAkIGoPnyYvmLEDqMz2SGihqlpqfzQ==", + "dependencies": { + "@jimp/core": "1.6.0", + "@jimp/plugin-blit": "1.6.0", + "@jimp/plugin-resize": "1.6.0", + "@jimp/types": "1.6.0", + "@jimp/utils": "1.6.0", + "zod": "^3.23.8" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@jimp/plugin-cover": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-1.6.0.tgz", + "integrity": "sha512-Iow0h6yqSC269YUJ8HC3Q/MpCi2V55sMlbkkTTx4zPvd8mWZlC0ykrNDeAy9IJegrQ7v5E99rJwmQu25lygKLA==", + "dependencies": { + "@jimp/core": "1.6.0", + "@jimp/plugin-crop": "1.6.0", + "@jimp/plugin-resize": "1.6.0", + "@jimp/types": "1.6.0", + "zod": "^3.23.8" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@jimp/plugin-crop": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-1.6.0.tgz", + "integrity": "sha512-KqZkEhvs+21USdySCUDI+GFa393eDIzbi1smBqkUPTE+pRwSWMAf01D5OC3ZWB+xZsNla93BDS9iCkLHA8wang==", + "dependencies": { + "@jimp/core": "1.6.0", + "@jimp/types": "1.6.0", + "@jimp/utils": "1.6.0", + "zod": "^3.23.8" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@jimp/plugin-displace": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-1.6.0.tgz", + "integrity": "sha512-4Y10X9qwr5F+Bo5ME356XSACEF55485j5nGdiyJ9hYzjQP9nGgxNJaZ4SAOqpd+k5sFaIeD7SQ0Occ26uIng5Q==", + "dependencies": { + "@jimp/types": "1.6.0", + "@jimp/utils": "1.6.0", + "zod": "^3.23.8" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@jimp/plugin-dither": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-1.6.0.tgz", + "integrity": "sha512-600d1RxY0pKwgyU0tgMahLNKsqEcxGdbgXadCiVCoGd6V6glyCvkNrnnwC0n5aJ56Htkj88PToSdF88tNVZEEQ==", + "dependencies": { + "@jimp/types": "1.6.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@jimp/plugin-fisheye": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-fisheye/-/plugin-fisheye-1.6.0.tgz", + "integrity": "sha512-E5QHKWSCBFtpgZarlmN3Q6+rTQxjirFqo44ohoTjzYVrDI6B6beXNnPIThJgPr0Y9GwfzgyarKvQuQuqCnnfbA==", + "dependencies": { + "@jimp/types": "1.6.0", + "@jimp/utils": "1.6.0", + "zod": "^3.23.8" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@jimp/plugin-flip": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-1.6.0.tgz", + "integrity": "sha512-/+rJVDuBIVOgwoyVkBjUFHtP+wmW0r+r5OQ2GpatQofToPVbJw1DdYWXlwviSx7hvixTWLKVgRWQ5Dw862emDg==", + "dependencies": { + "@jimp/types": "1.6.0", + "zod": "^3.23.8" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@jimp/plugin-hash": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-hash/-/plugin-hash-1.6.0.tgz", + "integrity": "sha512-wWzl0kTpDJgYVbZdajTf+4NBSKvmI3bRI8q6EH9CVeIHps9VWVsUvEyb7rpbcwVLWYuzDtP2R0lTT6WeBNQH9Q==", + "dependencies": { + "@jimp/core": "1.6.0", + "@jimp/js-bmp": "1.6.0", + "@jimp/js-jpeg": "1.6.0", + "@jimp/js-png": "1.6.0", + "@jimp/js-tiff": "1.6.0", + "@jimp/plugin-color": "1.6.0", + "@jimp/plugin-resize": "1.6.0", + "@jimp/types": "1.6.0", + "@jimp/utils": "1.6.0", + "any-base": "^1.1.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@jimp/plugin-mask": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-1.6.0.tgz", + "integrity": "sha512-Cwy7ExSJMZszvkad8NV8o/Z92X2kFUFM8mcDAhNVxU0Q6tA0op2UKRJY51eoK8r6eds/qak3FQkXakvNabdLnA==", + "dependencies": { + "@jimp/types": "1.6.0", + "zod": "^3.23.8" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@jimp/plugin-print": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-1.6.0.tgz", + "integrity": "sha512-zarTIJi8fjoGMSI/M3Xh5yY9T65p03XJmPsuNet19K/Q7mwRU6EV2pfj+28++2PV2NJ+htDF5uecAlnGyxFN2A==", + "dependencies": { + "@jimp/core": "1.6.0", + "@jimp/js-jpeg": "1.6.0", + "@jimp/js-png": "1.6.0", + "@jimp/plugin-blit": "1.6.0", + "@jimp/types": "1.6.0", + "parse-bmfont-ascii": "^1.0.6", + "parse-bmfont-binary": "^1.0.6", + "parse-bmfont-xml": "^1.1.6", + "simple-xml-to-json": "^1.2.2", + "zod": "^3.23.8" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@jimp/plugin-quantize": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-quantize/-/plugin-quantize-1.6.0.tgz", + "integrity": "sha512-EmzZ/s9StYQwbpG6rUGBCisc3f64JIhSH+ncTJd+iFGtGo0YvSeMdAd+zqgiHpfZoOL54dNavZNjF4otK+mvlg==", + "dependencies": { + "image-q": "^4.0.0", + "zod": "^3.23.8" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@jimp/plugin-resize": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-1.6.0.tgz", + "integrity": "sha512-uSUD1mqXN9i1SGSz5ov3keRZ7S9L32/mAQG08wUwZiEi5FpbV0K8A8l1zkazAIZi9IJzLlTauRNU41Mi8IF9fA==", + "dependencies": { + "@jimp/core": "1.6.0", + "@jimp/types": "1.6.0", + "zod": "^3.23.8" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@jimp/plugin-rotate": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-1.6.0.tgz", + "integrity": "sha512-JagdjBLnUZGSG4xjCLkIpQOZZ3Mjbg8aGCCi4G69qR+OjNpOeGI7N2EQlfK/WE8BEHOW5vdjSyglNqcYbQBWRw==", + "dependencies": { + "@jimp/core": "1.6.0", + "@jimp/plugin-crop": "1.6.0", + "@jimp/plugin-resize": "1.6.0", + "@jimp/types": "1.6.0", + "@jimp/utils": "1.6.0", + "zod": "^3.23.8" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@jimp/plugin-threshold": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-threshold/-/plugin-threshold-1.6.0.tgz", + "integrity": "sha512-M59m5dzLoHOVWdM41O8z9SyySzcDn43xHseOH0HavjsfQsT56GGCC4QzU1banJidbUrePhzoEdS42uFE8Fei8w==", + "dependencies": { + "@jimp/core": "1.6.0", + "@jimp/plugin-color": "1.6.0", + "@jimp/plugin-hash": "1.6.0", + "@jimp/types": "1.6.0", + "@jimp/utils": "1.6.0", + "zod": "^3.23.8" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@jimp/types": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/types/-/types-1.6.0.tgz", + "integrity": "sha512-7UfRsiKo5GZTAATxm2qQ7jqmUXP0DxTArztllTcYdyw6Xi5oT4RaoXynVtCD4UyLK5gJgkZJcwonoijrhYFKfg==", + "dependencies": { + "zod": "^3.23.8" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@jimp/utils": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-1.6.0.tgz", + "integrity": "sha512-gqFTGEosKbOkYF/WFj26jMHOI5OH2jeP1MmC/zbK6BF6VJBf8rIC5898dPfSzZEbSA0wbbV5slbntWVc5PKLFA==", + "dependencies": { + "@jimp/types": "1.6.0", + "tinycolor2": "^1.6.0" + }, + "engines": { + "node": ">=18" + } + }, "node_modules/@mapbox/node-pre-gyp": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz", @@ -222,12 +621,22 @@ "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==" }, + "node_modules/@tokenizer/token": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", + "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==" + }, "node_modules/@types/json5": { "version": "0.0.29", "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", "dev": true }, + "node_modules/@types/node": { + "version": "16.9.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.9.1.tgz", + "integrity": "sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g==" + }, "node_modules/@types/webidl-conversions": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.3.tgz", @@ -327,7 +736,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -338,6 +746,11 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/any-base": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/any-base/-/any-base-1.1.0.tgz", + "integrity": "sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg==" + }, "node_modules/anymatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", @@ -351,6 +764,11 @@ "node": ">= 8" } }, + "node_modules/append-field": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz", + "integrity": "sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==" + }, "node_modules/aproba": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", @@ -428,6 +846,14 @@ "node": ">=8" } }, + "node_modules/await-to-js": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/await-to-js/-/await-to-js-3.0.0.tgz", + "integrity": "sha512-zJAaP9zxTcvTHRlejau3ZOY4V7SRpiByf3/dxx2uyKxxor19tpmpV2QRsTKikckwhaPmr2dVpxxMr7jOCYVp5g==", + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -466,6 +892,16 @@ "node": ">=8" } }, + "node_modules/blueimp-md5": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/blueimp-md5/-/blueimp-md5-2.19.0.tgz", + "integrity": "sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w==" + }, + "node_modules/bmp-ts": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/bmp-ts/-/bmp-ts-1.0.9.tgz", + "integrity": "sha512-cTEHk2jLrPyi+12M3dhpEbnnPOsaZuq7C45ylbbQIiWgDFZq4UVYPEY5mlqjvsj/6gJv9qX5sa+ebDzLXT28Vw==" + }, "node_modules/body-parser": { "version": "1.20.3", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", @@ -547,6 +983,22 @@ "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==" }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + }, + "node_modules/busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "dependencies": { + "streamsearch": "^1.1.0" + }, + "engines": { + "node": ">=10.16.0" + } + }, "node_modules/bytes": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", @@ -582,6 +1034,14 @@ "node": ">=6" } }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "engines": { + "node": ">=6" + } + }, "node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -627,11 +1087,20 @@ "node": ">=10" } }, + "node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, "dependencies": { "color-name": "~1.1.4" }, @@ -642,8 +1111,7 @@ "node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "node_modules/color-support": { "version": "1.1.3", @@ -658,6 +1126,42 @@ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" }, + "node_modules/concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "engines": [ + "node >= 0.8" + ], + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/concat-stream/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/concat-stream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, "node_modules/console-control-strings": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", @@ -714,6 +1218,11 @@ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, "node_modules/cors": { "version": "2.8.5", "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", @@ -772,6 +1281,14 @@ } } }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", @@ -872,6 +1389,14 @@ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" }, + "node_modules/email-validator": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/email-validator/-/email-validator-2.0.4.tgz", + "integrity": "sha512-gYCwo7kh5S3IDyZPLZf6hSS0MnZT8QmJFqYvbqlDZSbwdZlY6QZWxJ4i/6UhITOJ4XzyI647Bm2MXKCLqnJ4nQ==", + "engines": { + "node": ">4.0" + } + }, "node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", @@ -1388,6 +1913,11 @@ "node": ">= 0.6" } }, + "node_modules/exif-parser": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/exif-parser/-/exif-parser-0.1.12.tgz", + "integrity": "sha512-c2bQfLNbMzLPmzQuOr8fy0csy84WmwnER81W88DzTp9CYNPJ6yzOj2EZAh9pywYpqHnshVLHQJ8WzldAyfY+Iw==" + }, "node_modules/express": { "version": "4.21.1", "resolved": "https://registry.npmjs.org/express/-/express-4.21.1.tgz", @@ -1502,6 +2032,22 @@ "node": "^10.12.0 || >=12.0.0" } }, + "node_modules/file-type": { + "version": "16.5.4", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-16.5.4.tgz", + "integrity": "sha512-/yFHK0aGjFEgDJjEKP0pWCplsPFPhwyfwevf/pVxiN0tmE4L9LmwWxWukdJSHdoCli4VgQLehjJtwQBnqmsKcw==", + "dependencies": { + "readable-web-to-node-stream": "^3.0.0", + "strtok3": "^6.2.4", + "token-types": "^4.1.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/file-type?sponsor=1" + } + }, "node_modules/fill-range": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", @@ -1677,6 +2223,14 @@ "node": ">=10" } }, + "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==", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, "node_modules/get-intrinsic": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", @@ -1711,6 +2265,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/gifwrap": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/gifwrap/-/gifwrap-0.10.1.tgz", + "integrity": "sha512-2760b1vpJHNmLzZ/ubTtNnEx5WApN/PYWJvXvgS+tL1egTTthayFYIQQNi136FLEDcN/IyEY2EcGpIITD6eYUw==", + "dependencies": { + "image-q": "^4.0.0", + "omggif": "^1.0.10" + } + }, "node_modules/glob": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", @@ -1768,6 +2331,23 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/gravatar": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/gravatar/-/gravatar-1.8.2.tgz", + "integrity": "sha512-GdRwLM3oYpFQKy47MKuluw9hZ2gaCtiKPbDGdcDEuYDKlc8eNnW27KYL9LVbIDzEsx88WtDWQm2ClBcsgBnj6w==", + "dependencies": { + "blueimp-md5": "^2.16.0", + "email-validator": "^2.0.4", + "querystring": "0.2.0", + "yargs": "^15.4.1" + }, + "bin": { + "gravatar": "cli.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", @@ -1900,8 +2480,27 @@ "node": ">=0.10.0" } }, - "node_modules/ignore": { - "version": "4.0.6", + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "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/ignore": { + "version": "4.0.6", "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", "dev": true, @@ -1915,6 +2514,14 @@ "integrity": "sha1-SMptcvbGo68Aqa1K5odr44ieKwk=", "dev": true }, + "node_modules/image-q": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/image-q/-/image-q-4.0.0.tgz", + "integrity": "sha512-PfJGVgIfKQJuq3s0tTDOKtztksibuUEbJQIYT3by6wctQo+Rdlh7ef4evJ5NCdxY4CfMbvFkocEwbl4BF8RlJw==", + "dependencies": { + "@types/node": "16.9.1" + } + }, "node_modules/import-fresh": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", @@ -2187,11 +2794,53 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" }, + "node_modules/jimp": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/jimp/-/jimp-1.6.0.tgz", + "integrity": "sha512-YcwCHw1kiqEeI5xRpDlPPBGL2EOpBKLwO4yIBJcXWHPj5PnA5urGq0jbyhM5KoNpypQ6VboSoxc9D8HyfvngSg==", + "dependencies": { + "@jimp/core": "1.6.0", + "@jimp/diff": "1.6.0", + "@jimp/js-bmp": "1.6.0", + "@jimp/js-gif": "1.6.0", + "@jimp/js-jpeg": "1.6.0", + "@jimp/js-png": "1.6.0", + "@jimp/js-tiff": "1.6.0", + "@jimp/plugin-blit": "1.6.0", + "@jimp/plugin-blur": "1.6.0", + "@jimp/plugin-circle": "1.6.0", + "@jimp/plugin-color": "1.6.0", + "@jimp/plugin-contain": "1.6.0", + "@jimp/plugin-cover": "1.6.0", + "@jimp/plugin-crop": "1.6.0", + "@jimp/plugin-displace": "1.6.0", + "@jimp/plugin-dither": "1.6.0", + "@jimp/plugin-fisheye": "1.6.0", + "@jimp/plugin-flip": "1.6.0", + "@jimp/plugin-hash": "1.6.0", + "@jimp/plugin-mask": "1.6.0", + "@jimp/plugin-print": "1.6.0", + "@jimp/plugin-quantize": "1.6.0", + "@jimp/plugin-resize": "1.6.0", + "@jimp/plugin-rotate": "1.6.0", + "@jimp/plugin-threshold": "1.6.0", + "@jimp/types": "1.6.0", + "@jimp/utils": "1.6.0" + }, + "engines": { + "node": ">=18" + } + }, "node_modules/joi": { "version": "17.13.3", "resolved": "https://registry.npmjs.org/joi/-/joi-17.13.3.tgz", @@ -2204,6 +2853,11 @@ "@sideway/pinpoint": "^2.0.0" } }, + "node_modules/jpeg-js": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.4.tgz", + "integrity": "sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg==" + }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -2464,7 +3118,6 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -2688,6 +3341,34 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, + "node_modules/multer": { + "version": "1.4.5-lts.1", + "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.5-lts.1.tgz", + "integrity": "sha512-ywPWvcDMeH+z9gQq5qYHCCy+ethsk4goepZ45GLD63fOu0YcNecQxi64nDs3qluZB+murG3/D4dJ7+dGctcCQQ==", + "dependencies": { + "append-field": "^1.0.0", + "busboy": "^1.0.0", + "concat-stream": "^1.5.2", + "mkdirp": "^0.5.4", + "object-assign": "^4.1.1", + "type-is": "^1.6.4", + "xtend": "^4.0.0" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/multer/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, "node_modules/nanoid": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.0.8.tgz", @@ -2928,6 +3609,11 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/omggif": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/omggif/-/omggif-1.0.10.tgz", + "integrity": "sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw==" + }, "node_modules/on-finished": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", @@ -3005,6 +3691,11 @@ "node": ">=4" } }, + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -3017,6 +3708,25 @@ "node": ">=6" } }, + "node_modules/parse-bmfont-ascii": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/parse-bmfont-ascii/-/parse-bmfont-ascii-1.0.6.tgz", + "integrity": "sha512-U4RrVsUFCleIOBsIGYOMKjn9PavsGOXxbvYGtMOEfnId0SVNsgehXh1DxUdVPLoxd5mvcEtvmKs2Mmf0Mpa1ZA==" + }, + "node_modules/parse-bmfont-binary": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/parse-bmfont-binary/-/parse-bmfont-binary-1.0.6.tgz", + "integrity": "sha512-GxmsRea0wdGdYthjuUeWTMWPqm2+FAd4GI8vCvhgJsFnoGhTrLhXDDupwTo7rXVAgaLIGoVHDZS9p/5XbSqeWA==" + }, + "node_modules/parse-bmfont-xml": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/parse-bmfont-xml/-/parse-bmfont-xml-1.1.6.tgz", + "integrity": "sha512-0cEliVMZEhrFDwMh4SxIyVJpqYoOWDJ9P895tFuS+XuNzI5UBmBk5U5O4KuJdTnZpSBI4LFA2+ZiJaiwfSwlMA==", + "dependencies": { + "xml-parse-from-string": "^1.0.0", + "xml2js": "^0.5.0" + } + }, "node_modules/parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", @@ -3100,6 +3810,18 @@ "resolved": "https://registry.npmjs.org/pause/-/pause-0.0.1.tgz", "integrity": "sha512-KG8UEiEVkR3wGEb4m5yZkVCzigAD+cVEJck2CzYZO37ZGJfctvVptVO192MwrtPhzONn6go8ylnOdMhKqi4nfg==" }, + "node_modules/peek-readable": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-4.1.0.tgz", + "integrity": "sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg==", + "engines": { + "node": ">=8" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, "node_modules/picomatch": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", @@ -3112,6 +3834,25 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/pixelmatch": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-5.3.0.tgz", + "integrity": "sha512-o8mkY4E/+LNUf6LzX96ht6k6CEDi65k9G2rjMtBe9Oo+VPKSvl+0GKHuH/AlG+GA5LPG/i5hrekkxUc3s2HU+Q==", + "dependencies": { + "pngjs": "^6.0.0" + }, + "bin": { + "pixelmatch": "bin/pixelmatch" + } + }, + "node_modules/pixelmatch/node_modules/pngjs": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-6.0.0.tgz", + "integrity": "sha512-TRzzuFRRmEoSW/p1KVAmiOgPco2Irlah+bGFCeNfJXxxYGwSw7YwAOAcd7X28K/m5bjBWKsC29KyoMfHbypayg==", + "engines": { + "node": ">=12.13.0" + } + }, "node_modules/pkg-dir": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", @@ -3124,6 +3865,14 @@ "node": ">=4" } }, + "node_modules/pngjs": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-7.0.0.tgz", + "integrity": "sha512-LKWqWJRhstyYo9pGvgor/ivk2w94eSjE3RGVuzLGlr3NmD8bf7RcYGze1mNdEHRP6TRP6rMuDHk5t44hnTRyow==", + "engines": { + "node": ">=14.19.0" + } + }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -3133,6 +3882,11 @@ "node": ">= 0.8.0" } }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, "node_modules/progress": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", @@ -3182,6 +3936,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==", + "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", + "engines": { + "node": ">=0.4.x" + } + }, "node_modules/range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", @@ -3217,6 +3980,21 @@ "node": ">= 6" } }, + "node_modules/readable-web-to-node-stream": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz", + "integrity": "sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==", + "dependencies": { + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, "node_modules/readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", @@ -3241,6 +4019,14 @@ "url": "https://github.com/sponsors/mysticatea" } }, + "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==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/require-from-string": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", @@ -3250,6 +4036,11 @@ "node": ">=0.10.0" } }, + "node_modules/require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" + }, "node_modules/resolve": { "version": "1.20.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", @@ -3296,6 +4087,11 @@ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, + "node_modules/sax": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz", + "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==" + }, "node_modules/semver": { "version": "7.6.3", "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", @@ -3474,6 +4270,14 @@ "semver": "bin/semver.js" } }, + "node_modules/simple-xml-to-json": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/simple-xml-to-json/-/simple-xml-to-json-1.2.3.tgz", + "integrity": "sha512-kWJDCr9EWtZ+/EYYM5MareWj2cRnZGF93YDNpH4jQiHB+hBIZnfPFSQiVMzZOdk+zXWqTZ/9fTeQNu2DqeiudA==", + "engines": { + "node": ">=20.12.2" + } + }, "node_modules/slice-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", @@ -3513,6 +4317,14 @@ "node": ">= 0.8" } }, + "node_modules/streamsearch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", + "engines": { + "node": ">=10.0.0" + } + }, "node_modules/string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -3611,6 +4423,22 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/strtok3": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-6.3.0.tgz", + "integrity": "sha512-fZtbhtvI9I48xDSywd/somNqgUHl2L2cstmXCCif0itOf96jeW18MBSyrLuNicYQVkvpOxkZtkzujiTJ9LW5Jw==", + "dependencies": { + "@tokenizer/token": "^0.3.0", + "peek-readable": "^4.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, "node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -3683,6 +4511,11 @@ "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", "dev": true }, + "node_modules/tinycolor2": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.6.0.tgz", + "integrity": "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==" + }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -3703,6 +4536,22 @@ "node": ">=0.6" } }, + "node_modules/token-types": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/token-types/-/token-types-4.2.1.tgz", + "integrity": "sha512-6udB24Q737UD/SDsKAHI9FCRP7Bqc9D/MQUV02ORQg5iskjtLJlZJNdN4kKtcdtwCeWIwIHDGaUsTsCCAa8sFQ==", + "dependencies": { + "@tokenizer/token": "^0.3.0", + "ieee754": "^1.2.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, "node_modules/touch": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", @@ -3771,6 +4620,11 @@ "node": ">= 0.6" } }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" + }, "node_modules/unbox-primitive": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", @@ -3809,6 +4663,14 @@ "punycode": "^2.1.0" } }, + "node_modules/utif2": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/utif2/-/utif2-4.1.0.tgz", + "integrity": "sha512-+oknB9FHrJ7oW7A2WZYajOcv4FcDR4CfoGB0dPNfxbi4GO05RRnFmt5oa23+9w32EanrYcSJWspUiJkLMs+37w==", + "dependencies": { + "pako": "^1.0.11" + } + }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -3822,6 +4684,18 @@ "node": ">= 0.4.0" } }, + "node_modules/uuid": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.0.3.tgz", + "integrity": "sha512-d0z310fCWv5dJwnX1Y/MncBAqGMKEzlBb1AOf7z9K8ALnd0utBX/msg/fA0+sbyN1ihbMsLhrBlnl1ak7Wa0rg==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "bin": { + "uuid": "dist/esm/bin/uuid" + } + }, "node_modules/v8-compile-cache": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", @@ -3886,6 +4760,11 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/which-module": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", + "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==" + }, "node_modules/wide-align": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", @@ -3903,15 +4782,171 @@ "node": ">=0.10.0" } }, + "node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, + "node_modules/xml-parse-from-string": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/xml-parse-from-string/-/xml-parse-from-string-1.0.1.tgz", + "integrity": "sha512-ErcKwJTF54uRzzNMXq2X5sMIy88zJvfN2DmdoQvy7PAFJ+tPRU6ydWuOKNMyfmOjdyBQTFREi60s0Y0SyI0G0g==" + }, + "node_modules/xml2js": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.5.0.tgz", + "integrity": "sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==", + "dependencies": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" + }, "node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/yargs/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yargs/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/yargs/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==", + "engines": { + "node": ">=8" + } + }, + "node_modules/zod": { + "version": "3.23.8", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.23.8.tgz", + "integrity": "sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } } }, "dependencies": { @@ -3930,98 +4965,405 @@ "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", "dev": true }, - "@babel/highlight": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz", - "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==", - "dev": true, + "@babel/highlight": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz", + "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.15.7", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "@eslint/eslintrc": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.3.0.tgz", + "integrity": "sha512-1JTKgrOKAHVivSvOYw+sJOunkBjUOvjqWk1DPja7ZFhIS2mX/4EgTT8M7eTK9jrKhL/FvXXEbQwIs3pg1xp3dg==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.1.1", + "espree": "^7.3.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^3.13.1", + "lodash": "^4.17.20", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + } + }, + "@hapi/hoek": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", + "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==" + }, + "@hapi/topo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", + "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", + "requires": { + "@hapi/hoek": "^9.0.0" + } + }, + "@jimp/core": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/core/-/core-1.6.0.tgz", + "integrity": "sha512-EQQlKU3s9QfdJqiSrZWNTxBs3rKXgO2W+GxNXDtwchF3a4IqxDheFX1ti+Env9hdJXDiYLp2jTRjlxhPthsk8w==", + "requires": { + "@jimp/file-ops": "1.6.0", + "@jimp/types": "1.6.0", + "@jimp/utils": "1.6.0", + "await-to-js": "^3.0.0", + "exif-parser": "^0.1.12", + "file-type": "^16.0.0", + "mime": "3" + }, + "dependencies": { + "mime": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", + "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==" + } + } + }, + "@jimp/diff": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/diff/-/diff-1.6.0.tgz", + "integrity": "sha512-+yUAQ5gvRC5D1WHYxjBHZI7JBRusGGSLf8AmPRPCenTzh4PA+wZ1xv2+cYqQwTfQHU5tXYOhA0xDytfHUf1Zyw==", + "requires": { + "@jimp/plugin-resize": "1.6.0", + "@jimp/types": "1.6.0", + "@jimp/utils": "1.6.0", + "pixelmatch": "^5.3.0" + } + }, + "@jimp/file-ops": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/file-ops/-/file-ops-1.6.0.tgz", + "integrity": "sha512-Dx/bVDmgnRe1AlniRpCKrGRm5YvGmUwbDzt+MAkgmLGf+jvBT75hmMEZ003n9HQI/aPnm/YKnXjg/hOpzNCpHQ==" + }, + "@jimp/js-bmp": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/js-bmp/-/js-bmp-1.6.0.tgz", + "integrity": "sha512-FU6Q5PC/e3yzLyBDXupR3SnL3htU7S3KEs4e6rjDP6gNEOXRFsWs6YD3hXuXd50jd8ummy+q2WSwuGkr8wi+Gw==", + "requires": { + "@jimp/core": "1.6.0", + "@jimp/types": "1.6.0", + "@jimp/utils": "1.6.0", + "bmp-ts": "^1.0.9" + } + }, + "@jimp/js-gif": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/js-gif/-/js-gif-1.6.0.tgz", + "integrity": "sha512-N9CZPHOrJTsAUoWkWZstLPpwT5AwJ0wge+47+ix3++SdSL/H2QzyMqxbcDYNFe4MoI5MIhATfb0/dl/wmX221g==", + "requires": { + "@jimp/core": "1.6.0", + "@jimp/types": "1.6.0", + "gifwrap": "^0.10.1", + "omggif": "^1.0.10" + } + }, + "@jimp/js-jpeg": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/js-jpeg/-/js-jpeg-1.6.0.tgz", + "integrity": "sha512-6vgFDqeusblf5Pok6B2DUiMXplH8RhIKAryj1yn+007SIAQ0khM1Uptxmpku/0MfbClx2r7pnJv9gWpAEJdMVA==", + "requires": { + "@jimp/core": "1.6.0", + "@jimp/types": "1.6.0", + "jpeg-js": "^0.4.4" + } + }, + "@jimp/js-png": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/js-png/-/js-png-1.6.0.tgz", + "integrity": "sha512-AbQHScy3hDDgMRNfG0tPjL88AV6qKAILGReIa3ATpW5QFjBKpisvUaOqhzJ7Reic1oawx3Riyv152gaPfqsBVg==", + "requires": { + "@jimp/core": "1.6.0", + "@jimp/types": "1.6.0", + "pngjs": "^7.0.0" + } + }, + "@jimp/js-tiff": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/js-tiff/-/js-tiff-1.6.0.tgz", + "integrity": "sha512-zhReR8/7KO+adijj3h0ZQUOiun3mXUv79zYEAKvE0O+rP7EhgtKvWJOZfRzdZSNv0Pu1rKtgM72qgtwe2tFvyw==", + "requires": { + "@jimp/core": "1.6.0", + "@jimp/types": "1.6.0", + "utif2": "^4.1.0" + } + }, + "@jimp/plugin-blit": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-1.6.0.tgz", + "integrity": "sha512-M+uRWl1csi7qilnSK8uxK4RJMSuVeBiO1AY0+7APnfUbQNZm6hCe0CCFv1Iyw1D/Dhb8ph8fQgm5mwM0eSxgVA==", + "requires": { + "@jimp/types": "1.6.0", + "@jimp/utils": "1.6.0", + "zod": "^3.23.8" + } + }, + "@jimp/plugin-blur": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-1.6.0.tgz", + "integrity": "sha512-zrM7iic1OTwUCb0g/rN5y+UnmdEsT3IfuCXCJJNs8SZzP0MkZ1eTvuwK9ZidCuMo4+J3xkzCidRwYXB5CyGZTw==", + "requires": { + "@jimp/core": "1.6.0", + "@jimp/utils": "1.6.0" + } + }, + "@jimp/plugin-circle": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-circle/-/plugin-circle-1.6.0.tgz", + "integrity": "sha512-xt1Gp+LtdMKAXfDp3HNaG30SPZW6AQ7dtAtTnoRKorRi+5yCJjKqXRgkewS5bvj8DEh87Ko1ydJfzqS3P2tdWw==", + "requires": { + "@jimp/types": "1.6.0", + "zod": "^3.23.8" + } + }, + "@jimp/plugin-color": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-1.6.0.tgz", + "integrity": "sha512-J5q8IVCpkBsxIXM+45XOXTrsyfblyMZg3a9eAo0P7VPH4+CrvyNQwaYatbAIamSIN1YzxmO3DkIZXzRjFSz1SA==", + "requires": { + "@jimp/core": "1.6.0", + "@jimp/types": "1.6.0", + "@jimp/utils": "1.6.0", + "tinycolor2": "^1.6.0", + "zod": "^3.23.8" + } + }, + "@jimp/plugin-contain": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-1.6.0.tgz", + "integrity": "sha512-oN/n+Vdq/Qg9bB4yOBOxtY9IPAtEfES8J1n9Ddx+XhGBYT1/QTU/JYkGaAkIGoPnyYvmLEDqMz2SGihqlpqfzQ==", + "requires": { + "@jimp/core": "1.6.0", + "@jimp/plugin-blit": "1.6.0", + "@jimp/plugin-resize": "1.6.0", + "@jimp/types": "1.6.0", + "@jimp/utils": "1.6.0", + "zod": "^3.23.8" + } + }, + "@jimp/plugin-cover": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-1.6.0.tgz", + "integrity": "sha512-Iow0h6yqSC269YUJ8HC3Q/MpCi2V55sMlbkkTTx4zPvd8mWZlC0ykrNDeAy9IJegrQ7v5E99rJwmQu25lygKLA==", + "requires": { + "@jimp/core": "1.6.0", + "@jimp/plugin-crop": "1.6.0", + "@jimp/plugin-resize": "1.6.0", + "@jimp/types": "1.6.0", + "zod": "^3.23.8" + } + }, + "@jimp/plugin-crop": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-1.6.0.tgz", + "integrity": "sha512-KqZkEhvs+21USdySCUDI+GFa393eDIzbi1smBqkUPTE+pRwSWMAf01D5OC3ZWB+xZsNla93BDS9iCkLHA8wang==", + "requires": { + "@jimp/core": "1.6.0", + "@jimp/types": "1.6.0", + "@jimp/utils": "1.6.0", + "zod": "^3.23.8" + } + }, + "@jimp/plugin-displace": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-1.6.0.tgz", + "integrity": "sha512-4Y10X9qwr5F+Bo5ME356XSACEF55485j5nGdiyJ9hYzjQP9nGgxNJaZ4SAOqpd+k5sFaIeD7SQ0Occ26uIng5Q==", + "requires": { + "@jimp/types": "1.6.0", + "@jimp/utils": "1.6.0", + "zod": "^3.23.8" + } + }, + "@jimp/plugin-dither": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-1.6.0.tgz", + "integrity": "sha512-600d1RxY0pKwgyU0tgMahLNKsqEcxGdbgXadCiVCoGd6V6glyCvkNrnnwC0n5aJ56Htkj88PToSdF88tNVZEEQ==", + "requires": { + "@jimp/types": "1.6.0" + } + }, + "@jimp/plugin-fisheye": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-fisheye/-/plugin-fisheye-1.6.0.tgz", + "integrity": "sha512-E5QHKWSCBFtpgZarlmN3Q6+rTQxjirFqo44ohoTjzYVrDI6B6beXNnPIThJgPr0Y9GwfzgyarKvQuQuqCnnfbA==", + "requires": { + "@jimp/types": "1.6.0", + "@jimp/utils": "1.6.0", + "zod": "^3.23.8" + } + }, + "@jimp/plugin-flip": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-1.6.0.tgz", + "integrity": "sha512-/+rJVDuBIVOgwoyVkBjUFHtP+wmW0r+r5OQ2GpatQofToPVbJw1DdYWXlwviSx7hvixTWLKVgRWQ5Dw862emDg==", + "requires": { + "@jimp/types": "1.6.0", + "zod": "^3.23.8" + } + }, + "@jimp/plugin-hash": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-hash/-/plugin-hash-1.6.0.tgz", + "integrity": "sha512-wWzl0kTpDJgYVbZdajTf+4NBSKvmI3bRI8q6EH9CVeIHps9VWVsUvEyb7rpbcwVLWYuzDtP2R0lTT6WeBNQH9Q==", + "requires": { + "@jimp/core": "1.6.0", + "@jimp/js-bmp": "1.6.0", + "@jimp/js-jpeg": "1.6.0", + "@jimp/js-png": "1.6.0", + "@jimp/js-tiff": "1.6.0", + "@jimp/plugin-color": "1.6.0", + "@jimp/plugin-resize": "1.6.0", + "@jimp/types": "1.6.0", + "@jimp/utils": "1.6.0", + "any-base": "^1.1.0" + } + }, + "@jimp/plugin-mask": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-1.6.0.tgz", + "integrity": "sha512-Cwy7ExSJMZszvkad8NV8o/Z92X2kFUFM8mcDAhNVxU0Q6tA0op2UKRJY51eoK8r6eds/qak3FQkXakvNabdLnA==", + "requires": { + "@jimp/types": "1.6.0", + "zod": "^3.23.8" + } + }, + "@jimp/plugin-print": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-1.6.0.tgz", + "integrity": "sha512-zarTIJi8fjoGMSI/M3Xh5yY9T65p03XJmPsuNet19K/Q7mwRU6EV2pfj+28++2PV2NJ+htDF5uecAlnGyxFN2A==", + "requires": { + "@jimp/core": "1.6.0", + "@jimp/js-jpeg": "1.6.0", + "@jimp/js-png": "1.6.0", + "@jimp/plugin-blit": "1.6.0", + "@jimp/types": "1.6.0", + "parse-bmfont-ascii": "^1.0.6", + "parse-bmfont-binary": "^1.0.6", + "parse-bmfont-xml": "^1.1.6", + "simple-xml-to-json": "^1.2.2", + "zod": "^3.23.8" + } + }, + "@jimp/plugin-quantize": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-quantize/-/plugin-quantize-1.6.0.tgz", + "integrity": "sha512-EmzZ/s9StYQwbpG6rUGBCisc3f64JIhSH+ncTJd+iFGtGo0YvSeMdAd+zqgiHpfZoOL54dNavZNjF4otK+mvlg==", + "requires": { + "image-q": "^4.0.0", + "zod": "^3.23.8" + } + }, + "@jimp/plugin-resize": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-1.6.0.tgz", + "integrity": "sha512-uSUD1mqXN9i1SGSz5ov3keRZ7S9L32/mAQG08wUwZiEi5FpbV0K8A8l1zkazAIZi9IJzLlTauRNU41Mi8IF9fA==", + "requires": { + "@jimp/core": "1.6.0", + "@jimp/types": "1.6.0", + "zod": "^3.23.8" + } + }, + "@jimp/plugin-rotate": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-1.6.0.tgz", + "integrity": "sha512-JagdjBLnUZGSG4xjCLkIpQOZZ3Mjbg8aGCCi4G69qR+OjNpOeGI7N2EQlfK/WE8BEHOW5vdjSyglNqcYbQBWRw==", "requires": { - "@babel/helper-validator-identifier": "^7.15.7", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } + "@jimp/core": "1.6.0", + "@jimp/plugin-crop": "1.6.0", + "@jimp/plugin-resize": "1.6.0", + "@jimp/types": "1.6.0", + "@jimp/utils": "1.6.0", + "zod": "^3.23.8" } }, - "@eslint/eslintrc": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.3.0.tgz", - "integrity": "sha512-1JTKgrOKAHVivSvOYw+sJOunkBjUOvjqWk1DPja7ZFhIS2mX/4EgTT8M7eTK9jrKhL/FvXXEbQwIs3pg1xp3dg==", - "dev": true, + "@jimp/plugin-threshold": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-threshold/-/plugin-threshold-1.6.0.tgz", + "integrity": "sha512-M59m5dzLoHOVWdM41O8z9SyySzcDn43xHseOH0HavjsfQsT56GGCC4QzU1banJidbUrePhzoEdS42uFE8Fei8w==", "requires": { - "ajv": "^6.12.4", - "debug": "^4.1.1", - "espree": "^7.3.0", - "globals": "^12.1.0", - "ignore": "^4.0.6", - "import-fresh": "^3.2.1", - "js-yaml": "^3.13.1", - "lodash": "^4.17.20", - "minimatch": "^3.0.4", - "strip-json-comments": "^3.1.1" + "@jimp/core": "1.6.0", + "@jimp/plugin-color": "1.6.0", + "@jimp/plugin-hash": "1.6.0", + "@jimp/types": "1.6.0", + "@jimp/utils": "1.6.0", + "zod": "^3.23.8" } }, - "@hapi/hoek": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", - "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==" + "@jimp/types": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/types/-/types-1.6.0.tgz", + "integrity": "sha512-7UfRsiKo5GZTAATxm2qQ7jqmUXP0DxTArztllTcYdyw6Xi5oT4RaoXynVtCD4UyLK5gJgkZJcwonoijrhYFKfg==", + "requires": { + "zod": "^3.23.8" + } }, - "@hapi/topo": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", - "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", + "@jimp/utils": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-1.6.0.tgz", + "integrity": "sha512-gqFTGEosKbOkYF/WFj26jMHOI5OH2jeP1MmC/zbK6BF6VJBf8rIC5898dPfSzZEbSA0wbbV5slbntWVc5PKLFA==", "requires": { - "@hapi/hoek": "^9.0.0" + "@jimp/types": "1.6.0", + "tinycolor2": "^1.6.0" } }, "@mapbox/node-pre-gyp": { @@ -4076,12 +5418,22 @@ "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==" }, + "@tokenizer/token": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", + "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==" + }, "@types/json5": { "version": "0.0.29", "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", "dev": true }, + "@types/node": { + "version": "16.9.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.9.1.tgz", + "integrity": "sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g==" + }, "@types/webidl-conversions": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.3.tgz", @@ -4157,11 +5509,15 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "requires": { "color-convert": "^2.0.1" } }, + "any-base": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/any-base/-/any-base-1.1.0.tgz", + "integrity": "sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg==" + }, "anymatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", @@ -4172,6 +5528,11 @@ "picomatch": "^2.0.4" } }, + "append-field": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz", + "integrity": "sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==" + }, "aproba": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", @@ -4230,6 +5591,11 @@ "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", "dev": true }, + "await-to-js": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/await-to-js/-/await-to-js-3.0.0.tgz", + "integrity": "sha512-zJAaP9zxTcvTHRlejau3ZOY4V7SRpiByf3/dxx2uyKxxor19tpmpV2QRsTKikckwhaPmr2dVpxxMr7jOCYVp5g==" + }, "balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -4258,6 +5624,16 @@ "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "dev": true }, + "blueimp-md5": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/blueimp-md5/-/blueimp-md5-2.19.0.tgz", + "integrity": "sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w==" + }, + "bmp-ts": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/bmp-ts/-/bmp-ts-1.0.9.tgz", + "integrity": "sha512-cTEHk2jLrPyi+12M3dhpEbnnPOsaZuq7C45ylbbQIiWgDFZq4UVYPEY5mlqjvsj/6gJv9qX5sa+ebDzLXT28Vw==" + }, "body-parser": { "version": "1.20.3", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", @@ -4328,6 +5704,19 @@ "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==" }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + }, + "busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "requires": { + "streamsearch": "^1.1.0" + } + }, "bytes": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", @@ -4351,6 +5740,11 @@ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + }, "chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -4382,11 +5776,20 @@ "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==" }, + "cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, "color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, "requires": { "color-name": "~1.1.4" } @@ -4394,8 +5797,7 @@ "color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "color-support": { "version": "1.1.3", @@ -4407,6 +5809,41 @@ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, "console-control-strings": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", @@ -4442,6 +5879,11 @@ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" }, + "core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, "cors": { "version": "2.8.5", "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", @@ -4477,6 +5919,11 @@ "ms": "2.1.2" } }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==" + }, "deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", @@ -4549,6 +5996,11 @@ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" }, + "email-validator": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/email-validator/-/email-validator-2.0.4.tgz", + "integrity": "sha512-gYCwo7kh5S3IDyZPLZf6hSS0MnZT8QmJFqYvbqlDZSbwdZlY6QZWxJ4i/6UhITOJ4XzyI647Bm2MXKCLqnJ4nQ==" + }, "emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", @@ -4934,6 +6386,11 @@ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==" }, + "exif-parser": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/exif-parser/-/exif-parser-0.1.12.tgz", + "integrity": "sha512-c2bQfLNbMzLPmzQuOr8fy0csy84WmwnER81W88DzTp9CYNPJ6yzOj2EZAh9pywYpqHnshVLHQJ8WzldAyfY+Iw==" + }, "express": { "version": "4.21.1", "resolved": "https://registry.npmjs.org/express/-/express-4.21.1.tgz", @@ -5027,6 +6484,16 @@ "flat-cache": "^3.0.4" } }, + "file-type": { + "version": "16.5.4", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-16.5.4.tgz", + "integrity": "sha512-/yFHK0aGjFEgDJjEKP0pWCplsPFPhwyfwevf/pVxiN0tmE4L9LmwWxWukdJSHdoCli4VgQLehjJtwQBnqmsKcw==", + "requires": { + "readable-web-to-node-stream": "^3.0.0", + "strtok3": "^6.2.4", + "token-types": "^4.1.1" + } + }, "fill-range": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", @@ -5165,6 +6632,11 @@ "wide-align": "^1.1.2" } }, + "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==" + }, "get-intrinsic": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", @@ -5187,6 +6659,15 @@ "get-intrinsic": "^1.1.1" } }, + "gifwrap": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/gifwrap/-/gifwrap-0.10.1.tgz", + "integrity": "sha512-2760b1vpJHNmLzZ/ubTtNnEx5WApN/PYWJvXvgS+tL1egTTthayFYIQQNi136FLEDcN/IyEY2EcGpIITD6eYUw==", + "requires": { + "image-q": "^4.0.0", + "omggif": "^1.0.10" + } + }, "glob": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", @@ -5226,6 +6707,17 @@ "get-intrinsic": "^1.1.3" } }, + "gravatar": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/gravatar/-/gravatar-1.8.2.tgz", + "integrity": "sha512-GdRwLM3oYpFQKy47MKuluw9hZ2gaCtiKPbDGdcDEuYDKlc8eNnW27KYL9LVbIDzEsx88WtDWQm2ClBcsgBnj6w==", + "requires": { + "blueimp-md5": "^2.16.0", + "email-validator": "^2.0.4", + "querystring": "0.2.0", + "yargs": "^15.4.1" + } + }, "has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", @@ -5316,6 +6808,11 @@ "safer-buffer": ">= 2.1.2 < 3" } }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + }, "ignore": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", @@ -5328,6 +6825,14 @@ "integrity": "sha1-SMptcvbGo68Aqa1K5odr44ieKwk=", "dev": true }, + "image-q": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/image-q/-/image-q-4.0.0.tgz", + "integrity": "sha512-PfJGVgIfKQJuq3s0tTDOKtztksibuUEbJQIYT3by6wctQo+Rdlh7ef4evJ5NCdxY4CfMbvFkocEwbl4BF8RlJw==", + "requires": { + "@types/node": "16.9.1" + } + }, "import-fresh": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", @@ -5510,11 +7015,50 @@ "call-bind": "^1.0.2" } }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" }, + "jimp": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/jimp/-/jimp-1.6.0.tgz", + "integrity": "sha512-YcwCHw1kiqEeI5xRpDlPPBGL2EOpBKLwO4yIBJcXWHPj5PnA5urGq0jbyhM5KoNpypQ6VboSoxc9D8HyfvngSg==", + "requires": { + "@jimp/core": "1.6.0", + "@jimp/diff": "1.6.0", + "@jimp/js-bmp": "1.6.0", + "@jimp/js-gif": "1.6.0", + "@jimp/js-jpeg": "1.6.0", + "@jimp/js-png": "1.6.0", + "@jimp/js-tiff": "1.6.0", + "@jimp/plugin-blit": "1.6.0", + "@jimp/plugin-blur": "1.6.0", + "@jimp/plugin-circle": "1.6.0", + "@jimp/plugin-color": "1.6.0", + "@jimp/plugin-contain": "1.6.0", + "@jimp/plugin-cover": "1.6.0", + "@jimp/plugin-crop": "1.6.0", + "@jimp/plugin-displace": "1.6.0", + "@jimp/plugin-dither": "1.6.0", + "@jimp/plugin-fisheye": "1.6.0", + "@jimp/plugin-flip": "1.6.0", + "@jimp/plugin-hash": "1.6.0", + "@jimp/plugin-mask": "1.6.0", + "@jimp/plugin-print": "1.6.0", + "@jimp/plugin-quantize": "1.6.0", + "@jimp/plugin-resize": "1.6.0", + "@jimp/plugin-rotate": "1.6.0", + "@jimp/plugin-threshold": "1.6.0", + "@jimp/types": "1.6.0", + "@jimp/utils": "1.6.0" + } + }, "joi": { "version": "17.13.3", "resolved": "https://registry.npmjs.org/joi/-/joi-17.13.3.tgz", @@ -5527,6 +7071,11 @@ "@sideway/pinpoint": "^2.0.0" } }, + "jpeg-js": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.4.tgz", + "integrity": "sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg==" + }, "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -5736,8 +7285,7 @@ "minimist": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==" }, "minipass": { "version": "5.0.0", @@ -5863,6 +7411,30 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, + "multer": { + "version": "1.4.5-lts.1", + "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.5-lts.1.tgz", + "integrity": "sha512-ywPWvcDMeH+z9gQq5qYHCCy+ethsk4goepZ45GLD63fOu0YcNecQxi64nDs3qluZB+murG3/D4dJ7+dGctcCQQ==", + "requires": { + "append-field": "^1.0.0", + "busboy": "^1.0.0", + "concat-stream": "^1.5.2", + "mkdirp": "^0.5.4", + "object-assign": "^4.1.1", + "type-is": "^1.6.4", + "xtend": "^4.0.0" + }, + "dependencies": { + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "requires": { + "minimist": "^1.2.6" + } + } + } + }, "nanoid": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.0.8.tgz", @@ -6028,6 +7600,11 @@ "es-abstract": "^1.19.1" } }, + "omggif": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/omggif/-/omggif-1.0.10.tgz", + "integrity": "sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw==" + }, "on-finished": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", @@ -6087,6 +7664,11 @@ "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", "dev": true }, + "pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + }, "parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -6096,6 +7678,25 @@ "callsites": "^3.0.0" } }, + "parse-bmfont-ascii": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/parse-bmfont-ascii/-/parse-bmfont-ascii-1.0.6.tgz", + "integrity": "sha512-U4RrVsUFCleIOBsIGYOMKjn9PavsGOXxbvYGtMOEfnId0SVNsgehXh1DxUdVPLoxd5mvcEtvmKs2Mmf0Mpa1ZA==" + }, + "parse-bmfont-binary": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/parse-bmfont-binary/-/parse-bmfont-binary-1.0.6.tgz", + "integrity": "sha512-GxmsRea0wdGdYthjuUeWTMWPqm2+FAd4GI8vCvhgJsFnoGhTrLhXDDupwTo7rXVAgaLIGoVHDZS9p/5XbSqeWA==" + }, + "parse-bmfont-xml": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/parse-bmfont-xml/-/parse-bmfont-xml-1.1.6.tgz", + "integrity": "sha512-0cEliVMZEhrFDwMh4SxIyVJpqYoOWDJ9P895tFuS+XuNzI5UBmBk5U5O4KuJdTnZpSBI4LFA2+ZiJaiwfSwlMA==", + "requires": { + "xml-parse-from-string": "^1.0.0", + "xml2js": "^0.5.0" + } + }, "parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", @@ -6157,12 +7758,32 @@ "resolved": "https://registry.npmjs.org/pause/-/pause-0.0.1.tgz", "integrity": "sha512-KG8UEiEVkR3wGEb4m5yZkVCzigAD+cVEJck2CzYZO37ZGJfctvVptVO192MwrtPhzONn6go8ylnOdMhKqi4nfg==" }, + "peek-readable": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-4.1.0.tgz", + "integrity": "sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg==" + }, "picomatch": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", "dev": true }, + "pixelmatch": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-5.3.0.tgz", + "integrity": "sha512-o8mkY4E/+LNUf6LzX96ht6k6CEDi65k9G2rjMtBe9Oo+VPKSvl+0GKHuH/AlG+GA5LPG/i5hrekkxUc3s2HU+Q==", + "requires": { + "pngjs": "^6.0.0" + }, + "dependencies": { + "pngjs": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-6.0.0.tgz", + "integrity": "sha512-TRzzuFRRmEoSW/p1KVAmiOgPco2Irlah+bGFCeNfJXxxYGwSw7YwAOAcd7X28K/m5bjBWKsC29KyoMfHbypayg==" + } + } + }, "pkg-dir": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", @@ -6172,12 +7793,22 @@ "find-up": "^2.1.0" } }, + "pngjs": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-7.0.0.tgz", + "integrity": "sha512-LKWqWJRhstyYo9pGvgor/ivk2w94eSjE3RGVuzLGlr3NmD8bf7RcYGze1mNdEHRP6TRP6rMuDHk5t44hnTRyow==" + }, "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 }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, "progress": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", @@ -6212,6 +7843,11 @@ "side-channel": "^1.0.6" } }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==" + }, "range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", @@ -6238,6 +7874,14 @@ "util-deprecate": "^1.0.1" } }, + "readable-web-to-node-stream": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz", + "integrity": "sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==", + "requires": { + "readable-stream": "^3.6.0" + } + }, "readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", @@ -6253,12 +7897,22 @@ "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", "dev": true }, + "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==" + }, "require-from-string": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", "dev": true }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" + }, "resolve": { "version": "1.20.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", @@ -6293,6 +7947,11 @@ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, + "sax": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz", + "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==" + }, "semver": { "version": "7.6.3", "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", @@ -6438,6 +8097,11 @@ } } }, + "simple-xml-to-json": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/simple-xml-to-json/-/simple-xml-to-json-1.2.3.tgz", + "integrity": "sha512-kWJDCr9EWtZ+/EYYM5MareWj2cRnZGF93YDNpH4jQiHB+hBIZnfPFSQiVMzZOdk+zXWqTZ/9fTeQNu2DqeiudA==" + }, "slice-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", @@ -6468,6 +8132,11 @@ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" }, + "streamsearch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==" + }, "string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -6533,6 +8202,15 @@ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true }, + "strtok3": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-6.3.0.tgz", + "integrity": "sha512-fZtbhtvI9I48xDSywd/somNqgUHl2L2cstmXCCif0itOf96jeW18MBSyrLuNicYQVkvpOxkZtkzujiTJ9LW5Jw==", + "requires": { + "@tokenizer/token": "^0.3.0", + "peek-readable": "^4.1.0" + } + }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -6594,6 +8272,11 @@ "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", "dev": true }, + "tinycolor2": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.6.0.tgz", + "integrity": "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==" + }, "to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -6608,6 +8291,15 @@ "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" }, + "token-types": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/token-types/-/token-types-4.2.1.tgz", + "integrity": "sha512-6udB24Q737UD/SDsKAHI9FCRP7Bqc9D/MQUV02ORQg5iskjtLJlZJNdN4kKtcdtwCeWIwIHDGaUsTsCCAa8sFQ==", + "requires": { + "@tokenizer/token": "^0.3.0", + "ieee754": "^1.2.1" + } + }, "touch": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", @@ -6661,6 +8353,11 @@ "mime-types": "~2.1.24" } }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" + }, "unbox-primitive": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", @@ -6693,6 +8390,14 @@ "punycode": "^2.1.0" } }, + "utif2": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/utif2/-/utif2-4.1.0.tgz", + "integrity": "sha512-+oknB9FHrJ7oW7A2WZYajOcv4FcDR4CfoGB0dPNfxbi4GO05RRnFmt5oa23+9w32EanrYcSJWspUiJkLMs+37w==", + "requires": { + "pako": "^1.0.11" + } + }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -6703,6 +8408,11 @@ "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" }, + "uuid": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.0.3.tgz", + "integrity": "sha512-d0z310fCWv5dJwnX1Y/MncBAqGMKEzlBb1AOf7z9K8ALnd0utBX/msg/fA0+sbyN1ihbMsLhrBlnl1ak7Wa0rg==" + }, "v8-compile-cache": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", @@ -6749,6 +8459,11 @@ "is-symbol": "^1.0.3" } }, + "which-module": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", + "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==" + }, "wide-align": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", @@ -6763,15 +8478,131 @@ "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", "dev": true }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, + "xml-parse-from-string": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/xml-parse-from-string/-/xml-parse-from-string-1.0.1.tgz", + "integrity": "sha512-ErcKwJTF54uRzzNMXq2X5sMIy88zJvfN2DmdoQvy7PAFJ+tPRU6ydWuOKNMyfmOjdyBQTFREi60s0Y0SyI0G0g==" + }, + "xml2js": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.5.0.tgz", + "integrity": "sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==", + "requires": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + } + }, + "xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==" + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" + }, + "y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" + }, "yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "requires": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + }, + "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==" + } + } + }, + "yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + }, + "zod": { + "version": "3.23.8", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.23.8.tgz", + "integrity": "sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==" } } } diff --git a/package.json b/package.json index 996131c3f35..d4211a4c407 100644 --- a/package.json +++ b/package.json @@ -14,14 +14,18 @@ "cross-env": "7.0.3", "dotenv": "^16.4.5", "express": "^4.21.1", + "gravatar": "^1.8.2", + "jimp": "^1.6.0", "joi": "^17.13.3", "jsonwebtoken": "^9.0.2", "mongodb": "^6.11.0", "mongoose": "^8.8.2", "morgan": "^1.10.0", + "multer": "^1.4.5-lts.1", "nanoid": "^5.0.8", "passport": "^0.7.0", - "passport-jwt": "^4.0.1" + "passport-jwt": "^4.0.1", + "uuid": "^11.0.3" }, "devDependencies": { "eslint": "7.19.0", diff --git a/public/avatars/demo.jpg b/public/avatars/demo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3d26b41648f0609274bc12fa0a349600ec502d80 GIT binary patch literal 277829 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⪙JkQ(Y}%E! zXQqfno7(}60Kc&JrOw`{xhCac!dS+u1d9=86iKgUKw zJ9tX5^UF&ivqs)Kcs=|EA(8`UA2{qrJo!bw)hXcYHRI~uqJ;}z2xpcuIc=EP&^$y( z(j*wd>$K7&(2XlLYFjN93YH2JAoiv}o823^6bK9*-PzJS@oCC|wY4ZxEj|g7AxeoY z57v4IS0fM=s|PN+f2C>>yK@aM1*8)ScI?!^qhB+pjmv9*xpsV~dasU(>ML&53G1Vf z=&I!70k`i;1;HP~>`lIVHGs)~>J~MW&TxV)_14#+Zh|Kdhct5_&2}8_?x~63I81Kg zCD^B>CCG5D!Si~6h`$afD8J>?ug*WKZqQ&4_ZNKFztW`)zF{!|>VGsg=b_`TFYA0E zI-gK&lP#hSd|s;?{33_qN!A~PY;w51Ee`BD33TT}a|8j<-1Ya5-TW)@64c;ZWQ?nr z>~5U6(C?Dfr_UGqXD%nc-Hl}{^Y;GcYUq*bUu7>os6DQ(?Z4Rqber z6E~C>^2bWE$wpw~tnX3a`uw_Khpm8JGgR+KNvb--N}l0u=wU9*eYg1Z2dG838M6Tho58&7C17DoZc0sMPVurm#ltdbq`A6regl?}U3oHfkU%va<-GDT?N}n# zmS0~zCKfYdfd=mjG55yi`1eKg=B(DquP1BH>s!RruV0urLC^i1ZHhz(L}M?-yKoky z79fogLMGLbOzHUlC@L1$ByrDzezMO?qCKdg1f=WYFF=M zcBkgLXl@4T8hrcN2*&0+=`iqjgS{HNh~@Xs{SAe$8wXW(7M@#8Kl!iUF;_hmB_&F- zboRU#?VWv*e+W-EC{VxzzZr(#CJOGJPs^-NuF-SaU(L7irQMN89cqZjSA7+xHmqr# zw{mF@I7fVc-YkaYtu}s+`zZtK#dfr(DwM3&^AXU0Y`j=-KK^5N3&Q2T3U10LGbwsh zTHe?v=9Uk-31}cssV5G~s95nf8OQ^Q|G3l`0)Yf=x!#O&YAWC7K4WuB=ZGU*m<=RD zd?bF>KZ0IT9kOx6o3@^`-WCgPKw;s9T(xKFXCSQ9V!r6EO5T&)r;O0wukU6 zp`-W@=KLG(l_cy^o4v`U$%`7nb^%v@>Fny|npX78;iPQMaEZmX_{Lq0<$$;3a9d{P z;>VWC;9)FBb;(kxFw({0;^>-E{t)MVzBN}|fxQ!K-n1pVT^xiwjSK_YF-t8bP{zFKcH>A*TyaK1!h>i@HJG=FMPC78uT#41D6M}(%Yf2$gfrS=!YvSZmC&tknVI|DD|>JziX~>=(Od{3 z)hMgaSfLh4ej1?yQ<^LFo~mW>rtfNo@9T`i8ntlWaM?Q+Ta~o(D^glax=Zcdl?5%o zc(3c8ZEfqe-0F#Kk8f&z_v58U`fx0K`f<9vsgB{9TFPW7&IM9y=-xR<@I2SEz~TxM zr03=2=Wx_Uv4}REdBc@gQW+NC-8el(G?C@}DLplRV!QdHMxgCU-2Y*}JgFJqHa_la zxfn%22GdQ$T@6lWBB2jiqz$)pcYux4r|B(X!QhT#akN zNz3-|9E2q&V^CW%7S?4rvo+ny5Yi*AF6$|^@tG8veCmz6YA~my|Bw6G!*KM;>%+?O zf;3Y}!54CnDZdAAsno$Y`A2N{-|3zI{^N?%?JLF4)|+$if?C@CNDeElZlO;47CWs< zBo*2n=3~3+x2Ijn{4{t0KCvDi`jGl6^;v&rVr?{_qk8HOX}0Z>4OC%w?C>m(x2vsd zr?!!dR>&c17Dqqz>5yM)!q(2sA$U<#vWQB;Pjej_;s@jpZg2)Kavcioy1i9So`a^D z!iP0U_&ZxwD69INK^E5Ubp>Lkb?2hxO$(?FClPp>ktCw%sa(NIDBn}a-5G3KsvhXRW zxDMwwGAsDTcnQhdU}9cgesWw0(I{@Aw^ERt5Y?1uemwi5^yf%u@THc^BgaV6-Hy_{ zL#oJpHSTes_~EeTVSQyZ@@Hr+E1Bqgu`kj(v9{=C~RrlmP3D4?( zmf!HtP5VNhNYTXLUO(2te94-%rPN(^!(hksU8OlrKTn?Ve?p?mw^!3rv#n-KmruT1 zYUAH}!#>B#x+m{fc%wQ%*}^pO9V;CnSW3~N;)Q^Tj_Yl3wyQAwSCRYo8zjVw!9yW( zR}}Y>Fwa2tm2=8qHfUq2C>f5RbBF|vIjOJce{cX2-;(o9lz@yWf#-)>#mo1pvgzAh zVPDDvEMZ0Eke5ft9gB-E(K~XLgTatRPN>9iUwz+sSlq8p^qL{j=pEF*Kj2rV>FEu* zV)8R>Lpz5^^S4r?e@LY={ar~)#cvMn+41^9yflA5?4f8)0s4}S!vjdW@Cpue#KNOT z@Y65mlpPnY?3?cpw}PRRdH=y#3U&8$zJ|GQ*a@e|mZ|A=#2-8a*bH5B+bi>|1JYd~ z3%;Esz9i>@Wtl8uk{bImKQe?nfE!9<;*95$mEG1LUdu*nha2^&u@1BM4p`OWaA}99 zu!$%AB8Wslq+K=*7tv99(b;t+`}vnS>fg4xWG}n|SlOvJHgbCT7ZvB3J(c+K)E6fk zTpZTk!b%x$Kmm`n-sb+Eg2@(2^fZ$c!?lvL0SE9d39P2#28*8B?6!q9dE&+owWh^8 ziU!*O>ldAacsJ~$_}Nh2YFn!G)sc|lVX~`%*g98%EgW)NTulxhKl91H0nDCjM#@j3 z{xJHgH(VBt>bXUC3Dgx=VNX8SPJZ^(;pmP+7(cr5ErtI44&~oxU&iXgHdA$xrXV)^^sf;>zL5%Pt^#FKiop$vKpcLTu)+ zNN*$>{*~>+LuZ*v#pi&F|I&NZq5bbEpX*XXKl+)g{uq>B0sPxdC09yhTam?uOsJ9y z>Z>#^r0g2`o|4^FZfzwoW<$jckhPUUz5KVs3gNG^I)v_+b>lOow1#@gV-Qdu!?3UI)S2+R3JXEol z*d>SIFv!k?ah2lF(P(#CaLueEw04?pi)53MkZDohE(s5;51;x6;H$o9$cYOPp5K4m zC-ko<^6ns_*81Y@xDY#0v9DzU$#2IA8Q%~vqo*iFKX<8)$-|}Zu5Rx)#?W_WRXcXE ze+zaMSoo%RZ2i_HLY>Mq>9MCi+Nj&U5!@HTh~o1U;H-4WUahTN=udmfnOI(})km-d zRt+eEUOj|C`CF&I6qz-U;X05r8*!*Yk^kKv(@V;73WoS`)CTBna*M3{I=_j`2E3Ud zy+{nZrASe^Bhb2e2rZf9`l8x&F*IStqjWmripJN1g=-_EqSr8~ zmpFAUe$fehN9mY1*s9sg#*UU;CEVT%GM3kua`?L;9^!fATKJXvANnfxPh9i{w8iym zy=_>|7ZNY#O6gNY9p8^CQ(;j1{uh(2*~0*m*dPwWoWi|vKT0KEvr(+CbsobZuSKCh z-GWn!3b*>z%^l1>yr2(rvph`z{?pt1HE`d_kkHV-sf~Rn+9j5@gv;Yg*TE>T@Silx=lEhT&tKvz~xm6`xDwKo$X-n`P7pPT%rUr zdnRTbtnxCusP!!)3*S3pSYc;}iF>`Z3t)>XiMwZR^DM7edtQ~d&-)oSc!*{1%eKbu zXVB+Yo2VPkT7EM6mAUdTTC%s)M%6kk)8uS{Hk-rx#m{10GomK0l9~eTlV|WjE|Vzh zJFIuMv(b}ZHSC|e_0vXXF6Oe&!pI95Jvv8L(6*%l4&j8wwwI>t+l{Jevdfl@=jRoC z7I3=8)*CHybq~>k>XVr(ONs5a|5#T&lhi9Nc%!R~My^5to6E&OOjjSzB2mkpQuE}V z;3hwo2DyC?m|Nn4K#)O?M@h2FQLgzFO;l$3CHtd;c{1QaZH=yeT`27J$yc4)XsJe4 zQ4D5+3XF|Gflkf-5btAYF5B#DG$!AE{#EEcY(vHhYT;(r;`@rZy7LeS8Ze zzLBbxA|GO zn$IPh_I1@Rz%t50)8M^5G1icD1FXwh;L7gfoU8Y0`=t25)ocbAQS0@NwGk;>jfuXN zAKczur0!)S#@Dj||5{=$u0g>bE)-^sdM#91GBoI$sgq3nawSh@u=+?=VD=}ay}4Q0 zkj5e#mU^70B62?dqq^yWO(4>bgTLt-7uc%ySeDEt!_rdKw>C@+G&X2fwC}(uR%H66 zqmSX^K=+c!uo0J>;C)?qYuA>4*%I;OUPByP=|&8NFbeQLOz)U*pVYK)@K+Bj^)oA! z(^*_)u-Mo7&bgmhs=*K!YG&(P4G!9cK-h|)Ejk{eRtN@Zauox-xCN+b=Xkz zRV)r?9|R0Fy0P~!Upe+B6!dnc=U_n}{U=n(P|zLDBZA_0p*ANgCoiqr72k!zy?~!d z2;z1$Y4{9gQD@nk;UTf5eZqlYgA*IM``AMCXE)LE zQPsKd>@Pr_&Zmq#*g?L~}@ znrAIkS0uhQF#Hx6+?6WZA%Mb??en=(;LF-Xeb<*J|B3RmH&qI(LRH24xzN9&fKzSS zKwXCFq2F*N66N4yT_?>nQ`^v$f6Cy>U{eE(bzJYRSN=b2ymwSnPt-OVdR0J*L3*zW zA%OHQh!jD3PY5I+MY<@xNDW142_Rsh_gR%fhiLY_u@rJo^Is5xE9bVs4_Y1gR-!eXYw)tA?4Q=-%_%1#VJr<&U$(pN$Rm#`CVU@2-y`NXTn6J`W6^m$=r)mMdS}dyz-u+t? zkY6?8_u%hqRhQT9(^f4<@OJM3qr43{clqwNYDZZZ-s#P_CrMcKiLup z0Yr57h`H!VXt_ZWsti1wU==k|UU36PNp%f~)NSSj^4oL^1SEv)gZD3y_=nTvHvovz zEE@gpi(~-LjF+w34ImVavNS(j;;&G=jOhL=UwD7~bV6M^awIv60(}Ioxz#G(=|u{Z ze`W%gr=FC5i*6O24g>_g`k>_7;yy4$6qwX6Py6y&!_#@g&{vh7J3mqyJHFb5VQUQR z(fw_C0#SI`;NZc4&)J^^mKj-#1ORoSP z(syBKx>-kge~GqxCfzP(|A0hegj#BOw5FQj3CAfxXfKGS3jI$Bk6>8sRfN-1yjxRv z{qB%ti+_1Wb{OJSL(*!(60Kk*nA;?iK`u|0?0`wENJVJRs$i$|+H4+N=uJW%v=`if^RO87ck=OL-- z81*qb_mWkq2rZNpGNk*&DYQ4PITL3-x%rsgKhqySIz(Nr+l2xfNl9S9I0f(jTkd#F zA&?`?@rL{@;tC$q>`2_#;zQ;&F!sNzIbcb!DatuQ970MA#{B92o+BjDQvaZnpTE|; z+fv^LCj9k-Fh;6J-`*r99uRR!a~i?K%dra6lt}L}UAhN#8ev;g5V))b@9NHhk%qW+ zFM<1Gnr*>~4AiUiRBEGF5fp$7G@Z3xB1O5CAEmngQM>}`RaHEk(I!k|YQ-Y^*`;0p zz@XS+ipVzIzkaRULHS$_*XM_{Fl^@${@n2%KB>Mc)ZbptGX0H(OD-onm;qSD@lNw? z1{HKQM`$%1B^+KP9BXGQ`(G=`_;7^vu*>?pvt*`bby6G-&m zNZou;80UXmK9&4eQ?oj?8QxD6hxjGX~)=wQLK8P#TNw^u0Z?^Aa|c$Nn>m)FiU`bys6C_JT)uJ%a%2hn|LZ8sPmq! zVBpz$M$Z$77Cx;UUrXR3Ql9XmQRo4;^`-0d>fA>cmZ*;;U0u?!l-6g-5pNt{V9lb8 ztVGy`ipt}rz7t7unADllh(2ezB@MoLUZ`vhLz|z@PWmdSQEwc2{1ChyyGV}AJ>pC~ z{*w*G(1gP)1qw|%s~O7;Bjq&#O}RJCRt`tKrzWabdO)?5RM z{`#Fb?)KHw)6v8sJ#HebLOhfj5BIG&46`(w3H_i3wFMjCkbD zyBey%=ic0|o<~kI!?!%r$7P*|CEKE7u+zCkpA68w%7O0g3Y~<677U~=KkS|Ko*UQk z<{t&9>w+gxUx)VT(ZES!S7GPW75Em;3`);P(}nA4Yc&61xMQybAn zTa`@g5O&sDlo8tB3Z2w{|CyfNq6{--?*amWZrjk?djwJ_RHR;j$p757D4QbqKVM>F zV`HGGTM55?mgCZ8mzq|UAbv0Au)toLM}Z%4*`InSE1el6ofZM02cuE5NKf!6xF(oW z_Vn5)KgWDkR)kUQ;qZ%06`pHi#UyXYw0n8`{>c)|tXYTPa1_bhF6}xwL8R#8>GrIW zIwC#&gUj2caa>A5zfmKFr8}V2#|WOl3^eAW)}6IaHP`3hS-u z9}7)W&^jnI)%{NbR$)u@|35+-0Gq-8PmkM5h5tX{Lj42(Pfw0zxbk5H6A_arUC{1% z?K~K)ym8|6cfKsuQ|7Pk1^K8weZ-mOutI!8=TIxc+8wxFU0;a?u&m;Gi#MiPBM`tUU`)adhA|IG? zjSriSZOvroGw{oa9Q=tI>-TD=CiqGlDI1KxO$&EHc5eV@%{{x4=1FvzhWxq(n!}x# zfRcWbWZE8%8$bfBDlwg|5g5#Fan181&aG*DE67OCI7XM>R|1yI>3?w75k>dxHuROu z2~&~>b4N1;eeZbW7GKE5bl-IWj~{`GCD%_`KKPgYR;0q~n|@}>S$4$0h|sQr<&cYt z=HX|Z2-&q`R-gIOze9M-xsG!u)9hBP<3yt3rJV`PPRQlZb0UlJlGR-&ypQzpK&XJ{ zFkC`f9AsqV`lxcyCUq89ZI$+-LQ}(j(7bH zhFcS6;4pM{H%#FU_{Ug-_&tH0rW=5B8|6mVesBL;Qqp%$v-*!z-m}_ARn#MEZaF5{ zmiY&Ds;{N%l1A3&rl!4XMoTS=D0h8~7^l4(+#oA=%bLe&>fs}NCsu`5;F@{g0k_vG z;T@cx=bOBfdavz7asrKKooRYGrV>D3%cKdm2)fg7p23qF_0vIti4W^=t`Fvn7hn82 zBKvaPcR_Qg)N=!15BftqaviElOez%G35P~;yxghj!Tl|L;CVV>NP&)?ce1@t+n{}M zAgZYuPX8V4+aaZBR!ng^*QZCWv0iQB(vVi`7#++#wGf;1P|$9otlE8X!)H5nC!KGz z$@S9JwQ~j?G&@MxK|0@WSgBs}Ez@!KMaZ}vUEkpSD$!429cebt?e3o`JbGgL$*ia{ zyvL2pg=As zZ@10+f~l>^PjHDnP>e;%c!QG6CZ1cjjw8vPtaXq2`_T@m6X> zw^9EQc3L)ytS4-f`BEI~JWLFn4F~3{pq!5*qL*n@b_}4}8$h4A>Tbn8w*FbMX?ksP39YblQQOl=Hv|;jXvSnt1S9L2co7Gr==q}DTv?84$-YK z)H6?A~lnTd#=;GQvPeY>gK)<&!ATxLW`p@yfn(r<3&Ey9? z7SVK10=An)ss0^KF8aR4+wm|Nmiy0jf6r3VBDq_2O;f8c?`QMGbWrhLT@3g&b1;>HIS@Y&B9m>!y`|(~?QVWoTIkKeT4Nf0CNH zyWf~*0YqHIp0MK<{u@N(1!5+E<|MmC{b6iz^pC3H1v{PQUe-ra^x|lgE?)V~yJ`tP zegq#iul`{J|6CG3!KJ&8X;A}pQyAm$za|x8#Y(0EmwDW6+;yv>@3&CO&hspLCT8rj z6(~t~n8T!R@CsH*exW&Lu+#$Wpoe_LTKY##qyBd`R<_k-c>zzr`_O-Ywt5fL!97@> zYI;2BdySf$H3Ny7N#CD*8ImkI71SEY)SlNDgC(7N^+RLM%U?rx)p#~d5_;Viz~Q~C zyg&oJ9(Nx6D(=WR;I9y$&z|&RptK_YfFCaVOA{9}-6rtQY;b?zG@Xj+V244}*q;y8v*1N!f;T6C_PY)g8X zQ8%z47}08htFlL|2S;@J`T*<8-nc4p9=X9{ofRvgx49s8@f(1>V$x~SKccIKF>U)F zA2(7xPXFHOAyJE3ib8uMgV#Je;N5CWOHaWr<-EL;sYF#;DZU(zMVLraslU*1$fZKt zytp>;$@-?YBl=tMa}{0Y*auI!i3Y>~r=d+~r?vrz0&^e?CgNt2P4y8~GZJu1q%)+7 z(rkhUOMA}d$Ep1hcPk(7_rsWLr>%VcsiqR-DKcs1I&`gblwtUqb$qZi%ckC0rh)uU zO5z0|Z|EsODgnWa(3$BCfObjJRg-f2Z@pIozWj^W1WjYK3jt-qp=MR~@MKo*E z`s(kMWp)cH`$?At-vHLF2+R!AVxVLX=dRV-YB*xm(M6HB)7DIab5~>Vn|=9+y(*y( z^GIWD)3@+;K7SnYp`UJ8dj7t{DIrs?=W6O)>re~PJ7gHP1HSn2aZsmoZS!UQvyh^A z^E~@4SW{%lAZ?BNJ;EYw!+Rox>dcO+ap|U}i5=(T2Poyf3l7)+RtX$2uY~*6BOgr* z^o`h?YN+qC78AOhri? zQmNj~be$HEI{N98H_f&&otTMdKM_5j*Jb! z+gv8}R}4v_FN)i_4lds~ig%)H7AEj8PAp{ecqqf{eIHl+I!vxr)zL1E$y{$@@G+QJ2}|QiO?v|f%c5v(P3-T)i>hrPZvb)3 z?!MH!;(QQYT$PT6O7O1Ay8odQw=$PV(nugf0P01l6rHu`g|G%Zf%>kc;5{7v@+Ss_ z9c>sr(cYh;U~EVbo-$YAH$gSgqYu@;r5?ulhxQ##=jaI5Tf^QtQ{YGboc8ja8OJ9V zt(YZCz1@Ye>4=|In0Mn$CIB}8GG6v@3qAd|M~(}Kb+PmoBMXR1>Dx0A2iizsJe?WP zRpmmHlA*4okEZ{5ABPM54ZufvsJ$OKE?&2r&H55nqp}0cV63R=`5@Xyv`nLagaxc` z=Y1PMRc5&PW}Pu9SoX^i&;mWiId#`R?Il50bg|q)VCvwR`fSg-smm=wmS!JER@f@|>hGj)mGW_^8$sZ76>+%P zy(o;SIr%`FDY0elt?}=d=&f{>)c66M?W0!d-2d$({+nU6%nttvC7E7BT(c{UDpJ~d1s zZ9YZ!@eg4AR^D4w`B`}4&0F1Y+e-#^7cIZ(la1>`oWDG?0r}}cR+8pEmcDvtF9Pk8 z`)O9TFS1KEdFlMt^FV6K`iC_fB!+?;O!-TAZ{EVOpKWSG- z-yN2t0lB%Z_ep{FraxyIC+e8=JpL|oydWC(Wt<)NJe1-y;$7H)j}ih5tOh`b18D}G zs0#MSSP?=ND=u~^gN9VI6*Uo;$lSgS`3NU-;JyEIdG zwOVPzFznhHwy00*{_v_bKD1IW{;>W*!s-TlQB{$CDnm!6nAOK z#%PxjKTWb2oRZj>#_T0H{=NC%QQp44SBY`hILC4kgKovl9(Vh_EFs=V-*-C|GzKMK z`qpjw;&Bg(sMrdYp4MMrBp9f9jzN!NAs56g!$@#zX}1W&n*iCFGPP2)Gy>(ysO zp3pKTP*Acw1mcfb==aHWXEl}YZ+Trk!-wz090s$pH}|DUp|1ile7R3H^X{n! z;uZ~%h;)(IQD3g+_v#oO7*;-iEltCBu0KQxSGVckMecw7gq>*M@g)EnbcbLr$zjZa z@3gh7-NpcpH5#*#BQ95-HoB+VNaVxvU5AbElNTVv#q104DYha=G zG;4afReWCaaKqiYh}tS4`^a(AWOm-NsbD=i_?+W@#^sB|j4!|$%TDm!f3 zy{|>{D^_(z$q6yyTYY)cH-N_ai&fTezCOTxlG?LG^{JB*lNcZ%K)yQw`(yX%LzaT` zgd-|&#D%ikNfqiNG5zPK2b}6hiHkoC?soN&s7Q?DLnt!Cb}?`6@9YPou|(8Jm*%NG zFM5Yg!lmO9o?z_>JZXE`b>kjYi1T!`D|mAqz^_b6v})= z`-HA)%_E&Jv`A1L;WBDzG-SpT-B+60Xp%pH9DF4rTI;JPU~m5J`K309WmQ7Br>fGC zvdE$y+cb_8`HshVn#UB-@u_NjUm~2^aO1>=c>H;|45mgq$uN7Q|iArUx zn!e3WI(EF8L~P)g71pwD7gMFkwje+pa#z~=$;Cj7(ljY4iMEgT2klca1VB@w;p}db zs=D8d__fr`pfoXelr)_~Ln(8UHD-2vrGEybMOwa_4UsUz-fa=ABI&WQ;0xA$63zpr zT=?lH;FjsqVitx&?a*oq7%(e?D%%kIZ#pj1*8mKaD-UZ~slOM{@Z4XQsaoe zE+Ph#7m5c92Oxc7ZUC%d;?I_zZS`)>_GT2-y8>U*u4V~v9j77R`8fSF7Y+QxPUlQj z%ZuQ5bu<;m1eXMAQbAhMi*5kBCBTo6pgk(R^NYx?zgD!4u{$%G7iM_>&!Et?8JY~0 z;Q1P2ZeNzYx2Ty9;vkwCT#~%zIc*ux}=drn*$I>=cCU<#+sLPrzwR>)Di06tj z)R^>_*HxY!?-%ZMkB2SjO1?BG57w7TwKL;1(=UaYG9Dl#0V&B6Ihqs|2e%PdLJQf9 z;?z&%)NTO6yL6&mBv0EDLKbe(N!V3$I2;atYzW@9s%+wl*h1|79Yr5M2p++*Zsbx% z`Kj!36b!4#Wl_`H{;qZH#Y+DACki3fjdmYa%e(<_d+z!I0t?j~V{FqpCxHM{a~_}0 z9a(jr$WJ(dFkfi9wdV)!9Wu9wv`)L^+;4T!yO8vKSR1vFBbn@ZbOY@bf>K@^v(2)B5V%KO5yB&KgjXBLh>yBY^O4W?DM zmD~;nU$KyNy0X%zymyPrg05Ha&r_Wjl!3ZrU&tC%(781|+#C%TbMPSSHWRPV#N)*` zQ8fLDno{zg+Hx`7_UvBrHWJF&$Pdo zmxE^5?3Gpfn5HsxTwc!K0QAtgf7rT4cNeR@KC??-g(r|2D7k-u8z zU2~x5hf;lPJtzqt2Ufkr`)d@PK|i&X_>@;?J_1{}OLXToUU)YfRwat}r=jFuhcDtn zk_rzw(n4+kl;>7k3iV1Em}?ID`RSdbb0=UF-IBwz8^HL5;?7}o!L7jp&1#U3X{L8J zoFou=ypzvy&FgBgOg1(0*%RXEW=4YbDE}aeG2%dFS?$b`?{m&@QTGN{v~2eBiZ)c}V4M${)^q=BSYJer9|4 zY))-E#w%#^;dXyINL`L`vu7rss*V$Jp)zi&7QS4E>o^?sfh0qu=v(dl9 zmzNmp92U;mr*2f>Gul|4P2(HDtQDI`E%X&DGcsgHsb8GK`vIc(A4N8!?0IqB zfpCG9wa!E9>}>H)OmM3&oJVVunAODCvYMW_r0p;H4EkL zQ&&yHxYLuC-&Z0j0ppe?rpklU{!uxG>Po|k(PQ%9pQg-cLb0i54IbVo9ASEQMFEUR znUmbIugj2NZhY)&!y>zao~1l)jV;RBr%$3v{853p6^&RDG&|TR&!jNZ!>?(kBFA?F*<_n5IXAcFO zv*p6YRoT4B4Etk`k7?lc)a!W0IE_lMVF@e#`0QgI+qGd7;+crNS|H?FZ(?uqNc;3X zIiA;jjrVA+k=8(v0^H+!(jKU zL7R^Eu|^4R^x}n?%S2U-!zsaO<$heQpkPA^^NKRj&m33J7YH94TD6_%YnwypX<2nY zKr^wwR8#gANX5n3|Afj#Z%|OkgUPs5KGqbf`Z~yKDRTys76ElCWr@X$gcNL_x(Q35RSpK^ssZTZ+`W6{1d&Ysp0w#Kp zfv|g&LKE3{A_O^mmG5Vf!kKS3P=i=;t{>pQFW^KAFcU*?vFUA9D=+%VY^n^Z&`dU%qdZZo*3j3W`naRPnsO zl__E7W?R}7%(ryJ3Ad+TID0<5m&?^r&KJ%EswNMTzmT&1DN2R z^yaRjbUJF@KnJt5G`a2#eWtP3cd@q0as#$;C2zI~>f{C2B7dLV0IF;jx#CY(jNaSN z!lL@@^Q;N(+RvlPML)5dBcrd3xST&^#Rg-9<`&_>dxg zRG?MqGp$K0@4b)j0i;lrgb$hJhtj_x{QOK?p5WPigvgnA;~R?#;V;6D+LvSouSLQs zpqL9E*>|5}K(an&{a?_y+N3_}rs3Ly`8uJ~qA3RqbFFuk>k|ju8|WbsXf`eElp3=8 zH3nGj^t5az;>^dmBIYE@E9=h3Pv>l<%Nf;rZ&yDzsO*NPp!>?qn>IZ5zD$U$56Wz8 zNC~pGQZJU+K0bfwLQ*7RVyo~{N)s?J^Py}m;=32ADIOoi1W=_CcEs`d;zN!e|5WtCXA?(Srnvl^RDosv*F$)|S zXj_R9|0#RQkxf-n=^4e4{Y3tW01QQ&&hx17TZBqQ6$Hx%Y(5P1kht|ojPIL&RnFMd zG8gs!Lv+C!I1xeq0LeT5>0jS!c}=UVHQAc?>2#q;qHfC<>w=mpTi1`(zIx*|2?(CKuZ)tt?D%oij`fi_UlqTFYauS5_Aj?nKt_H~rh>mEJ& z0un!@kf}#z7$K8u+$uQCj?3C4^|6$j%uvgRUpl$>YDPqWqLls3EO67^JE^5u)7t|u z&z=kHj++hj!O;RcQXne&YX4#@xYuTf?XMo!z6O&yD$ShCiiAbEj#TF)YIrX~02Xk~ z4&;t^t)}8@3SL@i+q@GOqDG>`J(h%Nn)6+cSr&>St`ZPj;*~Pj>EiKHf@bxSQ!&cL z*i;Hth9yeh^8V?HL>Y7Zj_F1WAa3rz^|KNE5#$n5f%i=a3Si$FZ{>pY#V z_ze+?FBN;UTLQC^bUYJrv~;<8N?ME>4tqaoFHYDK*LtsU=9_&#f@z=UFi5{JI)2^m z?-s?k$s^KquajVsfyt@9t{o!<9+)YmGhpKKHr9q_(4+4!xu)_GDgbq2yXhFkiDm)C zkNKss_oFd)Vq-6ye`urnBV7nPm27H*dsJq4);odPp>OW$>vR8=FhG*<2ymtLBx~;s z8nFxf{&JS!W1Z!D%U^!^sUD4r*#9w0hMgR!N)LYUp26iVUe7nSWGL#@WtK(8G#X-;p zn=>UfKT+ZSk+%(lD0MifDOsKb$WoDcPRSCumM~yO>2)ZVCjE0@C*I213w?CP!#|&V z45qCxCaS;@JbR}*)he>#Bk%A&lsrQ2Ahu>bh9E3bEP0PPSjL8QKZ4FmAgDmcSPdUV zo|jRrQJ$7&*~RixY?WtNOdz8tWP9`Z8m)hSJR9nXN9B_qtox}=Y79QSv^(F-r;&NR z?>@OGt!2W4P}rBsi@^Ul1S%3wr-Crs;L8!upbpECB7QEJlM6IZ`K3G&DP8h&2pqxt z{4}xC`obNtq4aaXaLJxMNsaW39mPsGYgKX75sO!NE_N?T|Ao`q*1fGthk>;Uwd*@) z;;Atm9LVE?^or=9+cKRfNpDWU9VvsXZI~Nc<~XoBwFMROA=7V5#<+ zANPlo45T_3@>5dLA(^u;(rjJoAL3w;hJ5VT=ioP{n=k*7%7>948Fy=?{^(D7zfX}; zcxknyyf^i@mN_Y7hL++)19Kjl3zdL-vNPpsL9{QPV(QLw5$@;I8VBFiI>|kdylWwxFzCNZG=m~M#qV;Fy(;p89LyKb6TTJojtTA(mFJeFZ2q_r`!14qc-a+n zHjM8}Xb8w6q#flW;Nvqp5*?=9snWDZk1!bW*lkATsrAdpXYj5u# zzDq@|I{H*8chzOuS^^tnRZI61ZWf6Q=pm8Ym+pRtjV}ll&LWi0x(iY^t}qMPk#Xvm zG)tRy6f-N~w@v*f6X;u-;C;)yFf}eV6We%-`pE3~^rae8{Cyr3{bgg(J}b2+>mgoV zcRvX=Sm~wVFW`vF|3&Y?2f45b{=0<>7~3z;r>kUPw3=AsodVYm^+WH7sbpe`E*->}I^qhgHAgYq`}X(@gus&0+o0@O~}$^6xX>osV>G4xQZZ@_NL%U z@@zl;mHqsCHuCjMv~2VapsfXj)o^xV@MZpA9BnMuE zH8pPUw&GezIdXi}ql~J8kB80v&O@o zOjC9C{L4kSI0lrcsz?qP1h%TF^Ap@v$u&p;$LyBM@kUT|HuSg>>*K$QDp=*{qXe9)9^ae z61D_ru;CVY+*iJmvgj4P_@fn4aT`lB+{?MI`P;P#p771r*8(#%fAIYOIk+F6x_}R_ zPOJ{!Vc5Do!Sl~YF<{;Rgg8evnX4{b!e5ggK5q!fEeqS%1=FFr+!4t-0_SOS`fq!rfBzjuQ&VGF zvIh?m1s;y%&Of)IA{T&oKBKcW9Vq;=gw|6*TR{!fR^h|TsT-KkQKA-Vg zacXyl>5M;33m@>aq~15F=4dwfJYDlX;NhQ<#XV>c!P)N-c} z#nWPHMutb?UcM_G$mP_Yf9MvOe<iJy%qLC8G{wib-iVpIag;f&qn-Of3NJJ_Lg4eqzgG-3kdfG z`UqUweQLXmhnjyZ@CGLr<^z+$abMEHgY|ydrd_@n408JU<*p5^Vaw3bnFWz!qES)B z2Z_z@JY_c!NCmpyX3k-96nYf{x(j2+;4N|kFE-`&6yWZve@1^MS7SAN`!McZNO=+T z7EId|cpgobgl9d_>xh@)_TwH-YVa_Q3MT~;B1rnUYI9F3`&co&99470*7rPuL78Z`Gs(o26F}s%IOy6sAp7-Bj%`9En zQqCPLK2_LPtlqM6G_KPyXz>4zdzl~rWGq!{V&n)%{i=AhBI(gjvs5jP4_P+HiejOi zKwgwCdpB?i3UxmLGbjB0HdMI7A=<_AC-SdxY@@FJ)iNPs;xC5|gUT1y%)qJhMWVB^ zc9}0uAX*3W&S#9KFN8fr#TtpsmA{CEahGk?6MU~zmWMHcBnq~)sOW&7hh zzUu%+@ZdJNXLiX+9L^eR4x@2lQiA3rQ>>3Z($2o{4ie5nh{V5Qi^*+6X-G^4;{mFtfM-FjzjhmA8tHEfMCbkV1;E-Awd{ajq{u(zFeH2&Zk0 z;xIP>HF>{uMyVsUxU+{V3g5ryuPzuR4Qf_SG&AJ07e48EZxT3gmQ5o-Vvvu95Yd@O zEQC6?sr-45tyk_-r>Qzor`W&c&&;b5{6gW_=TQ(6#KcuZvD_wNc9}LU%1>+jn8pKP zr}?)7P`S%~Fhlb~b<+p@3sxti2jO@i&gZZ>dFEZ}Jg{M*UHx%B0avqDKdH>rk6{k= zSraA}c+sPT9WGmU_|}wW?dWcgo^ZrB)Re85oKYpKh$Baef@1cfO@mzCZ~0{QyLN)f zk$iC#*&|v;vJA6EHNC@c`(=1!=4*oGR)bUhG$F%-$m}#=cd0A~e@D%ilW3kb84$T!cgvCt$juFpMHf zDe8ISQisPsWgQTzkXG92TGt~udV)g_^_2EwjPoeb`cFa!x`mO!(Qmv4tO2iLM$oTW z8@aI&JK~QxD_8O32{oz<4zq7|6g4%mO3zPLS-Dl2q$yji)$U1~DUD_uXcVz1TCZ*R@LpL=TQam?StSkY%}Q6fYV zd>?74T(*d_B7tMUsVTtYcVy&b6U4CXM=)g9=+ZL9{85&QR~h*e<$K-)chzZs=-I;_ zbEFg}pt=$#!t$tF|!deo_Z=s3L;EO1u+T-I=SUSU1e2 zcpZzmEcDb&)+7@v=4(J5j0W+X?wr3W|6)NB<$cCo-8bBs9&3Firu_u*Y#*N=S>`)p zon*QuDco(!oE6{2>p}2rt00B$LG#4z=Dy8&YIA0N-uO5*(7wR)lBvw|$|~bYwyhe& zh}BSy^batJqNI_sKV5Y7#k$zY3xPsL2AVdk)85Q}a5XdZ*8TTgu*U1^af%8zB({nU zvMsN>3K!aU9a3JG?!H#p&MYauL-x|5&KA2qG<9dSX6NEzsR)13h33mmZJoI4ZOEQ2 z@dY<_6h_UL<|f56-^N2LW=})U{!DFVO0XhH>krFpmb;^ZyYb&(u2s*j6Ea$kOQyr^ z8k=rU(X!Gf?3e%|mR)?W_VF(4ugXKh<=ooQ;NB2TavF0qzMl>Te_gx{U~TZO5Xd`M zKI~F-Sjm*{9)B|o$bkbVPkiYJ{9LmH8@pe$i}AjDn;Z8h?YOVfxo?$DaIO8XXCJE% zW(=}tbac*DWiV`}w|(4Pf;+T<;_uspQ&f)m|Ljq-h|)AIU2YI5eiL4eLu}j2M7h+t zhGA>pegJNQ;vnMWgJZeg^l9B|c4B`uvvVHSeaJ_QK18DmJBpYg5EXmK6rpyfJ@Sv^ z_;2?xu0Nx?evz@YgiXF;@yd^fA$uHB)&8Wl&dIgcdK)xH4-o@&v4KiN-c!%MO>-Lp5j%?uI&#)VH}9wQNOL#yqX)?TQ;dF+yb| zfa1l@zsawf>4jY>wZ-{WB`~E{MMzX zNw7F=ae5SqO{g2NaZ@P?bEP8}w)SkwL?0K`E~(D^DPfoTDb_Neat13Cb|h{(zP3JM9%^u#k7sX`UBw9cuUAQ&WpJ8Td@Xi{!$SL2LDD z82hZV35ib`cuWHkSdAX3EM`xeAo|1xecy)B1seLL&HAa5mNm01jVl!ho+R&0-N-dd zlW$u`lA94-OZ)G)`iTCOBbh&Hoadx;W4yYn_oRqJrRHUVYpX%N zogD1-FED|Bj7COz0$CX;J2;J+3Ljo)5A(1^FoE-5FknpIAk<-kkfQ9*lv8qP)p(Et4X$H@iIxq8c26asq2|O7oiH z5TSjhT<s*8pWvaGJQp1hAR$T;OKTnT6;^+9qG> zvhOQ)`0Cilo;y|Ul_~qjy@h@7j_q6aILJyv7E`fqNACW}FfGj4k;yZAjL%y?4|;aF zu*!8yZy%|Gfx*OhvP&>^f0pWWRT8P^2?&j%zC`~f$a+4HsYw?}zx@Id=~vYWMF!Au zMOV7O1Joer;@MA5E|Li3IXb2V#{JEPwZ3>US?Se3t`;8|z4#SY?e=rK^=X#KJD`aS z945hiZDAU@4Opb~lfH9ti!nYQWRhI{B!(X{IdIg?#t&r6{VTkeR`6M1OBc%-sXLT+ zt6dD`IZ=PYZN;#yGuy&j{#jn@O4p@nL`yWYLAs8059wxQ# zOL-dA8%aM#>-O*FD?4??xvGnq(wk|O$sAW;9sANNh$Hc5%2sv>{2Ma%Vgwq>yj!cc?3%re+p;Ch{}b~Sj)l0KVrwiW z46k(iX;xouFNA)1*!6o%mgZ-}wg(Mcs%NRkb%qW?k)9f}?*^vWMX^)Kne8~EsQ)7f zlFgv3X#X(<-95srlSAz}w?QBE3K#mo-1OiSvLA1YEpdNe>F9IMzATxA>mTOMj+mlG zsQfJ9a5ti1DYVFF!%Uf8S|o^*6f79Iej>0?AnA%KAM>Po;z>l&z(0FZMPVL417+2; zt;~;`H=wPoZW!vi#?W626lV`aS*<6$#yH@!>uf(=fE6Q@;X#=#iEl5Yrbdwg24nbp zx2dFnml+4~Du;?Ng|P6&2e{Xsg6sN-JY$5w_cNdH{O1R=kO*PpOLIcCrqC1l*aTK3i23X`NnW|)nMag(Z@5PBy-m)X3~d7H_9d*ev7WzHNH z^}F%pY|;KtPOHpi`S()rUM}ozH>oQJSE2-4Mi7+E|Ag|ck7-O?ttp>K-J%xLQ2nF@ zg&$qyRio3#+OLKLU4{Hp+Llj@vf4p!WN2W`nAX)kt$64lx@ZiMsy}Y4UjINZ#4sb(VXrOw+L?26@AY4Z`d^_N+1a z-Lr1_DGA6bg?T?Az7WLu#H zbZbL#QgJzIMixVy0#sL2wVC%<2J1{yrPHEZn6I~h((~`k`upgjrkp=p2AfSa@VsSX zsuUYNtBcZ9-=!u7lHo-8b;&@fI;e1ur+L#omd{A*t3+S;PY@bYeEn|!ngAVExG?8N zyUG5oeR*dgmc`K$9TQw;@UPium;uu0iNv0o&{g8jln7z0I7NRO6^SRMBbQs z?W$~i0%d|Cnd^Y4+r$FIocf&j-60JgiILVD0Oz#?(r@kWJt54-W$}hl^sWk)3iy0o zVHs?B{n0dyVyQZDagV~uyl$|q2sRU{$y1?fUd`RLR{>osPI#fO$CmiGdt%CT8*u}e zj@1_N9!vG{Q3wDI(mPPL^PX=A@pt{Ul1v4s*RHnbper+*6v|SzrfvXc8;09Jn zpbkyULxoU%GB(>Eo@XIvrxS59*sdpbxO{3OV$3c3aPAdjp3?&}{s*NU41BD7LEydjl?(SBc z;_ezqa9V;Cr!5+SyA?|Cq6uD{;shw}QmjBji>6SdFaN#oy>sVGlFd1LHj~ZnWWJeC zNasZ-+YqCLjh3-1H6V|Y2%VkRpa|kxT#WDZrYu;<&0FbUFz8b8`!TfUA+eI|J5+zK zo{My3l6J<)v7I4P>X)&njuFEJb;b2cPK;c2Jhui^?#2((#%~v|1yA#Ws;z?-B3{E= z*6dBYjLab$ZZcNcJnYgxAW{^0SGS!_r+F2XkZy80pl(5(##yAT2az^`eX2di*RpWK zg=y&hSmKHgn#!jp{2h_BU98%VkG;D-bXWl_(1o!zpaoNBnwWJqVf-OXkz5z!ADBq7 zzx-}Ol(B7H$@y$zlDA=SR|!1pDDfViL(83u0pLDyk>(B$&s zjy#AQ-G4(&c9b1&)*-PUh;F_UOquJcwZ01#Qj<$h(&cuMIUmNiQ>R3&Pd4iY4#uU| z=^)Ga-Rp|869s>mHNJ<~9<8lD{vOc~JSH=T|mIB90Sx zW$q8HnE54pWa;~_^}@d%m8b^o8B)#w2ZK7jcS?iz5x!4mlyb_!V648>L5L=&$Ym4f z>uG{sC&$%UzL1~BuI8lUQTQr+c@AU!bZ=EfPN&5=B%^F96`eEY zA;KO{P5#w|?6otESQYg9OU&h$$pp(kMB9#*m)soUR}zph?2qmr@GR9VPZ_G^fx|2N zzS!*#`k2SH-;1tI^wHm3ET4&>4;KS`)U}lQ%Jc_+>$AXrIKx#K)$X6(UoPcT6_oT$ zERSru2H8AD8VG}}JQeap19RKZyjWm!(H zqX2IK_#J`EYwEQ(Zk;3=%>Qr%=lw-vN2nH$C~j#~=1lSlJ^X_VA%md#+{@p_s-s23 zGI=PS+ptqb|9kt^O1X~Y^OMe<+5w-HiPWJ&oBBNQ6bW#@%_P<65~S7?iBfZ-*b;hs zoLl7Cx7iR&X7tUtrZ@V85214@AP@BMW=%!$1F=M*#<9O9jFRbotq*6XY1-aKZ2YaS zdd_o7DIPfEfsm+lb`59lxO1xF+CCPB> z$B~Ql=&du$d%8NTsK#zW(Gx*S_>A~tN3}A`b@UI5$smt z)NzD-i(sgIl)C};&+HzQF|D--#QBiIY=HZBGF0~yv=BrQphy@EbZBfx62OxZL)jD zE~lzi(;S&Ml=H)miSUf8XP$fKRNiW=t|JxJMIH98oQKauSP4dn-}C}EUX>cdDmqNt zHl{?PI-uDAEdmXou_*iDZ`kGNk;RTWv+{D%5`}XQMJTX!j!AIVdTAprQ4Rn>Tp*0v<`|OM> zFj})sWGTU>_sm;hf2hE4L=dAP2(5L;1bm?jtu{SW}wkhxVW7d~6q3oIjGwcy;?F zFw-r92Pcl-v@kw*_ng1BJv+Tw+VDvAEKENwRKH)Ff7hbC+T2)}e4G1y`K((L95iPlg+nDFmD&W;-gOu z89lI6tkS+?b+@I{5OFcU`?}J-6~Le5ArnaNlb-CtWvbm(@LC_4WX?G_Tq$Ae$rll? zE6x*d+TY9x+Wz3xqhxyPtyVh;rZ3#E*zd;1G}FWT-1f^9M-o?0Gg6fgM|9!{9+Buz zW-wa&m5eplw(SB%bFNUH}`?G(=&=O*&dMH{dOJkCdl1Eo+-HD%)O5~u$f z0oewITOKV?6hzi@&IL)dW9e*Kn`}p`{H)Ou8V%<9&~%tVV}ewt z@{ZzsilbAq_KBIo3$M4F=e4FpZ=OUN^xKa$`3xCF*TAG7c@3z#>@Dwxz}GU0@9N%TU+n9sUgp~6b5F({lTP>koaC}nD7Ut0CCM`L1?N6HiTINwwxTgh@hdd>c8?ocqlC$l=~nSTxb2v^2+4i7TtPsHkc z(B?-_VaT=TA7kZ0No)sdz2qSQ$sQfrqr*o^^0(cVxISy{SR5*Q8L(j7C`FspzYvU4 z82HLR@K~eD_t5;c0(e7%Q+3Vwa6$!NpPgr$DQXA8-?wX7Ei3vwZac`U{T|QEwD2F! zAytc-lGJd%Ew62YSUo5qpz%&Kx-f?jBQ3sXg zadpgjPkAi2h-Y7jDg*FfRI5(BLORMq;llqn|u-!OaAIa-p^pZ^#dRz~cAS`o~hUQ>`DjD)3}T5tvF{ZjT2xFRS=G z=<)-OFRb}Uq5quAB1Xj{P_Dx>Ki6w(3n%qoAe1A#{E}3B+NyT_4gI5Nj!Y}^?T@w> zl7|8&6cXQv=FHD4z3s>hGh^Fc!bc&SO^rHK!{xNivH9EE{{T`7h(^%yn1E8~pG=p66*9SBK73QY}b59?Q{Y zsmnRLmKH{trJgaTV9JJ*_hk8_Wl(-oQv=$LT(8}8+G+tShPF;w%lRs&UIPL(B$3>6 zXA>c|8CO;lj(4gHILyXkBt`%Sy%OffpM-VrxRYocL=(--#y)6G#{%y0*6iei0WE!% z)_fPrMqjQJ^sovW+t3@mzzWtFw8te;a_JpBiNbJHFFh&9Yj+e*Jz6dyU@qGZU1~-oyb#Oou56dPfDlF%xb?VN~yT_ zjAUSoh`$b|!C5dkJKgqLw-5nos%O;ZgSgtL?;1tJXboFy9~2s|m9_P7c|M)5T}YCw zX!IGz<+)@8bqiRQdG9B&yL)dN?DA6x)rbYRW-geDrlu$L8EJFiu-*(X4q#2Y`Yp8d z&3RBLtb*#+wsx>H!qm@dVRoQNyyeOc3-S#}EuK@%1p61#wTmx<3bW0#bC1M-dM*5v zA<=unlu#?ZKnrED#VgCC@o+JIedZSPr!lFeTP9pXD#DAa*sS$SlA-|OkiDh0rgWfu zwMNU`#L1^X>-vRLHLv-7dgYm2C`GdD>_NRQJtJquncaq=qvHEoKQrBbIQR4svT2kB64uylrS&BAL4+-T%H7& z)J;@3hx$BEwY8cg<{k5(Y}!A2kya?X>OwU;VQM;T&%}|5ppPmD?YI_}PH0FQs@L~; zAxHJu_!U|DJ828Iia$PA!8yo_ROiA!xmfG_I<5{bVXRxG{! zzBX2_XF)UnB3xD)q^R|Q z63Mu?9W#`aXTcx^>lOEIg_&zkDztTes52De~I=5R4p zDprfz9&qhm7gRWYby@5bjO?%+{Zh!utv($4xao_}PwQBAitUCFrp!CW{N2p6>w>sT zgyLjHe3=wRveII4=6bL|Ktm!pnWn9CP?#YK-fz0J2RY5m@?p}tb{T1gBTjL}GYd#o zS~v}WPn11?rTdicOZ?t4x6+w5NBdCinORyj8@_TH>Hb*FTvDm>;BjlgLf~h}`M24f z$wn+Fn0J%KT6wJc?9`f`dCD%W>dgeZuoef?q{gVV_y(dlQ-yUu6dO!D@AusBqwt|! z=-J^mcuqPy@VV8(WG)fpHQ4YhoPUCKc=$1M#5?<}39DsSai7@nq;B@hq<|pCkIJ3h zp9j^HC;4;4g+w|fS<}DPrUX_;?A2#yk1OasKGY4UPo95Gw|Ln6Bl9Ray4sgb`Io## z<`0k)vFI42*=R)%^uA1s^)BX_n{SeWJ{JLraE|c{#W$&Z*MhXz5oXV2O~ez)4ER_V zeOJKwRfnDi-OJk&lWmb@=_V;G>%Uex>6M{v1RJt||DDh5tZxM|5!L5JtMt3iwm)c0 zjF0NN-JdOLexCE4lOUe^8+WhBnOC0u565J76#2%x*gX06wNS-wC+w%=ZMUi({{-Le z<0jUn&Tco6Bqx=VCd??6U@o+3j# z$&r`>1UBbAs2H;&ep@V)+4#8jQPMuU%L_M!34Flo+>u>|d`1P3W6jAC&*Va3m!iFR z?TOXfq;yYpMIutsV2Fpt=j9dW83T{6ih>4MecmiOH3{Ho7#e&)RH~2bx?2 zH_W@H{d`V1rIuq)IZ;PpzxT1^RJ(`q6Z~^V{bwI_0aWw7shL9!Unl(oxx&ohYsi=S z^udjL`CwE31W&Dp0`EcWqjkudaMR#qhOA!^ghNGxZEJz|N@`5&ra1~ZN78bCrnueo zIbEsKL!blH1@6es_@}JU{ayQ)m7$>lF76+8V$XeqXRXX$BlELN9e|H`h51BN+B@ct zz6$eWWou8!W+yL#yNp(<%isJmbTTUV5Ev=(fpVB5iMpT0-?4%o(5=N;xn%dvuYS7n z3?j|6IJ|px9B{EOK5qpR{K}}2di-L+>Z_>&MMvseF&_9>z`csKQ*biXS3j@7{b92* zW34Wk(w3}kxD|uDwKN%Yq{@PVvX~b%)pju{M85&%)#K#k9oPpR}aPnVfL-NN=EE(CE6C2`+w8D;t(2_1>0>72jIG>Z z8WX~^Ny({b@1`@GrBIx~PeI~Y*olop6D5g^b(l2avz1bdP7SdA&qP-+4?%rQ9R}Ep zfadM*|HIK-?3%Cp#FhBx5aUHm0O7H$EEFS48_!em?6jAX^I}BNJ&;XOl3X7ui!_51 zR#2XP=c7N3v+h#DP^K71&v(Ko=w|-v_WY718OdHTId#9jVCQ5m=x49KOEjW63bp;& z0&h9F*4^3i+S@(tZ2p_cFLfZXZ8~awcwI|gttk24LhGJPTHL1()?40=IAUw3cscsbl&svi_g*HFMY78{&xp^F(VgDgTJlt+2fgK5A4QXg!6li?$xRf z@Qu7{4)xEqD(uO-zSS7XTEWyl94p<}r1j+ia`GPoig;BJCOgs+gx9@+)88{$evP^YpB5A^z#E4Jfp1z6ji` z!xG&=W~%)ekGKHOhF3Ak_~@gcxzsvXVE5*6TvxyTiT_?YKs?N9kk#{ z-nL6F%umYSn2y(qZCO=|W*c%{AsV=MH_!nrsRO#v0e>^qt>W~fAJsKr7VYr2g2)A< zWMD2#cXq+p>G2mzA#S>2Gn~{S^ZmupZJ+8)6GXpTSa8)&lEFWm?};RLggewPy!A6V zALrM%YrP1fNHFjLFVQc^8f^+#{(7JBxdB;wKCWMhN8f z1t`!GT8M|=$!z*cD07$Hb8%`a{*ClBfn|J3A0xUz>MnCT*MQy9bMcL($jW z-2&Dw$-|F0Vf@238jUYeo*~EL;(Yi!YZR+D_Jw|W4Eck%(w^~avS#D99f}qi)oi;A zhwvWs$*sDFi|r3$;>nj1kPO%+u*Ja#J)t#Z8IYD_)Vc06Iz70`?c1~yK%1UK(5__7 zLt!2AfwTe0IIO=-Nksa|Sz6QI`G-NaAX9XbRkYF=e7t79x<1S5jh6(cxRrS_S)vww zJkM-WmZMi?aqR|!cjlK>(n!-*qMv?d^s1+u_EV`x45o*>ZexVW11b)+G?uZ}5BZ&{ zWF=2+qIRreq6({&9zsXB=2~XH`~*t-4|JQ>@*Mz2YdXl8RmHx<5hbr>-FW|Po zoGHd$@Ch!jk<%U!!wVqAJqL#kzq%N~hgl0*`Aa_J%g9O0^yStF^cd(V+jbbwK()uf z9k-jbY(bK{R`5})C`t+7zE!w{g_%J>JaD`ZtgU6aV_nwyptdA-Cq`*%W%=;dOu70l zbWCU?ci4UpQpqz-R`bGqhqQ;)LP&hv@)SC2acxaHfjh7&(&FsC<~kosWil^nwPc*N zdwR*RpWu`SR-rJXaNL0RkU`JTEJJvWQT!F>$p4Y^?#!}ZN z;MM4NEY@|G`^+tV%2QU|kr%K-F@P^?EeBX3v6zK`0&l2x>Zc0F#54wd;)ON%%Tn)_=};A4Hc#ByuXr&<_Ugaml6LxuwYhzs)d}?#2^9kGW zE)6R+xHiU>SdU&lT7RjmxoRTmrg`HVUR$~8ED!6i~p(~+N)c@gvgf-9QvrLeiy z%nDB~Qs5{4wYg&~;!Lx`EkXrq(PpieR;SLL;zJ#~m3|(pQ>>EkqqbZ7&-ogvLL~4pk9X@U9oD3e;QFZ-{zXqMmUf0l{<{LVN8jyO@4zRVr?L@h3RE|Mlvz4@)`h-54 zU7tw)OE!XgA;B*wLlR*7@!4x&fG6mW*ngvrkc3^Nx=t-?9yLg4t_r(3T^ zk4rZ_Bd>m8>?!V~Bz4E4~Z%ZL89x|d%HQ^b&*^Fy@K0&3cpWo0ETO(;T8 zGe)ha9AiRI9GhnH{(+RBcVo0GC4|_f_Ui-d;eqcR=29(qgb;;Kom^Dtz^^yg?v#`V zEvQZNoZ3yiZ+(lb8Mz<#%Lk^0V3PtMRxj^WmJ{08d(@;>!^f?PP%VJ@dzVF#`5IQx z@Teed-m2(96*0}QVUHv(kCg1T7h;=Zd#)EHxc<>nkE2U+h^lCqa6(^=vi&uu+fa?v z{wZF8%t#R*Z)o--d56b0J+OV`q%{6uZBGhs-#)X|l}!SbviZo1^}yEe*o*acAAck*ksplk^)#m%EKPNt*C4=rHYAAp#k!;K=N4tD=Z3nPz; zoewQG{#i+NcBe%1`cSJhuMws<(6307naN>xKshKA_&5?V=(uyW{dX>=<`FAo@+r|+S(?JXy6KwnM$)A!t169mtDF6APC!7dSra^ zSIjh_*S6k(yh2I!b*%D*#3lL35P_M3>dvmbs{Z4wT5+4SGMUxkg7jGltHD9LTwOL_ zu1`IDJR*KAcwbhynF&8-SU!DZBe3!@!RcX^eloK)&(rTUxIoK8GQ%{Ib;Dq@S(Fq?hV;SAgEC|OV=pTfO zRK&Tc)9ys#0WEw+IE;Mw!`nZOt!hi52*Ol}nr1s@a2|1xFtC1jVO0HQHoy>SL;q^MqwF zWXlR;LX;xagEo(=T^wtsMjexIGNWD1TI%|?Gb|k;5)5pDSvAh<{o=N|J(Rypfq;5I z^{d^_dDqX*j|#G++_SQpQ|rA{;!QnaxbM?w27UX70=DDR%i;x zMoe5CEQB9k8t>XUQG@*(r08E6VWj}4N{ zd4NsR!I@~P(1bB`a!f%Kz(~h`q)C6JKp8)CS5Ll6Xx&e!)P0+9@$g4b#nD=|!HI^U zpha*!)bWX|`c94Cx8nG9-pPd4swNjaddGy0#y6s~IR`&jlV@?~yR@IiOr^bLwD^=H z9-{3&FiKj^c6vm*SFqZgv7}>6)<(uVzH=<43SUxUGM1)dE8#g>*3(28BAf^6Pz-0% zwqK`r7=L=_?sPgWeF)Rt|0XTcG5|*Tpr>A>0|6~F-zIpBY80B5;+sKNt>S9~?T{o< z_Za2wM}%rh6-?!pruPQ!~9%4 zPGPt)ta{M97V`3!n}CfZMYq;+-I`iLmz95XnYzIyq4tBwqqX-=pJJq}az!hYLeQua?=ztB6!9%Gxlzgb$r{z3)gxXF0^ z#-3{)ZliZW!n_Ep*R#1f$c}AA6wglT; zBMwg_Q{Ou*&D+$1Wvs=cVjkhrDnMT0^`y3oi*+_4G=B{q{f24>JEd&}P@QYG}rrNMEYb@d)qwKcuIFwdbd%TqjLISd9zE`zJ)t)mp`t>C3wOv$ZML*1U z3FU~-AM_&8@E(x&I0i9l-rBOiiaX4;O@O!j%p||9lKQZmw21yHGYJOzjhWMD{!V)1 z(e%^5G_QE5v#3)GrQRE`L;&?{4=Jg#emnSZc%+8n^oW<$T1TXjx8-5#rzGZ^UGr3T zcLzknvM?u22Z0cpMR?1t1wQ;0t;*?CC1xj+_cWeju)0cbl9g{4 z|2rQqwbHOfRa}-kf9v-C*>^fSkUQDz{EOF7nX8>|*-YAa&PCcrL_A2ks;KEpW(rc? zq}-%aPsE5)wa1yceMpX5&s#Ozy;^}d963*l?9s4S3s`)lO%Bz5llUgzi((|%JFFvK zlp7^73@`(IoK$1`YOG{~zxi%(Ok`C8;|j9(kDK{gs9$e(v}V~u6*m?=lkA9Z<{H%vBaBI z0_4P=M2TTL9bnxilt-XdL9vxGnQ|!2Z@IaD!2`azMGh{My~Inb3FBrYXZoWugg~Lb z7*_Dp8r<4}6`6hdQgf^*(~RJRAdvZp98cas2bwd13;SbOL?%s9^<>+sihL&2Y{m>s~6+6W+&!0-Xmz6YW2VqTM?hQf>5K-xI4Ib#|G1IjEn z3Bo%mKqC5JEJI`NMGN>>;7}72y+MD!CRmexPt0}8o|9dV*44(bNBx?}CZ_PxhE zItPaMbR+T9wH@97fil|)EHM@#{4{VeW6DwOTYDRu^k%Men)f>5Ib*6-tLFP{)@6n#qeDI!eo@9yd9O&fZW@Gje0d4iJgx zid7++!kQabtcd8zVt0sofn%z_FImhD&pQnkSwu6>dD5NNd`^+-o$Yg-KNfKu$f6Ru zw(*>59x2|)2MG{jk|iE1IVT?ZFa~&)>--;JtzY#aTP z_(m*{86&)4la@T_OHzh<3L3|SHW@#e)h^LNjro$(c#6u;eA^mg$WizyB!)uaJLB`yL_DE;zR3b>FHbE$fTwtc$i*1q6o97-YCxn}r(F``9rT$f0@F(5^I&k)M7P9S z0@iNkrN?BXZQ;o)@2P=u1ie1j(v)u>^f%NXgn3BHv=Q~x5!DLcRO@8MQ=n^x=yUJU zBO#HZQTdkW^01NkM#g@TG|vjrWJ@vz;arYK$#eXqqt^Sf8aIyAs&+q#H4;Lm{BsCI zY2GtazndtZ=^lw(-mq9^DgX8sT`zF0w_plpT~1dTHD=gpQNFjQx96pXQcoax6`5wu zvDqi4nKf=c$CPi6i+p}R_NHZ*hcsKBIh?ri(2cJx&r|CVoQHih4)g;$Mopd-KN5jm?F^3M2IJS|o z=7t2M0eGt4c=HHxT8WfKo|oi2Eu`iSP2J z6od{T++xJ43%q{@#*oeCIG}UR8Fo6i#XtT|&pDQa`H-O;rE`BZ9h(73D8UvEznqq3 zSZ>S@ayHck8(_S*U={|kzxg!wa}8TT%)gh$6{<^fU~#Mx9M_pN4cR@G@nCrr%J@k` zyv%}7?5*{(L+q_6ehf9>hA4C(aQKOv^)@f`20XyIT=p&*lu;DgdzI`EcZYiVGS27W z0MbRcMCI6K$WapyUtm=t>X&S_~VYTIim$asoxLpn}A{<0!i zIc=;wCr7B}v_Ge)>r4HwwjP5U;Y18}9j5uV8WZ?U8JKH?+TsntepL|g;k59i)?HPR zFA4EWW|Fd)huDtH32Y)CyG%wBH85bA(A$RLAft7;rKLuMC2)YfM9~hBYfMh~7-QV{ zX-3L?eYOotqLp0B{3*6GEPLL9V5&Xt3hK=gI;3!!phlCYZtonW&H5B4ftgww%ayjN7y$jOlE7YVg~C14PP0bCf*pjYnVGgY9AlTL3Gle{b&K6{bewSG9Db2J{XkSnfG4V3{%zum#yeCW zMH%=ZZTRAH$x}{aL!y>x{Ey0x$=}>;i2K=L{70{O&@&A+%-UE8(1{vAk-W=`>jzTz zi%c=OeuUo$XNfuGeBg>*Rk+b@#C^AQj2nv%qq)&<{yV_BbR#B2Ef3pfoj6CIh7UYo zEO|?=gqs`n7267o6HT$G&{y1CjKbIDE|fh8%l~!6h7=Isc~O){^py+cjqC`_oh$l_s2+rM%3CFgZPWpKpe_0#MuG^M zyg@PsNn{9^GJ5~qHIbrxI#2kwsNz-rTA%2{ml0nT_OZtC577W<4L~XfMoQ#}pZl&4 z{iH+bSBlO=v8!E>js}WzRfw8Z9mCj9#Pd%yP2R8wMAL8c5P@jYl zIXDO>xFpRAtE%P1Sd)h^zjq`l7SPGfzS?`2PK_GGE~*Qm0#w73)2sRN<2C`0NE<2OxlJpSF~G+; zG2!R$tfWVs9%+8?csBg1X4oHfBL~0%MK~=dTgC%X{SK}bw^owPZ`3ek!pV9L^2w(I z3d?^S(GE8sxN>r0NS;Q8JXHlSfj&HSWV(9N0DUAhjL`?l?-R8sj8h#@>o|$x{=<3v zXTXtw@erL7*Kdsp%b1!L6%Oyq#Zv9tl34NMRELpD@qoC@K>3^>Dw)|QWUKdYT?_Pg zcVzewiR6Is6XgA*p69*FHKFTnl555gw)pUl29}swz`2gYNz+uDdsNFeSM7)fWfXtp zg^{}4G2K1Y*@f^mrjG1Fr0J71SpV;auXMpMYifj7phavE9eZUezso_#&2x`s7?_tS zBtZT<=M&eY&+}NP4wb(HgMz$#$npPMZx$PuDJ_N$vYHI}E#=Y3Tlr+qxRS?N7P(FU z#izQ1TMOATASm>nC2-6wK->O8T5>Zz96!TQEqjk~Xkbd23KrME!FlDur_-cw#|yWb z34iUfmHOd+j2d?Hf&u@Yl63iqP22V_-RmCNWi$pp{T8#BPIh*nf0E?t8{v2*U%4y! zXK`KsTG0%)Q;kF;^$%^~a`13csa~8Y%m3ur+oBZM%Acf)?|v6Qd%CL2f>i8jW50m1xW6?M zf4qO9t=B=}_5PZF;e2K<_4Czl&~_=mq1JssR#EHs2set(ra7nzY-+?#^IiG9mDt5k zzS_;mvts_rVz|}~XX(yqy?+N4aKIw&vMV%6K^r?kM6 zZ{rT1X*(;zu#JKZjlZ(IJtUsn)eZ-|=Q^gPN~%zCqE}Q4^;i~7Jy3ISZHX4aAbKJz z$}EB88c6m=bJ9e95o^nb#@0{AR>oz}}4X1AWTc_e{!05;`LjuUOxzVQdvkdnwOtzxLdWuuhkPz$_!^U^wEstoJD z{EW+oYukKHbLQJlmf6H_5c-zH55n&`4SK2zh5qKS9m!*)oU^3T+(84qh-%?}KBHVE zSHqO?yl5ptGgr6sluR${Z$t6R!+rJgPu~Qw*+*Z=e}f`KM�#$pM4>1qT^5f$Y;@ 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∾*l?|Hf)?cNzK2> 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 { const { error, value } = schema.validate(req.body); if (error) { @@ -30,16 +31,20 @@ router.post("/signup", async (req, res, next) => { const user = await User.findOne({ email: value.email }); if (user) { - return res.status(409).json({ message: "This email is already taken" }); + return res.status(409).json({ message: "Email in use" }); } try { - const newUser = new User({ email: value.email }); + const newUser = new User({ + email: value.email, + avatarURL: gravatar.url(value.email, { s: "200", r: "pg", d: "retro" }), + }); await newUser.setPassword(value.password); await newUser.save(); return res.status(201).json({ user: { email: newUser.email, subscription: newUser.subscription, + avatarURL: newUser.avatarURL, }, }); } catch (error) { @@ -47,8 +52,6 @@ router.post("/signup", async (req, res, next) => { } }); -// - router.post("/login", async (req, res, next) => { const { error, value } = schema.validate(req.body); if (error) { @@ -72,7 +75,6 @@ router.post("/login", async (req, res, next) => { }; const token = jwt.sign(payload, process.env.SECRET, { expiresIn: "12h" }); user.token = token; - console.log(token); await user.save(); return res.status(200).json({ token: user.token, @@ -86,8 +88,6 @@ router.post("/login", async (req, res, next) => { } }); -// - router.post("/logout", authMiddleware, async (req, res, next) => { const userData = res.locals.user; const user = await User.findOne({ _id: userData.id }); @@ -99,9 +99,6 @@ router.post("/logout", authMiddleware, async (req, res, next) => { return res.status(204).send(); } }); - -// - router.get("/current", authMiddleware, async (req, res, next) => { const userData = res.locals.user; const user = await User.findOne({ _id: userData.id }); @@ -116,4 +113,11 @@ router.get("/current", authMiddleware, async (req, res, next) => { } }); +router.patch( + "/avatars", + authMiddleware, + uploadMiddleware.single("avatar"), + updateAvatar +); + module.exports = router; From 3bf285704aeb281dcccdff5906f99bef98aeaf31 Mon Sep 17 00:00:00 2001 From: cygan3107 Date: Sat, 7 Dec 2024 22:40:17 +0100 Subject: [PATCH 12/13] summary --- app.js | 2 +- helpers.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app.js b/app.js index d7f2a6d2c9f..a8f1adb5726 100644 --- a/app.js +++ b/app.js @@ -1,7 +1,7 @@ const express = require("express"); const logger = require("morgan"); const cors = require("cors"); -const allRouter = require("./routes/allRouter"); +const allRouter = require("routes/allRouter"); const app = express(); const JWTStrategy = require("./JWT/configJWT"); const path = require("path"); diff --git a/helpers.js b/helpers.js index 6a52949c93f..29cb6fe64b3 100644 --- a/helpers.js +++ b/helpers.js @@ -3,7 +3,7 @@ const Jimp = require("jimp"); const isImageAndTransform = async (inputPath, outputPath) => { try { const image = await Jimp.read(inputPath); - image.resize(250, 250); + image.resize(256, 256); await image.writeAsync(outputPath); return true; From 6c6a870cd381aaf459eb8af5bd545f1cb4cb1b6e Mon Sep 17 00:00:00 2001 From: cygan3107 Date: Sun, 8 Dec 2024 12:20:07 +0100 Subject: [PATCH 13/13] poprawki --- app.js | 2 +- package-lock.json | 1591 ++++++++++++++++++++++++++------------------- package.json | 2 +- 3 files changed, 938 insertions(+), 657 deletions(-) diff --git a/app.js b/app.js index a8f1adb5726..d7f2a6d2c9f 100644 --- a/app.js +++ b/app.js @@ -1,7 +1,7 @@ const express = require("express"); const logger = require("morgan"); const cors = require("cors"); -const allRouter = require("routes/allRouter"); +const allRouter = require("./routes/allRouter"); const app = express(); const JWTStrategy = require("./JWT/configJWT"); const path = require("path"); diff --git a/package-lock.json b/package-lock.json index dc741fee2d9..a0f63452cdf 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,7 +14,7 @@ "dotenv": "^16.4.5", "express": "^4.21.1", "gravatar": "^1.8.2", - "jimp": "^1.6.0", + "jimp": "^0.16.1", "joi": "^17.13.3", "jsonwebtoken": "^9.0.2", "mongodb": "^6.11.0", @@ -133,6 +133,22 @@ "node": ">=4" } }, + "node_modules/@babel/runtime": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.0.tgz", + "integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/runtime/node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" + }, "node_modules/@eslint/eslintrc": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.3.0.tgz", @@ -167,399 +183,436 @@ "@hapi/hoek": "^9.0.0" } }, - "node_modules/@jimp/core": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@jimp/core/-/core-1.6.0.tgz", - "integrity": "sha512-EQQlKU3s9QfdJqiSrZWNTxBs3rKXgO2W+GxNXDtwchF3a4IqxDheFX1ti+Env9hdJXDiYLp2jTRjlxhPthsk8w==", - "dependencies": { - "@jimp/file-ops": "1.6.0", - "@jimp/types": "1.6.0", - "@jimp/utils": "1.6.0", - "await-to-js": "^3.0.0", - "exif-parser": "^0.1.12", - "file-type": "^16.0.0", - "mime": "3" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@jimp/core/node_modules/mime": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", - "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/@jimp/diff": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@jimp/diff/-/diff-1.6.0.tgz", - "integrity": "sha512-+yUAQ5gvRC5D1WHYxjBHZI7JBRusGGSLf8AmPRPCenTzh4PA+wZ1xv2+cYqQwTfQHU5tXYOhA0xDytfHUf1Zyw==", + "node_modules/@jimp/bmp": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.16.13.tgz", + "integrity": "sha512-9edAxu7N2FX7vzkdl5Jo1BbACfycUtBQX+XBMcHA2bk62P8R0otgkHg798frgAk/WxQIzwxqOH6wMiCwrlAzdQ==", "dependencies": { - "@jimp/plugin-resize": "1.6.0", - "@jimp/types": "1.6.0", - "@jimp/utils": "1.6.0", - "pixelmatch": "^5.3.0" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13", + "bmp-js": "^0.1.0" }, - "engines": { - "node": ">=18" + "peerDependencies": { + "@jimp/custom": ">=0.3.5" } }, - "node_modules/@jimp/file-ops": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@jimp/file-ops/-/file-ops-1.6.0.tgz", - "integrity": "sha512-Dx/bVDmgnRe1AlniRpCKrGRm5YvGmUwbDzt+MAkgmLGf+jvBT75hmMEZ003n9HQI/aPnm/YKnXjg/hOpzNCpHQ==", - "engines": { - "node": ">=18" + "node_modules/@jimp/core": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/core/-/core-0.16.13.tgz", + "integrity": "sha512-qXpA1tzTnlkTku9yqtuRtS/wVntvE6f3m3GNxdTdtmc+O+Wcg9Xo2ABPMh7Nc0AHbMKzwvwgB2JnjZmlmJEObg==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13", + "any-base": "^1.1.0", + "buffer": "^5.2.0", + "exif-parser": "^0.1.12", + "file-type": "^16.5.4", + "load-bmfont": "^1.3.1", + "mkdirp": "^0.5.1", + "phin": "^2.9.1", + "pixelmatch": "^4.0.2", + "tinycolor2": "^1.4.1" } }, - "node_modules/@jimp/js-bmp": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@jimp/js-bmp/-/js-bmp-1.6.0.tgz", - "integrity": "sha512-FU6Q5PC/e3yzLyBDXupR3SnL3htU7S3KEs4e6rjDP6gNEOXRFsWs6YD3hXuXd50jd8ummy+q2WSwuGkr8wi+Gw==", + "node_modules/@jimp/core/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", "dependencies": { - "@jimp/core": "1.6.0", - "@jimp/types": "1.6.0", - "@jimp/utils": "1.6.0", - "bmp-ts": "^1.0.9" + "minimist": "^1.2.6" }, - "engines": { - "node": ">=18" + "bin": { + "mkdirp": "bin/cmd.js" } }, - "node_modules/@jimp/js-gif": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@jimp/js-gif/-/js-gif-1.6.0.tgz", - "integrity": "sha512-N9CZPHOrJTsAUoWkWZstLPpwT5AwJ0wge+47+ix3++SdSL/H2QzyMqxbcDYNFe4MoI5MIhATfb0/dl/wmX221g==", + "node_modules/@jimp/custom": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/custom/-/custom-0.16.13.tgz", + "integrity": "sha512-LTATglVUPGkPf15zX1wTMlZ0+AU7cGEGF6ekVF1crA8eHUWsGjrYTB+Ht4E3HTrCok8weQG+K01rJndCp/l4XA==", "dependencies": { - "@jimp/core": "1.6.0", - "@jimp/types": "1.6.0", - "gifwrap": "^0.10.1", - "omggif": "^1.0.10" - }, - "engines": { - "node": ">=18" + "@babel/runtime": "^7.7.2", + "@jimp/core": "^0.16.13" } }, - "node_modules/@jimp/js-jpeg": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@jimp/js-jpeg/-/js-jpeg-1.6.0.tgz", - "integrity": "sha512-6vgFDqeusblf5Pok6B2DUiMXplH8RhIKAryj1yn+007SIAQ0khM1Uptxmpku/0MfbClx2r7pnJv9gWpAEJdMVA==", + "node_modules/@jimp/gif": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/gif/-/gif-0.16.13.tgz", + "integrity": "sha512-yFAMZGv3o+YcjXilMWWwS/bv1iSqykFahFMSO169uVMtfQVfa90kt4/kDwrXNR6Q9i6VHpFiGZMlF2UnHClBvg==", "dependencies": { - "@jimp/core": "1.6.0", - "@jimp/types": "1.6.0", - "jpeg-js": "^0.4.4" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13", + "gifwrap": "^0.9.2", + "omggif": "^1.0.9" }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@jimp/js-png": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@jimp/js-png/-/js-png-1.6.0.tgz", - "integrity": "sha512-AbQHScy3hDDgMRNfG0tPjL88AV6qKAILGReIa3ATpW5QFjBKpisvUaOqhzJ7Reic1oawx3Riyv152gaPfqsBVg==", - "dependencies": { - "@jimp/core": "1.6.0", - "@jimp/types": "1.6.0", - "pngjs": "^7.0.0" - }, - "engines": { - "node": ">=18" + "peerDependencies": { + "@jimp/custom": ">=0.3.5" } }, - "node_modules/@jimp/js-tiff": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@jimp/js-tiff/-/js-tiff-1.6.0.tgz", - "integrity": "sha512-zhReR8/7KO+adijj3h0ZQUOiun3mXUv79zYEAKvE0O+rP7EhgtKvWJOZfRzdZSNv0Pu1rKtgM72qgtwe2tFvyw==", + "node_modules/@jimp/jpeg": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/jpeg/-/jpeg-0.16.13.tgz", + "integrity": "sha512-BJHlDxzTlCqP2ThqP8J0eDrbBfod7npWCbJAcfkKqdQuFk0zBPaZ6KKaQKyKxmWJ87Z6ohANZoMKEbtvrwz1AA==", "dependencies": { - "@jimp/core": "1.6.0", - "@jimp/types": "1.6.0", - "utif2": "^4.1.0" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13", + "jpeg-js": "^0.4.2" }, - "engines": { - "node": ">=18" + "peerDependencies": { + "@jimp/custom": ">=0.3.5" } }, "node_modules/@jimp/plugin-blit": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-1.6.0.tgz", - "integrity": "sha512-M+uRWl1csi7qilnSK8uxK4RJMSuVeBiO1AY0+7APnfUbQNZm6hCe0CCFv1Iyw1D/Dhb8ph8fQgm5mwM0eSxgVA==", + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-0.16.13.tgz", + "integrity": "sha512-8Z1k96ZFxlhK2bgrY1JNWNwvaBeI/bciLM0yDOni2+aZwfIIiC7Y6PeWHTAvjHNjphz+XCt01WQmOYWCn0ML6g==", "dependencies": { - "@jimp/types": "1.6.0", - "@jimp/utils": "1.6.0", - "zod": "^3.23.8" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" }, - "engines": { - "node": ">=18" + "peerDependencies": { + "@jimp/custom": ">=0.3.5" } }, "node_modules/@jimp/plugin-blur": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-1.6.0.tgz", - "integrity": "sha512-zrM7iic1OTwUCb0g/rN5y+UnmdEsT3IfuCXCJJNs8SZzP0MkZ1eTvuwK9ZidCuMo4+J3xkzCidRwYXB5CyGZTw==", + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-0.16.13.tgz", + "integrity": "sha512-PvLrfa8vkej3qinlebyhLpksJgCF5aiysDMSVhOZqwH5nQLLtDE9WYbnsofGw4r0VVpyw3H/ANCIzYTyCtP9Cg==", "dependencies": { - "@jimp/core": "1.6.0", - "@jimp/utils": "1.6.0" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" }, - "engines": { - "node": ">=18" + "peerDependencies": { + "@jimp/custom": ">=0.3.5" } }, "node_modules/@jimp/plugin-circle": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-circle/-/plugin-circle-1.6.0.tgz", - "integrity": "sha512-xt1Gp+LtdMKAXfDp3HNaG30SPZW6AQ7dtAtTnoRKorRi+5yCJjKqXRgkewS5bvj8DEh87Ko1ydJfzqS3P2tdWw==", + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-circle/-/plugin-circle-0.16.13.tgz", + "integrity": "sha512-RNave7EFgZrb5V5EpdvJGAEHMnDAJuwv05hKscNfIYxf0kR3KhViBTDy+MoTnMlIvaKFULfwIgaZWzyhuINMzA==", "dependencies": { - "@jimp/types": "1.6.0", - "zod": "^3.23.8" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" }, - "engines": { - "node": ">=18" + "peerDependencies": { + "@jimp/custom": ">=0.3.5" } }, "node_modules/@jimp/plugin-color": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-1.6.0.tgz", - "integrity": "sha512-J5q8IVCpkBsxIXM+45XOXTrsyfblyMZg3a9eAo0P7VPH4+CrvyNQwaYatbAIamSIN1YzxmO3DkIZXzRjFSz1SA==", + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-0.16.13.tgz", + "integrity": "sha512-xW+9BtEvoIkkH/Wde9ql4nAFbYLkVINhpgAE7VcBUsuuB34WUbcBl/taOuUYQrPEFQJ4jfXiAJZ2H/rvKjCVnQ==", "dependencies": { - "@jimp/core": "1.6.0", - "@jimp/types": "1.6.0", - "@jimp/utils": "1.6.0", - "tinycolor2": "^1.6.0", - "zod": "^3.23.8" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13", + "tinycolor2": "^1.4.1" }, - "engines": { - "node": ">=18" + "peerDependencies": { + "@jimp/custom": ">=0.3.5" } }, "node_modules/@jimp/plugin-contain": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-1.6.0.tgz", - "integrity": "sha512-oN/n+Vdq/Qg9bB4yOBOxtY9IPAtEfES8J1n9Ddx+XhGBYT1/QTU/JYkGaAkIGoPnyYvmLEDqMz2SGihqlpqfzQ==", + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-0.16.13.tgz", + "integrity": "sha512-QayTXw4tXMwU6q6acNTQrTTFTXpNRBe+MgTGMDU0lk+23PjlFCO/9sacflelG8lsp7vNHhAxFeHptDMAksEYzg==", "dependencies": { - "@jimp/core": "1.6.0", - "@jimp/plugin-blit": "1.6.0", - "@jimp/plugin-resize": "1.6.0", - "@jimp/types": "1.6.0", - "@jimp/utils": "1.6.0", - "zod": "^3.23.8" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" }, - "engines": { - "node": ">=18" + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-blit": ">=0.3.5", + "@jimp/plugin-resize": ">=0.3.5", + "@jimp/plugin-scale": ">=0.3.5" } }, "node_modules/@jimp/plugin-cover": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-1.6.0.tgz", - "integrity": "sha512-Iow0h6yqSC269YUJ8HC3Q/MpCi2V55sMlbkkTTx4zPvd8mWZlC0ykrNDeAy9IJegrQ7v5E99rJwmQu25lygKLA==", + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-0.16.13.tgz", + "integrity": "sha512-BSsP71GTNaqWRcvkbWuIVH+zK7b3TSNebbhDkFK0fVaUTzHuKMS/mgY4hDZIEVt7Rf5FjadAYtsujHN9w0iSYA==", "dependencies": { - "@jimp/core": "1.6.0", - "@jimp/plugin-crop": "1.6.0", - "@jimp/plugin-resize": "1.6.0", - "@jimp/types": "1.6.0", - "zod": "^3.23.8" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" }, - "engines": { - "node": ">=18" + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-crop": ">=0.3.5", + "@jimp/plugin-resize": ">=0.3.5", + "@jimp/plugin-scale": ">=0.3.5" } }, "node_modules/@jimp/plugin-crop": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-1.6.0.tgz", - "integrity": "sha512-KqZkEhvs+21USdySCUDI+GFa393eDIzbi1smBqkUPTE+pRwSWMAf01D5OC3ZWB+xZsNla93BDS9iCkLHA8wang==", + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-0.16.13.tgz", + "integrity": "sha512-WEl2tPVYwzYL8OKme6Go2xqiWgKsgxlMwyHabdAU4tXaRwOCnOI7v4021gCcBb9zn/oWwguHuKHmK30Fw2Z/PA==", "dependencies": { - "@jimp/core": "1.6.0", - "@jimp/types": "1.6.0", - "@jimp/utils": "1.6.0", - "zod": "^3.23.8" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" }, - "engines": { - "node": ">=18" + "peerDependencies": { + "@jimp/custom": ">=0.3.5" } }, "node_modules/@jimp/plugin-displace": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-1.6.0.tgz", - "integrity": "sha512-4Y10X9qwr5F+Bo5ME356XSACEF55485j5nGdiyJ9hYzjQP9nGgxNJaZ4SAOqpd+k5sFaIeD7SQ0Occ26uIng5Q==", + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-0.16.13.tgz", + "integrity": "sha512-qt9WKq8vWrcjySa9DyQ0x/RBMHQeiVjdVSY1SJsMjssPUf0pS74qorcuAkGi89biN3YoGUgPkpqECnAWnYwgGA==", "dependencies": { - "@jimp/types": "1.6.0", - "@jimp/utils": "1.6.0", - "zod": "^3.23.8" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" }, - "engines": { - "node": ">=18" + "peerDependencies": { + "@jimp/custom": ">=0.3.5" } }, "node_modules/@jimp/plugin-dither": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-1.6.0.tgz", - "integrity": "sha512-600d1RxY0pKwgyU0tgMahLNKsqEcxGdbgXadCiVCoGd6V6glyCvkNrnnwC0n5aJ56Htkj88PToSdF88tNVZEEQ==", + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-0.16.13.tgz", + "integrity": "sha512-5/N3yJggbWQTlGZHQYJPmQXEwR52qaXjEzkp1yRBbtdaekXE3BG/suo0fqeoV/csf8ooI78sJzYmIrxNoWVtgQ==", "dependencies": { - "@jimp/types": "1.6.0" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" }, - "engines": { - "node": ">=18" + "peerDependencies": { + "@jimp/custom": ">=0.3.5" } }, "node_modules/@jimp/plugin-fisheye": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-fisheye/-/plugin-fisheye-1.6.0.tgz", - "integrity": "sha512-E5QHKWSCBFtpgZarlmN3Q6+rTQxjirFqo44ohoTjzYVrDI6B6beXNnPIThJgPr0Y9GwfzgyarKvQuQuqCnnfbA==", + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-fisheye/-/plugin-fisheye-0.16.13.tgz", + "integrity": "sha512-2rZmTdFbT/cF9lEZIkXCYO0TsT114Q27AX5IAo0Sju6jVQbvIk1dFUTnwLDadTo8wkJlFzGqMQ24Cs8cHWOliA==", "dependencies": { - "@jimp/types": "1.6.0", - "@jimp/utils": "1.6.0", - "zod": "^3.23.8" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" }, - "engines": { - "node": ">=18" + "peerDependencies": { + "@jimp/custom": ">=0.3.5" } }, "node_modules/@jimp/plugin-flip": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-1.6.0.tgz", - "integrity": "sha512-/+rJVDuBIVOgwoyVkBjUFHtP+wmW0r+r5OQ2GpatQofToPVbJw1DdYWXlwviSx7hvixTWLKVgRWQ5Dw862emDg==", + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-0.16.13.tgz", + "integrity": "sha512-EmcgAA74FTc5u7Z+hUO/sRjWwfPPLuOQP5O64x5g4j0T12Bd29IgsYZxoutZo/rb3579+JNa/3wsSEmyVv1EpA==", "dependencies": { - "@jimp/types": "1.6.0", - "zod": "^3.23.8" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" }, - "engines": { - "node": ">=18" + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-rotate": ">=0.3.5" } }, - "node_modules/@jimp/plugin-hash": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-hash/-/plugin-hash-1.6.0.tgz", - "integrity": "sha512-wWzl0kTpDJgYVbZdajTf+4NBSKvmI3bRI8q6EH9CVeIHps9VWVsUvEyb7rpbcwVLWYuzDtP2R0lTT6WeBNQH9Q==", + "node_modules/@jimp/plugin-gaussian": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-gaussian/-/plugin-gaussian-0.16.13.tgz", + "integrity": "sha512-A1XKfGQD0iDdIiKqFYi8nZMv4dDVYdxbrmgR7y/CzUHhSYdcmoljLIIsZZM3Iks/Wa353W3vtvkWLuDbQbch1w==", "dependencies": { - "@jimp/core": "1.6.0", - "@jimp/js-bmp": "1.6.0", - "@jimp/js-jpeg": "1.6.0", - "@jimp/js-png": "1.6.0", - "@jimp/js-tiff": "1.6.0", - "@jimp/plugin-color": "1.6.0", - "@jimp/plugin-resize": "1.6.0", - "@jimp/types": "1.6.0", - "@jimp/utils": "1.6.0", - "any-base": "^1.1.0" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" }, - "engines": { - "node": ">=18" + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-invert": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-invert/-/plugin-invert-0.16.13.tgz", + "integrity": "sha512-xFMrIn7czEZbdbMzZWuaZFnlLGJDVJ82y5vlsKsXRTG2kcxRsMPXvZRWHV57nSs1YFsNqXSbrC8B98n0E32njQ==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" } }, "node_modules/@jimp/plugin-mask": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-1.6.0.tgz", - "integrity": "sha512-Cwy7ExSJMZszvkad8NV8o/Z92X2kFUFM8mcDAhNVxU0Q6tA0op2UKRJY51eoK8r6eds/qak3FQkXakvNabdLnA==", + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-0.16.13.tgz", + "integrity": "sha512-wLRYKVBXql2GAYgt6FkTnCfE+q5NomM7Dlh0oIPGAoMBWDyTx0eYutRK6PlUrRK2yMHuroAJCglICTbxqGzowQ==", "dependencies": { - "@jimp/types": "1.6.0", - "zod": "^3.23.8" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" }, - "engines": { - "node": ">=18" + "peerDependencies": { + "@jimp/custom": ">=0.3.5" } }, - "node_modules/@jimp/plugin-print": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-1.6.0.tgz", - "integrity": "sha512-zarTIJi8fjoGMSI/M3Xh5yY9T65p03XJmPsuNet19K/Q7mwRU6EV2pfj+28++2PV2NJ+htDF5uecAlnGyxFN2A==", + "node_modules/@jimp/plugin-normalize": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-normalize/-/plugin-normalize-0.16.13.tgz", + "integrity": "sha512-3tfad0n9soRna4IfW9NzQdQ2Z3ijkmo21DREHbE6CGcMIxOSvfRdSvf1qQPApxjTSo8LTU4MCi/fidx/NZ0GqQ==", "dependencies": { - "@jimp/core": "1.6.0", - "@jimp/js-jpeg": "1.6.0", - "@jimp/js-png": "1.6.0", - "@jimp/plugin-blit": "1.6.0", - "@jimp/types": "1.6.0", - "parse-bmfont-ascii": "^1.0.6", - "parse-bmfont-binary": "^1.0.6", - "parse-bmfont-xml": "^1.1.6", - "simple-xml-to-json": "^1.2.2", - "zod": "^3.23.8" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" }, - "engines": { - "node": ">=18" + "peerDependencies": { + "@jimp/custom": ">=0.3.5" } }, - "node_modules/@jimp/plugin-quantize": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-quantize/-/plugin-quantize-1.6.0.tgz", - "integrity": "sha512-EmzZ/s9StYQwbpG6rUGBCisc3f64JIhSH+ncTJd+iFGtGo0YvSeMdAd+zqgiHpfZoOL54dNavZNjF4otK+mvlg==", + "node_modules/@jimp/plugin-print": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-0.16.13.tgz", + "integrity": "sha512-0m6i3p01PGRkGAK9r53hDYrkyMq+tlhLOIbsSTmZyh6HLshUKlTB7eXskF5OpVd5ZUHoltlNc6R+ggvKIzxRFw==", "dependencies": { - "image-q": "^4.0.0", - "zod": "^3.23.8" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13", + "load-bmfont": "^1.4.0" }, - "engines": { - "node": ">=18" + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-blit": ">=0.3.5" } }, "node_modules/@jimp/plugin-resize": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-1.6.0.tgz", - "integrity": "sha512-uSUD1mqXN9i1SGSz5ov3keRZ7S9L32/mAQG08wUwZiEi5FpbV0K8A8l1zkazAIZi9IJzLlTauRNU41Mi8IF9fA==", + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-0.16.13.tgz", + "integrity": "sha512-qoqtN8LDknm3fJm9nuPygJv30O3vGhSBD2TxrsCnhtOsxKAqVPJtFVdGd/qVuZ8nqQANQmTlfqTiK9mVWQ7MiQ==", "dependencies": { - "@jimp/core": "1.6.0", - "@jimp/types": "1.6.0", - "zod": "^3.23.8" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" }, - "engines": { - "node": ">=18" + "peerDependencies": { + "@jimp/custom": ">=0.3.5" } }, "node_modules/@jimp/plugin-rotate": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-1.6.0.tgz", - "integrity": "sha512-JagdjBLnUZGSG4xjCLkIpQOZZ3Mjbg8aGCCi4G69qR+OjNpOeGI7N2EQlfK/WE8BEHOW5vdjSyglNqcYbQBWRw==", + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-0.16.13.tgz", + "integrity": "sha512-Ev+Jjmj1nHYw897z9C3R9dYsPv7S2/nxdgfFb/h8hOwK0Ovd1k/+yYS46A0uj/JCKK0pQk8wOslYBkPwdnLorw==", "dependencies": { - "@jimp/core": "1.6.0", - "@jimp/plugin-crop": "1.6.0", - "@jimp/plugin-resize": "1.6.0", - "@jimp/types": "1.6.0", - "@jimp/utils": "1.6.0", - "zod": "^3.23.8" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" }, - "engines": { - "node": ">=18" + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-blit": ">=0.3.5", + "@jimp/plugin-crop": ">=0.3.5", + "@jimp/plugin-resize": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-scale": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-scale/-/plugin-scale-0.16.13.tgz", + "integrity": "sha512-05POQaEJVucjTiSGMoH68ZiELc7QqpIpuQlZ2JBbhCV+WCbPFUBcGSmE7w4Jd0E2GvCho/NoMODLwgcVGQA97A==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-resize": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-shadow": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-shadow/-/plugin-shadow-0.16.13.tgz", + "integrity": "sha512-nmu5VSZ9hsB1JchTKhnnCY+paRBnwzSyK5fhkhtQHHoFD5ArBQ/5wU8y6tCr7k/GQhhGq1OrixsECeMjPoc8Zw==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-blur": ">=0.3.5", + "@jimp/plugin-resize": ">=0.3.5" } }, "node_modules/@jimp/plugin-threshold": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-threshold/-/plugin-threshold-1.6.0.tgz", - "integrity": "sha512-M59m5dzLoHOVWdM41O8z9SyySzcDn43xHseOH0HavjsfQsT56GGCC4QzU1banJidbUrePhzoEdS42uFE8Fei8w==", + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-threshold/-/plugin-threshold-0.16.13.tgz", + "integrity": "sha512-+3zArBH0OE3Rhjm4HyAokMsZlIq5gpQec33CncyoSwxtRBM2WAhUVmCUKuBo+Lr/2/4ISoY4BWpHKhMLDix6cA==", "dependencies": { - "@jimp/core": "1.6.0", - "@jimp/plugin-color": "1.6.0", - "@jimp/plugin-hash": "1.6.0", - "@jimp/types": "1.6.0", - "@jimp/utils": "1.6.0", - "zod": "^3.23.8" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" }, - "engines": { - "node": ">=18" + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-color": ">=0.8.0", + "@jimp/plugin-resize": ">=0.8.0" + } + }, + "node_modules/@jimp/plugins": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugins/-/plugins-0.16.13.tgz", + "integrity": "sha512-CJLdqODEhEVs4MgWCxpWL5l95sCBlkuSLz65cxEm56X5akIsn4LOlwnKoSEZioYcZUBvHhCheH67AyPTudfnQQ==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/plugin-blit": "^0.16.13", + "@jimp/plugin-blur": "^0.16.13", + "@jimp/plugin-circle": "^0.16.13", + "@jimp/plugin-color": "^0.16.13", + "@jimp/plugin-contain": "^0.16.13", + "@jimp/plugin-cover": "^0.16.13", + "@jimp/plugin-crop": "^0.16.13", + "@jimp/plugin-displace": "^0.16.13", + "@jimp/plugin-dither": "^0.16.13", + "@jimp/plugin-fisheye": "^0.16.13", + "@jimp/plugin-flip": "^0.16.13", + "@jimp/plugin-gaussian": "^0.16.13", + "@jimp/plugin-invert": "^0.16.13", + "@jimp/plugin-mask": "^0.16.13", + "@jimp/plugin-normalize": "^0.16.13", + "@jimp/plugin-print": "^0.16.13", + "@jimp/plugin-resize": "^0.16.13", + "@jimp/plugin-rotate": "^0.16.13", + "@jimp/plugin-scale": "^0.16.13", + "@jimp/plugin-shadow": "^0.16.13", + "@jimp/plugin-threshold": "^0.16.13", + "timm": "^1.6.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" } }, - "node_modules/@jimp/types": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@jimp/types/-/types-1.6.0.tgz", - "integrity": "sha512-7UfRsiKo5GZTAATxm2qQ7jqmUXP0DxTArztllTcYdyw6Xi5oT4RaoXynVtCD4UyLK5gJgkZJcwonoijrhYFKfg==", + "node_modules/@jimp/png": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/png/-/png-0.16.13.tgz", + "integrity": "sha512-8cGqINvbWJf1G0Her9zbq9I80roEX0A+U45xFby3tDWfzn+Zz8XKDF1Nv9VUwVx0N3zpcG1RPs9hfheG4Cq2kg==", "dependencies": { - "zod": "^3.23.8" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13", + "pngjs": "^3.3.3" }, - "engines": { - "node": ">=18" + "peerDependencies": { + "@jimp/custom": ">=0.3.5" } }, - "node_modules/@jimp/utils": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-1.6.0.tgz", - "integrity": "sha512-gqFTGEosKbOkYF/WFj26jMHOI5OH2jeP1MmC/zbK6BF6VJBf8rIC5898dPfSzZEbSA0wbbV5slbntWVc5PKLFA==", + "node_modules/@jimp/tiff": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/tiff/-/tiff-0.16.13.tgz", + "integrity": "sha512-oJY8d9u95SwW00VPHuCNxPap6Q1+E/xM5QThb9Hu+P6EGuu6lIeLaNBMmFZyblwFbwrH+WBOZlvIzDhi4Dm/6Q==", "dependencies": { - "@jimp/types": "1.6.0", - "tinycolor2": "^1.6.0" + "@babel/runtime": "^7.7.2", + "utif": "^2.0.1" }, - "engines": { - "node": ">=18" + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/types": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/types/-/types-0.16.13.tgz", + "integrity": "sha512-mC0yVNUobFDjoYLg4hoUwzMKgNlxynzwt3cDXzumGvRJ7Kb8qQGOWJQjQFo5OxmGExqzPphkirdbBF88RVLBCg==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/bmp": "^0.16.13", + "@jimp/gif": "^0.16.13", + "@jimp/jpeg": "^0.16.13", + "@jimp/png": "^0.16.13", + "@jimp/tiff": "^0.16.13", + "timm": "^1.6.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/utils": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-0.16.13.tgz", + "integrity": "sha512-VyCpkZzFTHXtKgVO35iKN0sYR10psGpV6SkcSeV4oF7eSYlR8Bl6aQLCzVeFjvESF7mxTmIiI3/XrMobVrtxDA==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "regenerator-runtime": "^0.13.3" } }, "node_modules/@mapbox/node-pre-gyp": { @@ -846,19 +899,30 @@ "node": ">=8" } }, - "node_modules/await-to-js": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/await-to-js/-/await-to-js-3.0.0.tgz", - "integrity": "sha512-zJAaP9zxTcvTHRlejau3ZOY4V7SRpiByf3/dxx2uyKxxor19tpmpV2QRsTKikckwhaPmr2dVpxxMr7jOCYVp5g==", - "engines": { - "node": ">=6.0.0" - } - }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "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/basic-auth": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", @@ -897,10 +961,10 @@ "resolved": "https://registry.npmjs.org/blueimp-md5/-/blueimp-md5-2.19.0.tgz", "integrity": "sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w==" }, - "node_modules/bmp-ts": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/bmp-ts/-/bmp-ts-1.0.9.tgz", - "integrity": "sha512-cTEHk2jLrPyi+12M3dhpEbnnPOsaZuq7C45ylbbQIiWgDFZq4UVYPEY5mlqjvsj/6gJv9qX5sa+ebDzLXT28Vw==" + "node_modules/bmp-js": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/bmp-js/-/bmp-js-0.1.0.tgz", + "integrity": "sha512-vHdS19CnY3hwiNdkaqk93DvjVLfbEcI8mys4UjuWrlX1haDmroo8o4xCzh4wD6DGV6HxRCyauwhHRqMTfERtjw==" }, "node_modules/body-parser": { "version": "1.20.3", @@ -978,6 +1042,37 @@ "node": ">=16.20.1" } }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "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": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-equal": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz", + "integrity": "sha512-RgSV6InVQ9ODPdLWJ5UAqBqJBOg370Nz6ZQtRzpt6nUjc8v0St97uJ4PYC6NztqIScrAXafKM3mZPMygSe1ggA==", + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/buffer-equal-constant-time": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", @@ -1042,6 +1137,14 @@ "node": ">=6" } }, + "node_modules/centra": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/centra/-/centra-2.7.0.tgz", + "integrity": "sha512-PbFMgMSrmgx6uxCdm57RUos9Tc3fclMvhLSATYN39XsDV29B89zZ3KA89jmY0vwSGazyU+uerqwa6t+KaodPcg==", + "dependencies": { + "follow-redirects": "^1.15.6" + } + }, "node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -1365,6 +1468,11 @@ "node": ">=6.0.0" } }, + "node_modules/dom-walk": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", + "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==" + }, "node_modules/dotenv": { "version": "16.4.5", "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", @@ -2132,6 +2240,25 @@ "integrity": "sha512-8/sOawo8tJ4QOBX8YlQBMxL8+RLZfxMQOif9o0KUKTNTjMYElWPE0r/m5VNFxTRd0NSw8qSy8dajrwX4RYI1Hw==", "dev": true }, + "node_modules/follow-redirects": { + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, "node_modules/forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", @@ -2266,9 +2393,9 @@ } }, "node_modules/gifwrap": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/gifwrap/-/gifwrap-0.10.1.tgz", - "integrity": "sha512-2760b1vpJHNmLzZ/ubTtNnEx5WApN/PYWJvXvgS+tL1egTTthayFYIQQNi136FLEDcN/IyEY2EcGpIITD6eYUw==", + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/gifwrap/-/gifwrap-0.9.4.tgz", + "integrity": "sha512-MDMwbhASQuVeD4JKd1fKgNgCRL3fGqMM4WaqpNhWO0JiMOAjbQdumbs4BbBZEy9/M00EHEjKN3HieVhCUlwjeQ==", "dependencies": { "image-q": "^4.0.0", "omggif": "^1.0.10" @@ -2305,6 +2432,15 @@ "node": ">= 6" } }, + "node_modules/global": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", + "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", + "dependencies": { + "min-document": "^2.19.0", + "process": "^0.11.10" + } + }, "node_modules/globals": { "version": "12.4.0", "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", @@ -2679,6 +2815,11 @@ "node": ">=8" } }, + "node_modules/is-function": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz", + "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==" + }, "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -2805,40 +2946,15 @@ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" }, "node_modules/jimp": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/jimp/-/jimp-1.6.0.tgz", - "integrity": "sha512-YcwCHw1kiqEeI5xRpDlPPBGL2EOpBKLwO4yIBJcXWHPj5PnA5urGq0jbyhM5KoNpypQ6VboSoxc9D8HyfvngSg==", - "dependencies": { - "@jimp/core": "1.6.0", - "@jimp/diff": "1.6.0", - "@jimp/js-bmp": "1.6.0", - "@jimp/js-gif": "1.6.0", - "@jimp/js-jpeg": "1.6.0", - "@jimp/js-png": "1.6.0", - "@jimp/js-tiff": "1.6.0", - "@jimp/plugin-blit": "1.6.0", - "@jimp/plugin-blur": "1.6.0", - "@jimp/plugin-circle": "1.6.0", - "@jimp/plugin-color": "1.6.0", - "@jimp/plugin-contain": "1.6.0", - "@jimp/plugin-cover": "1.6.0", - "@jimp/plugin-crop": "1.6.0", - "@jimp/plugin-displace": "1.6.0", - "@jimp/plugin-dither": "1.6.0", - "@jimp/plugin-fisheye": "1.6.0", - "@jimp/plugin-flip": "1.6.0", - "@jimp/plugin-hash": "1.6.0", - "@jimp/plugin-mask": "1.6.0", - "@jimp/plugin-print": "1.6.0", - "@jimp/plugin-quantize": "1.6.0", - "@jimp/plugin-resize": "1.6.0", - "@jimp/plugin-rotate": "1.6.0", - "@jimp/plugin-threshold": "1.6.0", - "@jimp/types": "1.6.0", - "@jimp/utils": "1.6.0" - }, - "engines": { - "node": ">=18" + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.16.1.tgz", + "integrity": "sha512-+EKVxbR36Td7Hfd23wKGIeEyHbxShZDX6L8uJkgVW3ESA9GiTEPK08tG1XI2r/0w5Ch0HyJF5kPqF9K7EmGjaw==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/custom": "^0.16.1", + "@jimp/plugins": "^0.16.1", + "@jimp/types": "^0.16.1", + "regenerator-runtime": "^0.13.3" } }, "node_modules/joi": { @@ -2962,6 +3078,32 @@ "node": ">= 0.8.0" } }, + "node_modules/load-bmfont": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/load-bmfont/-/load-bmfont-1.4.2.tgz", + "integrity": "sha512-qElWkmjW9Oq1F9EI5Gt7aD9zcdHb9spJCW1L/dmPf7KzCCEJxq8nhHz5eCgI9aMf7vrG/wyaCqdsI+Iy9ZTlog==", + "dependencies": { + "buffer-equal": "0.0.1", + "mime": "^1.3.4", + "parse-bmfont-ascii": "^1.0.3", + "parse-bmfont-binary": "^1.0.5", + "parse-bmfont-xml": "^1.1.4", + "phin": "^3.7.1", + "xhr": "^2.0.1", + "xtend": "^4.0.0" + } + }, + "node_modules/load-bmfont/node_modules/phin": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/phin/-/phin-3.7.1.tgz", + "integrity": "sha512-GEazpTWwTZaEQ9RhL7Nyz0WwqilbqgLahDM3D0hxWwmVDI52nXEybHqiN6/elwpkJBhcuj+WbBu+QfT0uhPGfQ==", + "dependencies": { + "centra": "^2.7.0" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/locate-path": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", @@ -3103,6 +3245,14 @@ "node": ">= 0.6" } }, + "node_modules/min-document": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", + "integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==", + "dependencies": { + "dom-walk": "^0.1.0" + } + }, "node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -3727,6 +3877,11 @@ "xml2js": "^0.5.0" } }, + "node_modules/parse-headers": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.5.tgz", + "integrity": "sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA==" + }, "node_modules/parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", @@ -3822,6 +3977,12 @@ "url": "https://github.com/sponsors/Borewit" } }, + "node_modules/phin": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/phin/-/phin-2.9.3.tgz", + "integrity": "sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info." + }, "node_modules/picomatch": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", @@ -3835,24 +3996,16 @@ } }, "node_modules/pixelmatch": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-5.3.0.tgz", - "integrity": "sha512-o8mkY4E/+LNUf6LzX96ht6k6CEDi65k9G2rjMtBe9Oo+VPKSvl+0GKHuH/AlG+GA5LPG/i5hrekkxUc3s2HU+Q==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-4.0.2.tgz", + "integrity": "sha512-J8B6xqiO37sU/gkcMglv6h5Jbd9xNER7aHzpfRdNmV4IbQBzBpe4l9XmbG+xPF/znacgu2jfEw+wHffaq/YkXA==", "dependencies": { - "pngjs": "^6.0.0" + "pngjs": "^3.0.0" }, "bin": { "pixelmatch": "bin/pixelmatch" } }, - "node_modules/pixelmatch/node_modules/pngjs": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-6.0.0.tgz", - "integrity": "sha512-TRzzuFRRmEoSW/p1KVAmiOgPco2Irlah+bGFCeNfJXxxYGwSw7YwAOAcd7X28K/m5bjBWKsC29KyoMfHbypayg==", - "engines": { - "node": ">=12.13.0" - } - }, "node_modules/pkg-dir": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", @@ -3866,11 +4019,11 @@ } }, "node_modules/pngjs": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-7.0.0.tgz", - "integrity": "sha512-LKWqWJRhstyYo9pGvgor/ivk2w94eSjE3RGVuzLGlr3NmD8bf7RcYGze1mNdEHRP6TRP6rMuDHk5t44hnTRyow==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", + "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==", "engines": { - "node": ">=14.19.0" + "node": ">=4.0.0" } }, "node_modules/prelude-ls": { @@ -3882,6 +4035,14 @@ "node": ">= 0.8.0" } }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "engines": { + "node": ">= 0.6.0" + } + }, "node_modules/process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", @@ -4007,6 +4168,11 @@ "node": ">=8.10.0" } }, + "node_modules/regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" + }, "node_modules/regexpp": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", @@ -4270,14 +4436,6 @@ "semver": "bin/semver.js" } }, - "node_modules/simple-xml-to-json": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/simple-xml-to-json/-/simple-xml-to-json-1.2.3.tgz", - "integrity": "sha512-kWJDCr9EWtZ+/EYYM5MareWj2cRnZGF93YDNpH4jQiHB+hBIZnfPFSQiVMzZOdk+zXWqTZ/9fTeQNu2DqeiudA==", - "engines": { - "node": ">=20.12.2" - } - }, "node_modules/slice-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", @@ -4511,6 +4669,11 @@ "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", "dev": true }, + "node_modules/timm": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/timm/-/timm-1.7.1.tgz", + "integrity": "sha512-IjZc9KIotudix8bMaBW6QvMuq64BrJWFs1+4V0lXwWGQZwH+LnX87doAYhem4caOEusRP9/g6jVDQmZ8XOk1nw==" + }, "node_modules/tinycolor2": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.6.0.tgz", @@ -4663,12 +4826,12 @@ "punycode": "^2.1.0" } }, - "node_modules/utif2": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/utif2/-/utif2-4.1.0.tgz", - "integrity": "sha512-+oknB9FHrJ7oW7A2WZYajOcv4FcDR4CfoGB0dPNfxbi4GO05RRnFmt5oa23+9w32EanrYcSJWspUiJkLMs+37w==", + "node_modules/utif": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/utif/-/utif-2.0.1.tgz", + "integrity": "sha512-Z/S1fNKCicQTf375lIP9G8Sa1H/phcysstNrrSdZKj1f9g58J4NMgb5IgiEZN9/nLMPDwF0W7hdOe9Qq2IYoLg==", "dependencies": { - "pako": "^1.0.11" + "pako": "^1.0.5" } }, "node_modules/util-deprecate": { @@ -4800,6 +4963,17 @@ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, + "node_modules/xhr": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.6.0.tgz", + "integrity": "sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==", + "dependencies": { + "global": "~4.4.0", + "is-function": "^1.0.1", + "parse-headers": "^2.0.0", + "xtend": "^4.0.0" + } + }, "node_modules/xml-parse-from-string": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/xml-parse-from-string/-/xml-parse-from-string-1.0.1.tgz", @@ -4939,14 +5113,6 @@ "engines": { "node": ">=8" } - }, - "node_modules/zod": { - "version": "3.23.8", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.23.8.tgz", - "integrity": "sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==", - "funding": { - "url": "https://github.com/sponsors/colinhacks" - } } }, "dependencies": { @@ -5028,6 +5194,21 @@ } } }, + "@babel/runtime": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.0.tgz", + "integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==", + "requires": { + "regenerator-runtime": "^0.14.0" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" + } + } + }, "@eslint/eslintrc": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.3.0.tgz", @@ -5059,311 +5240,335 @@ "@hapi/hoek": "^9.0.0" } }, - "@jimp/core": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@jimp/core/-/core-1.6.0.tgz", - "integrity": "sha512-EQQlKU3s9QfdJqiSrZWNTxBs3rKXgO2W+GxNXDtwchF3a4IqxDheFX1ti+Env9hdJXDiYLp2jTRjlxhPthsk8w==", + "@jimp/bmp": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.16.13.tgz", + "integrity": "sha512-9edAxu7N2FX7vzkdl5Jo1BbACfycUtBQX+XBMcHA2bk62P8R0otgkHg798frgAk/WxQIzwxqOH6wMiCwrlAzdQ==", "requires": { - "@jimp/file-ops": "1.6.0", - "@jimp/types": "1.6.0", - "@jimp/utils": "1.6.0", - "await-to-js": "^3.0.0", + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13", + "bmp-js": "^0.1.0" + } + }, + "@jimp/core": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/core/-/core-0.16.13.tgz", + "integrity": "sha512-qXpA1tzTnlkTku9yqtuRtS/wVntvE6f3m3GNxdTdtmc+O+Wcg9Xo2ABPMh7Nc0AHbMKzwvwgB2JnjZmlmJEObg==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13", + "any-base": "^1.1.0", + "buffer": "^5.2.0", "exif-parser": "^0.1.12", - "file-type": "^16.0.0", - "mime": "3" + "file-type": "^16.5.4", + "load-bmfont": "^1.3.1", + "mkdirp": "^0.5.1", + "phin": "^2.9.1", + "pixelmatch": "^4.0.2", + "tinycolor2": "^1.4.1" }, "dependencies": { - "mime": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", - "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==" + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "requires": { + "minimist": "^1.2.6" + } } } }, - "@jimp/diff": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@jimp/diff/-/diff-1.6.0.tgz", - "integrity": "sha512-+yUAQ5gvRC5D1WHYxjBHZI7JBRusGGSLf8AmPRPCenTzh4PA+wZ1xv2+cYqQwTfQHU5tXYOhA0xDytfHUf1Zyw==", + "@jimp/custom": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/custom/-/custom-0.16.13.tgz", + "integrity": "sha512-LTATglVUPGkPf15zX1wTMlZ0+AU7cGEGF6ekVF1crA8eHUWsGjrYTB+Ht4E3HTrCok8weQG+K01rJndCp/l4XA==", "requires": { - "@jimp/plugin-resize": "1.6.0", - "@jimp/types": "1.6.0", - "@jimp/utils": "1.6.0", - "pixelmatch": "^5.3.0" + "@babel/runtime": "^7.7.2", + "@jimp/core": "^0.16.13" } }, - "@jimp/file-ops": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@jimp/file-ops/-/file-ops-1.6.0.tgz", - "integrity": "sha512-Dx/bVDmgnRe1AlniRpCKrGRm5YvGmUwbDzt+MAkgmLGf+jvBT75hmMEZ003n9HQI/aPnm/YKnXjg/hOpzNCpHQ==" - }, - "@jimp/js-bmp": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@jimp/js-bmp/-/js-bmp-1.6.0.tgz", - "integrity": "sha512-FU6Q5PC/e3yzLyBDXupR3SnL3htU7S3KEs4e6rjDP6gNEOXRFsWs6YD3hXuXd50jd8ummy+q2WSwuGkr8wi+Gw==", + "@jimp/gif": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/gif/-/gif-0.16.13.tgz", + "integrity": "sha512-yFAMZGv3o+YcjXilMWWwS/bv1iSqykFahFMSO169uVMtfQVfa90kt4/kDwrXNR6Q9i6VHpFiGZMlF2UnHClBvg==", "requires": { - "@jimp/core": "1.6.0", - "@jimp/types": "1.6.0", - "@jimp/utils": "1.6.0", - "bmp-ts": "^1.0.9" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13", + "gifwrap": "^0.9.2", + "omggif": "^1.0.9" } }, - "@jimp/js-gif": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@jimp/js-gif/-/js-gif-1.6.0.tgz", - "integrity": "sha512-N9CZPHOrJTsAUoWkWZstLPpwT5AwJ0wge+47+ix3++SdSL/H2QzyMqxbcDYNFe4MoI5MIhATfb0/dl/wmX221g==", + "@jimp/jpeg": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/jpeg/-/jpeg-0.16.13.tgz", + "integrity": "sha512-BJHlDxzTlCqP2ThqP8J0eDrbBfod7npWCbJAcfkKqdQuFk0zBPaZ6KKaQKyKxmWJ87Z6ohANZoMKEbtvrwz1AA==", "requires": { - "@jimp/core": "1.6.0", - "@jimp/types": "1.6.0", - "gifwrap": "^0.10.1", - "omggif": "^1.0.10" - } - }, - "@jimp/js-jpeg": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@jimp/js-jpeg/-/js-jpeg-1.6.0.tgz", - "integrity": "sha512-6vgFDqeusblf5Pok6B2DUiMXplH8RhIKAryj1yn+007SIAQ0khM1Uptxmpku/0MfbClx2r7pnJv9gWpAEJdMVA==", - "requires": { - "@jimp/core": "1.6.0", - "@jimp/types": "1.6.0", - "jpeg-js": "^0.4.4" - } - }, - "@jimp/js-png": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@jimp/js-png/-/js-png-1.6.0.tgz", - "integrity": "sha512-AbQHScy3hDDgMRNfG0tPjL88AV6qKAILGReIa3ATpW5QFjBKpisvUaOqhzJ7Reic1oawx3Riyv152gaPfqsBVg==", - "requires": { - "@jimp/core": "1.6.0", - "@jimp/types": "1.6.0", - "pngjs": "^7.0.0" - } - }, - "@jimp/js-tiff": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@jimp/js-tiff/-/js-tiff-1.6.0.tgz", - "integrity": "sha512-zhReR8/7KO+adijj3h0ZQUOiun3mXUv79zYEAKvE0O+rP7EhgtKvWJOZfRzdZSNv0Pu1rKtgM72qgtwe2tFvyw==", - "requires": { - "@jimp/core": "1.6.0", - "@jimp/types": "1.6.0", - "utif2": "^4.1.0" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13", + "jpeg-js": "^0.4.2" } }, "@jimp/plugin-blit": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-1.6.0.tgz", - "integrity": "sha512-M+uRWl1csi7qilnSK8uxK4RJMSuVeBiO1AY0+7APnfUbQNZm6hCe0CCFv1Iyw1D/Dhb8ph8fQgm5mwM0eSxgVA==", + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-0.16.13.tgz", + "integrity": "sha512-8Z1k96ZFxlhK2bgrY1JNWNwvaBeI/bciLM0yDOni2+aZwfIIiC7Y6PeWHTAvjHNjphz+XCt01WQmOYWCn0ML6g==", "requires": { - "@jimp/types": "1.6.0", - "@jimp/utils": "1.6.0", - "zod": "^3.23.8" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" } }, "@jimp/plugin-blur": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-1.6.0.tgz", - "integrity": "sha512-zrM7iic1OTwUCb0g/rN5y+UnmdEsT3IfuCXCJJNs8SZzP0MkZ1eTvuwK9ZidCuMo4+J3xkzCidRwYXB5CyGZTw==", + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-0.16.13.tgz", + "integrity": "sha512-PvLrfa8vkej3qinlebyhLpksJgCF5aiysDMSVhOZqwH5nQLLtDE9WYbnsofGw4r0VVpyw3H/ANCIzYTyCtP9Cg==", "requires": { - "@jimp/core": "1.6.0", - "@jimp/utils": "1.6.0" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" } }, "@jimp/plugin-circle": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-circle/-/plugin-circle-1.6.0.tgz", - "integrity": "sha512-xt1Gp+LtdMKAXfDp3HNaG30SPZW6AQ7dtAtTnoRKorRi+5yCJjKqXRgkewS5bvj8DEh87Ko1ydJfzqS3P2tdWw==", + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-circle/-/plugin-circle-0.16.13.tgz", + "integrity": "sha512-RNave7EFgZrb5V5EpdvJGAEHMnDAJuwv05hKscNfIYxf0kR3KhViBTDy+MoTnMlIvaKFULfwIgaZWzyhuINMzA==", "requires": { - "@jimp/types": "1.6.0", - "zod": "^3.23.8" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" } }, "@jimp/plugin-color": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-1.6.0.tgz", - "integrity": "sha512-J5q8IVCpkBsxIXM+45XOXTrsyfblyMZg3a9eAo0P7VPH4+CrvyNQwaYatbAIamSIN1YzxmO3DkIZXzRjFSz1SA==", + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-0.16.13.tgz", + "integrity": "sha512-xW+9BtEvoIkkH/Wde9ql4nAFbYLkVINhpgAE7VcBUsuuB34WUbcBl/taOuUYQrPEFQJ4jfXiAJZ2H/rvKjCVnQ==", "requires": { - "@jimp/core": "1.6.0", - "@jimp/types": "1.6.0", - "@jimp/utils": "1.6.0", - "tinycolor2": "^1.6.0", - "zod": "^3.23.8" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13", + "tinycolor2": "^1.4.1" } }, "@jimp/plugin-contain": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-1.6.0.tgz", - "integrity": "sha512-oN/n+Vdq/Qg9bB4yOBOxtY9IPAtEfES8J1n9Ddx+XhGBYT1/QTU/JYkGaAkIGoPnyYvmLEDqMz2SGihqlpqfzQ==", + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-0.16.13.tgz", + "integrity": "sha512-QayTXw4tXMwU6q6acNTQrTTFTXpNRBe+MgTGMDU0lk+23PjlFCO/9sacflelG8lsp7vNHhAxFeHptDMAksEYzg==", "requires": { - "@jimp/core": "1.6.0", - "@jimp/plugin-blit": "1.6.0", - "@jimp/plugin-resize": "1.6.0", - "@jimp/types": "1.6.0", - "@jimp/utils": "1.6.0", - "zod": "^3.23.8" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" } }, "@jimp/plugin-cover": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-1.6.0.tgz", - "integrity": "sha512-Iow0h6yqSC269YUJ8HC3Q/MpCi2V55sMlbkkTTx4zPvd8mWZlC0ykrNDeAy9IJegrQ7v5E99rJwmQu25lygKLA==", + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-0.16.13.tgz", + "integrity": "sha512-BSsP71GTNaqWRcvkbWuIVH+zK7b3TSNebbhDkFK0fVaUTzHuKMS/mgY4hDZIEVt7Rf5FjadAYtsujHN9w0iSYA==", "requires": { - "@jimp/core": "1.6.0", - "@jimp/plugin-crop": "1.6.0", - "@jimp/plugin-resize": "1.6.0", - "@jimp/types": "1.6.0", - "zod": "^3.23.8" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" } }, "@jimp/plugin-crop": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-1.6.0.tgz", - "integrity": "sha512-KqZkEhvs+21USdySCUDI+GFa393eDIzbi1smBqkUPTE+pRwSWMAf01D5OC3ZWB+xZsNla93BDS9iCkLHA8wang==", + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-0.16.13.tgz", + "integrity": "sha512-WEl2tPVYwzYL8OKme6Go2xqiWgKsgxlMwyHabdAU4tXaRwOCnOI7v4021gCcBb9zn/oWwguHuKHmK30Fw2Z/PA==", "requires": { - "@jimp/core": "1.6.0", - "@jimp/types": "1.6.0", - "@jimp/utils": "1.6.0", - "zod": "^3.23.8" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" } }, "@jimp/plugin-displace": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-1.6.0.tgz", - "integrity": "sha512-4Y10X9qwr5F+Bo5ME356XSACEF55485j5nGdiyJ9hYzjQP9nGgxNJaZ4SAOqpd+k5sFaIeD7SQ0Occ26uIng5Q==", + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-0.16.13.tgz", + "integrity": "sha512-qt9WKq8vWrcjySa9DyQ0x/RBMHQeiVjdVSY1SJsMjssPUf0pS74qorcuAkGi89biN3YoGUgPkpqECnAWnYwgGA==", "requires": { - "@jimp/types": "1.6.0", - "@jimp/utils": "1.6.0", - "zod": "^3.23.8" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" } }, "@jimp/plugin-dither": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-1.6.0.tgz", - "integrity": "sha512-600d1RxY0pKwgyU0tgMahLNKsqEcxGdbgXadCiVCoGd6V6glyCvkNrnnwC0n5aJ56Htkj88PToSdF88tNVZEEQ==", + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-0.16.13.tgz", + "integrity": "sha512-5/N3yJggbWQTlGZHQYJPmQXEwR52qaXjEzkp1yRBbtdaekXE3BG/suo0fqeoV/csf8ooI78sJzYmIrxNoWVtgQ==", "requires": { - "@jimp/types": "1.6.0" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" } }, "@jimp/plugin-fisheye": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-fisheye/-/plugin-fisheye-1.6.0.tgz", - "integrity": "sha512-E5QHKWSCBFtpgZarlmN3Q6+rTQxjirFqo44ohoTjzYVrDI6B6beXNnPIThJgPr0Y9GwfzgyarKvQuQuqCnnfbA==", + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-fisheye/-/plugin-fisheye-0.16.13.tgz", + "integrity": "sha512-2rZmTdFbT/cF9lEZIkXCYO0TsT114Q27AX5IAo0Sju6jVQbvIk1dFUTnwLDadTo8wkJlFzGqMQ24Cs8cHWOliA==", "requires": { - "@jimp/types": "1.6.0", - "@jimp/utils": "1.6.0", - "zod": "^3.23.8" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" } }, "@jimp/plugin-flip": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-1.6.0.tgz", - "integrity": "sha512-/+rJVDuBIVOgwoyVkBjUFHtP+wmW0r+r5OQ2GpatQofToPVbJw1DdYWXlwviSx7hvixTWLKVgRWQ5Dw862emDg==", + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-0.16.13.tgz", + "integrity": "sha512-EmcgAA74FTc5u7Z+hUO/sRjWwfPPLuOQP5O64x5g4j0T12Bd29IgsYZxoutZo/rb3579+JNa/3wsSEmyVv1EpA==", "requires": { - "@jimp/types": "1.6.0", - "zod": "^3.23.8" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" } }, - "@jimp/plugin-hash": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-hash/-/plugin-hash-1.6.0.tgz", - "integrity": "sha512-wWzl0kTpDJgYVbZdajTf+4NBSKvmI3bRI8q6EH9CVeIHps9VWVsUvEyb7rpbcwVLWYuzDtP2R0lTT6WeBNQH9Q==", + "@jimp/plugin-gaussian": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-gaussian/-/plugin-gaussian-0.16.13.tgz", + "integrity": "sha512-A1XKfGQD0iDdIiKqFYi8nZMv4dDVYdxbrmgR7y/CzUHhSYdcmoljLIIsZZM3Iks/Wa353W3vtvkWLuDbQbch1w==", "requires": { - "@jimp/core": "1.6.0", - "@jimp/js-bmp": "1.6.0", - "@jimp/js-jpeg": "1.6.0", - "@jimp/js-png": "1.6.0", - "@jimp/js-tiff": "1.6.0", - "@jimp/plugin-color": "1.6.0", - "@jimp/plugin-resize": "1.6.0", - "@jimp/types": "1.6.0", - "@jimp/utils": "1.6.0", - "any-base": "^1.1.0" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + } + }, + "@jimp/plugin-invert": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-invert/-/plugin-invert-0.16.13.tgz", + "integrity": "sha512-xFMrIn7czEZbdbMzZWuaZFnlLGJDVJ82y5vlsKsXRTG2kcxRsMPXvZRWHV57nSs1YFsNqXSbrC8B98n0E32njQ==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" } }, "@jimp/plugin-mask": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-1.6.0.tgz", - "integrity": "sha512-Cwy7ExSJMZszvkad8NV8o/Z92X2kFUFM8mcDAhNVxU0Q6tA0op2UKRJY51eoK8r6eds/qak3FQkXakvNabdLnA==", + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-0.16.13.tgz", + "integrity": "sha512-wLRYKVBXql2GAYgt6FkTnCfE+q5NomM7Dlh0oIPGAoMBWDyTx0eYutRK6PlUrRK2yMHuroAJCglICTbxqGzowQ==", "requires": { - "@jimp/types": "1.6.0", - "zod": "^3.23.8" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + } + }, + "@jimp/plugin-normalize": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-normalize/-/plugin-normalize-0.16.13.tgz", + "integrity": "sha512-3tfad0n9soRna4IfW9NzQdQ2Z3ijkmo21DREHbE6CGcMIxOSvfRdSvf1qQPApxjTSo8LTU4MCi/fidx/NZ0GqQ==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" } }, "@jimp/plugin-print": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-1.6.0.tgz", - "integrity": "sha512-zarTIJi8fjoGMSI/M3Xh5yY9T65p03XJmPsuNet19K/Q7mwRU6EV2pfj+28++2PV2NJ+htDF5uecAlnGyxFN2A==", - "requires": { - "@jimp/core": "1.6.0", - "@jimp/js-jpeg": "1.6.0", - "@jimp/js-png": "1.6.0", - "@jimp/plugin-blit": "1.6.0", - "@jimp/types": "1.6.0", - "parse-bmfont-ascii": "^1.0.6", - "parse-bmfont-binary": "^1.0.6", - "parse-bmfont-xml": "^1.1.6", - "simple-xml-to-json": "^1.2.2", - "zod": "^3.23.8" - } - }, - "@jimp/plugin-quantize": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-quantize/-/plugin-quantize-1.6.0.tgz", - "integrity": "sha512-EmzZ/s9StYQwbpG6rUGBCisc3f64JIhSH+ncTJd+iFGtGo0YvSeMdAd+zqgiHpfZoOL54dNavZNjF4otK+mvlg==", + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-0.16.13.tgz", + "integrity": "sha512-0m6i3p01PGRkGAK9r53hDYrkyMq+tlhLOIbsSTmZyh6HLshUKlTB7eXskF5OpVd5ZUHoltlNc6R+ggvKIzxRFw==", "requires": { - "image-q": "^4.0.0", - "zod": "^3.23.8" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13", + "load-bmfont": "^1.4.0" } }, "@jimp/plugin-resize": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-1.6.0.tgz", - "integrity": "sha512-uSUD1mqXN9i1SGSz5ov3keRZ7S9L32/mAQG08wUwZiEi5FpbV0K8A8l1zkazAIZi9IJzLlTauRNU41Mi8IF9fA==", + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-0.16.13.tgz", + "integrity": "sha512-qoqtN8LDknm3fJm9nuPygJv30O3vGhSBD2TxrsCnhtOsxKAqVPJtFVdGd/qVuZ8nqQANQmTlfqTiK9mVWQ7MiQ==", "requires": { - "@jimp/core": "1.6.0", - "@jimp/types": "1.6.0", - "zod": "^3.23.8" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" } }, "@jimp/plugin-rotate": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-1.6.0.tgz", - "integrity": "sha512-JagdjBLnUZGSG4xjCLkIpQOZZ3Mjbg8aGCCi4G69qR+OjNpOeGI7N2EQlfK/WE8BEHOW5vdjSyglNqcYbQBWRw==", + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-0.16.13.tgz", + "integrity": "sha512-Ev+Jjmj1nHYw897z9C3R9dYsPv7S2/nxdgfFb/h8hOwK0Ovd1k/+yYS46A0uj/JCKK0pQk8wOslYBkPwdnLorw==", "requires": { - "@jimp/core": "1.6.0", - "@jimp/plugin-crop": "1.6.0", - "@jimp/plugin-resize": "1.6.0", - "@jimp/types": "1.6.0", - "@jimp/utils": "1.6.0", - "zod": "^3.23.8" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" } }, - "@jimp/plugin-threshold": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-threshold/-/plugin-threshold-1.6.0.tgz", - "integrity": "sha512-M59m5dzLoHOVWdM41O8z9SyySzcDn43xHseOH0HavjsfQsT56GGCC4QzU1banJidbUrePhzoEdS42uFE8Fei8w==", + "@jimp/plugin-scale": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-scale/-/plugin-scale-0.16.13.tgz", + "integrity": "sha512-05POQaEJVucjTiSGMoH68ZiELc7QqpIpuQlZ2JBbhCV+WCbPFUBcGSmE7w4Jd0E2GvCho/NoMODLwgcVGQA97A==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + } + }, + "@jimp/plugin-shadow": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-shadow/-/plugin-shadow-0.16.13.tgz", + "integrity": "sha512-nmu5VSZ9hsB1JchTKhnnCY+paRBnwzSyK5fhkhtQHHoFD5ArBQ/5wU8y6tCr7k/GQhhGq1OrixsECeMjPoc8Zw==", "requires": { - "@jimp/core": "1.6.0", - "@jimp/plugin-color": "1.6.0", - "@jimp/plugin-hash": "1.6.0", - "@jimp/types": "1.6.0", - "@jimp/utils": "1.6.0", - "zod": "^3.23.8" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + } + }, + "@jimp/plugin-threshold": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-threshold/-/plugin-threshold-0.16.13.tgz", + "integrity": "sha512-+3zArBH0OE3Rhjm4HyAokMsZlIq5gpQec33CncyoSwxtRBM2WAhUVmCUKuBo+Lr/2/4ISoY4BWpHKhMLDix6cA==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + } + }, + "@jimp/plugins": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugins/-/plugins-0.16.13.tgz", + "integrity": "sha512-CJLdqODEhEVs4MgWCxpWL5l95sCBlkuSLz65cxEm56X5akIsn4LOlwnKoSEZioYcZUBvHhCheH67AyPTudfnQQ==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/plugin-blit": "^0.16.13", + "@jimp/plugin-blur": "^0.16.13", + "@jimp/plugin-circle": "^0.16.13", + "@jimp/plugin-color": "^0.16.13", + "@jimp/plugin-contain": "^0.16.13", + "@jimp/plugin-cover": "^0.16.13", + "@jimp/plugin-crop": "^0.16.13", + "@jimp/plugin-displace": "^0.16.13", + "@jimp/plugin-dither": "^0.16.13", + "@jimp/plugin-fisheye": "^0.16.13", + "@jimp/plugin-flip": "^0.16.13", + "@jimp/plugin-gaussian": "^0.16.13", + "@jimp/plugin-invert": "^0.16.13", + "@jimp/plugin-mask": "^0.16.13", + "@jimp/plugin-normalize": "^0.16.13", + "@jimp/plugin-print": "^0.16.13", + "@jimp/plugin-resize": "^0.16.13", + "@jimp/plugin-rotate": "^0.16.13", + "@jimp/plugin-scale": "^0.16.13", + "@jimp/plugin-shadow": "^0.16.13", + "@jimp/plugin-threshold": "^0.16.13", + "timm": "^1.6.1" + } + }, + "@jimp/png": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/png/-/png-0.16.13.tgz", + "integrity": "sha512-8cGqINvbWJf1G0Her9zbq9I80roEX0A+U45xFby3tDWfzn+Zz8XKDF1Nv9VUwVx0N3zpcG1RPs9hfheG4Cq2kg==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13", + "pngjs": "^3.3.3" + } + }, + "@jimp/tiff": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/tiff/-/tiff-0.16.13.tgz", + "integrity": "sha512-oJY8d9u95SwW00VPHuCNxPap6Q1+E/xM5QThb9Hu+P6EGuu6lIeLaNBMmFZyblwFbwrH+WBOZlvIzDhi4Dm/6Q==", + "requires": { + "@babel/runtime": "^7.7.2", + "utif": "^2.0.1" } }, "@jimp/types": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@jimp/types/-/types-1.6.0.tgz", - "integrity": "sha512-7UfRsiKo5GZTAATxm2qQ7jqmUXP0DxTArztllTcYdyw6Xi5oT4RaoXynVtCD4UyLK5gJgkZJcwonoijrhYFKfg==", + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/types/-/types-0.16.13.tgz", + "integrity": "sha512-mC0yVNUobFDjoYLg4hoUwzMKgNlxynzwt3cDXzumGvRJ7Kb8qQGOWJQjQFo5OxmGExqzPphkirdbBF88RVLBCg==", "requires": { - "zod": "^3.23.8" + "@babel/runtime": "^7.7.2", + "@jimp/bmp": "^0.16.13", + "@jimp/gif": "^0.16.13", + "@jimp/jpeg": "^0.16.13", + "@jimp/png": "^0.16.13", + "@jimp/tiff": "^0.16.13", + "timm": "^1.6.1" } }, "@jimp/utils": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-1.6.0.tgz", - "integrity": "sha512-gqFTGEosKbOkYF/WFj26jMHOI5OH2jeP1MmC/zbK6BF6VJBf8rIC5898dPfSzZEbSA0wbbV5slbntWVc5PKLFA==", + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-0.16.13.tgz", + "integrity": "sha512-VyCpkZzFTHXtKgVO35iKN0sYR10psGpV6SkcSeV4oF7eSYlR8Bl6aQLCzVeFjvESF7mxTmIiI3/XrMobVrtxDA==", "requires": { - "@jimp/types": "1.6.0", - "tinycolor2": "^1.6.0" + "@babel/runtime": "^7.7.2", + "regenerator-runtime": "^0.13.3" } }, "@mapbox/node-pre-gyp": { @@ -5591,16 +5796,16 @@ "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", "dev": true }, - "await-to-js": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/await-to-js/-/await-to-js-3.0.0.tgz", - "integrity": "sha512-zJAaP9zxTcvTHRlejau3ZOY4V7SRpiByf3/dxx2uyKxxor19tpmpV2QRsTKikckwhaPmr2dVpxxMr7jOCYVp5g==" - }, "balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" + }, "basic-auth": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", @@ -5629,10 +5834,10 @@ "resolved": "https://registry.npmjs.org/blueimp-md5/-/blueimp-md5-2.19.0.tgz", "integrity": "sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w==" }, - "bmp-ts": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/bmp-ts/-/bmp-ts-1.0.9.tgz", - "integrity": "sha512-cTEHk2jLrPyi+12M3dhpEbnnPOsaZuq7C45ylbbQIiWgDFZq4UVYPEY5mlqjvsj/6gJv9qX5sa+ebDzLXT28Vw==" + "bmp-js": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/bmp-js/-/bmp-js-0.1.0.tgz", + "integrity": "sha512-vHdS19CnY3hwiNdkaqk93DvjVLfbEcI8mys4UjuWrlX1haDmroo8o4xCzh4wD6DGV6HxRCyauwhHRqMTfERtjw==" }, "body-parser": { "version": "1.20.3", @@ -5699,6 +5904,20 @@ "resolved": "https://registry.npmjs.org/bson/-/bson-6.10.0.tgz", "integrity": "sha512-ROchNosXMJD2cbQGm84KoP7vOGPO6/bOAW0veMMbzhXLqoZptcaYRVLitwvuhwhjjpU1qP4YZRWLhgETdgqUQw==" }, + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "buffer-equal": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz", + "integrity": "sha512-RgSV6InVQ9ODPdLWJ5UAqBqJBOg370Nz6ZQtRzpt6nUjc8v0St97uJ4PYC6NztqIScrAXafKM3mZPMygSe1ggA==" + }, "buffer-equal-constant-time": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", @@ -5745,6 +5964,14 @@ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" }, + "centra": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/centra/-/centra-2.7.0.tgz", + "integrity": "sha512-PbFMgMSrmgx6uxCdm57RUos9Tc3fclMvhLSATYN39XsDV29B89zZ3KA89jmY0vwSGazyU+uerqwa6t+KaodPcg==", + "requires": { + "follow-redirects": "^1.15.6" + } + }, "chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -5978,6 +6205,11 @@ "esutils": "^2.0.2" } }, + "dom-walk": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", + "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==" + }, "dotenv": { "version": "16.4.5", "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", @@ -6565,6 +6797,11 @@ "integrity": "sha512-8/sOawo8tJ4QOBX8YlQBMxL8+RLZfxMQOif9o0KUKTNTjMYElWPE0r/m5VNFxTRd0NSw8qSy8dajrwX4RYI1Hw==", "dev": true }, + "follow-redirects": { + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==" + }, "forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", @@ -6660,9 +6897,9 @@ } }, "gifwrap": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/gifwrap/-/gifwrap-0.10.1.tgz", - "integrity": "sha512-2760b1vpJHNmLzZ/ubTtNnEx5WApN/PYWJvXvgS+tL1egTTthayFYIQQNi136FLEDcN/IyEY2EcGpIITD6eYUw==", + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/gifwrap/-/gifwrap-0.9.4.tgz", + "integrity": "sha512-MDMwbhASQuVeD4JKd1fKgNgCRL3fGqMM4WaqpNhWO0JiMOAjbQdumbs4BbBZEy9/M00EHEjKN3HieVhCUlwjeQ==", "requires": { "image-q": "^4.0.0", "omggif": "^1.0.10" @@ -6690,6 +6927,15 @@ "is-glob": "^4.0.1" } }, + "global": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", + "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", + "requires": { + "min-document": "^2.19.0", + "process": "^0.11.10" + } + }, "globals": { "version": "12.4.0", "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", @@ -6942,6 +7188,11 @@ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" }, + "is-function": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz", + "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==" + }, "is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -7026,37 +7277,15 @@ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" }, "jimp": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/jimp/-/jimp-1.6.0.tgz", - "integrity": "sha512-YcwCHw1kiqEeI5xRpDlPPBGL2EOpBKLwO4yIBJcXWHPj5PnA5urGq0jbyhM5KoNpypQ6VboSoxc9D8HyfvngSg==", - "requires": { - "@jimp/core": "1.6.0", - "@jimp/diff": "1.6.0", - "@jimp/js-bmp": "1.6.0", - "@jimp/js-gif": "1.6.0", - "@jimp/js-jpeg": "1.6.0", - "@jimp/js-png": "1.6.0", - "@jimp/js-tiff": "1.6.0", - "@jimp/plugin-blit": "1.6.0", - "@jimp/plugin-blur": "1.6.0", - "@jimp/plugin-circle": "1.6.0", - "@jimp/plugin-color": "1.6.0", - "@jimp/plugin-contain": "1.6.0", - "@jimp/plugin-cover": "1.6.0", - "@jimp/plugin-crop": "1.6.0", - "@jimp/plugin-displace": "1.6.0", - "@jimp/plugin-dither": "1.6.0", - "@jimp/plugin-fisheye": "1.6.0", - "@jimp/plugin-flip": "1.6.0", - "@jimp/plugin-hash": "1.6.0", - "@jimp/plugin-mask": "1.6.0", - "@jimp/plugin-print": "1.6.0", - "@jimp/plugin-quantize": "1.6.0", - "@jimp/plugin-resize": "1.6.0", - "@jimp/plugin-rotate": "1.6.0", - "@jimp/plugin-threshold": "1.6.0", - "@jimp/types": "1.6.0", - "@jimp/utils": "1.6.0" + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.16.1.tgz", + "integrity": "sha512-+EKVxbR36Td7Hfd23wKGIeEyHbxShZDX6L8uJkgVW3ESA9GiTEPK08tG1XI2r/0w5Ch0HyJF5kPqF9K7EmGjaw==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/custom": "^0.16.1", + "@jimp/plugins": "^0.16.1", + "@jimp/types": "^0.16.1", + "regenerator-runtime": "^0.13.3" } }, "joi": { @@ -7164,6 +7393,31 @@ "type-check": "~0.4.0" } }, + "load-bmfont": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/load-bmfont/-/load-bmfont-1.4.2.tgz", + "integrity": "sha512-qElWkmjW9Oq1F9EI5Gt7aD9zcdHb9spJCW1L/dmPf7KzCCEJxq8nhHz5eCgI9aMf7vrG/wyaCqdsI+Iy9ZTlog==", + "requires": { + "buffer-equal": "0.0.1", + "mime": "^1.3.4", + "parse-bmfont-ascii": "^1.0.3", + "parse-bmfont-binary": "^1.0.5", + "parse-bmfont-xml": "^1.1.4", + "phin": "^3.7.1", + "xhr": "^2.0.1", + "xtend": "^4.0.0" + }, + "dependencies": { + "phin": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/phin/-/phin-3.7.1.tgz", + "integrity": "sha512-GEazpTWwTZaEQ9RhL7Nyz0WwqilbqgLahDM3D0hxWwmVDI52nXEybHqiN6/elwpkJBhcuj+WbBu+QfT0uhPGfQ==", + "requires": { + "centra": "^2.7.0" + } + } + } + }, "locate-path": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", @@ -7274,6 +7528,14 @@ "mime-db": "1.52.0" } }, + "min-document": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", + "integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==", + "requires": { + "dom-walk": "^0.1.0" + } + }, "minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -7697,6 +7959,11 @@ "xml2js": "^0.5.0" } }, + "parse-headers": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.5.tgz", + "integrity": "sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA==" + }, "parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", @@ -7763,6 +8030,11 @@ "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-4.1.0.tgz", "integrity": "sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg==" }, + "phin": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/phin/-/phin-2.9.3.tgz", + "integrity": "sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA==" + }, "picomatch": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", @@ -7770,18 +8042,11 @@ "dev": true }, "pixelmatch": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-5.3.0.tgz", - "integrity": "sha512-o8mkY4E/+LNUf6LzX96ht6k6CEDi65k9G2rjMtBe9Oo+VPKSvl+0GKHuH/AlG+GA5LPG/i5hrekkxUc3s2HU+Q==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-4.0.2.tgz", + "integrity": "sha512-J8B6xqiO37sU/gkcMglv6h5Jbd9xNER7aHzpfRdNmV4IbQBzBpe4l9XmbG+xPF/znacgu2jfEw+wHffaq/YkXA==", "requires": { - "pngjs": "^6.0.0" - }, - "dependencies": { - "pngjs": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-6.0.0.tgz", - "integrity": "sha512-TRzzuFRRmEoSW/p1KVAmiOgPco2Irlah+bGFCeNfJXxxYGwSw7YwAOAcd7X28K/m5bjBWKsC29KyoMfHbypayg==" - } + "pngjs": "^3.0.0" } }, "pkg-dir": { @@ -7794,9 +8059,9 @@ } }, "pngjs": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-7.0.0.tgz", - "integrity": "sha512-LKWqWJRhstyYo9pGvgor/ivk2w94eSjE3RGVuzLGlr3NmD8bf7RcYGze1mNdEHRP6TRP6rMuDHk5t44hnTRyow==" + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", + "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==" }, "prelude-ls": { "version": "1.2.1", @@ -7804,6 +8069,11 @@ "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==" + }, "process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", @@ -7891,6 +8161,11 @@ "picomatch": "^2.2.1" } }, + "regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" + }, "regexpp": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", @@ -8097,11 +8372,6 @@ } } }, - "simple-xml-to-json": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/simple-xml-to-json/-/simple-xml-to-json-1.2.3.tgz", - "integrity": "sha512-kWJDCr9EWtZ+/EYYM5MareWj2cRnZGF93YDNpH4jQiHB+hBIZnfPFSQiVMzZOdk+zXWqTZ/9fTeQNu2DqeiudA==" - }, "slice-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", @@ -8272,6 +8542,11 @@ "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", "dev": true }, + "timm": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/timm/-/timm-1.7.1.tgz", + "integrity": "sha512-IjZc9KIotudix8bMaBW6QvMuq64BrJWFs1+4V0lXwWGQZwH+LnX87doAYhem4caOEusRP9/g6jVDQmZ8XOk1nw==" + }, "tinycolor2": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.6.0.tgz", @@ -8390,12 +8665,12 @@ "punycode": "^2.1.0" } }, - "utif2": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/utif2/-/utif2-4.1.0.tgz", - "integrity": "sha512-+oknB9FHrJ7oW7A2WZYajOcv4FcDR4CfoGB0dPNfxbi4GO05RRnFmt5oa23+9w32EanrYcSJWspUiJkLMs+37w==", + "utif": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/utif/-/utif-2.0.1.tgz", + "integrity": "sha512-Z/S1fNKCicQTf375lIP9G8Sa1H/phcysstNrrSdZKj1f9g58J4NMgb5IgiEZN9/nLMPDwF0W7hdOe9Qq2IYoLg==", "requires": { - "pako": "^1.0.11" + "pako": "^1.0.5" } }, "util-deprecate": { @@ -8493,6 +8768,17 @@ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, + "xhr": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.6.0.tgz", + "integrity": "sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==", + "requires": { + "global": "~4.4.0", + "is-function": "^1.0.1", + "parse-headers": "^2.0.0", + "xtend": "^4.0.0" + } + }, "xml-parse-from-string": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/xml-parse-from-string/-/xml-parse-from-string-1.0.1.tgz", @@ -8598,11 +8884,6 @@ "camelcase": "^5.0.0", "decamelize": "^1.2.0" } - }, - "zod": { - "version": "3.23.8", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.23.8.tgz", - "integrity": "sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==" } } } diff --git a/package.json b/package.json index d4211a4c407..86084a2e8be 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,7 @@ "dotenv": "^16.4.5", "express": "^4.21.1", "gravatar": "^1.8.2", - "jimp": "^1.6.0", + "jimp": "^0.16.1", "joi": "^17.13.3", "jsonwebtoken": "^9.0.2", "mongodb": "^6.11.0",