formation 3 年之前
父节点
当前提交
c540df3831
共有 100 个文件被更改,包括 1500 次插入2112 次删除
  1. 2 2
      express-server/index.js
  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. 0 76
      express-server/node_modules/camelcase/index.js
  16. 0 9
      express-server/node_modules/camelcase/license
  17. 0 75
      express-server/node_modules/camelcase/package.json
  18. 0 99
      express-server/node_modules/camelcase/readme.md
  19. 5 0
      express-server/node_modules/content-disposition/HISTORY.md
  20. 3 9
      express-server/node_modules/content-disposition/README.md
  21. 1 1
      express-server/node_modules/content-disposition/index.js
  22. 23 23
      express-server/node_modules/content-disposition/package.json
  23. 1 1
      express-server/node_modules/content-type/package.json
  24. 2 2
      express-server/node_modules/cookie-signature/package.json
  25. 19 0
      express-server/node_modules/cookie/HISTORY.md
  26. 73 24
      express-server/node_modules/cookie/README.md
  27. 91 19
      express-server/node_modules/cookie/index.js
  28. 22 18
      express-server/node_modules/cookie/package.json
  29. 2 3
      express-server/node_modules/debug/package.json
  30. 7 0
      express-server/node_modules/depd/History.md
  31. 1 1
      express-server/node_modules/depd/LICENSE
  32. 8 8
      express-server/node_modules/depd/Readme.md
  33. 29 13
      express-server/node_modules/depd/index.js
  34. 0 103
      express-server/node_modules/depd/lib/compat/callsite-tostring.js
  35. 0 22
      express-server/node_modules/depd/lib/compat/event-listener-count.js
  36. 0 79
      express-server/node_modules/depd/lib/compat/index.js
  37. 24 20
      express-server/node_modules/depd/package.json
  38. 1 0
      express-server/node_modules/destroy/LICENSE
  39. 15 12
      express-server/node_modules/destroy/README.md
  40. 147 13
      express-server/node_modules/destroy/index.js
  41. 28 16
      express-server/node_modules/destroy/package.json
  42. 2 2
      express-server/node_modules/ee-first/package.json
  43. 2 2
      express-server/node_modules/encodeurl/package.json
  44. 2 2
      express-server/node_modules/escape-html/package.json
  45. 2 2
      express-server/node_modules/etag/package.json
  46. 102 0
      express-server/node_modules/express/History.md
  47. 43 32
      express-server/node_modules/express/Readme.md
  48. 19 2
      express-server/node_modules/express/lib/application.js
  49. 1 1
      express-server/node_modules/express/lib/request.js
  50. 57 30
      express-server/node_modules/express/lib/response.js
  51. 25 14
      express-server/node_modules/express/lib/router/index.js
  52. 9 0
      express-server/node_modules/express/lib/router/route.js
  53. 5 7
      express-server/node_modules/express/lib/utils.js
  54. 1 1
      express-server/node_modules/express/lib/view.js
  55. 37 36
      express-server/node_modules/express/package.json
  56. 8 0
      express-server/node_modules/finalhandler/HISTORY.md
  57. 1 1
      express-server/node_modules/finalhandler/LICENSE
  58. 5 6
      express-server/node_modules/finalhandler/README.md
  59. 8 3
      express-server/node_modules/finalhandler/index.js
  60. 29 28
      express-server/node_modules/finalhandler/package.json
  61. 1 1
      express-server/node_modules/forwarded/package.json
  62. 2 2
      express-server/node_modules/fresh/package.json
  63. 31 0
      express-server/node_modules/http-errors/HISTORY.md
  64. 14 8
      express-server/node_modules/http-errors/README.md
  65. 49 26
      express-server/node_modules/http-errors/index.js
  66. 31 29
      express-server/node_modules/http-errors/package.json
  67. 1 1
      express-server/node_modules/iconv-lite/package.json
  68. 2 0
      express-server/node_modules/inherits/inherits.js
  69. 18 14
      express-server/node_modules/inherits/inherits_browser.js
  70. 15 13
      express-server/node_modules/inherits/package.json
  71. 1 1
      express-server/node_modules/ipaddr.js/package.json
  72. 2 2
      express-server/node_modules/media-typer/package.json
  73. 2 2
      express-server/node_modules/merge-descriptors/package.json
  74. 2 2
      express-server/node_modules/methods/package.json
  75. 21 0
      express-server/node_modules/mime-db/HISTORY.md
  76. 19 18
      express-server/node_modules/mime-db/LICENSE
  77. 1 1
      express-server/node_modules/mime-db/README.md
  78. 108 6
      express-server/node_modules/mime-db/db.json
  79. 1 0
      express-server/node_modules/mime-db/index.js
  80. 19 18
      express-server/node_modules/mime-db/package.json
  81. 22 3
      express-server/node_modules/mime-types/HISTORY.md
  82. 1 1
      express-server/node_modules/mime-types/README.md
  83. 17 17
      express-server/node_modules/mime-types/package.json
  84. 1 1
      express-server/node_modules/mime/package.json
  85. 0 8
      express-server/node_modules/minimist/.travis.yml
  86. 0 18
      express-server/node_modules/minimist/LICENSE
  87. 0 2
      express-server/node_modules/minimist/example/parse.js
  88. 0 245
      express-server/node_modules/minimist/index.js
  89. 0 73
      express-server/node_modules/minimist/package.json
  90. 0 95
      express-server/node_modules/minimist/readme.markdown
  91. 0 32
      express-server/node_modules/minimist/test/all_bool.js
  92. 0 178
      express-server/node_modules/minimist/test/bool.js
  93. 0 31
      express-server/node_modules/minimist/test/dash.js
  94. 0 35
      express-server/node_modules/minimist/test/default_bool.js
  95. 0 22
      express-server/node_modules/minimist/test/dotted.js
  96. 0 16
      express-server/node_modules/minimist/test/kv_short.js
  97. 0 31
      express-server/node_modules/minimist/test/long.js
  98. 0 36
      express-server/node_modules/minimist/test/num.js
  99. 0 197
      express-server/node_modules/minimist/test/parse.js
  100. 0 0
      express-server/node_modules/minimist/test/parse_modified.js

+ 2 - 2
express-server/index.js

@@ -2,7 +2,7 @@ const express = require('express');
 const bodyparser = require('body-parser');
 const passport = require('passport');
 const mongoose = require('mongoose');
-//const cors = require('cors');
+const cors = require('cors');
 // const config = require('./config/db.config');
 
 
@@ -37,7 +37,7 @@ app.use(metricsMiddleware);
 
 //metrics
 app.use(makeApiMiddleware()); 
-//app.use(cors());
+app.use(cors());
 
 app.get("/api", (req, res) => {
     res.status(200).send("Api Works.");

+ 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
 ==================
 

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

@@ -3,7 +3,7 @@
 [![NPM Version][npm-version-image]][npm-url]
 [![NPM Downloads][npm-downloads-image]][npm-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]
 
 Higher level content negotiation based on [negotiator](https://www.npmjs.com/package/negotiator).
@@ -29,8 +29,6 @@ $ npm install accepts
 
 ## API
 
-<!-- eslint-disable no-unused-vars -->
-
 ```js
 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-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-url]: https://nodejs.org/en/download
 [npm-downloads-image]: https://badgen.net/npm/dm/accepts
 [npm-url]: https://npmjs.org/package/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,
-  "_integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==",
+  "_integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
   "_location": "/accepts",
   "_phantomChildren": {},
   "_requested": {
     "type": "range",
     "registry": true,
-    "raw": "accepts@~1.3.7",
+    "raw": "accepts@~1.3.8",
     "name": "accepts",
     "escapedName": "accepts",
-    "rawSpec": "~1.3.7",
+    "rawSpec": "~1.3.8",
     "saveSpec": null,
-    "fetchSpec": "~1.3.7"
+    "fetchSpec": "~1.3.8"
   },
   "_requiredBy": [
     "/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": {
     "url": "https://github.com/jshttp/accepts/issues"
   },
@@ -38,22 +38,22 @@
     }
   ],
   "dependencies": {
-    "mime-types": "~2.1.24",
-    "negotiator": "0.6.2"
+    "mime-types": "~2.1.34",
+    "negotiator": "0.6.3"
   },
   "deprecated": false,
   "description": "Higher-level content negotiation",
   "devDependencies": {
     "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": {
     "node": ">= 0.6"
@@ -77,10 +77,10 @@
     "url": "git+https://github.com/jshttp/accepts.git"
   },
   "scripts": {
-    "lint": "eslint --plugin markdown --ext js,md .",
+    "lint": "eslint .",
     "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",
   "_id": "array-flatten@1.1.1",
   "_inBundle": false,
-  "_integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=",
+  "_integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==",
   "_location": "/array-flatten",
   "_phantomChildren": {},
   "_requested": {
@@ -21,7 +21,7 @@
   "_resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
   "_shasum": "9a5f699051b1e7073328f2a008968b64ea2955d2",
   "_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": {
     "name": "Blake Embrey",
     "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
 ===================
 

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

@@ -2,7 +2,7 @@
 
 [![NPM Version][npm-image]][npm-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]
 
 Node.js body parsing middleware.
@@ -49,8 +49,6 @@ $ npm install body-parser
 
 ## API
 
-<!-- eslint-disable no-unused-vars -->
-
 ```js
 var bodyParser = require('body-parser')
 ```
@@ -281,14 +279,15 @@ encoding of the request. The parsing can be aborted by throwing an error.
 
 ## 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.
 
 ### 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 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
 
 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
 `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
 
 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-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-url]: https://coveralls.io/r/expressjs/body-parser?branch=master
 [downloads-image]: https://img.shields.io/npm/dm/body-parser.svg
 [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 destroy = require('destroy')
 var getBody = require('raw-body')
 var iconv = require('iconv-lite')
 var onFinished = require('on-finished')
+var unpipe = require('unpipe')
 var zlib = require('zlib')
 
 /**
@@ -89,9 +91,14 @@ function read (req, res, next, parse, debug, options) {
         _error = createError(400, error)
       }
 
+      // unpipe from stream and destroy
+      if (stream !== req) {
+        unpipe(req)
+        destroy(stream, true)
+      }
+
       // read off entire request
-      stream.resume()
-      onFinished(req, function onfinished () {
+      dump(req, function onfinished () {
         next(createError(400, _error))
       })
       return
@@ -179,3 +186,20 @@ function contentstream (req, debug, inflate) {
 
   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
  */
 
-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.
@@ -122,7 +122,7 @@ function json (options) {
 
     // assert charset per RFC 7159 sec 8.1
     var charset = getCharset(req) || 'utf-8'
-    if (charset.substr(0, 4) !== 'utf-') {
+    if (charset.slice(0, 4) !== 'utf-') {
       debug('invalid charset')
       next(createError(415, 'unsupported charset "' + charset.toUpperCase() + '"', {
         charset: charset,
@@ -152,7 +152,9 @@ function json (options) {
 
 function createStrictSyntaxError (str, char) {
   var index = str.indexOf(char)
-  var partial = str.substring(0, index) + '#'
+  var partial = index !== -1
+    ? str.substring(0, index) + '#'
+    : ''
 
   try {
     JSON.parse(partial); /* istanbul ignore next */ throw new SyntaxError('strict violation')
@@ -173,7 +175,11 @@ function createStrictSyntaxError (str, char) {
  */
 
 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",
-  "_id": "body-parser@1.19.0",
+  "_id": "body-parser@1.20.0",
   "_inBundle": false,
-  "_integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==",
+  "_integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==",
   "_location": "/body-parser",
   "_phantomChildren": {},
   "_requested": {
@@ -19,10 +19,10 @@
     "/",
     "/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",
-  "_where": "C:\\Users\\brin\\Desktop\\Personnel\\FatboarProject-develop\\FatboarProject\\express-server",
+  "_where": "C:\\FatboarProject\\express-server",
   "bugs": {
     "url": "https://github.com/expressjs/body-parser/issues"
   },
@@ -39,40 +39,44 @@
     }
   ],
   "dependencies": {
-    "bytes": "3.1.0",
+    "bytes": "3.1.2",
     "content-type": "~1.0.4",
     "debug": "2.6.9",
-    "depd": "~1.1.2",
-    "http-errors": "1.7.2",
+    "depd": "2.0.0",
+    "destroy": "1.2.0",
+    "http-errors": "2.0.0",
     "iconv-lite": "0.4.24",
-    "on-finished": "~2.3.0",
-    "qs": "6.7.0",
-    "raw-body": "2.4.0",
-    "type-is": "~1.6.17"
+    "on-finished": "2.4.1",
+    "qs": "6.10.3",
+    "raw-body": "2.5.1",
+    "type-is": "~1.6.18",
+    "unpipe": "1.0.0"
   },
   "deprecated": false,
   "description": "Node.js body parsing middleware",
   "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",
-    "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": {
-    "node": ">= 0.8"
+    "node": ">= 0.8",
+    "npm": "1.2.8000 || >= 1.4.16"
   },
   "files": [
     "lib/",
     "LICENSE",
     "HISTORY.md",
+    "SECURITY.md",
     "index.js"
   ],
   "homepage": "https://github.com/expressjs/body-parser#readme",
@@ -83,10 +87,10 @@
     "url": "git+https://github.com/expressjs/body-parser.git"
   },
   "scripts": {
-    "lint": "eslint --plugin markdown --ext js,md .",
+    "lint": "eslint .",
     "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
 ==================
 

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

@@ -2,7 +2,7 @@
 
 [![NPM Version][npm-image]][npm-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]
 
 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');
 ```
 
+#### 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
 
 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`. |
 | 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). |
 | 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**
 
 ```js
-bytes(1024);
+bytes.format(1024);
 // output: '1KB'
 
-bytes(1000);
+bytes.format(1000);
 // output: '1000B'
 
-bytes(1000, {thousandsSeparator: ' '});
+bytes.format(1000, {thousandsSeparator: ' '});
 // output: '1 000B'
 
-bytes(1024 * 1.7, {decimalPlaces: 0});
+bytes.format(1024 * 1.7, {decimalPlaces: 0});
 // output: '2KB'
 
-bytes(1024, {unitSeparator: ' '});
+bytes.format(1024, {unitSeparator: ' '});
 // output: '1 KB'
-
 ```
 
 #### 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**
 
 ```js
-bytes('1KB');
+bytes.parse('1KB');
 // output: 1024
 
-bytes('1024');
+bytes.parse('1024');
 // output: 1024
 
-bytes(1024);
-// output: 1KB
+bytes.parse(1024);
+// output: 1024
 ```
 
-## License 
+## 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-url]: https://coveralls.io/r/visionmedia/bytes.js?branch=master
 [downloads-image]: https://badgen.net/npm/dm/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
-[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) {
-    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;
@@ -158,5 +162,9 @@ function parse(val) {
     unit = results[4].toLowerCase();
   }
 
+  if (isNaN(floatValue)) {
+    return null;
+  }
+
   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,
-  "_integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==",
+  "_integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
   "_location": "/bytes",
   "_phantomChildren": {},
   "_requested": {
     "type": "version",
     "registry": true,
-    "raw": "bytes@3.1.0",
+    "raw": "bytes@3.1.2",
     "name": "bytes",
     "escapedName": "bytes",
-    "rawSpec": "3.1.0",
+    "rawSpec": "3.1.2",
     "saveSpec": null,
-    "fetchSpec": "3.1.0"
+    "fetchSpec": "3.1.2"
   },
   "_requiredBy": [
     "/body-parser",
     "/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": {
     "name": "TJ Holowaychuk",
     "email": "tj@vision-media.ca",
@@ -45,9 +45,10 @@
   "deprecated": false,
   "description": "Utility to parse a string bytes to bytes and vice-versa",
   "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": {
     "node": ">= 0.8"
@@ -77,8 +78,8 @@
   "scripts": {
     "lint": "eslint .",
     "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"
   },
-  "version": "3.1.0"
+  "version": "3.1.2"
 }

+ 0 - 76
express-server/node_modules/camelcase/index.js

@@ -1,76 +0,0 @@
-'use strict';
-
-const preserveCamelCase = string => {
-	let isLastCharLower = false;
-	let isLastCharUpper = false;
-	let isLastLastCharUpper = false;
-
-	for (let i = 0; i < string.length; i++) {
-		const character = string[i];
-
-		if (isLastCharLower && /[a-zA-Z]/.test(character) && character.toUpperCase() === character) {
-			string = string.slice(0, i) + '-' + string.slice(i);
-			isLastCharLower = false;
-			isLastLastCharUpper = isLastCharUpper;
-			isLastCharUpper = true;
-			i++;
-		} else if (isLastCharUpper && isLastLastCharUpper && /[a-zA-Z]/.test(character) && character.toLowerCase() === character) {
-			string = string.slice(0, i - 1) + '-' + string.slice(i - 1);
-			isLastLastCharUpper = isLastCharUpper;
-			isLastCharUpper = false;
-			isLastCharLower = true;
-		} else {
-			isLastCharLower = character.toLowerCase() === character && character.toUpperCase() !== character;
-			isLastLastCharUpper = isLastCharUpper;
-			isLastCharUpper = character.toUpperCase() === character && character.toLowerCase() !== character;
-		}
-	}
-
-	return string;
-};
-
-const camelCase = (input, options) => {
-	if (!(typeof input === 'string' || Array.isArray(input))) {
-		throw new TypeError('Expected the input to be `string | string[]`');
-	}
-
-	options = Object.assign({
-		pascalCase: false
-	}, options);
-
-	const postProcess = x => options.pascalCase ? x.charAt(0).toUpperCase() + x.slice(1) : x;
-
-	if (Array.isArray(input)) {
-		input = input.map(x => x.trim())
-			.filter(x => x.length)
-			.join('-');
-	} else {
-		input = input.trim();
-	}
-
-	if (input.length === 0) {
-		return '';
-	}
-
-	if (input.length === 1) {
-		return options.pascalCase ? input.toUpperCase() : input.toLowerCase();
-	}
-
-	const hasUpperCase = input !== input.toLowerCase();
-
-	if (hasUpperCase) {
-		input = preserveCamelCase(input);
-	}
-
-	input = input
-		.replace(/^[_.\- ]+/, '')
-		.toLowerCase()
-		.replace(/[_.\- ]+(\w|$)/g, (_, p1) => p1.toUpperCase())
-		.replace(/\d+(\w|$)/g, m => m.toUpperCase());
-
-	return postProcess(input);
-};
-
-module.exports = camelCase;
-// TODO: Remove this for the next major release
-module.exports.default = camelCase;

+ 0 - 9
express-server/node_modules/camelcase/license

@@ -1,9 +0,0 @@
-MIT License
-
-Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.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:
-
-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.

+ 0 - 75
express-server/node_modules/camelcase/package.json

@@ -1,75 +0,0 @@
-{
-  "_from": "camelcase@^5.3.1",
-  "_id": "camelcase@5.3.1",
-  "_inBundle": false,
-  "_integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
-  "_location": "/camelcase",
-  "_phantomChildren": {},
-  "_requested": {
-    "type": "range",
-    "registry": true,
-    "raw": "camelcase@^5.3.1",
-    "name": "camelcase",
-    "escapedName": "camelcase",
-    "rawSpec": "^5.3.1",
-    "saveSpec": null,
-    "fetchSpec": "^5.3.1"
-  },
-  "_requiredBy": [
-    "/boxen"
-  ],
-  "_resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
-  "_shasum": "e3c9b31569e106811df242f715725a1f4c494320",
-  "_spec": "camelcase@^5.3.1",
-  "_where": "C:\\Users\\brin\\Desktop\\Personnel\\FatboarProject-develop\\FatboarProject\\express-server\\node_modules\\boxen",
-  "author": {
-    "name": "Sindre Sorhus",
-    "email": "sindresorhus@gmail.com",
-    "url": "sindresorhus.com"
-  },
-  "bugs": {
-    "url": "https://github.com/sindresorhus/camelcase/issues"
-  },
-  "bundleDependencies": false,
-  "deprecated": false,
-  "description": "Convert a dash/dot/underscore/space separated string to camelCase or PascalCase: `foo-bar` → `fooBar`",
-  "devDependencies": {
-    "ava": "^1.4.1",
-    "tsd": "^0.7.1",
-    "xo": "^0.24.0"
-  },
-  "engines": {
-    "node": ">=6"
-  },
-  "files": [
-    "index.js",
-    "index.d.ts"
-  ],
-  "homepage": "https://github.com/sindresorhus/camelcase#readme",
-  "keywords": [
-    "camelcase",
-    "camel-case",
-    "camel",
-    "case",
-    "dash",
-    "hyphen",
-    "dot",
-    "underscore",
-    "separator",
-    "string",
-    "text",
-    "convert",
-    "pascalcase",
-    "pascal-case"
-  ],
-  "license": "MIT",
-  "name": "camelcase",
-  "repository": {
-    "type": "git",
-    "url": "git+https://github.com/sindresorhus/camelcase.git"
-  },
-  "scripts": {
-    "test": "xo && ava && tsd"
-  },
-  "version": "5.3.1"
-}

+ 0 - 99
express-server/node_modules/camelcase/readme.md

@@ -1,99 +0,0 @@
-# camelcase [![Build Status](https://travis-ci.org/sindresorhus/camelcase.svg?branch=master)](https://travis-ci.org/sindresorhus/camelcase)
-
-> Convert a dash/dot/underscore/space separated string to camelCase or PascalCase: `foo-bar` → `fooBar`
-
----
-
-<div align="center">
-	<b>
-		<a href="https://tidelift.com/subscription/pkg/npm-camelcase?utm_source=npm-camelcase&utm_medium=referral&utm_campaign=readme">Get professional support for 'camelcase' with a Tidelift subscription</a>
-	</b>
-	<br>
-	<sub>
-		Tidelift helps make open source sustainable for maintainers while giving companies<br>assurances about security, maintenance, and licensing for their dependencies.
-	</sub>
-</div>
-
----
-
-## Install
-
-```
-$ npm install camelcase
-```
-
-
-## Usage
-
-```js
-const camelCase = require('camelcase');
-
-camelCase('foo-bar');
-//=> 'fooBar'
-
-camelCase('foo_bar');
-//=> 'fooBar'
-
-camelCase('Foo-Bar');
-//=> 'fooBar'
-
-camelCase('Foo-Bar', {pascalCase: true});
-//=> 'FooBar'
-
-camelCase('--foo.bar', {pascalCase: false});
-//=> 'fooBar'
-
-camelCase('foo bar');
-//=> 'fooBar'
-
-console.log(process.argv[3]);
-//=> '--foo-bar'
-camelCase(process.argv[3]);
-//=> 'fooBar'
-
-camelCase(['foo', 'bar']);
-//=> 'fooBar'
-
-camelCase(['__foo__', '--bar'], {pascalCase: true});
-//=> 'FooBar'
-```
-
-
-## API
-
-### camelCase(input, [options])
-
-#### input
-
-Type: `string` `string[]`
-
-String to convert to camel case.
-
-#### options
-
-Type: `Object`
-
-##### pascalCase
-
-Type: `boolean`<br>
-Default: `false`
-
-Uppercase the first character: `foo-bar` → `FooBar`
-
-
-## Security
-
-To report a security vulnerability, please use the [Tidelift security contact](https://tidelift.com/security). Tidelift will coordinate the fix and disclosure.
-
-
-## Related
-
-- [decamelize](https://github.com/sindresorhus/decamelize) - The inverse of this module
-- [uppercamelcase](https://github.com/SamVerschueren/uppercamelcase) - Like this module, but to PascalCase instead of camelCase
-- [titleize](https://github.com/sindresorhus/titleize) - Capitalize every word in string
-- [humanize-string](https://github.com/sindresorhus/humanize-string) - Convert a camelized/dasherized/underscored string into a humanized one
-
-
-## License
-
-MIT © [Sindre Sorhus](https://sindresorhus.com)

+ 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
 ==================
 

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

@@ -3,7 +3,7 @@
 [![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]
+[![Build Status][github-actions-ci-image]][github-actions-ci-url]
 [![Test Coverage][coveralls-image]][coveralls-url]
 
 Create and parse HTTP `Content-Disposition` header
@@ -16,8 +16,6 @@ $ npm install content-disposition
 
 ## API
 
-<!-- eslint-disable no-unused-vars -->
-
 ```js
 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
 want to specify `options`, set `filename` to `undefined`.
 
-<!-- eslint-disable no-undef -->
-
 ```js
 res.setHeader('Content-Disposition', contentDisposition('∫ maths.pdf'))
 ```
@@ -70,8 +66,6 @@ it). The type is normalized to lower-case.
 
 ### contentDisposition.parse(string)
 
-<!-- eslint-disable no-undef, no-unused-vars -->
-
 ```js
 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
 [node-version-image]: https://img.shields.io/node/v/content-disposition.svg
 [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-url]: https://coveralls.io/r/jshttp/content-disposition?branch=master
 [downloads-image]: https://img.shields.io/npm/dm/content-disposition.svg
 [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
  * @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,
-  "_integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==",
+  "_integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
   "_location": "/content-disposition",
   "_phantomChildren": {},
   "_requested": {
     "type": "version",
     "registry": true,
-    "raw": "content-disposition@0.5.3",
+    "raw": "content-disposition@0.5.4",
     "name": "content-disposition",
     "escapedName": "content-disposition",
-    "rawSpec": "0.5.3",
+    "rawSpec": "0.5.4",
     "saveSpec": null,
-    "fetchSpec": "0.5.3"
+    "fetchSpec": "0.5.4"
   },
   "_requiredBy": [
     "/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": {
     "name": "Douglas Christopher Wilson",
     "email": "doug@somethingdoug.com"
@@ -31,21 +31,21 @@
   },
   "bundleDependencies": false,
   "dependencies": {
-    "safe-buffer": "5.1.2"
+    "safe-buffer": "5.2.1"
   },
   "deprecated": false,
   "description": "Create and parse Content-Disposition header",
   "devDependencies": {
     "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",
-    "mocha": "5.2.0"
+    "mocha": "9.1.3"
   },
   "engines": {
     "node": ">= 0.6"
@@ -70,10 +70,10 @@
     "url": "git+https://github.com/jshttp/content-disposition.git"
   },
   "scripts": {
-    "lint": "eslint --plugin markdown --ext js,md .",
+    "lint": "eslint .",
     "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",
   "_shasum": "e138cc75e040c727b1966fe5e5f8c9aee256fe3b",
   "_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": {
     "name": "Douglas Christopher Wilson",
     "email": "doug@somethingdoug.com"

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

@@ -2,7 +2,7 @@
   "_from": "cookie-signature@1.0.6",
   "_id": "cookie-signature@1.0.6",
   "_inBundle": false,
-  "_integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=",
+  "_integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==",
   "_location": "/cookie-signature",
   "_phantomChildren": {},
   "_requested": {
@@ -21,7 +21,7 @@
   "_resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
   "_shasum": "e303a882b342cc3ee8ca513a79999734dab3ae2c",
   "_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": {
     "name": "TJ Holowaychuk",
     "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
 ==================
 

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

@@ -3,13 +3,17 @@
 [![NPM Version][npm-version-image]][npm-url]
 [![NPM Downloads][npm-downloads-image]][npm-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]
 
 Basic HTTP cookie parser and serializer for HTTP servers.
 
 ## 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
 $ 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
 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
 
-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.
   - `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.
 
 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.
 This also means many clients may ignore this attribute until they understand it.
@@ -194,40 +212,71 @@ $ npm test
 ```
 $ npm run bench
 
-> cookie@0.3.1 bench cookie
+> cookie@0.4.2 bench
 > 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
-  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
 
-  cookie.parse
+  cookie.parse - generic
 
   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
 
 - [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-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
@@ -244,10 +293,10 @@ $ npm run bench
 
 [coveralls-image]: https://badgen.net/coveralls/c/github/jshttp/cookie/master
 [coveralls-url]: https://coveralls.io/r/jshttp/cookie?branch=master
+[github-actions-ci-image]: https://img.shields.io/github/workflow/status/jshttp/cookie/ci/master?label=ci
+[github-actions-ci-url]: https://github.com/jshttp/cookie/actions/workflows/ci.yml
 [node-version-image]: https://badgen.net/npm/node/cookie
 [node-version-url]: https://nodejs.org/en/download
 [npm-downloads-image]: https://badgen.net/npm/dm/cookie
 [npm-url]: https://npmjs.org/package/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
  */
 
-var decode = decodeURIComponent;
-var encode = encodeURIComponent;
-var pairSplitRegExp = /; */;
+var __toString = Object.prototype.toString
 
 /**
  * RegExp to match field-content in RFC 7230 sec 3.2
@@ -53,30 +51,42 @@ function parse(str, options) {
 
   var obj = {}
   var opt = options || {};
-  var pairs = str.split(pairSplitRegExp);
   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
-    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);
     }
+
+    index = endIdx + 1
   }
 
   return obj;
@@ -120,7 +130,11 @@ function serialize(name, val, options) {
 
   if (null != opt.maxAge) {
     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);
   }
 
@@ -141,11 +155,13 @@ function serialize(name, val, options) {
   }
 
   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');
     }
 
-    str += '; Expires=' + opt.expires.toUTCString();
+    str += '; Expires=' + expires.toUTCString()
   }
 
   if (opt.httpOnly) {
@@ -156,6 +172,26 @@ function serialize(name, val, options) {
     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) {
     var sameSite = typeof opt.sameSite === 'string'
       ? opt.sameSite.toLowerCase() : opt.sameSite;
@@ -181,6 +217,42 @@ function serialize(name, val, options) {
   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.
  *

+ 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,
-  "_integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==",
+  "_integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==",
   "_location": "/cookie",
   "_phantomChildren": {},
   "_requested": {
     "type": "version",
     "registry": true,
-    "raw": "cookie@0.4.0",
+    "raw": "cookie@0.5.0",
     "name": "cookie",
     "escapedName": "cookie",
-    "rawSpec": "0.4.0",
+    "rawSpec": "0.5.0",
     "saveSpec": null,
-    "fetchSpec": "0.4.0"
+    "fetchSpec": "0.5.0"
   },
   "_requiredBy": [
     "/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": {
     "name": "Roman Shtylman",
     "email": "shtylman@gmail.com"
@@ -41,10 +41,12 @@
   "devDependencies": {
     "beautify-benchmark": "0.2.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": {
     "node": ">= 0.6"
@@ -53,6 +55,7 @@
     "HISTORY.md",
     "LICENSE",
     "README.md",
+    "SECURITY.md",
     "index.js"
   ],
   "homepage": "https://github.com/jshttp/cookie#readme",
@@ -68,11 +71,12 @@
   },
   "scripts": {
     "bench": "node benchmark/index.js",
-    "lint": "eslint --plugin markdown --ext js,md .",
+    "lint": "eslint .",
     "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": "0.4.0"
+  "version": "0.5.0"
 }

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

@@ -20,13 +20,12 @@
     "/express",
     "/finalhandler",
     "/get-uri",
-    "/send",
-    "/undefsafe"
+    "/send"
   ],
   "_resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
   "_shasum": "5d128515df134ff327e90a4c93f4e077a536341f",
   "_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": {
     "name": "TJ Holowaychuk",
     "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
express-server/node_modules/depd/LICENSE

@@ -1,6 +1,6 @@
 (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
 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)
 
-[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
-[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
-[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/
+[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
- * Copyright(c) 2014-2017 Douglas Christopher Wilson
+ * Copyright(c) 2014-2018 Douglas Christopher Wilson
  * MIT Licensed
  */
 
@@ -8,8 +8,6 @@
  * Module dependencies.
  */
 
-var callSiteToString = require('./lib/compat').callSiteToString
-var eventListenerCount = require('./lib/compat').eventListenerCount
 var relative = require('path').relative
 
 /**
@@ -92,7 +90,7 @@ function createStackString (stack) {
   }
 
   for (var i = 0; i < stack.length; i++) {
-    str += '\n    at ' + callSiteToString(stack[i])
+    str += '\n    at ' + stack[i].toString()
   }
 
   return str
@@ -128,12 +126,31 @@ function depd (namespace) {
   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.
  */
 
 function isignored (namespace) {
-  /* istanbul ignore next: tested in a child processs */
   if (process.noDeprecation) {
     // --no-deprecation support
     return true
@@ -150,7 +167,6 @@ function isignored (namespace) {
  */
 
 function istraced (namespace) {
-  /* istanbul ignore next: tested in a child processs */
   if (process.traceDeprecation) {
     // --trace-deprecation support
     return true
@@ -167,7 +183,7 @@ function istraced (namespace) {
  */
 
 function log (message, site) {
-  var haslisteners = eventListenerCount(process, 'deprecation') !== 0
+  var haslisteners = eehaslisteners(process, 'deprecation')
 
   // abort early if no destination
   if (!haslisteners && this._ignored) {
@@ -310,7 +326,7 @@ function formatPlain (msg, caller, stack) {
   // add stack trace
   if (this._traced) {
     for (var i = 0; i < stack.length; i++) {
-      formatted += '\n    at ' + callSiteToString(stack[i])
+      formatted += '\n    at ' + stack[i].toString()
     }
 
     return formatted
@@ -335,7 +351,7 @@ function formatColor (msg, caller, stack) {
   // add stack trace
   if (this._traced) {
     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
@@ -400,18 +416,18 @@ function wrapfunction (fn, message) {
   }
 
   var args = createArgumentsString(fn.length)
-  var deprecate = this // eslint-disable-line no-unused-vars
   var stack = getStack()
   var site = callSiteLocation(stack[1])
 
   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' +
+    'return function (' + args + ') {' +
     'log.call(deprecate, message, site)\n' +
     'return fn.apply(this, arguments)\n' +
-    '})')
+    '}')(fn, log, this, message, site)
 
   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,
-  "_integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=",
+  "_integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
   "_location": "/depd",
   "_phantomChildren": {},
   "_requested": {
-    "type": "range",
+    "type": "version",
     "registry": true,
-    "raw": "depd@~1.1.2",
+    "raw": "depd@2.0.0",
     "name": "depd",
     "escapedName": "depd",
-    "rawSpec": "~1.1.2",
+    "rawSpec": "2.0.0",
     "saveSpec": null,
-    "fetchSpec": "~1.1.2"
+    "fetchSpec": "2.0.0"
   },
   "_requiredBy": [
     "/body-parser",
@@ -21,10 +21,10 @@
     "/http-errors",
     "/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": {
     "name": "Douglas Christopher Wilson",
     "email": "doug@somethingdoug.com"
@@ -39,16 +39,20 @@
   "devDependencies": {
     "beautify-benchmark": "0.2.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-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",
-    "mocha": "~1.21.5"
+    "mocha": "5.2.0",
+    "safe-buffer": "5.1.2",
+    "uid-safe": "2.1.5"
   },
   "engines": {
-    "node": ">= 0.6"
+    "node": ">= 0.8"
   },
   "files": [
     "lib/",
@@ -72,8 +76,8 @@
     "bench": "node benchmark/index.js",
     "lint": "eslint --plugin markdown --ext js,md .",
     "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)
 
 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
 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]
-[![Build status][travis-image]][travis-url]
+[![Build Status][github-actions-ci-image]][github-actions-ci-url]
 [![Test coverage][coveralls-image]][coveralls-url]
 [![License][license-image]][license-url]
 [![Downloads][downloads-image]][downloads-url]
-[![Gittip][gittip-image]][gittip-url]
 
 Destroy a stream.
 
@@ -18,17 +17,23 @@ and Node.js bugs.
 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()`
      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
      `.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.
 
@@ -48,13 +53,11 @@ destroy(stream)
 [npm-url]: https://npmjs.org/package/destroy
 [github-tag]: http://img.shields.io/github/tag/stream-utils/destroy.svg?style=flat-square
 [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-url]: https://coveralls.io/r/stream-utils/destroy?branch=master
 [license-image]: http://img.shields.io/npm/l/destroy.svg?style=flat-square
 [license-url]: LICENSE.md
 [downloads-image]: http://img.shields.io/npm/dm/destroy.svg?style=flat-square
 [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
  * Copyright(c) 2014 Jonathan Ong
+ * Copyright(c) 2015-2022 Douglas Christopher Wilson
  * MIT Licensed
  */
 
@@ -11,8 +12,10 @@
  * @private
  */
 
+var EventEmitter = require('events').EventEmitter
 var ReadStream = require('fs').ReadStream
 var Stream = require('stream')
+var Zlib = require('zlib')
 
 /**
  * Module exports.
@@ -22,23 +25,25 @@ var Stream = require('stream')
 module.exports = destroy
 
 /**
- * Destroy a stream.
+ * Destroy the given stream, and optionally suppress any future `error` events.
  *
  * @param {object} stream
+ * @param {boolean} suppress
  * @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
@@ -51,15 +56,144 @@ function destroy(stream) {
  * @private
  */
 
-function destroyReadStream(stream) {
+function destroyReadStream (stream) {
   stream.destroy()
 
   if (typeof stream.close === 'function') {
     // node.js core bug work-around
     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
  */
 
-function onOpenClose() {
+function onOpenClose () {
   if (typeof this.fd === 'number') {
     // actually close down the fd
     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,
-  "_integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=",
+  "_integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
   "_location": "/destroy",
   "_phantomChildren": {},
   "_requested": {
-    "type": "range",
+    "type": "version",
     "registry": true,
-    "raw": "destroy@~1.0.4",
+    "raw": "destroy@1.2.0",
     "name": "destroy",
     "escapedName": "destroy",
-    "rawSpec": "~1.0.4",
+    "rawSpec": "1.2.0",
     "saveSpec": null,
-    "fetchSpec": "~1.0.4"
+    "fetchSpec": "1.2.0"
   },
   "_requiredBy": [
+    "/body-parser",
     "/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": {
     "name": "Jonathan Ong",
     "email": "me@jongleberry.com",
@@ -40,8 +41,18 @@
   "deprecated": false,
   "description": "destroy a stream if possible",
   "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": [
     "index.js",
@@ -63,9 +74,10 @@
     "url": "git+https://github.com/stream-utils/destroy.git"
   },
   "scripts": {
+    "lint": "eslint .",
     "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",
   "_id": "ee-first@1.1.1",
   "_inBundle": false,
-  "_integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=",
+  "_integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==",
   "_location": "/ee-first",
   "_phantomChildren": {},
   "_requested": {
@@ -21,7 +21,7 @@
   "_resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
   "_shasum": "590c61156b0ae2f4f0255732a158b266bc56b21d",
   "_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": {
     "name": "Jonathan Ong",
     "email": "me@jongleberry.com",

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

@@ -2,7 +2,7 @@
   "_from": "encodeurl@~1.0.2",
   "_id": "encodeurl@1.0.2",
   "_inBundle": false,
-  "_integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=",
+  "_integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
   "_location": "/encodeurl",
   "_phantomChildren": {},
   "_requested": {
@@ -24,7 +24,7 @@
   "_resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
   "_shasum": "ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59",
   "_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": {
     "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",
   "_id": "escape-html@1.0.3",
   "_inBundle": false,
-  "_integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=",
+  "_integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==",
   "_location": "/escape-html",
   "_phantomChildren": {},
   "_requested": {
@@ -24,7 +24,7 @@
   "_resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
   "_shasum": "0258eae4d3d0c0974de1c169188ef0051d1d1988",
   "_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": {
     "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",
   "_id": "etag@1.8.1",
   "_inBundle": false,
-  "_integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=",
+  "_integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
   "_location": "/etag",
   "_phantomChildren": {},
   "_requested": {
@@ -22,7 +22,7 @@
   "_resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
   "_shasum": "41ae2eeb65efa62268aebfea83ac7d79299b0887",
   "_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": {
     "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
 ===================
 

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

@@ -2,11 +2,9 @@
 
   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
 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/).
 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
 [`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally):
 
-```bash
+```console
 $ 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).
 
-### Security Issues
-
-If you discover a security vulnerability in Express, please see [Security Policies and Procedures](Security.md).
-
 ## 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:
 
   Install the executable. The executable's major version will match Express's:
 
-```bash
+```console
 $ npm install -g express-generator@4
 ```
 
   Create the app:
 
-```bash
+```console
 $ express /tmp/foo && cd /tmp/foo
 ```
 
   Install dependencies:
 
-```bash
+```console
 $ npm install
 ```
 
   Start the server:
 
-```bash
+```console
 $ npm start
 ```
 
@@ -95,7 +92,7 @@ $ npm start
 ## Philosophy
 
   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.
 
   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:
 
-```bash
+```console
 $ git clone git://github.com/expressjs/express.git --depth 1
 $ cd express
 $ npm install
@@ -114,23 +111,35 @@ $ npm install
 
   Then run whichever example you want:
 
-```bash
+```console
 $ 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 test
 ```
 
-## Contributing
-
-[Contributing Guide](Contributing.md)
-
 ## People
 
 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)
 
-[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
-[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
+[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 resolve = require('path').resolve;
 var setPrototypeOf = require('setprototypeof')
+
+/**
+ * Module variables.
+ * @private
+ */
+
+var hasOwnProperty = Object.prototype.hasOwnProperty
 var slice = Array.prototype.slice;
 
 /**
@@ -276,7 +283,7 @@ app.route = function route(path) {
  * In this case EJS provides a `.renderFile()` method with
  * the same signature that Express expects: `(path, options, callback)`,
  * 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
  * [Consolidate.js](https://github.com/tj/consolidate.js)
@@ -352,7 +359,17 @@ app.param = function param(name, fn) {
 app.set = function set(setting, val) {
   if (arguments.length === 1) {
     // 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);

+ 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"
- * header field, and it contains the give mime `type`.
+ * header field, and it contains the given mime `type`.
  *
  * Examples:
  *

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

@@ -14,6 +14,7 @@
 
 var Buffer = require('safe-buffer').Buffer
 var contentDisposition = require('content-disposition');
+var createError = require('http-errors')
 var deprecate = require('depd')('express');
 var encodeUrl = require('encodeurl');
 var escapeHtml = require('escape-html');
@@ -64,6 +65,9 @@ var charsetRegExp = /;\s*charset\s*=/;
  */
 
 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;
   return this;
 };
@@ -135,7 +139,7 @@ res.send = function send(body) {
 
     deprecate('res.send(status): Use res.sendStatus(status) instead');
     this.statusCode = chunk;
-    chunk = statuses[chunk]
+    chunk = statuses.message[chunk]
   }
 
   switch (typeof chunk) {
@@ -213,6 +217,13 @@ res.send = function send(body) {
     chunk = '';
   }
 
+  // alter headers for 205
+  if (this.statusCode === 205) {
+    this.set('Content-Length', '0')
+    this.removeHeader('Transfer-Encoding')
+    chunk = ''
+  }
+
   if (req.method === 'HEAD') {
     // skip body for HEAD
     this.end();
@@ -284,9 +295,9 @@ res.jsonp = function jsonp(obj) {
 
   // allow status / body
   if (arguments.length === 2) {
-    // res.json(body, status) backwards compat
+    // res.jsonp(body, status) backwards compat
     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];
     } else {
       deprecate('res.jsonp(status, obj): Use res.status(status).jsonp(obj) instead');
@@ -322,10 +333,15 @@ res.jsonp = function jsonp(obj) {
     // restrict callback charset
     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 typeof check is just to reduce client error noise
@@ -351,7 +367,7 @@ res.jsonp = function jsonp(obj) {
  */
 
 res.sendStatus = function sendStatus(statusCode) {
-  var body = statuses[statusCode] || String(statusCode)
+  var body = statuses.message[statusCode] || String(statusCode)
 
   this.statusCode = statusCode;
   this.type('txt');
@@ -364,7 +380,7 @@ res.sendStatus = function sendStatus(statusCode) {
  *
  * Automatically sets the _Content-Type_ response header field.
  * 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
  * may have already been transferred.
  *
@@ -446,7 +462,7 @@ res.sendFile = function sendFile(path, options, callback) {
  *
  * Automatically sets the _Content-Type_ response header field.
  * 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
  * may have already been transferred.
  *
@@ -519,7 +535,7 @@ res.sendfile = deprecate.function(res.sendfile,
  * Optionally providing an alternate attachment `filename`,
  * and optional callback `callback(err)`. The callback is invoked
  * 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()`.
  * This function will set the `Content-Disposition` header, overriding
@@ -546,6 +562,13 @@ res.download = function download (path, filename, options, callback) {
     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
   var headers = {
     'Content-Disposition': contentDisposition(name || path)
@@ -567,7 +590,9 @@ res.download = function download (path, filename, options, callback) {
   opts.headers = headers
 
   // Resolve the full path for sendFile
-  var fullPath = resolve(path);
+  var fullPath = !opts.root
+    ? resolve(path)
+    : path
 
   // send file
   return this.sendFile(fullPath, opts, done)
@@ -623,7 +648,7 @@ res.type = function contentType(type) {
  *        res.send('<p>hey</p>');
  *      },
  *
- *      'appliation/json': function(){
+ *      'application/json': function () {
  *        res.send({ message: 'hey' });
  *      }
  *    });
@@ -660,9 +685,8 @@ res.format = function(obj){
   var req = this.req;
   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
     ? req.accepts(keys)
@@ -673,13 +697,12 @@ res.format = function(obj){
   if (key) {
     this.set('Content-Type', normalizeType(key).value);
     obj[key](req, this, next);
-  } else if (fn) {
-    fn();
+  } else if (obj.default) {
+    obj.default(req, this, next)
   } 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;
@@ -726,7 +749,7 @@ res.append = function append(field, val) {
     // concat the new and prev vals
     value = Array.isArray(prev) ? prev.concat(val)
       : Array.isArray(val) ? [prev].concat(val)
-      : [prev, val];
+        : [prev, val]
   }
 
   return this.set(field, value);
@@ -845,9 +868,13 @@ res.cookie = function (name, value, options) {
     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) {
@@ -928,12 +955,12 @@ res.redirect = function redirect(url) {
   // Support text/{plain,html} by default
   this.format({
     text: function(){
-      body = statuses[status] + '. Redirecting to ' + address
+      body = statuses.message[status] + '. Redirecting to ' + address
     },
 
     html: function(){
       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(){
@@ -1108,7 +1135,7 @@ function sendfile(res, file, options, callback) {
  * ability to escape characters that can trigger HTML sniffing.
  *
  * @param {*} value
- * @param {function} replaces
+ * @param {function} replacer
  * @param {number} spaces
  * @param {boolean} escape
  * @returns {string}
@@ -1122,7 +1149,7 @@ function stringify (value, replacer, spaces, escape) {
     ? JSON.stringify(value, replacer, spaces)
     : JSON.stringify(value);
 
-  if (escape) {
+  if (escape && typeof json === 'string') {
     json = json.replace(/[<>&]/g, function (c) {
       switch (c.charCodeAt(0)) {
         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;
 
   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) {
@@ -142,6 +142,7 @@ proto.handle = function handle(req, res, out) {
   var protohost = getProtohost(req.url) || ''
   var removed = '';
   var slashAdded = false;
+  var sync = 0
   var paramcalled = {};
 
   // store options for OPTIONS request
@@ -180,14 +181,14 @@ proto.handle = function handle(req, res, out) {
 
     // remove added slash
     if (slashAdded) {
-      req.url = req.url.substr(1);
+      req.url = req.url.slice(1)
       slashAdded = false;
     }
 
     // restore altered req.url
     if (removed.length !== 0) {
       req.baseUrl = parentUrl;
-      req.url = protohost + removed + req.url.substr(protohost.length);
+      req.url = protohost + removed + req.url.slice(protohost.length)
       removed = '';
     }
 
@@ -203,6 +204,11 @@ proto.handle = function handle(req, res, out) {
       return;
     }
 
+    // max sync stack
+    if (++sync > 100) {
+      return setImmediate(next, err)
+    }
+
     // get pathname of request
     var path = getPathname(req);
 
@@ -251,7 +257,6 @@ proto.handle = function handle(req, res, out) {
       // don't even bother matching route
       if (!has_method && method !== 'HEAD') {
         match = false;
-        continue;
       }
     }
 
@@ -274,19 +279,25 @@ proto.handle = function handle(req, res, out) {
     // this should be done for the layer
     self.process_params(layer, paramcalled, req, res, function (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) {
     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
       var c = path[layerPath.length]
       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
       debug('trim prefix (%s) from url %s', layerPath, req.url);
       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
       if (!protohost && req.url[0] !== '/') {
@@ -541,10 +552,10 @@ function getProtohost(url) {
   var pathLength = searchIndex !== -1
     ? searchIndex
     : url.length
-  var fqdnIndex = url.substr(0, pathLength).indexOf('://')
+  var fqdnIndex = url.slice(0, pathLength).indexOf('://')
 
   return fqdnIndex !== -1
-    ? url.substr(0, url.indexOf('/', 3 + fqdnIndex))
+    ? url.substring(0, url.indexOf('/', 3 + fqdnIndex))
     : 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) {
   var idx = 0;
   var stack = this.stack;
+  var sync = 0
+
   if (stack.length === 0) {
     return done();
   }
@@ -127,6 +129,11 @@ Route.prototype.dispatch = function dispatch(req, res, done) {
       return done(err);
     }
 
+    // max sync stack
+    if (++sync > 100) {
+      return setImmediate(next, err)
+    }
+
     if (layer.method && layer.method !== method) {
       return next(err);
     }
@@ -136,6 +143,8 @@ Route.prototype.dispatch = function dispatch(req, res, done) {
     } else {
       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
  *
  * @param {String} str
+ * @param {Number} index
  * @return {Object}
  * @api private
  */
@@ -157,6 +158,7 @@ exports.compileETag = function(val) {
 
   switch (val) {
     case true:
+    case 'weak':
       fn = exports.wetag;
       break;
     case false:
@@ -164,9 +166,6 @@ exports.compileETag = function(val) {
     case 'strong':
       fn = exports.etag;
       break;
-    case 'weak':
-      fn = exports.wetag;
-      break;
     default:
       throw new TypeError('unknown value for etag function: ' + val);
   }
@@ -191,6 +190,7 @@ exports.compileQueryParser = function compileQueryParser(val) {
 
   switch (val) {
     case true:
+    case 'simple':
       fn = querystring.parse;
       break;
     case false:
@@ -199,9 +199,6 @@ exports.compileQueryParser = function compileQueryParser(val) {
     case 'extended':
       fn = parseExtendedQueryString;
       break;
-    case 'simple':
-      fn = querystring.parse;
-      break;
     default:
       throw new TypeError('unknown value for query parser function: ' + val);
   }
@@ -232,7 +229,8 @@ exports.compileTrust = function(val) {
 
   if (typeof val === 'string') {
     // Support comma-separated values
-    val = val.split(/ *, */);
+    val = val.split(',')
+      .map(function (v) { return v.trim() })
   }
 
   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]) {
     // load engine
-    var mod = this.ext.substr(1)
+    var mod = this.ext.slice(1)
     debug('require "%s"', mod)
 
     // default engine export

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

@@ -1,8 +1,8 @@
 {
   "_from": "express@^4.17.1",
-  "_id": "express@4.17.1",
+  "_id": "express@4.18.1",
   "_inBundle": false,
-  "_integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==",
+  "_integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==",
   "_location": "/express",
   "_phantomChildren": {},
   "_requested": {
@@ -19,10 +19,10 @@
     "/",
     "/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",
-  "_where": "C:\\Users\\brin\\Desktop\\Personnel\\FatboarProject-develop\\FatboarProject\\express-server",
+  "_where": "C:\\FatboarProject\\express-server",
   "author": {
     "name": "TJ Holowaychuk",
     "email": "tj@vision-media.ca"
@@ -62,33 +62,34 @@
     }
   ],
   "dependencies": {
-    "accepts": "~1.3.7",
+    "accepts": "~1.3.8",
     "array-flatten": "1.1.1",
-    "body-parser": "1.19.0",
-    "content-disposition": "0.5.3",
+    "body-parser": "1.20.0",
+    "content-disposition": "0.5.4",
     "content-type": "~1.0.4",
-    "cookie": "0.4.0",
+    "cookie": "0.5.0",
     "cookie-signature": "1.0.6",
     "debug": "2.6.9",
-    "depd": "~1.1.2",
+    "depd": "2.0.0",
     "encodeurl": "~1.0.2",
     "escape-html": "~1.0.3",
     "etag": "~1.8.1",
-    "finalhandler": "~1.1.2",
+    "finalhandler": "1.2.0",
     "fresh": "0.5.2",
+    "http-errors": "2.0.0",
     "merge-descriptors": "1.0.1",
     "methods": "~1.1.2",
-    "on-finished": "~2.3.0",
+    "on-finished": "2.4.1",
     "parseurl": "~1.3.3",
     "path-to-regexp": "0.1.7",
-    "proxy-addr": "~2.0.5",
-    "qs": "6.7.0",
+    "proxy-addr": "~2.0.7",
+    "qs": "6.10.3",
     "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",
     "utils-merge": "1.0.1",
     "vary": "~1.1.2"
@@ -97,22 +98,21 @@
   "description": "Fast, unopinionated, minimalist web framework",
   "devDependencies": {
     "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",
-    "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",
-    "should": "13.2.3",
-    "supertest": "3.3.0",
+    "supertest": "6.2.3",
     "vhost": "~3.0.2"
   },
   "engines": {
@@ -131,6 +131,7 @@
     "framework",
     "sinatra",
     "web",
+    "http",
     "rest",
     "restful",
     "router",
@@ -146,9 +147,9 @@
   "scripts": {
     "lint": "eslint .",
     "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/"
   },
-  "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
express-server/node_modules/finalhandler/LICENSE

@@ -1,6 +1,6 @@
 (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
 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 Downloads][downloads-image]][downloads-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]
 
 Node.js function to invoke as the final step to respond to HTTP request.
@@ -20,8 +20,6 @@ $ npm install finalhandler
 
 ## API
 
-<!-- eslint-disable no-unused-vars -->
-
 ```js
 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`.
 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
-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:
 
@@ -140,9 +139,9 @@ function logerror (err) {
 [npm-url]: https://npmjs.org/package/finalhandler
 [node-image]: https://img.shields.io/node/v/finalhandler.svg
 [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-url]: https://coveralls.io/r/pillarjs/finalhandler?branch=master
 [downloads-image]: https://img.shields.io/npm/dm/finalhandler.svg
 [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
- * Copyright(c) 2014-2017 Douglas Christopher Wilson
+ * Copyright(c) 2014-2022 Douglas Christopher Wilson
  * 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
     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
     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,
-  "_integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
+  "_integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
   "_location": "/finalhandler",
   "_phantomChildren": {},
   "_requested": {
-    "type": "range",
+    "type": "version",
     "registry": true,
-    "raw": "finalhandler@~1.1.2",
+    "raw": "finalhandler@1.2.0",
     "name": "finalhandler",
     "escapedName": "finalhandler",
-    "rawSpec": "~1.1.2",
+    "rawSpec": "1.2.0",
     "saveSpec": null,
-    "fetchSpec": "~1.1.2"
+    "fetchSpec": "1.2.0"
   },
   "_requiredBy": [
     "/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": {
     "name": "Douglas Christopher Wilson",
     "email": "doug@somethingdoug.com"
@@ -34,26 +34,26 @@
     "debug": "2.6.9",
     "encodeurl": "~1.0.2",
     "escape-html": "~1.0.3",
-    "on-finished": "~2.3.0",
+    "on-finished": "2.4.1",
     "parseurl": "~1.3.3",
-    "statuses": "~1.5.0",
+    "statuses": "2.0.1",
     "unpipe": "~1.0.0"
   },
   "deprecated": false,
   "description": "Node.js final http responder",
   "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",
-    "safe-buffer": "5.1.2",
-    "supertest": "4.0.2"
+    "safe-buffer": "5.2.1",
+    "supertest": "6.2.2"
   },
   "engines": {
     "node": ">= 0.8"
@@ -61,6 +61,7 @@
   "files": [
     "LICENSE",
     "HISTORY.md",
+    "SECURITY.md",
     "index.js"
   ],
   "homepage": "https://github.com/pillarjs/finalhandler#readme",
@@ -71,10 +72,10 @@
     "url": "git+https://github.com/pillarjs/finalhandler.git"
   },
   "scripts": {
-    "lint": "eslint --plugin markdown --ext js,md .",
+    "lint": "eslint .",
     "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",
   "_shasum": "2269936428aad4c15c7ebe9779a84bf0b2a81811",
   "_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": {
     "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",
   "_id": "fresh@0.5.2",
   "_inBundle": false,
-  "_integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=",
+  "_integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
   "_location": "/fresh",
   "_phantomChildren": {},
   "_requested": {
@@ -22,7 +22,7 @@
   "_resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
   "_shasum": "3d8cadd90d976569fa835ab1f8e4b23a105605a7",
   "_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": {
     "name": "TJ Holowaychuk",
     "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
 ==================
 

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

@@ -3,7 +3,7 @@
 [![NPM Version][npm-version-image]][npm-url]
 [![NPM Downloads][npm-downloads-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]
 
 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 install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally):
 
-```bash
+```console
 $ 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`.
 The error object inherits from `createError.HttpError`.
 
-<!-- eslint-disable no-undef, no-unused-vars -->
-
 ```js
 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
 return value.
 
-<!-- eslint-disable no-redeclare, no-undef, no-unused-vars -->
+<!-- eslint-disable no-redeclare -->
 
 ```js
 fs.readFile('foo.txt', function (err, buf) {
@@ -88,13 +86,19 @@ fs.readFile('foo.txt', function (err, buf) {
 - `error` - the error object to extend
 - `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]\))
 
 Create a new error object with the given message `msg`.
 The error object inherits from `createError.HttpError`.
 
-<!-- eslint-disable no-undef, no-unused-vars -->
-
 ```js
 var err = new createError.NotFound()
 ```
@@ -129,7 +133,7 @@ var err = new createError.NotFound()
 |422        |UnprocessableEntity          |
 |423        |Locked                       |
 |424        |FailedDependency             |
-|425        |UnorderedCollection          |
+|425        |TooEarly                     |
 |426        |UpgradeRequired              |
 |428        |PreconditionRequired         |
 |429        |TooManyRequests              |
@@ -152,6 +156,8 @@ var err = new createError.NotFound()
 
 [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-url]: https://coveralls.io/r/jshttp/http-errors?branch=master
 [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.HttpError = createHttpErrorConstructor()
+module.exports.isHttpError = createIsHttpErrorFunction(module.exports.HttpError)
 
 // Populate exports for all constructors
 populateConstructorExports(module.exports, statuses.codes, module.exports.HttpError)
@@ -53,24 +54,18 @@ function createError () {
   var props = {}
   for (var i = 0; i < arguments.length; i++) {
     var arg = arguments[i]
-    if (arg instanceof Error) {
+    var type = typeof arg
+    if (type === 'object' && arg instanceof Error) {
       err = arg
       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' ||
-    (!statuses[status] && (status < 400 || status >= 600))) {
+    (!statuses.message[status] && (status < 400 || status >= 600))) {
     status = 500
   }
 
@@ -90,7 +85,7 @@ function createError () {
     // create error
     err = HttpError
       ? new HttpError(msg)
-      : new Error(msg || statuses[status])
+      : new Error(msg || statuses.message[status])
     Error.captureStackTrace(err, createError)
   }
 
@@ -130,11 +125,11 @@ function createHttpErrorConstructor () {
  */
 
 function createClientErrorConstructor (HttpError, name, code) {
-  var className = name.match(/Error$/) ? name : name + 'Error'
+  var className = toClassName(name)
 
   function ClientError (message) {
     // create the error object
-    var msg = message != null ? message : statuses[code]
+    var msg = message != null ? message : statuses.message[code]
     var err = new Error(msg)
 
     // capture a stack trace to the construction point
@@ -172,17 +167,38 @@ function createClientErrorConstructor (HttpError, name, code) {
   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.
  * @private
  */
 
 function createServerErrorConstructor (HttpError, name, code) {
-  var className = name.match(/Error$/) ? name : name + 'Error'
+  var className = toClassName(name)
 
   function ServerError (message) {
     // create the error object
-    var msg = message != null ? message : statuses[code]
+    var msg = message != null ? message : statuses.message[code]
     var err = new Error(msg)
 
     // capture a stack trace to the construction point
@@ -242,7 +258,7 @@ function nameFunc (func, name) {
 function populateConstructorExports (exports, codes, HttpError) {
   codes.forEach(function forEachCode (code) {
     var CodeError
-    var name = toIdentifier(statuses[code])
+    var name = toIdentifier(statuses.message[code])
 
     switch (codeClass(code)) {
       case 400:
@@ -259,8 +275,15 @@ function populateConstructorExports (exports, codes, HttpError) {
       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,
-  "_integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==",
+  "_integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
   "_location": "/http-errors",
   "_phantomChildren": {},
   "_requested": {
     "type": "version",
     "registry": true,
-    "raw": "http-errors@1.7.2",
+    "raw": "http-errors@2.0.0",
     "name": "http-errors",
     "escapedName": "http-errors",
-    "rawSpec": "1.7.2",
+    "rawSpec": "2.0.0",
     "saveSpec": null,
-    "fetchSpec": "1.7.2"
+    "fetchSpec": "2.0.0"
   },
   "_requiredBy": [
     "/body-parser",
+    "/express",
     "/raw-body",
     "/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": {
     "name": "Jonathan Ong",
     "email": "me@jongleberry.com",
@@ -44,27 +45,27 @@
     }
   ],
   "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,
   "description": "Create HTTP error objects",
   "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": {
-    "node": ">= 0.6"
+    "node": ">= 0.8"
   },
   "files": [
     "index.js",
@@ -84,10 +85,11 @@
     "url": "git+https://github.com/jshttp/http-errors.git"
   },
   "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-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",
   "_shasum": "2022b4b25fbddc21d2f524974a474aafe733908b",
   "_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": {
     "name": "Alexander Shtuchkin",
     "email": "ashtuchkin@gmail.com"

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

@@ -1,7 +1,9 @@
 try {
   var util = require('util');
+  /* istanbul ignore next */
   if (typeof util.inherits !== 'function') throw '';
   module.exports = util.inherits;
 } catch (e) {
+  /* istanbul ignore next */
   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') {
   // implementation from standard node.js 'util' module
   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 {
   // old school shim for old browsers
   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
+    }
   }
 }

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

@@ -1,30 +1,32 @@
 {
-  "_from": "inherits@2.0.3",
-  "_id": "inherits@2.0.3",
+  "_from": "inherits@2.0.4",
+  "_id": "inherits@2.0.4",
   "_inBundle": false,
-  "_integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+  "_integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
   "_location": "/inherits",
   "_phantomChildren": {},
   "_requested": {
     "type": "version",
     "registry": true,
-    "raw": "inherits@2.0.3",
+    "raw": "inherits@2.0.4",
     "name": "inherits",
     "escapedName": "inherits",
-    "rawSpec": "2.0.3",
+    "rawSpec": "2.0.4",
     "saveSpec": null,
-    "fetchSpec": "2.0.3"
+    "fetchSpec": "2.0.4"
   },
   "_requiredBy": [
+    "/bl/readable-stream",
     "/ftp/readable-stream",
+    "/get-uri/readable-stream",
     "/glob",
     "/http-errors",
     "/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",
   "bugs": {
     "url": "https://github.com/isaacs/inherits/issues"
@@ -33,7 +35,7 @@
   "deprecated": false,
   "description": "Browser-friendly inheritance fully compatible with standard node.js inherits()",
   "devDependencies": {
-    "tap": "^7.1.0"
+    "tap": "^14.2.4"
   },
   "files": [
     "inherits.js",
@@ -58,7 +60,7 @@
     "url": "git://github.com/isaacs/inherits.git"
   },
   "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",
   "_shasum": "bff38543eeb8984825079ff3a2a8e6cbd46781b3",
   "_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": {
     "name": "whitequark",
     "email": "whitequark@whitequark.org"

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

@@ -2,7 +2,7 @@
   "_from": "media-typer@0.3.0",
   "_id": "media-typer@0.3.0",
   "_inBundle": false,
-  "_integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=",
+  "_integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
   "_location": "/media-typer",
   "_phantomChildren": {},
   "_requested": {
@@ -21,7 +21,7 @@
   "_resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
   "_shasum": "8710d7af0aa626f8fffa1ce00168545263255748",
   "_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": {
     "name": "Douglas Christopher Wilson",
     "email": "doug@somethingdoug.com"

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

@@ -2,7 +2,7 @@
   "_from": "merge-descriptors@1.0.1",
   "_id": "merge-descriptors@1.0.1",
   "_inBundle": false,
-  "_integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=",
+  "_integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==",
   "_location": "/merge-descriptors",
   "_phantomChildren": {},
   "_requested": {
@@ -21,7 +21,7 @@
   "_resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
   "_shasum": "b00aaa556dd8b44568150ec9d1b953f3f90cbb61",
   "_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": {
     "name": "Jonathan Ong",
     "email": "me@jongleberry.com",

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

@@ -2,7 +2,7 @@
   "_from": "methods@~1.1.2",
   "_id": "methods@1.1.2",
   "_inBundle": false,
-  "_integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=",
+  "_integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==",
   "_location": "/methods",
   "_phantomChildren": {},
   "_requested": {
@@ -21,7 +21,7 @@
   "_resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
   "_shasum": "5529a4d67654134edcc5266656835b0f851afcee",
   "_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": {
     "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
 ===================
 

+ 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]
 [![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,
 allowing it to remain as un-opinionated as possible with an API.
 It aggregates data from the following sources:

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

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

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

@@ -1,6 +1,7 @@
 /*!
  * mime-db
  * Copyright(c) 2014 Jonathan Ong
+ * Copyright(c) 2015-2022 Douglas Christopher Wilson
  * 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,
-  "_integrity": "sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA==",
+  "_integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
   "_location": "/mime-db",
   "_phantomChildren": {},
   "_requested": {
     "type": "version",
     "registry": true,
-    "raw": "mime-db@1.49.0",
+    "raw": "mime-db@1.52.0",
     "name": "mime-db",
     "escapedName": "mime-db",
-    "rawSpec": "1.49.0",
+    "rawSpec": "1.52.0",
     "saveSpec": null,
-    "fetchSpec": "1.49.0"
+    "fetchSpec": "1.52.0"
   },
   "_requiredBy": [
     "/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": {
     "url": "https://github.com/jshttp/mime-db/issues"
   },
@@ -48,18 +48,19 @@
     "bluebird": "3.7.2",
     "co": "4.6.0",
     "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-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-promise": "5.1.0",
+    "eslint-plugin-promise": "5.1.1",
     "eslint-plugin-standard": "4.1.0",
     "gnode": "0.1.2",
-    "mocha": "9.0.3",
+    "media-typer": "1.1.0",
+    "mocha": "9.2.1",
     "nyc": "15.1.0",
-    "raw-body": "2.4.1",
+    "raw-body": "2.5.0",
     "stream-to-array": "2.3.0"
   },
   "engines": {
@@ -98,5 +99,5 @@
     "update": "npm run fetch && npm run build",
     "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
 ===================
 
@@ -11,7 +33,6 @@
   * deps: mime-db@1.48.0
     - Add extension `.mvt` to `application/vnd.mapbox-vector-tile`
     - Add new upstream MIME types
-    - Mark `text/yaml` as compressible
 
 2.1.30 / 2021-04-02
 ===================
@@ -89,7 +110,6 @@
     - Add extension `.nq` to `application/n-quads`
     - Add extension `.nt` to `application/n-triples`
     - Add new upstream MIME types
-    - Mark `text/less` as compressible
 
 2.1.21 / 2018-10-19
 ===================
@@ -342,7 +362,6 @@
 
   * deps: mime-db@~1.1.0
     - Add new mime types
-    - Add additional compressible
     - Update charsets
 
 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)
 
 [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-url]: https://coveralls.io/r/jshttp/mime-types?branch=master
 [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,
-  "_integrity": "sha512-hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A==",
+  "_integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
   "_location": "/mime-types",
   "_phantomChildren": {},
   "_requested": {
     "type": "range",
     "registry": true,
-    "raw": "mime-types@~2.1.24",
+    "raw": "mime-types@~2.1.34",
     "name": "mime-types",
     "escapedName": "mime-types",
-    "rawSpec": "~2.1.24",
+    "rawSpec": "~2.1.34",
     "saveSpec": null,
-    "fetchSpec": "~2.1.24"
+    "fetchSpec": "~2.1.34"
   },
   "_requiredBy": [
     "/accepts",
     "/form-data",
     "/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": {
     "url": "https://github.com/jshttp/mime-types/issues"
   },
@@ -45,19 +45,19 @@
     }
   ],
   "dependencies": {
-    "mime-db": "1.49.0"
+    "mime-db": "1.52.0"
   },
   "deprecated": false,
   "description": "The ultimate javascript content-type utility.",
   "devDependencies": {
-    "eslint": "7.31.0",
+    "eslint": "7.32.0",
     "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-promise": "5.1.0",
+    "eslint-plugin-promise": "5.2.0",
     "eslint-plugin-standard": "4.1.0",
-    "mocha": "9.0.3",
+    "mocha": "9.2.2",
     "nyc": "15.1.0"
   },
   "engines": {
@@ -85,5 +85,5 @@
     "test-ci": "nyc --reporter=lcov --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",
   "_shasum": "32cd9e5c64553bd58d19a568af452acff04981b1",
   "_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": {
     "name": "Robert Kieffer",
     "email": "robert@broofa.com",

+ 0 - 8
express-server/node_modules/minimist/.travis.yml

@@ -1,8 +0,0 @@
-language: node_js
-node_js:
-  - "0.8"
-  - "0.10"
-  - "0.12"
-  - "iojs"
-before_install:
-  - npm install -g npm@~1.4.6

+ 0 - 18
express-server/node_modules/minimist/LICENSE

@@ -1,18 +0,0 @@
-This software is released under the MIT license:
-
-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 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.

+ 0 - 2
express-server/node_modules/minimist/example/parse.js

@@ -1,2 +0,0 @@
-var argv = require('../')(process.argv.slice(2));
-console.log(argv);

+ 0 - 245
express-server/node_modules/minimist/index.js

@@ -1,245 +0,0 @@
-module.exports = function (args, opts) {
-    if (!opts) opts = {};
-    
-    var flags = { bools : {}, strings : {}, unknownFn: null };
-
-    if (typeof opts['unknown'] === 'function') {
-        flags.unknownFn = opts['unknown'];
-    }
-
-    if (typeof opts['boolean'] === 'boolean' && opts['boolean']) {
-      flags.allBools = true;
-    } else {
-      [].concat(opts['boolean']).filter(Boolean).forEach(function (key) {
-          flags.bools[key] = true;
-      });
-    }
-    
-    var aliases = {};
-    Object.keys(opts.alias || {}).forEach(function (key) {
-        aliases[key] = [].concat(opts.alias[key]);
-        aliases[key].forEach(function (x) {
-            aliases[x] = [key].concat(aliases[key].filter(function (y) {
-                return x !== y;
-            }));
-        });
-    });
-
-    [].concat(opts.string).filter(Boolean).forEach(function (key) {
-        flags.strings[key] = true;
-        if (aliases[key]) {
-            flags.strings[aliases[key]] = true;
-        }
-     });
-
-    var defaults = opts['default'] || {};
-    
-    var argv = { _ : [] };
-    Object.keys(flags.bools).forEach(function (key) {
-        setArg(key, defaults[key] === undefined ? false : defaults[key]);
-    });
-    
-    var notFlags = [];
-
-    if (args.indexOf('--') !== -1) {
-        notFlags = args.slice(args.indexOf('--')+1);
-        args = args.slice(0, args.indexOf('--'));
-    }
-
-    function argDefined(key, arg) {
-        return (flags.allBools && /^--[^=]+$/.test(arg)) ||
-            flags.strings[key] || flags.bools[key] || aliases[key];
-    }
-
-    function setArg (key, val, arg) {
-        if (arg && flags.unknownFn && !argDefined(key, arg)) {
-            if (flags.unknownFn(arg) === false) return;
-        }
-
-        var value = !flags.strings[key] && isNumber(val)
-            ? Number(val) : val
-        ;
-        setKey(argv, key.split('.'), value);
-        
-        (aliases[key] || []).forEach(function (x) {
-            setKey(argv, x.split('.'), value);
-        });
-    }
-
-    function setKey (obj, keys, value) {
-        var o = obj;
-        for (var i = 0; i < keys.length-1; i++) {
-            var key = keys[i];
-            if (key === '__proto__') return;
-            if (o[key] === undefined) o[key] = {};
-            if (o[key] === Object.prototype || o[key] === Number.prototype
-                || o[key] === String.prototype) o[key] = {};
-            if (o[key] === Array.prototype) o[key] = [];
-            o = o[key];
-        }
-
-        var key = keys[keys.length - 1];
-        if (key === '__proto__') return;
-        if (o === Object.prototype || o === Number.prototype
-            || o === String.prototype) o = {};
-        if (o === Array.prototype) o = [];
-        if (o[key] === undefined || flags.bools[key] || typeof o[key] === 'boolean') {
-            o[key] = value;
-        }
-        else if (Array.isArray(o[key])) {
-            o[key].push(value);
-        }
-        else {
-            o[key] = [ o[key], value ];
-        }
-    }
-    
-    function aliasIsBoolean(key) {
-      return aliases[key].some(function (x) {
-          return flags.bools[x];
-      });
-    }
-
-    for (var i = 0; i < args.length; i++) {
-        var arg = args[i];
-        
-        if (/^--.+=/.test(arg)) {
-            // Using [\s\S] instead of . because js doesn't support the
-            // 'dotall' regex modifier. See:
-            // http://stackoverflow.com/a/1068308/13216
-            var m = arg.match(/^--([^=]+)=([\s\S]*)$/);
-            var key = m[1];
-            var value = m[2];
-            if (flags.bools[key]) {
-                value = value !== 'false';
-            }
-            setArg(key, value, arg);
-        }
-        else if (/^--no-.+/.test(arg)) {
-            var key = arg.match(/^--no-(.+)/)[1];
-            setArg(key, false, arg);
-        }
-        else if (/^--.+/.test(arg)) {
-            var key = arg.match(/^--(.+)/)[1];
-            var next = args[i + 1];
-            if (next !== undefined && !/^-/.test(next)
-            && !flags.bools[key]
-            && !flags.allBools
-            && (aliases[key] ? !aliasIsBoolean(key) : true)) {
-                setArg(key, next, arg);
-                i++;
-            }
-            else if (/^(true|false)$/.test(next)) {
-                setArg(key, next === 'true', arg);
-                i++;
-            }
-            else {
-                setArg(key, flags.strings[key] ? '' : true, arg);
-            }
-        }
-        else if (/^-[^-]+/.test(arg)) {
-            var letters = arg.slice(1,-1).split('');
-            
-            var broken = false;
-            for (var j = 0; j < letters.length; j++) {
-                var next = arg.slice(j+2);
-                
-                if (next === '-') {
-                    setArg(letters[j], next, arg)
-                    continue;
-                }
-                
-                if (/[A-Za-z]/.test(letters[j]) && /=/.test(next)) {
-                    setArg(letters[j], next.split('=')[1], arg);
-                    broken = true;
-                    break;
-                }
-                
-                if (/[A-Za-z]/.test(letters[j])
-                && /-?\d+(\.\d*)?(e-?\d+)?$/.test(next)) {
-                    setArg(letters[j], next, arg);
-                    broken = true;
-                    break;
-                }
-                
-                if (letters[j+1] && letters[j+1].match(/\W/)) {
-                    setArg(letters[j], arg.slice(j+2), arg);
-                    broken = true;
-                    break;
-                }
-                else {
-                    setArg(letters[j], flags.strings[letters[j]] ? '' : true, arg);
-                }
-            }
-            
-            var key = arg.slice(-1)[0];
-            if (!broken && key !== '-') {
-                if (args[i+1] && !/^(-|--)[^-]/.test(args[i+1])
-                && !flags.bools[key]
-                && (aliases[key] ? !aliasIsBoolean(key) : true)) {
-                    setArg(key, args[i+1], arg);
-                    i++;
-                }
-                else if (args[i+1] && /^(true|false)$/.test(args[i+1])) {
-                    setArg(key, args[i+1] === 'true', arg);
-                    i++;
-                }
-                else {
-                    setArg(key, flags.strings[key] ? '' : true, arg);
-                }
-            }
-        }
-        else {
-            if (!flags.unknownFn || flags.unknownFn(arg) !== false) {
-                argv._.push(
-                    flags.strings['_'] || !isNumber(arg) ? arg : Number(arg)
-                );
-            }
-            if (opts.stopEarly) {
-                argv._.push.apply(argv._, args.slice(i + 1));
-                break;
-            }
-        }
-    }
-    
-    Object.keys(defaults).forEach(function (key) {
-        if (!hasKey(argv, key.split('.'))) {
-            setKey(argv, key.split('.'), defaults[key]);
-            
-            (aliases[key] || []).forEach(function (x) {
-                setKey(argv, x.split('.'), defaults[key]);
-            });
-        }
-    });
-    
-    if (opts['--']) {
-        argv['--'] = new Array();
-        notFlags.forEach(function(key) {
-            argv['--'].push(key);
-        });
-    }
-    else {
-        notFlags.forEach(function(key) {
-            argv._.push(key);
-        });
-    }
-
-    return argv;
-};
-
-function hasKey (obj, keys) {
-    var o = obj;
-    keys.slice(0,-1).forEach(function (key) {
-        o = (o[key] || {});
-    });
-
-    var key = keys[keys.length - 1];
-    return key in o;
-}
-
-function isNumber (x) {
-    if (typeof x === 'number') return true;
-    if (/^0x[0-9a-f]+$/i.test(x)) return true;
-    return /^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(x);
-}
-

+ 0 - 73
express-server/node_modules/minimist/package.json

@@ -1,73 +0,0 @@
-{
-  "_from": "minimist@^1.2.0",
-  "_id": "minimist@1.2.5",
-  "_inBundle": false,
-  "_integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
-  "_location": "/minimist",
-  "_phantomChildren": {},
-  "_requested": {
-    "type": "range",
-    "registry": true,
-    "raw": "minimist@^1.2.0",
-    "name": "minimist",
-    "escapedName": "minimist",
-    "rawSpec": "^1.2.0",
-    "saveSpec": null,
-    "fetchSpec": "^1.2.0"
-  },
-  "_requiredBy": [
-    "/rc"
-  ],
-  "_resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
-  "_shasum": "67d66014b66a6a8aaa0c083c5fd58df4e4e97602",
-  "_spec": "minimist@^1.2.0",
-  "_where": "C:\\Users\\brin\\Desktop\\Personnel\\FatboarProject-develop\\FatboarProject\\express-server\\node_modules\\rc",
-  "author": {
-    "name": "James Halliday",
-    "email": "mail@substack.net",
-    "url": "http://substack.net"
-  },
-  "bugs": {
-    "url": "https://github.com/substack/minimist/issues"
-  },
-  "bundleDependencies": false,
-  "deprecated": false,
-  "description": "parse argument options",
-  "devDependencies": {
-    "covert": "^1.0.0",
-    "tap": "~0.4.0",
-    "tape": "^3.5.0"
-  },
-  "homepage": "https://github.com/substack/minimist",
-  "keywords": [
-    "argv",
-    "getopt",
-    "parser",
-    "optimist"
-  ],
-  "license": "MIT",
-  "main": "index.js",
-  "name": "minimist",
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/substack/minimist.git"
-  },
-  "scripts": {
-    "coverage": "covert test/*.js",
-    "test": "tap test/*.js"
-  },
-  "testling": {
-    "files": "test/*.js",
-    "browsers": [
-      "ie/6..latest",
-      "ff/5",
-      "firefox/latest",
-      "chrome/10",
-      "chrome/latest",
-      "safari/5.1",
-      "safari/latest",
-      "opera/12"
-    ]
-  },
-  "version": "1.2.5"
-}

+ 0 - 95
express-server/node_modules/minimist/readme.markdown

@@ -1,95 +0,0 @@
-# minimist
-
-parse argument options
-
-This module is the guts of optimist's argument parser without all the
-fanciful decoration.
-
-# example
-
-``` js
-var argv = require('minimist')(process.argv.slice(2));
-console.log(argv);
-```
-
-```
-$ node example/parse.js -a beep -b boop
-{ _: [], a: 'beep', b: 'boop' }
-```
-
-```
-$ node example/parse.js -x 3 -y 4 -n5 -abc --beep=boop foo bar baz
-{ _: [ 'foo', 'bar', 'baz' ],
-  x: 3,
-  y: 4,
-  n: 5,
-  a: true,
-  b: true,
-  c: true,
-  beep: 'boop' }
-```
-
-# security
-
-Previous versions had a prototype pollution bug that could cause privilege
-escalation in some circumstances when handling untrusted user input.
-
-Please use version 1.2.3 or later: https://snyk.io/vuln/SNYK-JS-MINIMIST-559764
-
-# methods
-
-``` js
-var parseArgs = require('minimist')
-```
-
-## var argv = parseArgs(args, opts={})
-
-Return an argument object `argv` populated with the array arguments from `args`.
-
-`argv._` contains all the arguments that didn't have an option associated with
-them.
-
-Numeric-looking arguments will be returned as numbers unless `opts.string` or
-`opts.boolean` is set for that argument name.
-
-Any arguments after `'--'` will not be parsed and will end up in `argv._`.
-
-options can be:
-
-* `opts.string` - a string or array of strings argument names to always treat as
-strings
-* `opts.boolean` - a boolean, string or array of strings to always treat as
-booleans. if `true` will treat all double hyphenated arguments without equal signs
-as boolean (e.g. affects `--foo`, not `-f` or `--foo=bar`)
-* `opts.alias` - an object mapping string names to strings or arrays of string
-argument names to use as aliases
-* `opts.default` - an object mapping string argument names to default values
-* `opts.stopEarly` - when true, populate `argv._` with everything after the
-first non-option
-* `opts['--']` - when true, populate `argv._` with everything before the `--`
-and `argv['--']` with everything after the `--`. Here's an example:
-
-  ```
-  > require('./')('one two three -- four five --six'.split(' '), { '--': true })
-  { _: [ 'one', 'two', 'three' ],
-    '--': [ 'four', 'five', '--six' ] }
-  ```
-
-  Note that with `opts['--']` set, parsing for arguments still stops after the
-  `--`.
-
-* `opts.unknown` - a function which is invoked with a command line parameter not
-defined in the `opts` configuration object. If the function returns `false`, the
-unknown option is not added to `argv`.
-
-# install
-
-With [npm](https://npmjs.org) do:
-
-```
-npm install minimist
-```
-
-# license
-
-MIT

+ 0 - 32
express-server/node_modules/minimist/test/all_bool.js

@@ -1,32 +0,0 @@
-var parse = require('../');
-var test = require('tape');
-
-test('flag boolean true (default all --args to boolean)', function (t) {
-    var argv = parse(['moo', '--honk', 'cow'], {
-        boolean: true
-    });
-    
-    t.deepEqual(argv, {
-        honk: true,
-        _: ['moo', 'cow']
-    });
-    
-    t.deepEqual(typeof argv.honk, 'boolean');
-    t.end();
-});
-
-test('flag boolean true only affects double hyphen arguments without equals signs', function (t) {
-    var argv = parse(['moo', '--honk', 'cow', '-p', '55', '--tacos=good'], {
-        boolean: true
-    });
-    
-    t.deepEqual(argv, {
-        honk: true,
-        tacos: 'good',
-        p: 55,
-        _: ['moo', 'cow']
-    });
-    
-    t.deepEqual(typeof argv.honk, 'boolean');
-    t.end();
-});

+ 0 - 178
express-server/node_modules/minimist/test/bool.js

@@ -1,178 +0,0 @@
-var parse = require('../');
-var test = require('tape');
-
-test('flag boolean default false', function (t) {
-    var argv = parse(['moo'], {
-        boolean: ['t', 'verbose'],
-        default: { verbose: false, t: false }
-    });
-    
-    t.deepEqual(argv, {
-        verbose: false,
-        t: false,
-        _: ['moo']
-    });
-    
-    t.deepEqual(typeof argv.verbose, 'boolean');
-    t.deepEqual(typeof argv.t, 'boolean');
-    t.end();
-
-});
-
-test('boolean groups', function (t) {
-    var argv = parse([ '-x', '-z', 'one', 'two', 'three' ], {
-        boolean: ['x','y','z']
-    });
-    
-    t.deepEqual(argv, {
-        x : true,
-        y : false,
-        z : true,
-        _ : [ 'one', 'two', 'three' ]
-    });
-    
-    t.deepEqual(typeof argv.x, 'boolean');
-    t.deepEqual(typeof argv.y, 'boolean');
-    t.deepEqual(typeof argv.z, 'boolean');
-    t.end();
-});
-test('boolean and alias with chainable api', function (t) {
-    var aliased = [ '-h', 'derp' ];
-    var regular = [ '--herp',  'derp' ];
-    var opts = {
-        herp: { alias: 'h', boolean: true }
-    };
-    var aliasedArgv = parse(aliased, {
-        boolean: 'herp',
-        alias: { h: 'herp' }
-    });
-    var propertyArgv = parse(regular, {
-        boolean: 'herp',
-        alias: { h: 'herp' }
-    });
-    var expected = {
-        herp: true,
-        h: true,
-        '_': [ 'derp' ]
-    };
-    
-    t.same(aliasedArgv, expected);
-    t.same(propertyArgv, expected); 
-    t.end();
-});
-
-test('boolean and alias with options hash', function (t) {
-    var aliased = [ '-h', 'derp' ];
-    var regular = [ '--herp', 'derp' ];
-    var opts = {
-        alias: { 'h': 'herp' },
-        boolean: 'herp'
-    };
-    var aliasedArgv = parse(aliased, opts);
-    var propertyArgv = parse(regular, opts);
-    var expected = {
-        herp: true,
-        h: true,
-        '_': [ 'derp' ]
-    };
-    t.same(aliasedArgv, expected);
-    t.same(propertyArgv, expected);
-    t.end();
-});
-
-test('boolean and alias array with options hash', function (t) {
-    var aliased = [ '-h', 'derp' ];
-    var regular = [ '--herp', 'derp' ];
-    var alt = [ '--harp', 'derp' ];
-    var opts = {
-        alias: { 'h': ['herp', 'harp'] },
-        boolean: 'h'
-    };
-    var aliasedArgv = parse(aliased, opts);
-    var propertyArgv = parse(regular, opts);
-    var altPropertyArgv = parse(alt, opts);
-    var expected = {
-        harp: true,
-        herp: true,
-        h: true,
-        '_': [ 'derp' ]
-    };
-    t.same(aliasedArgv, expected);
-    t.same(propertyArgv, expected);
-    t.same(altPropertyArgv, expected);
-    t.end();
-});
-
-test('boolean and alias using explicit true', function (t) {
-    var aliased = [ '-h', 'true' ];
-    var regular = [ '--herp',  'true' ];
-    var opts = {
-        alias: { h: 'herp' },
-        boolean: 'h'
-    };
-    var aliasedArgv = parse(aliased, opts);
-    var propertyArgv = parse(regular, opts);
-    var expected = {
-        herp: true,
-        h: true,
-        '_': [ ]
-    };
-
-    t.same(aliasedArgv, expected);
-    t.same(propertyArgv, expected); 
-    t.end();
-});
-
-// regression, see https://github.com/substack/node-optimist/issues/71
-test('boolean and --x=true', function(t) {
-    var parsed = parse(['--boool', '--other=true'], {
-        boolean: 'boool'
-    });
-
-    t.same(parsed.boool, true);
-    t.same(parsed.other, 'true');
-
-    parsed = parse(['--boool', '--other=false'], {
-        boolean: 'boool'
-    });
-    
-    t.same(parsed.boool, true);
-    t.same(parsed.other, 'false');
-    t.end();
-});
-
-test('boolean --boool=true', function (t) {
-    var parsed = parse(['--boool=true'], {
-        default: {
-            boool: false
-        },
-        boolean: ['boool']
-    });
-
-    t.same(parsed.boool, true);
-    t.end();
-});
-
-test('boolean --boool=false', function (t) {
-    var parsed = parse(['--boool=false'], {
-        default: {
-          boool: true
-        },
-        boolean: ['boool']
-    });
-
-    t.same(parsed.boool, false);
-    t.end();
-});
-
-test('boolean using something similar to true', function (t) {
-    var opts = { boolean: 'h' };
-    var result = parse(['-h', 'true.txt'], opts);
-    var expected = {
-        h: true,
-        '_': ['true.txt']
-    };
-
-    t.same(result, expected);
-    t.end();
-});

+ 0 - 31
express-server/node_modules/minimist/test/dash.js

@@ -1,31 +0,0 @@
-var parse = require('../');
-var test = require('tape');
-
-test('-', function (t) {
-    t.plan(5);
-    t.deepEqual(parse([ '-n', '-' ]), { n: '-', _: [] });
-    t.deepEqual(parse([ '-' ]), { _: [ '-' ] });
-    t.deepEqual(parse([ '-f-' ]), { f: '-', _: [] });
-    t.deepEqual(
-        parse([ '-b', '-' ], { boolean: 'b' }),
-        { b: true, _: [ '-' ] }
-    );
-    t.deepEqual(
-        parse([ '-s', '-' ], { string: 's' }),
-        { s: '-', _: [] }
-    );
-});
-
-test('-a -- b', function (t) {
-    t.plan(3);
-    t.deepEqual(parse([ '-a', '--', 'b' ]), { a: true, _: [ 'b' ] });
-    t.deepEqual(parse([ '--a', '--', 'b' ]), { a: true, _: [ 'b' ] });
-    t.deepEqual(parse([ '--a', '--', 'b' ]), { a: true, _: [ 'b' ] });
-});
-
-test('move arguments after the -- into their own `--` array', function(t) {
-    t.plan(1);
-    t.deepEqual(
-        parse([ '--name', 'John', 'before', '--', 'after' ], { '--': true }),
-        { name: 'John', _: [ 'before' ], '--': [ 'after' ] });
-});

+ 0 - 35
express-server/node_modules/minimist/test/default_bool.js

@@ -1,35 +0,0 @@
-var test = require('tape');
-var parse = require('../');
-
-test('boolean default true', function (t) {
-    var argv = parse([], {
-        boolean: 'sometrue',
-        default: { sometrue: true }
-    });
-    t.equal(argv.sometrue, true);
-    t.end();
-});
-
-test('boolean default false', function (t) {
-    var argv = parse([], {
-        boolean: 'somefalse',
-        default: { somefalse: false }
-    });
-    t.equal(argv.somefalse, false);
-    t.end();
-});
-
-test('boolean default to null', function (t) {
-    var argv = parse([], {
-        boolean: 'maybe',
-        default: { maybe: null }
-    });
-    t.equal(argv.maybe, null);
-    var argv = parse(['--maybe'], {
-        boolean: 'maybe',
-        default: { maybe: null }
-    });
-    t.equal(argv.maybe, true);
-    t.end();
-
-})

+ 0 - 22
express-server/node_modules/minimist/test/dotted.js

@@ -1,22 +0,0 @@
-var parse = require('../');
-var test = require('tape');
-
-test('dotted alias', function (t) {
-    var argv = parse(['--a.b', '22'], {default: {'a.b': 11}, alias: {'a.b': 'aa.bb'}});
-    t.equal(argv.a.b, 22);
-    t.equal(argv.aa.bb, 22);
-    t.end();
-});
-
-test('dotted default', function (t) {
-    var argv = parse('', {default: {'a.b': 11}, alias: {'a.b': 'aa.bb'}});
-    t.equal(argv.a.b, 11);
-    t.equal(argv.aa.bb, 11);
-    t.end();
-});
-
-test('dotted default with no alias', function (t) {
-    var argv = parse('', {default: {'a.b': 11}});
-    t.equal(argv.a.b, 11);
-    t.end();
-});

+ 0 - 16
express-server/node_modules/minimist/test/kv_short.js

@@ -1,16 +0,0 @@
-var parse = require('../');
-var test = require('tape');
-
-test('short -k=v' , function (t) {
-    t.plan(1);
-    
-    var argv = parse([ '-b=123' ]);
-    t.deepEqual(argv, { b: 123, _: [] });
-});
-
-test('multi short -k=v' , function (t) {
-    t.plan(1);
-    
-    var argv = parse([ '-a=whatever', '-b=robots' ]);
-    t.deepEqual(argv, { a: 'whatever', b: 'robots', _: [] });
-});

+ 0 - 31
express-server/node_modules/minimist/test/long.js

@@ -1,31 +0,0 @@
-var test = require('tape');
-var parse = require('../');
-
-test('long opts', function (t) {
-    t.deepEqual(
-        parse([ '--bool' ]),
-        { bool : true, _ : [] },
-        'long boolean'
-    );
-    t.deepEqual(
-        parse([ '--pow', 'xixxle' ]),
-        { pow : 'xixxle', _ : [] },
-        'long capture sp'
-    );
-    t.deepEqual(
-        parse([ '--pow=xixxle' ]),
-        { pow : 'xixxle', _ : [] },
-        'long capture eq'
-    );
-    t.deepEqual(
-        parse([ '--host', 'localhost', '--port', '555' ]),
-        { host : 'localhost', port : 555, _ : [] },
-        'long captures sp'
-    );
-    t.deepEqual(
-        parse([ '--host=localhost', '--port=555' ]),
-        { host : 'localhost', port : 555, _ : [] },
-        'long captures eq'
-    );
-    t.end();
-});

+ 0 - 36
express-server/node_modules/minimist/test/num.js

@@ -1,36 +0,0 @@
-var parse = require('../');
-var test = require('tape');
-
-test('nums', function (t) {
-    var argv = parse([
-        '-x', '1234',
-        '-y', '5.67',
-        '-z', '1e7',
-        '-w', '10f',
-        '--hex', '0xdeadbeef',
-        '789'
-    ]);
-    t.deepEqual(argv, {
-        x : 1234,
-        y : 5.67,
-        z : 1e7,
-        w : '10f',
-        hex : 0xdeadbeef,
-        _ : [ 789 ]
-    });
-    t.deepEqual(typeof argv.x, 'number');
-    t.deepEqual(typeof argv.y, 'number');
-    t.deepEqual(typeof argv.z, 'number');
-    t.deepEqual(typeof argv.w, 'string');
-    t.deepEqual(typeof argv.hex, 'number');
-    t.deepEqual(typeof argv._[0], 'number');
-    t.end();
-});
-
-test('already a number', function (t) {
-    var argv = parse([ '-x', 1234, 789 ]);
-    t.deepEqual(argv, { x : 1234, _ : [ 789 ] });
-    t.deepEqual(typeof argv.x, 'number');
-    t.deepEqual(typeof argv._[0], 'number');
-    t.end();
-});

+ 0 - 197
express-server/node_modules/minimist/test/parse.js

@@ -1,197 +0,0 @@
-var parse = require('../');
-var test = require('tape');
-
-test('parse args', function (t) {
-    t.deepEqual(
-        parse([ '--no-moo' ]),
-        { moo : false, _ : [] },
-        'no'
-    );
-    t.deepEqual(
-        parse([ '-v', 'a', '-v', 'b', '-v', 'c' ]),
-        { v : ['a','b','c'], _ : [] },
-        'multi'
-    );
-    t.end();
-});
- 
-test('comprehensive', function (t) {
-    t.deepEqual(
-        parse([
-            '--name=meowmers', 'bare', '-cats', 'woo',
-            '-h', 'awesome', '--multi=quux',
-            '--key', 'value',
-            '-b', '--bool', '--no-meep', '--multi=baz',
-            '--', '--not-a-flag', 'eek'
-        ]),
-        {
-            c : true,
-            a : true,
-            t : true,
-            s : 'woo',
-            h : 'awesome',
-            b : true,
-            bool : true,
-            key : 'value',
-            multi : [ 'quux', 'baz' ],
-            meep : false,
-            name : 'meowmers',
-            _ : [ 'bare', '--not-a-flag', 'eek' ]
-        }
-    );
-    t.end();
-});
-
-test('flag boolean', function (t) {
-    var argv = parse([ '-t', 'moo' ], { boolean: 't' });
-    t.deepEqual(argv, { t : true, _ : [ 'moo' ] });
-    t.deepEqual(typeof argv.t, 'boolean');
-    t.end();
-});
-
-test('flag boolean value', function (t) {
-    var argv = parse(['--verbose', 'false', 'moo', '-t', 'true'], {
-        boolean: [ 't', 'verbose' ],
-        default: { verbose: true }
-    });
-    
-    t.deepEqual(argv, {
-        verbose: false,
-        t: true,
-        _: ['moo']
-    });
-    
-    t.deepEqual(typeof argv.verbose, 'boolean');
-    t.deepEqual(typeof argv.t, 'boolean');
-    t.end();
-});
-
-test('newlines in params' , function (t) {
-    var args = parse([ '-s', "X\nX" ])
-    t.deepEqual(args, { _ : [], s : "X\nX" });
-    
-    // reproduce in bash:
-    // VALUE="new
-    // line"
-    // node program.js --s="$VALUE"
-    args = parse([ "--s=X\nX" ])
-    t.deepEqual(args, { _ : [], s : "X\nX" });
-    t.end();
-});
-
-test('strings' , function (t) {
-    var s = parse([ '-s', '0001234' ], { string: 's' }).s;
-    t.equal(s, '0001234');
-    t.equal(typeof s, 'string');
-    
-    var x = parse([ '-x', '56' ], { string: 'x' }).x;
-    t.equal(x, '56');
-    t.equal(typeof x, 'string');
-    t.end();
-});
-
-test('stringArgs', function (t) {
-    var s = parse([ '  ', '  ' ], { string: '_' })._;
-    t.same(s.length, 2);
-    t.same(typeof s[0], 'string');
-    t.same(s[0], '  ');
-    t.same(typeof s[1], 'string');
-    t.same(s[1], '  ');
-    t.end();
-});
-
-test('empty strings', function(t) {
-    var s = parse([ '-s' ], { string: 's' }).s;
-    t.equal(s, '');
-    t.equal(typeof s, 'string');
-
-    var str = parse([ '--str' ], { string: 'str' }).str;
-    t.equal(str, '');
-    t.equal(typeof str, 'string');
-
-    var letters = parse([ '-art' ], {
-        string: [ 'a', 't' ]
-    });
-
-    t.equal(letters.a, '');
-    t.equal(letters.r, true);
-    t.equal(letters.t, '');
-
-    t.end();
-});
-
-
-test('string and alias', function(t) {
-    var x = parse([ '--str',  '000123' ], {
-        string: 's',
-        alias: { s: 'str' }
-    });
-
-    t.equal(x.str, '000123');
-    t.equal(typeof x.str, 'string');
-    t.equal(x.s, '000123');
-    t.equal(typeof x.s, 'string');
-
-    var y = parse([ '-s',  '000123' ], {
-        string: 'str',
-        alias: { str: 's' }
-    });
-
-    t.equal(y.str, '000123');
-    t.equal(typeof y.str, 'string');
-    t.equal(y.s, '000123');
-    t.equal(typeof y.s, 'string');
-    t.end();
-});
-
-test('slashBreak', function (t) {
-    t.same(
-        parse([ '-I/foo/bar/baz' ]),
-        { I : '/foo/bar/baz', _ : [] }
-    );
-    t.same(
-        parse([ '-xyz/foo/bar/baz' ]),
-        { x : true, y : true, z : '/foo/bar/baz', _ : [] }
-    );
-    t.end();
-});
-
-test('alias', function (t) {
-    var argv = parse([ '-f', '11', '--zoom', '55' ], {
-        alias: { z: 'zoom' }
-    });
-    t.equal(argv.zoom, 55);
-    t.equal(argv.z, argv.zoom);
-    t.equal(argv.f, 11);
-    t.end();
-});
-
-test('multiAlias', function (t) {
-    var argv = parse([ '-f', '11', '--zoom', '55' ], {
-        alias: { z: [ 'zm', 'zoom' ] }
-    });
-    t.equal(argv.zoom, 55);
-    t.equal(argv.z, argv.zoom);
-    t.equal(argv.z, argv.zm);
-    t.equal(argv.f, 11);
-    t.end();
-});
-
-test('nested dotted objects', function (t) {
-    var argv = parse([
-        '--foo.bar', '3', '--foo.baz', '4',
-        '--foo.quux.quibble', '5', '--foo.quux.o_O',
-        '--beep.boop'
-    ]);
-    
-    t.same(argv.foo, {
-        bar : 3,
-        baz : 4,
-        quux : {
-            quibble : 5,
-            o_O : true
-        }
-    });
-    t.same(argv.beep, { boop : true });
-    t.end();
-});

+ 0 - 0
express-server/node_modules/minimist/test/parse_modified.js


部分文件因为文件数量过多而无法显示