formation 1 год назад
Родитель
Сommit
2458f13376
41 измененных файлов с 1767 добавлено и 1552 удалено
  1. 4 4
      angular-client/src/app/components/auth/gain/gain-list/gain-list.component.html
  2. 0 6
      angular-client/src/app/components/home/home.component.html
  3. 2 2
      angular-client/src/environments/environment.ts
  4. 1 1
      express-server/lib/db.js
  5. 51 11
      express-server/node_modules/body-parser/package.json
  6. 51 15
      express-server/node_modules/content-type/package.json
  7. 10 5
      express-server/node_modules/cookie/HISTORY.md
  8. 63 48
      express-server/node_modules/cookie/README.md
  9. 5 1
      express-server/node_modules/cookie/index.js
  10. 16 15
      express-server/node_modules/cookie/package.json
  11. 4 0
      express-server/node_modules/debug/package.json
  12. 1 0
      express-server/node_modules/depd/package.json
  13. 41 5
      express-server/node_modules/express/History.md
  14. 3 3
      express-server/node_modules/express/Readme.md
  15. 12 3
      express-server/node_modules/express/lib/response.js
  16. 1 1
      express-server/node_modules/express/lib/router/index.js
  17. 15 10
      express-server/node_modules/express/lib/router/route.js
  18. 3 4
      express-server/node_modules/express/lib/utils.js
  19. 12 13
      express-server/node_modules/express/package.json
  20. 1 1
      express-server/node_modules/iconv-lite/package.json
  21. 3 0
      express-server/node_modules/inherits/package.json
  22. 0 1
      express-server/node_modules/mime-types/package.json
  23. 2 1
      express-server/node_modules/mkdirp/package.json
  24. 0 1
      express-server/node_modules/ms/package.json
  25. 1 0
      express-server/node_modules/parseurl/package.json
  26. 3 0
      express-server/node_modules/qs/.editorconfig
  27. 5 5
      express-server/node_modules/qs/.eslintrc
  28. 158 0
      express-server/node_modules/qs/CHANGELOG.md
  29. 3 1
      express-server/node_modules/qs/README.md
  30. 19 9
      express-server/node_modules/qs/dist/qs.js
  31. 12 3
      express-server/node_modules/qs/lib/stringify.js
  32. 28 24
      express-server/node_modules/qs/package.json
  33. 14 0
      express-server/node_modules/qs/test/parse.js
  34. 54 10
      express-server/node_modules/qs/test/stringify.js
  35. 5 0
      express-server/node_modules/raw-body/HISTORY.md
  36. 1 1
      express-server/node_modules/raw-body/README.md
  37. 7 0
      express-server/node_modules/raw-body/index.js
  38. 17 18
      express-server/node_modules/raw-body/package.json
  39. 2 2
      express-server/node_modules/safe-buffer/package.json
  40. 1129 1321
      express-server/package-lock.json
  41. 8 7
      express-server/package.json

+ 4 - 4
angular-client/src/app/components/auth/gain/gain-list/gain-list.component.html

@@ -1,11 +1,11 @@
  <!-- table of users -->
  <!-- table of users -->
-<<<<<<<<< Temporary merge branch 1
-=========
 
 
->>>>>>> test
+
+
+
     <table *ngIf="lots" mat-table  [dataSource]="lots" class="tablegain">
     <table *ngIf="lots" mat-table  [dataSource]="lots" class="tablegain">
 
 
->>>>>>> dev
+
 
 
       <!-- *ngIf="lots" -->
       <!-- *ngIf="lots" -->
       <!-- index -->
       <!-- index -->

+ 0 - 6
angular-client/src/app/components/home/home.component.html

@@ -3,13 +3,7 @@
          <h1 class="text-center  gain mb-4">jeu-concours</h1>
          <h1 class="text-center  gain mb-4">jeu-concours</h1>
 
 
     <div class="range">
     <div class="range">
-<<<<<<< HEAD
-
-        
-        <h2 class="text-center  gain mb-4">Tentez de gagner un Range Rover !</h2>
-=======
         <h2 class="text-center  gain mb-4">Tentez de gagner un Range Rover </h2>
         <h2 class="text-center  gain mb-4">Tentez de gagner un Range Rover </h2>
->>>>>>> test end
         <h3 class="text-center concours font-weight-bold">Du 16 juillet 2020 au 16 septembre 2024</h3>
         <h3 class="text-center concours font-weight-bold">Du 16 juillet 2020 au 16 septembre 2024</h3>
         <h4 class="text-center concours">Pour tout achat d'une valeur de 18€ ou plus dans l'un de nos restaurants reçoit un code
         <h4 class="text-center concours">Pour tout achat d'une valeur de 18€ ou plus dans l'un de nos restaurants reçoit un code
             Promo</h4>
             Promo</h4>

+ 2 - 2
angular-client/src/environments/environment.ts

@@ -4,8 +4,8 @@
 
 
 export const environment = {
 export const environment = {
   production: false,
   production: false,
-  name: "(Dev)",
-  apiUrl: `http://api-dev.foodgame.fr`,
+  name: "(Test)",
+  apiUrl: `http://localhost:4000`,
 };
 };
 
 
 /*
 /*

+ 1 - 1
express-server/lib/db.js

@@ -5,7 +5,7 @@ const  config  = require('../config/config.json');
 // const { User } = require('../models/user.model');
 // const { User } = require('../models/user.model');
  //const bcrypt = require('bcrypt');
  //const bcrypt = require('bcrypt');
 // const Role = require('../lib/role');
 // const Role = require('../lib/role');
-//const db = config.url;
+const db = config.url;
 
 
 //var db = 'mongodb://database_preprod:27017/mean-fatboar-db';
 //var db = 'mongodb://database_preprod:27017/mean-fatboar-db';
 //var mongoURI = 'mongodb://localhost:27017/my-db';
 //var mongoURI = 'mongodb://localhost:27017/my-db';

+ 51 - 11
express-server/node_modules/body-parser/package.json

@@ -1,13 +1,43 @@
 {
 {
-  "name": "body-parser",
-  "description": "Node.js body parsing middleware",
-  "version": "1.20.2",
+  "_from": "body-parser@^1.19.0",
+  "_id": "body-parser@1.20.2",
+  "_inBundle": false,
+  "_integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==",
+  "_location": "/body-parser",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "body-parser@^1.19.0",
+    "name": "body-parser",
+    "escapedName": "body-parser",
+    "rawSpec": "^1.19.0",
+    "saveSpec": null,
+    "fetchSpec": "^1.19.0"
+  },
+  "_requiredBy": [
+    "/",
+    "/express"
+  ],
+  "_resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz",
+  "_shasum": "6feb0e21c4724d06de7ff38da36dad4f57a747fd",
+  "_spec": "body-parser@^1.19.0",
+  "_where": "C:\\FatboarProject\\express-server",
+  "bugs": {
+    "url": "https://github.com/expressjs/body-parser/issues"
+  },
+  "bundleDependencies": false,
   "contributors": [
   "contributors": [
-    "Douglas Christopher Wilson <doug@somethingdoug.com>",
-    "Jonathan Ong <me@jongleberry.com> (http://jongleberry.com)"
+    {
+      "name": "Douglas Christopher Wilson",
+      "email": "doug@somethingdoug.com"
+    },
+    {
+      "name": "Jonathan Ong",
+      "email": "me@jongleberry.com",
+      "url": "http://jongleberry.com"
+    }
   ],
   ],
-  "license": "MIT",
-  "repository": "expressjs/body-parser",
   "dependencies": {
   "dependencies": {
     "bytes": "3.1.2",
     "bytes": "3.1.2",
     "content-type": "~1.0.5",
     "content-type": "~1.0.5",
@@ -22,6 +52,8 @@
     "type-is": "~1.6.18",
     "type-is": "~1.6.18",
     "unpipe": "1.0.0"
     "unpipe": "1.0.0"
   },
   },
+  "deprecated": false,
+  "description": "Node.js body parsing middleware",
   "devDependencies": {
   "devDependencies": {
     "eslint": "8.34.0",
     "eslint": "8.34.0",
     "eslint-config-standard": "14.1.1",
     "eslint-config-standard": "14.1.1",
@@ -36,6 +68,10 @@
     "safe-buffer": "5.2.1",
     "safe-buffer": "5.2.1",
     "supertest": "6.3.3"
     "supertest": "6.3.3"
   },
   },
+  "engines": {
+    "node": ">= 0.8",
+    "npm": "1.2.8000 || >= 1.4.16"
+  },
   "files": [
   "files": [
     "lib/",
     "lib/",
     "LICENSE",
     "LICENSE",
@@ -43,14 +79,18 @@
     "SECURITY.md",
     "SECURITY.md",
     "index.js"
     "index.js"
   ],
   ],
-  "engines": {
-    "node": ">= 0.8",
-    "npm": "1.2.8000 || >= 1.4.16"
+  "homepage": "https://github.com/expressjs/body-parser#readme",
+  "license": "MIT",
+  "name": "body-parser",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/expressjs/body-parser.git"
   },
   },
   "scripts": {
   "scripts": {
     "lint": "eslint .",
     "lint": "eslint .",
     "test": "mocha --require test/support/env --reporter spec --check-leaks --bail test/",
     "test": "mocha --require test/support/env --reporter spec --check-leaks --bail test/",
     "test-ci": "nyc --reporter=lcov --reporter=text npm test",
     "test-ci": "nyc --reporter=lcov --reporter=text npm test",
     "test-cov": "nyc --reporter=html --reporter=text npm test"
     "test-cov": "nyc --reporter=html --reporter=text npm test"
-  }
+  },
+  "version": "1.20.2"
 }
 }

+ 51 - 15
express-server/node_modules/content-type/package.json

@@ -1,17 +1,38 @@
 {
 {
-  "name": "content-type",
-  "description": "Create and parse HTTP Content-Type header",
-  "version": "1.0.5",
-  "author": "Douglas Christopher Wilson <doug@somethingdoug.com>",
-  "license": "MIT",
-  "keywords": [
-    "content-type",
-    "http",
-    "req",
-    "res",
-    "rfc7231"
+  "_from": "content-type@~1.0.4",
+  "_id": "content-type@1.0.5",
+  "_inBundle": false,
+  "_integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
+  "_location": "/content-type",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "content-type@~1.0.4",
+    "name": "content-type",
+    "escapedName": "content-type",
+    "rawSpec": "~1.0.4",
+    "saveSpec": null,
+    "fetchSpec": "~1.0.4"
+  },
+  "_requiredBy": [
+    "/body-parser",
+    "/express"
   ],
   ],
-  "repository": "jshttp/content-type",
+  "_resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
+  "_shasum": "8b773162656d1d1086784c8f23a54ce6d73d7918",
+  "_spec": "content-type@~1.0.4",
+  "_where": "C:\\FatboarProject\\express-server\\node_modules\\express",
+  "author": {
+    "name": "Douglas Christopher Wilson",
+    "email": "doug@somethingdoug.com"
+  },
+  "bugs": {
+    "url": "https://github.com/jshttp/content-type/issues"
+  },
+  "bundleDependencies": false,
+  "deprecated": false,
+  "description": "Create and parse HTTP Content-Type header",
   "devDependencies": {
   "devDependencies": {
     "deep-equal": "1.0.1",
     "deep-equal": "1.0.1",
     "eslint": "8.32.0",
     "eslint": "8.32.0",
@@ -23,14 +44,28 @@
     "mocha": "10.2.0",
     "mocha": "10.2.0",
     "nyc": "15.1.0"
     "nyc": "15.1.0"
   },
   },
+  "engines": {
+    "node": ">= 0.6"
+  },
   "files": [
   "files": [
     "LICENSE",
     "LICENSE",
     "HISTORY.md",
     "HISTORY.md",
     "README.md",
     "README.md",
     "index.js"
     "index.js"
   ],
   ],
-  "engines": {
-    "node": ">= 0.6"
+  "homepage": "https://github.com/jshttp/content-type#readme",
+  "keywords": [
+    "content-type",
+    "http",
+    "req",
+    "res",
+    "rfc7231"
+  ],
+  "license": "MIT",
+  "name": "content-type",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jshttp/content-type.git"
   },
   },
   "scripts": {
   "scripts": {
     "lint": "eslint .",
     "lint": "eslint .",
@@ -38,5 +73,6 @@
     "test-ci": "nyc --reporter=lcovonly --reporter=text npm test",
     "test-ci": "nyc --reporter=lcovonly --reporter=text npm test",
     "test-cov": "nyc --reporter=html --reporter=text npm test",
     "test-cov": "nyc --reporter=html --reporter=text npm test",
     "version": "node scripts/version-history.js && git add HISTORY.md"
     "version": "node scripts/version-history.js && git add HISTORY.md"
-  }
+  },
+  "version": "1.0.5"
 }
 }

+ 10 - 5
express-server/node_modules/cookie/HISTORY.md

@@ -1,16 +1,21 @@
+0.6.0 / 2023-11-06
+==================
+
+  * Add `partitioned` option
+
 0.5.0 / 2022-04-11
 0.5.0 / 2022-04-11
 ==================
 ==================
 
 
   * Add `priority` option
   * Add `priority` option
   * Fix `expires` option to reject invalid dates
   * Fix `expires` option to reject invalid dates
-  * pref: improve default decode speed
-  * pref: remove slow string split in parse
+  * perf: improve default decode speed
+  * perf: remove slow string split in parse
 
 
 0.4.2 / 2022-02-02
 0.4.2 / 2022-02-02
 ==================
 ==================
 
 
-  * pref: read value only when assigning in parse
-  * pref: remove unnecessary regexp in parse
+  * perf: read value only when assigning in parse
+  * perf: remove unnecessary regexp in parse
 
 
 0.4.1 / 2020-04-21
 0.4.1 / 2020-04-21
 ==================
 ==================
@@ -41,7 +46,7 @@
 
 
   * perf: enable strict mode
   * perf: enable strict mode
   * perf: use for loop in parse
   * perf: use for loop in parse
-  * perf: use string concatination for serialization
+  * perf: use string concatenation for serialization
 
 
 0.2.3 / 2015-10-25
 0.2.3 / 2015-10-25
 ==================
 ==================

+ 63 - 48
express-server/node_modules/cookie/README.md

@@ -2,9 +2,9 @@
 
 
 [![NPM Version][npm-version-image]][npm-url]
 [![NPM Version][npm-version-image]][npm-url]
 [![NPM Downloads][npm-downloads-image]][npm-url]
 [![NPM Downloads][npm-downloads-image]][npm-url]
-[![Node.js Version][node-version-image]][node-version-url]
-[![Build Status][github-actions-ci-image]][github-actions-ci-url]
-[![Test Coverage][coveralls-image]][coveralls-url]
+[![Node.js Version][node-image]][node-url]
+[![Build Status][ci-image]][ci-url]
+[![Coverage Status][coveralls-image]][coveralls-url]
 
 
 Basic HTTP cookie parser and serializer for HTTP servers.
 Basic HTTP cookie parser and serializer for HTTP servers.
 
 
@@ -107,6 +107,17 @@ The given number will be converted to an integer by rounding down. By default, n
 `maxAge` are set, then `maxAge` takes precedence, but it is possible not all clients by obey this,
 `maxAge` are set, then `maxAge` takes precedence, but it is possible not all clients by obey this,
 so if both are set, they should point to the same date and time.
 so if both are set, they should point to the same date and time.
 
 
+##### partitioned
+
+Specifies the `boolean` value for the [`Partitioned` `Set-Cookie`](rfc-cutler-httpbis-partitioned-cookies)
+attribute. When truthy, the `Partitioned` attribute is set, otherwise it is not. By default, the
+`Partitioned` attribute is not set.
+
+**note** This is an attribute that has not yet been fully standardized, and may change in the future.
+This also means many clients may ignore this attribute until they understand it.
+
+More information about can be found in [the proposal](https://github.com/privacycg/CHIPS).
+
 ##### path
 ##### path
 
 
 Specifies the value for the [`Path` `Set-Cookie` attribute][rfc-6265-5.2.4]. By default, the path
 Specifies the value for the [`Path` `Set-Cookie` attribute][rfc-6265-5.2.4]. By default, the path
@@ -212,49 +223,52 @@ $ npm test
 ```
 ```
 $ npm run bench
 $ npm run bench
 
 
-> cookie@0.4.2 bench
+> cookie@0.5.0 bench
 > node benchmark/index.js
 > node benchmark/index.js
 
 
-  node@16.14.0
-  v8@9.4.146.24-node.20
-  uv@1.43.0
-  zlib@1.2.11
+  node@18.18.2
+  acorn@8.10.0
+  ada@2.6.0
+  ares@1.19.1
   brotli@1.0.9
   brotli@1.0.9
-  ares@1.18.1
-  modules@93
-  nghttp2@1.45.1
-  napi@8
-  llhttp@6.0.4
-  openssl@1.1.1m+quic
-  cldr@40.0
-  icu@70.1
-  tz@2021a3
-  unicode@14.0
-  ngtcp2@0.1.0-DEV
-  nghttp3@0.1.0-DEV
+  cldr@43.1
+  icu@73.2
+  llhttp@6.0.11
+  modules@108
+  napi@9
+  nghttp2@1.57.0
+  nghttp3@0.7.0
+  ngtcp2@0.8.1
+  openssl@3.0.10+quic
+  simdutf@3.2.14
+  tz@2023c
+  undici@5.26.3
+  unicode@15.0
+  uv@1.44.2
+  uvwasi@0.0.18
+  v8@10.2.154.26-node.26
+  zlib@1.2.13.1-motley
 
 
 > node benchmark/parse-top.js
 > node benchmark/parse-top.js
 
 
   cookie.parse - top sites
   cookie.parse - top sites
 
 
-  15 tests completed.
-
-  parse accounts.google.com x 2,421,245 ops/sec ±0.80% (188 runs sampled)
-  parse apple.com           x 2,684,710 ops/sec ±0.59% (189 runs sampled)
-  parse cloudflare.com      x 2,231,418 ops/sec ±0.76% (186 runs sampled)
-  parse docs.google.com     x 2,316,357 ops/sec ±1.28% (187 runs sampled)
-  parse drive.google.com    x 2,363,543 ops/sec ±0.49% (189 runs sampled)
-  parse en.wikipedia.org    x   839,414 ops/sec ±0.53% (189 runs sampled)
-  parse linkedin.com        x   553,797 ops/sec ±0.63% (190 runs sampled)
-  parse maps.google.com     x 1,314,779 ops/sec ±0.72% (189 runs sampled)
-  parse microsoft.com       x   153,783 ops/sec ±0.53% (190 runs sampled)
-  parse play.google.com     x 2,249,574 ops/sec ±0.59% (187 runs sampled)
-  parse plus.google.com     x 2,258,682 ops/sec ±0.60% (188 runs sampled)
-  parse sites.google.com    x 2,247,069 ops/sec ±0.68% (189 runs sampled)
-  parse support.google.com  x 1,456,840 ops/sec ±0.70% (187 runs sampled)
-  parse www.google.com      x 1,046,028 ops/sec ±0.58% (188 runs sampled)
-  parse youtu.be            x   937,428 ops/sec ±1.47% (190 runs sampled)
-  parse youtube.com         x   963,878 ops/sec ±0.59% (190 runs sampled)
+  14 tests completed.
+
+  parse accounts.google.com x 2,588,913 ops/sec ±0.74% (186 runs sampled)
+  parse apple.com           x 2,370,002 ops/sec ±0.69% (186 runs sampled)
+  parse cloudflare.com      x 2,213,102 ops/sec ±0.88% (188 runs sampled)
+  parse docs.google.com     x 2,194,157 ops/sec ±1.03% (184 runs sampled)
+  parse drive.google.com    x 2,265,084 ops/sec ±0.79% (187 runs sampled)
+  parse en.wikipedia.org    x   457,099 ops/sec ±0.81% (186 runs sampled)
+  parse linkedin.com        x   504,407 ops/sec ±0.89% (186 runs sampled)
+  parse maps.google.com     x 1,230,959 ops/sec ±0.98% (186 runs sampled)
+  parse microsoft.com       x   926,294 ops/sec ±0.88% (184 runs sampled)
+  parse play.google.com     x 2,311,338 ops/sec ±0.83% (185 runs sampled)
+  parse support.google.com  x 1,508,850 ops/sec ±0.86% (186 runs sampled)
+  parse www.google.com      x 1,022,582 ops/sec ±1.32% (182 runs sampled)
+  parse youtu.be            x   332,136 ops/sec ±1.02% (185 runs sampled)
+  parse youtube.com         x   323,833 ops/sec ±0.77% (183 runs sampled)
 
 
 > node benchmark/parse.js
 > node benchmark/parse.js
 
 
@@ -262,12 +276,12 @@ $ npm run bench
 
 
   6 tests completed.
   6 tests completed.
 
 
-  simple      x 2,745,604 ops/sec ±0.77% (185 runs sampled)
-  decode      x   557,287 ops/sec ±0.60% (188 runs sampled)
-  unquote     x 2,498,475 ops/sec ±0.55% (189 runs sampled)
-  duplicates  x   868,591 ops/sec ±0.89% (187 runs sampled)
-  10 cookies  x   306,745 ops/sec ±0.49% (190 runs sampled)
-  100 cookies x    22,414 ops/sec ±2.38% (182 runs sampled)
+  simple      x 3,214,032 ops/sec ±1.61% (183 runs sampled)
+  decode      x   587,237 ops/sec ±1.16% (187 runs sampled)
+  unquote     x 2,954,618 ops/sec ±1.35% (183 runs sampled)
+  duplicates  x   857,008 ops/sec ±0.89% (187 runs sampled)
+  10 cookies  x   292,133 ops/sec ±0.89% (187 runs sampled)
+  100 cookies x    22,610 ops/sec ±0.68% (187 runs sampled)
 ```
 ```
 
 
 ## References
 ## References
@@ -275,6 +289,7 @@ $ npm run bench
 - [RFC 6265: HTTP State Management Mechanism][rfc-6265]
 - [RFC 6265: HTTP State Management Mechanism][rfc-6265]
 - [Same-site Cookies][rfc-6265bis-09-5.4.7]
 - [Same-site Cookies][rfc-6265bis-09-5.4.7]
 
 
+[rfc-cutler-httpbis-partitioned-cookies]: https://tools.ietf.org/html/draft-cutler-httpbis-partitioned-cookies/
 [rfc-west-cookie-priority-00-4.1]: https://tools.ietf.org/html/draft-west-cookie-priority-00#section-4.1
 [rfc-west-cookie-priority-00-4.1]: https://tools.ietf.org/html/draft-west-cookie-priority-00#section-4.1
 [rfc-6265bis-09-5.4.7]: https://tools.ietf.org/html/draft-ietf-httpbis-rfc6265bis-09#section-5.4.7
 [rfc-6265bis-09-5.4.7]: https://tools.ietf.org/html/draft-ietf-httpbis-rfc6265bis-09#section-5.4.7
 [rfc-6265]: https://tools.ietf.org/html/rfc6265
 [rfc-6265]: https://tools.ietf.org/html/rfc6265
@@ -291,12 +306,12 @@ $ npm run bench
 
 
 [MIT](LICENSE)
 [MIT](LICENSE)
 
 
+[ci-image]: https://badgen.net/github/checks/jshttp/cookie/master?label=ci
+[ci-url]: https://github.com/jshttp/cookie/actions/workflows/ci.yml
 [coveralls-image]: https://badgen.net/coveralls/c/github/jshttp/cookie/master
 [coveralls-image]: https://badgen.net/coveralls/c/github/jshttp/cookie/master
 [coveralls-url]: https://coveralls.io/r/jshttp/cookie?branch=master
 [coveralls-url]: https://coveralls.io/r/jshttp/cookie?branch=master
-[github-actions-ci-image]: https://img.shields.io/github/workflow/status/jshttp/cookie/ci/master?label=ci
-[github-actions-ci-url]: https://github.com/jshttp/cookie/actions/workflows/ci.yml
-[node-version-image]: https://badgen.net/npm/node/cookie
-[node-version-url]: https://nodejs.org/en/download
+[node-image]: https://badgen.net/npm/node/cookie
+[node-url]: https://nodejs.org/en/download
 [npm-downloads-image]: https://badgen.net/npm/dm/cookie
 [npm-downloads-image]: https://badgen.net/npm/dm/cookie
 [npm-url]: https://npmjs.org/package/cookie
 [npm-url]: https://npmjs.org/package/cookie
 [npm-version-image]: https://badgen.net/npm/v/cookie
 [npm-version-image]: https://badgen.net/npm/v/cookie

+ 5 - 1
express-server/node_modules/cookie/index.js

@@ -172,6 +172,10 @@ function serialize(name, val, options) {
     str += '; Secure';
     str += '; Secure';
   }
   }
 
 
+  if (opt.partitioned) {
+    str += '; Partitioned'
+  }
+
   if (opt.priority) {
   if (opt.priority) {
     var priority = typeof opt.priority === 'string'
     var priority = typeof opt.priority === 'string'
       ? opt.priority.toLowerCase()
       ? opt.priority.toLowerCase()
@@ -233,7 +237,7 @@ function decode (str) {
 /**
 /**
  * URL-encode value.
  * URL-encode value.
  *
  *
- * @param {string} str
+ * @param {string} val
  * @returns {string}
  * @returns {string}
  */
  */
 
 

+ 16 - 15
express-server/node_modules/cookie/package.json

@@ -1,26 +1,27 @@
 {
 {
-  "_from": "cookie@0.5.0",
-  "_id": "cookie@0.5.0",
+  "_from": "cookie@0.6.0",
+  "_id": "cookie@0.6.0",
   "_inBundle": false,
   "_inBundle": false,
-  "_integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==",
+  "_integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==",
   "_location": "/cookie",
   "_location": "/cookie",
   "_phantomChildren": {},
   "_phantomChildren": {},
   "_requested": {
   "_requested": {
     "type": "version",
     "type": "version",
     "registry": true,
     "registry": true,
-    "raw": "cookie@0.5.0",
+    "raw": "cookie@0.6.0",
     "name": "cookie",
     "name": "cookie",
     "escapedName": "cookie",
     "escapedName": "cookie",
-    "rawSpec": "0.5.0",
+    "rawSpec": "0.6.0",
     "saveSpec": null,
     "saveSpec": null,
-    "fetchSpec": "0.5.0"
+    "fetchSpec": "0.6.0"
   },
   },
   "_requiredBy": [
   "_requiredBy": [
-    "/express"
+    "/express",
+    "/express-session"
   ],
   ],
-  "_resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz",
-  "_shasum": "d1f5d71adec6558c58f389987c366aa47e994f8b",
-  "_spec": "cookie@0.5.0",
+  "_resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz",
+  "_shasum": "2798b04b071b0ecbff0dbb62a505a8efa4e19051",
+  "_spec": "cookie@0.6.0",
   "_where": "C:\\FatboarProject\\express-server\\node_modules\\express",
   "_where": "C:\\FatboarProject\\express-server\\node_modules\\express",
   "author": {
   "author": {
     "name": "Roman Shtylman",
     "name": "Roman Shtylman",
@@ -41,12 +42,12 @@
   "devDependencies": {
   "devDependencies": {
     "beautify-benchmark": "0.2.4",
     "beautify-benchmark": "0.2.4",
     "benchmark": "2.1.4",
     "benchmark": "2.1.4",
-    "eslint": "7.32.0",
-    "eslint-plugin-markdown": "2.2.1",
-    "mocha": "9.2.2",
+    "eslint": "8.53.0",
+    "eslint-plugin-markdown": "3.0.1",
+    "mocha": "10.2.0",
     "nyc": "15.1.0",
     "nyc": "15.1.0",
     "safe-buffer": "5.2.1",
     "safe-buffer": "5.2.1",
-    "top-sites": "1.1.97"
+    "top-sites": "1.1.194"
   },
   },
   "engines": {
   "engines": {
     "node": ">= 0.6"
     "node": ">= 0.6"
@@ -78,5 +79,5 @@
     "update-bench": "node scripts/update-benchmark.js",
     "update-bench": "node scripts/update-benchmark.js",
     "version": "node scripts/version-history.js && git add HISTORY.md"
     "version": "node scripts/version-history.js && git add HISTORY.md"
   },
   },
-  "version": "0.5.0"
+  "version": "0.6.0"
 }
 }

+ 4 - 0
express-server/node_modules/debug/package.json

@@ -18,8 +18,12 @@
   "_requiredBy": [
   "_requiredBy": [
     "/body-parser",
     "/body-parser",
     "/express",
     "/express",
+    "/express-session",
     "/finalhandler",
     "/finalhandler",
     "/get-uri",
     "/get-uri",
+    "/http-proxy-agent",
+    "/pac-proxy-agent",
+    "/proxy-agent/https-proxy-agent",
     "/send"
     "/send"
   ],
   ],
   "_resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
   "_resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",

+ 1 - 0
express-server/node_modules/depd/package.json

@@ -18,6 +18,7 @@
   "_requiredBy": [
   "_requiredBy": [
     "/body-parser",
     "/body-parser",
     "/express",
     "/express",
+    "/express-session",
     "/http-errors",
     "/http-errors",
     "/send"
     "/send"
   ],
   ],

+ 41 - 5
express-server/node_modules/express/History.md

@@ -1,3 +1,39 @@
+4.19.2 / 2024-03-25
+==========
+
+  * Improved fix for open redirect allow list bypass
+
+4.19.1 / 2024-03-20
+==========
+
+  * Allow passing non-strings to res.location with new encoding handling checks
+
+4.19.0 / 2024-03-20
+==========
+
+  * Prevent open redirect allow list bypass due to encodeurl
+  * deps: cookie@0.6.0
+
+4.18.3 / 2024-02-29
+==========
+
+  * Fix routing requests without method
+  * deps: body-parser@1.20.2
+    - Fix strict json error message on Node.js 19+
+    - deps: content-type@~1.0.5
+    - deps: raw-body@2.5.2
+  * deps: cookie@0.6.0
+    - Add `partitioned` option
+
+4.18.2 / 2022-10-08
+===================
+
+  * Fix regression routing a large stack in a single route
+  * deps: body-parser@1.20.1
+    - deps: qs@6.11.0
+    - perf: remove unnecessary object clone
+  * deps: qs@6.11.0
+
 4.18.1 / 2022-04-29
 4.18.1 / 2022-04-29
 ===================
 ===================
 
 
@@ -2102,7 +2138,7 @@
  * deps: connect@2.21.0
  * deps: connect@2.21.0
    - deprecate `connect(middleware)` -- use `app.use(middleware)` instead
    - deprecate `connect(middleware)` -- use `app.use(middleware)` instead
    - deprecate `connect.createServer()` -- use `connect()` instead
    - deprecate `connect.createServer()` -- use `connect()` instead
-   - fix `res.setHeader()` patch to work with with get -> append -> set pattern
+   - fix `res.setHeader()` patch to work with get -> append -> set pattern
    - deps: compression@~1.0.8
    - deps: compression@~1.0.8
    - deps: errorhandler@~1.1.1
    - deps: errorhandler@~1.1.1
    - deps: express-session@~1.5.0
    - deps: express-session@~1.5.0
@@ -3313,8 +3349,8 @@ Shaw]
   * Added node v0.1.97 compatibility
   * Added node v0.1.97 compatibility
   * Added support for deleting cookies via Request#cookie('key', null)
   * Added support for deleting cookies via Request#cookie('key', null)
   * Updated haml submodule
   * Updated haml submodule
-  * Fixed not-found page, now using using charset utf-8
-  * Fixed show-exceptions page, now using using charset utf-8
+  * Fixed not-found page, now using charset utf-8
+  * Fixed show-exceptions page, now using charset utf-8
   * Fixed view support due to fs.readFile Buffers
   * Fixed view support due to fs.readFile Buffers
   * Changed; mime.type() no longer accepts ".type" due to node extname() changes
   * Changed; mime.type() no longer accepts ".type" due to node extname() changes
 
 
@@ -3349,7 +3385,7 @@ Shaw]
 ==================
 ==================
 
 
   * Added charset support via Request#charset (automatically assigned to 'UTF-8' when respond()'s
   * Added charset support via Request#charset (automatically assigned to 'UTF-8' when respond()'s
-    encoding is set to 'utf8' or 'utf-8'.
+    encoding is set to 'utf8' or 'utf-8').
   * Added "encoding" option to Request#render(). Closes #299
   * Added "encoding" option to Request#render(). Closes #299
   * Added "dump exceptions" setting, which is enabled by default.
   * Added "dump exceptions" setting, which is enabled by default.
   * Added simple ejs template engine support
   * Added simple ejs template engine support
@@ -3388,7 +3424,7 @@ Shaw]
   * Added [haml.js](http://github.com/visionmedia/haml.js) submodule; removed haml-js
   * Added [haml.js](http://github.com/visionmedia/haml.js) submodule; removed haml-js
   * Added callback function support to Request#halt() as 3rd/4th arg
   * Added callback function support to Request#halt() as 3rd/4th arg
   * Added preprocessing of route param wildcards using param(). Closes #251
   * Added preprocessing of route param wildcards using param(). Closes #251
-  * Added view partial support (with collections etc)
+  * Added view partial support (with collections etc.)
   * Fixed bug preventing falsey params (such as ?page=0). Closes #286
   * Fixed bug preventing falsey params (such as ?page=0). Closes #286
   * Fixed setting of multiple cookies. Closes #199
   * Fixed setting of multiple cookies. Closes #199
   * Changed; view naming convention is now NAME.TYPE.ENGINE (for example page.html.haml)
   * Changed; view naming convention is now NAME.TYPE.ENGINE (for example page.html.haml)

+ 3 - 3
express-server/node_modules/express/Readme.md

@@ -1,6 +1,6 @@
 [![Express Logo](https://i.cloudup.com/zfY6lL7eFa-3000x3000.png)](http://expressjs.com/)
 [![Express Logo](https://i.cloudup.com/zfY6lL7eFa-3000x3000.png)](http://expressjs.com/)
 
 
-  Fast, unopinionated, minimalist web framework for [node](http://nodejs.org).
+  Fast, unopinionated, minimalist web framework for [Node.js](http://nodejs.org).
 
 
   [![NPM Version][npm-version-image]][npm-url]
   [![NPM Version][npm-version-image]][npm-url]
   [![NPM Install Size][npm-install-size-image]][npm-install-size-url]
   [![NPM Install Size][npm-install-size-image]][npm-install-size-url]
@@ -51,7 +51,7 @@ for more information.
 ## Docs & Community
 ## Docs & Community
 
 
   * [Website and Documentation](http://expressjs.com/) - [[website repo](https://github.com/expressjs/expressjs.com)]
   * [Website and Documentation](http://expressjs.com/) - [[website repo](https://github.com/expressjs/expressjs.com)]
-  * [#express](https://webchat.freenode.net/?channels=express) on freenode IRC
+  * [#express](https://web.libera.chat/#express) on [Libera Chat](https://libera.chat) IRC
   * [GitHub Organization](https://github.com/expressjs) for Official Middleware & Modules
   * [GitHub Organization](https://github.com/expressjs) for Official Middleware & Modules
   * Visit the [Wiki](https://github.com/expressjs/express/wiki)
   * Visit the [Wiki](https://github.com/expressjs/express/wiki)
   * [Google Group](https://groups.google.com/group/express-js) for discussion
   * [Google Group](https://groups.google.com/group/express-js) for discussion
@@ -104,7 +104,7 @@ $ npm start
   To view the examples, clone the Express repo and install the dependencies:
   To view the examples, clone the Express repo and install the dependencies:
 
 
 ```console
 ```console
-$ git clone git://github.com/expressjs/express.git --depth 1
+$ git clone https://github.com/expressjs/express.git --depth 1
 $ cd express
 $ cd express
 $ npm install
 $ npm install
 ```
 ```

+ 12 - 3
express-server/node_modules/express/lib/response.js

@@ -55,6 +55,7 @@ module.exports = res
  */
  */
 
 
 var charsetRegExp = /;\s*charset\s*=/;
 var charsetRegExp = /;\s*charset\s*=/;
+var schemaAndHostRegExp = /^(?:[a-zA-Z][a-zA-Z0-9+.-]*:)?\/\/[^\\\/\?]+/;
 
 
 /**
 /**
  * Set status `code`.
  * Set status `code`.
@@ -904,15 +905,23 @@ res.cookie = function (name, value, options) {
  */
  */
 
 
 res.location = function location(url) {
 res.location = function location(url) {
-  var loc = url;
+  var loc;
 
 
   // "back" is an alias for the referrer
   // "back" is an alias for the referrer
   if (url === 'back') {
   if (url === 'back') {
     loc = this.req.get('Referrer') || '/';
     loc = this.req.get('Referrer') || '/';
+  } else {
+    loc = String(url);
   }
   }
 
 
-  // set location
-  return this.set('Location', encodeUrl(loc));
+  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);
 };
 };
 
 
 /**
 /**

+ 1 - 1
express-server/node_modules/express/lib/router/index.js

@@ -36,7 +36,7 @@ var toString = Object.prototype.toString;
  * Initialize a new `Router` with the given `options`.
  * Initialize a new `Router` with the given `options`.
  *
  *
  * @param {Object} [options]
  * @param {Object} [options]
- * @return {Router} which is an callable function
+ * @return {Router} which is a callable function
  * @public
  * @public
  */
  */
 
 

+ 15 - 10
express-server/node_modules/express/lib/router/route.js

@@ -60,7 +60,10 @@ Route.prototype._handles_method = function _handles_method(method) {
     return true;
     return true;
   }
   }
 
 
-  var name = method.toLowerCase();
+  // normalize name
+  var name = typeof method === 'string'
+    ? method.toLowerCase()
+    : method
 
 
   if (name === 'head' && !this.methods['head']) {
   if (name === 'head' && !this.methods['head']) {
     name = 'get';
     name = 'get';
@@ -103,8 +106,10 @@ Route.prototype.dispatch = function dispatch(req, res, done) {
   if (stack.length === 0) {
   if (stack.length === 0) {
     return done();
     return done();
   }
   }
+  var method = typeof req.method === 'string'
+    ? req.method.toLowerCase()
+    : req.method
 
 
-  var method = req.method.toLowerCase();
   if (method === 'head' && !this.methods['head']) {
   if (method === 'head' && !this.methods['head']) {
     method = 'get';
     method = 'get';
   }
   }
@@ -124,21 +129,21 @@ Route.prototype.dispatch = function dispatch(req, res, done) {
       return done(err)
       return done(err)
     }
     }
 
 
-    var layer = stack[idx++];
-    if (!layer) {
-      return done(err);
-    }
-
     // max sync stack
     // max sync stack
     if (++sync > 100) {
     if (++sync > 100) {
       return setImmediate(next, err)
       return setImmediate(next, err)
     }
     }
 
 
-    if (layer.method && layer.method !== method) {
-      return next(err);
+    var layer = stack[idx++]
+
+    // end of layers
+    if (!layer) {
+      return done(err)
     }
     }
 
 
-    if (err) {
+    if (layer.method && layer.method !== method) {
+      next(err)
+    } else if (err) {
       layer.handle_error(err, req, res, next);
       layer.handle_error(err, req, res, next);
     } else {
     } else {
       layer.handle_request(req, res, next);
       layer.handle_request(req, res, next);

+ 3 - 4
express-server/node_modules/express/lib/utils.js

@@ -117,17 +117,15 @@ exports.contentDisposition = deprecate.function(contentDisposition,
 /**
 /**
  * Parse accept params `str` returning an
  * Parse accept params `str` returning an
  * object with `.value`, `.quality` and `.params`.
  * object with `.value`, `.quality` and `.params`.
- * also includes `.originalIndex` for stable sorting
  *
  *
  * @param {String} str
  * @param {String} str
- * @param {Number} index
  * @return {Object}
  * @return {Object}
  * @api private
  * @api private
  */
  */
 
 
-function acceptParams(str, index) {
+function acceptParams (str) {
   var parts = str.split(/ *; */);
   var parts = str.split(/ *; */);
-  var ret = { value: parts[0], quality: 1, params: {}, originalIndex: index };
+  var ret = { value: parts[0], quality: 1, params: {} }
 
 
   for (var i = 1; i < parts.length; ++i) {
   for (var i = 1; i < parts.length; ++i) {
     var pms = parts[i].split(/ *= */);
     var pms = parts[i].split(/ *= */);
@@ -282,6 +280,7 @@ function createETagGenerator (options) {
 /**
 /**
  * Parse an extended query string with qs.
  * Parse an extended query string with qs.
  *
  *
+ * @param {String} str
  * @return {Object}
  * @return {Object}
  * @private
  * @private
  */
  */

+ 12 - 13
express-server/node_modules/express/package.json

@@ -1,8 +1,8 @@
 {
 {
   "_from": "express@^4.17.1",
   "_from": "express@^4.17.1",
-  "_id": "express@4.18.1",
+  "_id": "express@4.19.2",
   "_inBundle": false,
   "_inBundle": false,
-  "_integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==",
+  "_integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==",
   "_location": "/express",
   "_location": "/express",
   "_phantomChildren": {},
   "_phantomChildren": {},
   "_requested": {
   "_requested": {
@@ -19,8 +19,8 @@
     "/",
     "/",
     "/api-express-exporter"
     "/api-express-exporter"
   ],
   ],
-  "_resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz",
-  "_shasum": "7797de8b9c72c857b9cd0e14a5eea80666267caf",
+  "_resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz",
+  "_shasum": "e25437827a3aa7f2a827bc8171bbbb664a356465",
   "_spec": "express@^4.17.1",
   "_spec": "express@^4.17.1",
   "_where": "C:\\FatboarProject\\express-server",
   "_where": "C:\\FatboarProject\\express-server",
   "author": {
   "author": {
@@ -64,10 +64,10 @@
   "dependencies": {
   "dependencies": {
     "accepts": "~1.3.8",
     "accepts": "~1.3.8",
     "array-flatten": "1.1.1",
     "array-flatten": "1.1.1",
-    "body-parser": "1.20.0",
+    "body-parser": "1.20.2",
     "content-disposition": "0.5.4",
     "content-disposition": "0.5.4",
     "content-type": "~1.0.4",
     "content-type": "~1.0.4",
-    "cookie": "0.5.0",
+    "cookie": "0.6.0",
     "cookie-signature": "1.0.6",
     "cookie-signature": "1.0.6",
     "debug": "2.6.9",
     "debug": "2.6.9",
     "depd": "2.0.0",
     "depd": "2.0.0",
@@ -83,7 +83,7 @@
     "parseurl": "~1.3.3",
     "parseurl": "~1.3.3",
     "path-to-regexp": "0.1.7",
     "path-to-regexp": "0.1.7",
     "proxy-addr": "~2.0.7",
     "proxy-addr": "~2.0.7",
-    "qs": "6.10.3",
+    "qs": "6.11.0",
     "range-parser": "~1.2.1",
     "range-parser": "~1.2.1",
     "safe-buffer": "5.2.1",
     "safe-buffer": "5.2.1",
     "send": "0.18.0",
     "send": "0.18.0",
@@ -101,18 +101,17 @@
     "connect-redis": "3.4.2",
     "connect-redis": "3.4.2",
     "cookie-parser": "1.4.6",
     "cookie-parser": "1.4.6",
     "cookie-session": "2.0.0",
     "cookie-session": "2.0.0",
-    "ejs": "3.1.7",
-    "eslint": "7.32.0",
+    "ejs": "3.1.9",
+    "eslint": "8.47.0",
     "express-session": "1.17.2",
     "express-session": "1.17.2",
     "hbs": "4.2.0",
     "hbs": "4.2.0",
     "marked": "0.7.0",
     "marked": "0.7.0",
     "method-override": "3.0.0",
     "method-override": "3.0.0",
-    "mocha": "9.2.2",
+    "mocha": "10.2.0",
     "morgan": "1.10.0",
     "morgan": "1.10.0",
-    "multiparty": "4.2.3",
     "nyc": "15.1.0",
     "nyc": "15.1.0",
     "pbkdf2-password": "1.2.1",
     "pbkdf2-password": "1.2.1",
-    "supertest": "6.2.3",
+    "supertest": "6.3.0",
     "vhost": "~3.0.2"
     "vhost": "~3.0.2"
   },
   },
   "engines": {
   "engines": {
@@ -151,5 +150,5 @@
     "test-cov": "nyc --reporter=html --reporter=text npm test",
     "test-cov": "nyc --reporter=html --reporter=text npm test",
     "test-tap": "mocha --require test/support/env --reporter tap --check-leaks test/ test/acceptance/"
     "test-tap": "mocha --require test/support/env --reporter tap --check-leaks test/ test/acceptance/"
   },
   },
-  "version": "4.18.1"
+  "version": "4.19.2"
 }
 }

+ 1 - 1
express-server/node_modules/iconv-lite/package.json

@@ -17,7 +17,7 @@
   },
   },
   "_requiredBy": [
   "_requiredBy": [
     "/body-parser",
     "/body-parser",
-    "/needle",
+    "/commoner",
     "/raw-body"
     "/raw-body"
   ],
   ],
   "_resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
   "_resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",

+ 3 - 0
express-server/node_modules/inherits/package.json

@@ -16,7 +16,10 @@
     "fetchSpec": "2.0.4"
     "fetchSpec": "2.0.4"
   },
   },
   "_requiredBy": [
   "_requiredBy": [
+    "/bl/readable-stream",
+    "/commoner/glob",
     "/ftp/readable-stream",
     "/ftp/readable-stream",
+    "/get-uri/readable-stream",
     "/glob",
     "/glob",
     "/http-errors",
     "/http-errors",
     "/readable-stream"
     "/readable-stream"

+ 0 - 1
express-server/node_modules/mime-types/package.json

@@ -17,7 +17,6 @@
   },
   },
   "_requiredBy": [
   "_requiredBy": [
     "/accepts",
     "/accepts",
-    "/form-data",
     "/type-is"
     "/type-is"
   ],
   ],
   "_resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
   "_resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",

+ 2 - 1
express-server/node_modules/mkdirp/package.json

@@ -16,7 +16,8 @@
     "fetchSpec": "^1.0.4"
     "fetchSpec": "^1.0.4"
   },
   },
   "_requiredBy": [
   "_requiredBy": [
-    "/"
+    "/",
+    "/tar"
   ],
   ],
   "_resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
   "_resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
   "_shasum": "3eb5ed62622756d79a5f0e2a221dfebad75c2f7e",
   "_shasum": "3eb5ed62622756d79a5f0e2a221dfebad75c2f7e",

+ 0 - 1
express-server/node_modules/ms/package.json

@@ -17,7 +17,6 @@
   },
   },
   "_requiredBy": [
   "_requiredBy": [
     "/debug",
     "/debug",
-    "/http-proxy-agent/debug",
     "/mquery/debug"
     "/mquery/debug"
   ],
   ],
   "_resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
   "_resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",

+ 1 - 0
express-server/node_modules/parseurl/package.json

@@ -17,6 +17,7 @@
   },
   },
   "_requiredBy": [
   "_requiredBy": [
     "/express",
     "/express",
+    "/express-session",
     "/finalhandler",
     "/finalhandler",
     "/serve-static"
     "/serve-static"
   ],
   ],

+ 3 - 0
express-server/node_modules/qs/.editorconfig

@@ -38,3 +38,6 @@ indent_size = off
 indent_style = off
 indent_style = off
 indent = off
 indent = off
 max_line_length = off
 max_line_length = off
+
+[.nycrc]
+indent_style = tab

+ 5 - 5
express-server/node_modules/qs/.eslintrc

@@ -14,8 +14,8 @@
         "id-length": [2, { "min": 1, "max": 25, "properties": "never" }],
         "id-length": [2, { "min": 1, "max": 25, "properties": "never" }],
         "indent": [2, 4],
         "indent": [2, 4],
         "max-lines-per-function": [2, { "max": 150 }],
         "max-lines-per-function": [2, { "max": 150 }],
-        "max-params": [2, 15],
-        "max-statements": [2, 52],
+        "max-params": [2, 16],
+        "max-statements": [2, 53],
         "multiline-comment-style": 0,
         "multiline-comment-style": 0,
         "no-continue": 1,
         "no-continue": 1,
         "no-magic-numbers": 0,
         "no-magic-numbers": 0,
@@ -32,7 +32,7 @@
                 "no-buffer-constructor": 0,
                 "no-buffer-constructor": 0,
                 "no-extend-native": 0,
                 "no-extend-native": 0,
                 "no-throw-literal": 0,
                 "no-throw-literal": 0,
-            }
-        }
-    ]
+            },
+        },
+    ],
 }
 }

+ 158 - 0
express-server/node_modules/qs/CHANGELOG.md

@@ -1,3 +1,15 @@
+## **6.11.0
+- [New] [Fix] `stringify`: revert 0e903c0; add `commaRoundTrip` option (#442)
+- [readme] fix version badge
+
+## **6.10.5**
+- [Fix] `stringify`: with `arrayFormat: comma`, properly include an explicit `[]` on a single-item array (#434)
+
+## **6.10.4**
+- [Fix] `stringify`: with `arrayFormat: comma`, include an explicit `[]` on a single-item array (#441)
+- [meta] use `npmignore` to autogenerate an npmignore file
+- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `has-symbol`, `object-inspect`, `tape`
+
 ## **6.10.3**
 ## **6.10.3**
 - [Fix] `parse`: ignore `__proto__` keys (#428)
 - [Fix] `parse`: ignore `__proto__` keys (#428)
 - [Robustness] `stringify`: avoid relying on a global `undefined` (#427)
 - [Robustness] `stringify`: avoid relying on a global `undefined` (#427)
@@ -27,6 +39,18 @@
 - [Tests] use `ljharb/actions/node/install` instead of `ljharb/actions/node/run`
 - [Tests] use `ljharb/actions/node/install` instead of `ljharb/actions/node/run`
 - [Tests] Revert "[meta] ignore eclint transitive audit warning"
 - [Tests] Revert "[meta] ignore eclint transitive audit warning"
 
 
+## **6.9.7**
+- [Fix] `parse`: ignore `__proto__` keys (#428)
+- [Fix] `stringify`: avoid encoding arrayformat comma when `encodeValuesOnly = true` (#424)
+- [Robustness] `stringify`: avoid relying on a global `undefined` (#427)
+- [readme] remove travis badge; add github actions/codecov badges; update URLs
+- [Docs] add note and links for coercing primitive values (#408)
+- [Tests] clean up stringify tests slightly
+- [meta] fix README.md (#399)
+- Revert "[meta] ignore eclint transitive audit warning"
+- [actions] backport actions from main
+- [Dev Deps] backport updates from main
+
 ## **6.9.6**
 ## **6.9.6**
 - [Fix] restore `dist` dir; mistakenly removed in d4f6c32
 - [Fix] restore `dist` dir; mistakenly removed in d4f6c32
 
 
@@ -75,6 +99,19 @@
 - [Tests] up to `node` `v12.10`, `v11.15`, `v10.16`, `v8.16`
 - [Tests] up to `node` `v12.10`, `v11.15`, `v10.16`, `v8.16`
 - [Tests] `Buffer.from` in node v5.0-v5.9 and v4.0-v4.4 requires a TypedArray
 - [Tests] `Buffer.from` in node v5.0-v5.9 and v4.0-v4.4 requires a TypedArray
 
 
+## **6.8.3**
+- [Fix] `parse`: ignore `__proto__` keys (#428)
+- [Robustness] `stringify`: avoid relying on a global `undefined` (#427)
+- [Fix] `stringify`: avoid encoding arrayformat comma when `encodeValuesOnly = true` (#424)
+- [readme] remove travis badge; add github actions/codecov badges; update URLs
+- [Tests] clean up stringify tests slightly
+- [Docs] add note and links for coercing primitive values (#408)
+- [meta] fix README.md (#399)
+- [actions] backport actions from main
+- [Dev Deps] backport updates from main
+- [Refactor] `stringify`: reduce branching
+- [meta] do not publish workflow files
+
 ## **6.8.2**
 ## **6.8.2**
 - [Fix] proper comma parsing of URL-encoded commas (#361)
 - [Fix] proper comma parsing of URL-encoded commas (#361)
 - [Fix] parses comma delimited array while having percent-encoded comma treated as normal text (#336)
 - [Fix] parses comma delimited array while having percent-encoded comma treated as normal text (#336)
@@ -106,6 +143,19 @@
 - [meta] add FUNDING.yml
 - [meta] add FUNDING.yml
 - [meta] Clean up license text so it’s properly detected as BSD-3-Clause
 - [meta] Clean up license text so it’s properly detected as BSD-3-Clause
 
 
+## **6.7.3**
+- [Fix] `parse`: ignore `__proto__` keys (#428)
+- [Fix] `stringify`: avoid encoding arrayformat comma when `encodeValuesOnly = true` (#424)
+- [Robustness] `stringify`: avoid relying on a global `undefined` (#427)
+- [readme] remove travis badge; add github actions/codecov badges; update URLs
+- [Docs] add note and links for coercing primitive values (#408)
+- [meta] fix README.md (#399)
+- [meta] do not publish workflow files
+- [actions] backport actions from main
+- [Dev Deps] backport updates from main
+- [Tests] use `nyc` for coverage
+- [Tests] clean up stringify tests slightly
+
 ## **6.7.2**
 ## **6.7.2**
 - [Fix] proper comma parsing of URL-encoded commas (#361)
 - [Fix] proper comma parsing of URL-encoded commas (#361)
 - [Fix] parses comma delimited array while having percent-encoded comma treated as normal text (#336)
 - [Fix] parses comma delimited array while having percent-encoded comma treated as normal text (#336)
@@ -144,6 +194,32 @@
 - [Tests] fix Buffer tests to work in node < 4.5 and node < 5.10
 - [Tests] fix Buffer tests to work in node < 4.5 and node < 5.10
 - [Tests] temporarily allow coverage to fail
 - [Tests] temporarily allow coverage to fail
 
 
+## **6.6.1**
+- [Fix] `parse`: ignore `__proto__` keys (#428)
+- [Fix] fix for an impossible situation: when the formatter is called with a non-string value
+- [Fix] `utils.merge`: avoid a crash with a null target and an array source
+- [Fix] `utils.merge`: avoid a crash with a null target and a truthy non-array source
+- [Fix] correctly parse nested arrays
+- [Robustness] `stringify`: avoid relying on a global `undefined` (#427)
+- [Robustness] `stringify`: cache `Object.prototype.hasOwnProperty`
+- [Refactor] `formats`: tiny bit of cleanup.
+- [Refactor] `utils`: `isBuffer`: small tweak; add tests
+- [Refactor]: `stringify`/`utils`: cache `Array.isArray`
+- [Refactor] `utils`: reduce observable [[Get]]s
+- [Refactor] use cached `Array.isArray`
+- [Refactor] `parse`/`stringify`: make a function to normalize the options
+- [readme] remove travis badge; add github actions/codecov badges; update URLs
+- [Docs] Clarify the need for "arrayLimit" option
+- [meta] fix README.md (#399)
+- [meta] do not publish workflow files
+- [meta] Clean up license text so it’s properly detected as BSD-3-Clause
+- [meta] add FUNDING.yml
+- [meta] Fixes typo in CHANGELOG.md
+- [actions] backport actions from main
+- [Tests] fix Buffer tests to work in node < 4.5 and node < 5.10
+- [Tests] always use `String(x)` over `x.toString()`
+- [Dev Deps] backport from main
+
 ## **6.6.0**
 ## **6.6.0**
 - [New] Add support for iso-8859-1, utf8 "sentinel" and numeric entities (#268)
 - [New] Add support for iso-8859-1, utf8 "sentinel" and numeric entities (#268)
 - [New] move two-value combine to a `utils` function (#189)
 - [New] move two-value combine to a `utils` function (#189)
@@ -160,6 +236,30 @@
 - [Dev Deps] update `browserify`, `eslint`, `@ljharb/eslint-config`, `iconv-lite`, `safe-publish-latest`, `tape`
 - [Dev Deps] update `browserify`, `eslint`, `@ljharb/eslint-config`, `iconv-lite`, `safe-publish-latest`, `tape`
 - [Tests] up to `node` `v10.10`, `v9.11`, `v8.12`, `v6.14`, `v4.9`; pin included builds to LTS
 - [Tests] up to `node` `v10.10`, `v9.11`, `v8.12`, `v6.14`, `v4.9`; pin included builds to LTS
 
 
+## **6.5.3**
+- [Fix] `parse`: ignore `__proto__` keys (#428)
+- [Fix]` `utils.merge`: avoid a crash with a null target and a truthy non-array source
+- [Fix] correctly parse nested arrays
+- [Fix] `stringify`: fix a crash with `strictNullHandling` and a custom `filter`/`serializeDate` (#279)
+- [Fix] `utils`: `merge`: fix crash when `source` is a truthy primitive & no options are provided
+- [Fix] when `parseArrays` is false, properly handle keys ending in `[]`
+- [Fix] fix for an impossible situation: when the formatter is called with a non-string value
+- [Fix] `utils.merge`: avoid a crash with a null target and an array source
+- [Refactor] `utils`: reduce observable [[Get]]s
+- [Refactor] use cached `Array.isArray`
+- [Refactor] `stringify`: Avoid arr = arr.concat(...), push to the existing instance (#269)
+- [Refactor] `parse`: only need to reassign the var once
+- [Robustness] `stringify`: avoid relying on a global `undefined` (#427)
+- [readme] remove travis badge; add github actions/codecov badges; update URLs
+- [Docs] Clean up license text so it’s properly detected as BSD-3-Clause
+- [Docs] Clarify the need for "arrayLimit" option
+- [meta] fix README.md (#399)
+- [meta] add FUNDING.yml
+- [actions] backport actions from main
+- [Tests] always use `String(x)` over `x.toString()`
+- [Tests] remove nonexistent tape option
+- [Dev Deps] backport from main
+
 ## **6.5.2**
 ## **6.5.2**
 - [Fix] use `safer-buffer` instead of `Buffer` constructor
 - [Fix] use `safer-buffer` instead of `Buffer` constructor
 - [Refactor] utils: `module.exports` one thing, instead of mutating `exports` (#230)
 - [Refactor] utils: `module.exports` one thing, instead of mutating `exports` (#230)
@@ -186,6 +286,27 @@
 - [Tests] up to `node` `v8.1`, `v7.10`, `v6.11`; npm v4.6 breaks on node < v1; npm v5+ breaks on node < v4
 - [Tests] up to `node` `v8.1`, `v7.10`, `v6.11`; npm v4.6 breaks on node < v1; npm v5+ breaks on node < v4
 - [Tests] add `editorconfig-tools`
 - [Tests] add `editorconfig-tools`
 
 
+## **6.4.1**
+- [Fix] `parse`: ignore `__proto__` keys (#428)
+- [Fix] fix for an impossible situation: when the formatter is called with a non-string value
+- [Fix] use `safer-buffer` instead of `Buffer` constructor
+- [Fix] `utils.merge`: avoid a crash with a null target and an array source
+- [Fix]` `utils.merge`: avoid a crash with a null target and a truthy non-array source
+- [Fix] `stringify`: fix a crash with `strictNullHandling` and a custom `filter`/`serializeDate` (#279)
+- [Fix] `utils`: `merge`: fix crash when `source` is a truthy primitive & no options are provided
+- [Fix] when `parseArrays` is false, properly handle keys ending in `[]`
+- [Robustness] `stringify`: avoid relying on a global `undefined` (#427)
+- [Refactor] use cached `Array.isArray`
+- [Refactor] `stringify`: Avoid arr = arr.concat(...), push to the existing instance (#269)
+- [readme] remove travis badge; add github actions/codecov badges; update URLs
+- [Docs] Clarify the need for "arrayLimit" option
+- [meta] fix README.md (#399)
+- [meta] Clean up license text so it’s properly detected as BSD-3-Clause
+- [meta] add FUNDING.yml
+- [actions] backport actions from main
+- [Tests] remove nonexistent tape option
+- [Dev Deps] backport from main
+
 ## **6.4.0**
 ## **6.4.0**
 - [New] `qs.stringify`: add `encodeValuesOnly` option
 - [New] `qs.stringify`: add `encodeValuesOnly` option
 - [Fix] follow `allowPrototypes` option during merge (#201, #201)
 - [Fix] follow `allowPrototypes` option during merge (#201, #201)
@@ -195,6 +316,26 @@
 - [Tests] up to `node` `v7.7`, `v6.10`,` v4.8`; disable osx builds since they block linux builds
 - [Tests] up to `node` `v7.7`, `v6.10`,` v4.8`; disable osx builds since they block linux builds
 - [eslint] reduce warnings
 - [eslint] reduce warnings
 
 
+## **6.3.3**
+- [Fix] `parse`: ignore `__proto__` keys (#428)
+- [Fix] fix for an impossible situation: when the formatter is called with a non-string value
+- [Fix] `utils.merge`: avoid a crash with a null target and an array source
+- [Fix]` `utils.merge`: avoid a crash with a null target and a truthy non-array source
+- [Fix] `stringify`: fix a crash with `strictNullHandling` and a custom `filter`/`serializeDate` (#279)
+- [Fix] `utils`: `merge`: fix crash when `source` is a truthy primitive & no options are provided
+- [Fix] when `parseArrays` is false, properly handle keys ending in `[]`
+- [Robustness] `stringify`: avoid relying on a global `undefined` (#427)
+- [Refactor] use cached `Array.isArray`
+- [Refactor] `stringify`: Avoid arr = arr.concat(...), push to the existing instance (#269)
+- [Docs] Clarify the need for "arrayLimit" option
+- [meta] fix README.md (#399)
+- [meta] Clean up license text so it’s properly detected as BSD-3-Clause
+- [meta] add FUNDING.yml
+- [actions] backport actions from main
+- [Tests] use `safer-buffer` instead of `Buffer` constructor
+- [Tests] remove nonexistent tape option
+- [Dev Deps] backport from main
+
 ## **6.3.2**
 ## **6.3.2**
 - [Fix] follow `allowPrototypes` option during merge (#201, #200)
 - [Fix] follow `allowPrototypes` option during merge (#201, #200)
 - [Dev Deps] update `eslint`
 - [Dev Deps] update `eslint`
@@ -228,6 +369,23 @@
 - [Tests] skip Object.create tests when null objects are not available
 - [Tests] skip Object.create tests when null objects are not available
 - [Tests] Turn on eslint for test files (#175)
 - [Tests] Turn on eslint for test files (#175)
 
 
+## **6.2.4**
+- [Fix] `parse`: ignore `__proto__` keys (#428)
+- [Fix] `utils.merge`: avoid a crash with a null target and an array source
+- [Fix] `utils.merge`: avoid a crash with a null target and a truthy non-array source
+- [Fix] `utils`: `merge`: fix crash when `source` is a truthy primitive & no options are provided
+- [Fix] when `parseArrays` is false, properly handle keys ending in `[]`
+- [Robustness] `stringify`: avoid relying on a global `undefined` (#427)
+- [Refactor] use cached `Array.isArray`
+- [Docs] Clarify the need for "arrayLimit" option
+- [meta] fix README.md (#399)
+- [meta] Clean up license text so it’s properly detected as BSD-3-Clause
+- [meta] add FUNDING.yml
+- [actions] backport actions from main
+- [Tests] use `safer-buffer` instead of `Buffer` constructor
+- [Tests] remove nonexistent tape option
+- [Dev Deps] backport from main
+
 ## **6.2.3**
 ## **6.2.3**
 - [Fix] follow `allowPrototypes` option during merge (#201, #200)
 - [Fix] follow `allowPrototypes` option during merge (#201, #200)
 - [Fix] chmod a-x
 - [Fix] chmod a-x

+ 3 - 1
express-server/node_modules/qs/README.md

@@ -1,4 +1,4 @@
-# qs <sup>[![Version Badge][2]][1]</sup>
+# qs <sup>[![Version Badge][npm-version-svg]][package-url]</sup>
 
 
 [![github actions][actions-image]][actions-url]
 [![github actions][actions-image]][actions-url]
 [![coverage][codecov-image]][codecov-url]
 [![coverage][codecov-image]][codecov-url]
@@ -402,6 +402,8 @@ qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'comma' })
 // 'a=b,c'
 // 'a=b,c'
 ```
 ```
 
 
+Note: when using `arrayFormat` set to `'comma'`, you can also pass the `commaRoundTrip` option set to `true` or `false`, to append `[]` on single-item arrays, so that they can round trip through a parse.
+
 When objects are stringified, by default they use bracket notation:
 When objects are stringified, by default they use bracket notation:
 
 
 ```javascript
 ```javascript

+ 19 - 9
express-server/node_modules/qs/dist/qs.js

@@ -366,6 +366,7 @@ var stringify = function stringify(
     object,
     object,
     prefix,
     prefix,
     generateArrayPrefix,
     generateArrayPrefix,
+    commaRoundTrip,
     strictNullHandling,
     strictNullHandling,
     skipNulls,
     skipNulls,
     encoder,
     encoder,
@@ -430,7 +431,7 @@ var stringify = function stringify(
                 for (var i = 0; i < valuesArray.length; ++i) {
                 for (var i = 0; i < valuesArray.length; ++i) {
                     valuesJoined += (i === 0 ? '' : ',') + formatter(encoder(valuesArray[i], defaults.encoder, charset, 'value', format));
                     valuesJoined += (i === 0 ? '' : ',') + formatter(encoder(valuesArray[i], defaults.encoder, charset, 'value', format));
                 }
                 }
-                return [formatter(keyValue) + '=' + valuesJoined];
+                return [formatter(keyValue) + (commaRoundTrip && isArray(obj) && valuesArray.length === 1 ? '[]' : '') + '=' + valuesJoined];
             }
             }
             return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder, charset, 'value', format))];
             return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder, charset, 'value', format))];
         }
         }
@@ -454,6 +455,8 @@ var stringify = function stringify(
         objKeys = sort ? keys.sort(sort) : keys;
         objKeys = sort ? keys.sort(sort) : keys;
     }
     }
 
 
+    var adjustedPrefix = commaRoundTrip && isArray(obj) && obj.length === 1 ? prefix + '[]' : prefix;
+
     for (var j = 0; j < objKeys.length; ++j) {
     for (var j = 0; j < objKeys.length; ++j) {
         var key = objKeys[j];
         var key = objKeys[j];
         var value = typeof key === 'object' && typeof key.value !== 'undefined' ? key.value : obj[key];
         var value = typeof key === 'object' && typeof key.value !== 'undefined' ? key.value : obj[key];
@@ -463,8 +466,8 @@ var stringify = function stringify(
         }
         }
 
 
         var keyPrefix = isArray(obj)
         var keyPrefix = isArray(obj)
-            ? typeof generateArrayPrefix === 'function' ? generateArrayPrefix(prefix, key) : prefix
-            : prefix + (allowDots ? '.' + key : '[' + key + ']');
+            ? typeof generateArrayPrefix === 'function' ? generateArrayPrefix(adjustedPrefix, key) : adjustedPrefix
+            : adjustedPrefix + (allowDots ? '.' + key : '[' + key + ']');
 
 
         sideChannel.set(object, step);
         sideChannel.set(object, step);
         var valueSideChannel = getSideChannel();
         var valueSideChannel = getSideChannel();
@@ -473,6 +476,7 @@ var stringify = function stringify(
             value,
             value,
             keyPrefix,
             keyPrefix,
             generateArrayPrefix,
             generateArrayPrefix,
+            commaRoundTrip,
             strictNullHandling,
             strictNullHandling,
             skipNulls,
             skipNulls,
             encoder,
             encoder,
@@ -569,6 +573,10 @@ module.exports = function (object, opts) {
     }
     }
 
 
     var generateArrayPrefix = arrayPrefixGenerators[arrayFormat];
     var generateArrayPrefix = arrayPrefixGenerators[arrayFormat];
+    if (opts && 'commaRoundTrip' in opts && typeof opts.commaRoundTrip !== 'boolean') {
+        throw new TypeError('`commaRoundTrip` must be a boolean, or absent');
+    }
+    var commaRoundTrip = generateArrayPrefix === 'comma' && opts && opts.commaRoundTrip;
 
 
     if (!objKeys) {
     if (!objKeys) {
         objKeys = Object.keys(obj);
         objKeys = Object.keys(obj);
@@ -589,6 +597,7 @@ module.exports = function (object, opts) {
             obj[key],
             obj[key],
             key,
             key,
             generateArrayPrefix,
             generateArrayPrefix,
+            commaRoundTrip,
             options.strictNullHandling,
             options.strictNullHandling,
             options.skipNulls,
             options.skipNulls,
             options.encode ? options.encoder : null,
             options.encode ? options.encoder : null,
@@ -1469,8 +1478,9 @@ function addNumericSeparator(num, str) {
     return $replace.call(str, sepRegex, '$&_');
     return $replace.call(str, sepRegex, '$&_');
 }
 }
 
 
-var inspectCustom = require('./util.inspect').custom;
-var inspectSymbol = inspectCustom && isSymbol(inspectCustom) ? inspectCustom : null;
+var utilInspect = require('./util.inspect');
+var inspectCustom = utilInspect.custom;
+var inspectSymbol = isSymbol(inspectCustom) ? inspectCustom : null;
 
 
 module.exports = function inspect_(obj, options, depth, seen) {
 module.exports = function inspect_(obj, options, depth, seen) {
     var opts = options || {};
     var opts = options || {};
@@ -1560,7 +1570,7 @@ module.exports = function inspect_(obj, options, depth, seen) {
         return inspect_(value, opts, depth + 1, seen);
         return inspect_(value, opts, depth + 1, seen);
     }
     }
 
 
-    if (typeof obj === 'function') {
+    if (typeof obj === 'function' && !isRegExp(obj)) { // in older engines, regexes are callable
         var name = nameOf(obj);
         var name = nameOf(obj);
         var keys = arrObjKeys(obj, inspect);
         var keys = arrObjKeys(obj, inspect);
         return '[Function' + (name ? ': ' + name : ' (anonymous)') + ']' + (keys.length > 0 ? ' { ' + $join.call(keys, ', ') + ' }' : '');
         return '[Function' + (name ? ': ' + name : ' (anonymous)') + ']' + (keys.length > 0 ? ' { ' + $join.call(keys, ', ') + ' }' : '');
@@ -1590,15 +1600,15 @@ module.exports = function inspect_(obj, options, depth, seen) {
     }
     }
     if (isError(obj)) {
     if (isError(obj)) {
         var parts = arrObjKeys(obj, inspect);
         var parts = arrObjKeys(obj, inspect);
-        if ('cause' in obj && !isEnumerable.call(obj, 'cause')) {
+        if (!('cause' in Error.prototype) && 'cause' in obj && !isEnumerable.call(obj, 'cause')) {
             return '{ [' + String(obj) + '] ' + $join.call($concat.call('[cause]: ' + inspect(obj.cause), parts), ', ') + ' }';
             return '{ [' + String(obj) + '] ' + $join.call($concat.call('[cause]: ' + inspect(obj.cause), parts), ', ') + ' }';
         }
         }
         if (parts.length === 0) { return '[' + String(obj) + ']'; }
         if (parts.length === 0) { return '[' + String(obj) + ']'; }
         return '{ [' + String(obj) + '] ' + $join.call(parts, ', ') + ' }';
         return '{ [' + String(obj) + '] ' + $join.call(parts, ', ') + ' }';
     }
     }
     if (typeof obj === 'object' && customInspect) {
     if (typeof obj === 'object' && customInspect) {
-        if (inspectSymbol && typeof obj[inspectSymbol] === 'function') {
-            return obj[inspectSymbol]();
+        if (inspectSymbol && typeof obj[inspectSymbol] === 'function' && utilInspect) {
+            return utilInspect(obj, { depth: maxDepth - depth });
         } else if (customInspect !== 'symbol' && typeof obj.inspect === 'function') {
         } else if (customInspect !== 'symbol' && typeof obj.inspect === 'function') {
             return obj.inspect();
             return obj.inspect();
         }
         }

+ 12 - 3
express-server/node_modules/qs/lib/stringify.js

@@ -62,6 +62,7 @@ var stringify = function stringify(
     object,
     object,
     prefix,
     prefix,
     generateArrayPrefix,
     generateArrayPrefix,
+    commaRoundTrip,
     strictNullHandling,
     strictNullHandling,
     skipNulls,
     skipNulls,
     encoder,
     encoder,
@@ -126,7 +127,7 @@ var stringify = function stringify(
                 for (var i = 0; i < valuesArray.length; ++i) {
                 for (var i = 0; i < valuesArray.length; ++i) {
                     valuesJoined += (i === 0 ? '' : ',') + formatter(encoder(valuesArray[i], defaults.encoder, charset, 'value', format));
                     valuesJoined += (i === 0 ? '' : ',') + formatter(encoder(valuesArray[i], defaults.encoder, charset, 'value', format));
                 }
                 }
-                return [formatter(keyValue) + '=' + valuesJoined];
+                return [formatter(keyValue) + (commaRoundTrip && isArray(obj) && valuesArray.length === 1 ? '[]' : '') + '=' + valuesJoined];
             }
             }
             return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder, charset, 'value', format))];
             return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder, charset, 'value', format))];
         }
         }
@@ -150,6 +151,8 @@ var stringify = function stringify(
         objKeys = sort ? keys.sort(sort) : keys;
         objKeys = sort ? keys.sort(sort) : keys;
     }
     }
 
 
+    var adjustedPrefix = commaRoundTrip && isArray(obj) && obj.length === 1 ? prefix + '[]' : prefix;
+
     for (var j = 0; j < objKeys.length; ++j) {
     for (var j = 0; j < objKeys.length; ++j) {
         var key = objKeys[j];
         var key = objKeys[j];
         var value = typeof key === 'object' && typeof key.value !== 'undefined' ? key.value : obj[key];
         var value = typeof key === 'object' && typeof key.value !== 'undefined' ? key.value : obj[key];
@@ -159,8 +162,8 @@ var stringify = function stringify(
         }
         }
 
 
         var keyPrefix = isArray(obj)
         var keyPrefix = isArray(obj)
-            ? typeof generateArrayPrefix === 'function' ? generateArrayPrefix(prefix, key) : prefix
-            : prefix + (allowDots ? '.' + key : '[' + key + ']');
+            ? typeof generateArrayPrefix === 'function' ? generateArrayPrefix(adjustedPrefix, key) : adjustedPrefix
+            : adjustedPrefix + (allowDots ? '.' + key : '[' + key + ']');
 
 
         sideChannel.set(object, step);
         sideChannel.set(object, step);
         var valueSideChannel = getSideChannel();
         var valueSideChannel = getSideChannel();
@@ -169,6 +172,7 @@ var stringify = function stringify(
             value,
             value,
             keyPrefix,
             keyPrefix,
             generateArrayPrefix,
             generateArrayPrefix,
+            commaRoundTrip,
             strictNullHandling,
             strictNullHandling,
             skipNulls,
             skipNulls,
             encoder,
             encoder,
@@ -265,6 +269,10 @@ module.exports = function (object, opts) {
     }
     }
 
 
     var generateArrayPrefix = arrayPrefixGenerators[arrayFormat];
     var generateArrayPrefix = arrayPrefixGenerators[arrayFormat];
+    if (opts && 'commaRoundTrip' in opts && typeof opts.commaRoundTrip !== 'boolean') {
+        throw new TypeError('`commaRoundTrip` must be a boolean, or absent');
+    }
+    var commaRoundTrip = generateArrayPrefix === 'comma' && opts && opts.commaRoundTrip;
 
 
     if (!objKeys) {
     if (!objKeys) {
         objKeys = Object.keys(obj);
         objKeys = Object.keys(obj);
@@ -285,6 +293,7 @@ module.exports = function (object, opts) {
             obj[key],
             obj[key],
             key,
             key,
             generateArrayPrefix,
             generateArrayPrefix,
+            commaRoundTrip,
             options.strictNullHandling,
             options.strictNullHandling,
             options.skipNulls,
             options.skipNulls,
             options.encode ? options.encoder : null,
             options.encode ? options.encoder : null,

+ 28 - 24
express-server/node_modules/qs/package.json

@@ -1,27 +1,27 @@
 {
 {
-  "_from": "qs@6.10.3",
-  "_id": "qs@6.10.3",
+  "_from": "qs@6.11.0",
+  "_id": "qs@6.11.0",
   "_inBundle": false,
   "_inBundle": false,
-  "_integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==",
+  "_integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
   "_location": "/qs",
   "_location": "/qs",
   "_phantomChildren": {},
   "_phantomChildren": {},
   "_requested": {
   "_requested": {
     "type": "version",
     "type": "version",
     "registry": true,
     "registry": true,
-    "raw": "qs@6.10.3",
+    "raw": "qs@6.11.0",
     "name": "qs",
     "name": "qs",
     "escapedName": "qs",
     "escapedName": "qs",
-    "rawSpec": "6.10.3",
+    "rawSpec": "6.11.0",
     "saveSpec": null,
     "saveSpec": null,
-    "fetchSpec": "6.10.3"
+    "fetchSpec": "6.11.0"
   },
   },
   "_requiredBy": [
   "_requiredBy": [
     "/body-parser",
     "/body-parser",
     "/express"
     "/express"
   ],
   ],
-  "_resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz",
-  "_shasum": "d6cde1b2ffca87b5aa57889816c5f81535e22e8e",
-  "_spec": "qs@6.10.3",
+  "_resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
+  "_shasum": "fd0d963446f7a65e1367e01abd85429453f0c37a",
+  "_spec": "qs@6.11.0",
   "_where": "C:\\FatboarProject\\express-server\\node_modules\\express",
   "_where": "C:\\FatboarProject\\express-server\\node_modules\\express",
   "bugs": {
   "bugs": {
     "url": "https://github.com/ljharb/qs/issues"
     "url": "https://github.com/ljharb/qs/issues"
@@ -40,23 +40,24 @@
   "deprecated": false,
   "deprecated": false,
   "description": "A querystring parser that supports nesting and arrays, with a depth limit",
   "description": "A querystring parser that supports nesting and arrays, with a depth limit",
   "devDependencies": {
   "devDependencies": {
-    "@ljharb/eslint-config": "^20.1.0",
-    "aud": "^1.1.5",
+    "@ljharb/eslint-config": "^21.0.0",
+    "aud": "^2.0.0",
     "browserify": "^16.5.2",
     "browserify": "^16.5.2",
     "eclint": "^2.8.1",
     "eclint": "^2.8.1",
-    "eslint": "^8.6.0",
+    "eslint": "=8.8.0",
     "evalmd": "^0.0.19",
     "evalmd": "^0.0.19",
     "for-each": "^0.3.3",
     "for-each": "^0.3.3",
-    "has-symbols": "^1.0.2",
+    "has-symbols": "^1.0.3",
     "iconv-lite": "^0.5.1",
     "iconv-lite": "^0.5.1",
     "in-publish": "^2.0.1",
     "in-publish": "^2.0.1",
     "mkdirp": "^0.5.5",
     "mkdirp": "^0.5.5",
+    "npmignore": "^0.3.0",
     "nyc": "^10.3.2",
     "nyc": "^10.3.2",
-    "object-inspect": "^1.12.0",
+    "object-inspect": "^1.12.2",
     "qs-iconv": "^1.0.4",
     "qs-iconv": "^1.0.4",
     "safe-publish-latest": "^2.0.0",
     "safe-publish-latest": "^2.0.0",
     "safer-buffer": "^2.1.2",
     "safer-buffer": "^2.1.2",
-    "tape": "^5.4.0"
+    "tape": "^5.5.3"
   },
   },
   "engines": {
   "engines": {
     "node": ">=0.6"
     "node": ">=0.6"
@@ -64,12 +65,6 @@
   "funding": {
   "funding": {
     "url": "https://github.com/sponsors/ljharb"
     "url": "https://github.com/sponsors/ljharb"
   },
   },
-  "greenkeeper": {
-    "ignore": [
-      "iconv-lite",
-      "mkdirp"
-    ]
-  },
   "homepage": "https://github.com/ljharb/qs",
   "homepage": "https://github.com/ljharb/qs",
   "keywords": [
   "keywords": [
     "querystring",
     "querystring",
@@ -82,15 +77,24 @@
   "license": "BSD-3-Clause",
   "license": "BSD-3-Clause",
   "main": "lib/index.js",
   "main": "lib/index.js",
   "name": "qs",
   "name": "qs",
+  "publishConfig": {
+    "ignore": [
+      "!dist/*",
+      "bower.json",
+      "component.json",
+      ".github/workflows"
+    ]
+  },
   "repository": {
   "repository": {
     "type": "git",
     "type": "git",
     "url": "git+https://github.com/ljharb/qs.git"
     "url": "git+https://github.com/ljharb/qs.git"
   },
   },
   "scripts": {
   "scripts": {
     "dist": "mkdirp dist && browserify --standalone Qs lib/index.js > dist/qs.js",
     "dist": "mkdirp dist && browserify --standalone Qs lib/index.js > dist/qs.js",
-    "lint": "eslint .",
-    "postlint": "eclint check * lib/* test/* !dist/*",
+    "lint": "eslint --ext=js,mjs .",
+    "postlint": "eclint check $(git ls-files | xargs find 2> /dev/null | grep -vE 'node_modules|\\.git' | grep -v dist/)",
     "posttest": "aud --production",
     "posttest": "aud --production",
+    "prepack": "npmignore --auto --commentLines=autogenerated",
     "prepublish": "not-in-publish || npm run prepublishOnly",
     "prepublish": "not-in-publish || npm run prepublishOnly",
     "prepublishOnly": "safe-publish-latest && npm run dist",
     "prepublishOnly": "safe-publish-latest && npm run dist",
     "pretest": "npm run --silent readme && npm run --silent lint",
     "pretest": "npm run --silent readme && npm run --silent lint",
@@ -98,5 +102,5 @@
     "test": "npm run tests-only",
     "test": "npm run tests-only",
     "tests-only": "nyc tape 'test/**/*.js'"
     "tests-only": "nyc tape 'test/**/*.js'"
   },
   },
-  "version": "6.10.3"
+  "version": "6.11.0"
 }
 }

+ 14 - 0
express-server/node_modules/qs/test/parse.js

@@ -140,6 +140,9 @@ test('parse()', function (t) {
     t.test('limits specific array indices to arrayLimit', function (st) {
     t.test('limits specific array indices to arrayLimit', function (st) {
         st.deepEqual(qs.parse('a[20]=a', { arrayLimit: 20 }), { a: ['a'] });
         st.deepEqual(qs.parse('a[20]=a', { arrayLimit: 20 }), { a: ['a'] });
         st.deepEqual(qs.parse('a[21]=a', { arrayLimit: 20 }), { a: { 21: 'a' } });
         st.deepEqual(qs.parse('a[21]=a', { arrayLimit: 20 }), { a: { 21: 'a' } });
+
+        st.deepEqual(qs.parse('a[20]=a'), { a: ['a'] });
+        st.deepEqual(qs.parse('a[21]=a'), { a: { 21: 'a' } });
         st.end();
         st.end();
     });
     });
 
 
@@ -378,6 +381,7 @@ test('parse()', function (t) {
         st.deepEqual(qs.parse('?foo=bar', { ignoreQueryPrefix: true }), { foo: 'bar' });
         st.deepEqual(qs.parse('?foo=bar', { ignoreQueryPrefix: true }), { foo: 'bar' });
         st.deepEqual(qs.parse('foo=bar', { ignoreQueryPrefix: true }), { foo: 'bar' });
         st.deepEqual(qs.parse('foo=bar', { ignoreQueryPrefix: true }), { foo: 'bar' });
         st.deepEqual(qs.parse('?foo=bar', { ignoreQueryPrefix: false }), { '?foo': 'bar' });
         st.deepEqual(qs.parse('?foo=bar', { ignoreQueryPrefix: false }), { '?foo': 'bar' });
+
         st.end();
         st.end();
     });
     });
 
 
@@ -406,6 +410,16 @@ test('parse()', function (t) {
         st.deepEqual(qs.parse('foo=', { comma: true }), { foo: '' });
         st.deepEqual(qs.parse('foo=', { comma: true }), { foo: '' });
         st.deepEqual(qs.parse('foo', { comma: true }), { foo: '' });
         st.deepEqual(qs.parse('foo', { comma: true }), { foo: '' });
         st.deepEqual(qs.parse('foo', { comma: true, strictNullHandling: true }), { foo: null });
         st.deepEqual(qs.parse('foo', { comma: true, strictNullHandling: true }), { foo: null });
+
+        // test cases inversed from from stringify tests
+        st.deepEqual(qs.parse('a[0]=c'), { a: ['c'] });
+        st.deepEqual(qs.parse('a[]=c'), { a: ['c'] });
+        st.deepEqual(qs.parse('a[]=c', { comma: true }), { a: ['c'] });
+
+        st.deepEqual(qs.parse('a[0]=c&a[1]=d'), { a: ['c', 'd'] });
+        st.deepEqual(qs.parse('a[]=c&a[]=d'), { a: ['c', 'd'] });
+        st.deepEqual(qs.parse('a=c,d', { comma: true }), { a: ['c', 'd'] });
+
         st.end();
         st.end();
     });
     });
 
 

+ 54 - 10
express-server/node_modules/qs/test/stringify.js

@@ -131,6 +131,38 @@ test('stringify()', function (t) {
         st.end();
         st.end();
     });
     });
 
 
+    t.test('stringifies an array value with one item vs multiple items', function (st) {
+        st.test('non-array item', function (s2t) {
+            s2t.equal(qs.stringify({ a: 'c' }, { encodeValuesOnly: true, arrayFormat: 'indices' }), 'a=c');
+            s2t.equal(qs.stringify({ a: 'c' }, { encodeValuesOnly: true, arrayFormat: 'brackets' }), 'a=c');
+            s2t.equal(qs.stringify({ a: 'c' }, { encodeValuesOnly: true, arrayFormat: 'comma' }), 'a=c');
+            s2t.equal(qs.stringify({ a: 'c' }, { encodeValuesOnly: true }), 'a=c');
+
+            s2t.end();
+        });
+
+        st.test('array with a single item', function (s2t) {
+            s2t.equal(qs.stringify({ a: ['c'] }, { encodeValuesOnly: true, arrayFormat: 'indices' }), 'a[0]=c');
+            s2t.equal(qs.stringify({ a: ['c'] }, { encodeValuesOnly: true, arrayFormat: 'brackets' }), 'a[]=c');
+            s2t.equal(qs.stringify({ a: ['c'] }, { encodeValuesOnly: true, arrayFormat: 'comma' }), 'a=c');
+            s2t.equal(qs.stringify({ a: ['c'] }, { encodeValuesOnly: true, arrayFormat: 'comma', commaRoundTrip: true }), 'a[]=c'); // so it parses back as an array
+            s2t.equal(qs.stringify({ a: ['c'] }, { encodeValuesOnly: true }), 'a[0]=c');
+
+            s2t.end();
+        });
+
+        st.test('array with multiple items', function (s2t) {
+            s2t.equal(qs.stringify({ a: ['c', 'd'] }, { encodeValuesOnly: true, arrayFormat: 'indices' }), 'a[0]=c&a[1]=d');
+            s2t.equal(qs.stringify({ a: ['c', 'd'] }, { encodeValuesOnly: true, arrayFormat: 'brackets' }), 'a[]=c&a[]=d');
+            s2t.equal(qs.stringify({ a: ['c', 'd'] }, { encodeValuesOnly: true, arrayFormat: 'comma' }), 'a=c,d');
+            s2t.equal(qs.stringify({ a: ['c', 'd'] }, { encodeValuesOnly: true }), 'a[0]=c&a[1]=d');
+
+            s2t.end();
+        });
+
+        st.end();
+    });
+
     t.test('stringifies a nested array value', function (st) {
     t.test('stringifies a nested array value', function (st) {
         st.equal(qs.stringify({ a: { b: ['c', 'd'] } }, { encodeValuesOnly: true, arrayFormat: 'indices' }), 'a[b][0]=c&a[b][1]=d');
         st.equal(qs.stringify({ a: { b: ['c', 'd'] } }, { encodeValuesOnly: true, arrayFormat: 'indices' }), 'a[b][0]=c&a[b][1]=d');
         st.equal(qs.stringify({ a: { b: ['c', 'd'] } }, { encodeValuesOnly: true, arrayFormat: 'brackets' }), 'a[b][]=c&a[b][]=d');
         st.equal(qs.stringify({ a: { b: ['c', 'd'] } }, { encodeValuesOnly: true, arrayFormat: 'brackets' }), 'a[b][]=c&a[b][]=d');
@@ -349,11 +381,13 @@ test('stringify()', function (t) {
         st.equal(qs.stringify({ a: [], b: [null], c: 'c' }, { encode: false, arrayFormat: 'brackets' }), 'b[]=&c=c');
         st.equal(qs.stringify({ a: [], b: [null], c: 'c' }, { encode: false, arrayFormat: 'brackets' }), 'b[]=&c=c');
         st.equal(qs.stringify({ a: [], b: [null], c: 'c' }, { encode: false, arrayFormat: 'repeat' }), 'b=&c=c');
         st.equal(qs.stringify({ a: [], b: [null], c: 'c' }, { encode: false, arrayFormat: 'repeat' }), 'b=&c=c');
         st.equal(qs.stringify({ a: [], b: [null], c: 'c' }, { encode: false, arrayFormat: 'comma' }), 'b=&c=c');
         st.equal(qs.stringify({ a: [], b: [null], c: 'c' }, { encode: false, arrayFormat: 'comma' }), 'b=&c=c');
+        st.equal(qs.stringify({ a: [], b: [null], c: 'c' }, { encode: false, arrayFormat: 'comma', commaRoundTrip: true }), 'b[]=&c=c');
         // with strictNullHandling
         // with strictNullHandling
         st.equal(qs.stringify({ a: [], b: [null], c: 'c' }, { encode: false, arrayFormat: 'indices', strictNullHandling: true }), 'b[0]&c=c');
         st.equal(qs.stringify({ a: [], b: [null], c: 'c' }, { encode: false, arrayFormat: 'indices', strictNullHandling: true }), 'b[0]&c=c');
         st.equal(qs.stringify({ a: [], b: [null], c: 'c' }, { encode: false, arrayFormat: 'brackets', strictNullHandling: true }), 'b[]&c=c');
         st.equal(qs.stringify({ a: [], b: [null], c: 'c' }, { encode: false, arrayFormat: 'brackets', strictNullHandling: true }), 'b[]&c=c');
         st.equal(qs.stringify({ a: [], b: [null], c: 'c' }, { encode: false, arrayFormat: 'repeat', strictNullHandling: true }), 'b&c=c');
         st.equal(qs.stringify({ a: [], b: [null], c: 'c' }, { encode: false, arrayFormat: 'repeat', strictNullHandling: true }), 'b&c=c');
         st.equal(qs.stringify({ a: [], b: [null], c: 'c' }, { encode: false, arrayFormat: 'comma', strictNullHandling: true }), 'b&c=c');
         st.equal(qs.stringify({ a: [], b: [null], c: 'c' }, { encode: false, arrayFormat: 'comma', strictNullHandling: true }), 'b&c=c');
+        st.equal(qs.stringify({ a: [], b: [null], c: 'c' }, { encode: false, arrayFormat: 'comma', strictNullHandling: true, commaRoundTrip: true }), 'b[]&c=c');
         // with skipNulls
         // with skipNulls
         st.equal(qs.stringify({ a: [], b: [null], c: 'c' }, { encode: false, arrayFormat: 'indices', skipNulls: true }), 'c=c');
         st.equal(qs.stringify({ a: [], b: [null], c: 'c' }, { encode: false, arrayFormat: 'indices', skipNulls: true }), 'c=c');
         st.equal(qs.stringify({ a: [], b: [null], c: 'c' }, { encode: false, arrayFormat: 'brackets', skipNulls: true }), 'c=c');
         st.equal(qs.stringify({ a: [], b: [null], c: 'c' }, { encode: false, arrayFormat: 'brackets', skipNulls: true }), 'c=c');
@@ -684,6 +718,18 @@ test('stringify()', function (t) {
             'a=' + date.getTime(),
             'a=' + date.getTime(),
             'works with arrayFormat comma'
             'works with arrayFormat comma'
         );
         );
+        st.equal(
+            qs.stringify(
+                { a: [date] },
+                {
+                    serializeDate: function (d) { return d.getTime(); },
+                    arrayFormat: 'comma',
+                    commaRoundTrip: true
+                }
+            ),
+            'a%5B%5D=' + date.getTime(),
+            'works with arrayFormat comma'
+        );
 
 
         st.end();
         st.end();
     });
     });
@@ -714,16 +760,14 @@ test('stringify()', function (t) {
     });
     });
 
 
     t.test('Edge cases and unknown formats', function (st) {
     t.test('Edge cases and unknown formats', function (st) {
-        ['UFO1234', false, 1234, null, {}, []].forEach(
-            function (format) {
-                st['throws'](
-                    function () {
-                        qs.stringify({ a: 'b c' }, { format: format });
-                    },
-                    new TypeError('Unknown format option provided.')
-                );
-            }
-        );
+        ['UFO1234', false, 1234, null, {}, []].forEach(function (format) {
+            st['throws'](
+                function () {
+                    qs.stringify({ a: 'b c' }, { format: format });
+                },
+                new TypeError('Unknown format option provided.')
+            );
+        });
         st.end();
         st.end();
     });
     });
 
 

+ 5 - 0
express-server/node_modules/raw-body/HISTORY.md

@@ -1,3 +1,8 @@
+2.5.2 / 2023-02-21
+==================
+
+  * Fix error message for non-stream argument
+
 2.5.1 / 2022-02-28
 2.5.1 / 2022-02-28
 ==================
 ==================
 
 

+ 1 - 1
express-server/node_modules/raw-body/README.md

@@ -219,5 +219,5 @@ server.listen(3000);
 [coveralls-url]: https://coveralls.io/r/stream-utils/raw-body?branch=master
 [coveralls-url]: https://coveralls.io/r/stream-utils/raw-body?branch=master
 [downloads-image]: https://img.shields.io/npm/dm/raw-body.svg
 [downloads-image]: https://img.shields.io/npm/dm/raw-body.svg
 [downloads-url]: https://npmjs.org/package/raw-body
 [downloads-url]: https://npmjs.org/package/raw-body
-[github-actions-ci-image]: https://img.shields.io/github/workflow/status/stream-utils/raw-body/ci/master?label=ci
+[github-actions-ci-image]: https://img.shields.io/github/actions/workflow/status/stream-utils/raw-body/ci.yml?branch=master&label=ci
 [github-actions-ci-url]: https://github.com/jshttp/stream-utils/raw-body?query=workflow%3Aci
 [github-actions-ci-url]: https://github.com/jshttp/stream-utils/raw-body?query=workflow%3Aci

+ 7 - 0
express-server/node_modules/raw-body/index.js

@@ -69,6 +69,13 @@ function getRawBody (stream, options, callback) {
   var done = callback
   var done = callback
   var opts = options || {}
   var opts = options || {}
 
 
+  // light validation
+  if (stream === undefined) {
+    throw new TypeError('argument stream is required')
+  } else if (typeof stream !== 'object' || stream === null || typeof stream.on !== 'function') {
+    throw new TypeError('argument stream must be a stream')
+  }
+
   if (options === true || typeof options === 'string') {
   if (options === true || typeof options === 'string') {
     // short cut for encoding
     // short cut for encoding
     opts = {
     opts = {

+ 17 - 18
express-server/node_modules/raw-body/package.json

@@ -1,27 +1,26 @@
 {
 {
-  "_from": "raw-body@2.5.1",
-  "_id": "raw-body@2.5.1",
+  "_from": "raw-body@2.5.2",
+  "_id": "raw-body@2.5.2",
   "_inBundle": false,
   "_inBundle": false,
-  "_integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==",
+  "_integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==",
   "_location": "/raw-body",
   "_location": "/raw-body",
   "_phantomChildren": {},
   "_phantomChildren": {},
   "_requested": {
   "_requested": {
     "type": "version",
     "type": "version",
     "registry": true,
     "registry": true,
-    "raw": "raw-body@2.5.1",
+    "raw": "raw-body@2.5.2",
     "name": "raw-body",
     "name": "raw-body",
     "escapedName": "raw-body",
     "escapedName": "raw-body",
-    "rawSpec": "2.5.1",
+    "rawSpec": "2.5.2",
     "saveSpec": null,
     "saveSpec": null,
-    "fetchSpec": "2.5.1"
+    "fetchSpec": "2.5.2"
   },
   },
   "_requiredBy": [
   "_requiredBy": [
-    "/body-parser",
-    "/pac-proxy-agent"
+    "/body-parser"
   ],
   ],
-  "_resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz",
-  "_shasum": "fe1b1628b181b700215e5fd42389f98b71392857",
-  "_spec": "raw-body@2.5.1",
+  "_resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz",
+  "_shasum": "99febd83b90e08975087e8f1f9419a149366b68a",
+  "_spec": "raw-body@2.5.2",
   "_where": "C:\\FatboarProject\\express-server\\node_modules\\body-parser",
   "_where": "C:\\FatboarProject\\express-server\\node_modules\\body-parser",
   "author": {
   "author": {
     "name": "Jonathan Ong",
     "name": "Jonathan Ong",
@@ -52,14 +51,14 @@
   "description": "Get and validate the raw body of a readable stream.",
   "description": "Get and validate the raw body of a readable stream.",
   "devDependencies": {
   "devDependencies": {
     "bluebird": "3.7.2",
     "bluebird": "3.7.2",
-    "eslint": "7.32.0",
-    "eslint-config-standard": "14.1.1",
-    "eslint-plugin-import": "2.25.4",
-    "eslint-plugin-markdown": "2.2.1",
+    "eslint": "8.34.0",
+    "eslint-config-standard": "15.0.1",
+    "eslint-plugin-import": "2.27.5",
+    "eslint-plugin-markdown": "3.0.0",
     "eslint-plugin-node": "11.1.0",
     "eslint-plugin-node": "11.1.0",
-    "eslint-plugin-promise": "5.2.0",
+    "eslint-plugin-promise": "6.1.1",
     "eslint-plugin-standard": "4.1.0",
     "eslint-plugin-standard": "4.1.0",
-    "mocha": "9.2.1",
+    "mocha": "10.2.0",
     "nyc": "15.1.0",
     "nyc": "15.1.0",
     "readable-stream": "2.3.7",
     "readable-stream": "2.3.7",
     "safe-buffer": "5.2.1"
     "safe-buffer": "5.2.1"
@@ -88,5 +87,5 @@
     "test-ci": "nyc --reporter=lcovonly --reporter=text npm test",
     "test-ci": "nyc --reporter=lcovonly --reporter=text npm test",
     "test-cov": "nyc --reporter=html --reporter=text npm test"
     "test-cov": "nyc --reporter=html --reporter=text npm test"
   },
   },
-  "version": "2.5.1"
+  "version": "2.5.2"
 }
 }

+ 2 - 2
express-server/node_modules/safe-buffer/package.json

@@ -20,12 +20,12 @@
     "/content-disposition",
     "/content-disposition",
     "/ecdsa-sig-formatter",
     "/ecdsa-sig-formatter",
     "/express",
     "/express",
+    "/express-session",
     "/jwa",
     "/jwa",
     "/jws",
     "/jws",
-    "/minipass",
     "/mongodb",
     "/mongodb",
     "/mongoose",
     "/mongoose",
-    "/tar"
+    "/string_decoder"
   ],
   ],
   "_resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
   "_resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
   "_shasum": "1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6",
   "_shasum": "1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6",

Разница между файлами не показана из-за своего большого размера
+ 1129 - 1321
express-server/package-lock.json


+ 8 - 7
express-server/package.json

@@ -16,9 +16,10 @@
   "dependencies": {
   "dependencies": {
     "api-express-exporter": "^1.0.0",
     "api-express-exporter": "^1.0.0",
     "bcrypt": "^5.0.1",
     "bcrypt": "^5.0.1",
-    "body-parser": "^1.19.0",
+    "body-parser": "^1.20.2",
     "cors": "^2.8.5",
     "cors": "^2.8.5",
     "dayjs": "^1.8.29",
     "dayjs": "^1.8.29",
+    "dotenv": "^16.0.1",
     "express": "^4.17.1",
     "express": "^4.17.1",
     "express-prom-bundle": "^6.1.0",
     "express-prom-bundle": "^6.1.0",
     "express-rate-limit": "^5.1.3",
     "express-rate-limit": "^5.1.3",
@@ -26,16 +27,16 @@
     "jsonwebtoken": "^9.0.0",
     "jsonwebtoken": "^9.0.0",
     "mailgun-js": "^0.6.7",
     "mailgun-js": "^0.6.7",
     "mkdirp": "^1.0.4",
     "mkdirp": "^1.0.4",
-    "moment": "^2.25.3",
-    "mongoose": "^5.9.6",
-    "mongoose-unique-validator": "^2.0.3",
+    "moment": "^2.29.4",
+    "mongoose": "^6.6.1",
+    "mongoose-unique-validator": "^2.0.1",
     "nodemailer": "^6.4.6",
     "nodemailer": "^6.4.6",
-    "nodemon": "^2.0.2",
+    "nodemon": "^2.0.20",
     "passport": "^0.6.0",
     "passport": "^0.6.0",
     "passport-facebook": "^3.0.0",
     "passport-facebook": "^3.0.0",
     "passport-google-oauth20": "^2.0.0",
     "passport-google-oauth20": "^2.0.0",
     "prom-client": "^12.0.0",
     "prom-client": "^12.0.0",
     "prometheus-api-metrics": "^2.2.7",
     "prometheus-api-metrics": "^2.2.7",
-    "validator": "^13.1.1"
+    "validator": "^13.7.0"
   }
   }
-}
+}