From c8a879e213ca6f8ced3e667c613581d13258d26a Mon Sep 17 00:00:00 2001 From: Frazer Smith Date: Wed, 27 Jul 2022 14:07:13 +0100 Subject: [PATCH] refactor: migrate from fastify v3 to v4 (#933) * refactor: return req in `preValidation` hooks * refactor: return payload in `onSend` hooks * refactor: await register of plugins * refactor: make routes async * refactor: migrate from fastify v3 to v4 * test(server): error handling --- package-lock.json | 1857 ++++++++---------- package.json | 32 +- src/app.js | 3 +- src/config/index.js | 10 +- src/plugins/docx-to-html/index.js | 7 +- src/plugins/docx-to-html/plugin.test.js | 4 +- src/plugins/docx-to-txt/index.js | 7 +- src/plugins/docx-to-txt/plugin.test.js | 4 +- src/plugins/embed-html-images/index.js | 2 +- src/plugins/embed-html-images/plugin.test.js | 18 +- src/plugins/image-to-txt/index.js | 2 +- src/plugins/image-to-txt/plugin.test.js | 4 +- src/plugins/pdf-to-html/index.js | 11 +- src/plugins/pdf-to-html/plugin.test.js | 4 +- src/plugins/pdf-to-txt/index.js | 15 +- src/plugins/pdf-to-txt/plugin.test.js | 4 +- src/plugins/rtf-to-html/index.js | 11 +- src/plugins/rtf-to-html/plugin.test.js | 4 +- src/plugins/rtf-to-txt/index.js | 11 +- src/plugins/rtf-to-txt/plugin.test.js | 4 +- src/plugins/shared-schemas/index.js | 2 +- src/plugins/tidy-css/index.js | 2 +- src/plugins/tidy-css/plugin.test.js | 76 +- src/plugins/tidy-html/index.js | 4 +- src/plugins/tidy-html/plugin.test.js | 40 +- src/routes/admin/healthcheck/index.js | 10 +- src/routes/admin/healthcheck/route.test.js | 7 +- src/routes/docs/index.js | 12 +- src/routes/docs/openapi/index.js | 12 +- src/routes/docs/openapi/route.test.js | 7 +- src/routes/docs/route.test.js | 7 +- src/routes/docx/html/index.js | 11 +- src/routes/docx/html/route.test.js | 8 +- src/routes/docx/txt/index.js | 10 +- src/routes/docx/txt/route.test.js | 8 +- src/routes/pdf/html/index.js | 11 +- src/routes/pdf/html/route.test.js | 8 +- src/routes/pdf/txt/index.js | 11 +- src/routes/pdf/txt/route.test.js | 8 +- src/routes/rtf/html/index.js | 11 +- src/routes/rtf/html/route.test.js | 8 +- src/routes/rtf/txt/index.js | 10 +- src/routes/rtf/txt/route.test.js | 8 +- src/server.js | 50 +- src/server.test.js | 58 +- 45 files changed, 1094 insertions(+), 1319 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6b3d28900..339122779 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,23 +9,24 @@ "version": "7.0.9", "license": "MIT", "dependencies": { - "@fastify/accepts": "^3.0.0", + "@fastify/accepts": "^4.0.0", "@fastify/autoload": "^5.1.0", - "@fastify/bearer-auth": "^7.0.2", - "@fastify/compress": "^5.0.0", - "@fastify/cors": "^7.0.0", - "@fastify/helmet": "^8.1.0", - "@fastify/rate-limit": "^6.0.1", - "@fastify/sensible": "^4.1.0", - "@fastify/static": "^5.0.2", - "@fastify/swagger": "^6.1.0", + "@fastify/bearer-auth": "^8.0.1", + "@fastify/compress": "^6.1.0", + "@fastify/cors": "^8.0.0", + "@fastify/helmet": "^9.1.0", + "@fastify/rate-limit": "^7.3.0", + "@fastify/sensible": "^5.1.0", + "@fastify/static": "^6.4.1", + "@fastify/swagger": "^7.4.1", + "@fastify/under-pressure": "^7.0.0", "cssesc": "^3.0.0", "cssom": "^0.5.0", "dotenv": "^16.0.1", "env-schema": "^5.0.0", - "fastify": "^3.29.1", - "fastify-disablecache": "^2.0.8", - "fastify-floc-off": "^1.0.7", + "fastify": "^4.3.0", + "fastify-disablecache": "^3.0.0", + "fastify-floc-off": "^2.0.0", "fastify-plugin": "^4.0.0", "file-stream-rotator": "^0.6.1", "file-type": "^16.5.4", @@ -39,12 +40,11 @@ "node-poppler": "^5.1.6", "node-unrtf": "^2.0.9", "physical-cpu-count": "^2.0.0", - "pino": "^8.2.0", + "pino": "^8.3.0", "raw-body": "^2.5.1", "redoc": "^2.0.0-rc.72", "secure-json-parse": "^2.4.0", "tesseract.js": "^2.1.5", - "under-pressure": "^5.8.1", "upath": "^2.0.1" }, "devDependencies": { @@ -67,7 +67,7 @@ "license-checker": "^25.0.1", "nodemon": "^2.0.19", "pino-pretty": "^8.1.0", - "playwright": "^1.23.4", + "playwright": "^1.24.1", "prettier": "^2.7.1" }, "engines": { @@ -114,21 +114,21 @@ } }, "node_modules/@babel/core": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.6.tgz", - "integrity": "sha512-cQbWBpxcbbs/IUredIPkHiAGULLV8iwgNRMFzvbhEXISp4f3rUUXE5+TIw6KwUWUR3DwyI6gmBRnmAtYaWehwQ==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.9.tgz", + "integrity": "sha512-1LIb1eL8APMy91/IMW+31ckrfBM4yCoLaVzoDhZUKSM4cu1L1nIidyxkCgzPAgrC5WEz36IPEr/eSeSF9pIn+g==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.1.0", "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.18.6", - "@babel/helper-compilation-targets": "^7.18.6", - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helpers": "^7.18.6", - "@babel/parser": "^7.18.6", + "@babel/generator": "^7.18.9", + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-module-transforms": "^7.18.9", + "@babel/helpers": "^7.18.9", + "@babel/parser": "^7.18.9", "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.6", - "@babel/types": "^7.18.6", + "@babel/traverse": "^7.18.9", + "@babel/types": "^7.18.9", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -153,11 +153,11 @@ } }, "node_modules/@babel/generator": { - "version": "7.18.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.7.tgz", - "integrity": "sha512-shck+7VLlY72a2w9c3zYWuE1pwOKEiQHV7GTUbSnhyl5eu3i04t30tBY82ZRWrDfo3gkakCFtevExnxbkf2a3A==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.9.tgz", + "integrity": "sha512-wt5Naw6lJrL1/SGkipMiFxJjtyczUWTP38deiP1PO60HsBjDeKk08CGC3S8iVuvf0FmTdgKwU1KIXzSKL1G0Ug==", "dependencies": { - "@babel/types": "^7.18.7", + "@babel/types": "^7.18.9", "@jridgewell/gen-mapping": "^0.3.2", "jsesc": "^2.5.1" }, @@ -191,12 +191,12 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.6.tgz", - "integrity": "sha512-vFjbfhNCzqdeAtZflUFrG5YIFqGTqsctrtkZ1D/NB0mDW9TwW3GmmUepYY4G9wCET5rY5ugz4OGTcLd614IzQg==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.9.tgz", + "integrity": "sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.18.6", + "@babel/compat-data": "^7.18.8", "@babel/helper-validator-option": "^7.18.6", "browserslist": "^4.20.2", "semver": "^6.3.0" @@ -218,20 +218,20 @@ } }, "node_modules/@babel/helper-environment-visitor": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.6.tgz", - "integrity": "sha512-8n6gSfn2baOY+qlp+VSzsosjCVGFqWKmDF0cCWOybh52Dw3SEyoWR1KrhMJASjLwIEkkAufZ0xvr+SxLHSpy2Q==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", + "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-function-name": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.6.tgz", - "integrity": "sha512-0mWMxV1aC97dhjCah5U5Ua7668r5ZmSC2DLfH2EZnf9c3/dHZKiFa5pRLMH5tjSl471tY6496ZWk/kjNONBxhw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.9.tgz", + "integrity": "sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A==", "dependencies": { "@babel/template": "^7.18.6", - "@babel/types": "^7.18.6" + "@babel/types": "^7.18.9" }, "engines": { "node": ">=6.9.0" @@ -260,28 +260,28 @@ } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.18.8", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.8.tgz", - "integrity": "sha512-che3jvZwIcZxrwh63VfnFTUzcAM9v/lznYkkRxIBGMPt1SudOKHAEec0SIRCfiuIzTcF7VGj/CaTT6gY4eWxvA==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.9.tgz", + "integrity": "sha512-KYNqY0ICwfv19b31XzvmI/mfcylOzbLtowkw+mfvGPAQ3kfCnMLYbED3YecL5tPd8nAYFQFAd6JHp2LxZk/J1g==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", "@babel/helper-module-imports": "^7.18.6", "@babel/helper-simple-access": "^7.18.6", "@babel/helper-split-export-declaration": "^7.18.6", "@babel/helper-validator-identifier": "^7.18.6", "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.8", - "@babel/types": "^7.18.8" + "@babel/traverse": "^7.18.9", + "@babel/types": "^7.18.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.6.tgz", - "integrity": "sha512-gvZnm1YAAxh13eJdkb9EWHBnF3eAub3XTLCZEehHT2kWxiKVRL64+ae5Y6Ivne0mVHmMYKT+xWgZO+gQhuLUBg==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.9.tgz", + "integrity": "sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w==", "dev": true, "engines": { "node": ">=6.9.0" @@ -328,14 +328,14 @@ } }, "node_modules/@babel/helpers": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.6.tgz", - "integrity": "sha512-vzSiiqbQOghPngUYt/zWGvK3LAsPhz55vc9XNN0xAl2gV4ieShI2OQli5duxWHD+72PZPTKAcfcZDE1Cwc5zsQ==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.9.tgz", + "integrity": "sha512-Jf5a+rbrLoR4eNdUmnFu8cN5eNJT6qdTdOg5IHIzq87WwyRw9PwguLFOWYgktN/60IP4fgDUawJvs7PjQIzELQ==", "dev": true, "dependencies": { "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.6", - "@babel/types": "^7.18.6" + "@babel/traverse": "^7.18.9", + "@babel/types": "^7.18.9" }, "engines": { "node": ">=6.9.0" @@ -419,9 +419,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.18.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.8.tgz", - "integrity": "sha512-RSKRfYX20dyH+elbJK2uqAkVyucL+xXzhqlMD5/ZXx+dAAwpyB7HsvnHe/ZUGOF+xLr5Wx9/JoXVTj6BQE2/oA==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.9.tgz", + "integrity": "sha512-9uJveS9eY9DJ0t64YbIBZICtJy8a5QrDEVdiLCG97fVLpDTpGX7t8mMSb6OWw6Lrnjqj4O8zwjELX3dhoMgiBg==", "bin": { "parser": "bin/babel-parser.js" }, @@ -592,9 +592,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.6.tgz", - "integrity": "sha512-t9wi7/AW6XtKahAe20Yw0/mMljKq0B1r2fPdvaAdV/KPDZewFXdaaa6K7lxmZBZ8FBNpCiAT6iHPmd6QO9bKfQ==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.9.tgz", + "integrity": "sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw==", "dependencies": { "regenerator-runtime": "^0.13.4" }, @@ -616,18 +616,18 @@ } }, "node_modules/@babel/traverse": { - "version": "7.18.8", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.8.tgz", - "integrity": "sha512-UNg/AcSySJYR/+mIcJQDCv00T+AqRO7j/ZEJLzpaYtgM48rMg5MnkJgyNqkzo88+p4tfRvZJCEiwwfG6h4jkRg==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.9.tgz", + "integrity": "sha512-LcPAnujXGwBgv3/WHv01pHtb2tihcyW1XuL9wd7jqh1Z8AQkTd+QVjMrMijrln0T7ED3UXLIy36P9Ao7W75rYg==", "dependencies": { "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.18.7", - "@babel/helper-environment-visitor": "^7.18.6", - "@babel/helper-function-name": "^7.18.6", + "@babel/generator": "^7.18.9", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.18.9", "@babel/helper-hoist-variables": "^7.18.6", "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.18.8", - "@babel/types": "^7.18.8", + "@babel/parser": "^7.18.9", + "@babel/types": "^7.18.9", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -644,9 +644,9 @@ } }, "node_modules/@babel/types": { - "version": "7.18.8", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.8.tgz", - "integrity": "sha512-qwpdsmraq0aJ3osLJRApsc2ouSJCdnMeZwB0DhbtHAtRpZNZCdlbRnHIgcRKzdE1g0iOGg644fzjOBcdOz9cPw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.9.tgz", + "integrity": "sha512-WwMLAg2MvJmt/rKEVQBBhIVffMmnilX4oe0sRe7iPOHIGsqpruFHHdrfj4O1CMMtgMtCU4oPafZjDPCRgO57Wg==", "dependencies": { "@babel/helper-validator-identifier": "^7.18.6", "to-fast-properties": "^2.0.0" @@ -1029,16 +1029,21 @@ "npm": ">=6.0.0" } }, + "node_modules/@fastify/accept-negotiator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@fastify/accept-negotiator/-/accept-negotiator-1.0.0.tgz", + "integrity": "sha512-4R/N2KfYeld7A5LGkai+iUFMahXcxxYbDp+XS2B1yuL3cdmZLJ9TlCnNzT3q5xFTqsYm0GPpinLUwfSwjcVjyA==", + "engines": { + "node": ">=14" + } + }, "node_modules/@fastify/accepts": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@fastify/accepts/-/accepts-3.0.0.tgz", - "integrity": "sha512-+ldBB3O59p/z9Uc1LSZqAA4/oZaNbRtCVMwjgJOahl+PKmx4ciRRoWVht77kFOb36lRE5MPEba4Vt78H7PKfQw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@fastify/accepts/-/accepts-4.0.0.tgz", + "integrity": "sha512-eRJ6jmW6v46pTyflP2N3LEoUZosJMMe+o8tTWsT5iVpK9Y0cgXsPXqi4QDTHgED0r8LGFPXPX1G7I8JrU6LTng==", "dependencies": { "accepts": "^1.3.5", "fastify-plugin": "^3.0.0" - }, - "engines": { - "node": ">=10" } }, "node_modules/@fastify/accepts/node_modules/fastify-plugin": { @@ -1047,33 +1052,15 @@ "integrity": "sha512-qKcDXmuZadJqdTm6vlCqioEbyewF60b/0LOFCcYN1B6BIZGlYJumWWOYs70SFYLDAH4YqdE1cxH/RKMG7rFxgA==" }, "node_modules/@fastify/ajv-compiler": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@fastify/ajv-compiler/-/ajv-compiler-1.1.0.tgz", - "integrity": "sha512-gvCOUNpXsWrIQ3A4aXCLIdblL0tDq42BG/2Xw7oxbil9h11uow10ztS2GuFazNBfjbrsZ5nl+nPl5jDSjj5TSg==", - "dependencies": { - "ajv": "^6.12.6" - } - }, - "node_modules/@fastify/ajv-compiler/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@fastify/ajv-compiler/-/ajv-compiler-3.1.2.tgz", + "integrity": "sha512-m2nzzQJeuVmeGOB9rnII9sZiY8AZ02a9WMQfMBfK1jxdFnxm3FPYKGbYpPjODj4halNogwpolyugbTNpnDCi0A==", "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "ajv": "^8.10.0", + "ajv-formats": "^2.1.1", + "fast-uri": "^2.0.0" } }, - "node_modules/@fastify/ajv-compiler/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - }, "node_modules/@fastify/autoload": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/@fastify/autoload/-/autoload-5.1.0.tgz", @@ -1083,9 +1070,9 @@ } }, "node_modules/@fastify/bearer-auth": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/@fastify/bearer-auth/-/bearer-auth-7.0.2.tgz", - "integrity": "sha512-QSIxlj4jBfMxvqA/xQB+1vdOuuT2Qq+ulgI/pTLiikBvTLFWyPCh3FoI//nX/VyJO0IvBMII/mPUg09faG80nw==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@fastify/bearer-auth/-/bearer-auth-8.0.1.tgz", + "integrity": "sha512-BsjuRTSvhA1WCzWFtGVbjm08BuVWaUtnwRar9chrKsoiW1+xKR70IG7v4tTcWyZnu/TRzo3CEgcP3VkxybMHhw==", "dependencies": { "fastify-plugin": "^3.0.0" } @@ -1096,25 +1083,18 @@ "integrity": "sha512-qKcDXmuZadJqdTm6vlCqioEbyewF60b/0LOFCcYN1B6BIZGlYJumWWOYs70SFYLDAH4YqdE1cxH/RKMG7rFxgA==" }, "node_modules/@fastify/compress": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@fastify/compress/-/compress-5.0.0.tgz", - "integrity": "sha512-A0acEHP55+h7XDeWFFbSwZUYya7IK/E7IP9h+/iQxYBQeLY+AKF9Ya00ddMTAd/BpJuQvqUgGjefFXgzza3e8Q==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@fastify/compress/-/compress-6.1.0.tgz", + "integrity": "sha512-8VEabunOqSAh0+o42a9GaAqRriiH4VHVpsR6eVOpss733nfWRDoSQ74Fa88J22u9BJlRU1EFyCCscoS55be6hg==", "dependencies": { "encoding-negotiator": "^2.0.1", "fastify-plugin": "^3.0.0", "into-stream": "^6.0.0", - "is-deflate": "^1.0.0", - "is-gzip": "^2.0.0", - "is-zip": "^1.0.0", "mime-db": "^1.51.0", "minipass": "^3.1.6", "peek-stream": "^1.1.3", "pump": "^3.0.0", - "pumpify": "^2.0.1", - "string-to-stream": "^3.0.1" - }, - "engines": { - "node": ">=10.16" + "pumpify": "^2.0.1" } }, "node_modules/@fastify/compress/node_modules/fastify-plugin": { @@ -1123,9 +1103,9 @@ "integrity": "sha512-qKcDXmuZadJqdTm6vlCqioEbyewF60b/0LOFCcYN1B6BIZGlYJumWWOYs70SFYLDAH4YqdE1cxH/RKMG7rFxgA==" }, "node_modules/@fastify/cors": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@fastify/cors/-/cors-7.0.0.tgz", - "integrity": "sha512-nlo6ScwagBNJacAZD3KX90xjWLIoV0vN9QqoX1wUE9ZeZMdvkVkMZCGlxEtr00NshV0X5wDge4w5rwox7rRzSg==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@fastify/cors/-/cors-8.0.0.tgz", + "integrity": "sha512-mB2GsA7aVwq7XG6B2OM1FMpcaiXY69ZbM1h/xDJxLEVu5ITGcs5XYrBIYTMNU2dQtzO6mzXhGd2dEKaCnB7UgQ==", "dependencies": { "fastify-plugin": "^3.0.0", "vary": "^1.1.2" @@ -1136,15 +1116,28 @@ "resolved": "https://registry.npmjs.org/fastify-plugin/-/fastify-plugin-3.0.1.tgz", "integrity": "sha512-qKcDXmuZadJqdTm6vlCqioEbyewF60b/0LOFCcYN1B6BIZGlYJumWWOYs70SFYLDAH4YqdE1cxH/RKMG7rFxgA==" }, + "node_modules/@fastify/deepmerge": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@fastify/deepmerge/-/deepmerge-1.1.0.tgz", + "integrity": "sha512-E8Hfdvs1bG6u0N4vN5Nty6JONUfTdOciyD5rn8KnEsLKIenvOVcr210BQR9t34PRkNyjqnMLGk3e0BsaxRdL+g==" + }, "node_modules/@fastify/error": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@fastify/error/-/error-2.0.0.tgz", "integrity": "sha512-wI3fpfDT0t7p8E6dA2eTECzzOd+bZsZCJ2Hcv+Onn2b7ZwK3RwD27uW2QDaMtQhAfWQQP+WNK7nKf0twLsBf9w==" }, + "node_modules/@fastify/fast-json-stringify-compiler": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@fastify/fast-json-stringify-compiler/-/fast-json-stringify-compiler-4.0.0.tgz", + "integrity": "sha512-9pCi6c6tmGt/qfuf2koZQuSIG6ckP9q3mz+JoMmAq9eQ4EtA92sWoK7E0LJUn2FFTS/hp5kag+4+dWsV5ZfcXg==", + "dependencies": { + "fast-json-stringify": "^5.0.0" + } + }, "node_modules/@fastify/helmet": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@fastify/helmet/-/helmet-8.1.0.tgz", - "integrity": "sha512-Y6bx95uKd3wYM8UE9sCfveW3nYTkbmOeAgZWqFuBd/FYgJu5SH3uMRM7NhmHFdiiqtzaLvIC6rId47l7783lTg==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@fastify/helmet/-/helmet-9.1.0.tgz", + "integrity": "sha512-wAtu/38t90vH46GdLM6pVi8tM1HZXb6PRdLTNBo9pudSfSw5i5Ogm8Hq1Nx337WjgSOeU6MefaTd+1avlOlCDQ==", "dependencies": { "fastify-plugin": "^3.0.0", "helmet": "^5.0.1" @@ -1156,24 +1149,19 @@ "integrity": "sha512-qKcDXmuZadJqdTm6vlCqioEbyewF60b/0LOFCcYN1B6BIZGlYJumWWOYs70SFYLDAH4YqdE1cxH/RKMG7rFxgA==" }, "node_modules/@fastify/rate-limit": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@fastify/rate-limit/-/rate-limit-6.0.1.tgz", - "integrity": "sha512-LSd6gIhvTMbt+xRG4vhfFKgbxy8x/namtIo9EcdUneE7LnsS6GSQ1NL2eo0Bg8Q61mNk812guS1xCLvO5kSTPQ==", + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/@fastify/rate-limit/-/rate-limit-7.3.0.tgz", + "integrity": "sha512-dZnb6vfht20i96vyOuYYM0Bs/CUoGtsTd+5v+tQU48RrPtv8YqttNHYIC0oq4gkZIMQwBWLFjNaDokn5qtaC5Q==", "dependencies": { - "fastify-plugin": "^3.0.1", + "fastify-plugin": "^4.0.0", "ms": "^2.1.3", "tiny-lru": "^8.0.1" } }, - "node_modules/@fastify/rate-limit/node_modules/fastify-plugin": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/fastify-plugin/-/fastify-plugin-3.0.1.tgz", - "integrity": "sha512-qKcDXmuZadJqdTm6vlCqioEbyewF60b/0LOFCcYN1B6BIZGlYJumWWOYs70SFYLDAH4YqdE1cxH/RKMG7rFxgA==" - }, "node_modules/@fastify/sensible": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@fastify/sensible/-/sensible-4.1.0.tgz", - "integrity": "sha512-8TBlmCK055y6WO9jZlndmceB9x8NyNcLEbnJtdu44zelfmY1ebBMSB7MOqyMteyDvpSMq3CVaPknBu35d9FRlA==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@fastify/sensible/-/sensible-5.1.0.tgz", + "integrity": "sha512-ZLuYDpBZecCsr5ZlTKtcyA1dg9ExiEHdTxarYMaBnCJzPBUvTNoDMypMCC6XcC1VS7idMmKjlGmHfmMAaz761Q==", "dependencies": { "fast-deep-equal": "^3.1.1", "fastify-plugin": "^3.0.0", @@ -1182,9 +1170,6 @@ "ms": "^2.1.3", "type-is": "^1.6.18", "vary": "^1.1.2" - }, - "engines": { - "node": ">=14.0.0" } }, "node_modules/@fastify/sensible/node_modules/fastify-plugin": { @@ -1193,53 +1178,29 @@ "integrity": "sha512-qKcDXmuZadJqdTm6vlCqioEbyewF60b/0LOFCcYN1B6BIZGlYJumWWOYs70SFYLDAH4YqdE1cxH/RKMG7rFxgA==" }, "node_modules/@fastify/static": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@fastify/static/-/static-5.0.2.tgz", - "integrity": "sha512-HvyXZ5a7hUHoSBRq9jKUuKIUCkHMkCDcmiAeEmixXlGOx8pEWx3NYOIaiivcjWa6/NLvfdUT+t/jzfVQ2PA7Gw==", + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/@fastify/static/-/static-6.4.1.tgz", + "integrity": "sha512-RuNZyZwddGCOcxGeplWM3eBh6pgnSGGeXJX4nLeJX8NzggMWR8XwGI3/DW/S3DFjo8vBPUvdi/Vd/beqQt9Y2w==", "dependencies": { + "@fastify/accept-negotiator": "^1.0.0", "content-disposition": "^0.5.3", - "encoding-negotiator": "^2.0.1", - "fastify-plugin": "^3.0.0", - "glob": "^7.1.4", + "fastify-plugin": "^4.0.0", + "glob": "^8.0.1", "p-limit": "^3.1.0", - "readable-stream": "^3.4.0", - "send": "^0.17.1" - } - }, - "node_modules/@fastify/static/node_modules/fastify-plugin": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/fastify-plugin/-/fastify-plugin-3.0.1.tgz", - "integrity": "sha512-qKcDXmuZadJqdTm6vlCqioEbyewF60b/0LOFCcYN1B6BIZGlYJumWWOYs70SFYLDAH4YqdE1cxH/RKMG7rFxgA==" - }, - "node_modules/@fastify/static/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "readable-stream": "^4.0.0", + "send": "^0.18.0" } }, "node_modules/@fastify/swagger": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@fastify/swagger/-/swagger-6.1.0.tgz", - "integrity": "sha512-oum6QzV1/8/2eqWOEYzqwhRJQ3ftpxfGnDGmAinLIyeTrsr7xpNev/8iRxAAb7S6S8KRIIybkhvzvkuqnQKTkA==", + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/@fastify/swagger/-/swagger-7.4.1.tgz", + "integrity": "sha512-SN3sjz4dsb6jyochD6RNXG1GYBmt45YCIiQW3YjXF1Q8hP4aYQ7pVcRH2prcm12G6MJ4fGq58ywqh3prrO/Ocg==", "dependencies": { - "@fastify/static": "^5.0.0", - "fastify-plugin": "^3.0.0", - "js-yaml": "^4.0.0", + "@fastify/static": "^6.0.0", + "fastify-plugin": "^3.0.1", + "js-yaml": "^4.1.0", "json-schema-resolver": "^1.3.0", - "openapi-types": "^10.0.0", + "openapi-types": "^11.0.0", "rfdc": "^1.3.0" } }, @@ -1248,6 +1209,20 @@ "resolved": "https://registry.npmjs.org/fastify-plugin/-/fastify-plugin-3.0.1.tgz", "integrity": "sha512-qKcDXmuZadJqdTm6vlCqioEbyewF60b/0LOFCcYN1B6BIZGlYJumWWOYs70SFYLDAH4YqdE1cxH/RKMG7rFxgA==" }, + "node_modules/@fastify/under-pressure": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@fastify/under-pressure/-/under-pressure-7.0.0.tgz", + "integrity": "sha512-UhdC9+wEJRmLnbSYyINOcykiJDgPwflSxGz5Vw91192D25MmddbwM4+nCnG9JX2ZzMDJ57b0aQjYJj+asfqYMg==", + "dependencies": { + "@fastify/error": "^2.0.0", + "fastify-plugin": "^3.0.0" + } + }, + "node_modules/@fastify/under-pressure/node_modules/fastify-plugin": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/fastify-plugin/-/fastify-plugin-3.0.1.tgz", + "integrity": "sha512-qKcDXmuZadJqdTm6vlCqioEbyewF60b/0LOFCcYN1B6BIZGlYJumWWOYs70SFYLDAH4YqdE1cxH/RKMG7rFxgA==" + }, "node_modules/@humanwhocodes/config-array": { "version": "0.9.5", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", @@ -1784,9 +1759,9 @@ } }, "node_modules/@redocly/openapi-core": { - "version": "1.0.0-beta.104", - "resolved": "https://registry.npmjs.org/@redocly/openapi-core/-/openapi-core-1.0.0-beta.104.tgz", - "integrity": "sha512-9/b33gpW0BLpTZ0Ll6z5dN03CRvLUeyNOyeEUHrygRLeZgbAWfubqr0Z40boV7d9o1W4Uo/epKPrJenHbVqioQ==", + "version": "1.0.0-beta.105", + "resolved": "https://registry.npmjs.org/@redocly/openapi-core/-/openapi-core-1.0.0-beta.105.tgz", + "integrity": "sha512-8uYDMcqBOPhFgjRlg5uetW/E2uTVVRpk+YsJhaH78ZNuzBkQP5Waw5s8P8ym6myvHs5me8l5AdniY/ePLMT5xg==", "dependencies": { "@redocly/ajv": "^8.6.4", "@types/node": "^14.11.8", @@ -1833,9 +1808,9 @@ } }, "node_modules/@sinclair/typebox": { - "version": "0.24.19", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.19.tgz", - "integrity": "sha512-gHJu8cdYTD5p4UqmQHrxaWrtb/jkH5imLXzuBypWhKzNkW0qfmgz+w1xaJccWVuJta1YYUdlDiPHXRTR4Ku0MQ==", + "version": "0.24.21", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.21.tgz", + "integrity": "sha512-II2SIjvxBVJmrGkkZYza/BqNjwx3PWROIA8CZ0/Hn7LV0Mv0CVpZxoyHGBVsQqfFLMv9DmArIeRHTwo76bE6oA==", "dev": true }, "node_modules/@sinonjs/commons": { @@ -2011,9 +1986,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "18.0.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.0.4.tgz", - "integrity": "sha512-M0+G6V0Y4YV8cqzHssZpaNCqvYwlCiulmm0PwpNLF55r/+cT8Ol42CHRU1SEaYFH2rTwiiE1aYg/2g2rrtGdPA==" + "version": "18.6.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.6.1.tgz", + "integrity": "sha512-z+2vB6yDt1fNwKOeGbckpmirO+VBDuQqecXkgeIqDlaOtmKn6hPR/viQ8cxCfqLU4fTlvM3+YjM367TukWdxpg==" }, "node_modules/@types/normalize-package-data": { "version": "2.4.1", @@ -2028,9 +2003,9 @@ "dev": true }, "node_modules/@types/prettier": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.6.3.tgz", - "integrity": "sha512-ymZk3LEC/fsut+/Q5qejp6R9O1rMxz3XaRHDV6kX8MrGAhOSPqVARbDi+EZvInBpw+BnCX3TD240byVkOfQsHg==", + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.6.4.tgz", + "integrity": "sha512-fOwvpvQYStpb/zHMx0Cauwywu9yLDmzWiiQBC7gJyq5tYLUXFZvDG7VK1B7WBxxjBJNKFOZ0zLoOQn8vmATbhw==", "dev": true }, "node_modules/@types/stack-utils": { @@ -2055,13 +2030,13 @@ "dev": true }, "node_modules/@typescript-eslint/scope-manager": { - "version": "5.30.6", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.30.6.tgz", - "integrity": "sha512-Hkq5PhLgtVoW1obkqYH0i4iELctEKixkhWLPTYs55doGUKCASvkjOXOd/pisVeLdO24ZX9D6yymJ/twqpJiG3g==", + "version": "5.31.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.31.0.tgz", + "integrity": "sha512-8jfEzBYDBG88rcXFxajdVavGxb5/XKXyvWgvD8Qix3EEJLCFIdVloJw+r9ww0wbyNLOTYyBsR+4ALNGdlalLLg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.30.6", - "@typescript-eslint/visitor-keys": "5.30.6" + "@typescript-eslint/types": "5.31.0", + "@typescript-eslint/visitor-keys": "5.31.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -2072,9 +2047,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "5.30.6", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.30.6.tgz", - "integrity": "sha512-HdnP8HioL1F7CwVmT4RaaMX57RrfqsOMclZc08wGMiDYJBsLGBM7JwXM4cZJmbWLzIR/pXg1kkrBBVpxTOwfUg==", + "version": "5.31.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.31.0.tgz", + "integrity": "sha512-/f/rMaEseux+I4wmR6mfpM2wvtNZb1p9hAV77hWfuKc3pmaANp5dLAZSiE3/8oXTYTt3uV9KW5yZKJsMievp6g==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -2085,13 +2060,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.30.6", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.30.6.tgz", - "integrity": "sha512-Z7TgPoeYUm06smfEfYF0RBkpF8csMyVnqQbLYiGgmUSTaSXTP57bt8f0UFXstbGxKIreTwQCujtaH0LY9w9B+A==", + "version": "5.31.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.31.0.tgz", + "integrity": "sha512-3S625TMcARX71wBc2qubHaoUwMEn+l9TCsaIzYI/ET31Xm2c9YQ+zhGgpydjorwQO9pLfR/6peTzS/0G3J/hDw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.30.6", - "@typescript-eslint/visitor-keys": "5.30.6", + "@typescript-eslint/types": "5.31.0", + "@typescript-eslint/visitor-keys": "5.31.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -2112,15 +2087,15 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "5.30.6", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.30.6.tgz", - "integrity": "sha512-xFBLc/esUbLOJLk9jKv0E9gD/OH966M40aY9jJ8GiqpSkP2xOV908cokJqqhVd85WoIvHVHYXxSFE4cCSDzVvA==", + "version": "5.31.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.31.0.tgz", + "integrity": "sha512-kcVPdQS6VIpVTQ7QnGNKMFtdJdvnStkqS5LeALr4rcwx11G6OWb2HB17NMPnlRHvaZP38hL9iK8DdE9Fne7NYg==", "dev": true, "dependencies": { "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.30.6", - "@typescript-eslint/types": "5.30.6", - "@typescript-eslint/typescript-estree": "5.30.6", + "@typescript-eslint/scope-manager": "5.31.0", + "@typescript-eslint/types": "5.31.0", + "@typescript-eslint/typescript-estree": "5.31.0", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0" }, @@ -2158,12 +2133,12 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.30.6", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.30.6.tgz", - "integrity": "sha512-41OiCjdL2mCaSDi2SvYbzFLlqqlm5v1ZW9Ym55wXKL/Rx6OOB1IbuFGo71Fj6Xy90gJDFTlgOS+vbmtGHPTQQA==", + "version": "5.31.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.31.0.tgz", + "integrity": "sha512-ZK0jVxSjS4gnPirpVjXHz7mgdOsZUHzNYSfTw2yPa3agfbt9YfqaBiBZFSSxeBWnpWkzCxTfUpnzA3Vily/CSg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.30.6", + "@typescript-eslint/types": "5.31.0", "eslint-visitor-keys": "^3.3.0" }, "engines": { @@ -2372,9 +2347,9 @@ } }, "node_modules/acorn": { - "version": "8.7.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", - "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", + "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", "bin": { "acorn": "bin/acorn" }, @@ -2454,6 +2429,22 @@ "url": "https://github.com/sponsors/epoberezkin" } }, + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, "node_modules/ansi-escapes": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", @@ -2656,14 +2647,13 @@ } }, "node_modules/avvio": { - "version": "7.2.5", - "resolved": "https://registry.npmjs.org/avvio/-/avvio-7.2.5.tgz", - "integrity": "sha512-AOhBxyLVdpOad3TujtC9kL/9r3HnTkxwQ5ggOsYrvvZP1cCFvzHWJd5XxZDFuTn+IN8vkKSG5SEJrd27vCSbeA==", + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/avvio/-/avvio-8.2.0.tgz", + "integrity": "sha512-bbCQdg7bpEv6kGH41RO/3B2/GMMmJSo2iBK+X8AWN9mujtfUipMDfIjsgHCfpnKqoGEQrrmCDKSa5OQ19+fDmg==", "dependencies": { "archy": "^1.0.0", "debug": "^4.0.0", - "fastq": "^1.6.1", - "queue-microtask": "^1.1.2" + "fastq": "^1.6.1" } }, "node_modules/babel-jest": { @@ -2855,9 +2845,9 @@ "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==" }, "node_modules/browserslist": { - "version": "4.21.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.2.tgz", - "integrity": "sha512-MonuOgAtUB46uP5CezYbRaYKBNt2LxP0yX+Pmj4LkcDFGkn9Cbpi83d9sCjwQDErXsIJSzY5oKGDbgOlF/LPAA==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.3.tgz", + "integrity": "sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ==", "funding": [ { "type": "opencollective", @@ -2869,10 +2859,10 @@ } ], "dependencies": { - "caniuse-lite": "^1.0.30001366", - "electron-to-chromium": "^1.4.188", + "caniuse-lite": "^1.0.30001370", + "electron-to-chromium": "^1.4.202", "node-releases": "^2.0.6", - "update-browserslist-db": "^1.0.4" + "update-browserslist-db": "^1.0.5" }, "bin": { "browserslist": "cli.js" @@ -2963,9 +2953,9 @@ "peer": true }, "node_modules/caniuse-lite": { - "version": "1.0.30001366", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001366.tgz", - "integrity": "sha512-yy7XLWCubDobokgzudpkKux8e0UOOnLHE6mlNJBzT3lZJz6s5atSEzjoL+fsCPkI0G8MP5uVdDx1ur/fXEWkZA==", + "version": "1.0.30001370", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001370.tgz", + "integrity": "sha512-3PDmaP56wz/qz7G508xzjx8C+MC2qEm4SYhSEzC9IBROo+dGXFWRuaXkWti0A9tuI00g+toiriVqxtWMgl350g==", "funding": [ { "type": "opencollective", @@ -3290,9 +3280,9 @@ } }, "node_modules/core-js": { - "version": "3.23.4", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.23.4.tgz", - "integrity": "sha512-vjsKqRc1RyAJC3Ye2kYqgfdThb3zYnx9CrqoCcjMOENMtQPC7ZViBvlDxwYU/2z2NI/IPuiXw5mT4hWhddqjzQ==", + "version": "3.24.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.24.0.tgz", + "integrity": "sha512-IeOyT8A6iK37Ep4kZDD423mpi6JfPRoPUdQwEWYiGolvn4o6j2diaRzNfDfpTdu3a5qMbrGUzKUpYpRY8jXCkQ==", "hasInstallScript": true, "peer": true, "funding": { @@ -3572,9 +3562,13 @@ } }, "node_modules/destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha512-3NdhDuEXnfun/z7x9GOElY49LoqVHoGScmOKwmxhsS8N5Y+Z8KyPPDnaSzqWgYt/ji4mqwfTS34Htrk0zPIXVg==" + "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/detect-newline": { "version": "3.1.0", @@ -3654,9 +3648,9 @@ } }, "node_modules/dompurify": { - "version": "2.3.9", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.3.9.tgz", - "integrity": "sha512-3zOnuTwup4lPV/GfGS6UzG4ub9nhSYagR/5tB3AvDEwqyy5dtyCM2dVjwGDCnrPerXifBKTYh/UWCGKK7ydhhw==" + "version": "2.3.10", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.3.10.tgz", + "integrity": "sha512-o7Fg/AgC7p/XpKjf/+RC3Ok6k4St5F7Q6q6+Nnm3p2zGWioAY6dh0CbbuwOhH2UcSzKsdniE/YnE2/92JcsA+g==" }, "node_modules/dot-prop": { "version": "5.3.0", @@ -3724,23 +3718,15 @@ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, - "node_modules/duplexify/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/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" }, "node_modules/electron-to-chromium": { - "version": "1.4.189", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.189.tgz", - "integrity": "sha512-dQ6Zn4ll2NofGtxPXaDfY2laIa6NyCQdqXYHdwH90GJQW0LpJJib0ZU/ERtbb0XkBEmUD2eJtagbOie3pdMiPg==" + "version": "1.4.202", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.202.tgz", + "integrity": "sha512-JYsK2ex9lmQD27kj19fhXYxzFJ/phLAkLKHv49A5UY6kMRV2xED3qMMLg/voW/+0AR6wMiI+VxlmK9NDtdxlPA==" }, "node_modules/emittery": { "version": "0.10.2", @@ -4542,11 +4528,6 @@ "integrity": "sha512-LDzYKNTHhD+XOp8wGMuCkY4eTxFZOOycmpwLBiuF3r3OjOmZnURRD8t2dUAbmKuXGbo/MGggwbSjcBdp8QT0+g==", "dev": true }, - "node_modules/fast-decode-uri-component": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/fast-decode-uri-component/-/fast-decode-uri-component-1.0.1.tgz", - "integrity": "sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==" - }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -4586,39 +4567,17 @@ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" }, "node_modules/fast-json-stringify": { - "version": "2.7.13", - "resolved": "https://registry.npmjs.org/fast-json-stringify/-/fast-json-stringify-2.7.13.tgz", - "integrity": "sha512-ar+hQ4+OIurUGjSJD1anvYSDcUflywhKjfxnsW4TBTD7+u0tJufv6DKRWoQk3vI6YBOWMoz0TQtfbe7dxbQmvA==", - "dependencies": { - "ajv": "^6.11.0", - "deepmerge": "^4.2.2", - "rfdc": "^1.2.0", - "string-similarity": "^4.0.1" - }, - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/fast-json-stringify/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stringify/-/fast-json-stringify-5.1.0.tgz", + "integrity": "sha512-IybGfbUc1DQgyrp9Myhwlr1Z5vjV37mBkdgcbuvsvUxv5fayG+cHlTQQpXH9nMwUPgp+5Y3RT7QDgx5zJ9NS3A==", "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "@fastify/deepmerge": "^1.0.0", + "ajv": "^8.10.0", + "ajv-formats": "^2.1.1", + "fast-uri": "^2.1.0", + "rfdc": "^1.2.0" } }, - "node_modules/fast-json-stringify/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - }, "node_modules/fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", @@ -4637,37 +4596,41 @@ "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==" }, + "node_modules/fast-uri": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-2.1.0.tgz", + "integrity": "sha512-qKRta6N7BWEFVlyonVY/V+BMLgFqktCUV0QjT259ekAIlbVrMaFnFLxJ4s/JPl4tou56S1BzPufI60bLe29fHA==" + }, "node_modules/fastify": { - "version": "3.29.1", - "resolved": "https://registry.npmjs.org/fastify/-/fastify-3.29.1.tgz", - "integrity": "sha512-UhGmh0/J0YQetqULYfv/utvut0R6ICQvO6Oh81JvG75UbjVgueqoE6EPChB3gR5aF3dVKpT/qFTgc7zvpGTYNg==", - "dependencies": { - "@fastify/ajv-compiler": "^1.0.0", - "@fastify/error": "^2.0.0", - "abstract-logging": "^2.0.0", - "avvio": "^7.1.2", - "fast-json-stringify": "^2.5.2", - "find-my-way": "^4.5.0", - "flatstr": "^1.0.12", - "light-my-request": "^4.2.0", - "pino": "^6.13.0", - "process-warning": "^1.0.0", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/fastify/-/fastify-4.3.0.tgz", + "integrity": "sha512-9q5Ron8jWmX6ElFkgZH4zmIIXdnkGIu16JozWG2ohcs7th5rAo1ymNi+rn6xCmbWc6jl9lf+9OxVe93LOg6/2w==", + "dependencies": { + "@fastify/ajv-compiler": "^3.1.1", + "@fastify/error": "^3.0.0", + "@fastify/fast-json-stringify-compiler": "^4.0.0", + "abstract-logging": "^2.0.1", + "avvio": "^8.1.3", + "find-my-way": "^7.0.0", + "light-my-request": "^5.0.0", + "pino": "^8.0.0", + "process-warning": "^2.0.0", "proxy-addr": "^2.0.7", - "rfdc": "^1.1.4", - "secure-json-parse": "^2.0.0", - "semver": "^7.3.2", - "tiny-lru": "^8.0.1" + "rfdc": "^1.3.0", + "secure-json-parse": "^2.4.0", + "semver": "^7.3.7", + "tiny-lru": "^8.0.2" } }, "node_modules/fastify-disablecache": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/fastify-disablecache/-/fastify-disablecache-2.0.8.tgz", - "integrity": "sha512-LziIkugYZISVJuDoc2cQADsAGNG2AdQDcaoNT5vNqbTQweh3CedrPILsMOslnSPCQEeJ+T1YP+uIGh+34ci4ag==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/fastify-disablecache/-/fastify-disablecache-3.0.0.tgz", + "integrity": "sha512-lNfimfSjHUMzvtVl2mclbbxBhglQMCxbFUCsO8MlIX0ZXHpxCIc+MHi1dk0Bkuu3gy5nzxNTH3TB9C4IkEZt2w==", "dependencies": { - "fastify-plugin": "^3.0.0" + "fastify-plugin": "^3.0.1" }, "engines": { - "node": ">=12.0.0" + "node": ">=14.0.0" } }, "node_modules/fastify-disablecache/node_modules/fastify-plugin": { @@ -4676,14 +4639,14 @@ "integrity": "sha512-qKcDXmuZadJqdTm6vlCqioEbyewF60b/0LOFCcYN1B6BIZGlYJumWWOYs70SFYLDAH4YqdE1cxH/RKMG7rFxgA==" }, "node_modules/fastify-floc-off": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/fastify-floc-off/-/fastify-floc-off-1.0.7.tgz", - "integrity": "sha512-+OEXOFTLekQI+h+caQ68QTaW0KNqrYDAv4KCKmoQQE8heKTt21KQEJe7IGO7dg8/tmLsKQCtwLNbiCGJG6DkGw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fastify-floc-off/-/fastify-floc-off-2.0.0.tgz", + "integrity": "sha512-gis+pjSbHCUMgaiTsMEDNxcTYSZ+dDdyPA2dZsSxDafU7jYM+/l2E42alP/px1bv8GbklSS5XFUHh7N+hCEYew==", "dependencies": { - "fastify-plugin": "^3.0.0" + "fastify-plugin": "^3.0.1" }, "engines": { - "node": ">=12.0.0" + "node": ">=14.0.0" } }, "node_modules/fastify-floc-off/node_modules/fastify-plugin": { @@ -4696,36 +4659,10 @@ "resolved": "https://registry.npmjs.org/fastify-plugin/-/fastify-plugin-4.0.0.tgz", "integrity": "sha512-ZJcXPPcqkj7HFDYqbsCuOIAgIZ/sd2b+OnBxNGyxAcUDUJfIpxp4t23CwxO2E7LZpqUrIliA4TnjxTXG8mLoqw==" }, - "node_modules/fastify/node_modules/pino": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/pino/-/pino-6.14.0.tgz", - "integrity": "sha512-iuhEDel3Z3hF9Jfe44DPXR8l07bhjuFY3GMHIXbjnY9XcafbyDDwl2sN2vw2GjMPf5Nkoe+OFao7ffn9SXaKDg==", - "dependencies": { - "fast-redact": "^3.0.0", - "fast-safe-stringify": "^2.0.8", - "flatstr": "^1.0.12", - "pino-std-serializers": "^3.1.0", - "process-warning": "^1.0.0", - "quick-format-unescaped": "^4.0.3", - "sonic-boom": "^1.0.2" - }, - "bin": { - "pino": "bin.js" - } - }, - "node_modules/fastify/node_modules/pino-std-serializers": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-3.2.0.tgz", - "integrity": "sha512-EqX4pwDPrt3MuOAAUBMU0Tk5kR/YcCM5fNPEzgCO2zJ5HfX0vbiH9HbJglnyeQsN96Kznae6MWD47pZB5avTrg==" - }, - "node_modules/fastify/node_modules/sonic-boom": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-1.4.1.tgz", - "integrity": "sha512-LRHh/A8tpW7ru89lrlkU4AszXt1dbwSjVWguGrmlxE7tawVmDBlI1PILMkXAxJTwqhgsEeTHzj36D5CmHgQmNg==", - "dependencies": { - "atomic-sleep": "^1.0.0", - "flatstr": "^1.0.12" - } + "node_modules/fastify/node_modules/@fastify/error": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@fastify/error/-/error-3.0.0.tgz", + "integrity": "sha512-dPRyT40GiHRzSCll3/Jn2nPe25+E1VXc9tDwRAIKwFCxd5Np5wzgz1tmooWG3sV0qKgrBibihVoCna2ru4SEFg==" }, "node_modules/fastq": { "version": "1.13.0", @@ -4793,17 +4730,15 @@ } }, "node_modules/find-my-way": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/find-my-way/-/find-my-way-4.5.1.tgz", - "integrity": "sha512-kE0u7sGoUFbMXcOG/xpkmz4sRLCklERnBcg7Ftuu1iAxsfEt2S46RLJ3Sq7vshsEy2wJT2hZxE58XZK27qa8kg==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/find-my-way/-/find-my-way-7.0.0.tgz", + "integrity": "sha512-NHVohYPYRXgj6jxXVRwm4iMQjA2ggJpyewHz7Nq7hvBnHoYJJIyHuxNzs8QLPTLQfoqxZzls2g6Zm79XMbhXjA==", "dependencies": { - "fast-decode-uri-component": "^1.0.1", "fast-deep-equal": "^3.1.3", - "safe-regex2": "^2.0.0", - "semver-store": "^0.3.0" + "safe-regex2": "^2.0.0" }, "engines": { - "node": ">=10" + "node": ">=14" } }, "node_modules/find-up": { @@ -4840,11 +4775,6 @@ "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/flatstr": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/flatstr/-/flatstr-1.0.12.tgz", - "integrity": "sha512-4zPxDyhCyiN2wIAtSLI6gc82/EjqZc1onI4Mz/l0pWrAlsSfYH/2ZIcU+e3oA2wDwbzIWNKwa23F8rh6+DRWkw==" - }, "node_modules/flatted": { "version": "3.2.6", "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.6.tgz", @@ -4924,14 +4854,6 @@ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, - "node_modules/from2/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/fs-extra": { "version": "10.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", @@ -5159,9 +5081,9 @@ } }, "node_modules/globals": { - "version": "13.16.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.16.0.tgz", - "integrity": "sha512-A1lrQfpNF+McdPOnnFqY3kSN0AFTy485bTi1bkLk4mVPODIUEcSfhHgRqA+QdXPksrSTTztYXx37NFV+GpGk3Q==", + "version": "13.17.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", + "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -5302,9 +5224,9 @@ "dev": true }, "node_modules/helmet": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/helmet/-/helmet-5.1.0.tgz", - "integrity": "sha512-klsunXs8rgNSZoaUrNeuCiWUxyc+wzucnEnFejUg3/A+CaF589k9qepLZZ1Jehnzig7YbD4hEuscGXuBY3fq+g==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/helmet/-/helmet-5.1.1.tgz", + "integrity": "sha512-/yX0oVZBggA9cLJh8aw3PPCfedBnbd7J2aowjzsaWwZh7/UFY0nccn/aHAggIgWUFfnykX8GKd3a1pSbrmlcVQ==", "engines": { "node": ">=12.0.0" } @@ -5319,6 +5241,20 @@ "readable-stream": "^3.6.0" } }, + "node_modules/help-me/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/hoist-non-react-statics": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", @@ -5727,11 +5663,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-deflate": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-deflate/-/is-deflate-1.0.0.tgz", - "integrity": "sha512-YDoFpuZWu1VRXlsnlYMzKyVRITXj7Ej/V9gXQ2/pAe7X1J7M/RNOqaIYi6qUn+B7nGyB9pDXrv02dsB58d2ZAQ==" - }, "node_modules/is-electron": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/is-electron/-/is-electron-2.2.1.tgz", @@ -5775,14 +5706,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-gzip": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-gzip/-/is-gzip-2.0.0.tgz", - "integrity": "sha512-jtO4Njg6q58zDo/Pu4027beSZ0VdsZlt8/5Moco6yAg+DIxb5BK/xUYqYG2+MD4+piKldXJNHxRkhEYI2fvrxA==", - "engines": { - "node": ">=4" - } - }, "node_modules/is-html": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-html/-/is-html-2.0.0.tgz", @@ -5953,14 +5876,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-zip": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-zip/-/is-zip-1.0.0.tgz", - "integrity": "sha512-aym/dLqHZVMW/+bbNrA/eTeWTyW4fE6koLSoFSsM2GF3/pho7aPCcmHFWFLvzHu7MDuf67domYn36GDwU/cJkQ==", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -6898,14 +6813,6 @@ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, - "node_modules/jszip/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/kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", @@ -7078,13 +6985,12 @@ } }, "node_modules/light-my-request": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/light-my-request/-/light-my-request-4.10.1.tgz", - "integrity": "sha512-l+zWk0HXGhGzY7IYTZnYEqIpj3Mpcyk2f8+FkKUyREywvaiWCf2jyQVxpasKRsploY/nVpoqTlxx72CIeQNcIQ==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/light-my-request/-/light-my-request-5.3.0.tgz", + "integrity": "sha512-AdBNkWTD+CnFYGa6lCowLU0DMNBelq58vQXl1jWOvbMsMVzZzJyN5K94VOI2EhqLtskJNUi2ALgI8KNmXl+74A==", "dependencies": { - "ajv": "^8.1.0", "cookie": "^0.5.0", - "process-warning": "^1.0.0", + "process-warning": "^2.0.0", "set-cookie-parser": "^2.4.1" } }, @@ -7929,9 +7835,9 @@ "integrity": "sha512-VuCaZZAjReZ3vUwgOB8LxAosIurDiAW0s13rI1YwmaP++jvcxP77AWoQvenZebpCA2m8WC1/EosPYPMjnRAp/w==" }, "node_modules/on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "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" }, @@ -7981,9 +7887,9 @@ } }, "node_modules/openapi-types": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/openapi-types/-/openapi-types-10.0.0.tgz", - "integrity": "sha512-Y8xOCT2eiKGYDzMW9R4x5cmfc3vGaaI4EL2pwhDmodWw1HlK18YcZ4uJxc7Rdp7/gGzAygzH9SXr6GKYIXbRcQ==" + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/openapi-types/-/openapi-types-11.1.0.tgz", + "integrity": "sha512-ZW+Jf12flFF6DXSij8DGL3svDA4RtSyHXjC/xB/JAh18gg3uVfVIFLvCfScUMowrpvlkxsMMbErakbth2g3/iQ==" }, "node_modules/opencollective-postinstall": { "version": "2.0.3", @@ -8221,14 +8127,6 @@ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, - "node_modules/peek-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/peek-stream/node_modules/through2": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", @@ -8270,9 +8168,9 @@ "integrity": "sha512-0wVyH0cKohzBQ5Gi2V1BuxYpxWfxF3cSqfFXfPIpl5tl9XLS5z4ogqhUCD20AbHi0h9aJkqXNJnkVev6gwh2ag==" }, "node_modules/pino": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/pino/-/pino-8.2.0.tgz", - "integrity": "sha512-HS7+vUpOYEJcNZkyb2ujN2sSayXLyz5XEvDZw4vrxlxHDe34qIDiNf2s+0dD/q/eqEubfxwAItYhY6zCNVZBVw==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/pino/-/pino-8.3.0.tgz", + "integrity": "sha512-CUOOU5sYgyLVijf7qsOWkPLOdzIXaVE9Oyl6zAkjgJn30uGBFUtrRaaCzbtOSJ1I6BqfanBqBttbazEJIwHkJg==", "dependencies": { "atomic-sleep": "^1.0.0", "fast-redact": "^3.1.1", @@ -8283,7 +8181,7 @@ "quick-format-unescaped": "^4.0.3", "real-require": "^0.1.0", "safe-stable-stringify": "^2.3.1", - "sonic-boom": "^3.0.0", + "sonic-boom": "^3.1.0", "thread-stream": "^2.0.0" }, "bin": { @@ -8299,17 +8197,6 @@ "split2": "^4.0.0" } }, - "node_modules/pino-abstract-transport/node_modules/readable-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.1.0.tgz", - "integrity": "sha512-sVisi3+P2lJ2t0BPbpK629j8wRW06yKGJUcaLAGXPAUhyUxVJm7VsCTit1PFgT4JHUDMrGNR+ZjSKpzGaRF3zw==", - "dependencies": { - "abort-controller": "^3.0.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, "node_modules/pino-abstract-transport/node_modules/split2": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/split2/-/split2-4.1.0.tgz", @@ -8349,28 +8236,11 @@ "integrity": "sha512-Ve8ubhrXRdnuCJ5bQSQpP3uaV43K1PMcOfSRC1pqHgRZommXCgsXwh08jVC5NpjwScE23BPDwDvVg4cov3mwjw==", "dev": true }, - "node_modules/pino-pretty/node_modules/readable-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.1.0.tgz", - "integrity": "sha512-sVisi3+P2lJ2t0BPbpK629j8wRW06yKGJUcaLAGXPAUhyUxVJm7VsCTit1PFgT4JHUDMrGNR+ZjSKpzGaRF3zw==", - "dev": true, - "dependencies": { - "abort-controller": "^3.0.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, "node_modules/pino-std-serializers": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-6.0.0.tgz", "integrity": "sha512-mMMOwSKrmyl+Y12Ri2xhH1lbzQxwwpuru9VjyJpgFIH4asSj88F2csdMwN6+M5g1Ll4rmsYghHLQJw81tgZ7LQ==" }, - "node_modules/pino/node_modules/process-warning": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-2.0.0.tgz", - "integrity": "sha512-+MmoAXoUX+VTHAlwns0h+kFUWFs/3FZy+ZuchkgjyOu3oioLAo2LB5aCfKPh2+P9O18i3m43tUEv3YqttSy0Ww==" - }, "node_modules/pirates": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", @@ -8512,13 +8382,13 @@ } }, "node_modules/playwright": { - "version": "1.23.4", - "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.23.4.tgz", - "integrity": "sha512-NUPOLMpd8WydmwZFllST/YZ7cImgDDDrvcaq7Gj2vAjNg0jYCndFJt6HHtbkOPSIlRo4BaQYlbFx6meq1r1FXQ==", + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.24.1.tgz", + "integrity": "sha512-ALAdckGTTZq6cPD/NlWE+OO5cgNBi9BHKk6FoDztlcVNJ07F1buwydTuf8wBu1Jzi+SGOpEfLR/83+2fS84ksQ==", "dev": true, "hasInstallScript": true, "dependencies": { - "playwright-core": "1.23.4" + "playwright-core": "1.24.1" }, "bin": { "playwright": "cli.js" @@ -8528,9 +8398,9 @@ } }, "node_modules/playwright-core": { - "version": "1.23.4", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.23.4.tgz", - "integrity": "sha512-h5V2yw7d8xIwotjyNrkLF13nV9RiiZLHdXeHo+nVJIYGVlZ8U2qV0pMxNJKNTvfQVT0N8/A4CW6/4EW2cOcTiA==", + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.24.1.tgz", + "integrity": "sha512-1RoSDe/oTQS1Ct7Pb8i+vcFKbKYpmVIBXk0IUiD8RvCUMnNl7EJF1OSQ9E8TZ5RYamWkW2Psir9e8Doyz1FnhQ==", "dev": true, "bin": { "playwright": "cli.js" @@ -8641,9 +8511,9 @@ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, "node_modules/process-warning": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-1.0.0.tgz", - "integrity": "sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q==" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-2.0.0.tgz", + "integrity": "sha512-+MmoAXoUX+VTHAlwns0h+kFUWFs/3FZy+ZuchkgjyOu3oioLAo2LB5aCfKPh2+P9O18i3m43tUEv3YqttSy0Ww==" }, "node_modules/progress": { "version": "2.0.3", @@ -8735,6 +8605,19 @@ "stream-shift": "^1.0.0" } }, + "node_modules/pumpify/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", @@ -8757,6 +8640,7 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, "funding": [ { "type": "github", @@ -9076,16 +8960,14 @@ } }, "node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.1.0.tgz", + "integrity": "sha512-sVisi3+P2lJ2t0BPbpK629j8wRW06yKGJUcaLAGXPAUhyUxVJm7VsCTit1PFgT4JHUDMrGNR+ZjSKpzGaRF3zw==", "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "abort-controller": "^3.0.0" }, "engines": { - "node": ">= 6" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, "node_modules/readable-web-to-node-stream": { @@ -9103,6 +8985,19 @@ "url": "https://github.com/sponsors/Borewit" } }, + "node_modules/readable-web-to-node-stream/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/readdir-scoped-modules": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz", @@ -9555,29 +9450,24 @@ "node": ">=10" } }, - "node_modules/semver-store": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/semver-store/-/semver-store-0.3.0.tgz", - "integrity": "sha512-TcZvGMMy9vodEFSse30lWinkj+JgOBvPn8wRItpQRSayhc+4ssDs335uklkfvQQJgL/WvmHLVj4Ycv2s7QCQMg==" - }, "node_modules/send": { - "version": "0.17.2", - "resolved": "https://registry.npmjs.org/send/-/send-0.17.2.tgz", - "integrity": "sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==", + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", "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.8.1", + "http-errors": "2.0.0", "mime": "1.6.0", "ms": "2.1.3", - "on-finished": "~2.3.0", + "on-finished": "2.4.1", "range-parser": "~1.2.1", - "statuses": "~1.5.0" + "statuses": "2.0.1" }, "engines": { "node": ">= 0.8.0" @@ -9596,37 +9486,6 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, - "node_modules/send/node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/send/node_modules/http-errors": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", - "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", - "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/send/node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", - "engines": { - "node": ">= 0.6" - } - }, "node_modules/serialize-javascript": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", @@ -9637,9 +9496,9 @@ } }, "node_modules/set-cookie-parser": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.5.0.tgz", - "integrity": "sha512-cHMAtSXilfyBePduZEBVPTCftTQWz6ehWJD5YNUg4mqvRosrrjKbo4WS8JkB0/RxonMoohHm7cOGH60mDkRQ9w==" + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.5.1.tgz", + "integrity": "sha512-1jeBGaKNGdEq4FgIrORu/N570dwoPYio8lSoYLWmX7sQ//0JY08Xh9o5pBcgmHQ/MbsYp/aZnOe1s1lIsbLprQ==" }, "node_modules/setimmediate": { "version": "1.0.5", @@ -9800,9 +9659,9 @@ } }, "node_modules/sonic-boom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-3.0.0.tgz", - "integrity": "sha512-p5DiZOZHbJ2ZO5MADczp5qrfOd3W5Vr2vHxfCpe7G4AzPwVOweIjbfgku8wSQUuk+Y5Yuo8W7JqRe6XKmKistg==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-3.2.0.tgz", + "integrity": "sha512-SbbZ+Kqj/XIunvIAgUZRlqd6CGQYq71tRRbXR92Za8J/R3Yh4Av+TWENiSiEgnlwckYLyP0YZQWVfyNC0dzLaA==", "dependencies": { "atomic-sleep": "^1.0.0" } @@ -9894,6 +9753,20 @@ "readable-stream": "^3.0.0" } }, + "node_modules/split2/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", @@ -9939,13 +9812,18 @@ "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==" }, "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==", + "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.2.0" + "safe-buffer": "~5.1.0" } }, + "node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, "node_modules/string-length": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", @@ -9959,19 +9837,6 @@ "node": ">=10" } }, - "node_modules/string-similarity": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/string-similarity/-/string-similarity-4.0.4.tgz", - "integrity": "sha512-/q/8Q4Bl4ZKAPjj8WerIBJWALKkaPRfrvhfF8k/B23i4nzrlRj2/go1m90In7nG/3XDSbOo0+pu6RvCTM9RGMQ==" - }, - "node_modules/string-to-stream": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/string-to-stream/-/string-to-stream-3.0.1.tgz", - "integrity": "sha512-Hl092MV3USJuUCC6mfl9sPzGloA3K5VwdIeJjYIkXY/8K+mUvaeEabWJgArp+xXrsWxCajeT2pc4axbVhIZJyg==", - "dependencies": { - "readable-stream": "^3.4.0" - } - }, "node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -10448,6 +10313,20 @@ "readable-stream": "3" } }, + "node_modules/through2/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/timestring": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/timestring/-/timestring-6.0.0.tgz", @@ -10777,23 +10656,6 @@ "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", "dev": true }, - "node_modules/under-pressure": { - "version": "5.8.1", - "resolved": "https://registry.npmjs.org/under-pressure/-/under-pressure-5.8.1.tgz", - "integrity": "sha512-5c1e0HoNmF2J3NQS4j7j5M5cu5GLR21FqvmOI/V6R+rhwS+HH0ocEFwCYC0CeKbLL/b1NyvMCQzlx15O9CoaEQ==", - "dependencies": { - "@fastify/error": "^2.0.0", - "fastify-plugin": "^3.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/under-pressure/node_modules/fastify-plugin": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/fastify-plugin/-/fastify-plugin-3.0.1.tgz", - "integrity": "sha512-qKcDXmuZadJqdTm6vlCqioEbyewF60b/0LOFCcYN1B6BIZGlYJumWWOYs70SFYLDAH4YqdE1cxH/RKMG7rFxgA==" - }, "node_modules/underscore": { "version": "1.13.4", "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.4.tgz", @@ -10826,9 +10688,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.4.tgz", - "integrity": "sha512-jnmO2BEGUjsMOe/Fg9u0oczOe/ppIDZPebzccl1yDWGLFP16Pa1/RM5wEoKYPG2zstNcDuAStejyxsOuKINdGA==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.5.tgz", + "integrity": "sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q==", "funding": [ { "type": "opencollective", @@ -10983,9 +10845,9 @@ } }, "node_modules/webpack": { - "version": "5.73.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.73.0.tgz", - "integrity": "sha512-svjudQRPPa0YiOYa2lM/Gacw0r6PvxptHj4FuEKQ2kX05ZLkjbVc5MnPs6its5j7IZljnIqSVo/OsY2X0IpHGA==", + "version": "5.74.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.74.0.tgz", + "integrity": "sha512-A2InDwnhhGN4LYctJj6M1JEaGL7Luj6LOmyBHjcI8529cm5p6VXiTIW2sn6ffvEAKmveLzvu4jrihwXtPojlAA==", "peer": true, "dependencies": { "@types/eslint-scope": "^3.7.3", @@ -10993,11 +10855,11 @@ "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/wasm-edit": "1.11.1", "@webassemblyjs/wasm-parser": "1.11.1", - "acorn": "^8.4.1", + "acorn": "^8.7.1", "acorn-import-assertions": "^1.7.6", "browserslist": "^4.14.5", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.9.3", + "enhanced-resolve": "^5.10.0", "es-module-lexer": "^0.9.0", "eslint-scope": "5.1.1", "events": "^3.2.0", @@ -11010,7 +10872,7 @@ "schema-utils": "^3.1.0", "tapable": "^2.1.1", "terser-webpack-plugin": "^5.1.3", - "watchpack": "^2.3.1", + "watchpack": "^2.4.0", "webpack-sources": "^3.2.3" }, "bin": { @@ -11176,9 +11038,9 @@ } }, "node_modules/ws": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.0.tgz", - "integrity": "sha512-JDAgSYQ1ksuwqfChJusw1LSJ8BizJ2e/vVu5Lxjq3YvNJNlROv1ui4i+c/kUUrPheBvQl4c5UbERhTwKa6QBJQ==", + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.1.tgz", + "integrity": "sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA==", "engines": { "node": ">=10.0.0" }, @@ -11344,21 +11206,21 @@ "dev": true }, "@babel/core": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.6.tgz", - "integrity": "sha512-cQbWBpxcbbs/IUredIPkHiAGULLV8iwgNRMFzvbhEXISp4f3rUUXE5+TIw6KwUWUR3DwyI6gmBRnmAtYaWehwQ==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.9.tgz", + "integrity": "sha512-1LIb1eL8APMy91/IMW+31ckrfBM4yCoLaVzoDhZUKSM4cu1L1nIidyxkCgzPAgrC5WEz36IPEr/eSeSF9pIn+g==", "dev": true, "requires": { "@ampproject/remapping": "^2.1.0", "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.18.6", - "@babel/helper-compilation-targets": "^7.18.6", - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helpers": "^7.18.6", - "@babel/parser": "^7.18.6", + "@babel/generator": "^7.18.9", + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-module-transforms": "^7.18.9", + "@babel/helpers": "^7.18.9", + "@babel/parser": "^7.18.9", "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.6", - "@babel/types": "^7.18.6", + "@babel/traverse": "^7.18.9", + "@babel/types": "^7.18.9", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -11375,11 +11237,11 @@ } }, "@babel/generator": { - "version": "7.18.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.7.tgz", - "integrity": "sha512-shck+7VLlY72a2w9c3zYWuE1pwOKEiQHV7GTUbSnhyl5eu3i04t30tBY82ZRWrDfo3gkakCFtevExnxbkf2a3A==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.9.tgz", + "integrity": "sha512-wt5Naw6lJrL1/SGkipMiFxJjtyczUWTP38deiP1PO60HsBjDeKk08CGC3S8iVuvf0FmTdgKwU1KIXzSKL1G0Ug==", "requires": { - "@babel/types": "^7.18.7", + "@babel/types": "^7.18.9", "@jridgewell/gen-mapping": "^0.3.2", "jsesc": "^2.5.1" }, @@ -11406,12 +11268,12 @@ } }, "@babel/helper-compilation-targets": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.6.tgz", - "integrity": "sha512-vFjbfhNCzqdeAtZflUFrG5YIFqGTqsctrtkZ1D/NB0mDW9TwW3GmmUepYY4G9wCET5rY5ugz4OGTcLd614IzQg==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.9.tgz", + "integrity": "sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg==", "dev": true, "requires": { - "@babel/compat-data": "^7.18.6", + "@babel/compat-data": "^7.18.8", "@babel/helper-validator-option": "^7.18.6", "browserslist": "^4.20.2", "semver": "^6.3.0" @@ -11426,17 +11288,17 @@ } }, "@babel/helper-environment-visitor": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.6.tgz", - "integrity": "sha512-8n6gSfn2baOY+qlp+VSzsosjCVGFqWKmDF0cCWOybh52Dw3SEyoWR1KrhMJASjLwIEkkAufZ0xvr+SxLHSpy2Q==" + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", + "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==" }, "@babel/helper-function-name": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.6.tgz", - "integrity": "sha512-0mWMxV1aC97dhjCah5U5Ua7668r5ZmSC2DLfH2EZnf9c3/dHZKiFa5pRLMH5tjSl471tY6496ZWk/kjNONBxhw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.9.tgz", + "integrity": "sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A==", "requires": { "@babel/template": "^7.18.6", - "@babel/types": "^7.18.6" + "@babel/types": "^7.18.9" } }, "@babel/helper-hoist-variables": { @@ -11456,25 +11318,25 @@ } }, "@babel/helper-module-transforms": { - "version": "7.18.8", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.8.tgz", - "integrity": "sha512-che3jvZwIcZxrwh63VfnFTUzcAM9v/lznYkkRxIBGMPt1SudOKHAEec0SIRCfiuIzTcF7VGj/CaTT6gY4eWxvA==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.9.tgz", + "integrity": "sha512-KYNqY0ICwfv19b31XzvmI/mfcylOzbLtowkw+mfvGPAQ3kfCnMLYbED3YecL5tPd8nAYFQFAd6JHp2LxZk/J1g==", "dev": true, "requires": { - "@babel/helper-environment-visitor": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", "@babel/helper-module-imports": "^7.18.6", "@babel/helper-simple-access": "^7.18.6", "@babel/helper-split-export-declaration": "^7.18.6", "@babel/helper-validator-identifier": "^7.18.6", "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.8", - "@babel/types": "^7.18.8" + "@babel/traverse": "^7.18.9", + "@babel/types": "^7.18.9" } }, "@babel/helper-plugin-utils": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.6.tgz", - "integrity": "sha512-gvZnm1YAAxh13eJdkb9EWHBnF3eAub3XTLCZEehHT2kWxiKVRL64+ae5Y6Ivne0mVHmMYKT+xWgZO+gQhuLUBg==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.9.tgz", + "integrity": "sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w==", "dev": true }, "@babel/helper-simple-access": { @@ -11506,14 +11368,14 @@ "dev": true }, "@babel/helpers": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.6.tgz", - "integrity": "sha512-vzSiiqbQOghPngUYt/zWGvK3LAsPhz55vc9XNN0xAl2gV4ieShI2OQli5duxWHD+72PZPTKAcfcZDE1Cwc5zsQ==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.9.tgz", + "integrity": "sha512-Jf5a+rbrLoR4eNdUmnFu8cN5eNJT6qdTdOg5IHIzq87WwyRw9PwguLFOWYgktN/60IP4fgDUawJvs7PjQIzELQ==", "dev": true, "requires": { "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.6", - "@babel/types": "^7.18.6" + "@babel/traverse": "^7.18.9", + "@babel/types": "^7.18.9" } }, "@babel/highlight": { @@ -11578,9 +11440,9 @@ } }, "@babel/parser": { - "version": "7.18.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.8.tgz", - "integrity": "sha512-RSKRfYX20dyH+elbJK2uqAkVyucL+xXzhqlMD5/ZXx+dAAwpyB7HsvnHe/ZUGOF+xLr5Wx9/JoXVTj6BQE2/oA==" + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.9.tgz", + "integrity": "sha512-9uJveS9eY9DJ0t64YbIBZICtJy8a5QrDEVdiLCG97fVLpDTpGX7t8mMSb6OWw6Lrnjqj4O8zwjELX3dhoMgiBg==" }, "@babel/plugin-syntax-async-generators": { "version": "7.8.4", @@ -11700,9 +11562,9 @@ } }, "@babel/runtime": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.6.tgz", - "integrity": "sha512-t9wi7/AW6XtKahAe20Yw0/mMljKq0B1r2fPdvaAdV/KPDZewFXdaaa6K7lxmZBZ8FBNpCiAT6iHPmd6QO9bKfQ==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.9.tgz", + "integrity": "sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw==", "requires": { "regenerator-runtime": "^0.13.4" } @@ -11718,18 +11580,18 @@ } }, "@babel/traverse": { - "version": "7.18.8", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.8.tgz", - "integrity": "sha512-UNg/AcSySJYR/+mIcJQDCv00T+AqRO7j/ZEJLzpaYtgM48rMg5MnkJgyNqkzo88+p4tfRvZJCEiwwfG6h4jkRg==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.9.tgz", + "integrity": "sha512-LcPAnujXGwBgv3/WHv01pHtb2tihcyW1XuL9wd7jqh1Z8AQkTd+QVjMrMijrln0T7ED3UXLIy36P9Ao7W75rYg==", "requires": { "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.18.7", - "@babel/helper-environment-visitor": "^7.18.6", - "@babel/helper-function-name": "^7.18.6", + "@babel/generator": "^7.18.9", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.18.9", "@babel/helper-hoist-variables": "^7.18.6", "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.18.8", - "@babel/types": "^7.18.8", + "@babel/parser": "^7.18.9", + "@babel/types": "^7.18.9", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -11742,9 +11604,9 @@ } }, "@babel/types": { - "version": "7.18.8", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.8.tgz", - "integrity": "sha512-qwpdsmraq0aJ3osLJRApsc2ouSJCdnMeZwB0DhbtHAtRpZNZCdlbRnHIgcRKzdE1g0iOGg644fzjOBcdOz9cPw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.9.tgz", + "integrity": "sha512-WwMLAg2MvJmt/rKEVQBBhIVffMmnilX4oe0sRe7iPOHIGsqpruFHHdrfj4O1CMMtgMtCU4oPafZjDPCRgO57Wg==", "requires": { "@babel/helper-validator-identifier": "^7.18.6", "to-fast-properties": "^2.0.0" @@ -12054,10 +11916,15 @@ "integrity": "sha512-1W0PZezq2rxlAssoWemi9gFRD8IQxvf0FPL5Km3TOmGHFG7ib0TbFBJ0yC7D/1NsxunjNTK6WjUXV8ao/mKZ5w==", "dev": true }, + "@fastify/accept-negotiator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@fastify/accept-negotiator/-/accept-negotiator-1.0.0.tgz", + "integrity": "sha512-4R/N2KfYeld7A5LGkai+iUFMahXcxxYbDp+XS2B1yuL3cdmZLJ9TlCnNzT3q5xFTqsYm0GPpinLUwfSwjcVjyA==" + }, "@fastify/accepts": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@fastify/accepts/-/accepts-3.0.0.tgz", - "integrity": "sha512-+ldBB3O59p/z9Uc1LSZqAA4/oZaNbRtCVMwjgJOahl+PKmx4ciRRoWVht77kFOb36lRE5MPEba4Vt78H7PKfQw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@fastify/accepts/-/accepts-4.0.0.tgz", + "integrity": "sha512-eRJ6jmW6v46pTyflP2N3LEoUZosJMMe+o8tTWsT5iVpK9Y0cgXsPXqi4QDTHgED0r8LGFPXPX1G7I8JrU6LTng==", "requires": { "accepts": "^1.3.5", "fastify-plugin": "^3.0.0" @@ -12071,29 +11938,13 @@ } }, "@fastify/ajv-compiler": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@fastify/ajv-compiler/-/ajv-compiler-1.1.0.tgz", - "integrity": "sha512-gvCOUNpXsWrIQ3A4aXCLIdblL0tDq42BG/2Xw7oxbil9h11uow10ztS2GuFazNBfjbrsZ5nl+nPl5jDSjj5TSg==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@fastify/ajv-compiler/-/ajv-compiler-3.1.2.tgz", + "integrity": "sha512-m2nzzQJeuVmeGOB9rnII9sZiY8AZ02a9WMQfMBfK1jxdFnxm3FPYKGbYpPjODj4halNogwpolyugbTNpnDCi0A==", "requires": { - "ajv": "^6.12.6" - }, - "dependencies": { - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - } + "ajv": "^8.10.0", + "ajv-formats": "^2.1.1", + "fast-uri": "^2.0.0" } }, "@fastify/autoload": { @@ -12105,9 +11956,9 @@ } }, "@fastify/bearer-auth": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/@fastify/bearer-auth/-/bearer-auth-7.0.2.tgz", - "integrity": "sha512-QSIxlj4jBfMxvqA/xQB+1vdOuuT2Qq+ulgI/pTLiikBvTLFWyPCh3FoI//nX/VyJO0IvBMII/mPUg09faG80nw==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@fastify/bearer-auth/-/bearer-auth-8.0.1.tgz", + "integrity": "sha512-BsjuRTSvhA1WCzWFtGVbjm08BuVWaUtnwRar9chrKsoiW1+xKR70IG7v4tTcWyZnu/TRzo3CEgcP3VkxybMHhw==", "requires": { "fastify-plugin": "^3.0.0" }, @@ -12120,22 +11971,18 @@ } }, "@fastify/compress": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@fastify/compress/-/compress-5.0.0.tgz", - "integrity": "sha512-A0acEHP55+h7XDeWFFbSwZUYya7IK/E7IP9h+/iQxYBQeLY+AKF9Ya00ddMTAd/BpJuQvqUgGjefFXgzza3e8Q==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@fastify/compress/-/compress-6.1.0.tgz", + "integrity": "sha512-8VEabunOqSAh0+o42a9GaAqRriiH4VHVpsR6eVOpss733nfWRDoSQ74Fa88J22u9BJlRU1EFyCCscoS55be6hg==", "requires": { "encoding-negotiator": "^2.0.1", "fastify-plugin": "^3.0.0", "into-stream": "^6.0.0", - "is-deflate": "^1.0.0", - "is-gzip": "^2.0.0", - "is-zip": "^1.0.0", "mime-db": "^1.51.0", "minipass": "^3.1.6", "peek-stream": "^1.1.3", "pump": "^3.0.0", - "pumpify": "^2.0.1", - "string-to-stream": "^3.0.1" + "pumpify": "^2.0.1" }, "dependencies": { "fastify-plugin": { @@ -12146,9 +11993,9 @@ } }, "@fastify/cors": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@fastify/cors/-/cors-7.0.0.tgz", - "integrity": "sha512-nlo6ScwagBNJacAZD3KX90xjWLIoV0vN9QqoX1wUE9ZeZMdvkVkMZCGlxEtr00NshV0X5wDge4w5rwox7rRzSg==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@fastify/cors/-/cors-8.0.0.tgz", + "integrity": "sha512-mB2GsA7aVwq7XG6B2OM1FMpcaiXY69ZbM1h/xDJxLEVu5ITGcs5XYrBIYTMNU2dQtzO6mzXhGd2dEKaCnB7UgQ==", "requires": { "fastify-plugin": "^3.0.0", "vary": "^1.1.2" @@ -12161,15 +12008,28 @@ } } }, + "@fastify/deepmerge": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@fastify/deepmerge/-/deepmerge-1.1.0.tgz", + "integrity": "sha512-E8Hfdvs1bG6u0N4vN5Nty6JONUfTdOciyD5rn8KnEsLKIenvOVcr210BQR9t34PRkNyjqnMLGk3e0BsaxRdL+g==" + }, "@fastify/error": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@fastify/error/-/error-2.0.0.tgz", "integrity": "sha512-wI3fpfDT0t7p8E6dA2eTECzzOd+bZsZCJ2Hcv+Onn2b7ZwK3RwD27uW2QDaMtQhAfWQQP+WNK7nKf0twLsBf9w==" }, + "@fastify/fast-json-stringify-compiler": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@fastify/fast-json-stringify-compiler/-/fast-json-stringify-compiler-4.0.0.tgz", + "integrity": "sha512-9pCi6c6tmGt/qfuf2koZQuSIG6ckP9q3mz+JoMmAq9eQ4EtA92sWoK7E0LJUn2FFTS/hp5kag+4+dWsV5ZfcXg==", + "requires": { + "fast-json-stringify": "^5.0.0" + } + }, "@fastify/helmet": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@fastify/helmet/-/helmet-8.1.0.tgz", - "integrity": "sha512-Y6bx95uKd3wYM8UE9sCfveW3nYTkbmOeAgZWqFuBd/FYgJu5SH3uMRM7NhmHFdiiqtzaLvIC6rId47l7783lTg==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@fastify/helmet/-/helmet-9.1.0.tgz", + "integrity": "sha512-wAtu/38t90vH46GdLM6pVi8tM1HZXb6PRdLTNBo9pudSfSw5i5Ogm8Hq1Nx337WjgSOeU6MefaTd+1avlOlCDQ==", "requires": { "fastify-plugin": "^3.0.0", "helmet": "^5.0.1" @@ -12183,26 +12043,19 @@ } }, "@fastify/rate-limit": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@fastify/rate-limit/-/rate-limit-6.0.1.tgz", - "integrity": "sha512-LSd6gIhvTMbt+xRG4vhfFKgbxy8x/namtIo9EcdUneE7LnsS6GSQ1NL2eo0Bg8Q61mNk812guS1xCLvO5kSTPQ==", + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/@fastify/rate-limit/-/rate-limit-7.3.0.tgz", + "integrity": "sha512-dZnb6vfht20i96vyOuYYM0Bs/CUoGtsTd+5v+tQU48RrPtv8YqttNHYIC0oq4gkZIMQwBWLFjNaDokn5qtaC5Q==", "requires": { - "fastify-plugin": "^3.0.1", + "fastify-plugin": "^4.0.0", "ms": "^2.1.3", "tiny-lru": "^8.0.1" - }, - "dependencies": { - "fastify-plugin": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/fastify-plugin/-/fastify-plugin-3.0.1.tgz", - "integrity": "sha512-qKcDXmuZadJqdTm6vlCqioEbyewF60b/0LOFCcYN1B6BIZGlYJumWWOYs70SFYLDAH4YqdE1cxH/RKMG7rFxgA==" - } } }, "@fastify/sensible": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@fastify/sensible/-/sensible-4.1.0.tgz", - "integrity": "sha512-8TBlmCK055y6WO9jZlndmceB9x8NyNcLEbnJtdu44zelfmY1ebBMSB7MOqyMteyDvpSMq3CVaPknBu35d9FRlA==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@fastify/sensible/-/sensible-5.1.0.tgz", + "integrity": "sha512-ZLuYDpBZecCsr5ZlTKtcyA1dg9ExiEHdTxarYMaBnCJzPBUvTNoDMypMCC6XcC1VS7idMmKjlGmHfmMAaz761Q==", "requires": { "fast-deep-equal": "^3.1.1", "fastify-plugin": "^3.0.0", @@ -12221,50 +12074,46 @@ } }, "@fastify/static": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@fastify/static/-/static-5.0.2.tgz", - "integrity": "sha512-HvyXZ5a7hUHoSBRq9jKUuKIUCkHMkCDcmiAeEmixXlGOx8pEWx3NYOIaiivcjWa6/NLvfdUT+t/jzfVQ2PA7Gw==", + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/@fastify/static/-/static-6.4.1.tgz", + "integrity": "sha512-RuNZyZwddGCOcxGeplWM3eBh6pgnSGGeXJX4nLeJX8NzggMWR8XwGI3/DW/S3DFjo8vBPUvdi/Vd/beqQt9Y2w==", "requires": { + "@fastify/accept-negotiator": "^1.0.0", "content-disposition": "^0.5.3", - "encoding-negotiator": "^2.0.1", - "fastify-plugin": "^3.0.0", - "glob": "^7.1.4", + "fastify-plugin": "^4.0.0", + "glob": "^8.0.1", "p-limit": "^3.1.0", - "readable-stream": "^3.4.0", - "send": "^0.17.1" + "readable-stream": "^4.0.0", + "send": "^0.18.0" + } + }, + "@fastify/swagger": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/@fastify/swagger/-/swagger-7.4.1.tgz", + "integrity": "sha512-SN3sjz4dsb6jyochD6RNXG1GYBmt45YCIiQW3YjXF1Q8hP4aYQ7pVcRH2prcm12G6MJ4fGq58ywqh3prrO/Ocg==", + "requires": { + "@fastify/static": "^6.0.0", + "fastify-plugin": "^3.0.1", + "js-yaml": "^4.1.0", + "json-schema-resolver": "^1.3.0", + "openapi-types": "^11.0.0", + "rfdc": "^1.3.0" }, "dependencies": { "fastify-plugin": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/fastify-plugin/-/fastify-plugin-3.0.1.tgz", "integrity": "sha512-qKcDXmuZadJqdTm6vlCqioEbyewF60b/0LOFCcYN1B6BIZGlYJumWWOYs70SFYLDAH4YqdE1cxH/RKMG7rFxgA==" - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } } } }, - "@fastify/swagger": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@fastify/swagger/-/swagger-6.1.0.tgz", - "integrity": "sha512-oum6QzV1/8/2eqWOEYzqwhRJQ3ftpxfGnDGmAinLIyeTrsr7xpNev/8iRxAAb7S6S8KRIIybkhvzvkuqnQKTkA==", + "@fastify/under-pressure": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@fastify/under-pressure/-/under-pressure-7.0.0.tgz", + "integrity": "sha512-UhdC9+wEJRmLnbSYyINOcykiJDgPwflSxGz5Vw91192D25MmddbwM4+nCnG9JX2ZzMDJ57b0aQjYJj+asfqYMg==", "requires": { - "@fastify/static": "^5.0.0", - "fastify-plugin": "^3.0.0", - "js-yaml": "^4.0.0", - "json-schema-resolver": "^1.3.0", - "openapi-types": "^10.0.0", - "rfdc": "^1.3.0" + "@fastify/error": "^2.0.0", + "fastify-plugin": "^3.0.0" }, "dependencies": { "fastify-plugin": { @@ -12700,9 +12549,9 @@ } }, "@redocly/openapi-core": { - "version": "1.0.0-beta.104", - "resolved": "https://registry.npmjs.org/@redocly/openapi-core/-/openapi-core-1.0.0-beta.104.tgz", - "integrity": "sha512-9/b33gpW0BLpTZ0Ll6z5dN03CRvLUeyNOyeEUHrygRLeZgbAWfubqr0Z40boV7d9o1W4Uo/epKPrJenHbVqioQ==", + "version": "1.0.0-beta.105", + "resolved": "https://registry.npmjs.org/@redocly/openapi-core/-/openapi-core-1.0.0-beta.105.tgz", + "integrity": "sha512-8uYDMcqBOPhFgjRlg5uetW/E2uTVVRpk+YsJhaH78ZNuzBkQP5Waw5s8P8ym6myvHs5me8l5AdniY/ePLMT5xg==", "requires": { "@redocly/ajv": "^8.6.4", "@types/node": "^14.11.8", @@ -12745,9 +12594,9 @@ } }, "@sinclair/typebox": { - "version": "0.24.19", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.19.tgz", - "integrity": "sha512-gHJu8cdYTD5p4UqmQHrxaWrtb/jkH5imLXzuBypWhKzNkW0qfmgz+w1xaJccWVuJta1YYUdlDiPHXRTR4Ku0MQ==", + "version": "0.24.21", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.21.tgz", + "integrity": "sha512-II2SIjvxBVJmrGkkZYza/BqNjwx3PWROIA8CZ0/Hn7LV0Mv0CVpZxoyHGBVsQqfFLMv9DmArIeRHTwo76bE6oA==", "dev": true }, "@sinonjs/commons": { @@ -12920,9 +12769,9 @@ "dev": true }, "@types/node": { - "version": "18.0.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.0.4.tgz", - "integrity": "sha512-M0+G6V0Y4YV8cqzHssZpaNCqvYwlCiulmm0PwpNLF55r/+cT8Ol42CHRU1SEaYFH2rTwiiE1aYg/2g2rrtGdPA==" + "version": "18.6.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.6.1.tgz", + "integrity": "sha512-z+2vB6yDt1fNwKOeGbckpmirO+VBDuQqecXkgeIqDlaOtmKn6hPR/viQ8cxCfqLU4fTlvM3+YjM367TukWdxpg==" }, "@types/normalize-package-data": { "version": "2.4.1", @@ -12937,9 +12786,9 @@ "dev": true }, "@types/prettier": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.6.3.tgz", - "integrity": "sha512-ymZk3LEC/fsut+/Q5qejp6R9O1rMxz3XaRHDV6kX8MrGAhOSPqVARbDi+EZvInBpw+BnCX3TD240byVkOfQsHg==", + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.6.4.tgz", + "integrity": "sha512-fOwvpvQYStpb/zHMx0Cauwywu9yLDmzWiiQBC7gJyq5tYLUXFZvDG7VK1B7WBxxjBJNKFOZ0zLoOQn8vmATbhw==", "dev": true }, "@types/stack-utils": { @@ -12964,29 +12813,29 @@ "dev": true }, "@typescript-eslint/scope-manager": { - "version": "5.30.6", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.30.6.tgz", - "integrity": "sha512-Hkq5PhLgtVoW1obkqYH0i4iELctEKixkhWLPTYs55doGUKCASvkjOXOd/pisVeLdO24ZX9D6yymJ/twqpJiG3g==", + "version": "5.31.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.31.0.tgz", + "integrity": "sha512-8jfEzBYDBG88rcXFxajdVavGxb5/XKXyvWgvD8Qix3EEJLCFIdVloJw+r9ww0wbyNLOTYyBsR+4ALNGdlalLLg==", "dev": true, "requires": { - "@typescript-eslint/types": "5.30.6", - "@typescript-eslint/visitor-keys": "5.30.6" + "@typescript-eslint/types": "5.31.0", + "@typescript-eslint/visitor-keys": "5.31.0" } }, "@typescript-eslint/types": { - "version": "5.30.6", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.30.6.tgz", - "integrity": "sha512-HdnP8HioL1F7CwVmT4RaaMX57RrfqsOMclZc08wGMiDYJBsLGBM7JwXM4cZJmbWLzIR/pXg1kkrBBVpxTOwfUg==", + "version": "5.31.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.31.0.tgz", + "integrity": "sha512-/f/rMaEseux+I4wmR6mfpM2wvtNZb1p9hAV77hWfuKc3pmaANp5dLAZSiE3/8oXTYTt3uV9KW5yZKJsMievp6g==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "5.30.6", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.30.6.tgz", - "integrity": "sha512-Z7TgPoeYUm06smfEfYF0RBkpF8csMyVnqQbLYiGgmUSTaSXTP57bt8f0UFXstbGxKIreTwQCujtaH0LY9w9B+A==", + "version": "5.31.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.31.0.tgz", + "integrity": "sha512-3S625TMcARX71wBc2qubHaoUwMEn+l9TCsaIzYI/ET31Xm2c9YQ+zhGgpydjorwQO9pLfR/6peTzS/0G3J/hDw==", "dev": true, "requires": { - "@typescript-eslint/types": "5.30.6", - "@typescript-eslint/visitor-keys": "5.30.6", + "@typescript-eslint/types": "5.31.0", + "@typescript-eslint/visitor-keys": "5.31.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -12995,15 +12844,15 @@ } }, "@typescript-eslint/utils": { - "version": "5.30.6", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.30.6.tgz", - "integrity": "sha512-xFBLc/esUbLOJLk9jKv0E9gD/OH966M40aY9jJ8GiqpSkP2xOV908cokJqqhVd85WoIvHVHYXxSFE4cCSDzVvA==", + "version": "5.31.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.31.0.tgz", + "integrity": "sha512-kcVPdQS6VIpVTQ7QnGNKMFtdJdvnStkqS5LeALr4rcwx11G6OWb2HB17NMPnlRHvaZP38hL9iK8DdE9Fne7NYg==", "dev": true, "requires": { "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.30.6", - "@typescript-eslint/types": "5.30.6", - "@typescript-eslint/typescript-estree": "5.30.6", + "@typescript-eslint/scope-manager": "5.31.0", + "@typescript-eslint/types": "5.31.0", + "@typescript-eslint/typescript-estree": "5.31.0", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0" }, @@ -13027,12 +12876,12 @@ } }, "@typescript-eslint/visitor-keys": { - "version": "5.30.6", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.30.6.tgz", - "integrity": "sha512-41OiCjdL2mCaSDi2SvYbzFLlqqlm5v1ZW9Ym55wXKL/Rx6OOB1IbuFGo71Fj6Xy90gJDFTlgOS+vbmtGHPTQQA==", + "version": "5.31.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.31.0.tgz", + "integrity": "sha512-ZK0jVxSjS4gnPirpVjXHz7mgdOsZUHzNYSfTw2yPa3agfbt9YfqaBiBZFSSxeBWnpWkzCxTfUpnzA3Vily/CSg==", "dev": true, "requires": { - "@typescript-eslint/types": "5.30.6", + "@typescript-eslint/types": "5.31.0", "eslint-visitor-keys": "^3.3.0" } }, @@ -13228,9 +13077,9 @@ } }, "acorn": { - "version": "8.7.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", - "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==" + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", + "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==" }, "acorn-globals": { "version": "6.0.0", @@ -13286,6 +13135,14 @@ "uri-js": "^4.2.2" } }, + "ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "requires": { + "ajv": "^8.0.0" + } + }, "ansi-escapes": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", @@ -13439,14 +13296,13 @@ } }, "avvio": { - "version": "7.2.5", - "resolved": "https://registry.npmjs.org/avvio/-/avvio-7.2.5.tgz", - "integrity": "sha512-AOhBxyLVdpOad3TujtC9kL/9r3HnTkxwQ5ggOsYrvvZP1cCFvzHWJd5XxZDFuTn+IN8vkKSG5SEJrd27vCSbeA==", + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/avvio/-/avvio-8.2.0.tgz", + "integrity": "sha512-bbCQdg7bpEv6kGH41RO/3B2/GMMmJSo2iBK+X8AWN9mujtfUipMDfIjsgHCfpnKqoGEQrrmCDKSa5OQ19+fDmg==", "requires": { "archy": "^1.0.0", "debug": "^4.0.0", - "fastq": "^1.6.1", - "queue-microtask": "^1.1.2" + "fastq": "^1.6.1" } }, "babel-jest": { @@ -13594,14 +13450,14 @@ "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==" }, "browserslist": { - "version": "4.21.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.2.tgz", - "integrity": "sha512-MonuOgAtUB46uP5CezYbRaYKBNt2LxP0yX+Pmj4LkcDFGkn9Cbpi83d9sCjwQDErXsIJSzY5oKGDbgOlF/LPAA==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.3.tgz", + "integrity": "sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ==", "requires": { - "caniuse-lite": "^1.0.30001366", - "electron-to-chromium": "^1.4.188", + "caniuse-lite": "^1.0.30001370", + "electron-to-chromium": "^1.4.202", "node-releases": "^2.0.6", - "update-browserslist-db": "^1.0.4" + "update-browserslist-db": "^1.0.5" } }, "bser": { @@ -13668,9 +13524,9 @@ "peer": true }, "caniuse-lite": { - "version": "1.0.30001366", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001366.tgz", - "integrity": "sha512-yy7XLWCubDobokgzudpkKux8e0UOOnLHE6mlNJBzT3lZJz6s5atSEzjoL+fsCPkI0G8MP5uVdDx1ur/fXEWkZA==" + "version": "1.0.30001370", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001370.tgz", + "integrity": "sha512-3PDmaP56wz/qz7G508xzjx8C+MC2qEm4SYhSEzC9IBROo+dGXFWRuaXkWti0A9tuI00g+toiriVqxtWMgl350g==" }, "chalk": { "version": "4.1.2", @@ -13918,9 +13774,9 @@ "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==" }, "core-js": { - "version": "3.23.4", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.23.4.tgz", - "integrity": "sha512-vjsKqRc1RyAJC3Ye2kYqgfdThb3zYnx9CrqoCcjMOENMtQPC7ZViBvlDxwYU/2z2NI/IPuiXw5mT4hWhddqjzQ==", + "version": "3.24.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.24.0.tgz", + "integrity": "sha512-IeOyT8A6iK37Ep4kZDD423mpi6JfPRoPUdQwEWYiGolvn4o6j2diaRzNfDfpTdu3a5qMbrGUzKUpYpRY8jXCkQ==", "peer": true }, "core-util-is": { @@ -14130,9 +13986,9 @@ "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" }, "destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha512-3NdhDuEXnfun/z7x9GOElY49LoqVHoGScmOKwmxhsS8N5Y+Z8KyPPDnaSzqWgYt/ji4mqwfTS34Htrk0zPIXVg==" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==" }, "detect-newline": { "version": "3.1.0", @@ -14194,9 +14050,9 @@ } }, "dompurify": { - "version": "2.3.9", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.3.9.tgz", - "integrity": "sha512-3zOnuTwup4lPV/GfGS6UzG4ub9nhSYagR/5tB3AvDEwqyy5dtyCM2dVjwGDCnrPerXifBKTYh/UWCGKK7ydhhw==" + "version": "2.3.10", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.3.10.tgz", + "integrity": "sha512-o7Fg/AgC7p/XpKjf/+RC3Ok6k4St5F7Q6q6+Nnm3p2zGWioAY6dh0CbbuwOhH2UcSzKsdniE/YnE2/92JcsA+g==" }, "dot-prop": { "version": "5.3.0", @@ -14254,14 +14110,6 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "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" - } } } }, @@ -14271,9 +14119,9 @@ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" }, "electron-to-chromium": { - "version": "1.4.189", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.189.tgz", - "integrity": "sha512-dQ6Zn4ll2NofGtxPXaDfY2laIa6NyCQdqXYHdwH90GJQW0LpJJib0ZU/ERtbb0XkBEmUD2eJtagbOie3pdMiPg==" + "version": "1.4.202", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.202.tgz", + "integrity": "sha512-JYsK2ex9lmQD27kj19fhXYxzFJ/phLAkLKHv49A5UY6kMRV2xED3qMMLg/voW/+0AR6wMiI+VxlmK9NDtdxlPA==" }, "emittery": { "version": "0.10.2", @@ -14878,11 +14726,6 @@ "integrity": "sha512-LDzYKNTHhD+XOp8wGMuCkY4eTxFZOOycmpwLBiuF3r3OjOmZnURRD8t2dUAbmKuXGbo/MGggwbSjcBdp8QT0+g==", "dev": true }, - "fast-decode-uri-component": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/fast-decode-uri-component/-/fast-decode-uri-component-1.0.1.tgz", - "integrity": "sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==" - }, "fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -14918,32 +14761,15 @@ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" }, "fast-json-stringify": { - "version": "2.7.13", - "resolved": "https://registry.npmjs.org/fast-json-stringify/-/fast-json-stringify-2.7.13.tgz", - "integrity": "sha512-ar+hQ4+OIurUGjSJD1anvYSDcUflywhKjfxnsW4TBTD7+u0tJufv6DKRWoQk3vI6YBOWMoz0TQtfbe7dxbQmvA==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stringify/-/fast-json-stringify-5.1.0.tgz", + "integrity": "sha512-IybGfbUc1DQgyrp9Myhwlr1Z5vjV37mBkdgcbuvsvUxv5fayG+cHlTQQpXH9nMwUPgp+5Y3RT7QDgx5zJ9NS3A==", "requires": { - "ajv": "^6.11.0", - "deepmerge": "^4.2.2", - "rfdc": "^1.2.0", - "string-similarity": "^4.0.1" - }, - "dependencies": { - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - } + "@fastify/deepmerge": "^1.0.0", + "ajv": "^8.10.0", + "ajv-formats": "^2.1.1", + "fast-uri": "^2.1.0", + "rfdc": "^1.2.0" } }, "fast-levenshtein": { @@ -14961,64 +14787,45 @@ "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==" }, + "fast-uri": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-2.1.0.tgz", + "integrity": "sha512-qKRta6N7BWEFVlyonVY/V+BMLgFqktCUV0QjT259ekAIlbVrMaFnFLxJ4s/JPl4tou56S1BzPufI60bLe29fHA==" + }, "fastify": { - "version": "3.29.1", - "resolved": "https://registry.npmjs.org/fastify/-/fastify-3.29.1.tgz", - "integrity": "sha512-UhGmh0/J0YQetqULYfv/utvut0R6ICQvO6Oh81JvG75UbjVgueqoE6EPChB3gR5aF3dVKpT/qFTgc7zvpGTYNg==", - "requires": { - "@fastify/ajv-compiler": "^1.0.0", - "@fastify/error": "^2.0.0", - "abstract-logging": "^2.0.0", - "avvio": "^7.1.2", - "fast-json-stringify": "^2.5.2", - "find-my-way": "^4.5.0", - "flatstr": "^1.0.12", - "light-my-request": "^4.2.0", - "pino": "^6.13.0", - "process-warning": "^1.0.0", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/fastify/-/fastify-4.3.0.tgz", + "integrity": "sha512-9q5Ron8jWmX6ElFkgZH4zmIIXdnkGIu16JozWG2ohcs7th5rAo1ymNi+rn6xCmbWc6jl9lf+9OxVe93LOg6/2w==", + "requires": { + "@fastify/ajv-compiler": "^3.1.1", + "@fastify/error": "^3.0.0", + "@fastify/fast-json-stringify-compiler": "^4.0.0", + "abstract-logging": "^2.0.1", + "avvio": "^8.1.3", + "find-my-way": "^7.0.0", + "light-my-request": "^5.0.0", + "pino": "^8.0.0", + "process-warning": "^2.0.0", "proxy-addr": "^2.0.7", - "rfdc": "^1.1.4", - "secure-json-parse": "^2.0.0", - "semver": "^7.3.2", - "tiny-lru": "^8.0.1" + "rfdc": "^1.3.0", + "secure-json-parse": "^2.4.0", + "semver": "^7.3.7", + "tiny-lru": "^8.0.2" }, "dependencies": { - "pino": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/pino/-/pino-6.14.0.tgz", - "integrity": "sha512-iuhEDel3Z3hF9Jfe44DPXR8l07bhjuFY3GMHIXbjnY9XcafbyDDwl2sN2vw2GjMPf5Nkoe+OFao7ffn9SXaKDg==", - "requires": { - "fast-redact": "^3.0.0", - "fast-safe-stringify": "^2.0.8", - "flatstr": "^1.0.12", - "pino-std-serializers": "^3.1.0", - "process-warning": "^1.0.0", - "quick-format-unescaped": "^4.0.3", - "sonic-boom": "^1.0.2" - } - }, - "pino-std-serializers": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-3.2.0.tgz", - "integrity": "sha512-EqX4pwDPrt3MuOAAUBMU0Tk5kR/YcCM5fNPEzgCO2zJ5HfX0vbiH9HbJglnyeQsN96Kznae6MWD47pZB5avTrg==" - }, - "sonic-boom": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-1.4.1.tgz", - "integrity": "sha512-LRHh/A8tpW7ru89lrlkU4AszXt1dbwSjVWguGrmlxE7tawVmDBlI1PILMkXAxJTwqhgsEeTHzj36D5CmHgQmNg==", - "requires": { - "atomic-sleep": "^1.0.0", - "flatstr": "^1.0.12" - } + "@fastify/error": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@fastify/error/-/error-3.0.0.tgz", + "integrity": "sha512-dPRyT40GiHRzSCll3/Jn2nPe25+E1VXc9tDwRAIKwFCxd5Np5wzgz1tmooWG3sV0qKgrBibihVoCna2ru4SEFg==" } } }, "fastify-disablecache": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/fastify-disablecache/-/fastify-disablecache-2.0.8.tgz", - "integrity": "sha512-LziIkugYZISVJuDoc2cQADsAGNG2AdQDcaoNT5vNqbTQweh3CedrPILsMOslnSPCQEeJ+T1YP+uIGh+34ci4ag==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/fastify-disablecache/-/fastify-disablecache-3.0.0.tgz", + "integrity": "sha512-lNfimfSjHUMzvtVl2mclbbxBhglQMCxbFUCsO8MlIX0ZXHpxCIc+MHi1dk0Bkuu3gy5nzxNTH3TB9C4IkEZt2w==", "requires": { - "fastify-plugin": "^3.0.0" + "fastify-plugin": "^3.0.1" }, "dependencies": { "fastify-plugin": { @@ -15029,11 +14836,11 @@ } }, "fastify-floc-off": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/fastify-floc-off/-/fastify-floc-off-1.0.7.tgz", - "integrity": "sha512-+OEXOFTLekQI+h+caQ68QTaW0KNqrYDAv4KCKmoQQE8heKTt21KQEJe7IGO7dg8/tmLsKQCtwLNbiCGJG6DkGw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fastify-floc-off/-/fastify-floc-off-2.0.0.tgz", + "integrity": "sha512-gis+pjSbHCUMgaiTsMEDNxcTYSZ+dDdyPA2dZsSxDafU7jYM+/l2E42alP/px1bv8GbklSS5XFUHh7N+hCEYew==", "requires": { - "fastify-plugin": "^3.0.0" + "fastify-plugin": "^3.0.1" }, "dependencies": { "fastify-plugin": { @@ -15102,14 +14909,12 @@ } }, "find-my-way": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/find-my-way/-/find-my-way-4.5.1.tgz", - "integrity": "sha512-kE0u7sGoUFbMXcOG/xpkmz4sRLCklERnBcg7Ftuu1iAxsfEt2S46RLJ3Sq7vshsEy2wJT2hZxE58XZK27qa8kg==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/find-my-way/-/find-my-way-7.0.0.tgz", + "integrity": "sha512-NHVohYPYRXgj6jxXVRwm4iMQjA2ggJpyewHz7Nq7hvBnHoYJJIyHuxNzs8QLPTLQfoqxZzls2g6Zm79XMbhXjA==", "requires": { - "fast-decode-uri-component": "^1.0.1", "fast-deep-equal": "^3.1.3", - "safe-regex2": "^2.0.0", - "semver-store": "^0.3.0" + "safe-regex2": "^2.0.0" } }, "find-up": { @@ -15137,11 +14942,6 @@ "rimraf": "^3.0.2" } }, - "flatstr": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/flatstr/-/flatstr-1.0.12.tgz", - "integrity": "sha512-4zPxDyhCyiN2wIAtSLI6gc82/EjqZc1onI4Mz/l0pWrAlsSfYH/2ZIcU+e3oA2wDwbzIWNKwa23F8rh6+DRWkw==" - }, "flatted": { "version": "3.2.6", "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.6.tgz", @@ -15208,14 +15008,6 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "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" - } } } }, @@ -15384,9 +15176,9 @@ } }, "globals": { - "version": "13.16.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.16.0.tgz", - "integrity": "sha512-A1lrQfpNF+McdPOnnFqY3kSN0AFTy485bTi1bkLk4mVPODIUEcSfhHgRqA+QdXPksrSTTztYXx37NFV+GpGk3Q==", + "version": "13.17.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", + "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", "dev": true, "requires": { "type-fest": "^0.20.2" @@ -15485,9 +15277,9 @@ "dev": true }, "helmet": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/helmet/-/helmet-5.1.0.tgz", - "integrity": "sha512-klsunXs8rgNSZoaUrNeuCiWUxyc+wzucnEnFejUg3/A+CaF589k9qepLZZ1Jehnzig7YbD4hEuscGXuBY3fq+g==" + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/helmet/-/helmet-5.1.1.tgz", + "integrity": "sha512-/yX0oVZBggA9cLJh8aw3PPCfedBnbd7J2aowjzsaWwZh7/UFY0nccn/aHAggIgWUFfnykX8GKd3a1pSbrmlcVQ==" }, "help-me": { "version": "4.0.1", @@ -15497,6 +15289,19 @@ "requires": { "glob": "^8.0.0", "readable-stream": "^3.6.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } } }, "hoist-non-react-statics": { @@ -15792,11 +15597,6 @@ "has-tostringtag": "^1.0.0" } }, - "is-deflate": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-deflate/-/is-deflate-1.0.0.tgz", - "integrity": "sha512-YDoFpuZWu1VRXlsnlYMzKyVRITXj7Ej/V9gXQ2/pAe7X1J7M/RNOqaIYi6qUn+B7nGyB9pDXrv02dsB58d2ZAQ==" - }, "is-electron": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/is-electron/-/is-electron-2.2.1.tgz", @@ -15828,11 +15628,6 @@ "is-extglob": "^2.1.1" } }, - "is-gzip": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-gzip/-/is-gzip-2.0.0.tgz", - "integrity": "sha512-jtO4Njg6q58zDo/Pu4027beSZ0VdsZlt8/5Moco6yAg+DIxb5BK/xUYqYG2+MD4+piKldXJNHxRkhEYI2fvrxA==" - }, "is-html": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-html/-/is-html-2.0.0.tgz", @@ -15946,11 +15741,6 @@ "call-bind": "^1.0.2" } }, - "is-zip": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-zip/-/is-zip-1.0.0.tgz", - "integrity": "sha512-aym/dLqHZVMW/+bbNrA/eTeWTyW4fE6koLSoFSsM2GF3/pho7aPCcmHFWFLvzHu7MDuf67domYn36GDwU/cJkQ==" - }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -16675,14 +16465,6 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "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" - } } } }, @@ -16827,13 +16609,12 @@ } }, "light-my-request": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/light-my-request/-/light-my-request-4.10.1.tgz", - "integrity": "sha512-l+zWk0HXGhGzY7IYTZnYEqIpj3Mpcyk2f8+FkKUyREywvaiWCf2jyQVxpasKRsploY/nVpoqTlxx72CIeQNcIQ==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/light-my-request/-/light-my-request-5.3.0.tgz", + "integrity": "sha512-AdBNkWTD+CnFYGa6lCowLU0DMNBelq58vQXl1jWOvbMsMVzZzJyN5K94VOI2EhqLtskJNUi2ALgI8KNmXl+74A==", "requires": { - "ajv": "^8.1.0", "cookie": "^0.5.0", - "process-warning": "^1.0.0", + "process-warning": "^2.0.0", "set-cookie-parser": "^2.4.1" } }, @@ -17462,9 +17243,9 @@ "integrity": "sha512-VuCaZZAjReZ3vUwgOB8LxAosIurDiAW0s13rI1YwmaP++jvcxP77AWoQvenZebpCA2m8WC1/EosPYPMjnRAp/w==" }, "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "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" } @@ -17502,9 +17283,9 @@ } }, "openapi-types": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/openapi-types/-/openapi-types-10.0.0.tgz", - "integrity": "sha512-Y8xOCT2eiKGYDzMW9R4x5cmfc3vGaaI4EL2pwhDmodWw1HlK18YcZ4uJxc7Rdp7/gGzAygzH9SXr6GKYIXbRcQ==" + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/openapi-types/-/openapi-types-11.1.0.tgz", + "integrity": "sha512-ZW+Jf12flFF6DXSij8DGL3svDA4RtSyHXjC/xB/JAh18gg3uVfVIFLvCfScUMowrpvlkxsMMbErakbth2g3/iQ==" }, "opencollective-postinstall": { "version": "2.0.3", @@ -17681,14 +17462,6 @@ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, - "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" - } - }, "through2": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", @@ -17726,9 +17499,9 @@ "integrity": "sha512-0wVyH0cKohzBQ5Gi2V1BuxYpxWfxF3cSqfFXfPIpl5tl9XLS5z4ogqhUCD20AbHi0h9aJkqXNJnkVev6gwh2ag==" }, "pino": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/pino/-/pino-8.2.0.tgz", - "integrity": "sha512-HS7+vUpOYEJcNZkyb2ujN2sSayXLyz5XEvDZw4vrxlxHDe34qIDiNf2s+0dD/q/eqEubfxwAItYhY6zCNVZBVw==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/pino/-/pino-8.3.0.tgz", + "integrity": "sha512-CUOOU5sYgyLVijf7qsOWkPLOdzIXaVE9Oyl6zAkjgJn30uGBFUtrRaaCzbtOSJ1I6BqfanBqBttbazEJIwHkJg==", "requires": { "atomic-sleep": "^1.0.0", "fast-redact": "^3.1.1", @@ -17739,15 +17512,8 @@ "quick-format-unescaped": "^4.0.3", "real-require": "^0.1.0", "safe-stable-stringify": "^2.3.1", - "sonic-boom": "^3.0.0", + "sonic-boom": "^3.1.0", "thread-stream": "^2.0.0" - }, - "dependencies": { - "process-warning": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-2.0.0.tgz", - "integrity": "sha512-+MmoAXoUX+VTHAlwns0h+kFUWFs/3FZy+ZuchkgjyOu3oioLAo2LB5aCfKPh2+P9O18i3m43tUEv3YqttSy0Ww==" - } } }, "pino-abstract-transport": { @@ -17759,14 +17525,6 @@ "split2": "^4.0.0" }, "dependencies": { - "readable-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.1.0.tgz", - "integrity": "sha512-sVisi3+P2lJ2t0BPbpK629j8wRW06yKGJUcaLAGXPAUhyUxVJm7VsCTit1PFgT4JHUDMrGNR+ZjSKpzGaRF3zw==", - "requires": { - "abort-controller": "^3.0.0" - } - }, "split2": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/split2/-/split2-4.1.0.tgz", @@ -17801,15 +17559,6 @@ "resolved": "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-1.0.0.tgz", "integrity": "sha512-Ve8ubhrXRdnuCJ5bQSQpP3uaV43K1PMcOfSRC1pqHgRZommXCgsXwh08jVC5NpjwScE23BPDwDvVg4cov3mwjw==", "dev": true - }, - "readable-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.1.0.tgz", - "integrity": "sha512-sVisi3+P2lJ2t0BPbpK629j8wRW06yKGJUcaLAGXPAUhyUxVJm7VsCTit1PFgT4JHUDMrGNR+ZjSKpzGaRF3zw==", - "dev": true, - "requires": { - "abort-controller": "^3.0.0" - } } } }, @@ -17921,18 +17670,18 @@ } }, "playwright": { - "version": "1.23.4", - "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.23.4.tgz", - "integrity": "sha512-NUPOLMpd8WydmwZFllST/YZ7cImgDDDrvcaq7Gj2vAjNg0jYCndFJt6HHtbkOPSIlRo4BaQYlbFx6meq1r1FXQ==", + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.24.1.tgz", + "integrity": "sha512-ALAdckGTTZq6cPD/NlWE+OO5cgNBi9BHKk6FoDztlcVNJ07F1buwydTuf8wBu1Jzi+SGOpEfLR/83+2fS84ksQ==", "dev": true, "requires": { - "playwright-core": "1.23.4" + "playwright-core": "1.24.1" } }, "playwright-core": { - "version": "1.23.4", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.23.4.tgz", - "integrity": "sha512-h5V2yw7d8xIwotjyNrkLF13nV9RiiZLHdXeHo+nVJIYGVlZ8U2qV0pMxNJKNTvfQVT0N8/A4CW6/4EW2cOcTiA==", + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.24.1.tgz", + "integrity": "sha512-1RoSDe/oTQS1Ct7Pb8i+vcFKbKYpmVIBXk0IUiD8RvCUMnNl7EJF1OSQ9E8TZ5RYamWkW2Psir9e8Doyz1FnhQ==", "dev": true }, "pluralize": { @@ -18003,9 +17752,9 @@ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, "process-warning": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-1.0.0.tgz", - "integrity": "sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q==" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-2.0.0.tgz", + "integrity": "sha512-+MmoAXoUX+VTHAlwns0h+kFUWFs/3FZy+ZuchkgjyOu3oioLAo2LB5aCfKPh2+P9O18i3m43tUEv3YqttSy0Ww==" }, "progress": { "version": "2.0.3", @@ -18089,6 +17838,16 @@ "readable-stream": "^3.1.1", "stream-shift": "^1.0.0" } + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } } } }, @@ -18106,7 +17865,8 @@ "queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true }, "quick-format-unescaped": { "version": "4.0.4", @@ -18355,13 +18115,11 @@ } }, "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.1.0.tgz", + "integrity": "sha512-sVisi3+P2lJ2t0BPbpK629j8wRW06yKGJUcaLAGXPAUhyUxVJm7VsCTit1PFgT4JHUDMrGNR+ZjSKpzGaRF3zw==", "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "abort-controller": "^3.0.0" } }, "readable-web-to-node-stream": { @@ -18370,6 +18128,18 @@ "integrity": "sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==", "requires": { "readable-stream": "^3.6.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } } }, "readdir-scoped-modules": { @@ -18693,29 +18463,24 @@ "lru-cache": "^6.0.0" } }, - "semver-store": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/semver-store/-/semver-store-0.3.0.tgz", - "integrity": "sha512-TcZvGMMy9vodEFSse30lWinkj+JgOBvPn8wRItpQRSayhc+4ssDs335uklkfvQQJgL/WvmHLVj4Ycv2s7QCQMg==" - }, "send": { - "version": "0.17.2", - "resolved": "https://registry.npmjs.org/send/-/send-0.17.2.tgz", - "integrity": "sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==", + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", "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.8.1", + "http-errors": "2.0.0", "mime": "1.6.0", "ms": "2.1.3", - "on-finished": "~2.3.0", + "on-finished": "2.4.1", "range-parser": "~1.2.1", - "statuses": "~1.5.0" + "statuses": "2.0.1" }, "dependencies": { "debug": { @@ -18732,28 +18497,6 @@ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" } } - }, - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==" - }, - "http-errors": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", - "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.1" - } - }, - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==" } } }, @@ -18767,9 +18510,9 @@ } }, "set-cookie-parser": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.5.0.tgz", - "integrity": "sha512-cHMAtSXilfyBePduZEBVPTCftTQWz6ehWJD5YNUg4mqvRosrrjKbo4WS8JkB0/RxonMoohHm7cOGH60mDkRQ9w==" + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.5.1.tgz", + "integrity": "sha512-1jeBGaKNGdEq4FgIrORu/N570dwoPYio8lSoYLWmX7sQ//0JY08Xh9o5pBcgmHQ/MbsYp/aZnOe1s1lIsbLprQ==" }, "setimmediate": { "version": "1.0.5", @@ -18908,9 +18651,9 @@ "integrity": "sha512-tf+h5W1IrjNm/9rKKj0JU2MDMruiopx0jjVA5zCdBtcGjfp0+c5rHw/zADLC3IeKlGHtVbHtpfzvYA0OYT+HKg==" }, "sonic-boom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-3.0.0.tgz", - "integrity": "sha512-p5DiZOZHbJ2ZO5MADczp5qrfOd3W5Vr2vHxfCpe7G4AzPwVOweIjbfgku8wSQUuk+Y5Yuo8W7JqRe6XKmKistg==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-3.2.0.tgz", + "integrity": "sha512-SbbZ+Kqj/XIunvIAgUZRlqd6CGQYq71tRRbXR92Za8J/R3Yh4Av+TWENiSiEgnlwckYLyP0YZQWVfyNC0dzLaA==", "requires": { "atomic-sleep": "^1.0.0" } @@ -18997,6 +18740,19 @@ "dev": true, "requires": { "readable-stream": "^3.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } } }, "sprintf-js": { @@ -19037,11 +18793,18 @@ "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==" }, "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==", + "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.2.0" + "safe-buffer": "~5.1.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + } } }, "string-length": { @@ -19054,19 +18817,6 @@ "strip-ansi": "^6.0.0" } }, - "string-similarity": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/string-similarity/-/string-similarity-4.0.4.tgz", - "integrity": "sha512-/q/8Q4Bl4ZKAPjj8WerIBJWALKkaPRfrvhfF8k/B23i4nzrlRj2/go1m90In7nG/3XDSbOo0+pu6RvCTM9RGMQ==" - }, - "string-to-stream": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/string-to-stream/-/string-to-stream-3.0.1.tgz", - "integrity": "sha512-Hl092MV3USJuUCC6mfl9sPzGloA3K5VwdIeJjYIkXY/8K+mUvaeEabWJgArp+xXrsWxCajeT2pc4axbVhIZJyg==", - "requires": { - "readable-stream": "^3.4.0" - } - }, "string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -19408,6 +19158,19 @@ "dev": true, "requires": { "readable-stream": "3" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } } }, "timestring": { @@ -19639,22 +19402,6 @@ "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", "dev": true }, - "under-pressure": { - "version": "5.8.1", - "resolved": "https://registry.npmjs.org/under-pressure/-/under-pressure-5.8.1.tgz", - "integrity": "sha512-5c1e0HoNmF2J3NQS4j7j5M5cu5GLR21FqvmOI/V6R+rhwS+HH0ocEFwCYC0CeKbLL/b1NyvMCQzlx15O9CoaEQ==", - "requires": { - "@fastify/error": "^2.0.0", - "fastify-plugin": "^3.0.0" - }, - "dependencies": { - "fastify-plugin": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/fastify-plugin/-/fastify-plugin-3.0.1.tgz", - "integrity": "sha512-qKcDXmuZadJqdTm6vlCqioEbyewF60b/0LOFCcYN1B6BIZGlYJumWWOYs70SFYLDAH4YqdE1cxH/RKMG7rFxgA==" - } - } - }, "underscore": { "version": "1.13.4", "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.4.tgz", @@ -19677,9 +19424,9 @@ "integrity": "sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==" }, "update-browserslist-db": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.4.tgz", - "integrity": "sha512-jnmO2BEGUjsMOe/Fg9u0oczOe/ppIDZPebzccl1yDWGLFP16Pa1/RM5wEoKYPG2zstNcDuAStejyxsOuKINdGA==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.5.tgz", + "integrity": "sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q==", "requires": { "escalade": "^3.1.1", "picocolors": "^1.0.0" @@ -19800,9 +19547,9 @@ "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==" }, "webpack": { - "version": "5.73.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.73.0.tgz", - "integrity": "sha512-svjudQRPPa0YiOYa2lM/Gacw0r6PvxptHj4FuEKQ2kX05ZLkjbVc5MnPs6its5j7IZljnIqSVo/OsY2X0IpHGA==", + "version": "5.74.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.74.0.tgz", + "integrity": "sha512-A2InDwnhhGN4LYctJj6M1JEaGL7Luj6LOmyBHjcI8529cm5p6VXiTIW2sn6ffvEAKmveLzvu4jrihwXtPojlAA==", "peer": true, "requires": { "@types/eslint-scope": "^3.7.3", @@ -19810,11 +19557,11 @@ "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/wasm-edit": "1.11.1", "@webassemblyjs/wasm-parser": "1.11.1", - "acorn": "^8.4.1", + "acorn": "^8.7.1", "acorn-import-assertions": "^1.7.6", "browserslist": "^4.14.5", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.9.3", + "enhanced-resolve": "^5.10.0", "es-module-lexer": "^0.9.0", "eslint-scope": "5.1.1", "events": "^3.2.0", @@ -19827,7 +19574,7 @@ "schema-utils": "^3.1.0", "tapable": "^2.1.1", "terser-webpack-plugin": "^5.1.3", - "watchpack": "^2.3.1", + "watchpack": "^2.4.0", "webpack-sources": "^3.2.3" }, "dependencies": { @@ -19940,9 +19687,9 @@ } }, "ws": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.0.tgz", - "integrity": "sha512-JDAgSYQ1ksuwqfChJusw1LSJ8BizJ2e/vVu5Lxjq3YvNJNlROv1ui4i+c/kUUrPheBvQl4c5UbERhTwKa6QBJQ==", + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.1.tgz", + "integrity": "sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA==", "requires": {} }, "xml-name-validator": { diff --git a/package.json b/package.json index cafa0cc9f..6f5dd4949 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,7 @@ "jest": "jest", "jest:coverage": "jest --coverage", "lint": "eslint . --cache --ext js,jsx,ts,tsx --ignore-path .gitignore", - "lint:licenses": "license-checker --direct --excludePackages=\"caniuse-lite@1.0.30001366;duck@0.1.12;language-subtag-registry@0.3.22;tesseract.js-core@2.2.0;url-template@2.0.8\" --onlyAllow=\"0BSD;Apache-2.0;BSD-2-Clause;BSD-3-Clause;ISC;MIT;Python-2.0;Unlicense\" --production --summary", + "lint:licenses": "license-checker --direct --excludePackages=\"caniuse-lite@1.0.30001370;duck@0.1.12;language-subtag-registry@0.3.22;tesseract.js-core@2.2.0;url-template@2.0.8\" --onlyAllow=\"0BSD;Apache-2.0;BSD-2-Clause;BSD-3-Clause;ISC;MIT;Python-2.0;Unlicense\" --production --summary", "lint:prettier": "prettier . -w -u", "lint:prettier:ci": "prettier . -c -u", "prepare": "husky install", @@ -81,27 +81,28 @@ "license-checker": "^25.0.1", "nodemon": "^2.0.19", "pino-pretty": "^8.1.0", - "playwright": "^1.23.4", + "playwright": "^1.24.1", "prettier": "^2.7.1" }, "dependencies": { - "@fastify/accepts": "^3.0.0", + "@fastify/accepts": "^4.0.0", "@fastify/autoload": "^5.1.0", - "@fastify/bearer-auth": "^7.0.2", - "@fastify/compress": "^5.0.0", - "@fastify/cors": "^7.0.0", - "@fastify/helmet": "^8.1.0", - "@fastify/rate-limit": "^6.0.1", - "@fastify/sensible": "^4.1.0", - "@fastify/static": "^5.0.2", - "@fastify/swagger": "^6.1.0", + "@fastify/bearer-auth": "^8.0.1", + "@fastify/compress": "^6.1.0", + "@fastify/cors": "^8.0.0", + "@fastify/helmet": "^9.1.0", + "@fastify/rate-limit": "^7.3.0", + "@fastify/sensible": "^5.1.0", + "@fastify/static": "^6.4.1", + "@fastify/swagger": "^7.4.1", + "@fastify/under-pressure": "^7.0.0", "cssesc": "^3.0.0", "cssom": "^0.5.0", "dotenv": "^16.0.1", "env-schema": "^5.0.0", - "fastify": "^3.29.1", - "fastify-disablecache": "^2.0.8", - "fastify-floc-off": "^1.0.7", + "fastify": "^4.3.0", + "fastify-disablecache": "^3.0.0", + "fastify-floc-off": "^2.0.0", "fastify-plugin": "^4.0.0", "file-stream-rotator": "^0.6.1", "file-type": "^16.5.4", @@ -115,12 +116,11 @@ "node-poppler": "^5.1.6", "node-unrtf": "^2.0.9", "physical-cpu-count": "^2.0.0", - "pino": "^8.2.0", + "pino": "^8.3.0", "raw-body": "^2.5.1", "redoc": "^2.0.0-rc.72", "secure-json-parse": "^2.4.0", "tesseract.js": "^2.1.5", - "under-pressure": "^5.8.1", "upath": "^2.0.1" } } diff --git a/src/app.js b/src/app.js index 4301d230b..0266b8606 100644 --- a/src/app.js +++ b/src/app.js @@ -17,8 +17,7 @@ const main = async () => { const config = await getConfig(); const server = Fastify(config.fastifyInit); - server.register(startServer, config); - await server.listen(config.fastify); + await server.register(startServer, config).listen(config.fastify); ["SIGINT", "SIGTERM"].forEach((signal) => { // Use once() so that double signals exits the app diff --git a/src/config/index.js b/src/config/index.js index 1f1ca3da7..c090a6089 100644 --- a/src/config/index.js +++ b/src/config/index.js @@ -154,7 +154,6 @@ async function getConfig() { const config = { fastify: { - host: env.SERVICE_HOST, port: env.SERVICE_PORT, }, fastifyInit: { @@ -183,6 +182,9 @@ async function getConfig() { }, /* istanbul ignore next: pino functions not explicitly tested */ res(res) { + // Required for the statusCode to be logged + // https://github.com/pinojs/pino-std-serializers/blob/9da36144d43aabc7933f0504b02fef5a341583c2/lib/res.js#L37 + res.headersSent = true; return pino.stdSerializers.res(res); }, }, @@ -203,7 +205,6 @@ async function getConfig() { }, rateLimit: { continueExceeding: true, - // Ensure rate limit also applies to 4xx and 5xx responses hook: "onSend", max: env.RATE_LIMIT_MAX_CONNECTIONS_PER_MIN || 1000, timeWindow: 60000, @@ -318,6 +319,11 @@ async function getConfig() { }, }; + // Ensure API listens on both IPv4 and IPv6 addresses + if (env.SERVICE_HOST) { + config.fastify.host = env.SERVICE_HOST; + } + if (env.LOG_ROTATION_FILENAME) { // Rotation options: https://github.com/rogerc/file-stream-rotator/#options config.fastifyInit.logger.stream = rotatingLogStream.getStream({ diff --git a/src/plugins/docx-to-html/index.js b/src/plugins/docx-to-html/index.js index bdeaa4db8..0e1a2785b 100644 --- a/src/plugins/docx-to-html/index.js +++ b/src/plugins/docx-to-html/index.js @@ -12,6 +12,7 @@ const mammoth = require("mammoth"); async function plugin(server) { server.addHook("onRequest", async (req) => { req.conversionResults = { body: undefined }; + return req; }); server.addHook("preHandler", async (req, res) => { @@ -42,13 +43,13 @@ async function plugin(server) { * Mammoth will throw if the .docx file provided * by client is malformed, thus client error code */ - throw res.badRequest(); + throw server.httpErrors.badRequest(); } }); } module.exports = fp(plugin, { - fastify: "3.x", + fastify: "4.x", name: "docx-to-html", - dependencies: ["fastify-sensible"], + dependencies: ["@fastify/sensible"], }); diff --git a/src/plugins/docx-to-html/plugin.test.js b/src/plugins/docx-to-html/plugin.test.js index 862686c40..c888c3090 100644 --- a/src/plugins/docx-to-html/plugin.test.js +++ b/src/plugins/docx-to-html/plugin.test.js @@ -19,11 +19,11 @@ describe("DOCX-to-HTML Conversion Plugin", () => { } ); - server.register(sensible).register(plugin); + await server.register(sensible).register(plugin); server.post("/", async (req, res) => { res.header("content-type", "application/json"); - res.send(req.conversionResults); + return req.conversionResults; }); await server.ready(); diff --git a/src/plugins/docx-to-txt/index.js b/src/plugins/docx-to-txt/index.js index cae6943c1..571bc039b 100644 --- a/src/plugins/docx-to-txt/index.js +++ b/src/plugins/docx-to-txt/index.js @@ -11,6 +11,7 @@ const mammoth = require("mammoth"); async function plugin(server) { server.addHook("onRequest", async (req) => { req.conversionResults = { body: undefined }; + return req; }); server.addHook("preHandler", async (req, res) => { @@ -23,13 +24,13 @@ async function plugin(server) { * Mammoth will throw if the .docx file provided * by client is malformed, thus client error code */ - throw res.badRequest(); + throw server.httpErrors.badRequest(); } }); } module.exports = fp(plugin, { - fastify: "3.x", + fastify: "4.x", name: "docx-to-txt", - dependencies: ["fastify-sensible"], + dependencies: ["@fastify/sensible"], }); diff --git a/src/plugins/docx-to-txt/plugin.test.js b/src/plugins/docx-to-txt/plugin.test.js index a7e51d76a..822af8eaf 100644 --- a/src/plugins/docx-to-txt/plugin.test.js +++ b/src/plugins/docx-to-txt/plugin.test.js @@ -19,11 +19,11 @@ describe("DOCX-to-TXT Conversion Plugin", () => { } ); - server.register(sensible).register(plugin); + await server.register(sensible).register(plugin); server.post("/", async (req, res) => { res.header("content-type", "application/json"); - res.send(req.conversionResults); + return req.conversionResults; }); await server.ready(); diff --git a/src/plugins/embed-html-images/index.js b/src/plugins/embed-html-images/index.js index 868948d88..aeea5c7a3 100644 --- a/src/plugins/embed-html-images/index.js +++ b/src/plugins/embed-html-images/index.js @@ -45,6 +45,6 @@ async function plugin(server, options) { } module.exports = fp(plugin, { - fastify: "3.x", + fastify: "4.x", name: "embed-html-images", }); diff --git a/src/plugins/embed-html-images/plugin.test.js b/src/plugins/embed-html-images/plugin.test.js index 11e79e9e5..6a4826817 100644 --- a/src/plugins/embed-html-images/plugin.test.js +++ b/src/plugins/embed-html-images/plugin.test.js @@ -29,12 +29,11 @@ describe("Embed-HTML-Images Plugin", () => { test("Should embed images into HTML", async () => { const altConfig = await getConfig(); altConfig.poppler.tempDirectory = "./test_resources/test_files/"; - server.post("/", async (req, res) => { - res.send(await server.embedHtmlImages(req.body)); + server.post("/", async (req) => { + const result = await server.embedHtmlImages(req.body); + return result; }); - server.register(plugin, altConfig.poppler); - - await server.ready(); + await server.register(plugin, altConfig.poppler).ready(); const response = await server.inject({ method: "POST", @@ -58,12 +57,11 @@ describe("Embed-HTML-Images Plugin", () => { }); test("Should throw error if it cannot find images to embed in specified directory", async () => { - server.post("/", async (req, res) => { - res.send(await server.embedHtmlImages(req.body)); + server.post("/", async (req) => { + const result = await server.embedHtmlImages(req.body); + return result; }); - server.register(plugin, config.poppler); - - await server.ready(); + await server.register(plugin, config.poppler).ready(); const response = await server.inject({ method: "POST", diff --git a/src/plugins/image-to-txt/index.js b/src/plugins/image-to-txt/index.js index fe46e969f..d7914caf1 100644 --- a/src/plugins/image-to-txt/index.js +++ b/src/plugins/image-to-txt/index.js @@ -72,4 +72,4 @@ async function plugin(server, options) { }); } -module.exports = fp(plugin, { fastify: "3.x", name: "image-to-txt" }); +module.exports = fp(plugin, { fastify: "4.x", name: "image-to-txt" }); diff --git a/src/plugins/image-to-txt/plugin.test.js b/src/plugins/image-to-txt/plugin.test.js index 4de90ed3e..d3d9717f8 100644 --- a/src/plugins/image-to-txt/plugin.test.js +++ b/src/plugins/image-to-txt/plugin.test.js @@ -20,7 +20,7 @@ describe("Image-To-TXT Conversion Plugin", () => { return res; }); - server.register(plugin, config.tesseract); + await server.register(plugin, config.tesseract); server.post("/", async (req, res) => { res.header("content-type", "text/plain, charset=utf-8"); @@ -29,7 +29,7 @@ describe("Image-To-TXT Conversion Plugin", () => { data: { text }, } = await server.tesseract.addJob("recognize", req.body); - res.send(text); + return text; }); await server.ready(); diff --git a/src/plugins/pdf-to-html/index.js b/src/plugins/pdf-to-html/index.js index 3914678d6..c863f3628 100644 --- a/src/plugins/pdf-to-html/index.js +++ b/src/plugins/pdf-to-html/index.js @@ -30,11 +30,12 @@ const parseString = require("../../utils/parse-string"); async function plugin(server, options) { server.addHook("onRequest", async (req) => { req.conversionResults = { body: undefined }; + return req; }); // "onSend" hook used instead of "onResponse" ensures // cancelled request temp data is also removed - server.addHook("onSend", async (req, res) => { + server.addHook("onSend", async (req, res, payload) => { if (req?.conversionResults?.docLocation) { // Remove files from temp directory after response sent const files = glob.sync( @@ -47,7 +48,7 @@ async function plugin(server, options) { await Promise.all(files.map((file) => fs.unlink(file))); } - return res; + return payload; }); server.addHook("preHandler", async (req, res) => { @@ -132,7 +133,7 @@ async function plugin(server, options) { */ /* istanbul ignore else: unable to test unknown errors */ if (/Syntax Error:/.test(err)) { - throw res.badRequest(); + throw server.httpErrors.badRequest(); } else { throw err; } @@ -168,7 +169,7 @@ async function plugin(server, options) { } module.exports = fp(plugin, { - fastify: "3.x", + fastify: "4.x", name: "pdf-to-html", - dependencies: ["fastify-sensible"], + dependencies: ["@fastify/sensible"], }); diff --git a/src/plugins/pdf-to-html/plugin.test.js b/src/plugins/pdf-to-html/plugin.test.js index 81208e818..18f0ec817 100644 --- a/src/plugins/pdf-to-html/plugin.test.js +++ b/src/plugins/pdf-to-html/plugin.test.js @@ -29,11 +29,11 @@ describe("PDF-to-HTML Conversion Plugin", () => { return res; }); - server.register(sensible).register(plugin, config.poppler); + await server.register(sensible).register(plugin, config.poppler); server.post("/", async (req, res) => { res.header("content-type", "application/json"); - res.send(req.conversionResults); + return req.conversionResults; }); await server.ready(); diff --git a/src/plugins/pdf-to-txt/index.js b/src/plugins/pdf-to-txt/index.js index 68ae2f5eb..c0c1c3d8d 100644 --- a/src/plugins/pdf-to-txt/index.js +++ b/src/plugins/pdf-to-txt/index.js @@ -27,11 +27,12 @@ const parseString = require("../../utils/parse-string"); async function plugin(server, options) { server.addHook("onRequest", async (req) => { req.conversionResults = { body: undefined }; + return req; }); // "onSend" hook used instead of "onResponse" ensures // cancelled request temp data is also removed - server.addHook("onSend", async (req, res) => { + server.addHook("onSend", async (req, res, payload) => { if (req?.conversionResults?.docLocation) { // Remove files from temp directory after response sent const files = glob.sync( @@ -44,7 +45,7 @@ async function plugin(server, options) { await Promise.all(files.map((file) => fs.unlink(file))); } - return res; + return payload; }); server.addHook("preHandler", async (req, res) => { @@ -53,7 +54,7 @@ async function plugin(server, options) { * and produces results, so catch them here */ if (req.body === undefined || Object.keys(req.body).length === 0) { - throw res.badRequest(); + throw server.httpErrors.badRequest(); } // Define any default settings the plugin should have to get up and running @@ -131,7 +132,7 @@ async function plugin(server, options) { */ /* istanbul ignore else: unable to test unknown errors */ if (/Syntax Error:/.test(err)) { - throw res.badRequest(); + throw server.httpErrors.badRequest(); } else { throw err; } @@ -193,7 +194,7 @@ async function plugin(server, options) { */ /* istanbul ignore else: unable to test unknown errors */ if (/Syntax Error:/.test(err)) { - throw res.badRequest(); + throw server.httpErrors.badRequest(); } else { throw err; } @@ -216,7 +217,7 @@ async function plugin(server, options) { } module.exports = fp(plugin, { - fastify: "3.x", + fastify: "4.x", name: "pdf-to-txt", - dependencies: ["fastify-sensible"], + dependencies: ["@fastify/sensible"], }); diff --git a/src/plugins/pdf-to-txt/plugin.test.js b/src/plugins/pdf-to-txt/plugin.test.js index d663c95f3..745fb5b9a 100644 --- a/src/plugins/pdf-to-txt/plugin.test.js +++ b/src/plugins/pdf-to-txt/plugin.test.js @@ -23,14 +23,14 @@ describe("PDF-to-TXT Conversion Plugin", () => { return res; }); - server + await server .register(imageToTxt, config.tesseract) .register(sensible) .register(plugin, config.poppler); server.post("/", async (req, res) => { res.header("content-type", "application/json"); - res.send(req.conversionResults); + return req.conversionResults; }); await server.ready(); diff --git a/src/plugins/rtf-to-html/index.js b/src/plugins/rtf-to-html/index.js index 8cb5e7a0d..e66af8241 100644 --- a/src/plugins/rtf-to-html/index.js +++ b/src/plugins/rtf-to-html/index.js @@ -25,11 +25,12 @@ const { randomUUID } = require("crypto"); async function plugin(server, options) { server.addHook("onRequest", async (req) => { req.conversionResults = { body: undefined }; + return req; }); // "onSend" hook used instead of "onResponse" ensures // cancelled request temp data is also removed - server.addHook("onSend", async (req, res) => { + server.addHook("onSend", async (req, res, payload) => { if (req?.conversionResults?.docLocation) { // Remove files from temp directory after response sent const files = glob.sync( @@ -42,7 +43,7 @@ async function plugin(server, options) { await Promise.all(files.map((file) => fs.unlink(file))); } - return res; + return payload; }); server.addHook("preHandler", async (req, res) => { @@ -97,7 +98,7 @@ async function plugin(server, options) { */ /* istanbul ignore else: unable to test unknown errors */ if (/File is not the correct media type/.test(err)) { - throw res.badRequest(); + throw server.httpErrors.badRequest(); } else { throw err; } @@ -108,7 +109,7 @@ async function plugin(server, options) { } module.exports = fp(plugin, { - fastify: "3.x", + fastify: "4.x", name: "rtf-to-html", - dependencies: ["fastify-sensible"], + dependencies: ["@fastify/sensible"], }); diff --git a/src/plugins/rtf-to-html/plugin.test.js b/src/plugins/rtf-to-html/plugin.test.js index 9df275851..7160d5c61 100644 --- a/src/plugins/rtf-to-html/plugin.test.js +++ b/src/plugins/rtf-to-html/plugin.test.js @@ -29,11 +29,11 @@ describe("RTF-to-HTML Conversion Plugin", () => { return res; }); - server.register(sensible).register(plugin, config.unrtf); + await server.register(sensible).register(plugin, config.unrtf); server.post("/", async (req, res) => { res.header("content-type", "application/json"); - res.send(req.conversionResults); + return req.conversionResults; }); await server.ready(); diff --git a/src/plugins/rtf-to-txt/index.js b/src/plugins/rtf-to-txt/index.js index ab6d6e03a..195e7c5d2 100644 --- a/src/plugins/rtf-to-txt/index.js +++ b/src/plugins/rtf-to-txt/index.js @@ -24,11 +24,12 @@ const { randomUUID } = require("crypto"); async function plugin(server, options) { server.addHook("onRequest", async (req) => { req.conversionResults = { body: undefined }; + return req; }); // "onSend" hook used instead of "onResponse" ensures // cancelled request temp data is also removed - server.addHook("onSend", async (req, res) => { + server.addHook("onSend", async (req, res, payload) => { if (req?.conversionResults?.docLocation) { // Remove files from temp directory after response sent const files = glob.sync( @@ -41,7 +42,7 @@ async function plugin(server, options) { await Promise.all(files.map((file) => fs.unlink(file))); } - return res; + return payload; }); server.addHook("preHandler", async (req, res) => { @@ -100,7 +101,7 @@ async function plugin(server, options) { */ /* istanbul ignore else: unable to test unknown errors */ if (/File is not the correct media type/.test(err)) { - throw res.badRequest(); + throw server.httpErrors.badRequest(); } else { throw err; } @@ -111,7 +112,7 @@ async function plugin(server, options) { } module.exports = fp(plugin, { - fastify: "3.x", + fastify: "4.x", name: "rtf-to-txt", - dependencies: ["fastify-sensible"], + dependencies: ["@fastify/sensible"], }); diff --git a/src/plugins/rtf-to-txt/plugin.test.js b/src/plugins/rtf-to-txt/plugin.test.js index 48731a32b..b6d95e486 100644 --- a/src/plugins/rtf-to-txt/plugin.test.js +++ b/src/plugins/rtf-to-txt/plugin.test.js @@ -22,11 +22,11 @@ describe("RTF-to-TXT Conversion Plugin", () => { return res; }); - server.register(sensible).register(plugin, config.unrtf); + await server.register(sensible).register(plugin, config.unrtf); server.post("/", async (req, res) => { res.header("content-type", "application/json"); - res.send(req.conversionResults); + return req.conversionResults; }); await server.ready(); diff --git a/src/plugins/shared-schemas/index.js b/src/plugins/shared-schemas/index.js index 3e2e0877b..bdced6e7d 100644 --- a/src/plugins/shared-schemas/index.js +++ b/src/plugins/shared-schemas/index.js @@ -89,6 +89,6 @@ async function plugin(server) { } module.exports = fp(plugin, { - fastify: "3.x", + fastify: "4.x", name: "shared-schemas", }); diff --git a/src/plugins/tidy-css/index.js b/src/plugins/tidy-css/index.js index 644f7f3d9..7e502cbaa 100644 --- a/src/plugins/tidy-css/index.js +++ b/src/plugins/tidy-css/index.js @@ -126,4 +126,4 @@ async function plugin(server) { server.decorate("tidyCss", tidyCss); } -module.exports = fp(plugin, { fastify: "3.x", name: "tidy-css" }); +module.exports = fp(plugin, { fastify: "4.x", name: "tidy-css" }); diff --git a/src/plugins/tidy-css/plugin.test.js b/src/plugins/tidy-css/plugin.test.js index 5c86af87a..e6e2370e9 100644 --- a/src/plugins/tidy-css/plugin.test.js +++ b/src/plugins/tidy-css/plugin.test.js @@ -27,12 +27,8 @@ describe("Tidy-CSS Plugin", () => { }); test("Should tidy CSS in HTML", async () => { - server.post("/", (req, res) => { - res.send(server.tidyCss(req.body)); - }); - server.register(plugin); - - await server.ready(); + server.post("/", async (req) => server.tidyCss(req.body)); + await server.register(plugin).ready(); const response = await server.inject({ method: "POST", @@ -53,12 +49,10 @@ describe("Tidy-CSS Plugin", () => { }); test("Should tidy CSS in HTML and set new font", async () => { - server.post("/", (req, res) => { - res.send(server.tidyCss(req.body, { fonts: "Arial" })); - }); - server.register(plugin); - - await server.ready(); + server.post("/", async (req) => + server.tidyCss(req.body, { fonts: "Arial" }) + ); + await server.register(plugin).ready(); const response = await server.inject({ method: "POST", @@ -80,14 +74,12 @@ describe("Tidy-CSS Plugin", () => { }); test("Should tidy CSS in HTML and set new font in quotation marks", async () => { - server.post("/", (req, res) => { - res.send( - server.tidyCss(req.body, { fonts: 'Sans Serif, "Gill Sans"' }) - ); - }); - server.register(plugin); - - await server.ready(); + server.post("/", async (req) => + server.tidyCss(req.body, { + fonts: 'Sans Serif, "Gill Sans"', + }) + ); + await server.register(plugin).ready(); const response = await server.inject({ method: "POST", @@ -113,12 +105,10 @@ describe("Tidy-CSS Plugin", () => { }); test("Should tidy CSS in HTML and set new background color", async () => { - server.post("/", (req, res) => { - res.send(server.tidyCss(req.body, { backgroundColor: "white" })); - }); - server.register(plugin); - - await server.ready(); + server.post("/", async (req) => + server.tidyCss(req.body, { backgroundColor: "white" }) + ); + await server.register(plugin).ready(); const response = await server.inject({ method: "POST", @@ -142,17 +132,13 @@ describe("Tidy-CSS Plugin", () => { }); test("Should create new style element if none exist but query string param passed", async () => { - server.post("/", (req, res) => { - res.send( - server.tidyCss(req.body, { - fonts: "Arial", - backgroundColor: "white", - }) - ); - }); - server.register(plugin, config); - - await server.ready(); + server.post("/", async (req) => + server.tidyCss(req.body, { + fonts: "Arial", + backgroundColor: "white", + }) + ); + await server.register(plugin, config).ready(); const response = await server.inject({ method: "POST", @@ -177,12 +163,8 @@ describe("Tidy-CSS Plugin", () => { }); test("Should continue to parse style elements with no type attribute", async () => { - server.post("/", (req, res) => { - res.send(server.tidyCss(req.body)); - }); - server.register(plugin, config); - - await server.ready(); + server.post("/", async (req) => server.tidyCss(req.body)); + await server.register(plugin, config).ready(); const response = await server.inject({ method: "POST", @@ -203,12 +185,8 @@ describe("Tidy-CSS Plugin", () => { }); test("Should continue if it cannot find any CSS to tidy", async () => { - server.post("/", (req, res) => { - res.send(server.tidyCss(req.body)); - }); - server.register(plugin, config); - - await server.ready(); + server.post("/", async (req) => server.tidyCss(req.body)); + await server.register(plugin, config).ready(); const response = await server.inject({ method: "POST", diff --git a/src/plugins/tidy-html/index.js b/src/plugins/tidy-html/index.js index 89e30aac0..cf81407d3 100644 --- a/src/plugins/tidy-html/index.js +++ b/src/plugins/tidy-html/index.js @@ -76,7 +76,7 @@ async function plugin(server) { } module.exports = fp(plugin, { - fastify: "3.x", + fastify: "4.x", name: "tidy-html", - dependencies: ["fastify-sensible"], + dependencies: ["@fastify/sensible"], }); diff --git a/src/plugins/tidy-html/plugin.test.js b/src/plugins/tidy-html/plugin.test.js index b658d94e7..b03e800e7 100644 --- a/src/plugins/tidy-html/plugin.test.js +++ b/src/plugins/tidy-html/plugin.test.js @@ -23,12 +23,11 @@ describe("Tidy-CSS Plugin", () => { }); test("Should tidy HTML", async () => { - server.post("/", async (req, res) => { - res.send(await server.tidyHtml(req.body)); + server.post("/", async (req) => { + const result = await server.tidyHtml(req.body); + return result; }); - server.register(sensible).register(plugin); - - await server.ready(); + await server.register(sensible).register(plugin).ready(); const response = await server.inject({ method: "POST", @@ -55,12 +54,11 @@ describe("Tidy-CSS Plugin", () => { }); test("Should tidy HTML and set language", async () => { - server.post("/", async (req, res) => { - res.send(await server.tidyHtml(req.body, { language: "fr" })); + server.post("/", async (req) => { + const result = await server.tidyHtml(req.body, { language: "fr" }); + return result; }); - server.register(sensible).register(plugin); - - await server.ready(); + await server.register(sensible).register(plugin).ready(); const response = await server.inject({ method: "POST", @@ -87,14 +85,13 @@ describe("Tidy-CSS Plugin", () => { }); test("Should return HTTP status code 400 if language querystring param is not valid IANA language tag", async () => { - server.post("/", async (req, res) => { - res.send( - await server.tidyHtml(req.body, { language: "en-Somerset" }) - ); + server.post("/", async (req) => { + const result = await server.tidyHtml(req.body, { + language: "en-Somerset", + }); + return result; }); - server.register(sensible).register(plugin); - - await server.ready(); + await server.register(sensible).register(plugin).ready(); const response = await server.inject({ method: "POST", @@ -117,12 +114,11 @@ describe("Tidy-CSS Plugin", () => { }); test("Should remove alt attribute from img tags", async () => { - server.post("/", async (req, res) => { - res.send(await server.tidyHtml(req.body, { removeAlt: true })); + server.post("/", async (req) => { + const result = await server.tidyHtml(req.body, { removeAlt: true }); + return result; }); - server.register(sensible).register(plugin); - - await server.ready(); + await server.register(sensible).register(plugin).ready(); const response = await server.inject({ method: "POST", diff --git a/src/routes/admin/healthcheck/index.js b/src/routes/admin/healthcheck/index.js index 3261e231a..305341937 100644 --- a/src/routes/admin/healthcheck/index.js +++ b/src/routes/admin/healthcheck/index.js @@ -14,7 +14,7 @@ const { healthcheckGetSchema } = require("./schema"); */ async function route(server, options) { // Register plugins - server + await server // Enable CORS if options passed .register(cors, { ...options.cors, @@ -30,12 +30,12 @@ async function route(server, options) { // Catch unsupported Accept header media types !req.accepts().type(healthcheckGetSchema.produces) ) { - throw res.notAcceptable(); + return res.notAcceptable(); } + + return req; }, - handler: (req, res) => { - res.send("ok"); - }, + handler: async () => "ok", }); } diff --git a/src/routes/admin/healthcheck/route.test.js b/src/routes/admin/healthcheck/route.test.js index 3820fc54f..08c7c1e1f 100644 --- a/src/routes/admin/healthcheck/route.test.js +++ b/src/routes/admin/healthcheck/route.test.js @@ -14,13 +14,12 @@ describe("Healthcheck Route", () => { config = await getConfig(); server = Fastify(); - server + await server .register(accepts) .register(sensible) .register(sharedSchemas) - .register(route, config); - - await server.ready(); + .register(route, config) + .ready(); }); afterAll(async () => { diff --git a/src/routes/docs/index.js b/src/routes/docs/index.js index b03b2e4af..efc90786d 100644 --- a/src/routes/docs/index.js +++ b/src/routes/docs/index.js @@ -12,7 +12,7 @@ const { docsGetSchema } = require("./schema"); */ async function route(server) { // Register plugins - server + await server // Allow for static files to be served from this dir via `sendFile` .register(staticPlugin, { root: __dirname, serve: false }) @@ -41,16 +41,18 @@ async function route(server) { // Catch unsupported Accept header media types !req.accepts().type(docsGetSchema.produces) ) { - throw res.notAcceptable(); + return res.notAcceptable(); } + + return req; }, - handler: (req, res) => { + handler: async (req, res) => { res.header("cache-control", "private, max-age=180") .removeHeader("pragma") .removeHeader("expires") .removeHeader("surrogate-control") - .type("text/html; charset=utf-8") - .sendFile("index.html"); + .type("text/html; charset=utf-8"); + return res.sendFile("index.html"); }, }); } diff --git a/src/routes/docs/openapi/index.js b/src/routes/docs/openapi/index.js index 0b764112b..fb238aab2 100644 --- a/src/routes/docs/openapi/index.js +++ b/src/routes/docs/openapi/index.js @@ -12,7 +12,7 @@ const { docsOpenapiGetSchema } = require("./schema"); */ async function route(server, options) { // Register plugins - server + await server // Enable CORS if options passed .register(cors, { ...options.cors, @@ -28,15 +28,17 @@ async function route(server, options) { // Catch unsupported Accept header media types !req.accepts().type(docsOpenapiGetSchema.produces) ) { - throw res.notAcceptable(); + return res.notAcceptable(); } + + return req; }, - handler: (req, res) => { + handler: async (req, res) => { res.header("cache-control", "public, max-age=3600") .removeHeader("pragma") .removeHeader("expires") - .removeHeader("surrogate-control") - .send(server.swagger()); + .removeHeader("surrogate-control"); + return server.swagger(); }, }); } diff --git a/src/routes/docs/openapi/route.test.js b/src/routes/docs/openapi/route.test.js index a207c406c..fcddd169f 100644 --- a/src/routes/docs/openapi/route.test.js +++ b/src/routes/docs/openapi/route.test.js @@ -15,14 +15,13 @@ describe("OpenAPI Route", () => { config = await getConfig(); server = Fastify(); - server + await server .register(accepts) .register(sensible) .register(sharedSchemas) .register(swagger, config.swagger) - .register(route, config); - - await server.ready(); + .register(route, config) + .ready(); }); afterAll(async () => { diff --git a/src/routes/docs/route.test.js b/src/routes/docs/route.test.js index 97e343ed6..25eec74df 100644 --- a/src/routes/docs/route.test.js +++ b/src/routes/docs/route.test.js @@ -15,13 +15,12 @@ describe("Docs Route", () => { config = await getConfig(); server = Fastify(); - server + await server .register(accepts) .register(sensible) .register(sharedSchemas) - .register(route, config); - - await server.ready(); + .register(route, config) + .ready(); }); afterAll(async () => { diff --git a/src/routes/docx/html/index.js b/src/routes/docx/html/index.js index fa0185f4e..abaaf1727 100644 --- a/src/routes/docx/html/index.js +++ b/src/routes/docx/html/index.js @@ -42,7 +42,7 @@ async function route(server, options) { ); // Register plugins - server + await server // Enable CORS if options passed .register(cors, { ...options.cors, @@ -59,10 +59,12 @@ async function route(server, options) { // Catch unsupported Accept header media types !req.accepts().type(docxToHtmlPostSchema.produces) ) { - throw res.notAcceptable(); + return res.notAcceptable(); } + + return req; }, - handler: async (req, res) => { + handler: async (req) => { const result = server.tidyCss( await server.tidyHtml(req.conversionResults.body, { language: req.query.language, @@ -73,8 +75,7 @@ async function route(server, options) { backgroundColor: req.query.backgroundColor, } ); - - res.send(result); + return result; }, }); } diff --git a/src/routes/docx/html/route.test.js b/src/routes/docx/html/route.test.js index 96db2bd25..1dcf71319 100644 --- a/src/routes/docx/html/route.test.js +++ b/src/routes/docx/html/route.test.js @@ -17,15 +17,15 @@ describe("DOCX-to-HTML route", () => { beforeAll(async () => { config = await getConfig(); - server = Fastify() + server = Fastify(); + await server .register(accepts) .register(sensible) .register(sharedSchemas) .register(tidyCss) .register(tidyHtml) - .register(route, config); - - await server.ready(); + .register(route, config) + .ready(); }); afterAll(async () => { diff --git a/src/routes/docx/txt/index.js b/src/routes/docx/txt/index.js index 2c0187381..7c52d44e3 100644 --- a/src/routes/docx/txt/index.js +++ b/src/routes/docx/txt/index.js @@ -42,7 +42,7 @@ async function route(server, options) { ); // Register plugins - server + await server // Enable CORS if options passed .register(cors, { ...options.cors, @@ -59,12 +59,12 @@ async function route(server, options) { // Catch unsupported Accept header media types !req.accepts().type(docxToTxtPostSchema.produces) ) { - throw res.notAcceptable(); + return res.notAcceptable(); } + + return req; }, - handler: (req, res) => { - res.send(req.conversionResults.body); - }, + handler: async (req) => req.conversionResults.body, }); } diff --git a/src/routes/docx/txt/route.test.js b/src/routes/docx/txt/route.test.js index 50e14bf17..a7edf4666 100644 --- a/src/routes/docx/txt/route.test.js +++ b/src/routes/docx/txt/route.test.js @@ -14,13 +14,13 @@ describe("DOCX-to-TXT route", () => { beforeAll(async () => { config = await getConfig(); - server = Fastify() + server = Fastify(); + await server .register(accepts) .register(sensible) .register(sharedSchemas) - .register(route, config); - - await server.ready(); + .register(route, config) + .ready(); }); afterAll(async () => { diff --git a/src/routes/pdf/html/index.js b/src/routes/pdf/html/index.js index efbca42d4..f6d2a69df 100644 --- a/src/routes/pdf/html/index.js +++ b/src/routes/pdf/html/index.js @@ -42,7 +42,7 @@ async function route(server, options) { ); // Register plugins - server + await server // Enable CORS if options passed .register(cors, { ...options.cors, @@ -59,10 +59,12 @@ async function route(server, options) { // Catch unsupported Accept header media types !req.accepts().type(pdfToHtmlPostSchema.produces) ) { - throw res.notAcceptable(); + return res.notAcceptable(); } + + return req; }, - handler: async (req, res) => { + handler: async (req) => { const result = server.tidyCss( await server.tidyHtml( await server.embedHtmlImages(req.conversionResults.body), @@ -76,8 +78,7 @@ async function route(server, options) { backgroundColor: req.query.backgroundColor, } ); - - res.send(result); + return result; }, }); } diff --git a/src/routes/pdf/html/route.test.js b/src/routes/pdf/html/route.test.js index 9387674ed..b1fb1ebb6 100644 --- a/src/routes/pdf/html/route.test.js +++ b/src/routes/pdf/html/route.test.js @@ -29,16 +29,16 @@ describe("PDF-to-HTML route", () => { beforeAll(async () => { config = await getConfig(); - server = Fastify() + server = Fastify(); + await server .register(accepts) .register(sensible) .register(embedHtmlImages, config.poppler) .register(sharedSchemas) .register(tidyCss) .register(tidyHtml) - .register(route, config); - - await server.ready(); + .register(route, config) + .ready(); }); afterAll(async () => { diff --git a/src/routes/pdf/txt/index.js b/src/routes/pdf/txt/index.js index b2d920007..53d496ade 100644 --- a/src/routes/pdf/txt/index.js +++ b/src/routes/pdf/txt/index.js @@ -42,7 +42,7 @@ async function route(server, options) { ); // Register plugins - server + await server // Enable CORS if options passed .register(cors, { ...options.cors, @@ -59,10 +59,12 @@ async function route(server, options) { // Catch unsupported Accept header media types !req.accepts().type(pdfToTxtPostSchema.produces) ) { - throw res.notAcceptable(); + return res.notAcceptable(); } + + return req; }, - handler: async (req, res) => { + handler: async (req) => { let result; if ( req.query.boundingBoxXhtml || @@ -73,8 +75,7 @@ async function route(server, options) { } else { result = req.conversionResults.body; } - - res.send(result); + return result; }, }); } diff --git a/src/routes/pdf/txt/route.test.js b/src/routes/pdf/txt/route.test.js index c0150bb14..66e305d18 100644 --- a/src/routes/pdf/txt/route.test.js +++ b/src/routes/pdf/txt/route.test.js @@ -31,15 +31,15 @@ describe("PDF-to-TXT route", () => { config = await getConfig(); - server = Fastify() + server = Fastify(); + await server .register(accepts) .register(imageToTxt, config.tesseract) .register(sensible) .register(sharedSchemas) .register(tidyHtml) - .register(route, config); - - await server.ready(); + .register(route, config) + .ready(); }); afterAll(async () => { diff --git a/src/routes/rtf/html/index.js b/src/routes/rtf/html/index.js index 3e3173b79..0a43b9bae 100644 --- a/src/routes/rtf/html/index.js +++ b/src/routes/rtf/html/index.js @@ -42,7 +42,7 @@ async function route(server, options) { ); // Register plugins - server + await server // Enable CORS if options passed .register(cors, { ...options.cors, @@ -59,10 +59,12 @@ async function route(server, options) { // Catch unsupported Accept header media types !req.accepts().type(rtfToHtmlPostSchema.produces) ) { - throw res.notAcceptable(); + return res.notAcceptable(); } + + return req; }, - handler: async (req, res) => { + handler: async (req) => { const result = server.tidyCss( await server.tidyHtml( await server.embedHtmlImages(req.conversionResults.body), @@ -76,8 +78,7 @@ async function route(server, options) { backgroundColor: req.query.backgroundColor, } ); - - res.send(result); + return result; }, }); } diff --git a/src/routes/rtf/html/route.test.js b/src/routes/rtf/html/route.test.js index b9672d9b5..36947d781 100644 --- a/src/routes/rtf/html/route.test.js +++ b/src/routes/rtf/html/route.test.js @@ -27,16 +27,16 @@ describe("RTF-to-HTML route", () => { beforeAll(async () => { config = await getConfig(); - server = Fastify() + server = Fastify(); + await server .register(accepts) .register(sensible) .register(embedHtmlImages, config.unrtf) .register(sharedSchemas) .register(tidyCss) .register(tidyHtml) - .register(route, config); - - await server.ready(); + .register(route, config) + .ready(); }); afterAll(async () => { diff --git a/src/routes/rtf/txt/index.js b/src/routes/rtf/txt/index.js index 6d4c3e1a2..fd8227eab 100644 --- a/src/routes/rtf/txt/index.js +++ b/src/routes/rtf/txt/index.js @@ -42,7 +42,7 @@ async function route(server, options) { ); // Register plugins - server + await server // Enable CORS if options passed .register(cors, { ...options.cors, @@ -59,12 +59,12 @@ async function route(server, options) { // Catch unsupported Accept header media types !req.accepts().type(rtfToTxtPostSchema.produces) ) { - throw res.notAcceptable(); + return res.notAcceptable(); } + + return req; }, - handler: (req, res) => { - res.send(req.conversionResults.body); - }, + handler: async (req) => req.conversionResults.body, }); } diff --git a/src/routes/rtf/txt/route.test.js b/src/routes/rtf/txt/route.test.js index 6e5e0443e..acf682117 100644 --- a/src/routes/rtf/txt/route.test.js +++ b/src/routes/rtf/txt/route.test.js @@ -14,13 +14,13 @@ describe("RTF-to-TXT route", () => { beforeAll(async () => { config = await getConfig(); - server = Fastify() + server = Fastify(); + await server .register(accepts) .register(sensible) .register(sharedSchemas) - .register(route, config); - - await server.ready(); + .register(route, config) + .ready(); }); afterAll(async () => { diff --git a/src/server.js b/src/server.js index d09ec3aa1..4e01cd5f1 100644 --- a/src/server.js +++ b/src/server.js @@ -14,7 +14,7 @@ const rateLimit = require("@fastify/rate-limit"); const sensible = require("@fastify/sensible"); const staticPlugin = require("@fastify/static"); const swagger = require("@fastify/swagger"); -const underPressure = require("under-pressure"); +const underPressure = require("@fastify/under-pressure"); const sharedSchemas = require("./plugins/shared-schemas"); // Import local decorator plugins @@ -31,7 +31,7 @@ const tidyHtml = require("./plugins/tidy-html"); */ async function plugin(server, config) { // Register plugins - server + await server // Accept header handler .register(accepts) @@ -65,7 +65,7 @@ async function plugin(server, config) { .register(tidyHtml); if (config.tesseract.enabled === true) { - server.register(imageToTxt, config.tesseract); + await server.register(imageToTxt, config.tesseract); } await server @@ -73,14 +73,14 @@ async function plugin(server, config) { .register(rateLimit, config.rateLimit); // Register routes - server + await server /** * `x-xss-protection` and `content-security-policy` is set by default by Helmet. * These are only useful for HTML/XML content; the only CSP directive that * is of use to other content is "frame-ancestors 'none'" to stop responses * from being wrapped in iframes and used for clickjacking attacks. */ - .addHook("onSend", async (req, res) => { + .addHook("onSend", async (req, res, payload) => { if ( res.getHeader("content-type") !== undefined && !res.getHeader("content-type")?.includes("html") && @@ -92,7 +92,7 @@ async function plugin(server, config) { ); res.raw.removeHeader("x-xss-protection"); } - return res; + return payload; }) // Import and register admin routes @@ -108,7 +108,7 @@ async function plugin(server, config) { */ .register(async (securedContext) => { if (config.bearerTokenAuthKeys) { - securedContext.register(bearer, { + await securedContext.register(bearer, { keys: config.bearerTokenAuthKeys, errorResponse: (err) => ({ statusCode: 401, @@ -118,7 +118,7 @@ async function plugin(server, config) { }); } - securedContext + await securedContext // Import and register service routes .register(autoLoad, { dir: path.joinSafe(__dirname, "routes"), @@ -145,7 +145,7 @@ async function plugin(server, config) { } ); - publicContext + await publicContext // Set relaxed response headers .register(helmet, relaxedHelmetConfig) @@ -172,23 +172,23 @@ async function plugin(server, config) { ) // Errors thrown by routes and plugins are caught here - .setErrorHandler( - // eslint-disable-next-line promise/prefer-await-to-callbacks - (err, req, res) => { - /* istanbul ignore if */ - if ( - res.statusCode >= 500 && + .setErrorHandler(async (err, req, res) => { + if ( + (err.statusCode >= 500 && /* istanbul ignore next: under-pressure plugin throws valid 503s */ - res.statusCode !== 503 - ) { - req.log.error({ req, res, err }, err?.message); - res.internalServerError(); - } else { - req.log.info({ req, res, err }, err?.message); - res.send(err); - } + err.statusCode !== 503) || + /** + * Uncaught errors will have a res.statusCode but not + * an err.statusCode as @fastify/sensible sets that + */ + (res.statusCode === 200 && !err.statusCode) + ) { + res.log.error(err); + return res.internalServerError(); } - ); + + throw err; + }); } -module.exports = fp(plugin, { fastify: "3.x", name: "server" }); +module.exports = fp(plugin, { fastify: "4.x", name: "server" }); diff --git a/src/server.test.js b/src/server.test.js index 575dc19c4..7af9f1643 100644 --- a/src/server.test.js +++ b/src/server.test.js @@ -77,9 +77,7 @@ describe("Server Deployment", () => { config = await getConfig(); server = Fastify(); - server.register(startServer, config); - - await server.ready(); + await server.register(startServer, config).ready(); }); afterAll(async () => { @@ -334,9 +332,7 @@ describe("Server Deployment", () => { config = await getConfig(); server = Fastify(); - server.register(startServer, config); - - await server.ready(); + await server.register(startServer, config).ready(); }); afterAll(async () => { @@ -579,9 +575,7 @@ describe("Server Deployment", () => { // Turn off logging for test runs delete config.fastifyInit.logger; server = Fastify(config.fastifyInit); - server.register(startServer, config); - - await server.listen(config.fastify); + await server.register(startServer, config).listen(config.fastify); }); afterAll(async () => { @@ -635,4 +629,50 @@ describe("Server Deployment", () => { }); }); }); + + describe("Error Handling", () => { + let config; + let server; + + beforeAll(async () => { + Object.assign(process.env, { + AUTH_BEARER_TOKEN_ARRAY: "", + OCR_ENABLED: false, + }); + config = await getConfig(); + + server = Fastify(); + await server.register(startServer, config); + + server.get("/error", async () => { + throw new Error("test"); + }); + + await server.ready(); + }); + + afterAll(async () => { + await server.close(); + }); + + describe("/error Route", () => { + test("Should return HTTP status code 500", async () => { + const response = await server.inject({ + method: "GET", + url: "/error", + headers: { + accept: "*/*", + }, + }); + + expect(JSON.parse(response.payload)).toEqual({ + error: "Internal Server Error", + message: "Internal Server Error", + statusCode: 500, + }); + expect(response.headers).toEqual(expResHeaders4xxErrors); + expect(response.statusCode).toBe(500); + }); + }); + }); });