formation před 3 roky
rodič
revize
eef5e31f2b
100 změnil soubory, kde provedl 3729 přidání a 4989 odebrání
  1. 1910 3991
      angular-client/package-lock.json
  2. 7 0
      express-server/node_modules/accepts/HISTORY.md
  3. 3 5
      express-server/node_modules/accepts/README.md
  4. 25 25
      express-server/node_modules/accepts/package.json
  5. 2 2
      express-server/node_modules/array-flatten/package.json
  6. 42 0
      express-server/node_modules/body-parser/HISTORY.md
  7. 33 12
      express-server/node_modules/body-parser/README.md
  8. 26 2
      express-server/node_modules/body-parser/lib/read.js
  9. 10 4
      express-server/node_modules/body-parser/lib/types/json.js
  10. 32 28
      express-server/node_modules/body-parser/package.json
  11. 10 0
      express-server/node_modules/bytes/History.md
  12. 42 16
      express-server/node_modules/bytes/Readme.md
  13. 9 1
      express-server/node_modules/bytes/index.js
  14. 16 15
      express-server/node_modules/bytes/package.json
  15. 5 0
      express-server/node_modules/content-disposition/HISTORY.md
  16. 3 9
      express-server/node_modules/content-disposition/README.md
  17. 1 1
      express-server/node_modules/content-disposition/index.js
  18. 23 23
      express-server/node_modules/content-disposition/package.json
  19. 1 1
      express-server/node_modules/content-type/package.json
  20. 2 2
      express-server/node_modules/cookie-signature/package.json
  21. 19 0
      express-server/node_modules/cookie/HISTORY.md
  22. 73 24
      express-server/node_modules/cookie/README.md
  23. 91 19
      express-server/node_modules/cookie/index.js
  24. 22 18
      express-server/node_modules/cookie/package.json
  25. 2 3
      express-server/node_modules/debug/package.json
  26. 7 0
      express-server/node_modules/depd/History.md
  27. 1 1
      express-server/node_modules/depd/LICENSE
  28. 8 8
      express-server/node_modules/depd/Readme.md
  29. 29 13
      express-server/node_modules/depd/index.js
  30. 0 103
      express-server/node_modules/depd/lib/compat/callsite-tostring.js
  31. 0 22
      express-server/node_modules/depd/lib/compat/event-listener-count.js
  32. 0 79
      express-server/node_modules/depd/lib/compat/index.js
  33. 24 20
      express-server/node_modules/depd/package.json
  34. 1 0
      express-server/node_modules/destroy/LICENSE
  35. 15 12
      express-server/node_modules/destroy/README.md
  36. 147 13
      express-server/node_modules/destroy/index.js
  37. 28 16
      express-server/node_modules/destroy/package.json
  38. 2 2
      express-server/node_modules/ee-first/package.json
  39. 2 2
      express-server/node_modules/encodeurl/package.json
  40. 2 2
      express-server/node_modules/escape-html/package.json
  41. 2 2
      express-server/node_modules/etag/package.json
  42. 102 0
      express-server/node_modules/express/History.md
  43. 43 32
      express-server/node_modules/express/Readme.md
  44. 19 2
      express-server/node_modules/express/lib/application.js
  45. 1 1
      express-server/node_modules/express/lib/request.js
  46. 57 30
      express-server/node_modules/express/lib/response.js
  47. 25 14
      express-server/node_modules/express/lib/router/index.js
  48. 9 0
      express-server/node_modules/express/lib/router/route.js
  49. 5 7
      express-server/node_modules/express/lib/utils.js
  50. 1 1
      express-server/node_modules/express/lib/view.js
  51. 37 36
      express-server/node_modules/express/package.json
  52. 8 0
      express-server/node_modules/finalhandler/HISTORY.md
  53. 1 1
      express-server/node_modules/finalhandler/LICENSE
  54. 5 6
      express-server/node_modules/finalhandler/README.md
  55. 8 3
      express-server/node_modules/finalhandler/index.js
  56. 29 28
      express-server/node_modules/finalhandler/package.json
  57. 1 1
      express-server/node_modules/forwarded/package.json
  58. 2 2
      express-server/node_modules/fresh/package.json
  59. 31 0
      express-server/node_modules/http-errors/HISTORY.md
  60. 14 8
      express-server/node_modules/http-errors/README.md
  61. 49 26
      express-server/node_modules/http-errors/index.js
  62. 31 29
      express-server/node_modules/http-errors/package.json
  63. 1 1
      express-server/node_modules/iconv-lite/package.json
  64. 2 0
      express-server/node_modules/inherits/inherits.js
  65. 18 14
      express-server/node_modules/inherits/inherits_browser.js
  66. 14 13
      express-server/node_modules/inherits/package.json
  67. 1 1
      express-server/node_modules/ipaddr.js/package.json
  68. 2 2
      express-server/node_modules/media-typer/package.json
  69. 2 2
      express-server/node_modules/merge-descriptors/package.json
  70. 2 2
      express-server/node_modules/methods/package.json
  71. 21 0
      express-server/node_modules/mime-db/HISTORY.md
  72. 19 18
      express-server/node_modules/mime-db/LICENSE
  73. 1 1
      express-server/node_modules/mime-db/README.md
  74. 108 6
      express-server/node_modules/mime-db/db.json
  75. 1 0
      express-server/node_modules/mime-db/index.js
  76. 19 18
      express-server/node_modules/mime-db/package.json
  77. 22 3
      express-server/node_modules/mime-types/HISTORY.md
  78. 1 1
      express-server/node_modules/mime-types/README.md
  79. 17 17
      express-server/node_modules/mime-types/package.json
  80. 1 1
      express-server/node_modules/mime/package.json
  81. 1 1
      express-server/node_modules/mkdirp/package.json
  82. 3 4
      express-server/node_modules/ms/package.json
  83. 5 0
      express-server/node_modules/negotiator/HISTORY.md
  84. 3 3
      express-server/node_modules/negotiator/README.md
  85. 4 46
      express-server/node_modules/negotiator/index.js
  86. 3 3
      express-server/node_modules/negotiator/lib/language.js
  87. 18 18
      express-server/node_modules/negotiator/package.json
  88. 10 0
      express-server/node_modules/on-finished/HISTORY.md
  89. 28 20
      express-server/node_modules/on-finished/README.md
  90. 51 13
      express-server/node_modules/on-finished/index.js
  91. 24 16
      express-server/node_modules/on-finished/package.json
  92. 1 1
      express-server/node_modules/parseurl/package.json
  93. 2 2
      express-server/node_modules/path-to-regexp/package.json
  94. 6 6
      express-server/node_modules/proxy-addr/package.json
  95. 10 0
      express-server/node_modules/qs/.editorconfig
  96. 0 1
      express-server/node_modules/qs/.eslintignore
  97. 21 4
      express-server/node_modules/qs/.eslintrc
  98. 132 0
      express-server/node_modules/qs/CHANGELOG.md
  99. 0 28
      express-server/node_modules/qs/LICENSE
  100. 0 0
      express-server/node_modules/qs/README.md

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 1910 - 3991
angular-client/package-lock.json


+ 7 - 0
express-server/node_modules/accepts/HISTORY.md

@@ -1,3 +1,10 @@
+1.3.8 / 2022-02-02
+==================
+
+  * deps: mime-types@~2.1.34
+    - deps: mime-db@~1.51.0
+  * deps: negotiator@0.6.3
+
 1.3.7 / 2019-04-29
 1.3.7 / 2019-04-29
 ==================
 ==================
 
 

+ 3 - 5
express-server/node_modules/accepts/README.md

@@ -3,7 +3,7 @@
 [![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]
 [![Node.js Version][node-version-image]][node-version-url]
-[![Build Status][travis-image]][travis-url]
+[![Build Status][github-actions-ci-image]][github-actions-ci-url]
 [![Test Coverage][coveralls-image]][coveralls-url]
 [![Test Coverage][coveralls-image]][coveralls-url]
 
 
 Higher level content negotiation based on [negotiator](https://www.npmjs.com/package/negotiator).
 Higher level content negotiation based on [negotiator](https://www.npmjs.com/package/negotiator).
@@ -29,8 +29,6 @@ $ npm install accepts
 
 
 ## API
 ## API
 
 
-<!-- eslint-disable no-unused-vars -->
-
 ```js
 ```js
 var accepts = require('accepts')
 var accepts = require('accepts')
 ```
 ```
@@ -133,10 +131,10 @@ curl -I -H'Accept: text/html' http://localhost:3000/
 
 
 [coveralls-image]: https://badgen.net/coveralls/c/github/jshttp/accepts/master
 [coveralls-image]: https://badgen.net/coveralls/c/github/jshttp/accepts/master
 [coveralls-url]: https://coveralls.io/r/jshttp/accepts?branch=master
 [coveralls-url]: https://coveralls.io/r/jshttp/accepts?branch=master
+[github-actions-ci-image]: https://badgen.net/github/checks/jshttp/accepts/master?label=ci
+[github-actions-ci-url]: https://github.com/jshttp/accepts/actions/workflows/ci.yml
 [node-version-image]: https://badgen.net/npm/node/accepts
 [node-version-image]: https://badgen.net/npm/node/accepts
 [node-version-url]: https://nodejs.org/en/download
 [node-version-url]: https://nodejs.org/en/download
 [npm-downloads-image]: https://badgen.net/npm/dm/accepts
 [npm-downloads-image]: https://badgen.net/npm/dm/accepts
 [npm-url]: https://npmjs.org/package/accepts
 [npm-url]: https://npmjs.org/package/accepts
 [npm-version-image]: https://badgen.net/npm/v/accepts
 [npm-version-image]: https://badgen.net/npm/v/accepts
-[travis-image]: https://badgen.net/travis/jshttp/accepts/master
-[travis-url]: https://travis-ci.org/jshttp/accepts

+ 25 - 25
express-server/node_modules/accepts/package.json

@@ -1,27 +1,27 @@
 {
 {
-  "_from": "accepts@~1.3.7",
-  "_id": "accepts@1.3.7",
+  "_from": "accepts@~1.3.8",
+  "_id": "accepts@1.3.8",
   "_inBundle": false,
   "_inBundle": false,
-  "_integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==",
+  "_integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
   "_location": "/accepts",
   "_location": "/accepts",
   "_phantomChildren": {},
   "_phantomChildren": {},
   "_requested": {
   "_requested": {
     "type": "range",
     "type": "range",
     "registry": true,
     "registry": true,
-    "raw": "accepts@~1.3.7",
+    "raw": "accepts@~1.3.8",
     "name": "accepts",
     "name": "accepts",
     "escapedName": "accepts",
     "escapedName": "accepts",
-    "rawSpec": "~1.3.7",
+    "rawSpec": "~1.3.8",
     "saveSpec": null,
     "saveSpec": null,
-    "fetchSpec": "~1.3.7"
+    "fetchSpec": "~1.3.8"
   },
   },
   "_requiredBy": [
   "_requiredBy": [
     "/express"
     "/express"
   ],
   ],
-  "_resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz",
-  "_shasum": "531bc726517a3b2b41f850021c6cc15eaab507cd",
-  "_spec": "accepts@~1.3.7",
-  "_where": "C:\\Users\\brin\\Desktop\\Personnel\\FatboarProject-develop\\FatboarProject\\express-server\\node_modules\\express",
+  "_resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
+  "_shasum": "0bf0be125b67014adcb0b0921e62db7bffe16b2e",
+  "_spec": "accepts@~1.3.8",
+  "_where": "C:\\FatboarProject\\express-server\\node_modules\\express",
   "bugs": {
   "bugs": {
     "url": "https://github.com/jshttp/accepts/issues"
     "url": "https://github.com/jshttp/accepts/issues"
   },
   },
@@ -38,22 +38,22 @@
     }
     }
   ],
   ],
   "dependencies": {
   "dependencies": {
-    "mime-types": "~2.1.24",
-    "negotiator": "0.6.2"
+    "mime-types": "~2.1.34",
+    "negotiator": "0.6.3"
   },
   },
   "deprecated": false,
   "deprecated": false,
   "description": "Higher-level content negotiation",
   "description": "Higher-level content negotiation",
   "devDependencies": {
   "devDependencies": {
     "deep-equal": "1.0.1",
     "deep-equal": "1.0.1",
-    "eslint": "5.16.0",
-    "eslint-config-standard": "12.0.0",
-    "eslint-plugin-import": "2.17.2",
-    "eslint-plugin-markdown": "1.0.0",
-    "eslint-plugin-node": "8.0.1",
-    "eslint-plugin-promise": "4.1.1",
-    "eslint-plugin-standard": "4.0.0",
-    "mocha": "6.1.4",
-    "nyc": "14.0.0"
+    "eslint": "7.32.0",
+    "eslint-config-standard": "14.1.1",
+    "eslint-plugin-import": "2.25.4",
+    "eslint-plugin-markdown": "2.2.1",
+    "eslint-plugin-node": "11.1.0",
+    "eslint-plugin-promise": "4.3.1",
+    "eslint-plugin-standard": "4.1.0",
+    "mocha": "9.2.0",
+    "nyc": "15.1.0"
   },
   },
   "engines": {
   "engines": {
     "node": ">= 0.6"
     "node": ">= 0.6"
@@ -77,10 +77,10 @@
     "url": "git+https://github.com/jshttp/accepts.git"
     "url": "git+https://github.com/jshttp/accepts.git"
   },
   },
   "scripts": {
   "scripts": {
-    "lint": "eslint --plugin markdown --ext js,md .",
+    "lint": "eslint .",
     "test": "mocha --reporter spec --check-leaks --bail test/",
     "test": "mocha --reporter spec --check-leaks --bail test/",
-    "test-cov": "nyc --reporter=html --reporter=text npm test",
-    "test-travis": "nyc --reporter=text npm test"
+    "test-ci": "nyc --reporter=lcov --reporter=text npm test",
+    "test-cov": "nyc --reporter=html --reporter=text npm test"
   },
   },
-  "version": "1.3.7"
+  "version": "1.3.8"
 }
 }

+ 2 - 2
express-server/node_modules/array-flatten/package.json

@@ -2,7 +2,7 @@
   "_from": "array-flatten@1.1.1",
   "_from": "array-flatten@1.1.1",
   "_id": "array-flatten@1.1.1",
   "_id": "array-flatten@1.1.1",
   "_inBundle": false,
   "_inBundle": false,
-  "_integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=",
+  "_integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==",
   "_location": "/array-flatten",
   "_location": "/array-flatten",
   "_phantomChildren": {},
   "_phantomChildren": {},
   "_requested": {
   "_requested": {
@@ -21,7 +21,7 @@
   "_resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
   "_resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
   "_shasum": "9a5f699051b1e7073328f2a008968b64ea2955d2",
   "_shasum": "9a5f699051b1e7073328f2a008968b64ea2955d2",
   "_spec": "array-flatten@1.1.1",
   "_spec": "array-flatten@1.1.1",
-  "_where": "C:\\Users\\brin\\Desktop\\Personnel\\FatboarProject-develop\\FatboarProject\\express-server\\node_modules\\express",
+  "_where": "C:\\FatboarProject\\express-server\\node_modules\\express",
   "author": {
   "author": {
     "name": "Blake Embrey",
     "name": "Blake Embrey",
     "email": "hello@blakeembrey.com",
     "email": "hello@blakeembrey.com",

+ 42 - 0
express-server/node_modules/body-parser/HISTORY.md

@@ -1,3 +1,45 @@
+1.20.0 / 2022-04-02
+===================
+
+  * Fix error message for json parse whitespace in `strict`
+  * Fix internal error when inflated body exceeds limit
+  * Prevent loss of async hooks context
+  * Prevent hanging when request already read
+  * deps: depd@2.0.0
+    - Replace internal `eval` usage with `Function` constructor
+    - Use instance methods on `process` to check for listeners
+  * deps: http-errors@2.0.0
+    - deps: depd@2.0.0
+    - deps: statuses@2.0.1
+  * deps: on-finished@2.4.1
+  * deps: qs@6.10.3
+  * deps: raw-body@2.5.1
+    - deps: http-errors@2.0.0
+
+1.19.2 / 2022-02-15
+===================
+
+  * deps: bytes@3.1.2
+  * deps: qs@6.9.7
+    * Fix handling of `__proto__` keys
+  * deps: raw-body@2.4.3
+    - deps: bytes@3.1.2
+
+1.19.1 / 2021-12-10
+===================
+
+  * deps: bytes@3.1.1
+  * deps: http-errors@1.8.1
+    - deps: inherits@2.0.4
+    - deps: toidentifier@1.0.1
+    - deps: setprototypeof@1.2.0
+  * deps: qs@6.9.6
+  * deps: raw-body@2.4.2
+    - deps: bytes@3.1.1
+    - deps: http-errors@1.8.1
+  * deps: safe-buffer@5.2.1
+  * deps: type-is@~1.6.18
+
 1.19.0 / 2019-04-25
 1.19.0 / 2019-04-25
 ===================
 ===================
 
 

+ 33 - 12
express-server/node_modules/body-parser/README.md

@@ -2,7 +2,7 @@
 
 
 [![NPM Version][npm-image]][npm-url]
 [![NPM Version][npm-image]][npm-url]
 [![NPM Downloads][downloads-image]][downloads-url]
 [![NPM Downloads][downloads-image]][downloads-url]
-[![Build Status][travis-image]][travis-url]
+[![Build Status][github-actions-ci-image]][github-actions-ci-url]
 [![Test Coverage][coveralls-image]][coveralls-url]
 [![Test Coverage][coveralls-image]][coveralls-url]
 
 
 Node.js body parsing middleware.
 Node.js body parsing middleware.
@@ -49,8 +49,6 @@ $ npm install body-parser
 
 
 ## API
 ## API
 
 
-<!-- eslint-disable no-unused-vars -->
-
 ```js
 ```js
 var bodyParser = require('body-parser')
 var bodyParser = require('body-parser')
 ```
 ```
@@ -281,14 +279,15 @@ encoding of the request. The parsing can be aborted by throwing an error.
 
 
 ## Errors
 ## Errors
 
 
-The middlewares provided by this module create errors depending on the error
-condition during parsing. The errors will typically have a `status`/`statusCode`
-property that contains the suggested HTTP response code, an `expose` property
-to determine if the `message` property should be displayed to the client, a
-`type` property to determine the type of error without matching against the
-`message`, and a `body` property containing the read body, if available.
+The middlewares provided by this module create errors using the
+[`http-errors` module](https://www.npmjs.com/package/http-errors). The errors
+will typically have a `status`/`statusCode` property that contains the suggested
+HTTP response code, an `expose` property to determine if the `message` property
+should be displayed to the client, a `type` property to determine the type of
+error without matching against the `message`, and a `body` property containing
+the read body, if available.
 
 
-The following are the common errors emitted, though any error can come through
+The following are the common errors created, though any error can come through
 for various reasons.
 for various reasons.
 
 
 ### content encoding unsupported
 ### content encoding unsupported
@@ -299,6 +298,20 @@ contained an encoding but the "inflation" option was set to `false`. The
 `'encoding.unsupported'`, and the `charset` property will be set to the
 `'encoding.unsupported'`, and the `charset` property will be set to the
 encoding that is unsupported.
 encoding that is unsupported.
 
 
+### entity parse failed
+
+This error will occur when the request contained an entity that could not be
+parsed by the middleware. The `status` property is set to `400`, the `type`
+property is set to `'entity.parse.failed'`, and the `body` property is set to
+the entity value that failed parsing.
+
+### entity verify failed
+
+This error will occur when the request contained an entity that could not be
+failed verification by the defined `verify` option. The `status` property is
+set to `403`, the `type` property is set to `'entity.verify.failed'`, and the
+`body` property is set to the entity value that failed verification.
+
 ### request aborted
 ### request aborted
 
 
 This error will occur when the request is aborted by the client before reading
 This error will occur when the request is aborted by the client before reading
@@ -329,6 +342,14 @@ to this middleware. This module operates directly on bytes only and you cannot
 call `req.setEncoding` when using this module. The `status` property is set to
 call `req.setEncoding` when using this module. The `status` property is set to
 `500` and the `type` property is set to `'stream.encoding.set'`.
 `500` and the `type` property is set to `'stream.encoding.set'`.
 
 
+### stream is not readable
+
+This error will occur when the request is no longer readable when this middleware
+attempts to read it. This typically means something other than a middleware from
+this module read the reqest body already and the middleware was also configured to
+read the same request. The `status` property is set to `500` and the `type`
+property is set to `'stream.not.readable'`.
+
 ### too many parameters
 ### too many parameters
 
 
 This error will occur when the content of the request exceeds the configured
 This error will occur when the content of the request exceeds the configured
@@ -435,9 +456,9 @@ app.use(bodyParser.text({ type: 'text/html' }))
 
 
 [npm-image]: https://img.shields.io/npm/v/body-parser.svg
 [npm-image]: https://img.shields.io/npm/v/body-parser.svg
 [npm-url]: https://npmjs.org/package/body-parser
 [npm-url]: https://npmjs.org/package/body-parser
-[travis-image]: https://img.shields.io/travis/expressjs/body-parser/master.svg
-[travis-url]: https://travis-ci.org/expressjs/body-parser
 [coveralls-image]: https://img.shields.io/coveralls/expressjs/body-parser/master.svg
 [coveralls-image]: https://img.shields.io/coveralls/expressjs/body-parser/master.svg
 [coveralls-url]: https://coveralls.io/r/expressjs/body-parser?branch=master
 [coveralls-url]: https://coveralls.io/r/expressjs/body-parser?branch=master
 [downloads-image]: https://img.shields.io/npm/dm/body-parser.svg
 [downloads-image]: https://img.shields.io/npm/dm/body-parser.svg
 [downloads-url]: https://npmjs.org/package/body-parser
 [downloads-url]: https://npmjs.org/package/body-parser
+[github-actions-ci-image]: https://img.shields.io/github/workflow/status/expressjs/body-parser/ci/master?label=ci
+[github-actions-ci-url]: https://github.com/expressjs/body-parser/actions/workflows/ci.yml

+ 26 - 2
express-server/node_modules/body-parser/lib/read.js

@@ -12,9 +12,11 @@
  */
  */
 
 
 var createError = require('http-errors')
 var createError = require('http-errors')
+var destroy = require('destroy')
 var getBody = require('raw-body')
 var getBody = require('raw-body')
 var iconv = require('iconv-lite')
 var iconv = require('iconv-lite')
 var onFinished = require('on-finished')
 var onFinished = require('on-finished')
+var unpipe = require('unpipe')
 var zlib = require('zlib')
 var zlib = require('zlib')
 
 
 /**
 /**
@@ -89,9 +91,14 @@ function read (req, res, next, parse, debug, options) {
         _error = createError(400, error)
         _error = createError(400, error)
       }
       }
 
 
+      // unpipe from stream and destroy
+      if (stream !== req) {
+        unpipe(req)
+        destroy(stream, true)
+      }
+
       // read off entire request
       // read off entire request
-      stream.resume()
-      onFinished(req, function onfinished () {
+      dump(req, function onfinished () {
         next(createError(400, _error))
         next(createError(400, _error))
       })
       })
       return
       return
@@ -179,3 +186,20 @@ function contentstream (req, debug, inflate) {
 
 
   return stream
   return stream
 }
 }
+
+/**
+ * Dump the contents of a request.
+ *
+ * @param {object} req
+ * @param {function} callback
+ * @api private
+ */
+
+function dump (req, callback) {
+  if (onFinished.isFinished(req)) {
+    callback(null)
+  } else {
+    onFinished(req, callback)
+    req.resume()
+  }
+}

+ 10 - 4
express-server/node_modules/body-parser/lib/types/json.js

@@ -37,7 +37,7 @@ module.exports = json
  *            %x0D )              ; Carriage return
  *            %x0D )              ; Carriage return
  */
  */
 
 
-var FIRST_CHAR_REGEXP = /^[\x20\x09\x0a\x0d]*(.)/ // eslint-disable-line no-control-regex
+var FIRST_CHAR_REGEXP = /^[\x20\x09\x0a\x0d]*([^\x20\x09\x0a\x0d])/ // eslint-disable-line no-control-regex
 
 
 /**
 /**
  * Create a middleware to parse JSON bodies.
  * Create a middleware to parse JSON bodies.
@@ -122,7 +122,7 @@ function json (options) {
 
 
     // assert charset per RFC 7159 sec 8.1
     // assert charset per RFC 7159 sec 8.1
     var charset = getCharset(req) || 'utf-8'
     var charset = getCharset(req) || 'utf-8'
-    if (charset.substr(0, 4) !== 'utf-') {
+    if (charset.slice(0, 4) !== 'utf-') {
       debug('invalid charset')
       debug('invalid charset')
       next(createError(415, 'unsupported charset "' + charset.toUpperCase() + '"', {
       next(createError(415, 'unsupported charset "' + charset.toUpperCase() + '"', {
         charset: charset,
         charset: charset,
@@ -152,7 +152,9 @@ function json (options) {
 
 
 function createStrictSyntaxError (str, char) {
 function createStrictSyntaxError (str, char) {
   var index = str.indexOf(char)
   var index = str.indexOf(char)
-  var partial = str.substring(0, index) + '#'
+  var partial = index !== -1
+    ? str.substring(0, index) + '#'
+    : ''
 
 
   try {
   try {
     JSON.parse(partial); /* istanbul ignore next */ throw new SyntaxError('strict violation')
     JSON.parse(partial); /* istanbul ignore next */ throw new SyntaxError('strict violation')
@@ -173,7 +175,11 @@ function createStrictSyntaxError (str, char) {
  */
  */
 
 
 function firstchar (str) {
 function firstchar (str) {
-  return FIRST_CHAR_REGEXP.exec(str)[1]
+  var match = FIRST_CHAR_REGEXP.exec(str)
+
+  return match
+    ? match[1]
+    : undefined
 }
 }
 
 
 /**
 /**

+ 32 - 28
express-server/node_modules/body-parser/package.json

@@ -1,8 +1,8 @@
 {
 {
   "_from": "body-parser@^1.19.0",
   "_from": "body-parser@^1.19.0",
-  "_id": "body-parser@1.19.0",
+  "_id": "body-parser@1.20.0",
   "_inBundle": false,
   "_inBundle": false,
-  "_integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==",
+  "_integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==",
   "_location": "/body-parser",
   "_location": "/body-parser",
   "_phantomChildren": {},
   "_phantomChildren": {},
   "_requested": {
   "_requested": {
@@ -19,10 +19,10 @@
     "/",
     "/",
     "/express"
     "/express"
   ],
   ],
-  "_resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz",
-  "_shasum": "96b2709e57c9c4e09a6fd66a8fd979844f69f08a",
+  "_resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz",
+  "_shasum": "3de69bd89011c11573d7bfee6a64f11b6bd27cc5",
   "_spec": "body-parser@^1.19.0",
   "_spec": "body-parser@^1.19.0",
-  "_where": "C:\\Users\\brin\\Desktop\\Personnel\\FatboarProject-develop\\FatboarProject\\express-server",
+  "_where": "C:\\FatboarProject\\express-server",
   "bugs": {
   "bugs": {
     "url": "https://github.com/expressjs/body-parser/issues"
     "url": "https://github.com/expressjs/body-parser/issues"
   },
   },
@@ -39,40 +39,44 @@
     }
     }
   ],
   ],
   "dependencies": {
   "dependencies": {
-    "bytes": "3.1.0",
+    "bytes": "3.1.2",
     "content-type": "~1.0.4",
     "content-type": "~1.0.4",
     "debug": "2.6.9",
     "debug": "2.6.9",
-    "depd": "~1.1.2",
-    "http-errors": "1.7.2",
+    "depd": "2.0.0",
+    "destroy": "1.2.0",
+    "http-errors": "2.0.0",
     "iconv-lite": "0.4.24",
     "iconv-lite": "0.4.24",
-    "on-finished": "~2.3.0",
-    "qs": "6.7.0",
-    "raw-body": "2.4.0",
-    "type-is": "~1.6.17"
+    "on-finished": "2.4.1",
+    "qs": "6.10.3",
+    "raw-body": "2.5.1",
+    "type-is": "~1.6.18",
+    "unpipe": "1.0.0"
   },
   },
   "deprecated": false,
   "deprecated": false,
   "description": "Node.js body parsing middleware",
   "description": "Node.js body parsing middleware",
   "devDependencies": {
   "devDependencies": {
-    "eslint": "5.16.0",
-    "eslint-config-standard": "12.0.0",
-    "eslint-plugin-import": "2.17.2",
-    "eslint-plugin-markdown": "1.0.0",
-    "eslint-plugin-node": "8.0.1",
-    "eslint-plugin-promise": "4.1.1",
-    "eslint-plugin-standard": "4.0.0",
-    "istanbul": "0.4.5",
+    "eslint": "7.32.0",
+    "eslint-config-standard": "14.1.1",
+    "eslint-plugin-import": "2.25.4",
+    "eslint-plugin-markdown": "2.2.1",
+    "eslint-plugin-node": "11.1.0",
+    "eslint-plugin-promise": "5.2.0",
+    "eslint-plugin-standard": "4.1.0",
     "methods": "1.1.2",
     "methods": "1.1.2",
-    "mocha": "6.1.4",
-    "safe-buffer": "5.1.2",
-    "supertest": "4.0.2"
+    "mocha": "9.2.2",
+    "nyc": "15.1.0",
+    "safe-buffer": "5.2.1",
+    "supertest": "6.2.2"
   },
   },
   "engines": {
   "engines": {
-    "node": ">= 0.8"
+    "node": ">= 0.8",
+    "npm": "1.2.8000 || >= 1.4.16"
   },
   },
   "files": [
   "files": [
     "lib/",
     "lib/",
     "LICENSE",
     "LICENSE",
     "HISTORY.md",
     "HISTORY.md",
+    "SECURITY.md",
     "index.js"
     "index.js"
   ],
   ],
   "homepage": "https://github.com/expressjs/body-parser#readme",
   "homepage": "https://github.com/expressjs/body-parser#readme",
@@ -83,10 +87,10 @@
     "url": "git+https://github.com/expressjs/body-parser.git"
     "url": "git+https://github.com/expressjs/body-parser.git"
   },
   },
   "scripts": {
   "scripts": {
-    "lint": "eslint --plugin markdown --ext js,md .",
+    "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-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --require test/support/env --reporter dot --check-leaks test/",
-    "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --require test/support/env --reporter spec --check-leaks test/"
+    "test-ci": "nyc --reporter=lcov --reporter=text npm test",
+    "test-cov": "nyc --reporter=html --reporter=text npm test"
   },
   },
-  "version": "1.19.0"
+  "version": "1.20.0"
 }
 }

+ 10 - 0
express-server/node_modules/bytes/History.md

@@ -1,3 +1,13 @@
+3.1.2 / 2022-01-27
+==================
+
+  * Fix return value for un-parsable strings
+
+3.1.1 / 2021-11-15
+==================
+
+  * Fix "thousandsSeparator" incorrecting formatting fractional part
+
 3.1.0 / 2019-01-22
 3.1.0 / 2019-01-22
 ==================
 ==================
 
 

+ 42 - 16
express-server/node_modules/bytes/Readme.md

@@ -2,7 +2,7 @@
 
 
 [![NPM Version][npm-image]][npm-url]
 [![NPM Version][npm-image]][npm-url]
 [![NPM Downloads][downloads-image]][downloads-url]
 [![NPM Downloads][downloads-image]][downloads-url]
-[![Build Status][travis-image]][travis-url]
+[![Build Status][ci-image]][ci-url]
 [![Test Coverage][coveralls-image]][coveralls-url]
 [![Test Coverage][coveralls-image]][coveralls-url]
 
 
 Utility to parse a string bytes (ex: `1TB`) to bytes (`1099511627776`) and vice-versa.
 Utility to parse a string bytes (ex: `1TB`) to bytes (`1099511627776`) and vice-versa.
@@ -23,6 +23,33 @@ $ npm install bytes
 var bytes = require('bytes');
 var bytes = require('bytes');
 ```
 ```
 
 
+#### bytes(number|string value, [options]): number|string|null
+
+Default export function. Delegates to either `bytes.format` or `bytes.parse` based on the type of `value`.
+
+**Arguments**
+
+| Name    | Type     | Description        |
+|---------|----------|--------------------|
+| value   | `number`|`string` | Number value to format or string value to parse |
+| options | `Object` | Conversion options for `format` |
+
+**Returns**
+
+| Name    | Type             | Description                                     |
+|---------|------------------|-------------------------------------------------|
+| results | `string`|`number`|`null` | Return null upon error. Numeric value in bytes, or string value otherwise. |
+
+**Example**
+
+```js
+bytes(1024);
+// output: '1KB'
+
+bytes('1KB');
+// output: 1024
+```
+
 #### bytes.format(number value, [options]): string|null
 #### bytes.format(number value, [options]): string|null
 
 
 Format the given value in bytes into a string. If the value is negative, it is kept as such. If it is a float, it is
 Format the given value in bytes into a string. If the value is negative, it is kept as such. If it is a float, it is
@@ -41,7 +68,7 @@ Format the given value in bytes into a string. If the value is negative, it is k
 |-------------------|--------|-----------------------------------------------------------------------------------------|
 |-------------------|--------|-----------------------------------------------------------------------------------------|
 | decimalPlaces | `number`|`null` | Maximum number of decimal places to include in output. Default value to `2`. |
 | decimalPlaces | `number`|`null` | Maximum number of decimal places to include in output. Default value to `2`. |
 | fixedDecimals | `boolean`|`null` | Whether to always display the maximum number of decimal places. Default value to `false` |
 | fixedDecimals | `boolean`|`null` | Whether to always display the maximum number of decimal places. Default value to `false` |
-| thousandsSeparator | `string`|`null` | Example of values: `' '`, `','` and `.`... Default value to `''`. |
+| thousandsSeparator | `string`|`null` | Example of values: `' '`, `','` and `'.'`... Default value to `''`. |
 | unit | `string`|`null` | The unit in which the result will be returned (B/KB/MB/GB/TB). Default value to `''` (which means auto detect). |
 | unit | `string`|`null` | The unit in which the result will be returned (B/KB/MB/GB/TB). Default value to `''` (which means auto detect). |
 | unitSeparator | `string`|`null` | Separator to use between number and unit. Default value to `''`. |
 | unitSeparator | `string`|`null` | Separator to use between number and unit. Default value to `''`. |
 
 
@@ -54,21 +81,20 @@ Format the given value in bytes into a string. If the value is negative, it is k
 **Example**
 **Example**
 
 
 ```js
 ```js
-bytes(1024);
+bytes.format(1024);
 // output: '1KB'
 // output: '1KB'
 
 
-bytes(1000);
+bytes.format(1000);
 // output: '1000B'
 // output: '1000B'
 
 
-bytes(1000, {thousandsSeparator: ' '});
+bytes.format(1000, {thousandsSeparator: ' '});
 // output: '1 000B'
 // output: '1 000B'
 
 
-bytes(1024 * 1.7, {decimalPlaces: 0});
+bytes.format(1024 * 1.7, {decimalPlaces: 0});
 // output: '2KB'
 // output: '2KB'
 
 
-bytes(1024, {unitSeparator: ' '});
+bytes.format(1024, {unitSeparator: ' '});
 // output: '1 KB'
 // output: '1 KB'
-
 ```
 ```
 
 
 #### bytes.parse(string|number value): number|null
 #### bytes.parse(string|number value): number|null
@@ -102,25 +128,25 @@ The units are in powers of two, not ten. This means 1kb = 1024b according to thi
 **Example**
 **Example**
 
 
 ```js
 ```js
-bytes('1KB');
+bytes.parse('1KB');
 // output: 1024
 // output: 1024
 
 
-bytes('1024');
+bytes.parse('1024');
 // output: 1024
 // output: 1024
 
 
-bytes(1024);
-// output: 1KB
+bytes.parse(1024);
+// output: 1024
 ```
 ```
 
 
-## License 
+## License
 
 
 [MIT](LICENSE)
 [MIT](LICENSE)
 
 
+[ci-image]: https://badgen.net/github/checks/visionmedia/bytes.js/master?label=ci
+[ci-url]: https://github.com/visionmedia/bytes.js/actions?query=workflow%3Aci
 [coveralls-image]: https://badgen.net/coveralls/c/github/visionmedia/bytes.js/master
 [coveralls-image]: https://badgen.net/coveralls/c/github/visionmedia/bytes.js/master
 [coveralls-url]: https://coveralls.io/r/visionmedia/bytes.js?branch=master
 [coveralls-url]: https://coveralls.io/r/visionmedia/bytes.js?branch=master
 [downloads-image]: https://badgen.net/npm/dm/bytes
 [downloads-image]: https://badgen.net/npm/dm/bytes
 [downloads-url]: https://npmjs.org/package/bytes
 [downloads-url]: https://npmjs.org/package/bytes
-[npm-image]: https://badgen.net/npm/node/bytes
+[npm-image]: https://badgen.net/npm/v/bytes
 [npm-url]: https://npmjs.org/package/bytes
 [npm-url]: https://npmjs.org/package/bytes
-[travis-image]: https://badgen.net/travis/visionmedia/bytes.js/master
-[travis-url]: https://travis-ci.org/visionmedia/bytes.js

+ 9 - 1
express-server/node_modules/bytes/index.js

@@ -117,7 +117,11 @@ function format(value, options) {
   }
   }
 
 
   if (thousandsSeparator) {
   if (thousandsSeparator) {
-    str = str.replace(formatThousandsRegExp, thousandsSeparator);
+    str = str.split('.').map(function (s, i) {
+      return i === 0
+        ? s.replace(formatThousandsRegExp, thousandsSeparator)
+        : s
+    }).join('.');
   }
   }
 
 
   return str + unitSeparator + unit;
   return str + unitSeparator + unit;
@@ -158,5 +162,9 @@ function parse(val) {
     unit = results[4].toLowerCase();
     unit = results[4].toLowerCase();
   }
   }
 
 
+  if (isNaN(floatValue)) {
+    return null;
+  }
+
   return Math.floor(map[unit] * floatValue);
   return Math.floor(map[unit] * floatValue);
 }
 }

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

@@ -1,28 +1,28 @@
 {
 {
-  "_from": "bytes@3.1.0",
-  "_id": "bytes@3.1.0",
+  "_from": "bytes@3.1.2",
+  "_id": "bytes@3.1.2",
   "_inBundle": false,
   "_inBundle": false,
-  "_integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==",
+  "_integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
   "_location": "/bytes",
   "_location": "/bytes",
   "_phantomChildren": {},
   "_phantomChildren": {},
   "_requested": {
   "_requested": {
     "type": "version",
     "type": "version",
     "registry": true,
     "registry": true,
-    "raw": "bytes@3.1.0",
+    "raw": "bytes@3.1.2",
     "name": "bytes",
     "name": "bytes",
     "escapedName": "bytes",
     "escapedName": "bytes",
-    "rawSpec": "3.1.0",
+    "rawSpec": "3.1.2",
     "saveSpec": null,
     "saveSpec": null,
-    "fetchSpec": "3.1.0"
+    "fetchSpec": "3.1.2"
   },
   },
   "_requiredBy": [
   "_requiredBy": [
     "/body-parser",
     "/body-parser",
     "/raw-body"
     "/raw-body"
   ],
   ],
-  "_resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
-  "_shasum": "f6cf7933a360e0588fa9fde85651cdc7f805d1f6",
-  "_spec": "bytes@3.1.0",
-  "_where": "C:\\Users\\brin\\Desktop\\Personnel\\FatboarProject-develop\\FatboarProject\\express-server\\node_modules\\body-parser",
+  "_resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
+  "_shasum": "8b0beeb98605adf1b128fa4386403c009e0221a5",
+  "_spec": "bytes@3.1.2",
+  "_where": "C:\\FatboarProject\\express-server\\node_modules\\body-parser",
   "author": {
   "author": {
     "name": "TJ Holowaychuk",
     "name": "TJ Holowaychuk",
     "email": "tj@vision-media.ca",
     "email": "tj@vision-media.ca",
@@ -45,9 +45,10 @@
   "deprecated": false,
   "deprecated": false,
   "description": "Utility to parse a string bytes to bytes and vice-versa",
   "description": "Utility to parse a string bytes to bytes and vice-versa",
   "devDependencies": {
   "devDependencies": {
-    "eslint": "5.12.1",
-    "mocha": "5.2.0",
-    "nyc": "13.1.0"
+    "eslint": "7.32.0",
+    "eslint-plugin-markdown": "2.2.1",
+    "mocha": "9.2.0",
+    "nyc": "15.1.0"
   },
   },
   "engines": {
   "engines": {
     "node": ">= 0.8"
     "node": ">= 0.8"
@@ -77,8 +78,8 @@
   "scripts": {
   "scripts": {
     "lint": "eslint .",
     "lint": "eslint .",
     "test": "mocha --check-leaks --reporter spec",
     "test": "mocha --check-leaks --reporter spec",
-    "test-ci": "nyc --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": "3.1.0"
+  "version": "3.1.2"
 }
 }

+ 5 - 0
express-server/node_modules/content-disposition/HISTORY.md

@@ -1,3 +1,8 @@
+0.5.4 / 2021-12-10
+==================
+
+  * deps: safe-buffer@5.2.1
+
 0.5.3 / 2018-12-17
 0.5.3 / 2018-12-17
 ==================
 ==================
 
 

+ 3 - 9
express-server/node_modules/content-disposition/README.md

@@ -3,7 +3,7 @@
 [![NPM Version][npm-image]][npm-url]
 [![NPM Version][npm-image]][npm-url]
 [![NPM Downloads][downloads-image]][downloads-url]
 [![NPM Downloads][downloads-image]][downloads-url]
 [![Node.js Version][node-version-image]][node-version-url]
 [![Node.js Version][node-version-image]][node-version-url]
-[![Build Status][travis-image]][travis-url]
+[![Build Status][github-actions-ci-image]][github-actions-ci-url]
 [![Test Coverage][coveralls-image]][coveralls-url]
 [![Test Coverage][coveralls-image]][coveralls-url]
 
 
 Create and parse HTTP `Content-Disposition` header
 Create and parse HTTP `Content-Disposition` header
@@ -16,8 +16,6 @@ $ npm install content-disposition
 
 
 ## API
 ## API
 
 
-<!-- eslint-disable no-unused-vars -->
-
 ```js
 ```js
 var contentDisposition = require('content-disposition')
 var contentDisposition = require('content-disposition')
 ```
 ```
@@ -28,8 +26,6 @@ Create an attachment `Content-Disposition` header value using the given file nam
 if supplied. The `filename` is optional and if no file name is desired, but you
 if supplied. The `filename` is optional and if no file name is desired, but you
 want to specify `options`, set `filename` to `undefined`.
 want to specify `options`, set `filename` to `undefined`.
 
 
-<!-- eslint-disable no-undef -->
-
 ```js
 ```js
 res.setHeader('Content-Disposition', contentDisposition('∫ maths.pdf'))
 res.setHeader('Content-Disposition', contentDisposition('∫ maths.pdf'))
 ```
 ```
@@ -70,8 +66,6 @@ it). The type is normalized to lower-case.
 
 
 ### contentDisposition.parse(string)
 ### contentDisposition.parse(string)
 
 
-<!-- eslint-disable no-undef, no-unused-vars -->
-
 ```js
 ```js
 var disposition = contentDisposition.parse('attachment; filename="EURO rates.txt"; filename*=UTF-8\'\'%e2%82%ac%20rates.txt')
 var disposition = contentDisposition.parse('attachment; filename="EURO rates.txt"; filename*=UTF-8\'\'%e2%82%ac%20rates.txt')
 ```
 ```
@@ -140,9 +134,9 @@ $ npm test
 [npm-url]: https://npmjs.org/package/content-disposition
 [npm-url]: https://npmjs.org/package/content-disposition
 [node-version-image]: https://img.shields.io/node/v/content-disposition.svg
 [node-version-image]: https://img.shields.io/node/v/content-disposition.svg
 [node-version-url]: https://nodejs.org/en/download
 [node-version-url]: https://nodejs.org/en/download
-[travis-image]: https://img.shields.io/travis/jshttp/content-disposition.svg
-[travis-url]: https://travis-ci.org/jshttp/content-disposition
 [coveralls-image]: https://img.shields.io/coveralls/jshttp/content-disposition.svg
 [coveralls-image]: https://img.shields.io/coveralls/jshttp/content-disposition.svg
 [coveralls-url]: https://coveralls.io/r/jshttp/content-disposition?branch=master
 [coveralls-url]: https://coveralls.io/r/jshttp/content-disposition?branch=master
 [downloads-image]: https://img.shields.io/npm/dm/content-disposition.svg
 [downloads-image]: https://img.shields.io/npm/dm/content-disposition.svg
 [downloads-url]: https://npmjs.org/package/content-disposition
 [downloads-url]: https://npmjs.org/package/content-disposition
+[github-actions-ci-image]: https://img.shields.io/github/workflow/status/jshttp/content-disposition/ci/master?label=ci
+[github-actions-ci-url]: https://github.com/jshttp/content-disposition?query=workflow%3Aci

+ 1 - 1
express-server/node_modules/content-disposition/index.js

@@ -255,7 +255,7 @@ function format (obj) {
 }
 }
 
 
 /**
 /**
- * Decode a RFC 6987 field value (gracefully).
+ * Decode a RFC 5987 field value (gracefully).
  *
  *
  * @param {string} str
  * @param {string} str
  * @return {string}
  * @return {string}

+ 23 - 23
express-server/node_modules/content-disposition/package.json

@@ -1,27 +1,27 @@
 {
 {
-  "_from": "content-disposition@0.5.3",
-  "_id": "content-disposition@0.5.3",
+  "_from": "content-disposition@0.5.4",
+  "_id": "content-disposition@0.5.4",
   "_inBundle": false,
   "_inBundle": false,
-  "_integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==",
+  "_integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
   "_location": "/content-disposition",
   "_location": "/content-disposition",
   "_phantomChildren": {},
   "_phantomChildren": {},
   "_requested": {
   "_requested": {
     "type": "version",
     "type": "version",
     "registry": true,
     "registry": true,
-    "raw": "content-disposition@0.5.3",
+    "raw": "content-disposition@0.5.4",
     "name": "content-disposition",
     "name": "content-disposition",
     "escapedName": "content-disposition",
     "escapedName": "content-disposition",
-    "rawSpec": "0.5.3",
+    "rawSpec": "0.5.4",
     "saveSpec": null,
     "saveSpec": null,
-    "fetchSpec": "0.5.3"
+    "fetchSpec": "0.5.4"
   },
   },
   "_requiredBy": [
   "_requiredBy": [
     "/express"
     "/express"
   ],
   ],
-  "_resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz",
-  "_shasum": "e130caf7e7279087c5616c2007d0485698984fbd",
-  "_spec": "content-disposition@0.5.3",
-  "_where": "C:\\Users\\brin\\Desktop\\Personnel\\FatboarProject-develop\\FatboarProject\\express-server\\node_modules\\express",
+  "_resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
+  "_shasum": "8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe",
+  "_spec": "content-disposition@0.5.4",
+  "_where": "C:\\FatboarProject\\express-server\\node_modules\\express",
   "author": {
   "author": {
     "name": "Douglas Christopher Wilson",
     "name": "Douglas Christopher Wilson",
     "email": "doug@somethingdoug.com"
     "email": "doug@somethingdoug.com"
@@ -31,21 +31,21 @@
   },
   },
   "bundleDependencies": false,
   "bundleDependencies": false,
   "dependencies": {
   "dependencies": {
-    "safe-buffer": "5.1.2"
+    "safe-buffer": "5.2.1"
   },
   },
   "deprecated": false,
   "deprecated": false,
   "description": "Create and parse Content-Disposition header",
   "description": "Create and parse Content-Disposition header",
   "devDependencies": {
   "devDependencies": {
     "deep-equal": "1.0.1",
     "deep-equal": "1.0.1",
-    "eslint": "5.10.0",
-    "eslint-config-standard": "12.0.0",
-    "eslint-plugin-import": "2.14.0",
-    "eslint-plugin-markdown": "1.0.0-rc.1",
-    "eslint-plugin-node": "7.0.1",
-    "eslint-plugin-promise": "4.0.1",
-    "eslint-plugin-standard": "4.0.0",
+    "eslint": "7.32.0",
+    "eslint-config-standard": "13.0.1",
+    "eslint-plugin-import": "2.25.3",
+    "eslint-plugin-markdown": "2.2.1",
+    "eslint-plugin-node": "11.1.0",
+    "eslint-plugin-promise": "5.2.0",
+    "eslint-plugin-standard": "4.1.0",
     "istanbul": "0.4.5",
     "istanbul": "0.4.5",
-    "mocha": "5.2.0"
+    "mocha": "9.1.3"
   },
   },
   "engines": {
   "engines": {
     "node": ">= 0.6"
     "node": ">= 0.6"
@@ -70,10 +70,10 @@
     "url": "git+https://github.com/jshttp/content-disposition.git"
     "url": "git+https://github.com/jshttp/content-disposition.git"
   },
   },
   "scripts": {
   "scripts": {
-    "lint": "eslint --plugin markdown --ext js,md .",
+    "lint": "eslint .",
     "test": "mocha --reporter spec --bail --check-leaks test/",
     "test": "mocha --reporter spec --bail --check-leaks test/",
-    "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/",
-    "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --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/"
   },
   },
-  "version": "0.5.3"
+  "version": "0.5.4"
 }
 }

+ 1 - 1
express-server/node_modules/content-type/package.json

@@ -22,7 +22,7 @@
   "_resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
   "_resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
   "_shasum": "e138cc75e040c727b1966fe5e5f8c9aee256fe3b",
   "_shasum": "e138cc75e040c727b1966fe5e5f8c9aee256fe3b",
   "_spec": "content-type@~1.0.4",
   "_spec": "content-type@~1.0.4",
-  "_where": "C:\\Users\\brin\\Desktop\\Personnel\\FatboarProject-develop\\FatboarProject\\express-server\\node_modules\\express",
+  "_where": "C:\\FatboarProject\\express-server\\node_modules\\express",
   "author": {
   "author": {
     "name": "Douglas Christopher Wilson",
     "name": "Douglas Christopher Wilson",
     "email": "doug@somethingdoug.com"
     "email": "doug@somethingdoug.com"

+ 2 - 2
express-server/node_modules/cookie-signature/package.json

@@ -2,7 +2,7 @@
   "_from": "cookie-signature@1.0.6",
   "_from": "cookie-signature@1.0.6",
   "_id": "cookie-signature@1.0.6",
   "_id": "cookie-signature@1.0.6",
   "_inBundle": false,
   "_inBundle": false,
-  "_integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=",
+  "_integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==",
   "_location": "/cookie-signature",
   "_location": "/cookie-signature",
   "_phantomChildren": {},
   "_phantomChildren": {},
   "_requested": {
   "_requested": {
@@ -21,7 +21,7 @@
   "_resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
   "_resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
   "_shasum": "e303a882b342cc3ee8ca513a79999734dab3ae2c",
   "_shasum": "e303a882b342cc3ee8ca513a79999734dab3ae2c",
   "_spec": "cookie-signature@1.0.6",
   "_spec": "cookie-signature@1.0.6",
-  "_where": "C:\\Users\\brin\\Desktop\\Personnel\\FatboarProject-develop\\FatboarProject\\express-server\\node_modules\\express",
+  "_where": "C:\\FatboarProject\\express-server\\node_modules\\express",
   "author": {
   "author": {
     "name": "TJ Holowaychuk",
     "name": "TJ Holowaychuk",
     "email": "tj@learnboost.com"
     "email": "tj@learnboost.com"

+ 19 - 0
express-server/node_modules/cookie/HISTORY.md

@@ -1,3 +1,22 @@
+0.5.0 / 2022-04-11
+==================
+
+  * Add `priority` option
+  * Fix `expires` option to reject invalid dates
+  * pref: improve default decode speed
+  * pref: remove slow string split in parse
+
+0.4.2 / 2022-02-02
+==================
+
+  * pref: read value only when assigning in parse
+  * pref: remove unnecessary regexp in parse
+
+0.4.1 / 2020-04-21
+==================
+
+  * Fix `maxAge` option to reject invalid values
+
 0.4.0 / 2019-05-15
 0.4.0 / 2019-05-15
 ==================
 ==================
 
 

+ 73 - 24
express-server/node_modules/cookie/README.md

@@ -3,13 +3,17 @@
 [![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]
 [![Node.js Version][node-version-image]][node-version-url]
-[![Build Status][travis-image]][travis-url]
+[![Build Status][github-actions-ci-image]][github-actions-ci-url]
 [![Test Coverage][coveralls-image]][coveralls-url]
 [![Test Coverage][coveralls-image]][coveralls-url]
 
 
 Basic HTTP cookie parser and serializer for HTTP servers.
 Basic HTTP cookie parser and serializer for HTTP servers.
 
 
 ## Installation
 ## Installation
 
 
+This is a [Node.js](https://nodejs.org/en/) module available through the
+[npm registry](https://www.npmjs.com/). Installation is done using the
+[`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally):
+
 ```sh
 ```sh
 $ npm install cookie
 $ npm install cookie
 ```
 ```
@@ -108,9 +112,23 @@ so if both are set, they should point to the same date and time.
 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
 is considered the ["default path"][rfc-6265-5.1.4].
 is considered the ["default path"][rfc-6265-5.1.4].
 
 
+##### priority
+
+Specifies the `string` to be the value for the [`Priority` `Set-Cookie` attribute][rfc-west-cookie-priority-00-4.1].
+
+  - `'low'` will set the `Priority` attribute to `Low`.
+  - `'medium'` will set the `Priority` attribute to `Medium`, the default priority when not set.
+  - `'high'` will set the `Priority` attribute to `High`.
+
+More information about the different priority levels can be found in
+[the specification][rfc-west-cookie-priority-00-4.1].
+
+**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.
+
 ##### sameSite
 ##### sameSite
 
 
-Specifies the `boolean` or `string` to be the value for the [`SameSite` `Set-Cookie` attribute][rfc-6265bis-03-4.1.2.7].
+Specifies the `boolean` or `string` to be the value for the [`SameSite` `Set-Cookie` attribute][rfc-6265bis-09-5.4.7].
 
 
   - `true` will set the `SameSite` attribute to `Strict` for strict same site enforcement.
   - `true` will set the `SameSite` attribute to `Strict` for strict same site enforcement.
   - `false` will not set the `SameSite` attribute.
   - `false` will not set the `SameSite` attribute.
@@ -119,7 +137,7 @@ Specifies the `boolean` or `string` to be the value for the [`SameSite` `Set-Coo
   - `'strict'` will set the `SameSite` attribute to `Strict` for strict same site enforcement.
   - `'strict'` will set the `SameSite` attribute to `Strict` for strict same site enforcement.
 
 
 More information about the different enforcement levels can be found in
 More information about the different enforcement levels can be found in
-[the specification][rfc-6265bis-03-4.1.2.7].
+[the specification][rfc-6265bis-09-5.4.7].
 
 
 **note** This is an attribute that has not yet been fully standardized, and may change in the future.
 **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.
 This also means many clients may ignore this attribute until they understand it.
@@ -194,40 +212,71 @@ $ npm test
 ```
 ```
 $ npm run bench
 $ npm run bench
 
 
-> cookie@0.3.1 bench cookie
+> cookie@0.4.2 bench
 > node benchmark/index.js
 > node benchmark/index.js
 
 
-  http_parser@2.8.0
-  node@6.14.2
-  v8@5.1.281.111
-  uv@1.16.1
+  node@16.14.0
+  v8@9.4.146.24-node.20
+  uv@1.43.0
   zlib@1.2.11
   zlib@1.2.11
-  ares@1.10.1-DEV
-  icu@58.2
-  modules@48
-  napi@3
-  openssl@1.0.2o
+  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
+
+> node benchmark/parse-top.js
+
+  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)
 
 
 > node benchmark/parse.js
 > node benchmark/parse.js
 
 
-  cookie.parse
+  cookie.parse - generic
 
 
   6 tests completed.
   6 tests completed.
 
 
-  simple      x 1,200,691 ops/sec ±1.12% (189 runs sampled)
-  decode      x 1,012,994 ops/sec ±0.97% (186 runs sampled)
-  unquote     x 1,074,174 ops/sec ±2.43% (186 runs sampled)
-  duplicates  x   438,424 ops/sec ±2.17% (184 runs sampled)
-  10 cookies  x   147,154 ops/sec ±1.01% (186 runs sampled)
-  100 cookies x    14,274 ops/sec ±1.07% (187 runs sampled)
+  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)
 ```
 ```
 
 
 ## References
 ## References
 
 
 - [RFC 6265: HTTP State Management Mechanism][rfc-6265]
 - [RFC 6265: HTTP State Management Mechanism][rfc-6265]
-- [Same-site Cookies][rfc-6265bis-03-4.1.2.7]
+- [Same-site Cookies][rfc-6265bis-09-5.4.7]
 
 
-[rfc-6265bis-03-4.1.2.7]: https://tools.ietf.org/html/draft-ietf-httpbis-rfc6265bis-03#section-4.1.2.7
+[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-6265]: https://tools.ietf.org/html/rfc6265
 [rfc-6265]: https://tools.ietf.org/html/rfc6265
 [rfc-6265-5.1.4]: https://tools.ietf.org/html/rfc6265#section-5.1.4
 [rfc-6265-5.1.4]: https://tools.ietf.org/html/rfc6265#section-5.1.4
 [rfc-6265-5.2.1]: https://tools.ietf.org/html/rfc6265#section-5.2.1
 [rfc-6265-5.2.1]: https://tools.ietf.org/html/rfc6265#section-5.2.1
@@ -244,10 +293,10 @@ $ npm run bench
 
 
 [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-image]: https://badgen.net/npm/node/cookie
 [node-version-url]: https://nodejs.org/en/download
 [node-version-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
-[travis-image]: https://badgen.net/travis/jshttp/cookie/master
-[travis-url]: https://travis-ci.org/jshttp/cookie

+ 91 - 19
express-server/node_modules/cookie/index.js

@@ -20,9 +20,7 @@ exports.serialize = serialize;
  * @private
  * @private
  */
  */
 
 
-var decode = decodeURIComponent;
-var encode = encodeURIComponent;
-var pairSplitRegExp = /; */;
+var __toString = Object.prototype.toString
 
 
 /**
 /**
  * RegExp to match field-content in RFC 7230 sec 3.2
  * RegExp to match field-content in RFC 7230 sec 3.2
@@ -53,30 +51,42 @@ function parse(str, options) {
 
 
   var obj = {}
   var obj = {}
   var opt = options || {};
   var opt = options || {};
-  var pairs = str.split(pairSplitRegExp);
   var dec = opt.decode || decode;
   var dec = opt.decode || decode;
 
 
-  for (var i = 0; i < pairs.length; i++) {
-    var pair = pairs[i];
-    var eq_idx = pair.indexOf('=');
+  var index = 0
+  while (index < str.length) {
+    var eqIdx = str.indexOf('=', index)
 
 
-    // skip things that don't look like key=value
-    if (eq_idx < 0) {
-      continue;
+    // no more cookie pairs
+    if (eqIdx === -1) {
+      break
     }
     }
 
 
-    var key = pair.substr(0, eq_idx).trim()
-    var val = pair.substr(++eq_idx, pair.length).trim();
+    var endIdx = str.indexOf(';', index)
 
 
-    // quoted values
-    if ('"' == val[0]) {
-      val = val.slice(1, -1);
+    if (endIdx === -1) {
+      endIdx = str.length
+    } else if (endIdx < eqIdx) {
+      // backtrack on prior semicolon
+      index = str.lastIndexOf(';', eqIdx - 1) + 1
+      continue
     }
     }
 
 
+    var key = str.slice(index, eqIdx).trim()
+
     // only assign once
     // only assign once
-    if (undefined == obj[key]) {
+    if (undefined === obj[key]) {
+      var val = str.slice(eqIdx + 1, endIdx).trim()
+
+      // quoted values
+      if (val.charCodeAt(0) === 0x22) {
+        val = val.slice(1, -1)
+      }
+
       obj[key] = tryDecode(val, dec);
       obj[key] = tryDecode(val, dec);
     }
     }
+
+    index = endIdx + 1
   }
   }
 
 
   return obj;
   return obj;
@@ -120,7 +130,11 @@ function serialize(name, val, options) {
 
 
   if (null != opt.maxAge) {
   if (null != opt.maxAge) {
     var maxAge = opt.maxAge - 0;
     var maxAge = opt.maxAge - 0;
-    if (isNaN(maxAge)) throw new Error('maxAge should be a Number');
+
+    if (isNaN(maxAge) || !isFinite(maxAge)) {
+      throw new TypeError('option maxAge is invalid')
+    }
+
     str += '; Max-Age=' + Math.floor(maxAge);
     str += '; Max-Age=' + Math.floor(maxAge);
   }
   }
 
 
@@ -141,11 +155,13 @@ function serialize(name, val, options) {
   }
   }
 
 
   if (opt.expires) {
   if (opt.expires) {
-    if (typeof opt.expires.toUTCString !== 'function') {
+    var expires = opt.expires
+
+    if (!isDate(expires) || isNaN(expires.valueOf())) {
       throw new TypeError('option expires is invalid');
       throw new TypeError('option expires is invalid');
     }
     }
 
 
-    str += '; Expires=' + opt.expires.toUTCString();
+    str += '; Expires=' + expires.toUTCString()
   }
   }
 
 
   if (opt.httpOnly) {
   if (opt.httpOnly) {
@@ -156,6 +172,26 @@ function serialize(name, val, options) {
     str += '; Secure';
     str += '; Secure';
   }
   }
 
 
+  if (opt.priority) {
+    var priority = typeof opt.priority === 'string'
+      ? opt.priority.toLowerCase()
+      : opt.priority
+
+    switch (priority) {
+      case 'low':
+        str += '; Priority=Low'
+        break
+      case 'medium':
+        str += '; Priority=Medium'
+        break
+      case 'high':
+        str += '; Priority=High'
+        break
+      default:
+        throw new TypeError('option priority is invalid')
+    }
+  }
+
   if (opt.sameSite) {
   if (opt.sameSite) {
     var sameSite = typeof opt.sameSite === 'string'
     var sameSite = typeof opt.sameSite === 'string'
       ? opt.sameSite.toLowerCase() : opt.sameSite;
       ? opt.sameSite.toLowerCase() : opt.sameSite;
@@ -181,6 +217,42 @@ function serialize(name, val, options) {
   return str;
   return str;
 }
 }
 
 
+/**
+ * URL-decode string value. Optimized to skip native call when no %.
+ *
+ * @param {string} str
+ * @returns {string}
+ */
+
+function decode (str) {
+  return str.indexOf('%') !== -1
+    ? decodeURIComponent(str)
+    : str
+}
+
+/**
+ * URL-encode value.
+ *
+ * @param {string} str
+ * @returns {string}
+ */
+
+function encode (val) {
+  return encodeURIComponent(val)
+}
+
+/**
+ * Determine if value is a Date.
+ *
+ * @param {*} val
+ * @private
+ */
+
+function isDate (val) {
+  return __toString.call(val) === '[object Date]' ||
+    val instanceof Date
+}
+
 /**
 /**
  * Try decoding a string using a decoding function.
  * Try decoding a string using a decoding function.
  *
  *

+ 22 - 18
express-server/node_modules/cookie/package.json

@@ -1,27 +1,27 @@
 {
 {
-  "_from": "cookie@0.4.0",
-  "_id": "cookie@0.4.0",
+  "_from": "cookie@0.5.0",
+  "_id": "cookie@0.5.0",
   "_inBundle": false,
   "_inBundle": false,
-  "_integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==",
+  "_integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==",
   "_location": "/cookie",
   "_location": "/cookie",
   "_phantomChildren": {},
   "_phantomChildren": {},
   "_requested": {
   "_requested": {
     "type": "version",
     "type": "version",
     "registry": true,
     "registry": true,
-    "raw": "cookie@0.4.0",
+    "raw": "cookie@0.5.0",
     "name": "cookie",
     "name": "cookie",
     "escapedName": "cookie",
     "escapedName": "cookie",
-    "rawSpec": "0.4.0",
+    "rawSpec": "0.5.0",
     "saveSpec": null,
     "saveSpec": null,
-    "fetchSpec": "0.4.0"
+    "fetchSpec": "0.5.0"
   },
   },
   "_requiredBy": [
   "_requiredBy": [
     "/express"
     "/express"
   ],
   ],
-  "_resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz",
-  "_shasum": "beb437e7022b3b6d49019d088665303ebe9c14ba",
-  "_spec": "cookie@0.4.0",
-  "_where": "C:\\Users\\brin\\Desktop\\Personnel\\FatboarProject-develop\\FatboarProject\\express-server\\node_modules\\express",
+  "_resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz",
+  "_shasum": "d1f5d71adec6558c58f389987c366aa47e994f8b",
+  "_spec": "cookie@0.5.0",
+  "_where": "C:\\FatboarProject\\express-server\\node_modules\\express",
   "author": {
   "author": {
     "name": "Roman Shtylman",
     "name": "Roman Shtylman",
     "email": "shtylman@gmail.com"
     "email": "shtylman@gmail.com"
@@ -41,10 +41,12 @@
   "devDependencies": {
   "devDependencies": {
     "beautify-benchmark": "0.2.4",
     "beautify-benchmark": "0.2.4",
     "benchmark": "2.1.4",
     "benchmark": "2.1.4",
-    "eslint": "5.16.0",
-    "eslint-plugin-markdown": "1.0.0",
-    "istanbul": "0.4.5",
-    "mocha": "6.1.4"
+    "eslint": "7.32.0",
+    "eslint-plugin-markdown": "2.2.1",
+    "mocha": "9.2.2",
+    "nyc": "15.1.0",
+    "safe-buffer": "5.2.1",
+    "top-sites": "1.1.97"
   },
   },
   "engines": {
   "engines": {
     "node": ">= 0.6"
     "node": ">= 0.6"
@@ -53,6 +55,7 @@
     "HISTORY.md",
     "HISTORY.md",
     "LICENSE",
     "LICENSE",
     "README.md",
     "README.md",
+    "SECURITY.md",
     "index.js"
     "index.js"
   ],
   ],
   "homepage": "https://github.com/jshttp/cookie#readme",
   "homepage": "https://github.com/jshttp/cookie#readme",
@@ -68,11 +71,12 @@
   },
   },
   "scripts": {
   "scripts": {
     "bench": "node benchmark/index.js",
     "bench": "node benchmark/index.js",
-    "lint": "eslint --plugin markdown --ext js,md .",
+    "lint": "eslint .",
     "test": "mocha --reporter spec --bail --check-leaks test/",
     "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/",
+    "test-ci": "nyc --reporter=lcov --reporter=text npm test",
+    "test-cov": "nyc --reporter=html --reporter=text npm test",
+    "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.4.0"
+  "version": "0.5.0"
 }
 }

+ 2 - 3
express-server/node_modules/debug/package.json

@@ -20,13 +20,12 @@
     "/express",
     "/express",
     "/finalhandler",
     "/finalhandler",
     "/get-uri",
     "/get-uri",
-    "/send",
-    "/undefsafe"
+    "/send"
   ],
   ],
   "_resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
   "_resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
   "_shasum": "5d128515df134ff327e90a4c93f4e077a536341f",
   "_shasum": "5d128515df134ff327e90a4c93f4e077a536341f",
   "_spec": "debug@2.6.9",
   "_spec": "debug@2.6.9",
-  "_where": "C:\\Users\\brin\\Desktop\\Personnel\\FatboarProject-develop\\FatboarProject\\express-server\\node_modules\\express",
+  "_where": "C:\\FatboarProject\\express-server\\node_modules\\express",
   "author": {
   "author": {
     "name": "TJ Holowaychuk",
     "name": "TJ Holowaychuk",
     "email": "tj@vision-media.ca"
     "email": "tj@vision-media.ca"

+ 7 - 0
express-server/node_modules/depd/History.md

@@ -1,3 +1,10 @@
+2.0.0 / 2018-10-26
+==================
+
+  * Drop support for Node.js 0.6
+  * Replace internal `eval` usage with `Function` constructor
+  * Use instance methods on `process` to check for listeners
+
 1.1.2 / 2018-01-11
 1.1.2 / 2018-01-11
 ==================
 ==================
 
 

+ 1 - 1
express-server/node_modules/depd/LICENSE

@@ -1,6 +1,6 @@
 (The MIT License)
 (The MIT License)
 
 
-Copyright (c) 2014-2017 Douglas Christopher Wilson
+Copyright (c) 2014-2018 Douglas Christopher Wilson
 
 
 Permission is hereby granted, free of charge, to any person obtaining
 Permission is hereby granted, free of charge, to any person obtaining
 a copy of this software and associated documentation files (the
 a copy of this software and associated documentation files (the

+ 8 - 8
express-server/node_modules/depd/Readme.md

@@ -267,14 +267,14 @@ deprecate.property(exports, 'oldprop', 'oldprop >= 0.10')
 
 
 [MIT](LICENSE)
 [MIT](LICENSE)
 
 
-[npm-version-image]: https://img.shields.io/npm/v/depd.svg
-[npm-downloads-image]: https://img.shields.io/npm/dm/depd.svg
-[npm-url]: https://npmjs.org/package/depd
-[travis-image]: https://img.shields.io/travis/dougwilson/nodejs-depd/master.svg?label=linux
-[travis-url]: https://travis-ci.org/dougwilson/nodejs-depd
-[appveyor-image]: https://img.shields.io/appveyor/ci/dougwilson/nodejs-depd/master.svg?label=windows
+[appveyor-image]: https://badgen.net/appveyor/ci/dougwilson/nodejs-depd/master?label=windows
 [appveyor-url]: https://ci.appveyor.com/project/dougwilson/nodejs-depd
 [appveyor-url]: https://ci.appveyor.com/project/dougwilson/nodejs-depd
-[coveralls-image]: https://img.shields.io/coveralls/dougwilson/nodejs-depd/master.svg
+[coveralls-image]: https://badgen.net/coveralls/c/github/dougwilson/nodejs-depd/master
 [coveralls-url]: https://coveralls.io/r/dougwilson/nodejs-depd?branch=master
 [coveralls-url]: https://coveralls.io/r/dougwilson/nodejs-depd?branch=master
-[node-image]: https://img.shields.io/node/v/depd.svg
+[node-image]: https://badgen.net/npm/node/depd
 [node-url]: https://nodejs.org/en/download/
 [node-url]: https://nodejs.org/en/download/
+[npm-downloads-image]: https://badgen.net/npm/dm/depd
+[npm-url]: https://npmjs.org/package/depd
+[npm-version-image]: https://badgen.net/npm/v/depd
+[travis-image]: https://badgen.net/travis/dougwilson/nodejs-depd/master?label=linux
+[travis-url]: https://travis-ci.org/dougwilson/nodejs-depd

+ 29 - 13
express-server/node_modules/depd/index.js

@@ -1,6 +1,6 @@
 /*!
 /*!
  * depd
  * depd
- * Copyright(c) 2014-2017 Douglas Christopher Wilson
+ * Copyright(c) 2014-2018 Douglas Christopher Wilson
  * MIT Licensed
  * MIT Licensed
  */
  */
 
 
@@ -8,8 +8,6 @@
  * Module dependencies.
  * Module dependencies.
  */
  */
 
 
-var callSiteToString = require('./lib/compat').callSiteToString
-var eventListenerCount = require('./lib/compat').eventListenerCount
 var relative = require('path').relative
 var relative = require('path').relative
 
 
 /**
 /**
@@ -92,7 +90,7 @@ function createStackString (stack) {
   }
   }
 
 
   for (var i = 0; i < stack.length; i++) {
   for (var i = 0; i < stack.length; i++) {
-    str += '\n    at ' + callSiteToString(stack[i])
+    str += '\n    at ' + stack[i].toString()
   }
   }
 
 
   return str
   return str
@@ -128,12 +126,31 @@ function depd (namespace) {
   return deprecate
   return deprecate
 }
 }
 
 
+/**
+ * Determine if event emitter has listeners of a given type.
+ *
+ * The way to do this check is done three different ways in Node.js >= 0.8
+ * so this consolidates them into a minimal set using instance methods.
+ *
+ * @param {EventEmitter} emitter
+ * @param {string} type
+ * @returns {boolean}
+ * @private
+ */
+
+function eehaslisteners (emitter, type) {
+  var count = typeof emitter.listenerCount !== 'function'
+    ? emitter.listeners(type).length
+    : emitter.listenerCount(type)
+
+  return count > 0
+}
+
 /**
 /**
  * Determine if namespace is ignored.
  * Determine if namespace is ignored.
  */
  */
 
 
 function isignored (namespace) {
 function isignored (namespace) {
-  /* istanbul ignore next: tested in a child processs */
   if (process.noDeprecation) {
   if (process.noDeprecation) {
     // --no-deprecation support
     // --no-deprecation support
     return true
     return true
@@ -150,7 +167,6 @@ function isignored (namespace) {
  */
  */
 
 
 function istraced (namespace) {
 function istraced (namespace) {
-  /* istanbul ignore next: tested in a child processs */
   if (process.traceDeprecation) {
   if (process.traceDeprecation) {
     // --trace-deprecation support
     // --trace-deprecation support
     return true
     return true
@@ -167,7 +183,7 @@ function istraced (namespace) {
  */
  */
 
 
 function log (message, site) {
 function log (message, site) {
-  var haslisteners = eventListenerCount(process, 'deprecation') !== 0
+  var haslisteners = eehaslisteners(process, 'deprecation')
 
 
   // abort early if no destination
   // abort early if no destination
   if (!haslisteners && this._ignored) {
   if (!haslisteners && this._ignored) {
@@ -310,7 +326,7 @@ function formatPlain (msg, caller, stack) {
   // add stack trace
   // add stack trace
   if (this._traced) {
   if (this._traced) {
     for (var i = 0; i < stack.length; i++) {
     for (var i = 0; i < stack.length; i++) {
-      formatted += '\n    at ' + callSiteToString(stack[i])
+      formatted += '\n    at ' + stack[i].toString()
     }
     }
 
 
     return formatted
     return formatted
@@ -335,7 +351,7 @@ function formatColor (msg, caller, stack) {
   // add stack trace
   // add stack trace
   if (this._traced) {
   if (this._traced) {
     for (var i = 0; i < stack.length; i++) {
     for (var i = 0; i < stack.length; i++) {
-      formatted += '\n    \x1b[36mat ' + callSiteToString(stack[i]) + '\x1b[39m' // cyan
+      formatted += '\n    \x1b[36mat ' + stack[i].toString() + '\x1b[39m' // cyan
     }
     }
 
 
     return formatted
     return formatted
@@ -400,18 +416,18 @@ function wrapfunction (fn, message) {
   }
   }
 
 
   var args = createArgumentsString(fn.length)
   var args = createArgumentsString(fn.length)
-  var deprecate = this // eslint-disable-line no-unused-vars
   var stack = getStack()
   var stack = getStack()
   var site = callSiteLocation(stack[1])
   var site = callSiteLocation(stack[1])
 
 
   site.name = fn.name
   site.name = fn.name
 
 
-   // eslint-disable-next-line no-eval
-  var deprecatedfn = eval('(function (' + args + ') {\n' +
+  // eslint-disable-next-line no-new-func
+  var deprecatedfn = new Function('fn', 'log', 'deprecate', 'message', 'site',
     '"use strict"\n' +
     '"use strict"\n' +
+    'return function (' + args + ') {' +
     'log.call(deprecate, message, site)\n' +
     'log.call(deprecate, message, site)\n' +
     'return fn.apply(this, arguments)\n' +
     'return fn.apply(this, arguments)\n' +
-    '})')
+    '}')(fn, log, this, message, site)
 
 
   return deprecatedfn
   return deprecatedfn
 }
 }

+ 0 - 103
express-server/node_modules/depd/lib/compat/callsite-tostring.js

@@ -1,103 +0,0 @@
-/*!
- * depd
- * Copyright(c) 2014 Douglas Christopher Wilson
- * MIT Licensed
- */
-
-'use strict'
-
-/**
- * Module exports.
- */
-
-module.exports = callSiteToString
-
-/**
- * Format a CallSite file location to a string.
- */
-
-function callSiteFileLocation (callSite) {
-  var fileName
-  var fileLocation = ''
-
-  if (callSite.isNative()) {
-    fileLocation = 'native'
-  } else if (callSite.isEval()) {
-    fileName = callSite.getScriptNameOrSourceURL()
-    if (!fileName) {
-      fileLocation = callSite.getEvalOrigin()
-    }
-  } else {
-    fileName = callSite.getFileName()
-  }
-
-  if (fileName) {
-    fileLocation += fileName
-
-    var lineNumber = callSite.getLineNumber()
-    if (lineNumber != null) {
-      fileLocation += ':' + lineNumber
-
-      var columnNumber = callSite.getColumnNumber()
-      if (columnNumber) {
-        fileLocation += ':' + columnNumber
-      }
-    }
-  }
-
-  return fileLocation || 'unknown source'
-}
-
-/**
- * Format a CallSite to a string.
- */
-
-function callSiteToString (callSite) {
-  var addSuffix = true
-  var fileLocation = callSiteFileLocation(callSite)
-  var functionName = callSite.getFunctionName()
-  var isConstructor = callSite.isConstructor()
-  var isMethodCall = !(callSite.isToplevel() || isConstructor)
-  var line = ''
-
-  if (isMethodCall) {
-    var methodName = callSite.getMethodName()
-    var typeName = getConstructorName(callSite)
-
-    if (functionName) {
-      if (typeName && functionName.indexOf(typeName) !== 0) {
-        line += typeName + '.'
-      }
-
-      line += functionName
-
-      if (methodName && functionName.lastIndexOf('.' + methodName) !== functionName.length - methodName.length - 1) {
-        line += ' [as ' + methodName + ']'
-      }
-    } else {
-      line += typeName + '.' + (methodName || '<anonymous>')
-    }
-  } else if (isConstructor) {
-    line += 'new ' + (functionName || '<anonymous>')
-  } else if (functionName) {
-    line += functionName
-  } else {
-    addSuffix = false
-    line += fileLocation
-  }
-
-  if (addSuffix) {
-    line += ' (' + fileLocation + ')'
-  }
-
-  return line
-}
-
-/**
- * Get constructor name of reviver.
- */
-
-function getConstructorName (obj) {
-  var receiver = obj.receiver
-  return (receiver.constructor && receiver.constructor.name) || null
-}

+ 0 - 22
express-server/node_modules/depd/lib/compat/event-listener-count.js

@@ -1,22 +0,0 @@
-/*!
- * depd
- * Copyright(c) 2015 Douglas Christopher Wilson
- * MIT Licensed
- */
-
-'use strict'
-
-/**
- * Module exports.
- * @public
- */
-
-module.exports = eventListenerCount
-
-/**
- * Get the count of listeners on an event emitter of a specific type.
- */
-
-function eventListenerCount (emitter, type) {
-  return emitter.listeners(type).length
-}

+ 0 - 79
express-server/node_modules/depd/lib/compat/index.js

@@ -1,79 +0,0 @@
-/*!
- * depd
- * Copyright(c) 2014-2015 Douglas Christopher Wilson
- * MIT Licensed
- */
-
-'use strict'
-
-/**
- * Module dependencies.
- * @private
- */
-
-var EventEmitter = require('events').EventEmitter
-
-/**
- * Module exports.
- * @public
- */
-
-lazyProperty(module.exports, 'callSiteToString', function callSiteToString () {
-  var limit = Error.stackTraceLimit
-  var obj = {}
-  var prep = Error.prepareStackTrace
-
-  function prepareObjectStackTrace (obj, stack) {
-    return stack
-  }
-
-  Error.prepareStackTrace = prepareObjectStackTrace
-  Error.stackTraceLimit = 2
-
-  // capture the stack
-  Error.captureStackTrace(obj)
-
-  // slice the stack
-  var stack = obj.stack.slice()
-
-  Error.prepareStackTrace = prep
-  Error.stackTraceLimit = limit
-
-  return stack[0].toString ? toString : require('./callsite-tostring')
-})
-
-lazyProperty(module.exports, 'eventListenerCount', function eventListenerCount () {
-  return EventEmitter.listenerCount || require('./event-listener-count')
-})
-
-/**
- * Define a lazy property.
- */
-
-function lazyProperty (obj, prop, getter) {
-  function get () {
-    var val = getter()
-
-    Object.defineProperty(obj, prop, {
-      configurable: true,
-      enumerable: true,
-      value: val
-    })
-
-    return val
-  }
-
-  Object.defineProperty(obj, prop, {
-    configurable: true,
-    enumerable: true,
-    get: get
-  })
-}
-
-/**
- * Call toString() on the obj
- */
-
-function toString (obj) {
-  return obj.toString()
-}

+ 24 - 20
express-server/node_modules/depd/package.json

@@ -1,19 +1,19 @@
 {
 {
-  "_from": "depd@~1.1.2",
-  "_id": "depd@1.1.2",
+  "_from": "depd@2.0.0",
+  "_id": "depd@2.0.0",
   "_inBundle": false,
   "_inBundle": false,
-  "_integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=",
+  "_integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
   "_location": "/depd",
   "_location": "/depd",
   "_phantomChildren": {},
   "_phantomChildren": {},
   "_requested": {
   "_requested": {
-    "type": "range",
+    "type": "version",
     "registry": true,
     "registry": true,
-    "raw": "depd@~1.1.2",
+    "raw": "depd@2.0.0",
     "name": "depd",
     "name": "depd",
     "escapedName": "depd",
     "escapedName": "depd",
-    "rawSpec": "~1.1.2",
+    "rawSpec": "2.0.0",
     "saveSpec": null,
     "saveSpec": null,
-    "fetchSpec": "~1.1.2"
+    "fetchSpec": "2.0.0"
   },
   },
   "_requiredBy": [
   "_requiredBy": [
     "/body-parser",
     "/body-parser",
@@ -21,10 +21,10 @@
     "/http-errors",
     "/http-errors",
     "/send"
     "/send"
   ],
   ],
-  "_resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
-  "_shasum": "9bcd52e14c097763e749b274c4346ed2e560b5a9",
-  "_spec": "depd@~1.1.2",
-  "_where": "C:\\Users\\brin\\Desktop\\Personnel\\FatboarProject-develop\\FatboarProject\\express-server\\node_modules\\express",
+  "_resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
+  "_shasum": "b696163cc757560d09cf22cc8fad1571b79e76df",
+  "_spec": "depd@2.0.0",
+  "_where": "C:\\FatboarProject\\express-server\\node_modules\\express",
   "author": {
   "author": {
     "name": "Douglas Christopher Wilson",
     "name": "Douglas Christopher Wilson",
     "email": "doug@somethingdoug.com"
     "email": "doug@somethingdoug.com"
@@ -39,16 +39,20 @@
   "devDependencies": {
   "devDependencies": {
     "beautify-benchmark": "0.2.4",
     "beautify-benchmark": "0.2.4",
     "benchmark": "2.1.4",
     "benchmark": "2.1.4",
-    "eslint": "3.19.0",
-    "eslint-config-standard": "7.1.0",
+    "eslint": "5.7.0",
+    "eslint-config-standard": "12.0.0",
+    "eslint-plugin-import": "2.14.0",
     "eslint-plugin-markdown": "1.0.0-beta.7",
     "eslint-plugin-markdown": "1.0.0-beta.7",
-    "eslint-plugin-promise": "3.6.0",
-    "eslint-plugin-standard": "3.0.1",
+    "eslint-plugin-node": "7.0.1",
+    "eslint-plugin-promise": "4.0.1",
+    "eslint-plugin-standard": "4.0.0",
     "istanbul": "0.4.5",
     "istanbul": "0.4.5",
-    "mocha": "~1.21.5"
+    "mocha": "5.2.0",
+    "safe-buffer": "5.1.2",
+    "uid-safe": "2.1.5"
   },
   },
   "engines": {
   "engines": {
-    "node": ">= 0.6"
+    "node": ">= 0.8"
   },
   },
   "files": [
   "files": [
     "lib/",
     "lib/",
@@ -72,8 +76,8 @@
     "bench": "node benchmark/index.js",
     "bench": "node benchmark/index.js",
     "lint": "eslint --plugin markdown --ext js,md .",
     "lint": "eslint --plugin markdown --ext js,md .",
     "test": "mocha --reporter spec --bail test/",
     "test": "mocha --reporter spec --bail test/",
-    "test-ci": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --no-exit test/",
-    "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot test/"
+    "test-ci": "istanbul cover --print=none node_modules/mocha/bin/_mocha -- --reporter spec test/ && istanbul report lcovonly text-summary",
+    "test-cov": "istanbul cover --print=none node_modules/mocha/bin/_mocha -- --reporter dot test/ && istanbul report lcov text-summary"
   },
   },
-  "version": "1.1.2"
+  "version": "2.0.0"
 }
 }

+ 1 - 0
express-server/node_modules/destroy/LICENSE

@@ -2,6 +2,7 @@
 The MIT License (MIT)
 The MIT License (MIT)
 
 
 Copyright (c) 2014 Jonathan Ong me@jongleberry.com
 Copyright (c) 2014 Jonathan Ong me@jongleberry.com
+Copyright (c) 2015-2022 Douglas Christopher Wilson doug@somethingdoug.com
 
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
 of this software and associated documentation files (the "Software"), to deal

+ 15 - 12
express-server/node_modules/destroy/README.md

@@ -1,11 +1,10 @@
-# Destroy
+# destroy
 
 
 [![NPM version][npm-image]][npm-url]
 [![NPM version][npm-image]][npm-url]
-[![Build status][travis-image]][travis-url]
+[![Build Status][github-actions-ci-image]][github-actions-ci-url]
 [![Test coverage][coveralls-image]][coveralls-url]
 [![Test coverage][coveralls-image]][coveralls-url]
 [![License][license-image]][license-url]
 [![License][license-image]][license-url]
 [![Downloads][downloads-image]][downloads-url]
 [![Downloads][downloads-image]][downloads-url]
-[![Gittip][gittip-image]][gittip-url]
 
 
 Destroy a stream.
 Destroy a stream.
 
 
@@ -18,17 +17,23 @@ and Node.js bugs.
 var destroy = require('destroy')
 var destroy = require('destroy')
 ```
 ```
 
 
-### destroy(stream)
+### destroy(stream [, suppress])
 
 
-Destroy the given stream. In most cases, this is identical to a simple
-`stream.destroy()` call. The rules are as follows for a given stream:
+Destroy the given stream, and optionally suppress any future `error` events.
+
+In most cases, this is identical to a simple `stream.destroy()` call. The rules
+are as follows for a given stream:
 
 
   1. If the `stream` is an instance of `ReadStream`, then call `stream.destroy()`
   1. If the `stream` is an instance of `ReadStream`, then call `stream.destroy()`
      and add a listener to the `open` event to call `stream.close()` if it is
      and add a listener to the `open` event to call `stream.close()` if it is
      fired. This is for a Node.js bug that will leak a file descriptor if
      fired. This is for a Node.js bug that will leak a file descriptor if
      `.destroy()` is called before `open`.
      `.destroy()` is called before `open`.
-  2. If the `stream` is not an instance of `Stream`, then nothing happens.
-  3. If the `stream` has a `.destroy()` method, then call it.
+  2. If the `stream` is an instance of a zlib stream, then call `stream.destroy()`
+     and close the underlying zlib handle if open, otherwise call `stream.close()`.
+     This is for consistency across Node.js versions and a Node.js bug that will
+     leak a native zlib handle.
+  3. If the `stream` is not an instance of `Stream`, then nothing happens.
+  4. If the `stream` has a `.destroy()` method, then call it.
 
 
 The function returns the `stream` passed in as the argument.
 The function returns the `stream` passed in as the argument.
 
 
@@ -48,13 +53,11 @@ destroy(stream)
 [npm-url]: https://npmjs.org/package/destroy
 [npm-url]: https://npmjs.org/package/destroy
 [github-tag]: http://img.shields.io/github/tag/stream-utils/destroy.svg?style=flat-square
 [github-tag]: http://img.shields.io/github/tag/stream-utils/destroy.svg?style=flat-square
 [github-url]: https://github.com/stream-utils/destroy/tags
 [github-url]: https://github.com/stream-utils/destroy/tags
-[travis-image]: https://img.shields.io/travis/stream-utils/destroy.svg?style=flat-square
-[travis-url]: https://travis-ci.org/stream-utils/destroy
 [coveralls-image]: https://img.shields.io/coveralls/stream-utils/destroy.svg?style=flat-square
 [coveralls-image]: https://img.shields.io/coveralls/stream-utils/destroy.svg?style=flat-square
 [coveralls-url]: https://coveralls.io/r/stream-utils/destroy?branch=master
 [coveralls-url]: https://coveralls.io/r/stream-utils/destroy?branch=master
 [license-image]: http://img.shields.io/npm/l/destroy.svg?style=flat-square
 [license-image]: http://img.shields.io/npm/l/destroy.svg?style=flat-square
 [license-url]: LICENSE.md
 [license-url]: LICENSE.md
 [downloads-image]: http://img.shields.io/npm/dm/destroy.svg?style=flat-square
 [downloads-image]: http://img.shields.io/npm/dm/destroy.svg?style=flat-square
 [downloads-url]: https://npmjs.org/package/destroy
 [downloads-url]: https://npmjs.org/package/destroy
-[gittip-image]: https://img.shields.io/gittip/jonathanong.svg?style=flat-square
-[gittip-url]: https://www.gittip.com/jonathanong/
+[github-actions-ci-image]: https://img.shields.io/github/workflow/status/stream-utils/destroy/ci/master?label=ci&style=flat-square
+[github-actions-ci-url]: https://github.com/stream-utils/destroy/actions/workflows/ci.yml

+ 147 - 13
express-server/node_modules/destroy/index.js

@@ -1,6 +1,7 @@
 /*!
 /*!
  * destroy
  * destroy
  * Copyright(c) 2014 Jonathan Ong
  * Copyright(c) 2014 Jonathan Ong
+ * Copyright(c) 2015-2022 Douglas Christopher Wilson
  * MIT Licensed
  * MIT Licensed
  */
  */
 
 
@@ -11,8 +12,10 @@
  * @private
  * @private
  */
  */
 
 
+var EventEmitter = require('events').EventEmitter
 var ReadStream = require('fs').ReadStream
 var ReadStream = require('fs').ReadStream
 var Stream = require('stream')
 var Stream = require('stream')
+var Zlib = require('zlib')
 
 
 /**
 /**
  * Module exports.
  * Module exports.
@@ -22,23 +25,25 @@ var Stream = require('stream')
 module.exports = destroy
 module.exports = destroy
 
 
 /**
 /**
- * Destroy a stream.
+ * Destroy the given stream, and optionally suppress any future `error` events.
  *
  *
  * @param {object} stream
  * @param {object} stream
+ * @param {boolean} suppress
  * @public
  * @public
  */
  */
 
 
-function destroy(stream) {
-  if (stream instanceof ReadStream) {
-    return destroyReadStream(stream)
-  }
-
-  if (!(stream instanceof Stream)) {
-    return stream
+function destroy (stream, suppress) {
+  if (isFsReadStream(stream)) {
+    destroyReadStream(stream)
+  } else if (isZlibStream(stream)) {
+    destroyZlibStream(stream)
+  } else if (hasDestroy(stream)) {
+    stream.destroy()
   }
   }
 
 
-  if (typeof stream.destroy === 'function') {
-    stream.destroy()
+  if (isEventEmitter(stream) && suppress) {
+    stream.removeAllListeners('error')
+    stream.addListener('error', noop)
   }
   }
 
 
   return stream
   return stream
@@ -51,15 +56,144 @@ function destroy(stream) {
  * @private
  * @private
  */
  */
 
 
-function destroyReadStream(stream) {
+function destroyReadStream (stream) {
   stream.destroy()
   stream.destroy()
 
 
   if (typeof stream.close === 'function') {
   if (typeof stream.close === 'function') {
     // node.js core bug work-around
     // node.js core bug work-around
     stream.on('open', onOpenClose)
     stream.on('open', onOpenClose)
   }
   }
+}
 
 
-  return stream
+/**
+ * Close a Zlib stream.
+ *
+ * Zlib streams below Node.js 4.5.5 have a buggy implementation
+ * of .close() when zlib encountered an error.
+ *
+ * @param {object} stream
+ * @private
+ */
+
+function closeZlibStream (stream) {
+  if (stream._hadError === true) {
+    var prop = stream._binding === null
+      ? '_binding'
+      : '_handle'
+
+    stream[prop] = {
+      close: function () { this[prop] = null }
+    }
+  }
+
+  stream.close()
+}
+
+/**
+ * Destroy a Zlib stream.
+ *
+ * Zlib streams don't have a destroy function in Node.js 6. On top of that
+ * simply calling destroy on a zlib stream in Node.js 8+ will result in a
+ * memory leak. So until that is fixed, we need to call both close AND destroy.
+ *
+ * PR to fix memory leak: https://github.com/nodejs/node/pull/23734
+ *
+ * In Node.js 6+8, it's important that destroy is called before close as the
+ * stream would otherwise emit the error 'zlib binding closed'.
+ *
+ * @param {object} stream
+ * @private
+ */
+
+function destroyZlibStream (stream) {
+  if (typeof stream.destroy === 'function') {
+    // node.js core bug work-around
+    // istanbul ignore if: node.js 0.8
+    if (stream._binding) {
+      // node.js < 0.10.0
+      stream.destroy()
+      if (stream._processing) {
+        stream._needDrain = true
+        stream.once('drain', onDrainClearBinding)
+      } else {
+        stream._binding.clear()
+      }
+    } else if (stream._destroy && stream._destroy !== Stream.Transform.prototype._destroy) {
+      // node.js >= 12, ^11.1.0, ^10.15.1
+      stream.destroy()
+    } else if (stream._destroy && typeof stream.close === 'function') {
+      // node.js 7, 8
+      stream.destroyed = true
+      stream.close()
+    } else {
+      // fallback
+      // istanbul ignore next
+      stream.destroy()
+    }
+  } else if (typeof stream.close === 'function') {
+    // node.js < 8 fallback
+    closeZlibStream(stream)
+  }
+}
+
+/**
+ * Determine if stream has destroy.
+ * @private
+ */
+
+function hasDestroy (stream) {
+  return stream instanceof Stream &&
+    typeof stream.destroy === 'function'
+}
+
+/**
+ * Determine if val is EventEmitter.
+ * @private
+ */
+
+function isEventEmitter (val) {
+  return val instanceof EventEmitter
+}
+
+/**
+ * Determine if stream is fs.ReadStream stream.
+ * @private
+ */
+
+function isFsReadStream (stream) {
+  return stream instanceof ReadStream
+}
+
+/**
+ * Determine if stream is Zlib stream.
+ * @private
+ */
+
+function isZlibStream (stream) {
+  return stream instanceof Zlib.Gzip ||
+    stream instanceof Zlib.Gunzip ||
+    stream instanceof Zlib.Deflate ||
+    stream instanceof Zlib.DeflateRaw ||
+    stream instanceof Zlib.Inflate ||
+    stream instanceof Zlib.InflateRaw ||
+    stream instanceof Zlib.Unzip
+}
+
+/**
+ * No-op function.
+ * @private
+ */
+
+function noop () {}
+
+/**
+ * On drain handler to clear binding.
+ * @private
+ */
+
+// istanbul ignore next: node.js 0.8
+function onDrainClearBinding () {
+  this._binding.clear()
 }
 }
 
 
 /**
 /**
@@ -67,7 +201,7 @@ function destroyReadStream(stream) {
  * @private
  * @private
  */
  */
 
 
-function onOpenClose() {
+function onOpenClose () {
   if (typeof this.fd === 'number') {
   if (typeof this.fd === 'number') {
     // actually close down the fd
     // actually close down the fd
     this.close()
     this.close()

+ 28 - 16
express-server/node_modules/destroy/package.json

@@ -1,27 +1,28 @@
 {
 {
-  "_from": "destroy@~1.0.4",
-  "_id": "destroy@1.0.4",
+  "_from": "destroy@1.2.0",
+  "_id": "destroy@1.2.0",
   "_inBundle": false,
   "_inBundle": false,
-  "_integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=",
+  "_integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
   "_location": "/destroy",
   "_location": "/destroy",
   "_phantomChildren": {},
   "_phantomChildren": {},
   "_requested": {
   "_requested": {
-    "type": "range",
+    "type": "version",
     "registry": true,
     "registry": true,
-    "raw": "destroy@~1.0.4",
+    "raw": "destroy@1.2.0",
     "name": "destroy",
     "name": "destroy",
     "escapedName": "destroy",
     "escapedName": "destroy",
-    "rawSpec": "~1.0.4",
+    "rawSpec": "1.2.0",
     "saveSpec": null,
     "saveSpec": null,
-    "fetchSpec": "~1.0.4"
+    "fetchSpec": "1.2.0"
   },
   },
   "_requiredBy": [
   "_requiredBy": [
+    "/body-parser",
     "/send"
     "/send"
   ],
   ],
-  "_resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
-  "_shasum": "978857442c44749e4206613e37946205826abd80",
-  "_spec": "destroy@~1.0.4",
-  "_where": "C:\\Users\\brin\\Desktop\\Personnel\\FatboarProject-develop\\FatboarProject\\express-server\\node_modules\\send",
+  "_resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
+  "_shasum": "4803735509ad8be552934c67df614f94e66fa015",
+  "_spec": "destroy@1.2.0",
+  "_where": "C:\\FatboarProject\\express-server\\node_modules\\body-parser",
   "author": {
   "author": {
     "name": "Jonathan Ong",
     "name": "Jonathan Ong",
     "email": "me@jongleberry.com",
     "email": "me@jongleberry.com",
@@ -40,8 +41,18 @@
   "deprecated": false,
   "deprecated": false,
   "description": "destroy a stream if possible",
   "description": "destroy a stream if possible",
   "devDependencies": {
   "devDependencies": {
-    "istanbul": "0.4.2",
-    "mocha": "2.3.4"
+    "eslint": "7.32.0",
+    "eslint-config-standard": "14.1.1",
+    "eslint-plugin-import": "2.25.4",
+    "eslint-plugin-node": "11.1.0",
+    "eslint-plugin-promise": "5.2.0",
+    "eslint-plugin-standard": "4.1.0",
+    "mocha": "9.2.2",
+    "nyc": "15.1.0"
+  },
+  "engines": {
+    "node": ">= 0.8",
+    "npm": "1.2.8000 || >= 1.4.16"
   },
   },
   "files": [
   "files": [
     "index.js",
     "index.js",
@@ -63,9 +74,10 @@
     "url": "git+https://github.com/stream-utils/destroy.git"
     "url": "git+https://github.com/stream-utils/destroy.git"
   },
   },
   "scripts": {
   "scripts": {
+    "lint": "eslint .",
     "test": "mocha --reporter spec",
     "test": "mocha --reporter spec",
-    "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot",
-    "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter dot"
+    "test-ci": "nyc --reporter=lcovonly --reporter=text npm test",
+    "test-cov": "nyc --reporter=html --reporter=text npm test"
   },
   },
-  "version": "1.0.4"
+  "version": "1.2.0"
 }
 }

+ 2 - 2
express-server/node_modules/ee-first/package.json

@@ -2,7 +2,7 @@
   "_from": "ee-first@1.1.1",
   "_from": "ee-first@1.1.1",
   "_id": "ee-first@1.1.1",
   "_id": "ee-first@1.1.1",
   "_inBundle": false,
   "_inBundle": false,
-  "_integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=",
+  "_integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==",
   "_location": "/ee-first",
   "_location": "/ee-first",
   "_phantomChildren": {},
   "_phantomChildren": {},
   "_requested": {
   "_requested": {
@@ -21,7 +21,7 @@
   "_resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
   "_resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
   "_shasum": "590c61156b0ae2f4f0255732a158b266bc56b21d",
   "_shasum": "590c61156b0ae2f4f0255732a158b266bc56b21d",
   "_spec": "ee-first@1.1.1",
   "_spec": "ee-first@1.1.1",
-  "_where": "C:\\Users\\brin\\Desktop\\Personnel\\FatboarProject-develop\\FatboarProject\\express-server\\node_modules\\on-finished",
+  "_where": "C:\\FatboarProject\\express-server\\node_modules\\on-finished",
   "author": {
   "author": {
     "name": "Jonathan Ong",
     "name": "Jonathan Ong",
     "email": "me@jongleberry.com",
     "email": "me@jongleberry.com",

+ 2 - 2
express-server/node_modules/encodeurl/package.json

@@ -2,7 +2,7 @@
   "_from": "encodeurl@~1.0.2",
   "_from": "encodeurl@~1.0.2",
   "_id": "encodeurl@1.0.2",
   "_id": "encodeurl@1.0.2",
   "_inBundle": false,
   "_inBundle": false,
-  "_integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=",
+  "_integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
   "_location": "/encodeurl",
   "_location": "/encodeurl",
   "_phantomChildren": {},
   "_phantomChildren": {},
   "_requested": {
   "_requested": {
@@ -24,7 +24,7 @@
   "_resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
   "_resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
   "_shasum": "ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59",
   "_shasum": "ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59",
   "_spec": "encodeurl@~1.0.2",
   "_spec": "encodeurl@~1.0.2",
-  "_where": "C:\\Users\\brin\\Desktop\\Personnel\\FatboarProject-develop\\FatboarProject\\express-server\\node_modules\\express",
+  "_where": "C:\\FatboarProject\\express-server\\node_modules\\express",
   "bugs": {
   "bugs": {
     "url": "https://github.com/pillarjs/encodeurl/issues"
     "url": "https://github.com/pillarjs/encodeurl/issues"
   },
   },

+ 2 - 2
express-server/node_modules/escape-html/package.json

@@ -2,7 +2,7 @@
   "_from": "escape-html@~1.0.3",
   "_from": "escape-html@~1.0.3",
   "_id": "escape-html@1.0.3",
   "_id": "escape-html@1.0.3",
   "_inBundle": false,
   "_inBundle": false,
-  "_integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=",
+  "_integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==",
   "_location": "/escape-html",
   "_location": "/escape-html",
   "_phantomChildren": {},
   "_phantomChildren": {},
   "_requested": {
   "_requested": {
@@ -24,7 +24,7 @@
   "_resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
   "_resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
   "_shasum": "0258eae4d3d0c0974de1c169188ef0051d1d1988",
   "_shasum": "0258eae4d3d0c0974de1c169188ef0051d1d1988",
   "_spec": "escape-html@~1.0.3",
   "_spec": "escape-html@~1.0.3",
-  "_where": "C:\\Users\\brin\\Desktop\\Personnel\\FatboarProject-develop\\FatboarProject\\express-server\\node_modules\\express",
+  "_where": "C:\\FatboarProject\\express-server\\node_modules\\express",
   "bugs": {
   "bugs": {
     "url": "https://github.com/component/escape-html/issues"
     "url": "https://github.com/component/escape-html/issues"
   },
   },

+ 2 - 2
express-server/node_modules/etag/package.json

@@ -2,7 +2,7 @@
   "_from": "etag@~1.8.1",
   "_from": "etag@~1.8.1",
   "_id": "etag@1.8.1",
   "_id": "etag@1.8.1",
   "_inBundle": false,
   "_inBundle": false,
-  "_integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=",
+  "_integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
   "_location": "/etag",
   "_location": "/etag",
   "_phantomChildren": {},
   "_phantomChildren": {},
   "_requested": {
   "_requested": {
@@ -22,7 +22,7 @@
   "_resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
   "_resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
   "_shasum": "41ae2eeb65efa62268aebfea83ac7d79299b0887",
   "_shasum": "41ae2eeb65efa62268aebfea83ac7d79299b0887",
   "_spec": "etag@~1.8.1",
   "_spec": "etag@~1.8.1",
-  "_where": "C:\\Users\\brin\\Desktop\\Personnel\\FatboarProject-develop\\FatboarProject\\express-server\\node_modules\\express",
+  "_where": "C:\\FatboarProject\\express-server\\node_modules\\express",
   "bugs": {
   "bugs": {
     "url": "https://github.com/jshttp/etag/issues"
     "url": "https://github.com/jshttp/etag/issues"
   },
   },

+ 102 - 0
express-server/node_modules/express/History.md

@@ -1,3 +1,105 @@
+4.18.1 / 2022-04-29
+===================
+
+  * Fix hanging on large stack of sync routes
+
+4.18.0 / 2022-04-25
+===================
+
+  * Add "root" option to `res.download`
+  * Allow `options` without `filename` in `res.download`
+  * Deprecate string and non-integer arguments to `res.status`
+  * Fix behavior of `null`/`undefined` as `maxAge` in `res.cookie`
+  * Fix handling very large stacks of sync middleware
+  * Ignore `Object.prototype` values in settings through `app.set`/`app.get`
+  * Invoke `default` with same arguments as types in `res.format`
+  * Support proper 205 responses using `res.send`
+  * Use `http-errors` for `res.format` error
+  * deps: body-parser@1.20.0
+    - Fix error message for json parse whitespace in `strict`
+    - Fix internal error when inflated body exceeds limit
+    - Prevent loss of async hooks context
+    - Prevent hanging when request already read
+    - deps: depd@2.0.0
+    - deps: http-errors@2.0.0
+    - deps: on-finished@2.4.1
+    - deps: qs@6.10.3
+    - deps: raw-body@2.5.1
+  * deps: cookie@0.5.0
+    - Add `priority` option
+    - Fix `expires` option to reject invalid dates
+  * deps: depd@2.0.0
+    - Replace internal `eval` usage with `Function` constructor
+    - Use instance methods on `process` to check for listeners
+  * deps: finalhandler@1.2.0
+    - Remove set content headers that break response
+    - deps: on-finished@2.4.1
+    - deps: statuses@2.0.1
+  * deps: on-finished@2.4.1
+    - Prevent loss of async hooks context
+  * deps: qs@6.10.3
+  * deps: send@0.18.0
+    - Fix emitted 416 error missing headers property
+    - Limit the headers removed for 304 response
+    - deps: depd@2.0.0
+    - deps: destroy@1.2.0
+    - deps: http-errors@2.0.0
+    - deps: on-finished@2.4.1
+    - deps: statuses@2.0.1
+  * deps: serve-static@1.15.0
+    - deps: send@0.18.0
+  * deps: statuses@2.0.1
+    - Remove code 306
+    - Rename `425 Unordered Collection` to standard `425 Too Early`
+
+4.17.3 / 2022-02-16
+===================
+
+  * deps: accepts@~1.3.8
+    - deps: mime-types@~2.1.34
+    - deps: negotiator@0.6.3
+  * deps: body-parser@1.19.2
+    - deps: bytes@3.1.2
+    - deps: qs@6.9.7
+    - deps: raw-body@2.4.3
+  * deps: cookie@0.4.2
+  * deps: qs@6.9.7
+    * Fix handling of `__proto__` keys
+  * pref: remove unnecessary regexp for trust proxy
+
+4.17.2 / 2021-12-16
+===================
+
+  * Fix handling of `undefined` in `res.jsonp`
+  * Fix handling of `undefined` when `"json escape"` is enabled
+  * Fix incorrect middleware execution with unanchored `RegExp`s
+  * Fix `res.jsonp(obj, status)` deprecation message
+  * Fix typo in `res.is` JSDoc
+  * deps: body-parser@1.19.1
+    - deps: bytes@3.1.1
+    - deps: http-errors@1.8.1
+    - deps: qs@6.9.6
+    - deps: raw-body@2.4.2
+    - deps: safe-buffer@5.2.1
+    - deps: type-is@~1.6.18
+  * deps: content-disposition@0.5.4
+    - deps: safe-buffer@5.2.1
+  * deps: cookie@0.4.1
+    - Fix `maxAge` option to reject invalid values
+  * deps: proxy-addr@~2.0.7
+    - Use `req.socket` over deprecated `req.connection`
+    - deps: forwarded@0.2.0
+    - deps: ipaddr.js@1.9.1
+  * deps: qs@6.9.6
+  * deps: safe-buffer@5.2.1
+  * deps: send@0.17.2
+    - deps: http-errors@1.8.1
+    - deps: ms@2.1.3
+    - pref: ignore empty http tokens
+  * deps: serve-static@1.14.2
+    - deps: send@0.17.2
+  * deps: setprototypeof@1.2.0
+
 4.17.1 / 2019-05-25
 4.17.1 / 2019-05-25
 ===================
 ===================
 
 

+ 43 - 32
express-server/node_modules/express/Readme.md

@@ -2,11 +2,9 @@
 
 
   Fast, unopinionated, minimalist web framework for [node](http://nodejs.org).
   Fast, unopinionated, minimalist web framework for [node](http://nodejs.org).
 
 
-  [![NPM Version][npm-image]][npm-url]
-  [![NPM Downloads][downloads-image]][downloads-url]
-  [![Linux Build][travis-image]][travis-url]
-  [![Windows Build][appveyor-image]][appveyor-url]
-  [![Test Coverage][coveralls-image]][coveralls-url]
+  [![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
 ```js
 const express = require('express')
 const express = require('express')
@@ -27,10 +25,13 @@ This is a [Node.js](https://nodejs.org/en/) module available through the
 Before installing, [download and install Node.js](https://nodejs.org/en/download/).
 Before installing, [download and install Node.js](https://nodejs.org/en/download/).
 Node.js 0.10 or higher is required.
 Node.js 0.10 or higher is required.
 
 
+If this is a brand new project, make sure to create a `package.json` first with
+the [`npm init` command](https://docs.npmjs.com/creating-a-package-json-file).
+
 Installation is done using the
 Installation is done using the
 [`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally):
 [`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally):
 
 
-```bash
+```console
 $ npm install express
 $ npm install express
 ```
 ```
 
 
@@ -58,35 +59,31 @@ for more information.
 
 
 **PROTIP** Be sure to read [Migrating from 3.x to 4.x](https://github.com/expressjs/express/wiki/Migrating-from-3.x-to-4.x) as well as [New features in 4.x](https://github.com/expressjs/express/wiki/New-features-in-4.x).
 **PROTIP** Be sure to read [Migrating from 3.x to 4.x](https://github.com/expressjs/express/wiki/Migrating-from-3.x-to-4.x) as well as [New features in 4.x](https://github.com/expressjs/express/wiki/New-features-in-4.x).
 
 
-### Security Issues
-
-If you discover a security vulnerability in Express, please see [Security Policies and Procedures](Security.md).
-
 ## Quick Start
 ## Quick Start
 
 
   The quickest way to get started with express is to utilize the executable [`express(1)`](https://github.com/expressjs/generator) to generate an application as shown below:
   The quickest way to get started with express is to utilize the executable [`express(1)`](https://github.com/expressjs/generator) to generate an application as shown below:
 
 
   Install the executable. The executable's major version will match Express's:
   Install the executable. The executable's major version will match Express's:
 
 
-```bash
+```console
 $ npm install -g express-generator@4
 $ npm install -g express-generator@4
 ```
 ```
 
 
   Create the app:
   Create the app:
 
 
-```bash
+```console
 $ express /tmp/foo && cd /tmp/foo
 $ express /tmp/foo && cd /tmp/foo
 ```
 ```
 
 
   Install dependencies:
   Install dependencies:
 
 
-```bash
+```console
 $ npm install
 $ npm install
 ```
 ```
 
 
   Start the server:
   Start the server:
 
 
-```bash
+```console
 $ npm start
 $ npm start
 ```
 ```
 
 
@@ -95,7 +92,7 @@ $ npm start
 ## Philosophy
 ## Philosophy
 
 
   The Express philosophy is to provide small, robust tooling for HTTP servers, making
   The Express philosophy is to provide small, robust tooling for HTTP servers, making
-  it a great solution for single page applications, web sites, hybrids, or public
+  it a great solution for single page applications, websites, hybrids, or public
   HTTP APIs.
   HTTP APIs.
 
 
   Express does not force you to use any specific ORM or template engine. With support for over
   Express does not force you to use any specific ORM or template engine. With support for over
@@ -106,7 +103,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:
 
 
-```bash
+```console
 $ git clone git://github.com/expressjs/express.git --depth 1
 $ git clone git://github.com/expressjs/express.git --depth 1
 $ cd express
 $ cd express
 $ npm install
 $ npm install
@@ -114,23 +111,35 @@ $ npm install
 
 
   Then run whichever example you want:
   Then run whichever example you want:
 
 
-```bash
+```console
 $ node examples/content-negotiation
 $ node examples/content-negotiation
 ```
 ```
 
 
-## Tests
+## Contributing
+
+  [![Linux Build][github-actions-ci-image]][github-actions-ci-url]
+  [![Windows Build][appveyor-image]][appveyor-url]
+  [![Test Coverage][coveralls-image]][coveralls-url]
+
+The Express.js project welcomes all constructive contributions. Contributions take many forms,
+from code for bug fixes and enhancements, to additions and fixes to documentation, additional
+tests, triaging incoming pull requests and issues, and more!
 
 
-  To run the test suite, first install the dependencies, then run `npm test`:
+See the [Contributing Guide](Contributing.md) for more technical details on contributing.
 
 
-```bash
+### Security Issues
+
+If you discover a security vulnerability in Express, please see [Security Policies and Procedures](Security.md).
+
+### Running Tests
+
+To run the test suite, first install the dependencies, then run `npm test`:
+
+```console
 $ npm install
 $ npm install
 $ npm test
 $ npm test
 ```
 ```
 
 
-## Contributing
-
-[Contributing Guide](Contributing.md)
-
 ## People
 ## People
 
 
 The original author of Express is [TJ Holowaychuk](https://github.com/tj)
 The original author of Express is [TJ Holowaychuk](https://github.com/tj)
@@ -143,13 +152,15 @@ The current lead maintainer is [Douglas Christopher Wilson](https://github.com/d
 
 
   [MIT](LICENSE)
   [MIT](LICENSE)
 
 
-[npm-image]: https://img.shields.io/npm/v/express.svg
-[npm-url]: https://npmjs.org/package/express
-[downloads-image]: https://img.shields.io/npm/dm/express.svg
-[downloads-url]: https://npmjs.org/package/express
-[travis-image]: https://img.shields.io/travis/expressjs/express/master.svg?label=linux
-[travis-url]: https://travis-ci.org/expressjs/express
-[appveyor-image]: https://img.shields.io/appveyor/ci/dougwilson/express/master.svg?label=windows
+[appveyor-image]: https://badgen.net/appveyor/ci/dougwilson/express/master?label=windows
 [appveyor-url]: https://ci.appveyor.com/project/dougwilson/express
 [appveyor-url]: https://ci.appveyor.com/project/dougwilson/express
-[coveralls-image]: https://img.shields.io/coveralls/expressjs/express/master.svg
+[coveralls-image]: https://badgen.net/coveralls/c/github/expressjs/express/master
 [coveralls-url]: https://coveralls.io/r/expressjs/express?branch=master
 [coveralls-url]: https://coveralls.io/r/expressjs/express?branch=master
+[github-actions-ci-image]: https://badgen.net/github/checks/expressjs/express/master?label=linux
+[github-actions-ci-url]: https://github.com/expressjs/express/actions/workflows/ci.yml
+[npm-downloads-image]: https://badgen.net/npm/dm/express
+[npm-downloads-url]: https://npmcharts.com/compare/express?minimal=true
+[npm-install-size-image]: https://badgen.net/packagephobia/install/express
+[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

+ 19 - 2
express-server/node_modules/express/lib/application.js

@@ -29,6 +29,13 @@ var flatten = require('array-flatten');
 var merge = require('utils-merge');
 var merge = require('utils-merge');
 var resolve = require('path').resolve;
 var resolve = require('path').resolve;
 var setPrototypeOf = require('setprototypeof')
 var setPrototypeOf = require('setprototypeof')
+
+/**
+ * Module variables.
+ * @private
+ */
+
+var hasOwnProperty = Object.prototype.hasOwnProperty
 var slice = Array.prototype.slice;
 var slice = Array.prototype.slice;
 
 
 /**
 /**
@@ -276,7 +283,7 @@ app.route = function route(path) {
  * In this case EJS provides a `.renderFile()` method with
  * In this case EJS provides a `.renderFile()` method with
  * the same signature that Express expects: `(path, options, callback)`,
  * the same signature that Express expects: `(path, options, callback)`,
  * though note that it aliases this method as `ejs.__express` internally
  * though note that it aliases this method as `ejs.__express` internally
- * so if you're using ".ejs" extensions you dont need to do anything.
+ * so if you're using ".ejs" extensions you don't need to do anything.
  *
  *
  * Some template engines do not follow this convention, the
  * Some template engines do not follow this convention, the
  * [Consolidate.js](https://github.com/tj/consolidate.js)
  * [Consolidate.js](https://github.com/tj/consolidate.js)
@@ -352,7 +359,17 @@ app.param = function param(name, fn) {
 app.set = function set(setting, val) {
 app.set = function set(setting, val) {
   if (arguments.length === 1) {
   if (arguments.length === 1) {
     // app.get(setting)
     // app.get(setting)
-    return this.settings[setting];
+    var settings = this.settings
+
+    while (settings && settings !== Object.prototype) {
+      if (hasOwnProperty.call(settings, setting)) {
+        return settings[setting]
+      }
+
+      settings = Object.getPrototypeOf(settings)
+    }
+
+    return undefined
   }
   }
 
 
   debug('set "%s" to %o', setting, val);
   debug('set "%s" to %o', setting, val);

+ 1 - 1
express-server/node_modules/express/lib/request.js

@@ -251,7 +251,7 @@ req.param = function param(name, defaultValue) {
 
 
 /**
 /**
  * Check if the incoming request contains the "Content-Type"
  * Check if the incoming request contains the "Content-Type"
- * header field, and it contains the give mime `type`.
+ * header field, and it contains the given mime `type`.
  *
  *
  * Examples:
  * Examples:
  *
  *

+ 57 - 30
express-server/node_modules/express/lib/response.js

@@ -14,6 +14,7 @@
 
 
 var Buffer = require('safe-buffer').Buffer
 var Buffer = require('safe-buffer').Buffer
 var contentDisposition = require('content-disposition');
 var contentDisposition = require('content-disposition');
+var createError = require('http-errors')
 var deprecate = require('depd')('express');
 var deprecate = require('depd')('express');
 var encodeUrl = require('encodeurl');
 var encodeUrl = require('encodeurl');
 var escapeHtml = require('escape-html');
 var escapeHtml = require('escape-html');
@@ -64,6 +65,9 @@ var charsetRegExp = /;\s*charset\s*=/;
  */
  */
 
 
 res.status = function status(code) {
 res.status = function status(code) {
+  if ((typeof code === 'string' || Math.floor(code) !== code) && code > 99 && code < 1000) {
+    deprecate('res.status(' + JSON.stringify(code) + '): use res.status(' + Math.floor(code) + ') instead')
+  }
   this.statusCode = code;
   this.statusCode = code;
   return this;
   return this;
 };
 };
@@ -135,7 +139,7 @@ res.send = function send(body) {
 
 
     deprecate('res.send(status): Use res.sendStatus(status) instead');
     deprecate('res.send(status): Use res.sendStatus(status) instead');
     this.statusCode = chunk;
     this.statusCode = chunk;
-    chunk = statuses[chunk]
+    chunk = statuses.message[chunk]
   }
   }
 
 
   switch (typeof chunk) {
   switch (typeof chunk) {
@@ -213,6 +217,13 @@ res.send = function send(body) {
     chunk = '';
     chunk = '';
   }
   }
 
 
+  // alter headers for 205
+  if (this.statusCode === 205) {
+    this.set('Content-Length', '0')
+    this.removeHeader('Transfer-Encoding')
+    chunk = ''
+  }
+
   if (req.method === 'HEAD') {
   if (req.method === 'HEAD') {
     // skip body for HEAD
     // skip body for HEAD
     this.end();
     this.end();
@@ -284,9 +295,9 @@ res.jsonp = function jsonp(obj) {
 
 
   // allow status / body
   // allow status / body
   if (arguments.length === 2) {
   if (arguments.length === 2) {
-    // res.json(body, status) backwards compat
+    // res.jsonp(body, status) backwards compat
     if (typeof arguments[1] === 'number') {
     if (typeof arguments[1] === 'number') {
-      deprecate('res.jsonp(obj, status): Use res.status(status).json(obj) instead');
+      deprecate('res.jsonp(obj, status): Use res.status(status).jsonp(obj) instead');
       this.statusCode = arguments[1];
       this.statusCode = arguments[1];
     } else {
     } else {
       deprecate('res.jsonp(status, obj): Use res.status(status).jsonp(obj) instead');
       deprecate('res.jsonp(status, obj): Use res.status(status).jsonp(obj) instead');
@@ -322,10 +333,15 @@ res.jsonp = function jsonp(obj) {
     // restrict callback charset
     // restrict callback charset
     callback = callback.replace(/[^\[\]\w$.]/g, '');
     callback = callback.replace(/[^\[\]\w$.]/g, '');
 
 
-    // replace chars not allowed in JavaScript that are in JSON
-    body = body
-      .replace(/\u2028/g, '\\u2028')
-      .replace(/\u2029/g, '\\u2029');
+    if (body === undefined) {
+      // empty argument
+      body = ''
+    } else if (typeof body === 'string') {
+      // replace chars not allowed in JavaScript that are in JSON
+      body = body
+        .replace(/\u2028/g, '\\u2028')
+        .replace(/\u2029/g, '\\u2029')
+    }
 
 
     // the /**/ is a specific security mitigation for "Rosetta Flash JSONP abuse"
     // the /**/ is a specific security mitigation for "Rosetta Flash JSONP abuse"
     // the typeof check is just to reduce client error noise
     // the typeof check is just to reduce client error noise
@@ -351,7 +367,7 @@ res.jsonp = function jsonp(obj) {
  */
  */
 
 
 res.sendStatus = function sendStatus(statusCode) {
 res.sendStatus = function sendStatus(statusCode) {
-  var body = statuses[statusCode] || String(statusCode)
+  var body = statuses.message[statusCode] || String(statusCode)
 
 
   this.statusCode = statusCode;
   this.statusCode = statusCode;
   this.type('txt');
   this.type('txt');
@@ -364,7 +380,7 @@ res.sendStatus = function sendStatus(statusCode) {
  *
  *
  * Automatically sets the _Content-Type_ response header field.
  * Automatically sets the _Content-Type_ response header field.
  * The callback `callback(err)` is invoked when the transfer is complete
  * The callback `callback(err)` is invoked when the transfer is complete
- * or when an error occurs. Be sure to check `res.sentHeader`
+ * or when an error occurs. Be sure to check `res.headersSent`
  * if you wish to attempt responding, as the header and some data
  * if you wish to attempt responding, as the header and some data
  * may have already been transferred.
  * may have already been transferred.
  *
  *
@@ -446,7 +462,7 @@ res.sendFile = function sendFile(path, options, callback) {
  *
  *
  * Automatically sets the _Content-Type_ response header field.
  * Automatically sets the _Content-Type_ response header field.
  * The callback `callback(err)` is invoked when the transfer is complete
  * The callback `callback(err)` is invoked when the transfer is complete
- * or when an error occurs. Be sure to check `res.sentHeader`
+ * or when an error occurs. Be sure to check `res.headersSent`
  * if you wish to attempt responding, as the header and some data
  * if you wish to attempt responding, as the header and some data
  * may have already been transferred.
  * may have already been transferred.
  *
  *
@@ -519,7 +535,7 @@ res.sendfile = deprecate.function(res.sendfile,
  * Optionally providing an alternate attachment `filename`,
  * Optionally providing an alternate attachment `filename`,
  * and optional callback `callback(err)`. The callback is invoked
  * and optional callback `callback(err)`. The callback is invoked
  * when the data transfer is complete, or when an error has
  * when the data transfer is complete, or when an error has
- * ocurred. Be sure to check `res.headersSent` if you plan to respond.
+ * occurred. Be sure to check `res.headersSent` if you plan to respond.
  *
  *
  * Optionally providing an `options` object to use with `res.sendFile()`.
  * Optionally providing an `options` object to use with `res.sendFile()`.
  * This function will set the `Content-Disposition` header, overriding
  * This function will set the `Content-Disposition` header, overriding
@@ -546,6 +562,13 @@ res.download = function download (path, filename, options, callback) {
     opts = null
     opts = null
   }
   }
 
 
+  // support optional filename, where options may be in it's place
+  if (typeof filename === 'object' &&
+    (typeof options === 'function' || options === undefined)) {
+    name = null
+    opts = filename
+  }
+
   // set Content-Disposition when file is sent
   // set Content-Disposition when file is sent
   var headers = {
   var headers = {
     'Content-Disposition': contentDisposition(name || path)
     'Content-Disposition': contentDisposition(name || path)
@@ -567,7 +590,9 @@ res.download = function download (path, filename, options, callback) {
   opts.headers = headers
   opts.headers = headers
 
 
   // Resolve the full path for sendFile
   // Resolve the full path for sendFile
-  var fullPath = resolve(path);
+  var fullPath = !opts.root
+    ? resolve(path)
+    : path
 
 
   // send file
   // send file
   return this.sendFile(fullPath, opts, done)
   return this.sendFile(fullPath, opts, done)
@@ -623,7 +648,7 @@ res.type = function contentType(type) {
  *        res.send('<p>hey</p>');
  *        res.send('<p>hey</p>');
  *      },
  *      },
  *
  *
- *      'appliation/json': function(){
+ *      'application/json': function () {
  *        res.send({ message: 'hey' });
  *        res.send({ message: 'hey' });
  *      }
  *      }
  *    });
  *    });
@@ -660,9 +685,8 @@ res.format = function(obj){
   var req = this.req;
   var req = this.req;
   var next = req.next;
   var next = req.next;
 
 
-  var fn = obj.default;
-  if (fn) delete obj.default;
-  var keys = Object.keys(obj);
+  var keys = Object.keys(obj)
+    .filter(function (v) { return v !== 'default' })
 
 
   var key = keys.length > 0
   var key = keys.length > 0
     ? req.accepts(keys)
     ? req.accepts(keys)
@@ -673,13 +697,12 @@ res.format = function(obj){
   if (key) {
   if (key) {
     this.set('Content-Type', normalizeType(key).value);
     this.set('Content-Type', normalizeType(key).value);
     obj[key](req, this, next);
     obj[key](req, this, next);
-  } else if (fn) {
-    fn();
+  } else if (obj.default) {
+    obj.default(req, this, next)
   } else {
   } else {
-    var err = new Error('Not Acceptable');
-    err.status = err.statusCode = 406;
-    err.types = normalizeTypes(keys).map(function(o){ return o.value });
-    next(err);
+    next(createError(406, {
+      types: normalizeTypes(keys).map(function (o) { return o.value })
+    }))
   }
   }
 
 
   return this;
   return this;
@@ -726,7 +749,7 @@ res.append = function append(field, val) {
     // concat the new and prev vals
     // concat the new and prev vals
     value = Array.isArray(prev) ? prev.concat(val)
     value = Array.isArray(prev) ? prev.concat(val)
       : Array.isArray(val) ? [prev].concat(val)
       : Array.isArray(val) ? [prev].concat(val)
-      : [prev, val];
+        : [prev, val]
   }
   }
 
 
   return this.set(field, value);
   return this.set(field, value);
@@ -845,9 +868,13 @@ res.cookie = function (name, value, options) {
     val = 's:' + sign(val, secret);
     val = 's:' + sign(val, secret);
   }
   }
 
 
-  if ('maxAge' in opts) {
-    opts.expires = new Date(Date.now() + opts.maxAge);
-    opts.maxAge /= 1000;
+  if (opts.maxAge != null) {
+    var maxAge = opts.maxAge - 0
+
+    if (!isNaN(maxAge)) {
+      opts.expires = new Date(Date.now() + maxAge)
+      opts.maxAge = Math.floor(maxAge / 1000)
+    }
   }
   }
 
 
   if (opts.path == null) {
   if (opts.path == null) {
@@ -928,12 +955,12 @@ res.redirect = function redirect(url) {
   // Support text/{plain,html} by default
   // Support text/{plain,html} by default
   this.format({
   this.format({
     text: function(){
     text: function(){
-      body = statuses[status] + '. Redirecting to ' + address
+      body = statuses.message[status] + '. Redirecting to ' + address
     },
     },
 
 
     html: function(){
     html: function(){
       var u = escapeHtml(address);
       var u = escapeHtml(address);
-      body = '<p>' + statuses[status] + '. Redirecting to <a href="' + u + '">' + u + '</a></p>'
+      body = '<p>' + statuses.message[status] + '. Redirecting to <a href="' + u + '">' + u + '</a></p>'
     },
     },
 
 
     default: function(){
     default: function(){
@@ -1108,7 +1135,7 @@ function sendfile(res, file, options, callback) {
  * ability to escape characters that can trigger HTML sniffing.
  * ability to escape characters that can trigger HTML sniffing.
  *
  *
  * @param {*} value
  * @param {*} value
- * @param {function} replaces
+ * @param {function} replacer
  * @param {number} spaces
  * @param {number} spaces
  * @param {boolean} escape
  * @param {boolean} escape
  * @returns {string}
  * @returns {string}
@@ -1122,7 +1149,7 @@ function stringify (value, replacer, spaces, escape) {
     ? JSON.stringify(value, replacer, spaces)
     ? JSON.stringify(value, replacer, spaces)
     : JSON.stringify(value);
     : JSON.stringify(value);
 
 
-  if (escape) {
+  if (escape && typeof json === 'string') {
     json = json.replace(/[<>&]/g, function (c) {
     json = json.replace(/[<>&]/g, function (c) {
       switch (c.charCodeAt(0)) {
       switch (c.charCodeAt(0)) {
         case 0x3c:
         case 0x3c:

+ 25 - 14
express-server/node_modules/express/lib/router/index.js

@@ -108,8 +108,8 @@ proto.param = function param(name, fn) {
   var ret;
   var ret;
 
 
   if (name[0] === ':') {
   if (name[0] === ':') {
-    deprecate('router.param(' + JSON.stringify(name) + ', fn): Use router.param(' + JSON.stringify(name.substr(1)) + ', fn) instead');
-    name = name.substr(1);
+    deprecate('router.param(' + JSON.stringify(name) + ', fn): Use router.param(' + JSON.stringify(name.slice(1)) + ', fn) instead')
+    name = name.slice(1)
   }
   }
 
 
   for (var i = 0; i < len; ++i) {
   for (var i = 0; i < len; ++i) {
@@ -142,6 +142,7 @@ proto.handle = function handle(req, res, out) {
   var protohost = getProtohost(req.url) || ''
   var protohost = getProtohost(req.url) || ''
   var removed = '';
   var removed = '';
   var slashAdded = false;
   var slashAdded = false;
+  var sync = 0
   var paramcalled = {};
   var paramcalled = {};
 
 
   // store options for OPTIONS request
   // store options for OPTIONS request
@@ -180,14 +181,14 @@ proto.handle = function handle(req, res, out) {
 
 
     // remove added slash
     // remove added slash
     if (slashAdded) {
     if (slashAdded) {
-      req.url = req.url.substr(1);
+      req.url = req.url.slice(1)
       slashAdded = false;
       slashAdded = false;
     }
     }
 
 
     // restore altered req.url
     // restore altered req.url
     if (removed.length !== 0) {
     if (removed.length !== 0) {
       req.baseUrl = parentUrl;
       req.baseUrl = parentUrl;
-      req.url = protohost + removed + req.url.substr(protohost.length);
+      req.url = protohost + removed + req.url.slice(protohost.length)
       removed = '';
       removed = '';
     }
     }
 
 
@@ -203,6 +204,11 @@ proto.handle = function handle(req, res, out) {
       return;
       return;
     }
     }
 
 
+    // max sync stack
+    if (++sync > 100) {
+      return setImmediate(next, err)
+    }
+
     // get pathname of request
     // get pathname of request
     var path = getPathname(req);
     var path = getPathname(req);
 
 
@@ -251,7 +257,6 @@ proto.handle = function handle(req, res, out) {
       // don't even bother matching route
       // don't even bother matching route
       if (!has_method && method !== 'HEAD') {
       if (!has_method && method !== 'HEAD') {
         match = false;
         match = false;
-        continue;
       }
       }
     }
     }
 
 
@@ -274,19 +279,25 @@ proto.handle = function handle(req, res, out) {
     // this should be done for the layer
     // this should be done for the layer
     self.process_params(layer, paramcalled, req, res, function (err) {
     self.process_params(layer, paramcalled, req, res, function (err) {
       if (err) {
       if (err) {
-        return next(layerError || err);
+        next(layerError || err)
+      } else if (route) {
+        layer.handle_request(req, res, next)
+      } else {
+        trim_prefix(layer, layerError, layerPath, path)
       }
       }
 
 
-      if (route) {
-        return layer.handle_request(req, res, next);
-      }
-
-      trim_prefix(layer, layerError, layerPath, path);
+      sync = 0
     });
     });
   }
   }
 
 
   function trim_prefix(layer, layerError, layerPath, path) {
   function trim_prefix(layer, layerError, layerPath, path) {
     if (layerPath.length !== 0) {
     if (layerPath.length !== 0) {
+      // Validate path is a prefix match
+      if (layerPath !== path.slice(0, layerPath.length)) {
+        next(layerError)
+        return
+      }
+
       // Validate path breaks on a path separator
       // Validate path breaks on a path separator
       var c = path[layerPath.length]
       var c = path[layerPath.length]
       if (c && c !== '/' && c !== '.') return next(layerError)
       if (c && c !== '/' && c !== '.') return next(layerError)
@@ -295,7 +306,7 @@ proto.handle = function handle(req, res, out) {
       // middleware (.use stuff) needs to have the path stripped
       // middleware (.use stuff) needs to have the path stripped
       debug('trim prefix (%s) from url %s', layerPath, req.url);
       debug('trim prefix (%s) from url %s', layerPath, req.url);
       removed = layerPath;
       removed = layerPath;
-      req.url = protohost + req.url.substr(protohost.length + removed.length);
+      req.url = protohost + req.url.slice(protohost.length + removed.length)
 
 
       // Ensure leading slash
       // Ensure leading slash
       if (!protohost && req.url[0] !== '/') {
       if (!protohost && req.url[0] !== '/') {
@@ -541,10 +552,10 @@ function getProtohost(url) {
   var pathLength = searchIndex !== -1
   var pathLength = searchIndex !== -1
     ? searchIndex
     ? searchIndex
     : url.length
     : url.length
-  var fqdnIndex = url.substr(0, pathLength).indexOf('://')
+  var fqdnIndex = url.slice(0, pathLength).indexOf('://')
 
 
   return fqdnIndex !== -1
   return fqdnIndex !== -1
-    ? url.substr(0, url.indexOf('/', 3 + fqdnIndex))
+    ? url.substring(0, url.indexOf('/', 3 + fqdnIndex))
     : undefined
     : undefined
 }
 }
 
 

+ 9 - 0
express-server/node_modules/express/lib/router/route.js

@@ -98,6 +98,8 @@ Route.prototype._options = function _options() {
 Route.prototype.dispatch = function dispatch(req, res, done) {
 Route.prototype.dispatch = function dispatch(req, res, done) {
   var idx = 0;
   var idx = 0;
   var stack = this.stack;
   var stack = this.stack;
+  var sync = 0
+
   if (stack.length === 0) {
   if (stack.length === 0) {
     return done();
     return done();
   }
   }
@@ -127,6 +129,11 @@ Route.prototype.dispatch = function dispatch(req, res, done) {
       return done(err);
       return done(err);
     }
     }
 
 
+    // max sync stack
+    if (++sync > 100) {
+      return setImmediate(next, err)
+    }
+
     if (layer.method && layer.method !== method) {
     if (layer.method && layer.method !== method) {
       return next(err);
       return next(err);
     }
     }
@@ -136,6 +143,8 @@ Route.prototype.dispatch = function dispatch(req, res, done) {
     } else {
     } else {
       layer.handle_request(req, res, next);
       layer.handle_request(req, res, next);
     }
     }
+
+    sync = 0
   }
   }
 };
 };
 
 

+ 5 - 7
express-server/node_modules/express/lib/utils.js

@@ -120,6 +120,7 @@ exports.contentDisposition = deprecate.function(contentDisposition,
  * also includes `.originalIndex` for stable sorting
  * also includes `.originalIndex` for stable sorting
  *
  *
  * @param {String} str
  * @param {String} str
+ * @param {Number} index
  * @return {Object}
  * @return {Object}
  * @api private
  * @api private
  */
  */
@@ -157,6 +158,7 @@ exports.compileETag = function(val) {
 
 
   switch (val) {
   switch (val) {
     case true:
     case true:
+    case 'weak':
       fn = exports.wetag;
       fn = exports.wetag;
       break;
       break;
     case false:
     case false:
@@ -164,9 +166,6 @@ exports.compileETag = function(val) {
     case 'strong':
     case 'strong':
       fn = exports.etag;
       fn = exports.etag;
       break;
       break;
-    case 'weak':
-      fn = exports.wetag;
-      break;
     default:
     default:
       throw new TypeError('unknown value for etag function: ' + val);
       throw new TypeError('unknown value for etag function: ' + val);
   }
   }
@@ -191,6 +190,7 @@ exports.compileQueryParser = function compileQueryParser(val) {
 
 
   switch (val) {
   switch (val) {
     case true:
     case true:
+    case 'simple':
       fn = querystring.parse;
       fn = querystring.parse;
       break;
       break;
     case false:
     case false:
@@ -199,9 +199,6 @@ exports.compileQueryParser = function compileQueryParser(val) {
     case 'extended':
     case 'extended':
       fn = parseExtendedQueryString;
       fn = parseExtendedQueryString;
       break;
       break;
-    case 'simple':
-      fn = querystring.parse;
-      break;
     default:
     default:
       throw new TypeError('unknown value for query parser function: ' + val);
       throw new TypeError('unknown value for query parser function: ' + val);
   }
   }
@@ -232,7 +229,8 @@ exports.compileTrust = function(val) {
 
 
   if (typeof val === 'string') {
   if (typeof val === 'string') {
     // Support comma-separated values
     // Support comma-separated values
-    val = val.split(/ *, */);
+    val = val.split(',')
+      .map(function (v) { return v.trim() })
   }
   }
 
 
   return proxyaddr.compile(val || []);
   return proxyaddr.compile(val || []);

+ 1 - 1
express-server/node_modules/express/lib/view.js

@@ -74,7 +74,7 @@ function View(name, options) {
 
 
   if (!opts.engines[this.ext]) {
   if (!opts.engines[this.ext]) {
     // load engine
     // load engine
-    var mod = this.ext.substr(1)
+    var mod = this.ext.slice(1)
     debug('require "%s"', mod)
     debug('require "%s"', mod)
 
 
     // default engine export
     // default engine export

+ 37 - 36
express-server/node_modules/express/package.json

@@ -1,8 +1,8 @@
 {
 {
   "_from": "express@^4.17.1",
   "_from": "express@^4.17.1",
-  "_id": "express@4.17.1",
+  "_id": "express@4.18.1",
   "_inBundle": false,
   "_inBundle": false,
-  "_integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==",
+  "_integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==",
   "_location": "/express",
   "_location": "/express",
   "_phantomChildren": {},
   "_phantomChildren": {},
   "_requested": {
   "_requested": {
@@ -19,10 +19,10 @@
     "/",
     "/",
     "/api-express-exporter"
     "/api-express-exporter"
   ],
   ],
-  "_resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz",
-  "_shasum": "4491fc38605cf51f8629d39c2b5d026f98a4c134",
+  "_resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz",
+  "_shasum": "7797de8b9c72c857b9cd0e14a5eea80666267caf",
   "_spec": "express@^4.17.1",
   "_spec": "express@^4.17.1",
-  "_where": "C:\\Users\\brin\\Desktop\\Personnel\\FatboarProject-develop\\FatboarProject\\express-server",
+  "_where": "C:\\FatboarProject\\express-server",
   "author": {
   "author": {
     "name": "TJ Holowaychuk",
     "name": "TJ Holowaychuk",
     "email": "tj@vision-media.ca"
     "email": "tj@vision-media.ca"
@@ -62,33 +62,34 @@
     }
     }
   ],
   ],
   "dependencies": {
   "dependencies": {
-    "accepts": "~1.3.7",
+    "accepts": "~1.3.8",
     "array-flatten": "1.1.1",
     "array-flatten": "1.1.1",
-    "body-parser": "1.19.0",
-    "content-disposition": "0.5.3",
+    "body-parser": "1.20.0",
+    "content-disposition": "0.5.4",
     "content-type": "~1.0.4",
     "content-type": "~1.0.4",
-    "cookie": "0.4.0",
+    "cookie": "0.5.0",
     "cookie-signature": "1.0.6",
     "cookie-signature": "1.0.6",
     "debug": "2.6.9",
     "debug": "2.6.9",
-    "depd": "~1.1.2",
+    "depd": "2.0.0",
     "encodeurl": "~1.0.2",
     "encodeurl": "~1.0.2",
     "escape-html": "~1.0.3",
     "escape-html": "~1.0.3",
     "etag": "~1.8.1",
     "etag": "~1.8.1",
-    "finalhandler": "~1.1.2",
+    "finalhandler": "1.2.0",
     "fresh": "0.5.2",
     "fresh": "0.5.2",
+    "http-errors": "2.0.0",
     "merge-descriptors": "1.0.1",
     "merge-descriptors": "1.0.1",
     "methods": "~1.1.2",
     "methods": "~1.1.2",
-    "on-finished": "~2.3.0",
+    "on-finished": "2.4.1",
     "parseurl": "~1.3.3",
     "parseurl": "~1.3.3",
     "path-to-regexp": "0.1.7",
     "path-to-regexp": "0.1.7",
-    "proxy-addr": "~2.0.5",
-    "qs": "6.7.0",
+    "proxy-addr": "~2.0.7",
+    "qs": "6.10.3",
     "range-parser": "~1.2.1",
     "range-parser": "~1.2.1",
-    "safe-buffer": "5.1.2",
-    "send": "0.17.1",
-    "serve-static": "1.14.1",
-    "setprototypeof": "1.1.1",
-    "statuses": "~1.5.0",
+    "safe-buffer": "5.2.1",
+    "send": "0.18.0",
+    "serve-static": "1.15.0",
+    "setprototypeof": "1.2.0",
+    "statuses": "2.0.1",
     "type-is": "~1.6.18",
     "type-is": "~1.6.18",
     "utils-merge": "1.0.1",
     "utils-merge": "1.0.1",
     "vary": "~1.1.2"
     "vary": "~1.1.2"
@@ -97,22 +98,21 @@
   "description": "Fast, unopinionated, minimalist web framework",
   "description": "Fast, unopinionated, minimalist web framework",
   "devDependencies": {
   "devDependencies": {
     "after": "0.8.2",
     "after": "0.8.2",
-    "connect-redis": "3.4.1",
-    "cookie-parser": "~1.4.4",
-    "cookie-session": "1.3.3",
-    "ejs": "2.6.1",
-    "eslint": "2.13.1",
-    "express-session": "1.16.1",
-    "hbs": "4.0.4",
-    "istanbul": "0.4.5",
-    "marked": "0.6.2",
+    "connect-redis": "3.4.2",
+    "cookie-parser": "1.4.6",
+    "cookie-session": "2.0.0",
+    "ejs": "3.1.7",
+    "eslint": "7.32.0",
+    "express-session": "1.17.2",
+    "hbs": "4.2.0",
+    "marked": "0.7.0",
     "method-override": "3.0.0",
     "method-override": "3.0.0",
-    "mocha": "5.2.0",
-    "morgan": "1.9.1",
-    "multiparty": "4.2.1",
+    "mocha": "9.2.2",
+    "morgan": "1.10.0",
+    "multiparty": "4.2.3",
+    "nyc": "15.1.0",
     "pbkdf2-password": "1.2.1",
     "pbkdf2-password": "1.2.1",
-    "should": "13.2.3",
-    "supertest": "3.3.0",
+    "supertest": "6.2.3",
     "vhost": "~3.0.2"
     "vhost": "~3.0.2"
   },
   },
   "engines": {
   "engines": {
@@ -131,6 +131,7 @@
     "framework",
     "framework",
     "sinatra",
     "sinatra",
     "web",
     "web",
+    "http",
     "rest",
     "rest",
     "restful",
     "restful",
     "router",
     "router",
@@ -146,9 +147,9 @@
   "scripts": {
   "scripts": {
     "lint": "eslint .",
     "lint": "eslint .",
     "test": "mocha --require test/support/env --reporter spec --bail --check-leaks test/ test/acceptance/",
     "test": "mocha --require test/support/env --reporter spec --bail --check-leaks test/ test/acceptance/",
-    "test-ci": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --require test/support/env --reporter spec --check-leaks test/ test/acceptance/",
-    "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --require test/support/env --reporter dot --check-leaks test/ test/acceptance/",
+    "test-ci": "nyc --reporter=lcovonly --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.17.1"
+  "version": "4.18.1"
 }
 }

+ 8 - 0
express-server/node_modules/finalhandler/HISTORY.md

@@ -1,3 +1,11 @@
+1.2.0 / 2022-03-22
+==================
+
+  * Remove set content headers that break response
+  * deps: on-finished@2.4.1
+  * deps: statuses@2.0.1
+    - Rename `425 Unordered Collection` to standard `425 Too Early`
+
 1.1.2 / 2019-05-09
 1.1.2 / 2019-05-09
 ==================
 ==================
 
 

+ 1 - 1
express-server/node_modules/finalhandler/LICENSE

@@ -1,6 +1,6 @@
 (The MIT License)
 (The MIT License)
 
 
-Copyright (c) 2014-2017 Douglas Christopher Wilson <doug@somethingdoug.com>
+Copyright (c) 2014-2022 Douglas Christopher Wilson <doug@somethingdoug.com>
 
 
 Permission is hereby granted, free of charge, to any person obtaining
 Permission is hereby granted, free of charge, to any person obtaining
 a copy of this software and associated documentation files (the
 a copy of this software and associated documentation files (the

+ 5 - 6
express-server/node_modules/finalhandler/README.md

@@ -3,7 +3,7 @@
 [![NPM Version][npm-image]][npm-url]
 [![NPM Version][npm-image]][npm-url]
 [![NPM Downloads][downloads-image]][downloads-url]
 [![NPM Downloads][downloads-image]][downloads-url]
 [![Node.js Version][node-image]][node-url]
 [![Node.js Version][node-image]][node-url]
-[![Build Status][travis-image]][travis-url]
+[![Build Status][github-actions-ci-image]][github-actions-ci-url]
 [![Test Coverage][coveralls-image]][coveralls-url]
 [![Test Coverage][coveralls-image]][coveralls-url]
 
 
 Node.js function to invoke as the final step to respond to HTTP request.
 Node.js function to invoke as the final step to respond to HTTP request.
@@ -20,8 +20,6 @@ $ npm install finalhandler
 
 
 ## API
 ## API
 
 
-<!-- eslint-disable no-unused-vars -->
-
 ```js
 ```js
 var finalhandler = require('finalhandler')
 var finalhandler = require('finalhandler')
 ```
 ```
@@ -31,7 +29,8 @@ var finalhandler = require('finalhandler')
 Returns function to be invoked as the final step for the given `req` and `res`.
 Returns function to be invoked as the final step for the given `req` and `res`.
 This function is to be invoked as `fn(err)`. If `err` is falsy, the handler will
 This function is to be invoked as `fn(err)`. If `err` is falsy, the handler will
 write out a 404 response to the `res`. If it is truthy, an error response will
 write out a 404 response to the `res`. If it is truthy, an error response will
-be written out to the `res`.
+be written out to the `res` or `res` will be terminated if a response has already
+started.
 
 
 When an error is written, the following information is added to the response:
 When an error is written, the following information is added to the response:
 
 
@@ -140,9 +139,9 @@ function logerror (err) {
 [npm-url]: https://npmjs.org/package/finalhandler
 [npm-url]: https://npmjs.org/package/finalhandler
 [node-image]: https://img.shields.io/node/v/finalhandler.svg
 [node-image]: https://img.shields.io/node/v/finalhandler.svg
 [node-url]: https://nodejs.org/en/download
 [node-url]: https://nodejs.org/en/download
-[travis-image]: https://img.shields.io/travis/pillarjs/finalhandler.svg
-[travis-url]: https://travis-ci.org/pillarjs/finalhandler
 [coveralls-image]: https://img.shields.io/coveralls/pillarjs/finalhandler.svg
 [coveralls-image]: https://img.shields.io/coveralls/pillarjs/finalhandler.svg
 [coveralls-url]: https://coveralls.io/r/pillarjs/finalhandler?branch=master
 [coveralls-url]: https://coveralls.io/r/pillarjs/finalhandler?branch=master
 [downloads-image]: https://img.shields.io/npm/dm/finalhandler.svg
 [downloads-image]: https://img.shields.io/npm/dm/finalhandler.svg
 [downloads-url]: https://npmjs.org/package/finalhandler
 [downloads-url]: https://npmjs.org/package/finalhandler
+[github-actions-ci-image]: https://img.shields.io/github/workflow/status/pillarjs/finalhandler/ci/master?label=ci
+[github-actions-ci-url]: https://github.com/jshttp/pillarjs/finalhandler?query=workflow%3Aci

+ 8 - 3
express-server/node_modules/finalhandler/index.js

@@ -1,6 +1,6 @@
 /*!
 /*!
  * finalhandler
  * finalhandler
- * Copyright(c) 2014-2017 Douglas Christopher Wilson
+ * Copyright(c) 2014-2022 Douglas Christopher Wilson
  * MIT Licensed
  * MIT Licensed
  */
  */
 
 
@@ -181,7 +181,7 @@ function getErrorMessage (err, status, env) {
     }
     }
   }
   }
 
 
-  return msg || statuses[status]
+  return msg || statuses.message[status]
 }
 }
 
 
 /**
 /**
@@ -276,7 +276,12 @@ function send (req, res, status, headers, message) {
 
 
     // response status
     // response status
     res.statusCode = status
     res.statusCode = status
-    res.statusMessage = statuses[status]
+    res.statusMessage = statuses.message[status]
+
+    // remove any content headers
+    res.removeHeader('Content-Encoding')
+    res.removeHeader('Content-Language')
+    res.removeHeader('Content-Range')
 
 
     // response headers
     // response headers
     setHeaders(res, headers)
     setHeaders(res, headers)

+ 29 - 28
express-server/node_modules/finalhandler/package.json

@@ -1,27 +1,27 @@
 {
 {
-  "_from": "finalhandler@~1.1.2",
-  "_id": "finalhandler@1.1.2",
+  "_from": "finalhandler@1.2.0",
+  "_id": "finalhandler@1.2.0",
   "_inBundle": false,
   "_inBundle": false,
-  "_integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
+  "_integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
   "_location": "/finalhandler",
   "_location": "/finalhandler",
   "_phantomChildren": {},
   "_phantomChildren": {},
   "_requested": {
   "_requested": {
-    "type": "range",
+    "type": "version",
     "registry": true,
     "registry": true,
-    "raw": "finalhandler@~1.1.2",
+    "raw": "finalhandler@1.2.0",
     "name": "finalhandler",
     "name": "finalhandler",
     "escapedName": "finalhandler",
     "escapedName": "finalhandler",
-    "rawSpec": "~1.1.2",
+    "rawSpec": "1.2.0",
     "saveSpec": null,
     "saveSpec": null,
-    "fetchSpec": "~1.1.2"
+    "fetchSpec": "1.2.0"
   },
   },
   "_requiredBy": [
   "_requiredBy": [
     "/express"
     "/express"
   ],
   ],
-  "_resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
-  "_shasum": "b7e7d000ffd11938d0fdb053506f6ebabe9f587d",
-  "_spec": "finalhandler@~1.1.2",
-  "_where": "C:\\Users\\brin\\Desktop\\Personnel\\FatboarProject-develop\\FatboarProject\\express-server\\node_modules\\express",
+  "_resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
+  "_shasum": "7d23fe5731b207b4640e4fcd00aec1f9207a7b32",
+  "_spec": "finalhandler@1.2.0",
+  "_where": "C:\\FatboarProject\\express-server\\node_modules\\express",
   "author": {
   "author": {
     "name": "Douglas Christopher Wilson",
     "name": "Douglas Christopher Wilson",
     "email": "doug@somethingdoug.com"
     "email": "doug@somethingdoug.com"
@@ -34,26 +34,26 @@
     "debug": "2.6.9",
     "debug": "2.6.9",
     "encodeurl": "~1.0.2",
     "encodeurl": "~1.0.2",
     "escape-html": "~1.0.3",
     "escape-html": "~1.0.3",
-    "on-finished": "~2.3.0",
+    "on-finished": "2.4.1",
     "parseurl": "~1.3.3",
     "parseurl": "~1.3.3",
-    "statuses": "~1.5.0",
+    "statuses": "2.0.1",
     "unpipe": "~1.0.0"
     "unpipe": "~1.0.0"
   },
   },
   "deprecated": false,
   "deprecated": false,
   "description": "Node.js final http responder",
   "description": "Node.js final http responder",
   "devDependencies": {
   "devDependencies": {
-    "eslint": "5.16.0",
-    "eslint-config-standard": "12.0.0",
-    "eslint-plugin-import": "2.17.2",
-    "eslint-plugin-markdown": "1.0.0",
-    "eslint-plugin-node": "8.0.1",
-    "eslint-plugin-promise": "4.1.1",
-    "eslint-plugin-standard": "4.0.0",
-    "istanbul": "0.4.5",
-    "mocha": "6.1.4",
+    "eslint": "7.32.0",
+    "eslint-config-standard": "14.1.1",
+    "eslint-plugin-import": "2.25.4",
+    "eslint-plugin-markdown": "2.2.1",
+    "eslint-plugin-node": "11.1.0",
+    "eslint-plugin-promise": "5.2.0",
+    "eslint-plugin-standard": "4.1.0",
+    "mocha": "9.2.2",
+    "nyc": "15.1.0",
     "readable-stream": "2.3.6",
     "readable-stream": "2.3.6",
-    "safe-buffer": "5.1.2",
-    "supertest": "4.0.2"
+    "safe-buffer": "5.2.1",
+    "supertest": "6.2.2"
   },
   },
   "engines": {
   "engines": {
     "node": ">= 0.8"
     "node": ">= 0.8"
@@ -61,6 +61,7 @@
   "files": [
   "files": [
     "LICENSE",
     "LICENSE",
     "HISTORY.md",
     "HISTORY.md",
+    "SECURITY.md",
     "index.js"
     "index.js"
   ],
   ],
   "homepage": "https://github.com/pillarjs/finalhandler#readme",
   "homepage": "https://github.com/pillarjs/finalhandler#readme",
@@ -71,10 +72,10 @@
     "url": "git+https://github.com/pillarjs/finalhandler.git"
     "url": "git+https://github.com/pillarjs/finalhandler.git"
   },
   },
   "scripts": {
   "scripts": {
-    "lint": "eslint --plugin markdown --ext js,md .",
+    "lint": "eslint .",
     "test": "mocha --reporter spec --bail --check-leaks test/",
     "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/"
+    "test-ci": "nyc --reporter=lcovonly --reporter=text npm test",
+    "test-cov": "nyc --reporter=html --reporter=text npm test"
   },
   },
-  "version": "1.1.2"
+  "version": "1.2.0"
 }
 }

+ 1 - 1
express-server/node_modules/forwarded/package.json

@@ -21,7 +21,7 @@
   "_resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
   "_resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
   "_shasum": "2269936428aad4c15c7ebe9779a84bf0b2a81811",
   "_shasum": "2269936428aad4c15c7ebe9779a84bf0b2a81811",
   "_spec": "forwarded@0.2.0",
   "_spec": "forwarded@0.2.0",
-  "_where": "C:\\Users\\brin\\Desktop\\Personnel\\FatboarProject-develop\\FatboarProject\\express-server\\node_modules\\proxy-addr",
+  "_where": "C:\\FatboarProject\\express-server\\node_modules\\proxy-addr",
   "bugs": {
   "bugs": {
     "url": "https://github.com/jshttp/forwarded/issues"
     "url": "https://github.com/jshttp/forwarded/issues"
   },
   },

+ 2 - 2
express-server/node_modules/fresh/package.json

@@ -2,7 +2,7 @@
   "_from": "fresh@0.5.2",
   "_from": "fresh@0.5.2",
   "_id": "fresh@0.5.2",
   "_id": "fresh@0.5.2",
   "_inBundle": false,
   "_inBundle": false,
-  "_integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=",
+  "_integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
   "_location": "/fresh",
   "_location": "/fresh",
   "_phantomChildren": {},
   "_phantomChildren": {},
   "_requested": {
   "_requested": {
@@ -22,7 +22,7 @@
   "_resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
   "_resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
   "_shasum": "3d8cadd90d976569fa835ab1f8e4b23a105605a7",
   "_shasum": "3d8cadd90d976569fa835ab1f8e4b23a105605a7",
   "_spec": "fresh@0.5.2",
   "_spec": "fresh@0.5.2",
-  "_where": "C:\\Users\\brin\\Desktop\\Personnel\\FatboarProject-develop\\FatboarProject\\express-server\\node_modules\\express",
+  "_where": "C:\\FatboarProject\\express-server\\node_modules\\express",
   "author": {
   "author": {
     "name": "TJ Holowaychuk",
     "name": "TJ Holowaychuk",
     "email": "tj@vision-media.ca",
     "email": "tj@vision-media.ca",

+ 31 - 0
express-server/node_modules/http-errors/HISTORY.md

@@ -1,3 +1,34 @@
+2.0.0 / 2021-12-17
+==================
+
+  * Drop support for Node.js 0.6
+  * Remove `I'mateapot` export; use `ImATeapot` instead
+  * Remove support for status being non-first argument
+  * Rename `UnorderedCollection` constructor to `TooEarly`
+  * deps: depd@2.0.0
+    - Replace internal `eval` usage with `Function` constructor
+    - Use instance methods on `process` to check for listeners
+  * deps: statuses@2.0.1
+    - Fix messaging casing of `418 I'm a Teapot`
+    - Remove code 306
+    - Rename `425 Unordered Collection` to standard `425 Too Early`
+
+2021-11-14 / 1.8.1
+==================
+
+  * deps: toidentifier@1.0.1
+
+2020-06-29 / 1.8.0
+==================
+
+  * Add `isHttpError` export to determine if value is an HTTP error
+  * deps: setprototypeof@1.2.0
+
+2019-06-24 / 1.7.3
+==================
+
+  * deps: inherits@2.0.4
+
 2019-02-18 / 1.7.2
 2019-02-18 / 1.7.2
 ==================
 ==================
 
 

+ 14 - 8
express-server/node_modules/http-errors/README.md

@@ -3,7 +3,7 @@
 [![NPM Version][npm-version-image]][npm-url]
 [![NPM Version][npm-version-image]][npm-url]
 [![NPM Downloads][npm-downloads-image]][node-url]
 [![NPM Downloads][npm-downloads-image]][node-url]
 [![Node.js Version][node-image]][node-url]
 [![Node.js Version][node-image]][node-url]
-[![Build Status][travis-image]][travis-url]
+[![Build Status][ci-image]][ci-url]
 [![Test Coverage][coveralls-image]][coveralls-url]
 [![Test Coverage][coveralls-image]][coveralls-url]
 
 
 Create HTTP errors for Express, Koa, Connect, etc. with ease.
 Create HTTP errors for Express, Koa, Connect, etc. with ease.
@@ -14,7 +14,7 @@ This is a [Node.js](https://nodejs.org/en/) module available through the
 [npm registry](https://www.npmjs.com/). Installation is done using the
 [npm registry](https://www.npmjs.com/). Installation is done using the
 [`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally):
 [`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally):
 
 
-```bash
+```console
 $ npm install http-errors
 $ npm install http-errors
 ```
 ```
 
 
@@ -53,8 +53,6 @@ This is the current API, currently extracted from Koa and subject to change.
 Create a new error object with the given message `msg`.
 Create a new error object with the given message `msg`.
 The error object inherits from `createError.HttpError`.
 The error object inherits from `createError.HttpError`.
 
 
-<!-- eslint-disable no-undef, no-unused-vars -->
-
 ```js
 ```js
 var err = createError(404, 'This video does not exist!')
 var err = createError(404, 'This video does not exist!')
 ```
 ```
@@ -70,7 +68,7 @@ properties. This will not alter the inheritance of the given
 `error` object, and the modified `error` object is the
 `error` object, and the modified `error` object is the
 return value.
 return value.
 
 
-<!-- eslint-disable no-redeclare, no-undef, no-unused-vars -->
+<!-- eslint-disable no-redeclare -->
 
 
 ```js
 ```js
 fs.readFile('foo.txt', function (err, buf) {
 fs.readFile('foo.txt', function (err, buf) {
@@ -88,13 +86,19 @@ fs.readFile('foo.txt', function (err, buf) {
 - `error` - the error object to extend
 - `error` - the error object to extend
 - `properties` - custom properties to attach to the object
 - `properties` - custom properties to attach to the object
 
 
+### createError.isHttpError(val)
+
+Determine if the provided `val` is an `HttpError`. This will return `true`
+if the error inherits from the `HttpError` constructor of this module or
+matches the "duck type" for an error this module creates. All outputs from
+the `createError` factory will return `true` for this function, including
+if an non-`HttpError` was passed into the factory.
+
 ### new createError\[code || name\](\[msg]\))
 ### new createError\[code || name\](\[msg]\))
 
 
 Create a new error object with the given message `msg`.
 Create a new error object with the given message `msg`.
 The error object inherits from `createError.HttpError`.
 The error object inherits from `createError.HttpError`.
 
 
-<!-- eslint-disable no-undef, no-unused-vars -->
-
 ```js
 ```js
 var err = new createError.NotFound()
 var err = new createError.NotFound()
 ```
 ```
@@ -129,7 +133,7 @@ var err = new createError.NotFound()
 |422        |UnprocessableEntity          |
 |422        |UnprocessableEntity          |
 |423        |Locked                       |
 |423        |Locked                       |
 |424        |FailedDependency             |
 |424        |FailedDependency             |
-|425        |UnorderedCollection          |
+|425        |TooEarly                     |
 |426        |UpgradeRequired              |
 |426        |UpgradeRequired              |
 |428        |PreconditionRequired         |
 |428        |PreconditionRequired         |
 |429        |TooManyRequests              |
 |429        |TooManyRequests              |
@@ -152,6 +156,8 @@ var err = new createError.NotFound()
 
 
 [MIT](LICENSE)
 [MIT](LICENSE)
 
 
+[ci-image]: https://badgen.net/github/checks/jshttp/http-errors/master?label=ci
+[ci-url]: https://github.com/jshttp/http-errors/actions?query=workflow%3Aci
 [coveralls-image]: https://badgen.net/coveralls/c/github/jshttp/http-errors/master
 [coveralls-image]: https://badgen.net/coveralls/c/github/jshttp/http-errors/master
 [coveralls-url]: https://coveralls.io/r/jshttp/http-errors?branch=master
 [coveralls-url]: https://coveralls.io/r/jshttp/http-errors?branch=master
 [node-image]: https://badgen.net/npm/node/http-errors
 [node-image]: https://badgen.net/npm/node/http-errors

+ 49 - 26
express-server/node_modules/http-errors/index.js

@@ -25,6 +25,7 @@ var toIdentifier = require('toidentifier')
 
 
 module.exports = createError
 module.exports = createError
 module.exports.HttpError = createHttpErrorConstructor()
 module.exports.HttpError = createHttpErrorConstructor()
+module.exports.isHttpError = createIsHttpErrorFunction(module.exports.HttpError)
 
 
 // Populate exports for all constructors
 // Populate exports for all constructors
 populateConstructorExports(module.exports, statuses.codes, module.exports.HttpError)
 populateConstructorExports(module.exports, statuses.codes, module.exports.HttpError)
@@ -53,24 +54,18 @@ function createError () {
   var props = {}
   var props = {}
   for (var i = 0; i < arguments.length; i++) {
   for (var i = 0; i < arguments.length; i++) {
     var arg = arguments[i]
     var arg = arguments[i]
-    if (arg instanceof Error) {
+    var type = typeof arg
+    if (type === 'object' && arg instanceof Error) {
       err = arg
       err = arg
       status = err.status || err.statusCode || status
       status = err.status || err.statusCode || status
-      continue
-    }
-    switch (typeof arg) {
-      case 'string':
-        msg = arg
-        break
-      case 'number':
-        status = arg
-        if (i !== 0) {
-          deprecate('non-first-argument status code; replace with createError(' + arg + ', ...)')
-        }
-        break
-      case 'object':
-        props = arg
-        break
+    } else if (type === 'number' && i === 0) {
+      status = arg
+    } else if (type === 'string') {
+      msg = arg
+    } else if (type === 'object') {
+      props = arg
+    } else {
+      throw new TypeError('argument #' + (i + 1) + ' unsupported type ' + type)
     }
     }
   }
   }
 
 
@@ -79,7 +74,7 @@ function createError () {
   }
   }
 
 
   if (typeof status !== 'number' ||
   if (typeof status !== 'number' ||
-    (!statuses[status] && (status < 400 || status >= 600))) {
+    (!statuses.message[status] && (status < 400 || status >= 600))) {
     status = 500
     status = 500
   }
   }
 
 
@@ -90,7 +85,7 @@ function createError () {
     // create error
     // create error
     err = HttpError
     err = HttpError
       ? new HttpError(msg)
       ? new HttpError(msg)
-      : new Error(msg || statuses[status])
+      : new Error(msg || statuses.message[status])
     Error.captureStackTrace(err, createError)
     Error.captureStackTrace(err, createError)
   }
   }
 
 
@@ -130,11 +125,11 @@ function createHttpErrorConstructor () {
  */
  */
 
 
 function createClientErrorConstructor (HttpError, name, code) {
 function createClientErrorConstructor (HttpError, name, code) {
-  var className = name.match(/Error$/) ? name : name + 'Error'
+  var className = toClassName(name)
 
 
   function ClientError (message) {
   function ClientError (message) {
     // create the error object
     // create the error object
-    var msg = message != null ? message : statuses[code]
+    var msg = message != null ? message : statuses.message[code]
     var err = new Error(msg)
     var err = new Error(msg)
 
 
     // capture a stack trace to the construction point
     // capture a stack trace to the construction point
@@ -172,17 +167,38 @@ function createClientErrorConstructor (HttpError, name, code) {
   return ClientError
   return ClientError
 }
 }
 
 
+/**
+ * Create function to test is a value is a HttpError.
+ * @private
+ */
+
+function createIsHttpErrorFunction (HttpError) {
+  return function isHttpError (val) {
+    if (!val || typeof val !== 'object') {
+      return false
+    }
+
+    if (val instanceof HttpError) {
+      return true
+    }
+
+    return val instanceof Error &&
+      typeof val.expose === 'boolean' &&
+      typeof val.statusCode === 'number' && val.status === val.statusCode
+  }
+}
+
 /**
 /**
  * Create a constructor for a server error.
  * Create a constructor for a server error.
  * @private
  * @private
  */
  */
 
 
 function createServerErrorConstructor (HttpError, name, code) {
 function createServerErrorConstructor (HttpError, name, code) {
-  var className = name.match(/Error$/) ? name : name + 'Error'
+  var className = toClassName(name)
 
 
   function ServerError (message) {
   function ServerError (message) {
     // create the error object
     // create the error object
-    var msg = message != null ? message : statuses[code]
+    var msg = message != null ? message : statuses.message[code]
     var err = new Error(msg)
     var err = new Error(msg)
 
 
     // capture a stack trace to the construction point
     // capture a stack trace to the construction point
@@ -242,7 +258,7 @@ function nameFunc (func, name) {
 function populateConstructorExports (exports, codes, HttpError) {
 function populateConstructorExports (exports, codes, HttpError) {
   codes.forEach(function forEachCode (code) {
   codes.forEach(function forEachCode (code) {
     var CodeError
     var CodeError
-    var name = toIdentifier(statuses[code])
+    var name = toIdentifier(statuses.message[code])
 
 
     switch (codeClass(code)) {
     switch (codeClass(code)) {
       case 400:
       case 400:
@@ -259,8 +275,15 @@ function populateConstructorExports (exports, codes, HttpError) {
       exports[name] = CodeError
       exports[name] = CodeError
     }
     }
   })
   })
+}
+
+/**
+ * Get a class name from a name identifier.
+ * @private
+ */
 
 
-  // backwards-compatibility
-  exports["I'mateapot"] = deprecate.function(exports.ImATeapot,
-    '"I\'mateapot"; use "ImATeapot" instead')
+function toClassName (name) {
+  return name.substr(-5) !== 'Error'
+    ? name + 'Error'
+    : name
 }
 }

+ 31 - 29
express-server/node_modules/http-errors/package.json

@@ -1,29 +1,30 @@
 {
 {
-  "_from": "http-errors@1.7.2",
-  "_id": "http-errors@1.7.2",
+  "_from": "http-errors@2.0.0",
+  "_id": "http-errors@2.0.0",
   "_inBundle": false,
   "_inBundle": false,
-  "_integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==",
+  "_integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
   "_location": "/http-errors",
   "_location": "/http-errors",
   "_phantomChildren": {},
   "_phantomChildren": {},
   "_requested": {
   "_requested": {
     "type": "version",
     "type": "version",
     "registry": true,
     "registry": true,
-    "raw": "http-errors@1.7.2",
+    "raw": "http-errors@2.0.0",
     "name": "http-errors",
     "name": "http-errors",
     "escapedName": "http-errors",
     "escapedName": "http-errors",
-    "rawSpec": "1.7.2",
+    "rawSpec": "2.0.0",
     "saveSpec": null,
     "saveSpec": null,
-    "fetchSpec": "1.7.2"
+    "fetchSpec": "2.0.0"
   },
   },
   "_requiredBy": [
   "_requiredBy": [
     "/body-parser",
     "/body-parser",
+    "/express",
     "/raw-body",
     "/raw-body",
     "/send"
     "/send"
   ],
   ],
-  "_resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz",
-  "_shasum": "4f5029cf13239f31036e5b2e55292bcfbcc85c8f",
-  "_spec": "http-errors@1.7.2",
-  "_where": "C:\\Users\\brin\\Desktop\\Personnel\\FatboarProject-develop\\FatboarProject\\express-server\\node_modules\\body-parser",
+  "_resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
+  "_shasum": "b7774a1486ef73cf7667ac9ae0858c012c57b9d3",
+  "_spec": "http-errors@2.0.0",
+  "_where": "C:\\FatboarProject\\express-server\\node_modules\\express",
   "author": {
   "author": {
     "name": "Jonathan Ong",
     "name": "Jonathan Ong",
     "email": "me@jongleberry.com",
     "email": "me@jongleberry.com",
@@ -44,27 +45,27 @@
     }
     }
   ],
   ],
   "dependencies": {
   "dependencies": {
-    "depd": "~1.1.2",
-    "inherits": "2.0.3",
-    "setprototypeof": "1.1.1",
-    "statuses": ">= 1.5.0 < 2",
-    "toidentifier": "1.0.0"
+    "depd": "2.0.0",
+    "inherits": "2.0.4",
+    "setprototypeof": "1.2.0",
+    "statuses": "2.0.1",
+    "toidentifier": "1.0.1"
   },
   },
   "deprecated": false,
   "deprecated": false,
   "description": "Create HTTP error objects",
   "description": "Create HTTP error objects",
   "devDependencies": {
   "devDependencies": {
-    "eslint": "5.13.0",
-    "eslint-config-standard": "12.0.0",
-    "eslint-plugin-import": "2.16.0",
-    "eslint-plugin-markdown": "1.0.0",
-    "eslint-plugin-node": "7.0.1",
-    "eslint-plugin-promise": "4.0.1",
-    "eslint-plugin-standard": "4.0.0",
-    "istanbul": "0.4.5",
-    "mocha": "5.2.0"
+    "eslint": "7.32.0",
+    "eslint-config-standard": "14.1.1",
+    "eslint-plugin-import": "2.25.3",
+    "eslint-plugin-markdown": "2.2.1",
+    "eslint-plugin-node": "11.1.0",
+    "eslint-plugin-promise": "5.2.0",
+    "eslint-plugin-standard": "4.1.0",
+    "mocha": "9.1.3",
+    "nyc": "15.1.0"
   },
   },
   "engines": {
   "engines": {
-    "node": ">= 0.6"
+    "node": ">= 0.8"
   },
   },
   "files": [
   "files": [
     "index.js",
     "index.js",
@@ -84,10 +85,11 @@
     "url": "git+https://github.com/jshttp/http-errors.git"
     "url": "git+https://github.com/jshttp/http-errors.git"
   },
   },
   "scripts": {
   "scripts": {
-    "lint": "eslint --plugin markdown --ext js,md . && node ./scripts/lint-readme-list.js",
+    "lint": "eslint . && node ./scripts/lint-readme-list.js",
     "test": "mocha --reporter spec --bail",
     "test": "mocha --reporter spec --bail",
-    "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot",
-    "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter dot"
+    "test-ci": "nyc --reporter=lcov --reporter=text npm test",
+    "test-cov": "nyc --reporter=html --reporter=text npm test",
+    "version": "node scripts/version-history.js && git add HISTORY.md"
   },
   },
-  "version": "1.7.2"
+  "version": "2.0.0"
 }
 }

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

@@ -22,7 +22,7 @@
   "_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",
   "_shasum": "2022b4b25fbddc21d2f524974a474aafe733908b",
   "_shasum": "2022b4b25fbddc21d2f524974a474aafe733908b",
   "_spec": "iconv-lite@0.4.24",
   "_spec": "iconv-lite@0.4.24",
-  "_where": "C:\\Users\\brin\\Desktop\\Personnel\\FatboarProject-develop\\FatboarProject\\express-server\\node_modules\\body-parser",
+  "_where": "C:\\FatboarProject\\express-server\\node_modules\\body-parser",
   "author": {
   "author": {
     "name": "Alexander Shtuchkin",
     "name": "Alexander Shtuchkin",
     "email": "ashtuchkin@gmail.com"
     "email": "ashtuchkin@gmail.com"

+ 2 - 0
express-server/node_modules/inherits/inherits.js

@@ -1,7 +1,9 @@
 try {
 try {
   var util = require('util');
   var util = require('util');
+  /* istanbul ignore next */
   if (typeof util.inherits !== 'function') throw '';
   if (typeof util.inherits !== 'function') throw '';
   module.exports = util.inherits;
   module.exports = util.inherits;
 } catch (e) {
 } catch (e) {
+  /* istanbul ignore next */
   module.exports = require('./inherits_browser.js');
   module.exports = require('./inherits_browser.js');
 }
 }

+ 18 - 14
express-server/node_modules/inherits/inherits_browser.js

@@ -1,23 +1,27 @@
 if (typeof Object.create === 'function') {
 if (typeof Object.create === 'function') {
   // implementation from standard node.js 'util' module
   // implementation from standard node.js 'util' module
   module.exports = function inherits(ctor, superCtor) {
   module.exports = function inherits(ctor, superCtor) {
-    ctor.super_ = superCtor
-    ctor.prototype = Object.create(superCtor.prototype, {
-      constructor: {
-        value: ctor,
-        enumerable: false,
-        writable: true,
-        configurable: true
-      }
-    });
+    if (superCtor) {
+      ctor.super_ = superCtor
+      ctor.prototype = Object.create(superCtor.prototype, {
+        constructor: {
+          value: ctor,
+          enumerable: false,
+          writable: true,
+          configurable: true
+        }
+      })
+    }
   };
   };
 } else {
 } else {
   // old school shim for old browsers
   // old school shim for old browsers
   module.exports = function inherits(ctor, superCtor) {
   module.exports = function inherits(ctor, superCtor) {
-    ctor.super_ = superCtor
-    var TempCtor = function () {}
-    TempCtor.prototype = superCtor.prototype
-    ctor.prototype = new TempCtor()
-    ctor.prototype.constructor = ctor
+    if (superCtor) {
+      ctor.super_ = superCtor
+      var TempCtor = function () {}
+      TempCtor.prototype = superCtor.prototype
+      ctor.prototype = new TempCtor()
+      ctor.prototype.constructor = ctor
+    }
   }
   }
 }
 }

+ 14 - 13
express-server/node_modules/inherits/package.json

@@ -1,30 +1,31 @@
 {
 {
-  "_from": "inherits@2.0.3",
-  "_id": "inherits@2.0.3",
+  "_from": "inherits@2.0.4",
+  "_id": "inherits@2.0.4",
   "_inBundle": false,
   "_inBundle": false,
-  "_integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+  "_integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
   "_location": "/inherits",
   "_location": "/inherits",
   "_phantomChildren": {},
   "_phantomChildren": {},
   "_requested": {
   "_requested": {
     "type": "version",
     "type": "version",
     "registry": true,
     "registry": true,
-    "raw": "inherits@2.0.3",
+    "raw": "inherits@2.0.4",
     "name": "inherits",
     "name": "inherits",
     "escapedName": "inherits",
     "escapedName": "inherits",
-    "rawSpec": "2.0.3",
+    "rawSpec": "2.0.4",
     "saveSpec": null,
     "saveSpec": null,
-    "fetchSpec": "2.0.3"
+    "fetchSpec": "2.0.4"
   },
   },
   "_requiredBy": [
   "_requiredBy": [
     "/ftp/readable-stream",
     "/ftp/readable-stream",
+    "/get-uri/readable-stream",
     "/glob",
     "/glob",
     "/http-errors",
     "/http-errors",
     "/readable-stream"
     "/readable-stream"
   ],
   ],
-  "_resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
-  "_shasum": "633c2c83e3da42a502f52466022480f4208261de",
-  "_spec": "inherits@2.0.3",
-  "_where": "C:\\Users\\brin\\Desktop\\Personnel\\FatboarProject-develop\\FatboarProject\\express-server\\node_modules\\http-errors",
+  "_resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+  "_shasum": "0fa2c64f932917c3433a0ded55363aae37416b7c",
+  "_spec": "inherits@2.0.4",
+  "_where": "C:\\FatboarProject\\express-server\\node_modules\\http-errors",
   "browser": "./inherits_browser.js",
   "browser": "./inherits_browser.js",
   "bugs": {
   "bugs": {
     "url": "https://github.com/isaacs/inherits/issues"
     "url": "https://github.com/isaacs/inherits/issues"
@@ -33,7 +34,7 @@
   "deprecated": false,
   "deprecated": false,
   "description": "Browser-friendly inheritance fully compatible with standard node.js inherits()",
   "description": "Browser-friendly inheritance fully compatible with standard node.js inherits()",
   "devDependencies": {
   "devDependencies": {
-    "tap": "^7.1.0"
+    "tap": "^14.2.4"
   },
   },
   "files": [
   "files": [
     "inherits.js",
     "inherits.js",
@@ -58,7 +59,7 @@
     "url": "git://github.com/isaacs/inherits.git"
     "url": "git://github.com/isaacs/inherits.git"
   },
   },
   "scripts": {
   "scripts": {
-    "test": "node test"
+    "test": "tap"
   },
   },
-  "version": "2.0.3"
+  "version": "2.0.4"
 }
 }

+ 1 - 1
express-server/node_modules/ipaddr.js/package.json

@@ -21,7 +21,7 @@
   "_resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
   "_resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
   "_shasum": "bff38543eeb8984825079ff3a2a8e6cbd46781b3",
   "_shasum": "bff38543eeb8984825079ff3a2a8e6cbd46781b3",
   "_spec": "ipaddr.js@1.9.1",
   "_spec": "ipaddr.js@1.9.1",
-  "_where": "C:\\Users\\brin\\Desktop\\Personnel\\FatboarProject-develop\\FatboarProject\\express-server\\node_modules\\proxy-addr",
+  "_where": "C:\\FatboarProject\\express-server\\node_modules\\proxy-addr",
   "author": {
   "author": {
     "name": "whitequark",
     "name": "whitequark",
     "email": "whitequark@whitequark.org"
     "email": "whitequark@whitequark.org"

+ 2 - 2
express-server/node_modules/media-typer/package.json

@@ -2,7 +2,7 @@
   "_from": "media-typer@0.3.0",
   "_from": "media-typer@0.3.0",
   "_id": "media-typer@0.3.0",
   "_id": "media-typer@0.3.0",
   "_inBundle": false,
   "_inBundle": false,
-  "_integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=",
+  "_integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
   "_location": "/media-typer",
   "_location": "/media-typer",
   "_phantomChildren": {},
   "_phantomChildren": {},
   "_requested": {
   "_requested": {
@@ -21,7 +21,7 @@
   "_resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
   "_resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
   "_shasum": "8710d7af0aa626f8fffa1ce00168545263255748",
   "_shasum": "8710d7af0aa626f8fffa1ce00168545263255748",
   "_spec": "media-typer@0.3.0",
   "_spec": "media-typer@0.3.0",
-  "_where": "C:\\Users\\brin\\Desktop\\Personnel\\FatboarProject-develop\\FatboarProject\\express-server\\node_modules\\type-is",
+  "_where": "C:\\FatboarProject\\express-server\\node_modules\\type-is",
   "author": {
   "author": {
     "name": "Douglas Christopher Wilson",
     "name": "Douglas Christopher Wilson",
     "email": "doug@somethingdoug.com"
     "email": "doug@somethingdoug.com"

+ 2 - 2
express-server/node_modules/merge-descriptors/package.json

@@ -2,7 +2,7 @@
   "_from": "merge-descriptors@1.0.1",
   "_from": "merge-descriptors@1.0.1",
   "_id": "merge-descriptors@1.0.1",
   "_id": "merge-descriptors@1.0.1",
   "_inBundle": false,
   "_inBundle": false,
-  "_integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=",
+  "_integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==",
   "_location": "/merge-descriptors",
   "_location": "/merge-descriptors",
   "_phantomChildren": {},
   "_phantomChildren": {},
   "_requested": {
   "_requested": {
@@ -21,7 +21,7 @@
   "_resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
   "_resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
   "_shasum": "b00aaa556dd8b44568150ec9d1b953f3f90cbb61",
   "_shasum": "b00aaa556dd8b44568150ec9d1b953f3f90cbb61",
   "_spec": "merge-descriptors@1.0.1",
   "_spec": "merge-descriptors@1.0.1",
-  "_where": "C:\\Users\\brin\\Desktop\\Personnel\\FatboarProject-develop\\FatboarProject\\express-server\\node_modules\\express",
+  "_where": "C:\\FatboarProject\\express-server\\node_modules\\express",
   "author": {
   "author": {
     "name": "Jonathan Ong",
     "name": "Jonathan Ong",
     "email": "me@jongleberry.com",
     "email": "me@jongleberry.com",

+ 2 - 2
express-server/node_modules/methods/package.json

@@ -2,7 +2,7 @@
   "_from": "methods@~1.1.2",
   "_from": "methods@~1.1.2",
   "_id": "methods@1.1.2",
   "_id": "methods@1.1.2",
   "_inBundle": false,
   "_inBundle": false,
-  "_integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=",
+  "_integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==",
   "_location": "/methods",
   "_location": "/methods",
   "_phantomChildren": {},
   "_phantomChildren": {},
   "_requested": {
   "_requested": {
@@ -21,7 +21,7 @@
   "_resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
   "_resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
   "_shasum": "5529a4d67654134edcc5266656835b0f851afcee",
   "_shasum": "5529a4d67654134edcc5266656835b0f851afcee",
   "_spec": "methods@~1.1.2",
   "_spec": "methods@~1.1.2",
-  "_where": "C:\\Users\\brin\\Desktop\\Personnel\\FatboarProject-develop\\FatboarProject\\express-server\\node_modules\\express",
+  "_where": "C:\\FatboarProject\\express-server\\node_modules\\express",
   "browser": {
   "browser": {
     "http": false
     "http": false
   },
   },

+ 21 - 0
express-server/node_modules/mime-db/HISTORY.md

@@ -1,3 +1,24 @@
+1.52.0 / 2022-02-21
+===================
+
+  * Add extensions from IANA for more `image/*` types
+  * Add extension `.asc` to `application/pgp-keys`
+  * Add extensions to various XML types
+  * Add new upstream MIME types
+
+1.51.0 / 2021-11-08
+===================
+
+  * Add new upstream MIME types
+  * Mark `image/vnd.microsoft.icon` as compressible
+  * Mark `image/vnd.ms-dds` as compressible
+
+1.50.0 / 2021-09-15
+===================
+
+  * Add deprecated iWorks mime types and extensions
+  * Add new upstream MIME types
+
 1.49.0 / 2021-07-26
 1.49.0 / 2021-07-26
 ===================
 ===================
 
 

+ 19 - 18
express-server/node_modules/mime-db/LICENSE

@@ -1,22 +1,23 @@
+(The MIT License)
 
 
-The MIT License (MIT)
+Copyright (c) 2014 Jonathan Ong <me@jongleberry.com>
+Copyright (c) 2015-2022 Douglas Christopher Wilson <doug@somethingdoug.com>
 
 
-Copyright (c) 2014 Jonathan Ong me@jongleberry.com
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+'Software'), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
 
 
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
 
 
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
+THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+ 1 - 1
express-server/node_modules/mime-db/README.md

@@ -6,7 +6,7 @@
 [![Build Status][ci-image]][ci-url]
 [![Build Status][ci-image]][ci-url]
 [![Coverage Status][coveralls-image]][coveralls-url]
 [![Coverage Status][coveralls-image]][coveralls-url]
 
 
-This is a database of all mime types.
+This is a large database of mime types and information about them.
 It consists of a single, public JSON file and does not include any logic,
 It consists of a single, public JSON file and does not include any logic,
 allowing it to remain as un-opinionated as possible with an API.
 allowing it to remain as un-opinionated as possible with an API.
 It aggregates data from the following sources:
 It aggregates data from the following sources:

+ 108 - 6
express-server/node_modules/mime-db/db.json

@@ -22,6 +22,9 @@
   "application/a2l": {
   "application/a2l": {
     "source": "iana"
     "source": "iana"
   },
   },
+  "application/ace+cbor": {
+    "source": "iana"
+  },
   "application/activemessage": {
   "application/activemessage": {
     "source": "iana"
     "source": "iana"
   },
   },
@@ -91,6 +94,9 @@
     "source": "apache",
     "source": "apache",
     "extensions": ["aw"]
     "extensions": ["aw"]
   },
   },
+  "application/at+jwt": {
+    "source": "iana"
+  },
   "application/atf": {
   "application/atf": {
     "source": "iana"
     "source": "iana"
   },
   },
@@ -244,6 +250,10 @@
   "application/cfw": {
   "application/cfw": {
     "source": "iana"
     "source": "iana"
   },
   },
+  "application/city+json": {
+    "source": "iana",
+    "compressible": true
+  },
   "application/clr": {
   "application/clr": {
     "source": "iana"
     "source": "iana"
   },
   },
@@ -287,7 +297,8 @@
   },
   },
   "application/cpl+xml": {
   "application/cpl+xml": {
     "source": "iana",
     "source": "iana",
-    "compressible": true
+    "compressible": true,
+    "extensions": ["cpl"]
   },
   },
   "application/csrattrs": {
   "application/csrattrs": {
     "source": "iana"
     "source": "iana"
@@ -322,6 +333,11 @@
     "compressible": true,
     "compressible": true,
     "extensions": ["mpd"]
     "extensions": ["mpd"]
   },
   },
+  "application/dash-patch+xml": {
+    "source": "iana",
+    "compressible": true,
+    "extensions": ["mpp"]
+  },
   "application/dashdelta": {
   "application/dashdelta": {
     "source": "iana"
     "source": "iana"
   },
   },
@@ -491,6 +507,10 @@
     "source": "iana",
     "source": "iana",
     "compressible": true
     "compressible": true
   },
   },
+  "application/express": {
+    "source": "iana",
+    "extensions": ["exp"]
+  },
   "application/fastinfoset": {
   "application/fastinfoset": {
     "source": "iana"
     "source": "iana"
   },
   },
@@ -858,7 +878,8 @@
   },
   },
   "application/media-policy-dataset+xml": {
   "application/media-policy-dataset+xml": {
     "source": "iana",
     "source": "iana",
-    "compressible": true
+    "compressible": true,
+    "extensions": ["mpf"]
   },
   },
   "application/media_control+xml": {
   "application/media_control+xml": {
     "source": "iana",
     "source": "iana",
@@ -1014,6 +1035,9 @@
   "application/oauth-authz-req+jwt": {
   "application/oauth-authz-req+jwt": {
     "source": "iana"
     "source": "iana"
   },
   },
+  "application/oblivious-dns-message": {
+    "source": "iana"
+  },
   "application/ocsp-request": {
   "application/ocsp-request": {
     "source": "iana"
     "source": "iana"
   },
   },
@@ -1066,6 +1090,9 @@
     "source": "iana",
     "source": "iana",
     "extensions": ["oxps"]
     "extensions": ["oxps"]
   },
   },
+  "application/p21": {
+    "source": "iana"
+  },
   "application/p21+zip": {
   "application/p21+zip": {
     "source": "iana",
     "source": "iana",
     "compressible": false
     "compressible": false
@@ -1103,7 +1130,8 @@
     "extensions": ["pgp"]
     "extensions": ["pgp"]
   },
   },
   "application/pgp-keys": {
   "application/pgp-keys": {
-    "source": "iana"
+    "source": "iana",
+    "extensions": ["asc"]
   },
   },
   "application/pgp-signature": {
   "application/pgp-signature": {
     "source": "iana",
     "source": "iana",
@@ -1523,6 +1551,10 @@
     "compressible": true,
     "compressible": true,
     "extensions": ["srx"]
     "extensions": ["srx"]
   },
   },
+  "application/spdx+json": {
+    "source": "iana",
+    "compressible": true
+  },
   "application/spirits-event+xml": {
   "application/spirits-event+xml": {
     "source": "iana",
     "source": "iana",
     "compressible": true
     "compressible": true
@@ -1640,6 +1672,9 @@
   "application/tnauthlist": {
   "application/tnauthlist": {
     "source": "iana"
     "source": "iana"
   },
   },
+  "application/token-introspection+jwt": {
+    "source": "iana"
+  },
   "application/toml": {
   "application/toml": {
     "compressible": true,
     "compressible": true,
     "extensions": ["toml"]
     "extensions": ["toml"]
@@ -2001,6 +2036,10 @@
   "application/vnd.afpc.modca-pagesegment": {
   "application/vnd.afpc.modca-pagesegment": {
     "source": "iana"
     "source": "iana"
   },
   },
+  "application/vnd.age": {
+    "source": "iana",
+    "extensions": ["age"]
+  },
   "application/vnd.ah-barcode": {
   "application/vnd.ah-barcode": {
     "source": "iana"
     "source": "iana"
   },
   },
@@ -2623,6 +2662,10 @@
   "application/vnd.ecip.rlp": {
   "application/vnd.ecip.rlp": {
     "source": "iana"
     "source": "iana"
   },
   },
+  "application/vnd.eclipse.ditto+json": {
+    "source": "iana",
+    "compressible": true
+  },
   "application/vnd.ecowin.chart": {
   "application/vnd.ecowin.chart": {
     "source": "iana",
     "source": "iana",
     "extensions": ["mag"]
     "extensions": ["mag"]
@@ -2780,6 +2823,10 @@
   "application/vnd.etsi.tsl.der": {
   "application/vnd.etsi.tsl.der": {
     "source": "iana"
     "source": "iana"
   },
   },
+  "application/vnd.eu.kasparian.car+json": {
+    "source": "iana",
+    "compressible": true
+  },
   "application/vnd.eudora.data": {
   "application/vnd.eudora.data": {
     "source": "iana"
     "source": "iana"
   },
   },
@@ -2810,6 +2857,10 @@
   "application/vnd.f-secure.mobile": {
   "application/vnd.f-secure.mobile": {
     "source": "iana"
     "source": "iana"
   },
   },
+  "application/vnd.familysearch.gedcom+zip": {
+    "source": "iana",
+    "compressible": false
+  },
   "application/vnd.fastcopy-disk-image": {
   "application/vnd.fastcopy-disk-image": {
     "source": "iana"
     "source": "iana"
   },
   },
@@ -3100,6 +3151,16 @@
     "source": "iana",
     "source": "iana",
     "extensions": ["les"]
     "extensions": ["les"]
   },
   },
+  "application/vnd.hl7cda+xml": {
+    "source": "iana",
+    "charset": "UTF-8",
+    "compressible": true
+  },
+  "application/vnd.hl7v2+xml": {
+    "source": "iana",
+    "charset": "UTF-8",
+    "compressible": true
+  },
   "application/vnd.hp-hpgl": {
   "application/vnd.hp-hpgl": {
     "source": "iana",
     "source": "iana",
     "extensions": ["hpgl"]
     "extensions": ["hpgl"]
@@ -3513,6 +3574,10 @@
     "source": "iana",
     "source": "iana",
     "compressible": true
     "compressible": true
   },
   },
+  "application/vnd.maxar.archive.3tz+zip": {
+    "source": "iana",
+    "compressible": false
+  },
   "application/vnd.maxmind.maxmind-db": {
   "application/vnd.maxmind.maxmind-db": {
     "source": "iana"
     "source": "iana"
   },
   },
@@ -3842,6 +3907,10 @@
     "source": "iana",
     "source": "iana",
     "extensions": ["taglet"]
     "extensions": ["taglet"]
   },
   },
+  "application/vnd.nacamar.ybrid+json": {
+    "source": "iana",
+    "compressible": true
+  },
   "application/vnd.ncd.control": {
   "application/vnd.ncd.control": {
     "source": "iana"
     "source": "iana"
   },
   },
@@ -5129,6 +5198,10 @@
     "source": "iana",
     "source": "iana",
     "compressible": true
     "compressible": true
   },
   },
+  "application/vnd.syft+json": {
+    "source": "iana",
+    "compressible": true
+  },
   "application/vnd.symbian.install": {
   "application/vnd.symbian.install": {
     "source": "apache",
     "source": "apache",
     "extensions": ["sis","sisx"]
     "extensions": ["sis","sisx"]
@@ -5519,7 +5592,8 @@
   },
   },
   "application/watcherinfo+xml": {
   "application/watcherinfo+xml": {
     "source": "iana",
     "source": "iana",
-    "compressible": true
+    "compressible": true,
+    "extensions": ["wif"]
   },
   },
   "application/webpush-options+json": {
   "application/webpush-options+json": {
     "source": "iana",
     "source": "iana",
@@ -5795,6 +5869,15 @@
     "source": "apache",
     "source": "apache",
     "extensions": ["iso"]
     "extensions": ["iso"]
   },
   },
+  "application/x-iwork-keynote-sffkey": {
+    "extensions": ["key"]
+  },
+  "application/x-iwork-numbers-sffnumbers": {
+    "extensions": ["numbers"]
+  },
+  "application/x-iwork-pages-sffpages": {
+    "extensions": ["pages"]
+  },
   "application/x-java-archive-diff": {
   "application/x-java-archive-diff": {
     "source": "nginx",
     "source": "nginx",
     "extensions": ["jardiff"]
     "extensions": ["jardiff"]
@@ -6930,10 +7013,12 @@
     "extensions": ["apng"]
     "extensions": ["apng"]
   },
   },
   "image/avci": {
   "image/avci": {
-    "source": "iana"
+    "source": "iana",
+    "extensions": ["avci"]
   },
   },
   "image/avcs": {
   "image/avcs": {
-    "source": "iana"
+    "source": "iana",
+    "extensions": ["avcs"]
   },
   },
   "image/avif": {
   "image/avif": {
     "source": "iana",
     "source": "iana",
@@ -7167,6 +7252,7 @@
   },
   },
   "image/vnd.microsoft.icon": {
   "image/vnd.microsoft.icon": {
     "source": "iana",
     "source": "iana",
+    "compressible": true,
     "extensions": ["ico"]
     "extensions": ["ico"]
   },
   },
   "image/vnd.mix": {
   "image/vnd.mix": {
@@ -7176,6 +7262,7 @@
     "source": "iana"
     "source": "iana"
   },
   },
   "image/vnd.ms-dds": {
   "image/vnd.ms-dds": {
+    "compressible": true,
     "extensions": ["dds"]
     "extensions": ["dds"]
   },
   },
   "image/vnd.ms-modi": {
   "image/vnd.ms-modi": {
@@ -7426,6 +7513,14 @@
     "source": "iana",
     "source": "iana",
     "extensions": ["obj"]
     "extensions": ["obj"]
   },
   },
+  "model/step": {
+    "source": "iana"
+  },
+  "model/step+xml": {
+    "source": "iana",
+    "compressible": true,
+    "extensions": ["stpx"]
+  },
   "model/step+zip": {
   "model/step+zip": {
     "source": "iana",
     "source": "iana",
     "compressible": false,
     "compressible": false,
@@ -7857,6 +7952,10 @@
     "source": "iana",
     "source": "iana",
     "charset": "UTF-8"
     "charset": "UTF-8"
   },
   },
+  "text/vnd.familysearch.gedcom": {
+    "source": "iana",
+    "extensions": ["ged"]
+  },
   "text/vnd.ficlab.flt": {
   "text/vnd.ficlab.flt": {
     "source": "iana"
     "source": "iana"
   },
   },
@@ -8126,6 +8225,9 @@
     "source": "apache",
     "source": "apache",
     "extensions": ["jpm","jpgm"]
     "extensions": ["jpm","jpgm"]
   },
   },
+  "video/jxsv": {
+    "source": "iana"
+  },
   "video/mj2": {
   "video/mj2": {
     "source": "iana",
     "source": "iana",
     "extensions": ["mj2","mjp2"]
     "extensions": ["mj2","mjp2"]

+ 1 - 0
express-server/node_modules/mime-db/index.js

@@ -1,6 +1,7 @@
 /*!
 /*!
  * mime-db
  * mime-db
  * Copyright(c) 2014 Jonathan Ong
  * Copyright(c) 2014 Jonathan Ong
+ * Copyright(c) 2015-2022 Douglas Christopher Wilson
  * MIT Licensed
  * MIT Licensed
  */
  */
 
 

+ 19 - 18
express-server/node_modules/mime-db/package.json

@@ -1,27 +1,27 @@
 {
 {
-  "_from": "mime-db@1.49.0",
-  "_id": "mime-db@1.49.0",
+  "_from": "mime-db@1.52.0",
+  "_id": "mime-db@1.52.0",
   "_inBundle": false,
   "_inBundle": false,
-  "_integrity": "sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA==",
+  "_integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
   "_location": "/mime-db",
   "_location": "/mime-db",
   "_phantomChildren": {},
   "_phantomChildren": {},
   "_requested": {
   "_requested": {
     "type": "version",
     "type": "version",
     "registry": true,
     "registry": true,
-    "raw": "mime-db@1.49.0",
+    "raw": "mime-db@1.52.0",
     "name": "mime-db",
     "name": "mime-db",
     "escapedName": "mime-db",
     "escapedName": "mime-db",
-    "rawSpec": "1.49.0",
+    "rawSpec": "1.52.0",
     "saveSpec": null,
     "saveSpec": null,
-    "fetchSpec": "1.49.0"
+    "fetchSpec": "1.52.0"
   },
   },
   "_requiredBy": [
   "_requiredBy": [
     "/mime-types"
     "/mime-types"
   ],
   ],
-  "_resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.49.0.tgz",
-  "_shasum": "f3dfde60c99e9cf3bc9701d687778f537001cbed",
-  "_spec": "mime-db@1.49.0",
-  "_where": "C:\\Users\\brin\\Desktop\\Personnel\\FatboarProject-develop\\FatboarProject\\express-server\\node_modules\\mime-types",
+  "_resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+  "_shasum": "bbabcdc02859f4987301c856e3387ce5ec43bf70",
+  "_spec": "mime-db@1.52.0",
+  "_where": "C:\\FatboarProject\\express-server\\node_modules\\mime-types",
   "bugs": {
   "bugs": {
     "url": "https://github.com/jshttp/mime-db/issues"
     "url": "https://github.com/jshttp/mime-db/issues"
   },
   },
@@ -48,18 +48,19 @@
     "bluebird": "3.7.2",
     "bluebird": "3.7.2",
     "co": "4.6.0",
     "co": "4.6.0",
     "cogent": "1.0.1",
     "cogent": "1.0.1",
-    "csv-parse": "4.16.0",
-    "eslint": "7.31.0",
+    "csv-parse": "4.16.3",
+    "eslint": "7.32.0",
     "eslint-config-standard": "15.0.1",
     "eslint-config-standard": "15.0.1",
-    "eslint-plugin-import": "2.23.4",
-    "eslint-plugin-markdown": "2.2.0",
+    "eslint-plugin-import": "2.25.4",
+    "eslint-plugin-markdown": "2.2.1",
     "eslint-plugin-node": "11.1.0",
     "eslint-plugin-node": "11.1.0",
-    "eslint-plugin-promise": "5.1.0",
+    "eslint-plugin-promise": "5.1.1",
     "eslint-plugin-standard": "4.1.0",
     "eslint-plugin-standard": "4.1.0",
     "gnode": "0.1.2",
     "gnode": "0.1.2",
-    "mocha": "9.0.3",
+    "media-typer": "1.1.0",
+    "mocha": "9.2.1",
     "nyc": "15.1.0",
     "nyc": "15.1.0",
-    "raw-body": "2.4.1",
+    "raw-body": "2.5.0",
     "stream-to-array": "2.3.0"
     "stream-to-array": "2.3.0"
   },
   },
   "engines": {
   "engines": {
@@ -98,5 +99,5 @@
     "update": "npm run fetch && npm run build",
     "update": "npm run fetch && npm run build",
     "version": "node scripts/version-history.js && git add HISTORY.md"
     "version": "node scripts/version-history.js && git add HISTORY.md"
   },
   },
-  "version": "1.49.0"
+  "version": "1.52.0"
 }
 }

+ 22 - 3
express-server/node_modules/mime-types/HISTORY.md

@@ -1,3 +1,25 @@
+2.1.35 / 2022-03-12
+===================
+
+  * deps: mime-db@1.52.0
+    - Add extensions from IANA for more `image/*` types
+    - Add extension `.asc` to `application/pgp-keys`
+    - Add extensions to various XML types
+    - Add new upstream MIME types
+
+2.1.34 / 2021-11-08
+===================
+
+  * deps: mime-db@1.51.0
+    - Add new upstream MIME types
+
+2.1.33 / 2021-10-01
+===================
+
+  * deps: mime-db@1.50.0
+    - Add deprecated iWorks mime types and extensions
+    - Add new upstream MIME types
+
 2.1.32 / 2021-07-27
 2.1.32 / 2021-07-27
 ===================
 ===================
 
 
@@ -11,7 +33,6 @@
   * deps: mime-db@1.48.0
   * deps: mime-db@1.48.0
     - Add extension `.mvt` to `application/vnd.mapbox-vector-tile`
     - Add extension `.mvt` to `application/vnd.mapbox-vector-tile`
     - Add new upstream MIME types
     - Add new upstream MIME types
-    - Mark `text/yaml` as compressible
 
 
 2.1.30 / 2021-04-02
 2.1.30 / 2021-04-02
 ===================
 ===================
@@ -89,7 +110,6 @@
     - Add extension `.nq` to `application/n-quads`
     - Add extension `.nq` to `application/n-quads`
     - Add extension `.nt` to `application/n-triples`
     - Add extension `.nt` to `application/n-triples`
     - Add new upstream MIME types
     - Add new upstream MIME types
-    - Mark `text/less` as compressible
 
 
 2.1.21 / 2018-10-19
 2.1.21 / 2018-10-19
 ===================
 ===================
@@ -342,7 +362,6 @@
 
 
   * deps: mime-db@~1.1.0
   * deps: mime-db@~1.1.0
     - Add new mime types
     - Add new mime types
-    - Add additional compressible
     - Update charsets
     - Update charsets
 
 
 2.0.1 / 2014-09-07
 2.0.1 / 2014-09-07

+ 1 - 1
express-server/node_modules/mime-types/README.md

@@ -103,7 +103,7 @@ A map of extensions by content-type.
 [MIT](LICENSE)
 [MIT](LICENSE)
 
 
 [ci-image]: https://badgen.net/github/checks/jshttp/mime-types/master?label=ci
 [ci-image]: https://badgen.net/github/checks/jshttp/mime-types/master?label=ci
-[ci-url]: https://github.com/jshttp/mime-types/actions?query=workflow%3Aci
+[ci-url]: https://github.com/jshttp/mime-types/actions/workflows/ci.yml
 [coveralls-image]: https://badgen.net/coveralls/c/github/jshttp/mime-types/master
 [coveralls-image]: https://badgen.net/coveralls/c/github/jshttp/mime-types/master
 [coveralls-url]: https://coveralls.io/r/jshttp/mime-types?branch=master
 [coveralls-url]: https://coveralls.io/r/jshttp/mime-types?branch=master
 [node-version-image]: https://badgen.net/npm/node/mime-types
 [node-version-image]: https://badgen.net/npm/node/mime-types

+ 17 - 17
express-server/node_modules/mime-types/package.json

@@ -1,29 +1,29 @@
 {
 {
-  "_from": "mime-types@~2.1.24",
-  "_id": "mime-types@2.1.32",
+  "_from": "mime-types@~2.1.34",
+  "_id": "mime-types@2.1.35",
   "_inBundle": false,
   "_inBundle": false,
-  "_integrity": "sha512-hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A==",
+  "_integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
   "_location": "/mime-types",
   "_location": "/mime-types",
   "_phantomChildren": {},
   "_phantomChildren": {},
   "_requested": {
   "_requested": {
     "type": "range",
     "type": "range",
     "registry": true,
     "registry": true,
-    "raw": "mime-types@~2.1.24",
+    "raw": "mime-types@~2.1.34",
     "name": "mime-types",
     "name": "mime-types",
     "escapedName": "mime-types",
     "escapedName": "mime-types",
-    "rawSpec": "~2.1.24",
+    "rawSpec": "~2.1.34",
     "saveSpec": null,
     "saveSpec": null,
-    "fetchSpec": "~2.1.24"
+    "fetchSpec": "~2.1.34"
   },
   },
   "_requiredBy": [
   "_requiredBy": [
     "/accepts",
     "/accepts",
     "/form-data",
     "/form-data",
     "/type-is"
     "/type-is"
   ],
   ],
-  "_resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.32.tgz",
-  "_shasum": "1d00e89e7de7fe02008db61001d9e02852670fd5",
-  "_spec": "mime-types@~2.1.24",
-  "_where": "C:\\Users\\brin\\Desktop\\Personnel\\FatboarProject-develop\\FatboarProject\\express-server\\node_modules\\accepts",
+  "_resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
+  "_shasum": "381a871b62a734450660ae3deee44813f70d959a",
+  "_spec": "mime-types@~2.1.34",
+  "_where": "C:\\FatboarProject\\express-server\\node_modules\\accepts",
   "bugs": {
   "bugs": {
     "url": "https://github.com/jshttp/mime-types/issues"
     "url": "https://github.com/jshttp/mime-types/issues"
   },
   },
@@ -45,19 +45,19 @@
     }
     }
   ],
   ],
   "dependencies": {
   "dependencies": {
-    "mime-db": "1.49.0"
+    "mime-db": "1.52.0"
   },
   },
   "deprecated": false,
   "deprecated": false,
   "description": "The ultimate javascript content-type utility.",
   "description": "The ultimate javascript content-type utility.",
   "devDependencies": {
   "devDependencies": {
-    "eslint": "7.31.0",
+    "eslint": "7.32.0",
     "eslint-config-standard": "14.1.1",
     "eslint-config-standard": "14.1.1",
-    "eslint-plugin-import": "2.23.4",
-    "eslint-plugin-markdown": "2.2.0",
+    "eslint-plugin-import": "2.25.4",
+    "eslint-plugin-markdown": "2.2.1",
     "eslint-plugin-node": "11.1.0",
     "eslint-plugin-node": "11.1.0",
-    "eslint-plugin-promise": "5.1.0",
+    "eslint-plugin-promise": "5.2.0",
     "eslint-plugin-standard": "4.1.0",
     "eslint-plugin-standard": "4.1.0",
-    "mocha": "9.0.3",
+    "mocha": "9.2.2",
     "nyc": "15.1.0"
     "nyc": "15.1.0"
   },
   },
   "engines": {
   "engines": {
@@ -85,5 +85,5 @@
     "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": "2.1.32"
+  "version": "2.1.35"
 }
 }

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

@@ -21,7 +21,7 @@
   "_resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
   "_resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
   "_shasum": "32cd9e5c64553bd58d19a568af452acff04981b1",
   "_shasum": "32cd9e5c64553bd58d19a568af452acff04981b1",
   "_spec": "mime@1.6.0",
   "_spec": "mime@1.6.0",
-  "_where": "C:\\Users\\brin\\Desktop\\Personnel\\FatboarProject-develop\\FatboarProject\\express-server\\node_modules\\send",
+  "_where": "C:\\FatboarProject\\express-server\\node_modules\\send",
   "author": {
   "author": {
     "name": "Robert Kieffer",
     "name": "Robert Kieffer",
     "email": "robert@broofa.com",
     "email": "robert@broofa.com",

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

@@ -22,7 +22,7 @@
   "_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",
   "_spec": "mkdirp@^1.0.4",
   "_spec": "mkdirp@^1.0.4",
-  "_where": "C:\\Users\\brin\\Desktop\\Personnel\\FatboarProject-develop\\FatboarProject\\express-server",
+  "_where": "C:\\FatboarProject\\express-server",
   "bin": {
   "bin": {
     "mkdirp": "bin/cmd.js"
     "mkdirp": "bin/cmd.js"
   },
   },

+ 3 - 4
express-server/node_modules/ms/package.json

@@ -2,7 +2,7 @@
   "_from": "ms@2.0.0",
   "_from": "ms@2.0.0",
   "_id": "ms@2.0.0",
   "_id": "ms@2.0.0",
   "_inBundle": false,
   "_inBundle": false,
-  "_integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+  "_integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
   "_location": "/ms",
   "_location": "/ms",
   "_phantomChildren": {},
   "_phantomChildren": {},
   "_requested": {
   "_requested": {
@@ -17,13 +17,12 @@
   },
   },
   "_requiredBy": [
   "_requiredBy": [
     "/debug",
     "/debug",
-    "/http-proxy-agent/debug",
-    "/mquery/debug"
+    "/http-proxy-agent/debug"
   ],
   ],
   "_resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
   "_resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
   "_shasum": "5608aeadfc00be6c2901df5f9861788de0d597c8",
   "_shasum": "5608aeadfc00be6c2901df5f9861788de0d597c8",
   "_spec": "ms@2.0.0",
   "_spec": "ms@2.0.0",
-  "_where": "C:\\Users\\brin\\Desktop\\Personnel\\FatboarProject-develop\\FatboarProject\\express-server\\node_modules\\debug",
+  "_where": "C:\\FatboarProject\\express-server\\node_modules\\debug",
   "bugs": {
   "bugs": {
     "url": "https://github.com/zeit/ms/issues"
     "url": "https://github.com/zeit/ms/issues"
   },
   },

+ 5 - 0
express-server/node_modules/negotiator/HISTORY.md

@@ -1,3 +1,8 @@
+0.6.3 / 2022-01-22
+==================
+
+  * Revert "Lazy-load modules from main entry point"
+
 0.6.2 / 2019-04-29
 0.6.2 / 2019-04-29
 ==================
 ==================
 
 

+ 3 - 3
express-server/node_modules/negotiator/README.md

@@ -3,7 +3,7 @@
 [![NPM Version][npm-image]][npm-url]
 [![NPM Version][npm-image]][npm-url]
 [![NPM Downloads][downloads-image]][downloads-url]
 [![NPM Downloads][downloads-image]][downloads-url]
 [![Node.js Version][node-version-image]][node-version-url]
 [![Node.js Version][node-version-image]][node-version-url]
-[![Build Status][travis-image]][travis-url]
+[![Build Status][github-actions-ci-image]][github-actions-ci-url]
 [![Test Coverage][coveralls-image]][coveralls-url]
 [![Test Coverage][coveralls-image]][coveralls-url]
 
 
 An HTTP content negotiator for Node.js
 An HTTP content negotiator for Node.js
@@ -195,9 +195,9 @@ and more.
 [npm-url]: https://npmjs.org/package/negotiator
 [npm-url]: https://npmjs.org/package/negotiator
 [node-version-image]: https://img.shields.io/node/v/negotiator.svg
 [node-version-image]: https://img.shields.io/node/v/negotiator.svg
 [node-version-url]: https://nodejs.org/en/download/
 [node-version-url]: https://nodejs.org/en/download/
-[travis-image]: https://img.shields.io/travis/jshttp/negotiator/master.svg
-[travis-url]: https://travis-ci.org/jshttp/negotiator
 [coveralls-image]: https://img.shields.io/coveralls/jshttp/negotiator/master.svg
 [coveralls-image]: https://img.shields.io/coveralls/jshttp/negotiator/master.svg
 [coveralls-url]: https://coveralls.io/r/jshttp/negotiator?branch=master
 [coveralls-url]: https://coveralls.io/r/jshttp/negotiator?branch=master
 [downloads-image]: https://img.shields.io/npm/dm/negotiator.svg
 [downloads-image]: https://img.shields.io/npm/dm/negotiator.svg
 [downloads-url]: https://npmjs.org/package/negotiator
 [downloads-url]: https://npmjs.org/package/negotiator
+[github-actions-ci-image]: https://img.shields.io/github/workflow/status/jshttp/negotiator/ci/master?label=ci
+[github-actions-ci-url]: https://github.com/jshttp/negotiator/actions/workflows/ci.yml

+ 4 - 46
express-server/node_modules/negotiator/index.js

@@ -8,12 +8,10 @@
 
 
 'use strict';
 'use strict';
 
 
-/**
- * Cached loaded submodules.
- * @private
- */
-
-var modules = Object.create(null);
+var preferredCharsets = require('./lib/charset')
+var preferredEncodings = require('./lib/encoding')
+var preferredLanguages = require('./lib/language')
+var preferredMediaTypes = require('./lib/mediaType')
 
 
 /**
 /**
  * Module exports.
  * Module exports.
@@ -43,7 +41,6 @@ Negotiator.prototype.charset = function charset(available) {
 };
 };
 
 
 Negotiator.prototype.charsets = function charsets(available) {
 Negotiator.prototype.charsets = function charsets(available) {
-  var preferredCharsets = loadModule('charset').preferredCharsets;
   return preferredCharsets(this.request.headers['accept-charset'], available);
   return preferredCharsets(this.request.headers['accept-charset'], available);
 };
 };
 
 
@@ -53,7 +50,6 @@ Negotiator.prototype.encoding = function encoding(available) {
 };
 };
 
 
 Negotiator.prototype.encodings = function encodings(available) {
 Negotiator.prototype.encodings = function encodings(available) {
-  var preferredEncodings = loadModule('encoding').preferredEncodings;
   return preferredEncodings(this.request.headers['accept-encoding'], available);
   return preferredEncodings(this.request.headers['accept-encoding'], available);
 };
 };
 
 
@@ -63,7 +59,6 @@ Negotiator.prototype.language = function language(available) {
 };
 };
 
 
 Negotiator.prototype.languages = function languages(available) {
 Negotiator.prototype.languages = function languages(available) {
-  var preferredLanguages = loadModule('language').preferredLanguages;
   return preferredLanguages(this.request.headers['accept-language'], available);
   return preferredLanguages(this.request.headers['accept-language'], available);
 };
 };
 
 
@@ -73,7 +68,6 @@ Negotiator.prototype.mediaType = function mediaType(available) {
 };
 };
 
 
 Negotiator.prototype.mediaTypes = function mediaTypes(available) {
 Negotiator.prototype.mediaTypes = function mediaTypes(available) {
-  var preferredMediaTypes = loadModule('mediaType').preferredMediaTypes;
   return preferredMediaTypes(this.request.headers.accept, available);
   return preferredMediaTypes(this.request.headers.accept, available);
 };
 };
 
 
@@ -86,39 +80,3 @@ Negotiator.prototype.preferredLanguage = Negotiator.prototype.language;
 Negotiator.prototype.preferredLanguages = Negotiator.prototype.languages;
 Negotiator.prototype.preferredLanguages = Negotiator.prototype.languages;
 Negotiator.prototype.preferredMediaType = Negotiator.prototype.mediaType;
 Negotiator.prototype.preferredMediaType = Negotiator.prototype.mediaType;
 Negotiator.prototype.preferredMediaTypes = Negotiator.prototype.mediaTypes;
 Negotiator.prototype.preferredMediaTypes = Negotiator.prototype.mediaTypes;
-
-/**
- * Load the given module.
- * @private
- */
-
-function loadModule(moduleName) {
-  var module = modules[moduleName];
-
-  if (module !== undefined) {
-    return module;
-  }
-
-  // This uses a switch for static require analysis
-  switch (moduleName) {
-    case 'charset':
-      module = require('./lib/charset');
-      break;
-    case 'encoding':
-      module = require('./lib/encoding');
-      break;
-    case 'language':
-      module = require('./lib/language');
-      break;
-    case 'mediaType':
-      module = require('./lib/mediaType');
-      break;
-    default:
-      throw new Error('Cannot find module \'' + moduleName + '\'');
-  }
-
-  // Store to prevent invoking require()
-  modules[moduleName] = module;
-
-  return module;
-}

+ 3 - 3
express-server/node_modules/negotiator/lib/language.js

@@ -54,9 +54,9 @@ function parseLanguage(str, i) {
   var match = simpleLanguageRegExp.exec(str);
   var match = simpleLanguageRegExp.exec(str);
   if (!match) return null;
   if (!match) return null;
 
 
-  var prefix = match[1],
-    suffix = match[2],
-    full = prefix;
+  var prefix = match[1]
+  var suffix = match[2]
+  var full = prefix
 
 
   if (suffix) full += "-" + suffix;
   if (suffix) full += "-" + suffix;
 
 

+ 18 - 18
express-server/node_modules/negotiator/package.json

@@ -1,27 +1,27 @@
 {
 {
-  "_from": "negotiator@0.6.2",
-  "_id": "negotiator@0.6.2",
+  "_from": "negotiator@0.6.3",
+  "_id": "negotiator@0.6.3",
   "_inBundle": false,
   "_inBundle": false,
-  "_integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==",
+  "_integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
   "_location": "/negotiator",
   "_location": "/negotiator",
   "_phantomChildren": {},
   "_phantomChildren": {},
   "_requested": {
   "_requested": {
     "type": "version",
     "type": "version",
     "registry": true,
     "registry": true,
-    "raw": "negotiator@0.6.2",
+    "raw": "negotiator@0.6.3",
     "name": "negotiator",
     "name": "negotiator",
     "escapedName": "negotiator",
     "escapedName": "negotiator",
-    "rawSpec": "0.6.2",
+    "rawSpec": "0.6.3",
     "saveSpec": null,
     "saveSpec": null,
-    "fetchSpec": "0.6.2"
+    "fetchSpec": "0.6.3"
   },
   },
   "_requiredBy": [
   "_requiredBy": [
     "/accepts"
     "/accepts"
   ],
   ],
-  "_resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
-  "_shasum": "feacf7ccf525a77ae9634436a64883ffeca346fb",
-  "_spec": "negotiator@0.6.2",
-  "_where": "C:\\Users\\brin\\Desktop\\Personnel\\FatboarProject-develop\\FatboarProject\\express-server\\node_modules\\accepts",
+  "_resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
+  "_shasum": "58e323a72fedc0d6f9cd4d31fe49f51479590ccd",
+  "_spec": "negotiator@0.6.3",
+  "_where": "C:\\FatboarProject\\express-server\\node_modules\\accepts",
   "bugs": {
   "bugs": {
     "url": "https://github.com/jshttp/negotiator/issues"
     "url": "https://github.com/jshttp/negotiator/issues"
   },
   },
@@ -44,10 +44,10 @@
   "deprecated": false,
   "deprecated": false,
   "description": "HTTP content negotiation",
   "description": "HTTP content negotiation",
   "devDependencies": {
   "devDependencies": {
-    "eslint": "5.16.0",
-    "eslint-plugin-markdown": "1.0.0",
-    "mocha": "6.1.4",
-    "nyc": "14.0.0"
+    "eslint": "7.32.0",
+    "eslint-plugin-markdown": "2.2.1",
+    "mocha": "9.1.3",
+    "nyc": "15.1.0"
   },
   },
   "engines": {
   "engines": {
     "node": ">= 0.6"
     "node": ">= 0.6"
@@ -75,10 +75,10 @@
     "url": "git+https://github.com/jshttp/negotiator.git"
     "url": "git+https://github.com/jshttp/negotiator.git"
   },
   },
   "scripts": {
   "scripts": {
-    "lint": "eslint --plugin markdown --ext js,md .",
+    "lint": "eslint .",
     "test": "mocha --reporter spec --check-leaks --bail test/",
     "test": "mocha --reporter spec --check-leaks --bail test/",
-    "test-cov": "nyc --reporter=html --reporter=text npm test",
-    "test-travis": "nyc --reporter=text npm test"
+    "test-ci": "nyc --reporter=lcov --reporter=text npm test",
+    "test-cov": "nyc --reporter=html --reporter=text npm test"
   },
   },
-  "version": "0.6.2"
+  "version": "0.6.3"
 }
 }

+ 10 - 0
express-server/node_modules/on-finished/HISTORY.md

@@ -1,3 +1,13 @@
+2.4.1 / 2022-02-22
+==================
+
+  * Fix error on early async hooks implementations
+
+2.4.0 / 2022-02-21
+==================
+
+  * Prevent loss of async hooks context
+
 2.3.0 / 2015-05-26
 2.3.0 / 2015-05-26
 ==================
 ==================
 
 

+ 28 - 20
express-server/node_modules/on-finished/README.md

@@ -1,15 +1,19 @@
 # on-finished
 # on-finished
 
 
-[![NPM Version][npm-image]][npm-url]
-[![NPM Downloads][downloads-image]][downloads-url]
-[![Node.js Version][node-version-image]][node-version-url]
-[![Build Status][travis-image]][travis-url]
-[![Test Coverage][coveralls-image]][coveralls-url]
+[![NPM Version][npm-version-image]][npm-url]
+[![NPM Downloads][npm-downloads-image]][npm-url]
+[![Node.js Version][node-image]][node-url]
+[![Build Status][ci-image]][ci-url]
+[![Coverage Status][coveralls-image]][coveralls-url]
 
 
 Execute a callback when a HTTP request closes, finishes, or errors.
 Execute a callback when a HTTP request closes, finishes, or errors.
 
 
 ## Install
 ## Install
 
 
+This is a [Node.js](https://nodejs.org/en/) module available through the
+[npm registry](https://www.npmjs.com/). Installation is done using the
+[`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally):
+
 ```sh
 ```sh
 $ npm install on-finished
 $ npm install on-finished
 ```
 ```
@@ -32,10 +36,12 @@ with the response, like open files.
 
 
 Listener is invoked as `listener(err, res)`.
 Listener is invoked as `listener(err, res)`.
 
 
+<!-- eslint-disable handle-callback-err -->
+
 ```js
 ```js
 onFinished(res, function (err, res) {
 onFinished(res, function (err, res) {
   // clean up open fds, etc.
   // clean up open fds, etc.
-  // err contains the error is request error'd
+  // err contains the error if request error'd
 })
 })
 ```
 ```
 
 
@@ -51,11 +57,13 @@ after reading the data.
 
 
 Listener is invoked as `listener(err, req)`.
 Listener is invoked as `listener(err, req)`.
 
 
+<!-- eslint-disable handle-callback-err -->
+
 ```js
 ```js
 var data = ''
 var data = ''
 
 
 req.setEncoding('utf8')
 req.setEncoding('utf8')
-res.on('data', function (str) {
+req.on('data', function (str) {
   data += str
   data += str
 })
 })
 
 
@@ -97,7 +105,7 @@ interface**. This means if the `CONNECT` request contains a request entity,
 the request will be considered "finished" even before it has been read.
 the request will be considered "finished" even before it has been read.
 
 
 There is no such thing as a response object to a `CONNECT` request in
 There is no such thing as a response object to a `CONNECT` request in
-Node.js, so there is no support for for one.
+Node.js, so there is no support for one.
 
 
 ### HTTP Upgrade request
 ### HTTP Upgrade request
 
 
@@ -117,7 +125,7 @@ entity, the request will be considered "finished" even before it has been
 read.
 read.
 
 
 There is no such thing as a response object to a `Upgrade` request in
 There is no such thing as a response object to a `Upgrade` request in
-Node.js, so there is no support for for one.
+Node.js, so there is no support for one.
 
 
 ## Example
 ## Example
 
 
@@ -126,13 +134,14 @@ once the response finishes.
 
 
 ```js
 ```js
 var destroy = require('destroy')
 var destroy = require('destroy')
+var fs = require('fs')
 var http = require('http')
 var http = require('http')
 var onFinished = require('on-finished')
 var onFinished = require('on-finished')
 
 
-http.createServer(function onRequest(req, res) {
+http.createServer(function onRequest (req, res) {
   var stream = fs.createReadStream('package.json')
   var stream = fs.createReadStream('package.json')
   stream.pipe(res)
   stream.pipe(res)
-  onFinished(res, function (err) {
+  onFinished(res, function () {
     destroy(stream)
     destroy(stream)
   })
   })
 })
 })
@@ -142,13 +151,12 @@ http.createServer(function onRequest(req, res) {
 
 
 [MIT](LICENSE)
 [MIT](LICENSE)
 
 
-[npm-image]: https://img.shields.io/npm/v/on-finished.svg
-[npm-url]: https://npmjs.org/package/on-finished
-[node-version-image]: https://img.shields.io/node/v/on-finished.svg
-[node-version-url]: http://nodejs.org/download/
-[travis-image]: https://img.shields.io/travis/jshttp/on-finished/master.svg
-[travis-url]: https://travis-ci.org/jshttp/on-finished
-[coveralls-image]: https://img.shields.io/coveralls/jshttp/on-finished/master.svg
+[ci-image]: https://badgen.net/github/checks/jshttp/on-finished/master?label=ci
+[ci-url]: https://github.com/jshttp/on-finished/actions/workflows/ci.yml
+[coveralls-image]: https://badgen.net/coveralls/c/github/jshttp/on-finished/master
 [coveralls-url]: https://coveralls.io/r/jshttp/on-finished?branch=master
 [coveralls-url]: https://coveralls.io/r/jshttp/on-finished?branch=master
-[downloads-image]: https://img.shields.io/npm/dm/on-finished.svg
-[downloads-url]: https://npmjs.org/package/on-finished
+[node-image]: https://badgen.net/npm/node/on-finished
+[node-url]: https://nodejs.org/en/download
+[npm-downloads-image]: https://badgen.net/npm/dm/on-finished
+[npm-url]: https://npmjs.org/package/on-finished
+[npm-version-image]: https://badgen.net/npm/v/on-finished

+ 51 - 13
express-server/node_modules/on-finished/index.js

@@ -20,6 +20,7 @@ module.exports.isFinished = isFinished
  * @private
  * @private
  */
  */
 
 
+var asyncHooks = tryRequireAsyncHooks()
 var first = require('ee-first')
 var first = require('ee-first')
 
 
 /**
 /**
@@ -30,7 +31,7 @@ var first = require('ee-first')
 /* istanbul ignore next */
 /* istanbul ignore next */
 var defer = typeof setImmediate === 'function'
 var defer = typeof setImmediate === 'function'
   ? setImmediate
   ? setImmediate
-  : function(fn){ process.nextTick(fn.bind.apply(fn, arguments)) }
+  : function (fn) { process.nextTick(fn.bind.apply(fn, arguments)) }
 
 
 /**
 /**
  * Invoke callback when the response has finished, useful for
  * Invoke callback when the response has finished, useful for
@@ -42,14 +43,14 @@ var defer = typeof setImmediate === 'function'
  * @public
  * @public
  */
  */
 
 
-function onFinished(msg, listener) {
+function onFinished (msg, listener) {
   if (isFinished(msg) !== false) {
   if (isFinished(msg) !== false) {
     defer(listener, null, msg)
     defer(listener, null, msg)
     return msg
     return msg
   }
   }
 
 
   // attach the listener to the message
   // attach the listener to the message
-  attachListener(msg, listener)
+  attachListener(msg, wrap(listener))
 
 
   return msg
   return msg
 }
 }
@@ -62,7 +63,7 @@ function onFinished(msg, listener) {
  * @public
  * @public
  */
  */
 
 
-function isFinished(msg) {
+function isFinished (msg) {
   var socket = msg.socket
   var socket = msg.socket
 
 
   if (typeof msg.finished === 'boolean') {
   if (typeof msg.finished === 'boolean') {
@@ -87,12 +88,12 @@ function isFinished(msg) {
  * @private
  * @private
  */
  */
 
 
-function attachFinishedListener(msg, callback) {
+function attachFinishedListener (msg, callback) {
   var eeMsg
   var eeMsg
   var eeSocket
   var eeSocket
   var finished = false
   var finished = false
 
 
-  function onFinish(error) {
+  function onFinish (error) {
     eeMsg.cancel()
     eeMsg.cancel()
     eeSocket.cancel()
     eeSocket.cancel()
 
 
@@ -103,7 +104,7 @@ function attachFinishedListener(msg, callback) {
   // finished on first message event
   // finished on first message event
   eeMsg = eeSocket = first([[msg, 'end', 'finish']], onFinish)
   eeMsg = eeSocket = first([[msg, 'end', 'finish']], onFinish)
 
 
-  function onSocket(socket) {
+  function onSocket (socket) {
     // remove listener
     // remove listener
     msg.removeListener('socket', onSocket)
     msg.removeListener('socket', onSocket)
 
 
@@ -124,7 +125,7 @@ function attachFinishedListener(msg, callback) {
   msg.on('socket', onSocket)
   msg.on('socket', onSocket)
 
 
   if (msg.socket === undefined) {
   if (msg.socket === undefined) {
-    // node.js 0.8 patch
+    // istanbul ignore next: node.js 0.8 patch
     patchAssignSocket(msg, onSocket)
     patchAssignSocket(msg, onSocket)
   }
   }
 }
 }
@@ -137,7 +138,7 @@ function attachFinishedListener(msg, callback) {
  * @private
  * @private
  */
  */
 
 
-function attachListener(msg, listener) {
+function attachListener (msg, listener) {
   var attached = msg.__onFinished
   var attached = msg.__onFinished
 
 
   // create a private single listener with queue
   // create a private single listener with queue
@@ -157,8 +158,8 @@ function attachListener(msg, listener) {
  * @private
  * @private
  */
  */
 
 
-function createListener(msg) {
-  function listener(err) {
+function createListener (msg) {
+  function listener (err) {
     if (msg.__onFinished === listener) msg.__onFinished = null
     if (msg.__onFinished === listener) msg.__onFinished = null
     if (!listener.queue) return
     if (!listener.queue) return
 
 
@@ -183,14 +184,51 @@ function createListener(msg) {
  * @private
  * @private
  */
  */
 
 
-function patchAssignSocket(res, callback) {
+// istanbul ignore next: node.js 0.8 patch
+function patchAssignSocket (res, callback) {
   var assignSocket = res.assignSocket
   var assignSocket = res.assignSocket
 
 
   if (typeof assignSocket !== 'function') return
   if (typeof assignSocket !== 'function') return
 
 
   // res.on('socket', callback) is broken in 0.8
   // res.on('socket', callback) is broken in 0.8
-  res.assignSocket = function _assignSocket(socket) {
+  res.assignSocket = function _assignSocket (socket) {
     assignSocket.call(this, socket)
     assignSocket.call(this, socket)
     callback(socket)
     callback(socket)
   }
   }
 }
 }
+
+/**
+ * Try to require async_hooks
+ * @private
+ */
+
+function tryRequireAsyncHooks () {
+  try {
+    return require('async_hooks')
+  } catch (e) {
+    return {}
+  }
+}
+
+/**
+ * Wrap function with async resource, if possible.
+ * AsyncResource.bind static method backported.
+ * @private
+ */
+
+function wrap (fn) {
+  var res
+
+  // create anonymous resource
+  if (asyncHooks.AsyncResource) {
+    res = new asyncHooks.AsyncResource(fn.name || 'bound-anonymous-fn')
+  }
+
+  // incompatible node.js
+  if (!res || !res.runInAsyncScope) {
+    return fn
+  }
+
+  // return bound function
+  return res.runInAsyncScope.bind(res, fn, null)
+}

+ 24 - 16
express-server/node_modules/on-finished/package.json

@@ -1,19 +1,19 @@
 {
 {
-  "_from": "on-finished@~2.3.0",
-  "_id": "on-finished@2.3.0",
+  "_from": "on-finished@2.4.1",
+  "_id": "on-finished@2.4.1",
   "_inBundle": false,
   "_inBundle": false,
-  "_integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
+  "_integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
   "_location": "/on-finished",
   "_location": "/on-finished",
   "_phantomChildren": {},
   "_phantomChildren": {},
   "_requested": {
   "_requested": {
-    "type": "range",
+    "type": "version",
     "registry": true,
     "registry": true,
-    "raw": "on-finished@~2.3.0",
+    "raw": "on-finished@2.4.1",
     "name": "on-finished",
     "name": "on-finished",
     "escapedName": "on-finished",
     "escapedName": "on-finished",
-    "rawSpec": "~2.3.0",
+    "rawSpec": "2.4.1",
     "saveSpec": null,
     "saveSpec": null,
-    "fetchSpec": "~2.3.0"
+    "fetchSpec": "2.4.1"
   },
   },
   "_requiredBy": [
   "_requiredBy": [
     "/api-express-exporter/express-prom-bundle",
     "/api-express-exporter/express-prom-bundle",
@@ -23,10 +23,10 @@
     "/finalhandler",
     "/finalhandler",
     "/send"
     "/send"
   ],
   ],
-  "_resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
-  "_shasum": "20f1336481b083cd75337992a16971aa2d906947",
-  "_spec": "on-finished@~2.3.0",
-  "_where": "C:\\Users\\brin\\Desktop\\Personnel\\FatboarProject-develop\\FatboarProject\\express-server\\node_modules\\express",
+  "_resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
+  "_shasum": "58c8c44116e54845ad57f14ab10b03533184ac3f",
+  "_spec": "on-finished@2.4.1",
+  "_where": "C:\\FatboarProject\\express-server\\node_modules\\express",
   "bugs": {
   "bugs": {
     "url": "https://github.com/jshttp/on-finished/issues"
     "url": "https://github.com/jshttp/on-finished/issues"
   },
   },
@@ -48,8 +48,15 @@
   "deprecated": false,
   "deprecated": false,
   "description": "Execute a callback when a request closes, finishes, or errors",
   "description": "Execute a callback when a request closes, finishes, or errors",
   "devDependencies": {
   "devDependencies": {
-    "istanbul": "0.3.9",
-    "mocha": "2.2.5"
+    "eslint": "7.32.0",
+    "eslint-config-standard": "14.1.1",
+    "eslint-plugin-import": "2.25.4",
+    "eslint-plugin-markdown": "2.2.1",
+    "eslint-plugin-node": "11.1.0",
+    "eslint-plugin-promise": "5.2.0",
+    "eslint-plugin-standard": "4.1.0",
+    "mocha": "9.2.1",
+    "nyc": "15.1.0"
   },
   },
   "engines": {
   "engines": {
     "node": ">= 0.8"
     "node": ">= 0.8"
@@ -67,9 +74,10 @@
     "url": "git+https://github.com/jshttp/on-finished.git"
     "url": "git+https://github.com/jshttp/on-finished.git"
   },
   },
   "scripts": {
   "scripts": {
+    "lint": "eslint .",
     "test": "mocha --reporter spec --bail --check-leaks test/",
     "test": "mocha --reporter spec --bail --check-leaks test/",
-    "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/",
-    "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/"
+    "test-ci": "nyc --reporter=lcovonly --reporter=text npm test",
+    "test-cov": "nyc --reporter=html --reporter=text npm test"
   },
   },
-  "version": "2.3.0"
+  "version": "2.4.1"
 }
 }

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

@@ -23,7 +23,7 @@
   "_resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
   "_resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
   "_shasum": "9da19e7bee8d12dff0513ed5b76957793bc2e8d4",
   "_shasum": "9da19e7bee8d12dff0513ed5b76957793bc2e8d4",
   "_spec": "parseurl@~1.3.3",
   "_spec": "parseurl@~1.3.3",
-  "_where": "C:\\Users\\brin\\Desktop\\Personnel\\FatboarProject-develop\\FatboarProject\\express-server\\node_modules\\express",
+  "_where": "C:\\FatboarProject\\express-server\\node_modules\\express",
   "bugs": {
   "bugs": {
     "url": "https://github.com/pillarjs/parseurl/issues"
     "url": "https://github.com/pillarjs/parseurl/issues"
   },
   },

+ 2 - 2
express-server/node_modules/path-to-regexp/package.json

@@ -2,7 +2,7 @@
   "_from": "path-to-regexp@0.1.7",
   "_from": "path-to-regexp@0.1.7",
   "_id": "path-to-regexp@0.1.7",
   "_id": "path-to-regexp@0.1.7",
   "_inBundle": false,
   "_inBundle": false,
-  "_integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=",
+  "_integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==",
   "_location": "/path-to-regexp",
   "_location": "/path-to-regexp",
   "_phantomChildren": {},
   "_phantomChildren": {},
   "_requested": {
   "_requested": {
@@ -21,7 +21,7 @@
   "_resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
   "_resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
   "_shasum": "df604178005f522f15eb4490e7247a1bfaa67f8c",
   "_shasum": "df604178005f522f15eb4490e7247a1bfaa67f8c",
   "_spec": "path-to-regexp@0.1.7",
   "_spec": "path-to-regexp@0.1.7",
-  "_where": "C:\\Users\\brin\\Desktop\\Personnel\\FatboarProject-develop\\FatboarProject\\express-server\\node_modules\\express",
+  "_where": "C:\\FatboarProject\\express-server\\node_modules\\express",
   "bugs": {
   "bugs": {
     "url": "https://github.com/component/path-to-regexp/issues"
     "url": "https://github.com/component/path-to-regexp/issues"
   },
   },

+ 6 - 6
express-server/node_modules/proxy-addr/package.json

@@ -1,5 +1,5 @@
 {
 {
-  "_from": "proxy-addr@~2.0.5",
+  "_from": "proxy-addr@~2.0.7",
   "_id": "proxy-addr@2.0.7",
   "_id": "proxy-addr@2.0.7",
   "_inBundle": false,
   "_inBundle": false,
   "_integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
   "_integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
@@ -8,20 +8,20 @@
   "_requested": {
   "_requested": {
     "type": "range",
     "type": "range",
     "registry": true,
     "registry": true,
-    "raw": "proxy-addr@~2.0.5",
+    "raw": "proxy-addr@~2.0.7",
     "name": "proxy-addr",
     "name": "proxy-addr",
     "escapedName": "proxy-addr",
     "escapedName": "proxy-addr",
-    "rawSpec": "~2.0.5",
+    "rawSpec": "~2.0.7",
     "saveSpec": null,
     "saveSpec": null,
-    "fetchSpec": "~2.0.5"
+    "fetchSpec": "~2.0.7"
   },
   },
   "_requiredBy": [
   "_requiredBy": [
     "/express"
     "/express"
   ],
   ],
   "_resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
   "_resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
   "_shasum": "f19fe69ceab311eeb94b42e70e8c2070f9ba1025",
   "_shasum": "f19fe69ceab311eeb94b42e70e8c2070f9ba1025",
-  "_spec": "proxy-addr@~2.0.5",
-  "_where": "C:\\Users\\brin\\Desktop\\Personnel\\FatboarProject-develop\\FatboarProject\\express-server\\node_modules\\express",
+  "_spec": "proxy-addr@~2.0.7",
+  "_where": "C:\\FatboarProject\\express-server\\node_modules\\express",
   "author": {
   "author": {
     "name": "Douglas Christopher Wilson",
     "name": "Douglas Christopher Wilson",
     "email": "doug@somethingdoug.com"
     "email": "doug@somethingdoug.com"

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

@@ -8,10 +8,14 @@ charset = utf-8
 trim_trailing_whitespace = true
 trim_trailing_whitespace = true
 insert_final_newline = true
 insert_final_newline = true
 max_line_length = 160
 max_line_length = 160
+quote_type = single
 
 
 [test/*]
 [test/*]
 max_line_length = off
 max_line_length = off
 
 
+[LICENSE.md]
+indent_size = off
+
 [*.md]
 [*.md]
 max_line_length = off
 max_line_length = off
 
 
@@ -28,3 +32,9 @@ indent_size = 2
 [LICENSE]
 [LICENSE]
 indent_size = 2
 indent_size = 2
 max_line_length = off
 max_line_length = off
+
+[coverage/**/*]
+indent_size = off
+indent_style = off
+indent = off
+max_line_length = off

+ 0 - 1
express-server/node_modules/qs/.eslintignore

@@ -1 +0,0 @@
-dist

+ 21 - 4
express-server/node_modules/qs/.eslintrc

@@ -3,19 +3,36 @@
 
 
     "extends": "@ljharb",
     "extends": "@ljharb",
 
 
+    "ignorePatterns": [
+        "dist/",
+    ],
+
     "rules": {
     "rules": {
         "complexity": 0,
         "complexity": 0,
         "consistent-return": 1,
         "consistent-return": 1,
-		"func-name-matching": 0,
+        "func-name-matching": 0,
         "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, 14],
+        "max-params": [2, 15],
         "max-statements": [2, 52],
         "max-statements": [2, 52],
         "multiline-comment-style": 0,
         "multiline-comment-style": 0,
         "no-continue": 1,
         "no-continue": 1,
         "no-magic-numbers": 0,
         "no-magic-numbers": 0,
         "no-restricted-syntax": [2, "BreakStatement", "DebuggerStatement", "ForInStatement", "LabeledStatement", "WithStatement"],
         "no-restricted-syntax": [2, "BreakStatement", "DebuggerStatement", "ForInStatement", "LabeledStatement", "WithStatement"],
-        "operator-linebreak": [2, "before"],
-    }
+    },
+
+    "overrides": [
+        {
+            "files": "test/**",
+            "rules": {
+                "function-paren-newline": 0,
+                "max-lines-per-function": 0,
+                "max-statements": 0,
+                "no-buffer-constructor": 0,
+                "no-extend-native": 0,
+                "no-throw-literal": 0,
+            }
+        }
+    ]
 }
 }

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

@@ -1,3 +1,135 @@
+## **6.10.3**
+- [Fix] `parse`: ignore `__proto__` keys (#428)
+- [Robustness] `stringify`: avoid relying on a global `undefined` (#427)
+- [actions] reuse common workflows
+- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `object-inspect`, `tape`
+
+## **6.10.2**
+- [Fix] `stringify`: actually fix cyclic references (#426)
+- [Fix] `stringify`: avoid encoding arrayformat comma when `encodeValuesOnly = true` (#424)
+- [readme] remove travis badge; add github actions/codecov badges; update URLs
+- [Docs] add note and links for coercing primitive values (#408)
+- [actions] update codecov uploader
+- [actions] update workflows
+- [Tests] clean up stringify tests slightly
+- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `object-inspect`, `safe-publish-latest`, `tape`
+
+## **6.10.1**
+- [Fix] `stringify`: avoid exception on repeated object values (#402)
+
+## **6.10.0**
+- [New] `stringify`: throw on cycles, instead of an infinite loop (#395, #394, #393)
+- [New] `parse`: add `allowSparse` option for collapsing arrays with missing indices (#312)
+- [meta] fix README.md (#399)
+- [meta] only run `npm run dist` in publish, not install
+- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `has-symbols`, `tape`
+- [Tests] fix tests on node v0.6
+- [Tests] use `ljharb/actions/node/install` instead of `ljharb/actions/node/run`
+- [Tests] Revert "[meta] ignore eclint transitive audit warning"
+
+## **6.9.6**
+- [Fix] restore `dist` dir; mistakenly removed in d4f6c32
+
+## **6.9.5**
+- [Fix] `stringify`: do not encode parens for RFC1738
+- [Fix] `stringify`: fix arrayFormat comma with empty array/objects (#350)
+- [Refactor] `format`: remove `util.assign` call
+- [meta] add "Allow Edits" workflow; update rebase workflow
+- [actions] switch Automatic Rebase workflow to `pull_request_target` event
+- [Tests] `stringify`: add tests for #378
+- [Tests] migrate tests to Github Actions
+- [Tests] run `nyc` on all tests; use `tape` runner
+- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `browserify`, `mkdirp`, `object-inspect`, `tape`; add `aud`
+
+## **6.9.4**
+- [Fix] `stringify`: when `arrayFormat` is `comma`, respect `serializeDate` (#364)
+- [Refactor] `stringify`: reduce branching (part of #350)
+- [Refactor] move `maybeMap` to `utils`
+- [Dev Deps] update `browserify`, `tape`
+
+## **6.9.3**
+- [Fix] proper comma parsing of URL-encoded commas (#361)
+- [Fix] parses comma delimited array while having percent-encoded comma treated as normal text (#336)
+
+## **6.9.2**
+- [Fix] `parse`: Fix parsing array from object with `comma` true (#359)
+- [Fix] `parse`: throw a TypeError instead of an Error for bad charset (#349)
+- [meta] ignore eclint transitive audit warning
+- [meta] fix indentation in package.json
+- [meta] add tidelift marketing copy
+- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `object-inspect`, `has-symbols`, `tape`, `mkdirp`, `iconv-lite`
+- [actions] add automatic rebasing / merge commit blocking
+
+## **6.9.1**
+- [Fix] `parse`: with comma true, handle field that holds an array of arrays (#335)
+- [Fix] `parse`: with comma true, do not split non-string values (#334)
+- [meta] add `funding` field
+- [Dev Deps] update `eslint`, `@ljharb/eslint-config`
+- [Tests] use shared travis-ci config
+
+## **6.9.0**
+- [New] `parse`/`stringify`: Pass extra key/value argument to `decoder` (#333)
+- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `evalmd`
+- [Tests] `parse`: add passing `arrayFormat` tests
+- [Tests] add `posttest` using `npx aud` to run `npm audit` without a lockfile
+- [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
+
+## **6.8.2**
+- [Fix] proper comma parsing of URL-encoded commas (#361)
+- [Fix] parses comma delimited array while having percent-encoded comma treated as normal text (#336)
+
+## **6.8.1**
+- [Fix] `parse`: Fix parsing array from object with `comma` true (#359)
+- [Fix] `parse`: throw a TypeError instead of an Error for bad charset (#349)
+- [Fix] `parse`: with comma true, handle field that holds an array of arrays (#335)
+- [fix] `parse`: with comma true, do not split non-string values (#334)
+- [meta] add tidelift marketing copy
+- [meta] add `funding` field
+- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `tape`, `safe-publish-latest`, `evalmd`, `has-symbols`, `iconv-lite`, `mkdirp`, `object-inspect`
+- [Tests] `parse`: add passing `arrayFormat` tests
+- [Tests] use shared travis-ci configs
+- [Tests] `Buffer.from` in node v5.0-v5.9 and v4.0-v4.4 requires a TypedArray
+- [actions] add automatic rebasing / merge commit blocking
+
+## **6.8.0**
+- [New] add `depth=false` to preserve the original key; [Fix] `depth=0` should preserve the original key (#326)
+- [New] [Fix] stringify symbols and bigints
+- [Fix] ensure node 0.12 can stringify Symbols
+- [Fix] fix for an impossible situation: when the formatter is called with a non-string value
+- [Refactor] `formats`: tiny bit of cleanup.
+- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `browserify`, `safe-publish-latest`, `iconv-lite`, `tape`
+- [Tests] add tests for `depth=0` and `depth=false` behavior, both current and intuitive/intended (#326)
+- [Tests] use `eclint` instead of `editorconfig-tools`
+- [docs] readme: add security note
+- [meta] add github sponsorship
+- [meta] add FUNDING.yml
+- [meta] Clean up license text so it’s properly detected as BSD-3-Clause
+
+## **6.7.2**
+- [Fix] proper comma parsing of URL-encoded commas (#361)
+- [Fix] parses comma delimited array while having percent-encoded comma treated as normal text (#336)
+
+## **6.7.1**
+- [Fix] `parse`: Fix parsing array from object with `comma` true (#359)
+- [Fix] `parse`: with comma true, handle field that holds an array of arrays (#335)
+- [fix] `parse`: with comma true, do not split non-string values (#334)
+- [Fix] `parse`: throw a TypeError instead of an Error for bad charset (#349)
+- [Fix] fix for an impossible situation: when the formatter is called with a non-string value
+- [Refactor] `formats`: tiny bit of cleanup.
+- readme: add security note
+- [meta] add tidelift marketing copy
+- [meta] add `funding` field
+- [meta] add FUNDING.yml
+- [meta] Clean up license text so it’s properly detected as BSD-3-Clause
+- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `tape`, `safe-publish-latest`, `evalmd`, `iconv-lite`, `mkdirp`, `object-inspect`, `browserify`
+- [Tests] `parse`: add passing `arrayFormat` tests
+- [Tests] use shared travis-ci configs
+- [Tests] `Buffer.from` in node v5.0-v5.9 and v4.0-v4.4 requires a TypedArray
+- [Tests] add tests for `depth=0` and `depth=false` behavior, both current and intuitive/intended
+- [Tests] use `eclint` instead of `editorconfig-tools`
+- [actions] add automatic rebasing / merge commit blocking
+
 ## **6.7.0**
 ## **6.7.0**
 - [New] `stringify`/`parse`: add `comma` as an `arrayFormat` option (#276, #219)
 - [New] `stringify`/`parse`: add `comma` as an `arrayFormat` option (#276, #219)
 - [Fix] correctly parse nested arrays (#212)
 - [Fix] correctly parse nested arrays (#212)

+ 0 - 28
express-server/node_modules/qs/LICENSE

@@ -1,28 +0,0 @@
-Copyright (c) 2014 Nathan LaFreniere and other contributors.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-    * Redistributions of source code must retain the above copyright
-      notice, this list of conditions and the following disclaimer.
-    * Redistributions in binary form must reproduce the above copyright
-      notice, this list of conditions and the following disclaimer in the
-      documentation and/or other materials provided with the distribution.
-    * The names of any contributors may not be used to endorse or promote
-      products derived from this software without specific prior written
-      permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS AND CONTRIBUTORS BE LIABLE FOR ANY
-DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-                                  *   *   *
-
-The complete list of contributors can be found at: https://github.com/hapijs/qs/graphs/contributors

+ 0 - 0
express-server/node_modules/qs/README.md


Některé soubory nejsou zobrazeny, neboť je v těchto rozdílových datech změněno mnoho souborů