From 43298c1b24652fb12eac87eb7f7260efa7f5338f Mon Sep 17 00:00:00 2001 From: "Torsten Schulz (server)" Date: Wed, 11 Sep 2024 16:10:11 +0000 Subject: [PATCH] removed image --- backend/images/members/9.jpg | Bin 82468 -> 0 bytes backend/node_modules/.package-lock.json | 417 +++++++++- backend/node_modules/body-parser/HISTORY.md | 7 + backend/node_modules/body-parser/README.md | 11 + .../body-parser/lib/types/urlencoded.js | 37 +- backend/node_modules/body-parser/package.json | 4 +- backend/node_modules/express/History.md | 18 + backend/node_modules/express/Readme.md | 106 ++- backend/node_modules/express/lib/response.js | 20 +- backend/node_modules/express/package.json | 18 +- .../node_modules/merge-descriptors/README.md | 7 +- .../node_modules/merge-descriptors/index.js | 6 +- .../merge-descriptors/package.json | 21 +- .../node_modules/path-to-regexp/History.md | 36 - backend/node_modules/path-to-regexp/index.js | 99 ++- .../node_modules/path-to-regexp/package.json | 4 +- backend/node_modules/send/HISTORY.md | 5 + backend/node_modules/send/index.js | 3 +- backend/node_modules/send/package.json | 2 +- backend/node_modules/serve-static/HISTORY.md | 6 + backend/node_modules/serve-static/index.js | 3 +- .../node_modules/serve-static/package.json | 2 +- backend/package-lock.json | 761 +++++++++++++++++- backend/package.json | 4 +- package-lock.json | 13 +- package.json | 3 +- 26 files changed, 1413 insertions(+), 200 deletions(-) delete mode 100644 backend/images/members/9.jpg delete mode 100644 backend/node_modules/path-to-regexp/History.md diff --git a/backend/images/members/9.jpg b/backend/images/members/9.jpg deleted file mode 100644 index d3eaf5b850d344e93e596a71b652cfcde94fd69f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 82468 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

-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

=d7 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�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 diff --git a/backend/node_modules/.package-lock.json b/backend/node_modules/.package-lock.json index f12f118..67ef7e0 100644 --- a/backend/node_modules/.package-lock.json +++ b/backend/node_modules/.package-lock.json @@ -180,6 +180,44 @@ "url": "https://github.com/sponsors/nzakas" } }, + "node_modules/@img/sharp-libvips-linux-x64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.0.4.tgz", + "integrity": "sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-linux-x64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.33.5.tgz", + "integrity": "sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-x64": "1.0.4" + } + }, "node_modules/@mapbox/node-pre-gyp": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz", @@ -387,6 +425,12 @@ "node": ">= 8" } }, + "node_modules/append-field": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz", + "integrity": "sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==", + "license": "MIT" + }, "node_modules/aproba": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", @@ -456,9 +500,10 @@ } }, "node_modules/body-parser": { - "version": "1.20.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", - "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", + "version": "1.20.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", + "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", + "license": "MIT", "dependencies": { "bytes": "3.1.2", "content-type": "~1.0.5", @@ -468,7 +513,7 @@ "http-errors": "2.0.0", "iconv-lite": "0.4.24", "on-finished": "2.4.1", - "qs": "6.11.0", + "qs": "6.13.0", "raw-body": "2.5.2", "type-is": "~1.6.18", "unpipe": "1.0.0" @@ -478,6 +523,21 @@ "npm": "1.2.8000 || >= 1.4.16" } }, + "node_modules/body-parser/node_modules/qs": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -504,10 +564,28 @@ "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==" }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "license": "MIT" + }, + "node_modules/busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "dependencies": { + "streamsearch": "^1.1.0" + }, + "engines": { + "node": ">=10.16.0" + } + }, "node_modules/bytes": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -516,6 +594,7 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "license": "MIT", "dependencies": { "es-define-property": "^1.0.0", "es-errors": "^1.3.0", @@ -612,12 +691,23 @@ "node": ">=10" } }, + "node_modules/color": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", + "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1", + "color-string": "^1.9.0" + }, + "engines": { + "node": ">=12.5.0" + } + }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "peer": true, "dependencies": { "color-name": "~1.1.4" }, @@ -628,9 +718,17 @@ "node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "peer": true + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "license": "MIT", + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } }, "node_modules/color-support": { "version": "1.1.3", @@ -645,6 +743,51 @@ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, + "node_modules/concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "engines": [ + "node >= 0.8" + ], + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/concat-stream/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/concat-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, + "node_modules/concat-stream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, "node_modules/console-control-strings": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", @@ -665,6 +808,7 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -682,6 +826,12 @@ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "license": "MIT" + }, "node_modules/cors": { "version": "2.8.5", "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", @@ -734,6 +884,7 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "license": "MIT", "dependencies": { "es-define-property": "^1.0.0", "es-errors": "^1.3.0", @@ -763,6 +914,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -771,6 +923,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "license": "MIT", "engines": { "node": ">= 0.8", "npm": "1.2.8000 || >= 1.4.16" @@ -830,6 +983,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "license": "MIT", "dependencies": { "get-intrinsic": "^1.2.4" }, @@ -841,6 +995,7 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", "engines": { "node": ">= 0.4" } @@ -1056,41 +1211,43 @@ "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/express": { - "version": "4.19.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", - "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/express/-/express-4.20.0.tgz", + "integrity": "sha512-pLdae7I6QqShF5PnNTCVn4hI91Dx0Grkn2+IAsMTgMIKuQVte2dN9PeGSSAME2FR8anOhVA62QDIUaWVfEXVLw==", + "license": "MIT", "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.20.2", + "body-parser": "1.20.3", "content-disposition": "0.5.4", "content-type": "~1.0.4", "cookie": "0.6.0", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "2.0.0", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", "finalhandler": "1.2.0", "fresh": "0.5.2", "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", + "merge-descriptors": "1.0.3", "methods": "~1.1.2", "on-finished": "2.4.1", "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", + "path-to-regexp": "0.1.10", "proxy-addr": "~2.0.7", "qs": "6.11.0", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", + "send": "0.19.0", + "serve-static": "1.16.0", "setprototypeof": "1.2.0", "statuses": "2.0.1", "type-is": "~1.6.18", @@ -1101,6 +1258,15 @@ "node": ">= 0.10.0" } }, + "node_modules/express/node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -1224,6 +1390,7 @@ "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -1259,6 +1426,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -1295,6 +1463,7 @@ "version": "1.2.4", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "license": "MIT", "dependencies": { "es-errors": "^1.3.0", "function-bind": "^1.1.2", @@ -1358,6 +1527,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "license": "MIT", "dependencies": { "get-intrinsic": "^1.1.3" }, @@ -1378,6 +1548,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "license": "MIT", "dependencies": { "es-define-property": "^1.0.0" }, @@ -1389,6 +1560,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -1400,6 +1572,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -1416,6 +1589,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", "dependencies": { "function-bind": "^1.1.2" }, @@ -1427,6 +1601,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "license": "MIT", "dependencies": { "depd": "2.0.0", "inherits": "2.0.4", @@ -1475,6 +1650,7 @@ "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3" }, @@ -1556,6 +1732,12 @@ "node": ">= 0.10" } }, + "node_modules/is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", + "license": "MIT" + }, "node_modules/is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", @@ -1621,6 +1803,12 @@ "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", "integrity": "sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==" }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "license": "MIT" + }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -1833,14 +2021,19 @@ "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, "node_modules/methods": { "version": "1.1.2", @@ -1854,6 +2047,7 @@ "version": "1.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "license": "MIT", "bin": { "mime": "cli.js" }, @@ -1891,6 +2085,15 @@ "node": "*" } }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/minipass": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", @@ -1957,6 +2160,36 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, + "node_modules/multer": { + "version": "1.4.5-lts.1", + "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.5-lts.1.tgz", + "integrity": "sha512-ywPWvcDMeH+z9gQq5qYHCCy+ethsk4goepZ45GLD63fOu0YcNecQxi64nDs3qluZB+murG3/D4dJ7+dGctcCQQ==", + "license": "MIT", + "dependencies": { + "append-field": "^1.0.0", + "busboy": "^1.0.0", + "concat-stream": "^1.5.2", + "mkdirp": "^0.5.4", + "object-assign": "^4.1.1", + "type-is": "^1.6.4", + "xtend": "^4.0.0" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/multer/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "license": "MIT", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, "node_modules/mysql2": { "version": "3.10.3", "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.10.3.tgz", @@ -2151,6 +2384,7 @@ "version": "1.13.2", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -2277,9 +2511,10 @@ } }, "node_modules/path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz", + "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==", + "license": "MIT" }, "node_modules/pg-connection-string": { "version": "2.6.4", @@ -2308,6 +2543,12 @@ "node": ">= 0.8.0" } }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "license": "MIT" + }, "node_modules/proxy-addr": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", @@ -2340,6 +2581,7 @@ "version": "6.11.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "license": "BSD-3-Clause", "dependencies": { "side-channel": "^1.0.4" }, @@ -2375,6 +2617,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -2383,6 +2626,7 @@ "version": "2.5.2", "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "license": "MIT", "dependencies": { "bytes": "3.1.2", "http-errors": "2.0.0", @@ -2519,9 +2763,10 @@ } }, "node_modules/send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", + "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", + "license": "MIT", "dependencies": { "debug": "2.6.9", "depd": "2.0.0", @@ -2544,7 +2789,8 @@ "node_modules/send/node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" }, "node_modules/seq-queue": { "version": "0.0.5", @@ -2642,9 +2888,10 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "node_modules/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.0.tgz", + "integrity": "sha512-pDLK8zwl2eKaYrs8mrPZBJua4hMplRWJ1tIFksVC3FtBEBnl8dxgeHtsaMS8DhS9i4fLObaon6ABoc4/hQGdPA==", + "license": "MIT", "dependencies": { "encodeurl": "~1.0.2", "escape-html": "~1.0.3", @@ -2655,6 +2902,36 @@ "node": ">= 0.8.0" } }, + "node_modules/serve-static/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/serve-static/node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", @@ -2664,6 +2941,7 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "license": "MIT", "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", @@ -2679,7 +2957,47 @@ "node_modules/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "license": "ISC" + }, + "node_modules/sharp": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.33.5.tgz", + "integrity": "sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==", + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "color": "^4.2.3", + "detect-libc": "^2.0.3", + "semver": "^7.6.3" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-darwin-arm64": "0.33.5", + "@img/sharp-darwin-x64": "0.33.5", + "@img/sharp-libvips-darwin-arm64": "1.0.4", + "@img/sharp-libvips-darwin-x64": "1.0.4", + "@img/sharp-libvips-linux-arm": "1.0.5", + "@img/sharp-libvips-linux-arm64": "1.0.4", + "@img/sharp-libvips-linux-s390x": "1.0.4", + "@img/sharp-libvips-linux-x64": "1.0.4", + "@img/sharp-libvips-linuxmusl-arm64": "1.0.4", + "@img/sharp-libvips-linuxmusl-x64": "1.0.4", + "@img/sharp-linux-arm": "0.33.5", + "@img/sharp-linux-arm64": "0.33.5", + "@img/sharp-linux-s390x": "0.33.5", + "@img/sharp-linux-x64": "0.33.5", + "@img/sharp-linuxmusl-arm64": "0.33.5", + "@img/sharp-linuxmusl-x64": "0.33.5", + "@img/sharp-wasm32": "0.33.5", + "@img/sharp-win32-ia32": "0.33.5", + "@img/sharp-win32-x64": "0.33.5" + } }, "node_modules/shebang-command": { "version": "2.0.0", @@ -2708,6 +3026,7 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "es-errors": "^1.3.0", @@ -2726,6 +3045,15 @@ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" }, + "node_modules/simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.3.1" + } + }, "node_modules/simple-update-notifier": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz", @@ -2754,6 +3082,14 @@ "node": ">= 0.8" } }, + "node_modules/streamsearch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", + "engines": { + "node": ">=10.0.0" + } + }, "node_modules/string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -2850,6 +3186,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "license": "MIT", "engines": { "node": ">=0.6" } @@ -2890,6 +3227,7 @@ "version": "1.6.18", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "license": "MIT", "dependencies": { "media-typer": "0.3.0", "mime-types": "~2.1.24" @@ -2898,6 +3236,12 @@ "node": ">= 0.6" } }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", + "license": "MIT" + }, "node_modules/undefsafe": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", @@ -3117,6 +3461,15 @@ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "license": "MIT", + "engines": { + "node": ">=0.4" + } + }, "node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", diff --git a/backend/node_modules/body-parser/HISTORY.md b/backend/node_modules/body-parser/HISTORY.md index b892491..81d23e0 100644 --- a/backend/node_modules/body-parser/HISTORY.md +++ b/backend/node_modules/body-parser/HISTORY.md @@ -1,3 +1,10 @@ +1.20.3 / 2024-09-10 +=================== + + * deps: qs@6.13.0 + * add `depth` option to customize the depth level in the parser + * IMPORTANT: The default `depth` level for parsing URL-encoded data is now `32` (previously was `Infinity`) + 1.20.2 / 2023-02-21 =================== diff --git a/backend/node_modules/body-parser/README.md b/backend/node_modules/body-parser/README.md index 38553bf..f6661b7 100644 --- a/backend/node_modules/body-parser/README.md +++ b/backend/node_modules/body-parser/README.md @@ -4,6 +4,7 @@ [![NPM Downloads][npm-downloads-image]][npm-url] [![Build Status][ci-image]][ci-url] [![Test Coverage][coveralls-image]][coveralls-url] +[![OpenSSF Scorecard Badge][ossf-scorecard-badge]][ossf-scorecard-visualizer] Node.js body parsing middleware. @@ -277,6 +278,10 @@ The `verify` option, if supplied, is called as `verify(req, res, buf, encoding)` where `buf` is a `Buffer` of the raw request body and `encoding` is the encoding of the request. The parsing can be aborted by throwing an error. +#### depth + +The `depth` option is used to configure the maximum depth of the `qs` library when `extended` is `true`. This allows you to limit the amount of keys that are parsed and can be useful to prevent certain types of abuse. Defaults to `32`. It is recommended to keep this value as low as possible. + ## Errors The middlewares provided by this module create errors using the @@ -373,6 +378,10 @@ as well as in the `encoding` property. The `status` property is set to `415`, the `type` property is set to `'encoding.unsupported'`, and the `encoding` property is set to the encoding that is unsupported. +### The input exceeded the depth + +This error occurs when using `bodyParser.urlencoded` with the `extended` property set to `true` and the input exceeds the configured `depth` option. The `status` property is set to `400`. It is recommended to review the `depth` option and evaluate if it requires a higher value. When the `depth` option is set to `32` (default value), the error will not be thrown. + ## Examples ### Express/Connect top-level generic @@ -463,3 +472,5 @@ app.use(bodyParser.text({ type: 'text/html' })) [npm-downloads-image]: https://badgen.net/npm/dm/body-parser [npm-url]: https://npmjs.org/package/body-parser [npm-version-image]: https://badgen.net/npm/v/body-parser +[ossf-scorecard-badge]: https://api.scorecard.dev/projects/github.com/expressjs/body-parser/badge +[ossf-scorecard-visualizer]: https://ossf.github.io/scorecard-visualizer/#/projects/github.com/expressjs/body-parser \ No newline at end of file diff --git a/backend/node_modules/body-parser/lib/types/urlencoded.js b/backend/node_modules/body-parser/lib/types/urlencoded.js index b2ca8f1..2bd4485 100644 --- a/backend/node_modules/body-parser/lib/types/urlencoded.js +++ b/backend/node_modules/body-parser/lib/types/urlencoded.js @@ -55,6 +55,9 @@ function urlencoded (options) { : opts.limit var type = opts.type || 'application/x-www-form-urlencoded' var verify = opts.verify || false + var depth = typeof opts.depth !== 'number' + ? Number(opts.depth || 32) + : opts.depth if (verify !== false && typeof verify !== 'function') { throw new TypeError('option verify must be function') @@ -118,7 +121,8 @@ function urlencoded (options) { encoding: charset, inflate: inflate, limit: limit, - verify: verify + verify: verify, + depth: depth }) } } @@ -133,12 +137,20 @@ function extendedparser (options) { var parameterLimit = options.parameterLimit !== undefined ? options.parameterLimit : 1000 + + var depth = typeof options.depth !== 'number' + ? Number(options.depth || 32) + : options.depth var parse = parser('qs') if (isNaN(parameterLimit) || parameterLimit < 1) { throw new TypeError('option parameterLimit must be a positive number') } + if (isNaN(depth) || depth < 0) { + throw new TypeError('option depth must be a zero or a positive number') + } + if (isFinite(parameterLimit)) { parameterLimit = parameterLimit | 0 } @@ -156,12 +168,23 @@ function extendedparser (options) { var arrayLimit = Math.max(100, paramCount) debug('parse extended urlencoding') - return parse(body, { - allowPrototypes: true, - arrayLimit: arrayLimit, - depth: Infinity, - parameterLimit: parameterLimit - }) + try { + return parse(body, { + allowPrototypes: true, + arrayLimit: arrayLimit, + depth: depth, + strictDepth: true, + parameterLimit: parameterLimit + }) + } catch (err) { + if (err instanceof RangeError) { + throw createError(400, 'The input exceeded the depth', { + type: 'querystring.parse.rangeError' + }) + } else { + throw err + } + } } } diff --git a/backend/node_modules/body-parser/package.json b/backend/node_modules/body-parser/package.json index 4637304..3c9926f 100644 --- a/backend/node_modules/body-parser/package.json +++ b/backend/node_modules/body-parser/package.json @@ -1,7 +1,7 @@ { "name": "body-parser", "description": "Node.js body parsing middleware", - "version": "1.20.2", + "version": "1.20.3", "contributors": [ "Douglas Christopher Wilson ", "Jonathan Ong (http://jongleberry.com)" @@ -17,7 +17,7 @@ "http-errors": "2.0.0", "iconv-lite": "0.4.24", "on-finished": "2.4.1", - "qs": "6.11.0", + "qs": "6.13.0", "raw-body": "2.5.2", "type-is": "~1.6.18", "unpipe": "1.0.0" diff --git a/backend/node_modules/express/History.md b/backend/node_modules/express/History.md index ac2e7cf..887a38f 100644 --- a/backend/node_modules/express/History.md +++ b/backend/node_modules/express/History.md @@ -1,3 +1,21 @@ +4.20.0 / 2024-09-10 +========== + * deps: serve-static@0.16.0 + * Remove link renderization in html while redirecting + * deps: send@0.19.0 + * Remove link renderization in html while redirecting + * deps: body-parser@0.6.0 + * add `depth` option to customize the depth level in the parser + * IMPORTANT: The default `depth` level for parsing URL-encoded data is now `32` (previously was `Infinity`) + * Remove link renderization in html while using `res.redirect` + * deps: path-to-regexp@0.1.10 + - Adds support for named matching groups in the routes using a regex + - Adds backtracking protection to parameters without regexes defined + * deps: encodeurl@~2.0.0 + - Removes encoding of `\`, `|`, and `^` to align better with URL spec + * Deprecate passing `options.maxAge` and `options.expires` to `res.clearCookie` + - Will be ignored in v5, clearCookie will set a cookie with an expires in the past to instruct clients to delete the cookie + 4.19.2 / 2024-03-25 ========== diff --git a/backend/node_modules/express/Readme.md b/backend/node_modules/express/Readme.md index d0f3cf5..bc108d5 100644 --- a/backend/node_modules/express/Readme.md +++ b/backend/node_modules/express/Readme.md @@ -1,10 +1,29 @@ [![Express Logo](https://i.cloudup.com/zfY6lL7eFa-3000x3000.png)](http://expressjs.com/) - Fast, unopinionated, minimalist web framework for [Node.js](http://nodejs.org). +**Fast, unopinionated, minimalist web framework for [Node.js](http://nodejs.org).** + +**This project has a [Code of Conduct][].** + +## Table of contents + +* [Installation](#Installation) +* [Features](#Features) +* [Docs & Community](#docs--community) +* [Quick Start](#Quick-Start) +* [Running Tests](#Running-Tests) +* [Philosophy](#Philosophy) +* [Examples](#Examples) +* [Contributing to Express](#Contributing) +* [TC (Technical Committee)](#tc-technical-committee) +* [Triagers](#triagers) +* [License](#license) + + +[![NPM Version][npm-version-image]][npm-url] +[![NPM Install Size][npm-install-size-image]][npm-install-size-url] +[![NPM Downloads][npm-downloads-image]][npm-downloads-url] +[![OpenSSF Scorecard Badge][ossf-scorecard-badge]][ossf-scorecard-visualizer] - [![NPM Version][npm-version-image]][npm-url] - [![NPM Install Size][npm-install-size-image]][npm-install-size-url] - [![NPM Downloads][npm-downloads-image]][npm-downloads-url] ```js const express = require('express') @@ -144,10 +163,82 @@ $ npm test The original author of Express is [TJ Holowaychuk](https://github.com/tj) -The current lead maintainer is [Douglas Christopher Wilson](https://github.com/dougwilson) - [List of all contributors](https://github.com/expressjs/express/graphs/contributors) +### TC (Technical Committee) + +* [UlisesGascon](https://github.com/UlisesGascon) - **Ulises Gascón** (he/him) +* [jonchurch](https://github.com/jonchurch) - **Jon Church** +* [wesleytodd](https://github.com/wesleytodd) - **Wes Todd** +* [LinusU](https://github.com/LinusU) - **Linus Unnebäck** +* [blakeembrey](https://github.com/blakeembrey) - **Blake Embrey** +* [sheplu](https://github.com/sheplu) - **Jean Burellier** +* [crandmck](https://github.com/crandmck) - **Rand McKinney** +* [ctcpip](https://github.com/ctcpip) - **Chris de Almeida** + +
+TC emeriti members + +#### TC emeriti members + + * [dougwilson](https://github.com/dougwilson) - **Douglas Wilson** + * [hacksparrow](https://github.com/hacksparrow) - **Hage Yaapa** + * [jonathanong](https://github.com/jonathanong) - **jongleberry** + * [niftylettuce](https://github.com/niftylettuce) - **niftylettuce** + * [troygoode](https://github.com/troygoode) - **Troy Goode** +
+ + +### Triagers + +* [aravindvnair99](https://github.com/aravindvnair99) - **Aravind Nair** +* [carpasse](https://github.com/carpasse) - **Carlos Serrano** +* [CBID2](https://github.com/CBID2) - **Christine Belzie** +* [enyoghasim](https://github.com/enyoghasim) - **David Enyoghasim** +* [UlisesGascon](https://github.com/UlisesGascon) - **Ulises Gascón** (he/him) +* [mertcanaltin](https://github.com/mertcanaltin) - **Mert Can Altin** +* [0ss](https://github.com/0ss) - **Salah** +* [import-brain](https://github.com/import-brain) - **Eric Cheng** (he/him) +* [3imed-jaberi](https://github.com/3imed-jaberi) - **Imed Jaberi** +* [dakshkhetan](https://github.com/dakshkhetan) - **Daksh Khetan** (he/him) +* [lucasraziel](https://github.com/lucasraziel) - **Lucas Soares Do Rego** +* [IamLizu](https://github.com/IamLizu) - **S M Mahmudul Hasan** (he/him) +* [Sushmeet](https://github.com/Sushmeet) - **Sushmeet Sunger** + +
+Triagers emeriti members + +#### Emeritus Triagers + + * [AuggieH](https://github.com/AuggieH) - **Auggie Hudak** + * [G-Rath](https://github.com/G-Rath) - **Gareth Jones** + * [MohammadXroid](https://github.com/MohammadXroid) - **Mohammad Ayashi** + * [NawafSwe](https://github.com/NawafSwe) - **Nawaf Alsharqi** + * [NotMoni](https://github.com/NotMoni) - **Moni** + * [VigneshMurugan](https://github.com/VigneshMurugan) - **Vignesh Murugan** + * [davidmashe](https://github.com/davidmashe) - **David Ashe** + * [digitaIfabric](https://github.com/digitaIfabric) - **David** + * [e-l-i-s-e](https://github.com/e-l-i-s-e) - **Elise Bonner** + * [fed135](https://github.com/fed135) - **Frederic Charette** + * [firmanJS](https://github.com/firmanJS) - **Firman Abdul Hakim** + * [getspooky](https://github.com/getspooky) - **Yasser Ameur** + * [ghinks](https://github.com/ghinks) - **Glenn** + * [ghousemohamed](https://github.com/ghousemohamed) - **Ghouse Mohamed** + * [gireeshpunathil](https://github.com/gireeshpunathil) - **Gireesh Punathil** + * [jake32321](https://github.com/jake32321) - **Jake Reed** + * [jonchurch](https://github.com/jonchurch) - **Jon Church** + * [lekanikotun](https://github.com/lekanikotun) - **Troy Goode** + * [marsonya](https://github.com/marsonya) - **Lekan Ikotun** + * [mastermatt](https://github.com/mastermatt) - **Matt R. Wilson** + * [maxakuru](https://github.com/maxakuru) - **Max Edell** + * [mlrawlings](https://github.com/mlrawlings) - **Michael Rawlings** + * [rodion-arr](https://github.com/rodion-arr) - **Rodion Abdurakhimov** + * [sheplu](https://github.com/sheplu) - **Jean Burellier** + * [tarunyadav1](https://github.com/tarunyadav1) - **Tarun yadav** + * [tunniclm](https://github.com/tunniclm) - **Mike Tunnicliffe** +
+ + ## License [MIT](LICENSE) @@ -164,3 +255,6 @@ The current lead maintainer is [Douglas Christopher Wilson](https://github.com/d [npm-install-size-url]: https://packagephobia.com/result?p=express [npm-url]: https://npmjs.org/package/express [npm-version-image]: https://badgen.net/npm/v/express +[ossf-scorecard-badge]: https://api.scorecard.dev/projects/github.com/expressjs/express/badge +[ossf-scorecard-visualizer]: https://ossf.github.io/scorecard-visualizer/#/projects/github.com/expressjs/express +[Code of Conduct]: https://github.com/expressjs/express/blob/master/Code-Of-Conduct.md diff --git a/backend/node_modules/express/lib/response.js b/backend/node_modules/express/lib/response.js index dd7b3c8..76b6b54 100644 --- a/backend/node_modules/express/lib/response.js +++ b/backend/node_modules/express/lib/response.js @@ -55,7 +55,6 @@ module.exports = res */ var charsetRegExp = /;\s*charset\s*=/; -var schemaAndHostRegExp = /^(?:[a-zA-Z][a-zA-Z0-9+.-]*:)?\/\/[^\\\/\?]+/; /** * Set status `code`. @@ -823,6 +822,14 @@ res.get = function(field){ */ res.clearCookie = function clearCookie(name, options) { + if (options) { + if (options.maxAge) { + deprecate('res.clearCookie: Passing "options.maxAge" is deprecated. In v5.0.0 of Express, this option will be ignored, as res.clearCookie will automatically set cookies to expire immediately. Please update your code to omit this option.'); + } + if (options.expires) { + deprecate('res.clearCookie: Passing "options.expires" is deprecated. In v5.0.0 of Express, this option will be ignored, as res.clearCookie will automatically set cookies to expire immediately. Please update your code to omit this option.'); + } + } var opts = merge({ expires: new Date(1), path: '/' }, options); return this.cookie(name, '', opts); @@ -914,14 +921,7 @@ res.location = function location(url) { loc = String(url); } - var m = schemaAndHostRegExp.exec(loc); - var pos = m ? m[0].length + 1 : 0; - - // Only encode after host to avoid invalid encoding which can introduce - // vulnerabilities (e.g. `\\` to `%5C`). - loc = loc.slice(0, pos) + encodeUrl(loc.slice(pos)); - - return this.set('Location', loc); + return this.set('Location', encodeUrl(loc)); }; /** @@ -969,7 +969,7 @@ res.redirect = function redirect(url) { html: function(){ var u = escapeHtml(address); - body = '
' + body = '

' + statuses.message[status] + '. Redirecting to ' + u + '

' }, default: function(){ diff --git a/backend/node_modules/express/package.json b/backend/node_modules/express/package.json index f299d88..bffa70a 100644 --- a/backend/node_modules/express/package.json +++ b/backend/node_modules/express/package.json @@ -1,7 +1,7 @@ { "name": "express", "description": "Fast, unopinionated, minimalist web framework", - "version": "4.19.2", + "version": "4.20.0", "author": "TJ Holowaychuk ", "contributors": [ "Aaron Heckmann ", @@ -30,30 +30,30 @@ "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.20.2", + "body-parser": "1.20.3", "content-disposition": "0.5.4", "content-type": "~1.0.4", "cookie": "0.6.0", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "2.0.0", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", "finalhandler": "1.2.0", "fresh": "0.5.2", "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", + "merge-descriptors": "1.0.3", "methods": "~1.1.2", "on-finished": "2.4.1", "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", + "path-to-regexp": "0.1.10", "proxy-addr": "~2.0.7", "qs": "6.11.0", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", + "send": "0.19.0", + "serve-static": "1.16.0", "setprototypeof": "1.2.0", "statuses": "2.0.1", "type-is": "~1.6.18", @@ -91,8 +91,8 @@ "scripts": { "lint": "eslint .", "test": "mocha --require test/support/env --reporter spec --bail --check-leaks test/ test/acceptance/", - "test-ci": "nyc --reporter=lcovonly --reporter=text npm test", - "test-cov": "nyc --reporter=html --reporter=text npm test", + "test-ci": "nyc --exclude examples --exclude test --exclude benchmarks --reporter=lcovonly --reporter=text npm test", + "test-cov": "nyc --exclude examples --exclude test --exclude benchmarks --reporter=html --reporter=text npm test", "test-tap": "mocha --require test/support/env --reporter tap --check-leaks test/ test/acceptance/" } } diff --git a/backend/node_modules/merge-descriptors/README.md b/backend/node_modules/merge-descriptors/README.md index d593c0e..3403f4a 100644 --- a/backend/node_modules/merge-descriptors/README.md +++ b/backend/node_modules/merge-descriptors/README.md @@ -1,4 +1,4 @@ -# Merge Descriptors +# merge-descriptors [![NPM Version][npm-image]][npm-url] [![NPM Downloads][downloads-image]][downloads-url] @@ -27,12 +27,13 @@ animal.name === 'jon' ### merge(destination, source) -Redefines `destination`'s descriptors with `source`'s. +Redefines `destination`'s descriptors with `source`'s. The return value is the +`destination` object. ### merge(destination, source, false) Defines `source`'s descriptors on `destination` if `destination` does not have -a descriptor by the same name. +a descriptor by the same name. The return value is the `destination` object. ## License diff --git a/backend/node_modules/merge-descriptors/index.js b/backend/node_modules/merge-descriptors/index.js index 573b132..f22ebab 100644 --- a/backend/node_modules/merge-descriptors/index.js +++ b/backend/node_modules/merge-descriptors/index.js @@ -31,7 +31,7 @@ var hasOwnProperty = Object.prototype.hasOwnProperty * @public */ -function merge(dest, src, redefine) { +function merge (dest, src, redefine) { if (!dest) { throw new TypeError('argument dest is required') } @@ -45,9 +45,9 @@ function merge(dest, src, redefine) { redefine = true } - Object.getOwnPropertyNames(src).forEach(function forEachOwnPropertyName(name) { + Object.getOwnPropertyNames(src).forEach(function forEachOwnPropertyName (name) { if (!redefine && hasOwnProperty.call(dest, name)) { - // Skip desriptor + // Skip descriptor return } diff --git a/backend/node_modules/merge-descriptors/package.json b/backend/node_modules/merge-descriptors/package.json index 514cdbd..aa9af0a 100644 --- a/backend/node_modules/merge-descriptors/package.json +++ b/backend/node_modules/merge-descriptors/package.json @@ -1,7 +1,7 @@ { "name": "merge-descriptors", "description": "Merge objects using descriptors", - "version": "1.0.1", + "version": "1.0.3", "author": { "name": "Jonathan Ong", "email": "me@jongleberry.com", @@ -13,10 +13,17 @@ "Mike Grabowski " ], "license": "MIT", - "repository": "component/merge-descriptors", + "repository": "sindresorhus/merge-descriptors", + "funding": "https://github.com/sponsors/sindresorhus", "devDependencies": { - "istanbul": "0.4.1", - "mocha": "1.21.5" + "eslint": "5.9.0", + "eslint-config-standard": "12.0.0", + "eslint-plugin-import": "2.14.0", + "eslint-plugin-node": "7.0.1", + "eslint-plugin-promise": "4.0.1", + "eslint-plugin-standard": "4.0.0", + "mocha": "5.2.0", + "nyc": "13.1.0" }, "files": [ "HISTORY.md", @@ -25,8 +32,8 @@ "index.js" ], "scripts": { - "test": "mocha --reporter spec --bail --check-leaks test/", - "test-ci": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/", - "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/" + "lint": "eslint .", + "test": "mocha test/", + "test-cov": "nyc --reporter=html --reporter=text npm test" } } diff --git a/backend/node_modules/path-to-regexp/History.md b/backend/node_modules/path-to-regexp/History.md deleted file mode 100644 index 7f65878..0000000 --- a/backend/node_modules/path-to-regexp/History.md +++ /dev/null @@ -1,36 +0,0 @@ -0.1.7 / 2015-07-28 -================== - - * Fixed regression with escaped round brackets and matching groups. - -0.1.6 / 2015-06-19 -================== - - * Replace `index` feature by outputting all parameters, unnamed and named. - -0.1.5 / 2015-05-08 -================== - - * Add an index property for position in match result. - -0.1.4 / 2015-03-05 -================== - - * Add license information - -0.1.3 / 2014-07-06 -================== - - * Better array support - * Improved support for trailing slash in non-ending mode - -0.1.0 / 2014-03-06 -================== - - * add options.end - -0.0.2 / 2013-02-10 -================== - - * Update to match current express - * add .license property to component.json diff --git a/backend/node_modules/path-to-regexp/index.js b/backend/node_modules/path-to-regexp/index.js index 500d1da..1150335 100644 --- a/backend/node_modules/path-to-regexp/index.js +++ b/backend/node_modules/path-to-regexp/index.js @@ -1,13 +1,13 @@ /** - * Expose `pathtoRegexp`. + * Expose `pathToRegexp`. */ -module.exports = pathtoRegexp; +module.exports = pathToRegexp; /** * Match matching groups in a regular expression. */ -var MATCHING_GROUP_REGEXP = /\((?!\?)/g; +var MATCHING_GROUP_REGEXP = /\\.|\((?:\?<(.*?)>)?(?!\?)/g; /** * Normalize the given path string, @@ -25,22 +25,27 @@ var MATCHING_GROUP_REGEXP = /\((?!\?)/g; * @api private */ -function pathtoRegexp(path, keys, options) { +function pathToRegexp(path, keys, options) { options = options || {}; keys = keys || []; var strict = options.strict; var end = options.end !== false; var flags = options.sensitive ? '' : 'i'; + var lookahead = options.lookahead !== false; var extraOffset = 0; var keysOffset = keys.length; var i = 0; var name = 0; + var pos = 0; + var backtrack = ''; var m; if (path instanceof RegExp) { while (m = MATCHING_GROUP_REGEXP.exec(path.source)) { + if (m[0][0] === '\\') continue; + keys.push({ - name: name++, + name: m[1] || name++, optional: false, offset: m.index }); @@ -54,20 +59,47 @@ function pathtoRegexp(path, keys, options) { // the same keys and options instance into every generation to get // consistent matching groups before we join the sources together. path = path.map(function (value) { - return pathtoRegexp(value, keys, options).source; + return pathToRegexp(value, keys, options).source; }); - return new RegExp('(?:' + path.join('|') + ')', flags); + return new RegExp(path.join('|'), flags); } - path = ('^' + path + (strict ? '' : path[path.length - 1] === '/' ? '?' : '/?')) - .replace(/\/\(/g, '/(?:') - .replace(/([\/\.])/g, '\\$1') - .replace(/(\\\/)?(\\\.)?:(\w+)(\(.*?\))?(\*)?(\?)?/g, function (match, slash, format, key, capture, star, optional, offset) { + path = path.replace( + /\\.|(\/)?(\.)?:(\w+)(\(.*?\))?(\*)?(\?)?|[.*]|\/\(/g, + function (match, slash, format, key, capture, star, optional, offset) { + pos = offset + match.length; + + if (match[0] === '\\') { + backtrack += match; + return match; + } + + if (match === '.') { + backtrack += '\\.'; + extraOffset += 1; + return '\\.'; + } + + backtrack = slash || format ? '' : path.slice(pos, offset); + + if (match === '*') { + extraOffset += 3; + return '(.*)'; + } + + if (match === '/(') { + backtrack += '/'; + extraOffset += 2; + return '/(?:'; + } + slash = slash || ''; - format = format || ''; - capture = capture || '([^\\/' + format + ']+?)'; + format = format ? '\\.' : ''; optional = optional || ''; + capture = capture ? + capture.replace(/\\.|\*/, function (m) { return m === '*' ? '(.*)' : m; }) : + (backtrack ? '((?:(?!/|' + backtrack + ').)+?)' : '([^/' + format + ']+?)'); keys.push({ name: key, @@ -75,41 +107,20 @@ function pathtoRegexp(path, keys, options) { offset: offset + extraOffset }); - var result = '' - + (optional ? '' : slash) - + '(?:' - + format + (optional ? slash : '') + capture - + (star ? '((?:[\\/' + format + '].+?)?)' : '') + var result = '(?:' + + format + slash + capture + + (star ? '((?:[/' + format + '].+?)?)' : '') + ')' + optional; extraOffset += result.length - match.length; return result; - }) - .replace(/\*/g, function (star, index) { - var len = keys.length - - while (len-- > keysOffset && keys[len].offset > index) { - keys[len].offset += 3; // Replacement length minus asterisk length. - } - - return '(.*)'; }); // This is a workaround for handling unnamed matching groups. while (m = MATCHING_GROUP_REGEXP.exec(path)) { - var escapeCount = 0; - var index = m.index; - - while (path.charAt(--index) === '\\') { - escapeCount++; - } - - // It's possible to escape the bracket. - if (escapeCount % 2 === 1) { - continue; - } + if (m[0][0] === '\\') continue; if (keysOffset + i === keys.length || keys[keysOffset + i].offset > m.index) { keys.splice(keysOffset + i, 0, { @@ -122,8 +133,14 @@ function pathtoRegexp(path, keys, options) { i++; } - // If the path is non-ending, match until the end or a slash. - path += (end ? '$' : (path[path.length - 1] === '/' ? '' : '(?=\\/|$)')); + path += strict ? '' : path[path.length - 1] === '/' ? '?' : '/?'; - return new RegExp(path, flags); + // If the path is non-ending, match until the end or a slash. + if (end) { + path += '$'; + } else if (path[path.length - 1] !== '/') { + path += lookahead ? '(?=/|$)' : '(?:/|$)'; + } + + return new RegExp('^' + path, flags); }; diff --git a/backend/node_modules/path-to-regexp/package.json b/backend/node_modules/path-to-regexp/package.json index d4e51b5..0fe1eed 100644 --- a/backend/node_modules/path-to-regexp/package.json +++ b/backend/node_modules/path-to-regexp/package.json @@ -1,7 +1,7 @@ { "name": "path-to-regexp", "description": "Express style path to RegExp utility", - "version": "0.1.7", + "version": "0.1.10", "files": [ "index.js", "LICENSE" @@ -21,7 +21,7 @@ "license": "MIT", "repository": { "type": "git", - "url": "https://github.com/component/path-to-regexp.git" + "url": "https://github.com/pillarjs/path-to-regexp.git" }, "devDependencies": { "mocha": "^1.17.1", diff --git a/backend/node_modules/send/HISTORY.md b/backend/node_modules/send/HISTORY.md index a739774..0dd29d0 100644 --- a/backend/node_modules/send/HISTORY.md +++ b/backend/node_modules/send/HISTORY.md @@ -1,3 +1,8 @@ +0.19.0 / 2024-09-10 +=================== + +* Remove link renderization in html while redirecting + 0.18.0 / 2022-03-23 =================== diff --git a/backend/node_modules/send/index.js b/backend/node_modules/send/index.js index 89afd7e..768f8ca 100644 --- a/backend/node_modules/send/index.js +++ b/backend/node_modules/send/index.js @@ -482,8 +482,7 @@ SendStream.prototype.redirect = function redirect (path) { } var loc = encodeUrl(collapseLeadingSlashes(this.path + '/')) - var doc = createHtmlDocument('Redirecting', 'Redirecting to ' + - escapeHtml(loc) + '') + var doc = createHtmlDocument('Redirecting', 'Redirecting to ' + escapeHtml(loc)) // redirect res.statusCode = 301 diff --git a/backend/node_modules/send/package.json b/backend/node_modules/send/package.json index 7f269d5..a3233e0 100644 --- a/backend/node_modules/send/package.json +++ b/backend/node_modules/send/package.json @@ -1,7 +1,7 @@ { "name": "send", "description": "Better streaming static file server with Range and conditional-GET support", - "version": "0.18.0", + "version": "0.19.0", "author": "TJ Holowaychuk ", "contributors": [ "Douglas Christopher Wilson ", diff --git a/backend/node_modules/serve-static/HISTORY.md b/backend/node_modules/serve-static/HISTORY.md index 6b58456..fde1d72 100644 --- a/backend/node_modules/serve-static/HISTORY.md +++ b/backend/node_modules/serve-static/HISTORY.md @@ -1,3 +1,9 @@ +1.16.0 / 2024-09-10 +=================== + +* Remove link renderization in html while redirecting + + 1.15.0 / 2022-03-24 =================== diff --git a/backend/node_modules/serve-static/index.js b/backend/node_modules/serve-static/index.js index b7d3984..3f3e64e 100644 --- a/backend/node_modules/serve-static/index.js +++ b/backend/node_modules/serve-static/index.js @@ -195,8 +195,7 @@ function createRedirectDirectoryListener () { // reformat the URL var loc = encodeUrl(url.format(originalUrl)) - var doc = createHtmlDocument('Redirecting', 'Redirecting to ' + - escapeHtml(loc) + '') + var doc = createHtmlDocument('Redirecting', 'Redirecting to ' + escapeHtml(loc)) // send redirect response res.statusCode = 301 diff --git a/backend/node_modules/serve-static/package.json b/backend/node_modules/serve-static/package.json index 9d935f5..47d9789 100644 --- a/backend/node_modules/serve-static/package.json +++ b/backend/node_modules/serve-static/package.json @@ -1,7 +1,7 @@ { "name": "serve-static", "description": "Serve static files", - "version": "1.15.0", + "version": "1.16.0", "author": "Douglas Christopher Wilson ", "license": "MIT", "repository": "expressjs/serve-static", diff --git a/backend/package-lock.json b/backend/package-lock.json index c79a05b..4067ba9 100644 --- a/backend/package-lock.json +++ b/backend/package-lock.json @@ -16,15 +16,27 @@ "dotenv": "^16.4.5", "express": "^4.19.2", "jsonwebtoken": "^9.0.2", + "multer": "^1.4.5-lts.1", "mysql2": "^3.10.3", "nodemailer": "^6.9.14", - "sequelize": "^6.37.3" + "sequelize": "^6.37.3", + "sharp": "^0.33.5" }, "devDependencies": { "nodemon": "^3.1.4", "vue-eslint-parser": "9.4.3" } }, + "node_modules/@emnapi/runtime": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.2.0.tgz", + "integrity": "sha512-bV21/9LQmcQeCPEg3BDFtvwL6cwiTMksYNWQQ4KOxCZikEGalWtenoZ0wCiukJINlGCIi2KXx01g4FoH/LxpzQ==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, "node_modules/@eslint-community/eslint-utils": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", @@ -201,6 +213,367 @@ "url": "https://github.com/sponsors/nzakas" } }, + "node_modules/@img/sharp-darwin-arm64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.5.tgz", + "integrity": "sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-arm64": "1.0.4" + } + }, + "node_modules/@img/sharp-darwin-x64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.33.5.tgz", + "integrity": "sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-x64": "1.0.4" + } + }, + "node_modules/@img/sharp-libvips-darwin-arm64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.0.4.tgz", + "integrity": "sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-darwin-x64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.0.4.tgz", + "integrity": "sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.0.5.tgz", + "integrity": "sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==", + "cpu": [ + "arm" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.0.4.tgz", + "integrity": "sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-s390x": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.0.4.tgz", + "integrity": "sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==", + "cpu": [ + "s390x" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-x64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.0.4.tgz", + "integrity": "sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-arm64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.0.4.tgz", + "integrity": "sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-x64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.0.4.tgz", + "integrity": "sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-linux-arm": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.33.5.tgz", + "integrity": "sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==", + "cpu": [ + "arm" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm": "1.0.5" + } + }, + "node_modules/@img/sharp-linux-arm64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.33.5.tgz", + "integrity": "sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm64": "1.0.4" + } + }, + "node_modules/@img/sharp-linux-s390x": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.33.5.tgz", + "integrity": "sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==", + "cpu": [ + "s390x" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-s390x": "1.0.4" + } + }, + "node_modules/@img/sharp-linux-x64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.33.5.tgz", + "integrity": "sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-x64": "1.0.4" + } + }, + "node_modules/@img/sharp-linuxmusl-arm64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.33.5.tgz", + "integrity": "sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-arm64": "1.0.4" + } + }, + "node_modules/@img/sharp-linuxmusl-x64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.33.5.tgz", + "integrity": "sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-x64": "1.0.4" + } + }, + "node_modules/@img/sharp-wasm32": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.33.5.tgz", + "integrity": "sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==", + "cpu": [ + "wasm32" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", + "optional": true, + "dependencies": { + "@emnapi/runtime": "^1.2.0" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-ia32": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.33.5.tgz", + "integrity": "sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==", + "cpu": [ + "ia32" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-x64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.33.5.tgz", + "integrity": "sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, "node_modules/@mapbox/node-pre-gyp": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz", @@ -408,6 +781,12 @@ "node": ">= 8" } }, + "node_modules/append-field": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz", + "integrity": "sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==", + "license": "MIT" + }, "node_modules/aproba": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", @@ -477,9 +856,10 @@ } }, "node_modules/body-parser": { - "version": "1.20.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", - "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", + "version": "1.20.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", + "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", + "license": "MIT", "dependencies": { "bytes": "3.1.2", "content-type": "~1.0.5", @@ -489,7 +869,7 @@ "http-errors": "2.0.0", "iconv-lite": "0.4.24", "on-finished": "2.4.1", - "qs": "6.11.0", + "qs": "6.13.0", "raw-body": "2.5.2", "type-is": "~1.6.18", "unpipe": "1.0.0" @@ -499,6 +879,21 @@ "npm": "1.2.8000 || >= 1.4.16" } }, + "node_modules/body-parser/node_modules/qs": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -525,10 +920,28 @@ "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==" }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "license": "MIT" + }, + "node_modules/busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "dependencies": { + "streamsearch": "^1.1.0" + }, + "engines": { + "node": ">=10.16.0" + } + }, "node_modules/bytes": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -537,6 +950,7 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "license": "MIT", "dependencies": { "es-define-property": "^1.0.0", "es-errors": "^1.3.0", @@ -633,12 +1047,23 @@ "node": ">=10" } }, + "node_modules/color": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", + "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1", + "color-string": "^1.9.0" + }, + "engines": { + "node": ">=12.5.0" + } + }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "peer": true, "dependencies": { "color-name": "~1.1.4" }, @@ -649,9 +1074,17 @@ "node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "peer": true + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "license": "MIT", + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } }, "node_modules/color-support": { "version": "1.1.3", @@ -666,6 +1099,51 @@ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, + "node_modules/concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "engines": [ + "node >= 0.8" + ], + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/concat-stream/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/concat-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, + "node_modules/concat-stream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, "node_modules/console-control-strings": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", @@ -686,6 +1164,7 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -703,6 +1182,12 @@ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "license": "MIT" + }, "node_modules/cors": { "version": "2.8.5", "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", @@ -755,6 +1240,7 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "license": "MIT", "dependencies": { "es-define-property": "^1.0.0", "es-errors": "^1.3.0", @@ -784,6 +1270,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -792,6 +1279,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "license": "MIT", "engines": { "node": ">= 0.8", "npm": "1.2.8000 || >= 1.4.16" @@ -851,6 +1339,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "license": "MIT", "dependencies": { "get-intrinsic": "^1.2.4" }, @@ -862,6 +1351,7 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", "engines": { "node": ">= 0.4" } @@ -1077,41 +1567,43 @@ "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/express": { - "version": "4.19.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", - "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/express/-/express-4.20.0.tgz", + "integrity": "sha512-pLdae7I6QqShF5PnNTCVn4hI91Dx0Grkn2+IAsMTgMIKuQVte2dN9PeGSSAME2FR8anOhVA62QDIUaWVfEXVLw==", + "license": "MIT", "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.20.2", + "body-parser": "1.20.3", "content-disposition": "0.5.4", "content-type": "~1.0.4", "cookie": "0.6.0", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "2.0.0", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", "finalhandler": "1.2.0", "fresh": "0.5.2", "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", + "merge-descriptors": "1.0.3", "methods": "~1.1.2", "on-finished": "2.4.1", "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", + "path-to-regexp": "0.1.10", "proxy-addr": "~2.0.7", "qs": "6.11.0", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", + "send": "0.19.0", + "serve-static": "1.16.0", "setprototypeof": "1.2.0", "statuses": "2.0.1", "type-is": "~1.6.18", @@ -1122,6 +1614,15 @@ "node": ">= 0.10.0" } }, + "node_modules/express/node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -1245,6 +1746,7 @@ "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -1294,6 +1796,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -1330,6 +1833,7 @@ "version": "1.2.4", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "license": "MIT", "dependencies": { "es-errors": "^1.3.0", "function-bind": "^1.1.2", @@ -1393,6 +1897,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "license": "MIT", "dependencies": { "get-intrinsic": "^1.1.3" }, @@ -1413,6 +1918,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "license": "MIT", "dependencies": { "es-define-property": "^1.0.0" }, @@ -1424,6 +1930,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -1435,6 +1942,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -1451,6 +1959,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", "dependencies": { "function-bind": "^1.1.2" }, @@ -1462,6 +1971,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "license": "MIT", "dependencies": { "depd": "2.0.0", "inherits": "2.0.4", @@ -1510,6 +2020,7 @@ "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3" }, @@ -1591,6 +2102,12 @@ "node": ">= 0.10" } }, + "node_modules/is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", + "license": "MIT" + }, "node_modules/is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", @@ -1656,6 +2173,12 @@ "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", "integrity": "sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==" }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "license": "MIT" + }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -1868,14 +2391,19 @@ "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, "node_modules/methods": { "version": "1.1.2", @@ -1889,6 +2417,7 @@ "version": "1.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "license": "MIT", "bin": { "mime": "cli.js" }, @@ -1926,6 +2455,15 @@ "node": "*" } }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/minipass": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", @@ -1992,6 +2530,36 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, + "node_modules/multer": { + "version": "1.4.5-lts.1", + "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.5-lts.1.tgz", + "integrity": "sha512-ywPWvcDMeH+z9gQq5qYHCCy+ethsk4goepZ45GLD63fOu0YcNecQxi64nDs3qluZB+murG3/D4dJ7+dGctcCQQ==", + "license": "MIT", + "dependencies": { + "append-field": "^1.0.0", + "busboy": "^1.0.0", + "concat-stream": "^1.5.2", + "mkdirp": "^0.5.4", + "object-assign": "^4.1.1", + "type-is": "^1.6.4", + "xtend": "^4.0.0" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/multer/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "license": "MIT", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, "node_modules/mysql2": { "version": "3.10.3", "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.10.3.tgz", @@ -2186,6 +2754,7 @@ "version": "1.13.2", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -2312,9 +2881,10 @@ } }, "node_modules/path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz", + "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==", + "license": "MIT" }, "node_modules/pg-connection-string": { "version": "2.6.4", @@ -2343,6 +2913,12 @@ "node": ">= 0.8.0" } }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "license": "MIT" + }, "node_modules/proxy-addr": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", @@ -2375,6 +2951,7 @@ "version": "6.11.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "license": "BSD-3-Clause", "dependencies": { "side-channel": "^1.0.4" }, @@ -2410,6 +2987,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -2418,6 +2996,7 @@ "version": "2.5.2", "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "license": "MIT", "dependencies": { "bytes": "3.1.2", "http-errors": "2.0.0", @@ -2554,9 +3133,10 @@ } }, "node_modules/send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", + "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", + "license": "MIT", "dependencies": { "debug": "2.6.9", "depd": "2.0.0", @@ -2579,7 +3159,8 @@ "node_modules/send/node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" }, "node_modules/seq-queue": { "version": "0.0.5", @@ -2677,9 +3258,10 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "node_modules/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.0.tgz", + "integrity": "sha512-pDLK8zwl2eKaYrs8mrPZBJua4hMplRWJ1tIFksVC3FtBEBnl8dxgeHtsaMS8DhS9i4fLObaon6ABoc4/hQGdPA==", + "license": "MIT", "dependencies": { "encodeurl": "~1.0.2", "escape-html": "~1.0.3", @@ -2690,6 +3272,36 @@ "node": ">= 0.8.0" } }, + "node_modules/serve-static/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/serve-static/node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", @@ -2699,6 +3311,7 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "license": "MIT", "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", @@ -2714,7 +3327,47 @@ "node_modules/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "license": "ISC" + }, + "node_modules/sharp": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.33.5.tgz", + "integrity": "sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==", + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "color": "^4.2.3", + "detect-libc": "^2.0.3", + "semver": "^7.6.3" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-darwin-arm64": "0.33.5", + "@img/sharp-darwin-x64": "0.33.5", + "@img/sharp-libvips-darwin-arm64": "1.0.4", + "@img/sharp-libvips-darwin-x64": "1.0.4", + "@img/sharp-libvips-linux-arm": "1.0.5", + "@img/sharp-libvips-linux-arm64": "1.0.4", + "@img/sharp-libvips-linux-s390x": "1.0.4", + "@img/sharp-libvips-linux-x64": "1.0.4", + "@img/sharp-libvips-linuxmusl-arm64": "1.0.4", + "@img/sharp-libvips-linuxmusl-x64": "1.0.4", + "@img/sharp-linux-arm": "0.33.5", + "@img/sharp-linux-arm64": "0.33.5", + "@img/sharp-linux-s390x": "0.33.5", + "@img/sharp-linux-x64": "0.33.5", + "@img/sharp-linuxmusl-arm64": "0.33.5", + "@img/sharp-linuxmusl-x64": "0.33.5", + "@img/sharp-wasm32": "0.33.5", + "@img/sharp-win32-ia32": "0.33.5", + "@img/sharp-win32-x64": "0.33.5" + } }, "node_modules/shebang-command": { "version": "2.0.0", @@ -2743,6 +3396,7 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "es-errors": "^1.3.0", @@ -2761,6 +3415,15 @@ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" }, + "node_modules/simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.3.1" + } + }, "node_modules/simple-update-notifier": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz", @@ -2789,6 +3452,14 @@ "node": ">= 0.8" } }, + "node_modules/streamsearch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", + "engines": { + "node": ">=10.0.0" + } + }, "node_modules/string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -2885,6 +3556,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "license": "MIT", "engines": { "node": ">=0.6" } @@ -2908,6 +3580,13 @@ "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" }, + "node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "license": "0BSD", + "optional": true + }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -2925,6 +3604,7 @@ "version": "1.6.18", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "license": "MIT", "dependencies": { "media-typer": "0.3.0", "mime-types": "~2.1.24" @@ -2933,6 +3613,12 @@ "node": ">= 0.6" } }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", + "license": "MIT" + }, "node_modules/undefsafe": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", @@ -3152,6 +3838,15 @@ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "license": "MIT", + "engines": { + "node": ">=0.4" + } + }, "node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", diff --git a/backend/package.json b/backend/package.json index 737b46b..6f95bd8 100644 --- a/backend/package.json +++ b/backend/package.json @@ -18,9 +18,11 @@ "dotenv": "^16.4.5", "express": "^4.19.2", "jsonwebtoken": "^9.0.2", + "multer": "^1.4.5-lts.1", "mysql2": "^3.10.3", "nodemailer": "^6.9.14", - "sequelize": "^6.37.3" + "sequelize": "^6.37.3", + "sharp": "^0.33.5" }, "devDependencies": { "nodemon": "^3.1.4", diff --git a/package-lock.json b/package-lock.json index 51635ba..7c14f1c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,7 +10,8 @@ "license": "ISC", "dependencies": { "@babel/eslint-parser": "^7.25.1", - "vue-eslint-parser": "^9.4.3" + "vue-eslint-parser": "^9.4.3", + "vue-multiselect": "^3.0.0" }, "devDependencies": { "@babel/cli": "^7.24.8", @@ -4824,6 +4825,16 @@ "node": ">=10" } }, + "node_modules/vue-multiselect": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/vue-multiselect/-/vue-multiselect-3.0.0.tgz", + "integrity": "sha512-uupKdINgz7j83lQToCL7KkgQQxvG43el++hsR39YT9pCe1DwzUGmKzPxjVP6rqskXed5P6DtUASYAlCliW740Q==", + "license": "MIT", + "engines": { + "node": ">= 14.18.1", + "npm": ">= 6.14.15" + } + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", diff --git a/package.json b/package.json index 2645a4b..f1d30b5 100644 --- a/package.json +++ b/package.json @@ -19,6 +19,7 @@ }, "dependencies": { "@babel/eslint-parser": "^7.25.1", - "vue-eslint-parser": "^9.4.3" + "vue-eslint-parser": "^9.4.3", + "vue-multiselect": "^3.0.0" } }

' + statuses.message[status] + '. Redirecting to ' + u + '