-
-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.
-
diff --git a/backend/node_modules/cookie/README.md b/backend/node_modules/cookie/README.md
deleted file mode 100644
index 71fdac111..000000000
--- a/backend/node_modules/cookie/README.md
+++ /dev/null
@@ -1,317 +0,0 @@
-# cookie
-
-[![NPM Version][npm-version-image]][npm-url]
-[![NPM Downloads][npm-downloads-image]][npm-url]
-[![Node.js Version][node-image]][node-url]
-[![Build Status][ci-image]][ci-url]
-[![Coverage Status][coveralls-image]][coveralls-url]
-
-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
-```
-
-## API
-
-```js
-var cookie = require('cookie');
-```
-
-### cookie.parse(str, options)
-
-Parse an HTTP `Cookie` header string and returning an object of all cookie name-value pairs.
-The `str` argument is the string representing a `Cookie` header value and `options` is an
-optional object containing additional parsing options.
-
-```js
-var cookies = cookie.parse('foo=bar; equation=E%3Dmc%5E2');
-// { foo: 'bar', equation: 'E=mc^2' }
-```
-
-#### Options
-
-`cookie.parse` accepts these properties in the options object.
-
-##### decode
-
-Specifies a function that will be used to decode a cookie's value. Since the value of a cookie
-has a limited character set (and must be a simple string), this function can be used to decode
-a previously-encoded cookie value into a JavaScript string or other object.
-
-The default function is the global `decodeURIComponent`, which will decode any URL-encoded
-sequences into their byte representations.
-
-**note** if an error is thrown from this function, the original, non-decoded cookie value will
-be returned as the cookie's value.
-
-### cookie.serialize(name, value, options)
-
-Serialize a cookie name-value pair into a `Set-Cookie` header string. The `name` argument is the
-name for the cookie, the `value` argument is the value to set the cookie to, and the `options`
-argument is an optional object containing additional serialization options.
-
-```js
-var setCookie = cookie.serialize('foo', 'bar');
-// foo=bar
-```
-
-#### Options
-
-`cookie.serialize` accepts these properties in the options object.
-
-##### domain
-
-Specifies the value for the [`Domain` `Set-Cookie` attribute][rfc-6265-5.2.3]. By default, no
-domain is set, and most clients will consider the cookie to apply to only the current domain.
-
-##### encode
-
-Specifies a function that will be used to encode a cookie's value. Since value of a cookie
-has a limited character set (and must be a simple string), this function can be used to encode
-a value into a string suited for a cookie's value.
-
-The default function is the global `encodeURIComponent`, which will encode a JavaScript string
-into UTF-8 byte sequences and then URL-encode any that fall outside of the cookie range.
-
-##### expires
-
-Specifies the `Date` object to be the value for the [`Expires` `Set-Cookie` attribute][rfc-6265-5.2.1].
-By default, no expiration is set, and most clients will consider this a "non-persistent cookie" and
-will delete it on a condition like exiting a web browser application.
-
-**note** the [cookie storage model specification][rfc-6265-5.3] states that if both `expires` and
-`maxAge` are set, then `maxAge` takes precedence, but it is possible not all clients by obey this,
-so if both are set, they should point to the same date and time.
-
-##### httpOnly
-
-Specifies the `boolean` value for the [`HttpOnly` `Set-Cookie` attribute][rfc-6265-5.2.6]. When truthy,
-the `HttpOnly` attribute is set, otherwise it is not. By default, the `HttpOnly` attribute is not set.
-
-**note** be careful when setting this to `true`, as compliant clients will not allow client-side
-JavaScript to see the cookie in `document.cookie`.
-
-##### maxAge
-
-Specifies the `number` (in seconds) to be the value for the [`Max-Age` `Set-Cookie` attribute][rfc-6265-5.2.2].
-The given number will be converted to an integer by rounding down. By default, no maximum age is set.
-
-**note** the [cookie storage model specification][rfc-6265-5.3] states that if both `expires` and
-`maxAge` are set, then `maxAge` takes precedence, but it is possible not all clients by obey this,
-so if both are set, they should point to the same date and time.
-
-##### partitioned
-
-Specifies the `boolean` value for the [`Partitioned` `Set-Cookie`](rfc-cutler-httpbis-partitioned-cookies)
-attribute. When truthy, the `Partitioned` attribute is set, otherwise it is not. By default, the
-`Partitioned` attribute is not set.
-
-**note** This is an attribute that has not yet been fully standardized, and may change in the future.
-This also means many clients may ignore this attribute until they understand it.
-
-More information about can be found in [the proposal](https://github.com/privacycg/CHIPS).
-
-##### path
-
-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-09-5.4.7].
-
- - `true` will set the `SameSite` attribute to `Strict` for strict same site enforcement.
- - `false` will not set the `SameSite` attribute.
- - `'lax'` will set the `SameSite` attribute to `Lax` for lax same site enforcement.
- - `'none'` will set the `SameSite` attribute to `None` for an explicit cross-site cookie.
- - `'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-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.
-
-##### secure
-
-Specifies the `boolean` value for the [`Secure` `Set-Cookie` attribute][rfc-6265-5.2.5]. When truthy,
-the `Secure` attribute is set, otherwise it is not. By default, the `Secure` attribute is not set.
-
-**note** be careful when setting this to `true`, as compliant clients will not send the cookie back to
-the server in the future if the browser does not have an HTTPS connection.
-
-## Example
-
-The following example uses this module in conjunction with the Node.js core HTTP server
-to prompt a user for their name and display it back on future visits.
-
-```js
-var cookie = require('cookie');
-var escapeHtml = require('escape-html');
-var http = require('http');
-var url = require('url');
-
-function onRequest(req, res) {
- // Parse the query string
- var query = url.parse(req.url, true, true).query;
-
- if (query && query.name) {
- // Set a new cookie with the name
- res.setHeader('Set-Cookie', cookie.serialize('name', String(query.name), {
- httpOnly: true,
- maxAge: 60 * 60 * 24 * 7 // 1 week
- }));
-
- // Redirect back after setting cookie
- res.statusCode = 302;
- res.setHeader('Location', req.headers.referer || '/');
- res.end();
- return;
- }
-
- // Parse the cookies on the request
- var cookies = cookie.parse(req.headers.cookie || '');
-
- // Get the visitor name set in the cookie
- var name = cookies.name;
-
- res.setHeader('Content-Type', 'text/html; charset=UTF-8');
-
- if (name) {
- res.write('Welcome back, ' + escapeHtml(name) + '!
');
- } else {
- res.write('Hello, new visitor!
');
- }
-
- res.write('');
-}
-
-http.createServer(onRequest).listen(3000);
-```
-
-## Testing
-
-```sh
-$ npm test
-```
-
-## Benchmark
-
-```
-$ npm run bench
-
-> cookie@0.5.0 bench
-> node benchmark/index.js
-
- node@18.18.2
- acorn@8.10.0
- ada@2.6.0
- ares@1.19.1
- brotli@1.0.9
- cldr@43.1
- icu@73.2
- llhttp@6.0.11
- modules@108
- napi@9
- nghttp2@1.57.0
- nghttp3@0.7.0
- ngtcp2@0.8.1
- openssl@3.0.10+quic
- simdutf@3.2.14
- tz@2023c
- undici@5.26.3
- unicode@15.0
- uv@1.44.2
- uvwasi@0.0.18
- v8@10.2.154.26-node.26
- zlib@1.2.13.1-motley
-
-> node benchmark/parse-top.js
-
- cookie.parse - top sites
-
- 14 tests completed.
-
- parse accounts.google.com x 2,588,913 ops/sec ±0.74% (186 runs sampled)
- parse apple.com x 2,370,002 ops/sec ±0.69% (186 runs sampled)
- parse cloudflare.com x 2,213,102 ops/sec ±0.88% (188 runs sampled)
- parse docs.google.com x 2,194,157 ops/sec ±1.03% (184 runs sampled)
- parse drive.google.com x 2,265,084 ops/sec ±0.79% (187 runs sampled)
- parse en.wikipedia.org x 457,099 ops/sec ±0.81% (186 runs sampled)
- parse linkedin.com x 504,407 ops/sec ±0.89% (186 runs sampled)
- parse maps.google.com x 1,230,959 ops/sec ±0.98% (186 runs sampled)
- parse microsoft.com x 926,294 ops/sec ±0.88% (184 runs sampled)
- parse play.google.com x 2,311,338 ops/sec ±0.83% (185 runs sampled)
- parse support.google.com x 1,508,850 ops/sec ±0.86% (186 runs sampled)
- parse www.google.com x 1,022,582 ops/sec ±1.32% (182 runs sampled)
- parse youtu.be x 332,136 ops/sec ±1.02% (185 runs sampled)
- parse youtube.com x 323,833 ops/sec ±0.77% (183 runs sampled)
-
-> node benchmark/parse.js
-
- cookie.parse - generic
-
- 6 tests completed.
-
- simple x 3,214,032 ops/sec ±1.61% (183 runs sampled)
- decode x 587,237 ops/sec ±1.16% (187 runs sampled)
- unquote x 2,954,618 ops/sec ±1.35% (183 runs sampled)
- duplicates x 857,008 ops/sec ±0.89% (187 runs sampled)
- 10 cookies x 292,133 ops/sec ±0.89% (187 runs sampled)
- 100 cookies x 22,610 ops/sec ±0.68% (187 runs sampled)
-```
-
-## References
-
-- [RFC 6265: HTTP State Management Mechanism][rfc-6265]
-- [Same-site Cookies][rfc-6265bis-09-5.4.7]
-
-[rfc-cutler-httpbis-partitioned-cookies]: https://tools.ietf.org/html/draft-cutler-httpbis-partitioned-cookies/
-[rfc-west-cookie-priority-00-4.1]: https://tools.ietf.org/html/draft-west-cookie-priority-00#section-4.1
-[rfc-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
-[rfc-6265-5.2.2]: https://tools.ietf.org/html/rfc6265#section-5.2.2
-[rfc-6265-5.2.3]: https://tools.ietf.org/html/rfc6265#section-5.2.3
-[rfc-6265-5.2.4]: https://tools.ietf.org/html/rfc6265#section-5.2.4
-[rfc-6265-5.2.5]: https://tools.ietf.org/html/rfc6265#section-5.2.5
-[rfc-6265-5.2.6]: https://tools.ietf.org/html/rfc6265#section-5.2.6
-[rfc-6265-5.3]: https://tools.ietf.org/html/rfc6265#section-5.3
-
-## License
-
-[MIT](LICENSE)
-
-[ci-image]: https://badgen.net/github/checks/jshttp/cookie/master?label=ci
-[ci-url]: https://github.com/jshttp/cookie/actions/workflows/ci.yml
-[coveralls-image]: https://badgen.net/coveralls/c/github/jshttp/cookie/master
-[coveralls-url]: https://coveralls.io/r/jshttp/cookie?branch=master
-[node-image]: https://badgen.net/npm/node/cookie
-[node-url]: https://nodejs.org/en/download
-[npm-downloads-image]: https://badgen.net/npm/dm/cookie
-[npm-url]: https://npmjs.org/package/cookie
-[npm-version-image]: https://badgen.net/npm/v/cookie
diff --git a/backend/node_modules/cookie/SECURITY.md b/backend/node_modules/cookie/SECURITY.md
deleted file mode 100644
index fd4a6c53a..000000000
--- a/backend/node_modules/cookie/SECURITY.md
+++ /dev/null
@@ -1,25 +0,0 @@
-# Security Policies and Procedures
-
-## Reporting a Bug
-
-The `cookie` team and community take all security bugs seriously. Thank
-you for improving the security of the project. We appreciate your efforts and
-responsible disclosure and will make every effort to acknowledge your
-contributions.
-
-Report security bugs by emailing the current owner(s) of `cookie`. This
-information can be found in the npm registry using the command
-`npm owner ls cookie`.
-If unsure or unable to get the information from the above, open an issue
-in the [project issue tracker](https://github.com/jshttp/cookie/issues)
-asking for the current contact information.
-
-To ensure the timely response to your report, please ensure that the entirety
-of the report is contained within the email body and not solely behind a web
-link or an attachment.
-
-At least one owner will acknowledge your email within 48 hours, and will send a
-more detailed response within 48 hours indicating the next steps in handling
-your report. After the initial reply to your report, the owners will
-endeavor to keep you informed of the progress towards a fix and full
-announcement, and may ask for additional information or guidance.
diff --git a/backend/node_modules/cookie/index.js b/backend/node_modules/cookie/index.js
deleted file mode 100644
index 03d4c386b..000000000
--- a/backend/node_modules/cookie/index.js
+++ /dev/null
@@ -1,274 +0,0 @@
-/*!
- * cookie
- * Copyright(c) 2012-2014 Roman Shtylman
- * Copyright(c) 2015 Douglas Christopher Wilson
- * MIT Licensed
- */
-
-'use strict';
-
-/**
- * Module exports.
- * @public
- */
-
-exports.parse = parse;
-exports.serialize = serialize;
-
-/**
- * Module variables.
- * @private
- */
-
-var __toString = Object.prototype.toString
-
-/**
- * RegExp to match field-content in RFC 7230 sec 3.2
- *
- * field-content = field-vchar [ 1*( SP / HTAB ) field-vchar ]
- * field-vchar = VCHAR / obs-text
- * obs-text = %x80-FF
- */
-
-var fieldContentRegExp = /^[\u0009\u0020-\u007e\u0080-\u00ff]+$/;
-
-/**
- * Parse a cookie header.
- *
- * Parse the given cookie header string into an object
- * The object has the various cookies as keys(names) => values
- *
- * @param {string} str
- * @param {object} [options]
- * @return {object}
- * @public
- */
-
-function parse(str, options) {
- if (typeof str !== 'string') {
- throw new TypeError('argument str must be a string');
- }
-
- var obj = {}
- var opt = options || {};
- var dec = opt.decode || decode;
-
- var index = 0
- while (index < str.length) {
- var eqIdx = str.indexOf('=', index)
-
- // no more cookie pairs
- if (eqIdx === -1) {
- break
- }
-
- var endIdx = str.indexOf(';', index)
-
- 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]) {
- 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;
-}
-
-/**
- * Serialize data into a cookie header.
- *
- * Serialize the a name value pair into a cookie string suitable for
- * http headers. An optional options object specified cookie parameters.
- *
- * serialize('foo', 'bar', { httpOnly: true })
- * => "foo=bar; httpOnly"
- *
- * @param {string} name
- * @param {string} val
- * @param {object} [options]
- * @return {string}
- * @public
- */
-
-function serialize(name, val, options) {
- var opt = options || {};
- var enc = opt.encode || encode;
-
- if (typeof enc !== 'function') {
- throw new TypeError('option encode is invalid');
- }
-
- if (!fieldContentRegExp.test(name)) {
- throw new TypeError('argument name is invalid');
- }
-
- var value = enc(val);
-
- if (value && !fieldContentRegExp.test(value)) {
- throw new TypeError('argument val is invalid');
- }
-
- var str = name + '=' + value;
-
- if (null != opt.maxAge) {
- var maxAge = opt.maxAge - 0;
-
- if (isNaN(maxAge) || !isFinite(maxAge)) {
- throw new TypeError('option maxAge is invalid')
- }
-
- str += '; Max-Age=' + Math.floor(maxAge);
- }
-
- if (opt.domain) {
- if (!fieldContentRegExp.test(opt.domain)) {
- throw new TypeError('option domain is invalid');
- }
-
- str += '; Domain=' + opt.domain;
- }
-
- if (opt.path) {
- if (!fieldContentRegExp.test(opt.path)) {
- throw new TypeError('option path is invalid');
- }
-
- str += '; Path=' + opt.path;
- }
-
- if (opt.expires) {
- var expires = opt.expires
-
- if (!isDate(expires) || isNaN(expires.valueOf())) {
- throw new TypeError('option expires is invalid');
- }
-
- str += '; Expires=' + expires.toUTCString()
- }
-
- if (opt.httpOnly) {
- str += '; HttpOnly';
- }
-
- if (opt.secure) {
- str += '; Secure';
- }
-
- if (opt.partitioned) {
- str += '; Partitioned'
- }
-
- 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;
-
- switch (sameSite) {
- case true:
- str += '; SameSite=Strict';
- break;
- case 'lax':
- str += '; SameSite=Lax';
- break;
- case 'strict':
- str += '; SameSite=Strict';
- break;
- case 'none':
- str += '; SameSite=None';
- break;
- default:
- throw new TypeError('option sameSite is invalid');
- }
- }
-
- 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} val
- * @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.
- *
- * @param {string} str
- * @param {function} decode
- * @private
- */
-
-function tryDecode(str, decode) {
- try {
- return decode(str);
- } catch (e) {
- return str;
- }
-}
diff --git a/backend/node_modules/cookie/package.json b/backend/node_modules/cookie/package.json
deleted file mode 100644
index 0c3f0063d..000000000
--- a/backend/node_modules/cookie/package.json
+++ /dev/null
@@ -1,44 +0,0 @@
-{
- "name": "cookie",
- "description": "HTTP server cookie parsing and serialization",
- "version": "0.6.0",
- "author": "Roman Shtylman ",
- "contributors": [
- "Douglas Christopher Wilson "
- ],
- "license": "MIT",
- "keywords": [
- "cookie",
- "cookies"
- ],
- "repository": "jshttp/cookie",
- "devDependencies": {
- "beautify-benchmark": "0.2.4",
- "benchmark": "2.1.4",
- "eslint": "8.53.0",
- "eslint-plugin-markdown": "3.0.1",
- "mocha": "10.2.0",
- "nyc": "15.1.0",
- "safe-buffer": "5.2.1",
- "top-sites": "1.1.194"
- },
- "files": [
- "HISTORY.md",
- "LICENSE",
- "README.md",
- "SECURITY.md",
- "index.js"
- ],
- "engines": {
- "node": ">= 0.6"
- },
- "scripts": {
- "bench": "node benchmark/index.js",
- "lint": "eslint .",
- "test": "mocha --reporter spec --bail --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"
- }
-}
diff --git a/backend/node_modules/cors/CONTRIBUTING.md b/backend/node_modules/cors/CONTRIBUTING.md
deleted file mode 100644
index 591b09a13..000000000
--- a/backend/node_modules/cors/CONTRIBUTING.md
+++ /dev/null
@@ -1,33 +0,0 @@
-# contributing to `cors`
-
-CORS is a node.js package for providing a [connect](http://www.senchalabs.org/connect/)/[express](http://expressjs.com/) middleware that can be used to enable [CORS](http://en.wikipedia.org/wiki/Cross-origin_resource_sharing) with various options. Learn more about the project in [the README](README.md).
-
-## The CORS Spec
-
-[http://www.w3.org/TR/cors/](http://www.w3.org/TR/cors/)
-
-## Pull Requests Welcome
-
-* Include `'use strict';` in every javascript file.
-* 2 space indentation.
-* Please run the testing steps below before submitting.
-
-## Testing
-
-```bash
-$ npm install
-$ npm test
-```
-
-## Interactive Testing Harness
-
-[http://node-cors-client.herokuapp.com](http://node-cors-client.herokuapp.com)
-
-Related git repositories:
-
-* [https://github.com/TroyGoode/node-cors-server](https://github.com/TroyGoode/node-cors-server)
-* [https://github.com/TroyGoode/node-cors-client](https://github.com/TroyGoode/node-cors-client)
-
-## License
-
-[MIT License](http://www.opensource.org/licenses/mit-license.php)
diff --git a/backend/node_modules/cors/HISTORY.md b/backend/node_modules/cors/HISTORY.md
deleted file mode 100644
index 5762bce92..000000000
--- a/backend/node_modules/cors/HISTORY.md
+++ /dev/null
@@ -1,58 +0,0 @@
-2.8.5 / 2018-11-04
-==================
-
- * Fix setting `maxAge` option to `0`
-
-2.8.4 / 2017-07-12
-==================
-
- * Work-around Safari bug in default pre-flight response
-
-2.8.3 / 2017-03-29
-==================
-
- * Fix error when options delegate missing `methods` option
-
-2.8.2 / 2017-03-28
-==================
-
- * Fix error when frozen options are passed
- * Send "Vary: Origin" when using regular expressions
- * Send "Vary: Access-Control-Request-Headers" when dynamic `allowedHeaders`
-
-2.8.1 / 2016-09-08
-==================
-
-This release only changed documentation.
-
-2.8.0 / 2016-08-23
-==================
-
- * Add `optionsSuccessStatus` option
-
-2.7.2 / 2016-08-23
-==================
-
- * Fix error when Node.js running in strict mode
-
-2.7.1 / 2015-05-28
-==================
-
- * Move module into expressjs organization
-
-2.7.0 / 2015-05-28
-==================
-
- * Allow array of matching condition as `origin` option
- * Allow regular expression as `origin` option
-
-2.6.1 / 2015-05-28
-==================
-
- * Update `license` in package.json
-
-2.6.0 / 2015-04-27
-==================
-
- * Add `preflightContinue` option
- * Fix "Vary: Origin" header added for "*"
diff --git a/backend/node_modules/cors/LICENSE b/backend/node_modules/cors/LICENSE
deleted file mode 100644
index fd10c843f..000000000
--- a/backend/node_modules/cors/LICENSE
+++ /dev/null
@@ -1,22 +0,0 @@
-(The MIT License)
-
-Copyright (c) 2013 Troy Goode
-
-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.
diff --git a/backend/node_modules/cors/README.md b/backend/node_modules/cors/README.md
deleted file mode 100644
index 732b847ed..000000000
--- a/backend/node_modules/cors/README.md
+++ /dev/null
@@ -1,243 +0,0 @@
-# cors
-
-[![NPM Version][npm-image]][npm-url]
-[![NPM Downloads][downloads-image]][downloads-url]
-[![Build Status][travis-image]][travis-url]
-[![Test Coverage][coveralls-image]][coveralls-url]
-
-CORS is a node.js package for providing a [Connect](http://www.senchalabs.org/connect/)/[Express](http://expressjs.com/) middleware that can be used to enable [CORS](http://en.wikipedia.org/wiki/Cross-origin_resource_sharing) with various options.
-
-**[Follow me (@troygoode) on Twitter!](https://twitter.com/intent/user?screen_name=troygoode)**
-
-* [Installation](#installation)
-* [Usage](#usage)
- * [Simple Usage](#simple-usage-enable-all-cors-requests)
- * [Enable CORS for a Single Route](#enable-cors-for-a-single-route)
- * [Configuring CORS](#configuring-cors)
- * [Configuring CORS Asynchronously](#configuring-cors-asynchronously)
- * [Enabling CORS Pre-Flight](#enabling-cors-pre-flight)
-* [Configuration Options](#configuration-options)
-* [Demo](#demo)
-* [License](#license)
-* [Author](#author)
-
-## 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 cors
-```
-
-## Usage
-
-### Simple Usage (Enable *All* CORS Requests)
-
-```javascript
-var express = require('express')
-var cors = require('cors')
-var app = express()
-
-app.use(cors())
-
-app.get('/products/:id', function (req, res, next) {
- res.json({msg: 'This is CORS-enabled for all origins!'})
-})
-
-app.listen(80, function () {
- console.log('CORS-enabled web server listening on port 80')
-})
-```
-
-### Enable CORS for a Single Route
-
-```javascript
-var express = require('express')
-var cors = require('cors')
-var app = express()
-
-app.get('/products/:id', cors(), function (req, res, next) {
- res.json({msg: 'This is CORS-enabled for a Single Route'})
-})
-
-app.listen(80, function () {
- console.log('CORS-enabled web server listening on port 80')
-})
-```
-
-### Configuring CORS
-
-```javascript
-var express = require('express')
-var cors = require('cors')
-var app = express()
-
-var corsOptions = {
- origin: 'http://example.com',
- optionsSuccessStatus: 200 // some legacy browsers (IE11, various SmartTVs) choke on 204
-}
-
-app.get('/products/:id', cors(corsOptions), function (req, res, next) {
- res.json({msg: 'This is CORS-enabled for only example.com.'})
-})
-
-app.listen(80, function () {
- console.log('CORS-enabled web server listening on port 80')
-})
-```
-
-### Configuring CORS w/ Dynamic Origin
-
-```javascript
-var express = require('express')
-var cors = require('cors')
-var app = express()
-
-var whitelist = ['http://example1.com', 'http://example2.com']
-var corsOptions = {
- origin: function (origin, callback) {
- if (whitelist.indexOf(origin) !== -1) {
- callback(null, true)
- } else {
- callback(new Error('Not allowed by CORS'))
- }
- }
-}
-
-app.get('/products/:id', cors(corsOptions), function (req, res, next) {
- res.json({msg: 'This is CORS-enabled for a whitelisted domain.'})
-})
-
-app.listen(80, function () {
- console.log('CORS-enabled web server listening on port 80')
-})
-```
-
-If you do not want to block REST tools or server-to-server requests,
-add a `!origin` check in the origin function like so:
-
-```javascript
-var corsOptions = {
- origin: function (origin, callback) {
- if (whitelist.indexOf(origin) !== -1 || !origin) {
- callback(null, true)
- } else {
- callback(new Error('Not allowed by CORS'))
- }
- }
-}
-```
-
-### Enabling CORS Pre-Flight
-
-Certain CORS requests are considered 'complex' and require an initial
-`OPTIONS` request (called the "pre-flight request"). An example of a
-'complex' CORS request is one that uses an HTTP verb other than
-GET/HEAD/POST (such as DELETE) or that uses custom headers. To enable
-pre-flighting, you must add a new OPTIONS handler for the route you want
-to support:
-
-```javascript
-var express = require('express')
-var cors = require('cors')
-var app = express()
-
-app.options('/products/:id', cors()) // enable pre-flight request for DELETE request
-app.del('/products/:id', cors(), function (req, res, next) {
- res.json({msg: 'This is CORS-enabled for all origins!'})
-})
-
-app.listen(80, function () {
- console.log('CORS-enabled web server listening on port 80')
-})
-```
-
-You can also enable pre-flight across-the-board like so:
-
-```javascript
-app.options('*', cors()) // include before other routes
-```
-
-### Configuring CORS Asynchronously
-
-```javascript
-var express = require('express')
-var cors = require('cors')
-var app = express()
-
-var whitelist = ['http://example1.com', 'http://example2.com']
-var corsOptionsDelegate = function (req, callback) {
- var corsOptions;
- if (whitelist.indexOf(req.header('Origin')) !== -1) {
- corsOptions = { origin: true } // reflect (enable) the requested origin in the CORS response
- } else {
- corsOptions = { origin: false } // disable CORS for this request
- }
- callback(null, corsOptions) // callback expects two parameters: error and options
-}
-
-app.get('/products/:id', cors(corsOptionsDelegate), function (req, res, next) {
- res.json({msg: 'This is CORS-enabled for a whitelisted domain.'})
-})
-
-app.listen(80, function () {
- console.log('CORS-enabled web server listening on port 80')
-})
-```
-
-## Configuration Options
-
-* `origin`: Configures the **Access-Control-Allow-Origin** CORS header. Possible values:
- - `Boolean` - set `origin` to `true` to reflect the [request origin](http://tools.ietf.org/html/draft-abarth-origin-09), as defined by `req.header('Origin')`, or set it to `false` to disable CORS.
- - `String` - set `origin` to a specific origin. For example if you set it to `"http://example.com"` only requests from "http://example.com" will be allowed.
- - `RegExp` - set `origin` to a regular expression pattern which will be used to test the request origin. If it's a match, the request origin will be reflected. For example the pattern `/example\.com$/` will reflect any request that is coming from an origin ending with "example.com".
- - `Array` - set `origin` to an array of valid origins. Each origin can be a `String` or a `RegExp`. For example `["http://example1.com", /\.example2\.com$/]` will accept any request from "http://example1.com" or from a subdomain of "example2.com".
- - `Function` - set `origin` to a function implementing some custom logic. The function takes the request origin as the first parameter and a callback (which expects the signature `err [object], allow [bool]`) as the second.
-* `methods`: Configures the **Access-Control-Allow-Methods** CORS header. Expects a comma-delimited string (ex: 'GET,PUT,POST') or an array (ex: `['GET', 'PUT', 'POST']`).
-* `allowedHeaders`: Configures the **Access-Control-Allow-Headers** CORS header. Expects a comma-delimited string (ex: 'Content-Type,Authorization') or an array (ex: `['Content-Type', 'Authorization']`). If not specified, defaults to reflecting the headers specified in the request's **Access-Control-Request-Headers** header.
-* `exposedHeaders`: Configures the **Access-Control-Expose-Headers** CORS header. Expects a comma-delimited string (ex: 'Content-Range,X-Content-Range') or an array (ex: `['Content-Range', 'X-Content-Range']`). If not specified, no custom headers are exposed.
-* `credentials`: Configures the **Access-Control-Allow-Credentials** CORS header. Set to `true` to pass the header, otherwise it is omitted.
-* `maxAge`: Configures the **Access-Control-Max-Age** CORS header. Set to an integer to pass the header, otherwise it is omitted.
-* `preflightContinue`: Pass the CORS preflight response to the next handler.
-* `optionsSuccessStatus`: Provides a status code to use for successful `OPTIONS` requests, since some legacy browsers (IE11, various SmartTVs) choke on `204`.
-
-The default configuration is the equivalent of:
-
-```json
-{
- "origin": "*",
- "methods": "GET,HEAD,PUT,PATCH,POST,DELETE",
- "preflightContinue": false,
- "optionsSuccessStatus": 204
-}
-```
-
-For details on the effect of each CORS header, read [this](http://www.html5rocks.com/en/tutorials/cors/) article on HTML5 Rocks.
-
-## Demo
-
-A demo that illustrates CORS working (and not working) using jQuery is available here: [http://node-cors-client.herokuapp.com/](http://node-cors-client.herokuapp.com/)
-
-Code for that demo can be found here:
-
-* Client: [https://github.com/TroyGoode/node-cors-client](https://github.com/TroyGoode/node-cors-client)
-* Server: [https://github.com/TroyGoode/node-cors-server](https://github.com/TroyGoode/node-cors-server)
-
-## License
-
-[MIT License](http://www.opensource.org/licenses/mit-license.php)
-
-## Author
-
-[Troy Goode](https://github.com/TroyGoode) ([troygoode@gmail.com](mailto:troygoode@gmail.com))
-
-[coveralls-image]: https://img.shields.io/coveralls/expressjs/cors/master.svg
-[coveralls-url]: https://coveralls.io/r/expressjs/cors?branch=master
-[downloads-image]: https://img.shields.io/npm/dm/cors.svg
-[downloads-url]: https://npmjs.org/package/cors
-[npm-image]: https://img.shields.io/npm/v/cors.svg
-[npm-url]: https://npmjs.org/package/cors
-[travis-image]: https://img.shields.io/travis/expressjs/cors/master.svg
-[travis-url]: https://travis-ci.org/expressjs/cors
diff --git a/backend/node_modules/cors/lib/index.js b/backend/node_modules/cors/lib/index.js
deleted file mode 100644
index 5475aecd6..000000000
--- a/backend/node_modules/cors/lib/index.js
+++ /dev/null
@@ -1,238 +0,0 @@
-(function () {
-
- 'use strict';
-
- var assign = require('object-assign');
- var vary = require('vary');
-
- var defaults = {
- origin: '*',
- methods: 'GET,HEAD,PUT,PATCH,POST,DELETE',
- preflightContinue: false,
- optionsSuccessStatus: 204
- };
-
- function isString(s) {
- return typeof s === 'string' || s instanceof String;
- }
-
- function isOriginAllowed(origin, allowedOrigin) {
- if (Array.isArray(allowedOrigin)) {
- for (var i = 0; i < allowedOrigin.length; ++i) {
- if (isOriginAllowed(origin, allowedOrigin[i])) {
- return true;
- }
- }
- return false;
- } else if (isString(allowedOrigin)) {
- return origin === allowedOrigin;
- } else if (allowedOrigin instanceof RegExp) {
- return allowedOrigin.test(origin);
- } else {
- return !!allowedOrigin;
- }
- }
-
- function configureOrigin(options, req) {
- var requestOrigin = req.headers.origin,
- headers = [],
- isAllowed;
-
- if (!options.origin || options.origin === '*') {
- // allow any origin
- headers.push([{
- key: 'Access-Control-Allow-Origin',
- value: '*'
- }]);
- } else if (isString(options.origin)) {
- // fixed origin
- headers.push([{
- key: 'Access-Control-Allow-Origin',
- value: options.origin
- }]);
- headers.push([{
- key: 'Vary',
- value: 'Origin'
- }]);
- } else {
- isAllowed = isOriginAllowed(requestOrigin, options.origin);
- // reflect origin
- headers.push([{
- key: 'Access-Control-Allow-Origin',
- value: isAllowed ? requestOrigin : false
- }]);
- headers.push([{
- key: 'Vary',
- value: 'Origin'
- }]);
- }
-
- return headers;
- }
-
- function configureMethods(options) {
- var methods = options.methods;
- if (methods.join) {
- methods = options.methods.join(','); // .methods is an array, so turn it into a string
- }
- return {
- key: 'Access-Control-Allow-Methods',
- value: methods
- };
- }
-
- function configureCredentials(options) {
- if (options.credentials === true) {
- return {
- key: 'Access-Control-Allow-Credentials',
- value: 'true'
- };
- }
- return null;
- }
-
- function configureAllowedHeaders(options, req) {
- var allowedHeaders = options.allowedHeaders || options.headers;
- var headers = [];
-
- if (!allowedHeaders) {
- allowedHeaders = req.headers['access-control-request-headers']; // .headers wasn't specified, so reflect the request headers
- headers.push([{
- key: 'Vary',
- value: 'Access-Control-Request-Headers'
- }]);
- } else if (allowedHeaders.join) {
- allowedHeaders = allowedHeaders.join(','); // .headers is an array, so turn it into a string
- }
- if (allowedHeaders && allowedHeaders.length) {
- headers.push([{
- key: 'Access-Control-Allow-Headers',
- value: allowedHeaders
- }]);
- }
-
- return headers;
- }
-
- function configureExposedHeaders(options) {
- var headers = options.exposedHeaders;
- if (!headers) {
- return null;
- } else if (headers.join) {
- headers = headers.join(','); // .headers is an array, so turn it into a string
- }
- if (headers && headers.length) {
- return {
- key: 'Access-Control-Expose-Headers',
- value: headers
- };
- }
- return null;
- }
-
- function configureMaxAge(options) {
- var maxAge = (typeof options.maxAge === 'number' || options.maxAge) && options.maxAge.toString()
- if (maxAge && maxAge.length) {
- return {
- key: 'Access-Control-Max-Age',
- value: maxAge
- };
- }
- return null;
- }
-
- function applyHeaders(headers, res) {
- for (var i = 0, n = headers.length; i < n; i++) {
- var header = headers[i];
- if (header) {
- if (Array.isArray(header)) {
- applyHeaders(header, res);
- } else if (header.key === 'Vary' && header.value) {
- vary(res, header.value);
- } else if (header.value) {
- res.setHeader(header.key, header.value);
- }
- }
- }
- }
-
- function cors(options, req, res, next) {
- var headers = [],
- method = req.method && req.method.toUpperCase && req.method.toUpperCase();
-
- if (method === 'OPTIONS') {
- // preflight
- headers.push(configureOrigin(options, req));
- headers.push(configureCredentials(options, req));
- headers.push(configureMethods(options, req));
- headers.push(configureAllowedHeaders(options, req));
- headers.push(configureMaxAge(options, req));
- headers.push(configureExposedHeaders(options, req));
- applyHeaders(headers, res);
-
- if (options.preflightContinue) {
- next();
- } else {
- // Safari (and potentially other browsers) need content-length 0,
- // for 204 or they just hang waiting for a body
- res.statusCode = options.optionsSuccessStatus;
- res.setHeader('Content-Length', '0');
- res.end();
- }
- } else {
- // actual response
- headers.push(configureOrigin(options, req));
- headers.push(configureCredentials(options, req));
- headers.push(configureExposedHeaders(options, req));
- applyHeaders(headers, res);
- next();
- }
- }
-
- function middlewareWrapper(o) {
- // if options are static (either via defaults or custom options passed in), wrap in a function
- var optionsCallback = null;
- if (typeof o === 'function') {
- optionsCallback = o;
- } else {
- optionsCallback = function (req, cb) {
- cb(null, o);
- };
- }
-
- return function corsMiddleware(req, res, next) {
- optionsCallback(req, function (err, options) {
- if (err) {
- next(err);
- } else {
- var corsOptions = assign({}, defaults, options);
- var originCallback = null;
- if (corsOptions.origin && typeof corsOptions.origin === 'function') {
- originCallback = corsOptions.origin;
- } else if (corsOptions.origin) {
- originCallback = function (origin, cb) {
- cb(null, corsOptions.origin);
- };
- }
-
- if (originCallback) {
- originCallback(req.headers.origin, function (err2, origin) {
- if (err2 || !origin) {
- next(err2);
- } else {
- corsOptions.origin = origin;
- cors(corsOptions, req, res, next);
- }
- });
- } else {
- next();
- }
- }
- });
- };
- }
-
- // can pass either an options hash, an options delegate, or nothing
- module.exports = middlewareWrapper;
-
-}());
diff --git a/backend/node_modules/cors/package.json b/backend/node_modules/cors/package.json
deleted file mode 100644
index ff37d9843..000000000
--- a/backend/node_modules/cors/package.json
+++ /dev/null
@@ -1,41 +0,0 @@
-{
- "name": "cors",
- "description": "Node.js CORS middleware",
- "version": "2.8.5",
- "author": "Troy Goode (https://github.com/troygoode/)",
- "license": "MIT",
- "keywords": [
- "cors",
- "express",
- "connect",
- "middleware"
- ],
- "repository": "expressjs/cors",
- "main": "./lib/index.js",
- "dependencies": {
- "object-assign": "^4",
- "vary": "^1"
- },
- "devDependencies": {
- "after": "0.8.2",
- "eslint": "2.13.1",
- "express": "4.16.3",
- "mocha": "5.2.0",
- "nyc": "13.1.0",
- "supertest": "3.3.0"
- },
- "files": [
- "lib/index.js",
- "CONTRIBUTING.md",
- "HISTORY.md",
- "LICENSE",
- "README.md"
- ],
- "engines": {
- "node": ">= 0.10"
- },
- "scripts": {
- "test": "npm run lint && nyc --reporter=html --reporter=text mocha --require test/support/env",
- "lint": "eslint lib test"
- }
-}
diff --git a/backend/node_modules/debug/.coveralls.yml b/backend/node_modules/debug/.coveralls.yml
deleted file mode 100644
index 20a706858..000000000
--- a/backend/node_modules/debug/.coveralls.yml
+++ /dev/null
@@ -1 +0,0 @@
-repo_token: SIAeZjKYlHK74rbcFvNHMUzjRiMpflxve
diff --git a/backend/node_modules/debug/.eslintrc b/backend/node_modules/debug/.eslintrc
deleted file mode 100644
index 8a37ae2c2..000000000
--- a/backend/node_modules/debug/.eslintrc
+++ /dev/null
@@ -1,11 +0,0 @@
-{
- "env": {
- "browser": true,
- "node": true
- },
- "rules": {
- "no-console": 0,
- "no-empty": [1, { "allowEmptyCatch": true }]
- },
- "extends": "eslint:recommended"
-}
diff --git a/backend/node_modules/debug/.npmignore b/backend/node_modules/debug/.npmignore
deleted file mode 100644
index 5f60eecc8..000000000
--- a/backend/node_modules/debug/.npmignore
+++ /dev/null
@@ -1,9 +0,0 @@
-support
-test
-examples
-example
-*.sock
-dist
-yarn.lock
-coverage
-bower.json
diff --git a/backend/node_modules/debug/.travis.yml b/backend/node_modules/debug/.travis.yml
deleted file mode 100644
index 6c6090c3b..000000000
--- a/backend/node_modules/debug/.travis.yml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-language: node_js
-node_js:
- - "6"
- - "5"
- - "4"
-
-install:
- - make node_modules
-
-script:
- - make lint
- - make test
- - make coveralls
diff --git a/backend/node_modules/debug/CHANGELOG.md b/backend/node_modules/debug/CHANGELOG.md
deleted file mode 100644
index eadaa1895..000000000
--- a/backend/node_modules/debug/CHANGELOG.md
+++ /dev/null
@@ -1,362 +0,0 @@
-
-2.6.9 / 2017-09-22
-==================
-
- * remove ReDoS regexp in %o formatter (#504)
-
-2.6.8 / 2017-05-18
-==================
-
- * Fix: Check for undefined on browser globals (#462, @marbemac)
-
-2.6.7 / 2017-05-16
-==================
-
- * Fix: Update ms to 2.0.0 to fix regular expression denial of service vulnerability (#458, @hubdotcom)
- * Fix: Inline extend function in node implementation (#452, @dougwilson)
- * Docs: Fix typo (#455, @msasad)
-
-2.6.5 / 2017-04-27
-==================
-
- * Fix: null reference check on window.documentElement.style.WebkitAppearance (#447, @thebigredgeek)
- * Misc: clean up browser reference checks (#447, @thebigredgeek)
- * Misc: add npm-debug.log to .gitignore (@thebigredgeek)
-
-
-2.6.4 / 2017-04-20
-==================
-
- * Fix: bug that would occure if process.env.DEBUG is a non-string value. (#444, @LucianBuzzo)
- * Chore: ignore bower.json in npm installations. (#437, @joaovieira)
- * Misc: update "ms" to v0.7.3 (@tootallnate)
-
-2.6.3 / 2017-03-13
-==================
-
- * Fix: Electron reference to `process.env.DEBUG` (#431, @paulcbetts)
- * Docs: Changelog fix (@thebigredgeek)
-
-2.6.2 / 2017-03-10
-==================
-
- * Fix: DEBUG_MAX_ARRAY_LENGTH (#420, @slavaGanzin)
- * Docs: Add backers and sponsors from Open Collective (#422, @piamancini)
- * Docs: Add Slackin invite badge (@tootallnate)
-
-2.6.1 / 2017-02-10
-==================
-
- * Fix: Module's `export default` syntax fix for IE8 `Expected identifier` error
- * Fix: Whitelist DEBUG_FD for values 1 and 2 only (#415, @pi0)
- * Fix: IE8 "Expected identifier" error (#414, @vgoma)
- * Fix: Namespaces would not disable once enabled (#409, @musikov)
-
-2.6.0 / 2016-12-28
-==================
-
- * Fix: added better null pointer checks for browser useColors (@thebigredgeek)
- * Improvement: removed explicit `window.debug` export (#404, @tootallnate)
- * Improvement: deprecated `DEBUG_FD` environment variable (#405, @tootallnate)
-
-2.5.2 / 2016-12-25
-==================
-
- * Fix: reference error on window within webworkers (#393, @KlausTrainer)
- * Docs: fixed README typo (#391, @lurch)
- * Docs: added notice about v3 api discussion (@thebigredgeek)
-
-2.5.1 / 2016-12-20
-==================
-
- * Fix: babel-core compatibility
-
-2.5.0 / 2016-12-20
-==================
-
- * Fix: wrong reference in bower file (@thebigredgeek)
- * Fix: webworker compatibility (@thebigredgeek)
- * Fix: output formatting issue (#388, @kribblo)
- * Fix: babel-loader compatibility (#383, @escwald)
- * Misc: removed built asset from repo and publications (@thebigredgeek)
- * Misc: moved source files to /src (#378, @yamikuronue)
- * Test: added karma integration and replaced babel with browserify for browser tests (#378, @yamikuronue)
- * Test: coveralls integration (#378, @yamikuronue)
- * Docs: simplified language in the opening paragraph (#373, @yamikuronue)
-
-2.4.5 / 2016-12-17
-==================
-
- * Fix: `navigator` undefined in Rhino (#376, @jochenberger)
- * Fix: custom log function (#379, @hsiliev)
- * Improvement: bit of cleanup + linting fixes (@thebigredgeek)
- * Improvement: rm non-maintainted `dist/` dir (#375, @freewil)
- * Docs: simplified language in the opening paragraph. (#373, @yamikuronue)
-
-2.4.4 / 2016-12-14
-==================
-
- * Fix: work around debug being loaded in preload scripts for electron (#368, @paulcbetts)
-
-2.4.3 / 2016-12-14
-==================
-
- * Fix: navigation.userAgent error for react native (#364, @escwald)
-
-2.4.2 / 2016-12-14
-==================
-
- * Fix: browser colors (#367, @tootallnate)
- * Misc: travis ci integration (@thebigredgeek)
- * Misc: added linting and testing boilerplate with sanity check (@thebigredgeek)
-
-2.4.1 / 2016-12-13
-==================
-
- * Fix: typo that broke the package (#356)
-
-2.4.0 / 2016-12-13
-==================
-
- * Fix: bower.json references unbuilt src entry point (#342, @justmatt)
- * Fix: revert "handle regex special characters" (@tootallnate)
- * Feature: configurable util.inspect()`options for NodeJS (#327, @tootallnate)
- * Feature: %O`(big O) pretty-prints objects (#322, @tootallnate)
- * Improvement: allow colors in workers (#335, @botverse)
- * Improvement: use same color for same namespace. (#338, @lchenay)
-
-2.3.3 / 2016-11-09
-==================
-
- * Fix: Catch `JSON.stringify()` errors (#195, Jovan Alleyne)
- * Fix: Returning `localStorage` saved values (#331, Levi Thomason)
- * Improvement: Don't create an empty object when no `process` (Nathan Rajlich)
-
-2.3.2 / 2016-11-09
-==================
-
- * Fix: be super-safe in index.js as well (@TooTallNate)
- * Fix: should check whether process exists (Tom Newby)
-
-2.3.1 / 2016-11-09
-==================
-
- * Fix: Added electron compatibility (#324, @paulcbetts)
- * Improvement: Added performance optimizations (@tootallnate)
- * Readme: Corrected PowerShell environment variable example (#252, @gimre)
- * Misc: Removed yarn lock file from source control (#321, @fengmk2)
-
-2.3.0 / 2016-11-07
-==================
-
- * Fix: Consistent placement of ms diff at end of output (#215, @gorangajic)
- * Fix: Escaping of regex special characters in namespace strings (#250, @zacronos)
- * Fix: Fixed bug causing crash on react-native (#282, @vkarpov15)
- * Feature: Enabled ES6+ compatible import via default export (#212 @bucaran)
- * Feature: Added %O formatter to reflect Chrome's console.log capability (#279, @oncletom)
- * Package: Update "ms" to 0.7.2 (#315, @DevSide)
- * Package: removed superfluous version property from bower.json (#207 @kkirsche)
- * Readme: fix USE_COLORS to DEBUG_COLORS
- * Readme: Doc fixes for format string sugar (#269, @mlucool)
- * Readme: Updated docs for DEBUG_FD and DEBUG_COLORS environment variables (#232, @mattlyons0)
- * Readme: doc fixes for PowerShell (#271 #243, @exoticknight @unreadable)
- * Readme: better docs for browser support (#224, @matthewmueller)
- * Tooling: Added yarn integration for development (#317, @thebigredgeek)
- * Misc: Renamed History.md to CHANGELOG.md (@thebigredgeek)
- * Misc: Added license file (#226 #274, @CantemoInternal @sdaitzman)
- * Misc: Updated contributors (@thebigredgeek)
-
-2.2.0 / 2015-05-09
-==================
-
- * package: update "ms" to v0.7.1 (#202, @dougwilson)
- * README: add logging to file example (#193, @DanielOchoa)
- * README: fixed a typo (#191, @amir-s)
- * browser: expose `storage` (#190, @stephenmathieson)
- * Makefile: add a `distclean` target (#189, @stephenmathieson)
-
-2.1.3 / 2015-03-13
-==================
-
- * Updated stdout/stderr example (#186)
- * Updated example/stdout.js to match debug current behaviour
- * Renamed example/stderr.js to stdout.js
- * Update Readme.md (#184)
- * replace high intensity foreground color for bold (#182, #183)
-
-2.1.2 / 2015-03-01
-==================
-
- * dist: recompile
- * update "ms" to v0.7.0
- * package: update "browserify" to v9.0.3
- * component: fix "ms.js" repo location
- * changed bower package name
- * updated documentation about using debug in a browser
- * fix: security error on safari (#167, #168, @yields)
-
-2.1.1 / 2014-12-29
-==================
-
- * browser: use `typeof` to check for `console` existence
- * browser: check for `console.log` truthiness (fix IE 8/9)
- * browser: add support for Chrome apps
- * Readme: added Windows usage remarks
- * Add `bower.json` to properly support bower install
-
-2.1.0 / 2014-10-15
-==================
-
- * node: implement `DEBUG_FD` env variable support
- * package: update "browserify" to v6.1.0
- * package: add "license" field to package.json (#135, @panuhorsmalahti)
-
-2.0.0 / 2014-09-01
-==================
-
- * package: update "browserify" to v5.11.0
- * node: use stderr rather than stdout for logging (#29, @stephenmathieson)
-
-1.0.4 / 2014-07-15
-==================
-
- * dist: recompile
- * example: remove `console.info()` log usage
- * example: add "Content-Type" UTF-8 header to browser example
- * browser: place %c marker after the space character
- * browser: reset the "content" color via `color: inherit`
- * browser: add colors support for Firefox >= v31
- * debug: prefer an instance `log()` function over the global one (#119)
- * Readme: update documentation about styled console logs for FF v31 (#116, @wryk)
-
-1.0.3 / 2014-07-09
-==================
-
- * Add support for multiple wildcards in namespaces (#122, @seegno)
- * browser: fix lint
-
-1.0.2 / 2014-06-10
-==================
-
- * browser: update color palette (#113, @gscottolson)
- * common: make console logging function configurable (#108, @timoxley)
- * node: fix %o colors on old node <= 0.8.x
- * Makefile: find node path using shell/which (#109, @timoxley)
-
-1.0.1 / 2014-06-06
-==================
-
- * browser: use `removeItem()` to clear localStorage
- * browser, node: don't set DEBUG if namespaces is undefined (#107, @leedm777)
- * package: add "contributors" section
- * node: fix comment typo
- * README: list authors
-
-1.0.0 / 2014-06-04
-==================
-
- * make ms diff be global, not be scope
- * debug: ignore empty strings in enable()
- * node: make DEBUG_COLORS able to disable coloring
- * *: export the `colors` array
- * npmignore: don't publish the `dist` dir
- * Makefile: refactor to use browserify
- * package: add "browserify" as a dev dependency
- * Readme: add Web Inspector Colors section
- * node: reset terminal color for the debug content
- * node: map "%o" to `util.inspect()`
- * browser: map "%j" to `JSON.stringify()`
- * debug: add custom "formatters"
- * debug: use "ms" module for humanizing the diff
- * Readme: add "bash" syntax highlighting
- * browser: add Firebug color support
- * browser: add colors for WebKit browsers
- * node: apply log to `console`
- * rewrite: abstract common logic for Node & browsers
- * add .jshintrc file
-
-0.8.1 / 2014-04-14
-==================
-
- * package: re-add the "component" section
-
-0.8.0 / 2014-03-30
-==================
-
- * add `enable()` method for nodejs. Closes #27
- * change from stderr to stdout
- * remove unnecessary index.js file
-
-0.7.4 / 2013-11-13
-==================
-
- * remove "browserify" key from package.json (fixes something in browserify)
-
-0.7.3 / 2013-10-30
-==================
-
- * fix: catch localStorage security error when cookies are blocked (Chrome)
- * add debug(err) support. Closes #46
- * add .browser prop to package.json. Closes #42
-
-0.7.2 / 2013-02-06
-==================
-
- * fix package.json
- * fix: Mobile Safari (private mode) is broken with debug
- * fix: Use unicode to send escape character to shell instead of octal to work with strict mode javascript
-
-0.7.1 / 2013-02-05
-==================
-
- * add repository URL to package.json
- * add DEBUG_COLORED to force colored output
- * add browserify support
- * fix component. Closes #24
-
-0.7.0 / 2012-05-04
-==================
-
- * Added .component to package.json
- * Added debug.component.js build
-
-0.6.0 / 2012-03-16
-==================
-
- * Added support for "-" prefix in DEBUG [Vinay Pulim]
- * Added `.enabled` flag to the node version [TooTallNate]
-
-0.5.0 / 2012-02-02
-==================
-
- * Added: humanize diffs. Closes #8
- * Added `debug.disable()` to the CS variant
- * Removed padding. Closes #10
- * Fixed: persist client-side variant again. Closes #9
-
-0.4.0 / 2012-02-01
-==================
-
- * Added browser variant support for older browsers [TooTallNate]
- * Added `debug.enable('project:*')` to browser variant [TooTallNate]
- * Added padding to diff (moved it to the right)
-
-0.3.0 / 2012-01-26
-==================
-
- * Added millisecond diff when isatty, otherwise UTC string
-
-0.2.0 / 2012-01-22
-==================
-
- * Added wildcard support
-
-0.1.0 / 2011-12-02
-==================
-
- * Added: remove colors unless stderr isatty [TooTallNate]
-
-0.0.1 / 2010-01-03
-==================
-
- * Initial release
diff --git a/backend/node_modules/debug/LICENSE b/backend/node_modules/debug/LICENSE
deleted file mode 100644
index 658c933d2..000000000
--- a/backend/node_modules/debug/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-(The MIT License)
-
-Copyright (c) 2014 TJ Holowaychuk
-
-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.
-
diff --git a/backend/node_modules/debug/Makefile b/backend/node_modules/debug/Makefile
deleted file mode 100644
index 584da8bf9..000000000
--- a/backend/node_modules/debug/Makefile
+++ /dev/null
@@ -1,50 +0,0 @@
-# get Makefile directory name: http://stackoverflow.com/a/5982798/376773
-THIS_MAKEFILE_PATH:=$(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST))
-THIS_DIR:=$(shell cd $(dir $(THIS_MAKEFILE_PATH));pwd)
-
-# BIN directory
-BIN := $(THIS_DIR)/node_modules/.bin
-
-# Path
-PATH := node_modules/.bin:$(PATH)
-SHELL := /bin/bash
-
-# applications
-NODE ?= $(shell which node)
-YARN ?= $(shell which yarn)
-PKG ?= $(if $(YARN),$(YARN),$(NODE) $(shell which npm))
-BROWSERIFY ?= $(NODE) $(BIN)/browserify
-
-.FORCE:
-
-install: node_modules
-
-node_modules: package.json
- @NODE_ENV= $(PKG) install
- @touch node_modules
-
-lint: .FORCE
- eslint browser.js debug.js index.js node.js
-
-test-node: .FORCE
- istanbul cover node_modules/mocha/bin/_mocha -- test/**.js
-
-test-browser: .FORCE
- mkdir -p dist
-
- @$(BROWSERIFY) \
- --standalone debug \
- . > dist/debug.js
-
- karma start --single-run
- rimraf dist
-
-test: .FORCE
- concurrently \
- "make test-node" \
- "make test-browser"
-
-coveralls:
- cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js
-
-.PHONY: all install clean distclean
diff --git a/backend/node_modules/debug/README.md b/backend/node_modules/debug/README.md
deleted file mode 100644
index f67be6b31..000000000
--- a/backend/node_modules/debug/README.md
+++ /dev/null
@@ -1,312 +0,0 @@
-# debug
-[![Build Status](https://travis-ci.org/visionmedia/debug.svg?branch=master)](https://travis-ci.org/visionmedia/debug) [![Coverage Status](https://coveralls.io/repos/github/visionmedia/debug/badge.svg?branch=master)](https://coveralls.io/github/visionmedia/debug?branch=master) [![Slack](https://visionmedia-community-slackin.now.sh/badge.svg)](https://visionmedia-community-slackin.now.sh/) [![OpenCollective](https://opencollective.com/debug/backers/badge.svg)](#backers)
-[![OpenCollective](https://opencollective.com/debug/sponsors/badge.svg)](#sponsors)
-
-
-
-A tiny node.js debugging utility modelled after node core's debugging technique.
-
-**Discussion around the V3 API is under way [here](https://github.com/visionmedia/debug/issues/370)**
-
-## Installation
-
-```bash
-$ npm install debug
-```
-
-## Usage
-
-`debug` exposes a function; simply pass this function the name of your module, and it will return a decorated version of `console.error` for you to pass debug statements to. This will allow you to toggle the debug output for different parts of your module as well as the module as a whole.
-
-Example _app.js_:
-
-```js
-var debug = require('debug')('http')
- , http = require('http')
- , name = 'My App';
-
-// fake app
-
-debug('booting %s', name);
-
-http.createServer(function(req, res){
- debug(req.method + ' ' + req.url);
- res.end('hello\n');
-}).listen(3000, function(){
- debug('listening');
-});
-
-// fake worker of some kind
-
-require('./worker');
-```
-
-Example _worker.js_:
-
-```js
-var debug = require('debug')('worker');
-
-setInterval(function(){
- debug('doing some work');
-}, 1000);
-```
-
- The __DEBUG__ environment variable is then used to enable these based on space or comma-delimited names. Here are some examples:
-
- ![debug http and worker](http://f.cl.ly/items/18471z1H402O24072r1J/Screenshot.png)
-
- ![debug worker](http://f.cl.ly/items/1X413v1a3M0d3C2c1E0i/Screenshot.png)
-
-#### Windows note
-
- On Windows the environment variable is set using the `set` command.
-
- ```cmd
- set DEBUG=*,-not_this
- ```
-
- Note that PowerShell uses different syntax to set environment variables.
-
- ```cmd
- $env:DEBUG = "*,-not_this"
- ```
-
-Then, run the program to be debugged as usual.
-
-## Millisecond diff
-
- When actively developing an application it can be useful to see when the time spent between one `debug()` call and the next. Suppose for example you invoke `debug()` before requesting a resource, and after as well, the "+NNNms" will show you how much time was spent between calls.
-
- ![](http://f.cl.ly/items/2i3h1d3t121M2Z1A3Q0N/Screenshot.png)
-
- When stdout is not a TTY, `Date#toUTCString()` is used, making it more useful for logging the debug information as shown below:
-
- ![](http://f.cl.ly/items/112H3i0e0o0P0a2Q2r11/Screenshot.png)
-
-## Conventions
-
- If you're using this in one or more of your libraries, you _should_ use the name of your library so that developers may toggle debugging as desired without guessing names. If you have more than one debuggers you _should_ prefix them with your library name and use ":" to separate features. For example "bodyParser" from Connect would then be "connect:bodyParser".
-
-## Wildcards
-
- The `*` character may be used as a wildcard. Suppose for example your library has debuggers named "connect:bodyParser", "connect:compress", "connect:session", instead of listing all three with `DEBUG=connect:bodyParser,connect:compress,connect:session`, you may simply do `DEBUG=connect:*`, or to run everything using this module simply use `DEBUG=*`.
-
- You can also exclude specific debuggers by prefixing them with a "-" character. For example, `DEBUG=*,-connect:*` would include all debuggers except those starting with "connect:".
-
-## Environment Variables
-
- When running through Node.js, you can set a few environment variables that will
- change the behavior of the debug logging:
-
-| Name | Purpose |
-|-----------|-------------------------------------------------|
-| `DEBUG` | Enables/disables specific debugging namespaces. |
-| `DEBUG_COLORS`| Whether or not to use colors in the debug output. |
-| `DEBUG_DEPTH` | Object inspection depth. |
-| `DEBUG_SHOW_HIDDEN` | Shows hidden properties on inspected objects. |
-
-
- __Note:__ The environment variables beginning with `DEBUG_` end up being
- converted into an Options object that gets used with `%o`/`%O` formatters.
- See the Node.js documentation for
- [`util.inspect()`](https://nodejs.org/api/util.html#util_util_inspect_object_options)
- for the complete list.
-
-## Formatters
-
-
- Debug uses [printf-style](https://wikipedia.org/wiki/Printf_format_string) formatting. Below are the officially supported formatters:
-
-| Formatter | Representation |
-|-----------|----------------|
-| `%O` | Pretty-print an Object on multiple lines. |
-| `%o` | Pretty-print an Object all on a single line. |
-| `%s` | String. |
-| `%d` | Number (both integer and float). |
-| `%j` | JSON. Replaced with the string '[Circular]' if the argument contains circular references. |
-| `%%` | Single percent sign ('%'). This does not consume an argument. |
-
-### Custom formatters
-
- You can add custom formatters by extending the `debug.formatters` object. For example, if you wanted to add support for rendering a Buffer as hex with `%h`, you could do something like:
-
-```js
-const createDebug = require('debug')
-createDebug.formatters.h = (v) => {
- return v.toString('hex')
-}
-
-// …elsewhere
-const debug = createDebug('foo')
-debug('this is hex: %h', new Buffer('hello world'))
-// foo this is hex: 68656c6c6f20776f726c6421 +0ms
-```
-
-## Browser support
- You can build a browser-ready script using [browserify](https://github.com/substack/node-browserify),
- or just use the [browserify-as-a-service](https://wzrd.in/) [build](https://wzrd.in/standalone/debug@latest),
- if you don't want to build it yourself.
-
- Debug's enable state is currently persisted by `localStorage`.
- Consider the situation shown below where you have `worker:a` and `worker:b`,
- and wish to debug both. You can enable this using `localStorage.debug`:
-
-```js
-localStorage.debug = 'worker:*'
-```
-
-And then refresh the page.
-
-```js
-a = debug('worker:a');
-b = debug('worker:b');
-
-setInterval(function(){
- a('doing some work');
-}, 1000);
-
-setInterval(function(){
- b('doing some work');
-}, 1200);
-```
-
-#### Web Inspector Colors
-
- Colors are also enabled on "Web Inspectors" that understand the `%c` formatting
- option. These are WebKit web inspectors, Firefox ([since version
- 31](https://hacks.mozilla.org/2014/05/editable-box-model-multiple-selection-sublime-text-keys-much-more-firefox-developer-tools-episode-31/))
- and the Firebug plugin for Firefox (any version).
-
- Colored output looks something like:
-
- ![](https://cloud.githubusercontent.com/assets/71256/3139768/b98c5fd8-e8ef-11e3-862a-f7253b6f47c6.png)
-
-
-## Output streams
-
- By default `debug` will log to stderr, however this can be configured per-namespace by overriding the `log` method:
-
-Example _stdout.js_:
-
-```js
-var debug = require('debug');
-var error = debug('app:error');
-
-// by default stderr is used
-error('goes to stderr!');
-
-var log = debug('app:log');
-// set this namespace to log via console.log
-log.log = console.log.bind(console); // don't forget to bind to console!
-log('goes to stdout');
-error('still goes to stderr!');
-
-// set all output to go via console.info
-// overrides all per-namespace log settings
-debug.log = console.info.bind(console);
-error('now goes to stdout via console.info');
-log('still goes to stdout, but via console.info now');
-```
-
-
-## Authors
-
- - TJ Holowaychuk
- - Nathan Rajlich
- - Andrew Rhyne
-
-## Backers
-
-Support us with a monthly donation and help us continue our activities. [[Become a backer](https://opencollective.com/debug#backer)]
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-## Sponsors
-
-Become a sponsor and get your logo on our README on Github with a link to your site. [[Become a sponsor](https://opencollective.com/debug#sponsor)]
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-## License
-
-(The MIT License)
-
-Copyright (c) 2014-2016 TJ Holowaychuk <tj@vision-media.ca>
-
-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.
diff --git a/backend/node_modules/debug/component.json b/backend/node_modules/debug/component.json
deleted file mode 100644
index 9de26410f..000000000
--- a/backend/node_modules/debug/component.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "name": "debug",
- "repo": "visionmedia/debug",
- "description": "small debugging utility",
- "version": "2.6.9",
- "keywords": [
- "debug",
- "log",
- "debugger"
- ],
- "main": "src/browser.js",
- "scripts": [
- "src/browser.js",
- "src/debug.js"
- ],
- "dependencies": {
- "rauchg/ms.js": "0.7.1"
- }
-}
diff --git a/backend/node_modules/debug/karma.conf.js b/backend/node_modules/debug/karma.conf.js
deleted file mode 100644
index 103a82d15..000000000
--- a/backend/node_modules/debug/karma.conf.js
+++ /dev/null
@@ -1,70 +0,0 @@
-// Karma configuration
-// Generated on Fri Dec 16 2016 13:09:51 GMT+0000 (UTC)
-
-module.exports = function(config) {
- config.set({
-
- // base path that will be used to resolve all patterns (eg. files, exclude)
- basePath: '',
-
-
- // frameworks to use
- // available frameworks: https://npmjs.org/browse/keyword/karma-adapter
- frameworks: ['mocha', 'chai', 'sinon'],
-
-
- // list of files / patterns to load in the browser
- files: [
- 'dist/debug.js',
- 'test/*spec.js'
- ],
-
-
- // list of files to exclude
- exclude: [
- 'src/node.js'
- ],
-
-
- // preprocess matching files before serving them to the browser
- // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor
- preprocessors: {
- },
-
- // test results reporter to use
- // possible values: 'dots', 'progress'
- // available reporters: https://npmjs.org/browse/keyword/karma-reporter
- reporters: ['progress'],
-
-
- // web server port
- port: 9876,
-
-
- // enable / disable colors in the output (reporters and logs)
- colors: true,
-
-
- // level of logging
- // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
- logLevel: config.LOG_INFO,
-
-
- // enable / disable watching file and executing tests whenever any file changes
- autoWatch: true,
-
-
- // start these browsers
- // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher
- browsers: ['PhantomJS'],
-
-
- // Continuous Integration mode
- // if true, Karma captures browsers, runs the tests and exits
- singleRun: false,
-
- // Concurrency level
- // how many browser should be started simultaneous
- concurrency: Infinity
- })
-}
diff --git a/backend/node_modules/debug/node.js b/backend/node_modules/debug/node.js
deleted file mode 100644
index 7fc36fe6d..000000000
--- a/backend/node_modules/debug/node.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('./src/node');
diff --git a/backend/node_modules/debug/package.json b/backend/node_modules/debug/package.json
deleted file mode 100644
index dc787ba76..000000000
--- a/backend/node_modules/debug/package.json
+++ /dev/null
@@ -1,49 +0,0 @@
-{
- "name": "debug",
- "version": "2.6.9",
- "repository": {
- "type": "git",
- "url": "git://github.com/visionmedia/debug.git"
- },
- "description": "small debugging utility",
- "keywords": [
- "debug",
- "log",
- "debugger"
- ],
- "author": "TJ Holowaychuk ",
- "contributors": [
- "Nathan Rajlich (http://n8.io)",
- "Andrew Rhyne "
- ],
- "license": "MIT",
- "dependencies": {
- "ms": "2.0.0"
- },
- "devDependencies": {
- "browserify": "9.0.3",
- "chai": "^3.5.0",
- "concurrently": "^3.1.0",
- "coveralls": "^2.11.15",
- "eslint": "^3.12.1",
- "istanbul": "^0.4.5",
- "karma": "^1.3.0",
- "karma-chai": "^0.1.0",
- "karma-mocha": "^1.3.0",
- "karma-phantomjs-launcher": "^1.0.2",
- "karma-sinon": "^1.0.5",
- "mocha": "^3.2.0",
- "mocha-lcov-reporter": "^1.2.0",
- "rimraf": "^2.5.4",
- "sinon": "^1.17.6",
- "sinon-chai": "^2.8.0"
- },
- "main": "./src/index.js",
- "browser": "./src/browser.js",
- "component": {
- "scripts": {
- "debug/index.js": "browser.js",
- "debug/debug.js": "debug.js"
- }
- }
-}
diff --git a/backend/node_modules/debug/src/browser.js b/backend/node_modules/debug/src/browser.js
deleted file mode 100644
index 710692493..000000000
--- a/backend/node_modules/debug/src/browser.js
+++ /dev/null
@@ -1,185 +0,0 @@
-/**
- * This is the web browser implementation of `debug()`.
- *
- * Expose `debug()` as the module.
- */
-
-exports = module.exports = require('./debug');
-exports.log = log;
-exports.formatArgs = formatArgs;
-exports.save = save;
-exports.load = load;
-exports.useColors = useColors;
-exports.storage = 'undefined' != typeof chrome
- && 'undefined' != typeof chrome.storage
- ? chrome.storage.local
- : localstorage();
-
-/**
- * Colors.
- */
-
-exports.colors = [
- 'lightseagreen',
- 'forestgreen',
- 'goldenrod',
- 'dodgerblue',
- 'darkorchid',
- 'crimson'
-];
-
-/**
- * Currently only WebKit-based Web Inspectors, Firefox >= v31,
- * and the Firebug extension (any Firefox version) are known
- * to support "%c" CSS customizations.
- *
- * TODO: add a `localStorage` variable to explicitly enable/disable colors
- */
-
-function useColors() {
- // NB: In an Electron preload script, document will be defined but not fully
- // initialized. Since we know we're in Chrome, we'll just detect this case
- // explicitly
- if (typeof window !== 'undefined' && window.process && window.process.type === 'renderer') {
- return true;
- }
-
- // is webkit? http://stackoverflow.com/a/16459606/376773
- // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632
- return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||
- // is firebug? http://stackoverflow.com/a/398120/376773
- (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||
- // is firefox >= v31?
- // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages
- (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||
- // double check webkit in userAgent just in case we are in a worker
- (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/));
-}
-
-/**
- * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.
- */
-
-exports.formatters.j = function(v) {
- try {
- return JSON.stringify(v);
- } catch (err) {
- return '[UnexpectedJSONParseError]: ' + err.message;
- }
-};
-
-
-/**
- * Colorize log arguments if enabled.
- *
- * @api public
- */
-
-function formatArgs(args) {
- var useColors = this.useColors;
-
- args[0] = (useColors ? '%c' : '')
- + this.namespace
- + (useColors ? ' %c' : ' ')
- + args[0]
- + (useColors ? '%c ' : ' ')
- + '+' + exports.humanize(this.diff);
-
- if (!useColors) return;
-
- var c = 'color: ' + this.color;
- args.splice(1, 0, c, 'color: inherit')
-
- // the final "%c" is somewhat tricky, because there could be other
- // arguments passed either before or after the %c, so we need to
- // figure out the correct index to insert the CSS into
- var index = 0;
- var lastC = 0;
- args[0].replace(/%[a-zA-Z%]/g, function(match) {
- if ('%%' === match) return;
- index++;
- if ('%c' === match) {
- // we only are interested in the *last* %c
- // (the user may have provided their own)
- lastC = index;
- }
- });
-
- args.splice(lastC, 0, c);
-}
-
-/**
- * Invokes `console.log()` when available.
- * No-op when `console.log` is not a "function".
- *
- * @api public
- */
-
-function log() {
- // this hackery is required for IE8/9, where
- // the `console.log` function doesn't have 'apply'
- return 'object' === typeof console
- && console.log
- && Function.prototype.apply.call(console.log, console, arguments);
-}
-
-/**
- * Save `namespaces`.
- *
- * @param {String} namespaces
- * @api private
- */
-
-function save(namespaces) {
- try {
- if (null == namespaces) {
- exports.storage.removeItem('debug');
- } else {
- exports.storage.debug = namespaces;
- }
- } catch(e) {}
-}
-
-/**
- * Load `namespaces`.
- *
- * @return {String} returns the previously persisted debug modes
- * @api private
- */
-
-function load() {
- var r;
- try {
- r = exports.storage.debug;
- } catch(e) {}
-
- // If debug isn't set in LS, and we're in Electron, try to load $DEBUG
- if (!r && typeof process !== 'undefined' && 'env' in process) {
- r = process.env.DEBUG;
- }
-
- return r;
-}
-
-/**
- * Enable namespaces listed in `localStorage.debug` initially.
- */
-
-exports.enable(load());
-
-/**
- * Localstorage attempts to return the localstorage.
- *
- * This is necessary because safari throws
- * when a user disables cookies/localstorage
- * and you attempt to access it.
- *
- * @return {LocalStorage}
- * @api private
- */
-
-function localstorage() {
- try {
- return window.localStorage;
- } catch (e) {}
-}
diff --git a/backend/node_modules/debug/src/debug.js b/backend/node_modules/debug/src/debug.js
deleted file mode 100644
index 6a5e3fc94..000000000
--- a/backend/node_modules/debug/src/debug.js
+++ /dev/null
@@ -1,202 +0,0 @@
-
-/**
- * This is the common logic for both the Node.js and web browser
- * implementations of `debug()`.
- *
- * Expose `debug()` as the module.
- */
-
-exports = module.exports = createDebug.debug = createDebug['default'] = createDebug;
-exports.coerce = coerce;
-exports.disable = disable;
-exports.enable = enable;
-exports.enabled = enabled;
-exports.humanize = require('ms');
-
-/**
- * The currently active debug mode names, and names to skip.
- */
-
-exports.names = [];
-exports.skips = [];
-
-/**
- * Map of special "%n" handling functions, for the debug "format" argument.
- *
- * Valid key names are a single, lower or upper-case letter, i.e. "n" and "N".
- */
-
-exports.formatters = {};
-
-/**
- * Previous log timestamp.
- */
-
-var prevTime;
-
-/**
- * Select a color.
- * @param {String} namespace
- * @return {Number}
- * @api private
- */
-
-function selectColor(namespace) {
- var hash = 0, i;
-
- for (i in namespace) {
- hash = ((hash << 5) - hash) + namespace.charCodeAt(i);
- hash |= 0; // Convert to 32bit integer
- }
-
- return exports.colors[Math.abs(hash) % exports.colors.length];
-}
-
-/**
- * Create a debugger with the given `namespace`.
- *
- * @param {String} namespace
- * @return {Function}
- * @api public
- */
-
-function createDebug(namespace) {
-
- function debug() {
- // disabled?
- if (!debug.enabled) return;
-
- var self = debug;
-
- // set `diff` timestamp
- var curr = +new Date();
- var ms = curr - (prevTime || curr);
- self.diff = ms;
- self.prev = prevTime;
- self.curr = curr;
- prevTime = curr;
-
- // turn the `arguments` into a proper Array
- var args = new Array(arguments.length);
- for (var i = 0; i < args.length; i++) {
- args[i] = arguments[i];
- }
-
- args[0] = exports.coerce(args[0]);
-
- if ('string' !== typeof args[0]) {
- // anything else let's inspect with %O
- args.unshift('%O');
- }
-
- // apply any `formatters` transformations
- var index = 0;
- args[0] = args[0].replace(/%([a-zA-Z%])/g, function(match, format) {
- // if we encounter an escaped % then don't increase the array index
- if (match === '%%') return match;
- index++;
- var formatter = exports.formatters[format];
- if ('function' === typeof formatter) {
- var val = args[index];
- match = formatter.call(self, val);
-
- // now we need to remove `args[index]` since it's inlined in the `format`
- args.splice(index, 1);
- index--;
- }
- return match;
- });
-
- // apply env-specific formatting (colors, etc.)
- exports.formatArgs.call(self, args);
-
- var logFn = debug.log || exports.log || console.log.bind(console);
- logFn.apply(self, args);
- }
-
- debug.namespace = namespace;
- debug.enabled = exports.enabled(namespace);
- debug.useColors = exports.useColors();
- debug.color = selectColor(namespace);
-
- // env-specific initialization logic for debug instances
- if ('function' === typeof exports.init) {
- exports.init(debug);
- }
-
- return debug;
-}
-
-/**
- * Enables a debug mode by namespaces. This can include modes
- * separated by a colon and wildcards.
- *
- * @param {String} namespaces
- * @api public
- */
-
-function enable(namespaces) {
- exports.save(namespaces);
-
- exports.names = [];
- exports.skips = [];
-
- var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\s,]+/);
- var len = split.length;
-
- for (var i = 0; i < len; i++) {
- if (!split[i]) continue; // ignore empty strings
- namespaces = split[i].replace(/\*/g, '.*?');
- if (namespaces[0] === '-') {
- exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));
- } else {
- exports.names.push(new RegExp('^' + namespaces + '$'));
- }
- }
-}
-
-/**
- * Disable debug output.
- *
- * @api public
- */
-
-function disable() {
- exports.enable('');
-}
-
-/**
- * Returns true if the given mode name is enabled, false otherwise.
- *
- * @param {String} name
- * @return {Boolean}
- * @api public
- */
-
-function enabled(name) {
- var i, len;
- for (i = 0, len = exports.skips.length; i < len; i++) {
- if (exports.skips[i].test(name)) {
- return false;
- }
- }
- for (i = 0, len = exports.names.length; i < len; i++) {
- if (exports.names[i].test(name)) {
- return true;
- }
- }
- return false;
-}
-
-/**
- * Coerce `val`.
- *
- * @param {Mixed} val
- * @return {Mixed}
- * @api private
- */
-
-function coerce(val) {
- if (val instanceof Error) return val.stack || val.message;
- return val;
-}
diff --git a/backend/node_modules/debug/src/index.js b/backend/node_modules/debug/src/index.js
deleted file mode 100644
index e12cf4d58..000000000
--- a/backend/node_modules/debug/src/index.js
+++ /dev/null
@@ -1,10 +0,0 @@
-/**
- * Detect Electron renderer process, which is node, but we should
- * treat as a browser.
- */
-
-if (typeof process !== 'undefined' && process.type === 'renderer') {
- module.exports = require('./browser.js');
-} else {
- module.exports = require('./node.js');
-}
diff --git a/backend/node_modules/debug/src/inspector-log.js b/backend/node_modules/debug/src/inspector-log.js
deleted file mode 100644
index 60ea6c04a..000000000
--- a/backend/node_modules/debug/src/inspector-log.js
+++ /dev/null
@@ -1,15 +0,0 @@
-module.exports = inspectorLog;
-
-// black hole
-const nullStream = new (require('stream').Writable)();
-nullStream._write = () => {};
-
-/**
- * Outputs a `console.log()` to the Node.js Inspector console *only*.
- */
-function inspectorLog() {
- const stdout = console._stdout;
- console._stdout = nullStream;
- console.log.apply(console, arguments);
- console._stdout = stdout;
-}
diff --git a/backend/node_modules/debug/src/node.js b/backend/node_modules/debug/src/node.js
deleted file mode 100644
index b15109c90..000000000
--- a/backend/node_modules/debug/src/node.js
+++ /dev/null
@@ -1,248 +0,0 @@
-/**
- * Module dependencies.
- */
-
-var tty = require('tty');
-var util = require('util');
-
-/**
- * This is the Node.js implementation of `debug()`.
- *
- * Expose `debug()` as the module.
- */
-
-exports = module.exports = require('./debug');
-exports.init = init;
-exports.log = log;
-exports.formatArgs = formatArgs;
-exports.save = save;
-exports.load = load;
-exports.useColors = useColors;
-
-/**
- * Colors.
- */
-
-exports.colors = [6, 2, 3, 4, 5, 1];
-
-/**
- * Build up the default `inspectOpts` object from the environment variables.
- *
- * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js
- */
-
-exports.inspectOpts = Object.keys(process.env).filter(function (key) {
- return /^debug_/i.test(key);
-}).reduce(function (obj, key) {
- // camel-case
- var prop = key
- .substring(6)
- .toLowerCase()
- .replace(/_([a-z])/g, function (_, k) { return k.toUpperCase() });
-
- // coerce string value into JS value
- var val = process.env[key];
- if (/^(yes|on|true|enabled)$/i.test(val)) val = true;
- else if (/^(no|off|false|disabled)$/i.test(val)) val = false;
- else if (val === 'null') val = null;
- else val = Number(val);
-
- obj[prop] = val;
- return obj;
-}, {});
-
-/**
- * The file descriptor to write the `debug()` calls to.
- * Set the `DEBUG_FD` env variable to override with another value. i.e.:
- *
- * $ DEBUG_FD=3 node script.js 3>debug.log
- */
-
-var fd = parseInt(process.env.DEBUG_FD, 10) || 2;
-
-if (1 !== fd && 2 !== fd) {
- util.deprecate(function(){}, 'except for stderr(2) and stdout(1), any other usage of DEBUG_FD is deprecated. Override debug.log if you want to use a different log function (https://git.io/debug_fd)')()
-}
-
-var stream = 1 === fd ? process.stdout :
- 2 === fd ? process.stderr :
- createWritableStdioStream(fd);
-
-/**
- * Is stdout a TTY? Colored output is enabled when `true`.
- */
-
-function useColors() {
- return 'colors' in exports.inspectOpts
- ? Boolean(exports.inspectOpts.colors)
- : tty.isatty(fd);
-}
-
-/**
- * Map %o to `util.inspect()`, all on a single line.
- */
-
-exports.formatters.o = function(v) {
- this.inspectOpts.colors = this.useColors;
- return util.inspect(v, this.inspectOpts)
- .split('\n').map(function(str) {
- return str.trim()
- }).join(' ');
-};
-
-/**
- * Map %o to `util.inspect()`, allowing multiple lines if needed.
- */
-
-exports.formatters.O = function(v) {
- this.inspectOpts.colors = this.useColors;
- return util.inspect(v, this.inspectOpts);
-};
-
-/**
- * Adds ANSI color escape codes if enabled.
- *
- * @api public
- */
-
-function formatArgs(args) {
- var name = this.namespace;
- var useColors = this.useColors;
-
- if (useColors) {
- var c = this.color;
- var prefix = ' \u001b[3' + c + ';1m' + name + ' ' + '\u001b[0m';
-
- args[0] = prefix + args[0].split('\n').join('\n' + prefix);
- args.push('\u001b[3' + c + 'm+' + exports.humanize(this.diff) + '\u001b[0m');
- } else {
- args[0] = new Date().toUTCString()
- + ' ' + name + ' ' + args[0];
- }
-}
-
-/**
- * Invokes `util.format()` with the specified arguments and writes to `stream`.
- */
-
-function log() {
- return stream.write(util.format.apply(util, arguments) + '\n');
-}
-
-/**
- * Save `namespaces`.
- *
- * @param {String} namespaces
- * @api private
- */
-
-function save(namespaces) {
- if (null == namespaces) {
- // If you set a process.env field to null or undefined, it gets cast to the
- // string 'null' or 'undefined'. Just delete instead.
- delete process.env.DEBUG;
- } else {
- process.env.DEBUG = namespaces;
- }
-}
-
-/**
- * Load `namespaces`.
- *
- * @return {String} returns the previously persisted debug modes
- * @api private
- */
-
-function load() {
- return process.env.DEBUG;
-}
-
-/**
- * Copied from `node/src/node.js`.
- *
- * XXX: It's lame that node doesn't expose this API out-of-the-box. It also
- * relies on the undocumented `tty_wrap.guessHandleType()` which is also lame.
- */
-
-function createWritableStdioStream (fd) {
- var stream;
- var tty_wrap = process.binding('tty_wrap');
-
- // Note stream._type is used for test-module-load-list.js
-
- switch (tty_wrap.guessHandleType(fd)) {
- case 'TTY':
- stream = new tty.WriteStream(fd);
- stream._type = 'tty';
-
- // Hack to have stream not keep the event loop alive.
- // See https://github.com/joyent/node/issues/1726
- if (stream._handle && stream._handle.unref) {
- stream._handle.unref();
- }
- break;
-
- case 'FILE':
- var fs = require('fs');
- stream = new fs.SyncWriteStream(fd, { autoClose: false });
- stream._type = 'fs';
- break;
-
- case 'PIPE':
- case 'TCP':
- var net = require('net');
- stream = new net.Socket({
- fd: fd,
- readable: false,
- writable: true
- });
-
- // FIXME Should probably have an option in net.Socket to create a
- // stream from an existing fd which is writable only. But for now
- // we'll just add this hack and set the `readable` member to false.
- // Test: ./node test/fixtures/echo.js < /etc/passwd
- stream.readable = false;
- stream.read = null;
- stream._type = 'pipe';
-
- // FIXME Hack to have stream not keep the event loop alive.
- // See https://github.com/joyent/node/issues/1726
- if (stream._handle && stream._handle.unref) {
- stream._handle.unref();
- }
- break;
-
- default:
- // Probably an error on in uv_guess_handle()
- throw new Error('Implement me. Unknown stream file type!');
- }
-
- // For supporting legacy API we put the FD here.
- stream.fd = fd;
-
- stream._isStdio = true;
-
- return stream;
-}
-
-/**
- * Init logic for `debug` instances.
- *
- * Create a new `inspectOpts` object in case `useColors` is set
- * differently for a particular `debug` instance.
- */
-
-function init (debug) {
- debug.inspectOpts = {};
-
- var keys = Object.keys(exports.inspectOpts);
- for (var i = 0; i < keys.length; i++) {
- debug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]];
- }
-}
-
-/**
- * Enable namespaces listed in `process.env.DEBUG` initially.
- */
-
-exports.enable(load());
diff --git a/backend/node_modules/define-data-property/.eslintrc b/backend/node_modules/define-data-property/.eslintrc
deleted file mode 100644
index 75443e81e..000000000
--- a/backend/node_modules/define-data-property/.eslintrc
+++ /dev/null
@@ -1,24 +0,0 @@
-{
- "root": true,
-
- "extends": "@ljharb",
-
- "rules": {
- "complexity": 0,
- "id-length": 0,
- "new-cap": ["error", {
- "capIsNewExceptions": [
- "GetIntrinsic",
- ],
- }],
- },
-
- "overrides": [
- {
- "files": "test/**",
- "rules": {
- "max-lines-per-function": "off",
- },
- },
- ],
-}
diff --git a/backend/node_modules/define-data-property/.github/FUNDING.yml b/backend/node_modules/define-data-property/.github/FUNDING.yml
deleted file mode 100644
index 3e17725dd..000000000
--- a/backend/node_modules/define-data-property/.github/FUNDING.yml
+++ /dev/null
@@ -1,12 +0,0 @@
-# These are supported funding model platforms
-
-github: [ljharb]
-patreon: # Replace with a single Patreon username
-open_collective: # Replace with a single Open Collective username
-ko_fi: # Replace with a single Ko-fi username
-tidelift: npm/define-data-property
-community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
-liberapay: # Replace with a single Liberapay username
-issuehunt: # Replace with a single IssueHunt username
-otechie: # Replace with a single Otechie username
-custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
diff --git a/backend/node_modules/define-data-property/.nycrc b/backend/node_modules/define-data-property/.nycrc
deleted file mode 100644
index 1826526e0..000000000
--- a/backend/node_modules/define-data-property/.nycrc
+++ /dev/null
@@ -1,13 +0,0 @@
-{
- "all": true,
- "check-coverage": false,
- "reporter": ["text-summary", "text", "html", "json"],
- "lines": 86,
- "statements": 85.93,
- "functions": 82.43,
- "branches": 76.06,
- "exclude": [
- "coverage",
- "test"
- ]
-}
diff --git a/backend/node_modules/define-data-property/CHANGELOG.md b/backend/node_modules/define-data-property/CHANGELOG.md
deleted file mode 100644
index 4eed75ea9..000000000
--- a/backend/node_modules/define-data-property/CHANGELOG.md
+++ /dev/null
@@ -1,70 +0,0 @@
-# Changelog
-
-All notable changes to this project will be documented in this file.
-
-The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
-and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
-
-## [v1.1.4](https://github.com/ljharb/define-data-property/compare/v1.1.3...v1.1.4) - 2024-02-13
-
-### Commits
-
-- [Refactor] use `es-define-property` [`90f2f4c`](https://github.com/ljharb/define-data-property/commit/90f2f4cc20298401e71c28e1e08888db12021453)
-- [Dev Deps] update `@types/object.getownpropertydescriptors` [`cd929d9`](https://github.com/ljharb/define-data-property/commit/cd929d9a04f5f2fdcfa9d5be140940b91a083153)
-
-## [v1.1.3](https://github.com/ljharb/define-data-property/compare/v1.1.2...v1.1.3) - 2024-02-12
-
-### Commits
-
-- [types] hand-write d.ts instead of emitting it [`0cbc988`](https://github.com/ljharb/define-data-property/commit/0cbc988203c105f2d97948327c7167ebd33bd318)
-- [meta] simplify `exports` [`690781e`](https://github.com/ljharb/define-data-property/commit/690781eed28bbf2d6766237efda0ba6dd591609e)
-- [Dev Deps] update `hasown`; clean up DT packages [`6cdfd1c`](https://github.com/ljharb/define-data-property/commit/6cdfd1cb2d91d791bfd18cda5d5cab232fd5d8fc)
-- [actions] cleanup [`3142bc6`](https://github.com/ljharb/define-data-property/commit/3142bc6a4bc406a51f5b04f31e98562a27f35ffd)
-- [meta] add `funding` [`8474423`](https://github.com/ljharb/define-data-property/commit/847442391a79779af3e0f1bf0b5bb923552b7804)
-- [Deps] update `get-intrinsic` [`3e9be00`](https://github.com/ljharb/define-data-property/commit/3e9be00e07784ba34e7c77d8bc0fdbc832ad61de)
-
-## [v1.1.2](https://github.com/ljharb/define-data-property/compare/v1.1.1...v1.1.2) - 2024-02-05
-
-### Commits
-
-- [Dev Deps] update @types packages, `object-inspect`, `tape`, `typescript` [`df41bf8`](https://github.com/ljharb/define-data-property/commit/df41bf84ca3456be6226055caab44e38e3a7fd2f)
-- [Dev Deps] update DT packages, `aud`, `npmignore`, `tape`, typescript` [`fab0e4e`](https://github.com/ljharb/define-data-property/commit/fab0e4ec709ee02b79f42d6db3ee5f26e0a34b8a)
-- [Dev Deps] use `hasown` instead of `has` [`aa51ef9`](https://github.com/ljharb/define-data-property/commit/aa51ef93f6403d49d9bb72a807bcdb6e418978c0)
-- [Refactor] use `es-errors`, so things that only need those do not need `get-intrinsic` [`d89be50`](https://github.com/ljharb/define-data-property/commit/d89be50571175888d391238605122679f7e65ffc)
-- [Deps] update `has-property-descriptors` [`7af887c`](https://github.com/ljharb/define-data-property/commit/7af887c9083b59b195b0079e04815cfed9fcee2b)
-- [Deps] update `get-intrinsic` [`bb8728e`](https://github.com/ljharb/define-data-property/commit/bb8728ec42cd998505a7157ae24853a560c20646)
-
-## [v1.1.1](https://github.com/ljharb/define-data-property/compare/v1.1.0...v1.1.1) - 2023-10-12
-
-### Commits
-
-- [Tests] fix tests in ES3 engines [`5c6920e`](https://github.com/ljharb/define-data-property/commit/5c6920edd1f52f675b02f417e539c28135b43f94)
-- [Dev Deps] update `@types/es-value-fixtures`, `@types/for-each`, `@types/gopd`, `@types/has-property-descriptors`, `tape`, `typescript` [`7d82dfc`](https://github.com/ljharb/define-data-property/commit/7d82dfc20f778b4465bba06335dd53f6f431aea3)
-- [Fix] IE 8 has a broken `Object.defineProperty` [`0672e1a`](https://github.com/ljharb/define-data-property/commit/0672e1af2a9fcc787e7c23b96dea60d290df5548)
-- [meta] emit types on prepack [`73acb1f`](https://github.com/ljharb/define-data-property/commit/73acb1f903c21b314ec7156bf10f73c7910530c0)
-- [Dev Deps] update `tape`, `typescript` [`9489a77`](https://github.com/ljharb/define-data-property/commit/9489a7738bf2ecf0ac71d5b78ec4ca6ad7ba0142)
-
-## [v1.1.0](https://github.com/ljharb/define-data-property/compare/v1.0.1...v1.1.0) - 2023-09-13
-
-### Commits
-
-- [New] add `loose` arg [`155235a`](https://github.com/ljharb/define-data-property/commit/155235a4c4d7741f6de01cd87c99599a56654b72)
-- [New] allow `null` to be passed for the non* args [`7d2fa5f`](https://github.com/ljharb/define-data-property/commit/7d2fa5f06be0392736c13b126f7cd38979f34792)
-
-## [v1.0.1](https://github.com/ljharb/define-data-property/compare/v1.0.0...v1.0.1) - 2023-09-12
-
-### Commits
-
-- [meta] add TS types [`43d763c`](https://github.com/ljharb/define-data-property/commit/43d763c6c883f652de1c9c02ef6216ee507ffa69)
-- [Dev Deps] update `@types/tape`, `typescript` [`f444985`](https://github.com/ljharb/define-data-property/commit/f444985811c36f3e6448a03ad2f9b7898917f4c7)
-- [meta] add `safe-publish-latest`, [`172bb10`](https://github.com/ljharb/define-data-property/commit/172bb10890896ebb160e64398f6ee55760107bee)
-
-## v1.0.0 - 2023-09-12
-
-### Commits
-
-- Initial implementation, tests, readme [`5b43d6b`](https://github.com/ljharb/define-data-property/commit/5b43d6b44e675a904810467a7d4e0adb7efc3196)
-- Initial commit [`35e577a`](https://github.com/ljharb/define-data-property/commit/35e577a6ba59a98befa97776d70d90f3bea9009d)
-- npm init [`82a0a04`](https://github.com/ljharb/define-data-property/commit/82a0a04a321ca7de220af02d41e2745e8a9962ed)
-- Only apps should have lockfiles [`96df244`](https://github.com/ljharb/define-data-property/commit/96df244a3c6f426f9a2437be825d1c6f5dd7158e)
-- [meta] use `npmignore` to autogenerate an npmignore file [`a87ff18`](https://github.com/ljharb/define-data-property/commit/a87ff18cb79e14c2eb5720486c4759fd9a189375)
diff --git a/backend/node_modules/define-data-property/LICENSE b/backend/node_modules/define-data-property/LICENSE
deleted file mode 100644
index b4213ac64..000000000
--- a/backend/node_modules/define-data-property/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-MIT License
-
-Copyright (c) 2023 Jordan Harband
-
-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.
diff --git a/backend/node_modules/define-data-property/README.md b/backend/node_modules/define-data-property/README.md
deleted file mode 100644
index f2304daef..000000000
--- a/backend/node_modules/define-data-property/README.md
+++ /dev/null
@@ -1,67 +0,0 @@
-# define-data-property [![Version Badge][npm-version-svg]][package-url]
-
-[![github actions][actions-image]][actions-url]
-[![coverage][codecov-image]][codecov-url]
-[![License][license-image]][license-url]
-[![Downloads][downloads-image]][downloads-url]
-
-[![npm badge][npm-badge-png]][package-url]
-
-Define a data property on an object. Will fall back to assignment in an engine without descriptors.
-
-The three `non*` argument can also be passed `null`, which will use the existing state if available.
-
-The `loose` argument will mean that if you attempt to set a non-normal data property, in an environment without descriptor support, it will fall back to normal assignment.
-
-## Usage
-
-```javascript
-var defineDataProperty = require('define-data-property');
-var assert = require('assert');
-
-var obj = {};
-defineDataProperty(obj, 'key', 'value');
-defineDataProperty(
- obj,
- 'key2',
- 'value',
- true, // nonEnumerable, optional
- false, // nonWritable, optional
- true, // nonConfigurable, optional
- false // loose, optional
-);
-
-assert.deepEqual(
- Object.getOwnPropertyDescriptors(obj),
- {
- key: {
- configurable: true,
- enumerable: true,
- value: 'value',
- writable: true,
- },
- key2: {
- configurable: false,
- enumerable: false,
- value: 'value',
- writable: true,
- },
- }
-);
-```
-
-[package-url]: https://npmjs.org/package/define-data-property
-[npm-version-svg]: https://versionbadg.es/ljharb/define-data-property.svg
-[deps-svg]: https://david-dm.org/ljharb/define-data-property.svg
-[deps-url]: https://david-dm.org/ljharb/define-data-property
-[dev-deps-svg]: https://david-dm.org/ljharb/define-data-property/dev-status.svg
-[dev-deps-url]: https://david-dm.org/ljharb/define-data-property#info=devDependencies
-[npm-badge-png]: https://nodei.co/npm/define-data-property.png?downloads=true&stars=true
-[license-image]: https://img.shields.io/npm/l/define-data-property.svg
-[license-url]: LICENSE
-[downloads-image]: https://img.shields.io/npm/dm/define-data-property.svg
-[downloads-url]: https://npm-stat.com/charts.html?package=define-data-property
-[codecov-image]: https://codecov.io/gh/ljharb/define-data-property/branch/main/graphs/badge.svg
-[codecov-url]: https://app.codecov.io/gh/ljharb/define-data-property/
-[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/ljharb/define-data-property
-[actions-url]: https://github.com/ljharb/define-data-property/actions
diff --git a/backend/node_modules/define-data-property/index.d.ts b/backend/node_modules/define-data-property/index.d.ts
deleted file mode 100644
index b56a77da8..000000000
--- a/backend/node_modules/define-data-property/index.d.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-
-declare function defineDataProperty(
- obj: Record,
- property: keyof typeof obj,
- value: typeof obj[typeof property],
- nonEnumerable?: boolean | null,
- nonWritable?: boolean | null,
- nonConfigurable?: boolean | null,
- loose?: boolean
-): void;
-
-export = defineDataProperty;
\ No newline at end of file
diff --git a/backend/node_modules/define-data-property/index.js b/backend/node_modules/define-data-property/index.js
deleted file mode 100644
index e1a38c07b..000000000
--- a/backend/node_modules/define-data-property/index.js
+++ /dev/null
@@ -1,56 +0,0 @@
-'use strict';
-
-var $defineProperty = require('es-define-property');
-
-var $SyntaxError = require('es-errors/syntax');
-var $TypeError = require('es-errors/type');
-
-var gopd = require('gopd');
-
-/** @type {import('.')} */
-module.exports = function defineDataProperty(
- obj,
- property,
- value
-) {
- if (!obj || (typeof obj !== 'object' && typeof obj !== 'function')) {
- throw new $TypeError('`obj` must be an object or a function`');
- }
- if (typeof property !== 'string' && typeof property !== 'symbol') {
- throw new $TypeError('`property` must be a string or a symbol`');
- }
- if (arguments.length > 3 && typeof arguments[3] !== 'boolean' && arguments[3] !== null) {
- throw new $TypeError('`nonEnumerable`, if provided, must be a boolean or null');
- }
- if (arguments.length > 4 && typeof arguments[4] !== 'boolean' && arguments[4] !== null) {
- throw new $TypeError('`nonWritable`, if provided, must be a boolean or null');
- }
- if (arguments.length > 5 && typeof arguments[5] !== 'boolean' && arguments[5] !== null) {
- throw new $TypeError('`nonConfigurable`, if provided, must be a boolean or null');
- }
- if (arguments.length > 6 && typeof arguments[6] !== 'boolean') {
- throw new $TypeError('`loose`, if provided, must be a boolean');
- }
-
- var nonEnumerable = arguments.length > 3 ? arguments[3] : null;
- var nonWritable = arguments.length > 4 ? arguments[4] : null;
- var nonConfigurable = arguments.length > 5 ? arguments[5] : null;
- var loose = arguments.length > 6 ? arguments[6] : false;
-
- /* @type {false | TypedPropertyDescriptor} */
- var desc = !!gopd && gopd(obj, property);
-
- if ($defineProperty) {
- $defineProperty(obj, property, {
- configurable: nonConfigurable === null && desc ? desc.configurable : !nonConfigurable,
- enumerable: nonEnumerable === null && desc ? desc.enumerable : !nonEnumerable,
- value: value,
- writable: nonWritable === null && desc ? desc.writable : !nonWritable
- });
- } else if (loose || (!nonEnumerable && !nonWritable && !nonConfigurable)) {
- // must fall back to [[Set]], and was not explicitly asked to make non-enumerable, non-writable, or non-configurable
- obj[property] = value; // eslint-disable-line no-param-reassign
- } else {
- throw new $SyntaxError('This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.');
- }
-};
diff --git a/backend/node_modules/define-data-property/package.json b/backend/node_modules/define-data-property/package.json
deleted file mode 100644
index eec40971e..000000000
--- a/backend/node_modules/define-data-property/package.json
+++ /dev/null
@@ -1,106 +0,0 @@
-{
- "name": "define-data-property",
- "version": "1.1.4",
- "description": "Define a data property on an object. Will fall back to assignment in an engine without descriptors.",
- "main": "index.js",
- "types": "./index.d.ts",
- "exports": {
- ".": "./index.js",
- "./package.json": "./package.json"
- },
- "sideEffects": false,
- "scripts": {
- "prepack": "npmignore --auto --commentLines=autogenerated",
- "prepublish": "not-in-publish || npm run prepublishOnly",
- "prepublishOnly": "safe-publish-latest",
- "tsc": "tsc -p .",
- "prelint": "evalmd README.md",
- "lint": "eslint --ext=js,mjs .",
- "postlint": "npm run tsc",
- "pretest": "npm run lint",
- "tests-only": "nyc tape 'test/**/*.js'",
- "test": "npm run tests-only",
- "posttest": "aud --production",
- "version": "auto-changelog && git add CHANGELOG.md",
- "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\""
- },
- "repository": {
- "type": "git",
- "url": "git+https://github.com/ljharb/define-data-property.git"
- },
- "keywords": [
- "define",
- "data",
- "property",
- "object",
- "accessor",
- "javascript",
- "ecmascript",
- "enumerable",
- "configurable",
- "writable"
- ],
- "author": "Jordan Harband ",
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- },
- "license": "MIT",
- "bugs": {
- "url": "https://github.com/ljharb/define-data-property/issues"
- },
- "homepage": "https://github.com/ljharb/define-data-property#readme",
- "dependencies": {
- "es-define-property": "^1.0.0",
- "es-errors": "^1.3.0",
- "gopd": "^1.0.1"
- },
- "devDependencies": {
- "@ljharb/eslint-config": "^21.1.0",
- "@types/call-bind": "^1.0.5",
- "@types/define-properties": "^1.1.5",
- "@types/es-value-fixtures": "^1.4.4",
- "@types/for-each": "^0.3.3",
- "@types/get-intrinsic": "^1.2.2",
- "@types/gopd": "^1.0.3",
- "@types/has-property-descriptors": "^1.0.3",
- "@types/object-inspect": "^1.8.4",
- "@types/object.getownpropertydescriptors": "^2.1.4",
- "@types/tape": "^5.6.4",
- "aud": "^2.0.4",
- "auto-changelog": "^2.4.0",
- "es-value-fixtures": "^1.4.2",
- "eslint": "=8.8.0",
- "evalmd": "^0.0.19",
- "for-each": "^0.3.3",
- "hasown": "^2.0.1",
- "in-publish": "^2.0.1",
- "npmignore": "^0.3.1",
- "nyc": "^10.3.2",
- "object-inspect": "^1.13.1",
- "object.getownpropertydescriptors": "^2.1.7",
- "reflect.ownkeys": "^1.1.4",
- "safe-publish-latest": "^2.0.0",
- "tape": "^5.7.4",
- "typescript": "next"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "testling": {
- "files": "test/index.js"
- },
- "auto-changelog": {
- "output": "CHANGELOG.md",
- "template": "keepachangelog",
- "unreleased": false,
- "commitLimit": false,
- "backfillLimit": false,
- "hideCredit": true
- },
- "publishConfig": {
- "ignore": [
- ".github/workflows",
- "types/reflect.ownkeys"
- ]
- }
-}
diff --git a/backend/node_modules/define-data-property/test/index.js b/backend/node_modules/define-data-property/test/index.js
deleted file mode 100644
index 68204c66b..000000000
--- a/backend/node_modules/define-data-property/test/index.js
+++ /dev/null
@@ -1,392 +0,0 @@
-'use strict';
-
-var test = require('tape');
-var v = require('es-value-fixtures');
-var forEach = require('for-each');
-var inspect = require('object-inspect');
-var hasOwn = require('hasown');
-var hasPropertyDescriptors = require('has-property-descriptors')();
-var getOwnPropertyDescriptors = require('object.getownpropertydescriptors');
-var ownKeys = require('reflect.ownkeys');
-
-var defineDataProperty = require('../');
-
-test('defineDataProperty', function (t) {
- t.test('argument validation', function (st) {
- forEach(v.primitives, function (nonObject) {
- st['throws'](
- // @ts-expect-error
- function () { defineDataProperty(nonObject, 'key', 'value'); },
- TypeError,
- 'throws on non-object input: ' + inspect(nonObject)
- );
- });
-
- forEach(v.nonPropertyKeys, function (nonPropertyKey) {
- st['throws'](
- // @ts-expect-error
- function () { defineDataProperty({}, nonPropertyKey, 'value'); },
- TypeError,
- 'throws on non-PropertyKey input: ' + inspect(nonPropertyKey)
- );
- });
-
- forEach(v.nonBooleans, function (nonBoolean) {
- if (nonBoolean !== null) {
- st['throws'](
- // @ts-expect-error
- function () { defineDataProperty({}, 'key', 'value', nonBoolean); },
- TypeError,
- 'throws on non-boolean nonEnumerable: ' + inspect(nonBoolean)
- );
-
- st['throws'](
- // @ts-expect-error
- function () { defineDataProperty({}, 'key', 'value', false, nonBoolean); },
- TypeError,
- 'throws on non-boolean nonWritable: ' + inspect(nonBoolean)
- );
-
- st['throws'](
- // @ts-expect-error
- function () { defineDataProperty({}, 'key', 'value', false, false, nonBoolean); },
- TypeError,
- 'throws on non-boolean nonConfigurable: ' + inspect(nonBoolean)
- );
- }
- });
-
- st.end();
- });
-
- t.test('normal data property', function (st) {
- /** @type {Record} */
- var obj = { existing: 'existing property' };
- st.ok(hasOwn(obj, 'existing'), 'has initial own property');
- st.equal(obj.existing, 'existing property', 'has expected initial value');
-
- var res = defineDataProperty(obj, 'added', 'added property');
- st.equal(res, void undefined, 'returns `undefined`');
- st.ok(hasOwn(obj, 'added'), 'has expected own property');
- st.equal(obj.added, 'added property', 'has expected value');
-
- defineDataProperty(obj, 'existing', 'new value');
- st.ok(hasOwn(obj, 'existing'), 'still has expected own property');
- st.equal(obj.existing, 'new value', 'has new expected value');
-
- defineDataProperty(obj, 'explicit1', 'new value', false);
- st.ok(hasOwn(obj, 'explicit1'), 'has expected own property (explicit enumerable)');
- st.equal(obj.explicit1, 'new value', 'has new expected value (explicit enumerable)');
-
- defineDataProperty(obj, 'explicit2', 'new value', false, false);
- st.ok(hasOwn(obj, 'explicit2'), 'has expected own property (explicit writable)');
- st.equal(obj.explicit2, 'new value', 'has new expected value (explicit writable)');
-
- defineDataProperty(obj, 'explicit3', 'new value', false, false, false);
- st.ok(hasOwn(obj, 'explicit3'), 'has expected own property (explicit configurable)');
- st.equal(obj.explicit3, 'new value', 'has new expected value (explicit configurable)');
-
- st.end();
- });
-
- t.test('loose mode', { skip: !hasPropertyDescriptors }, function (st) {
- var obj = { existing: 'existing property' };
-
- defineDataProperty(obj, 'added', 'added value 1', true, null, null, true);
- st.deepEqual(
- getOwnPropertyDescriptors(obj),
- {
- existing: {
- configurable: true,
- enumerable: true,
- value: 'existing property',
- writable: true
- },
- added: {
- configurable: true,
- enumerable: !hasPropertyDescriptors,
- value: 'added value 1',
- writable: true
- }
- },
- 'in loose mode, obj still adds property 1'
- );
-
- defineDataProperty(obj, 'added', 'added value 2', false, true, null, true);
- st.deepEqual(
- getOwnPropertyDescriptors(obj),
- {
- existing: {
- configurable: true,
- enumerable: true,
- value: 'existing property',
- writable: true
- },
- added: {
- configurable: true,
- enumerable: true,
- value: 'added value 2',
- writable: !hasPropertyDescriptors
- }
- },
- 'in loose mode, obj still adds property 2'
- );
-
- defineDataProperty(obj, 'added', 'added value 3', false, false, true, true);
- st.deepEqual(
- getOwnPropertyDescriptors(obj),
- {
- existing: {
- configurable: true,
- enumerable: true,
- value: 'existing property',
- writable: true
- },
- added: {
- configurable: !hasPropertyDescriptors,
- enumerable: true,
- value: 'added value 3',
- writable: true
- }
- },
- 'in loose mode, obj still adds property 3'
- );
-
- st.end();
- });
-
- t.test('non-normal data property, ES3', { skip: hasPropertyDescriptors }, function (st) {
- /** @type {Record} */
- var obj = { existing: 'existing property' };
-
- st['throws'](
- function () { defineDataProperty(obj, 'added', 'added value', true); },
- SyntaxError,
- 'nonEnumerable throws a Syntax Error'
- );
-
- st['throws'](
- function () { defineDataProperty(obj, 'added', 'added value', false, true); },
- SyntaxError,
- 'nonWritable throws a Syntax Error'
- );
-
- st['throws'](
- function () { defineDataProperty(obj, 'added', 'added value', false, false, true); },
- SyntaxError,
- 'nonWritable throws a Syntax Error'
- );
-
- st.deepEqual(
- ownKeys(obj),
- ['existing'],
- 'obj still has expected keys'
- );
- st.equal(obj.existing, 'existing property', 'obj still has expected values');
-
- st.end();
- });
-
- t.test('new non-normal data property, ES5+', { skip: !hasPropertyDescriptors }, function (st) {
- /** @type {Record} */
- var obj = { existing: 'existing property' };
-
- defineDataProperty(obj, 'nonEnum', null, true);
- defineDataProperty(obj, 'nonWrit', null, false, true);
- defineDataProperty(obj, 'nonConf', null, false, false, true);
-
- st.deepEqual(
- getOwnPropertyDescriptors(obj),
- {
- existing: {
- configurable: true,
- enumerable: true,
- value: 'existing property',
- writable: true
- },
- nonEnum: {
- configurable: true,
- enumerable: false,
- value: null,
- writable: true
- },
- nonWrit: {
- configurable: true,
- enumerable: true,
- value: null,
- writable: false
- },
- nonConf: {
- configurable: false,
- enumerable: true,
- value: null,
- writable: true
- }
- },
- 'obj has expected property descriptors'
- );
-
- st.end();
- });
-
- t.test('existing non-normal data property, ES5+', { skip: !hasPropertyDescriptors }, function (st) {
- // test case changing an existing non-normal property
-
- /** @type {Record} */
- var obj = {};
- Object.defineProperty(obj, 'nonEnum', { configurable: true, enumerable: false, value: null, writable: true });
- Object.defineProperty(obj, 'nonWrit', { configurable: true, enumerable: true, value: null, writable: false });
- Object.defineProperty(obj, 'nonConf', { configurable: false, enumerable: true, value: null, writable: true });
-
- st.deepEqual(
- getOwnPropertyDescriptors(obj),
- {
- nonEnum: {
- configurable: true,
- enumerable: false,
- value: null,
- writable: true
- },
- nonWrit: {
- configurable: true,
- enumerable: true,
- value: null,
- writable: false
- },
- nonConf: {
- configurable: false,
- enumerable: true,
- value: null,
- writable: true
- }
- },
- 'obj initially has expected property descriptors'
- );
-
- defineDataProperty(obj, 'nonEnum', 'new value', false);
- defineDataProperty(obj, 'nonWrit', 'new value', false, false);
- st['throws'](
- function () { defineDataProperty(obj, 'nonConf', 'new value', false, false, false); },
- TypeError,
- 'can not alter a nonconfigurable property'
- );
-
- st.deepEqual(
- getOwnPropertyDescriptors(obj),
- {
- nonEnum: {
- configurable: true,
- enumerable: true,
- value: 'new value',
- writable: true
- },
- nonWrit: {
- configurable: true,
- enumerable: true,
- value: 'new value',
- writable: true
- },
- nonConf: {
- configurable: false,
- enumerable: true,
- value: null,
- writable: true
- }
- },
- 'obj ends up with expected property descriptors'
- );
-
- st.end();
- });
-
- t.test('frozen object, ES5+', { skip: !hasPropertyDescriptors }, function (st) {
- var frozen = Object.freeze({ existing: true });
-
- st['throws'](
- function () { defineDataProperty(frozen, 'existing', 'new value'); },
- TypeError,
- 'frozen object can not modify an existing property'
- );
-
- st['throws'](
- function () { defineDataProperty(frozen, 'new', 'new property'); },
- TypeError,
- 'frozen object can not add a new property'
- );
-
- st.end();
- });
-
- t.test('sealed object, ES5+', { skip: !hasPropertyDescriptors }, function (st) {
- var sealed = Object.seal({ existing: true });
- st.deepEqual(
- Object.getOwnPropertyDescriptor(sealed, 'existing'),
- {
- configurable: false,
- enumerable: true,
- value: true,
- writable: true
- },
- 'existing value on sealed object has expected descriptor'
- );
-
- defineDataProperty(sealed, 'existing', 'new value');
-
- st.deepEqual(
- Object.getOwnPropertyDescriptor(sealed, 'existing'),
- {
- configurable: false,
- enumerable: true,
- value: 'new value',
- writable: true
- },
- 'existing value on sealed object has changed descriptor'
- );
-
- st['throws'](
- function () { defineDataProperty(sealed, 'new', 'new property'); },
- TypeError,
- 'sealed object can not add a new property'
- );
-
- st.end();
- });
-
- t.test('nonextensible object, ES5+', { skip: !hasPropertyDescriptors }, function (st) {
- var nonExt = Object.preventExtensions({ existing: true });
-
- st.deepEqual(
- Object.getOwnPropertyDescriptor(nonExt, 'existing'),
- {
- configurable: true,
- enumerable: true,
- value: true,
- writable: true
- },
- 'existing value on non-extensible object has expected descriptor'
- );
-
- defineDataProperty(nonExt, 'existing', 'new value', true);
-
- st.deepEqual(
- Object.getOwnPropertyDescriptor(nonExt, 'existing'),
- {
- configurable: true,
- enumerable: false,
- value: 'new value',
- writable: true
- },
- 'existing value on non-extensible object has changed descriptor'
- );
-
- st['throws'](
- function () { defineDataProperty(nonExt, 'new', 'new property'); },
- TypeError,
- 'non-extensible object can not add a new property'
- );
-
- st.end();
- });
-
- t.end();
-});
diff --git a/backend/node_modules/define-data-property/tsconfig.json b/backend/node_modules/define-data-property/tsconfig.json
deleted file mode 100644
index 69f060dcc..000000000
--- a/backend/node_modules/define-data-property/tsconfig.json
+++ /dev/null
@@ -1,59 +0,0 @@
-{
- "compilerOptions": {
- /* Visit https://aka.ms/tsconfig to read more about this file */
-
- /* Projects */
-
- /* Language and Environment */
- "target": "es2022", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */
- // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */
- // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */
- "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */
- // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */
-
- /* Modules */
- "module": "commonjs", /* Specify what module code is generated. */
- // "rootDir": "./", /* Specify the root folder within your source files. */
- // "moduleResolution": "node10", /* Specify how TypeScript looks up a file from a given module specifier. */
- // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */
- // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */
- // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */
- "typeRoots": ["types"], /* Specify multiple folders that act like './node_modules/@types'. */
- "resolveJsonModule": true, /* Enable importing .json files. */
-
- /* JavaScript Support */
- "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */
- "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */
- "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */
-
- /* Emit */
- "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */
- "declarationMap": true, /* Create sourcemaps for d.ts files. */
- // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */
- "noEmit": true, /* Disable emitting files from a compilation. */
-
- /* Interop Constraints */
- "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */
- "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */
- "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */
-
- /* Type Checking */
- "strict": true, /* Enable all strict type-checking options. */
- "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */
- "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */
- "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */
- "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */
- "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */
- "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */
- "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */
- "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */
- "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */
- // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */
-
- /* Completeness */
- // "skipLibCheck": true /* Skip type checking all .d.ts files. */
- },
- "exclude": [
- "coverage"
- ]
-}
diff --git a/backend/node_modules/depd/History.md b/backend/node_modules/depd/History.md
deleted file mode 100644
index cd9ebaaa9..000000000
--- a/backend/node_modules/depd/History.md
+++ /dev/null
@@ -1,103 +0,0 @@
-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
-==================
-
- * perf: remove argument reassignment
- * Support Node.js 0.6 to 9.x
-
-1.1.1 / 2017-07-27
-==================
-
- * Remove unnecessary `Buffer` loading
- * Support Node.js 0.6 to 8.x
-
-1.1.0 / 2015-09-14
-==================
-
- * Enable strict mode in more places
- * Support io.js 3.x
- * Support io.js 2.x
- * Support web browser loading
- - Requires bundler like Browserify or webpack
-
-1.0.1 / 2015-04-07
-==================
-
- * Fix `TypeError`s when under `'use strict'` code
- * Fix useless type name on auto-generated messages
- * Support io.js 1.x
- * Support Node.js 0.12
-
-1.0.0 / 2014-09-17
-==================
-
- * No changes
-
-0.4.5 / 2014-09-09
-==================
-
- * Improve call speed to functions using the function wrapper
- * Support Node.js 0.6
-
-0.4.4 / 2014-07-27
-==================
-
- * Work-around v8 generating empty stack traces
-
-0.4.3 / 2014-07-26
-==================
-
- * Fix exception when global `Error.stackTraceLimit` is too low
-
-0.4.2 / 2014-07-19
-==================
-
- * Correct call site for wrapped functions and properties
-
-0.4.1 / 2014-07-19
-==================
-
- * Improve automatic message generation for function properties
-
-0.4.0 / 2014-07-19
-==================
-
- * Add `TRACE_DEPRECATION` environment variable
- * Remove non-standard grey color from color output
- * Support `--no-deprecation` argument
- * Support `--trace-deprecation` argument
- * Support `deprecate.property(fn, prop, message)`
-
-0.3.0 / 2014-06-16
-==================
-
- * Add `NO_DEPRECATION` environment variable
-
-0.2.0 / 2014-06-15
-==================
-
- * Add `deprecate.property(obj, prop, message)`
- * Remove `supports-color` dependency for node.js 0.8
-
-0.1.0 / 2014-06-15
-==================
-
- * Add `deprecate.function(fn, message)`
- * Add `process.on('deprecation', fn)` emitter
- * Automatically generate message when omitted from `deprecate()`
-
-0.0.1 / 2014-06-15
-==================
-
- * Fix warning for dynamic calls at singe call site
-
-0.0.0 / 2014-06-15
-==================
-
- * Initial implementation
diff --git a/backend/node_modules/depd/LICENSE b/backend/node_modules/depd/LICENSE
deleted file mode 100644
index 248de7af2..000000000
--- a/backend/node_modules/depd/LICENSE
+++ /dev/null
@@ -1,22 +0,0 @@
-(The MIT License)
-
-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
-'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.
diff --git a/backend/node_modules/depd/Readme.md b/backend/node_modules/depd/Readme.md
deleted file mode 100644
index 043d1ca28..000000000
--- a/backend/node_modules/depd/Readme.md
+++ /dev/null
@@ -1,280 +0,0 @@
-# depd
-
-[![NPM Version][npm-version-image]][npm-url]
-[![NPM Downloads][npm-downloads-image]][npm-url]
-[![Node.js Version][node-image]][node-url]
-[![Linux Build][travis-image]][travis-url]
-[![Windows Build][appveyor-image]][appveyor-url]
-[![Coverage Status][coveralls-image]][coveralls-url]
-
-Deprecate all the things
-
-> With great modules comes great responsibility; mark things deprecated!
-
-## Install
-
-This module is installed directly using `npm`:
-
-```sh
-$ npm install depd
-```
-
-This module can also be bundled with systems like
-[Browserify](http://browserify.org/) or [webpack](https://webpack.github.io/),
-though by default this module will alter it's API to no longer display or
-track deprecations.
-
-## API
-
-
-
-```js
-var deprecate = require('depd')('my-module')
-```
-
-This library allows you to display deprecation messages to your users.
-This library goes above and beyond with deprecation warnings by
-introspection of the call stack (but only the bits that it is interested
-in).
-
-Instead of just warning on the first invocation of a deprecated
-function and never again, this module will warn on the first invocation
-of a deprecated function per unique call site, making it ideal to alert
-users of all deprecated uses across the code base, rather than just
-whatever happens to execute first.
-
-The deprecation warnings from this module also include the file and line
-information for the call into the module that the deprecated function was
-in.
-
-**NOTE** this library has a similar interface to the `debug` module, and
-this module uses the calling file to get the boundary for the call stacks,
-so you should always create a new `deprecate` object in each file and not
-within some central file.
-
-### depd(namespace)
-
-Create a new deprecate function that uses the given namespace name in the
-messages and will display the call site prior to the stack entering the
-file this function was called from. It is highly suggested you use the
-name of your module as the namespace.
-
-### deprecate(message)
-
-Call this function from deprecated code to display a deprecation message.
-This message will appear once per unique caller site. Caller site is the
-first call site in the stack in a different file from the caller of this
-function.
-
-If the message is omitted, a message is generated for you based on the site
-of the `deprecate()` call and will display the name of the function called,
-similar to the name displayed in a stack trace.
-
-### deprecate.function(fn, message)
-
-Call this function to wrap a given function in a deprecation message on any
-call to the function. An optional message can be supplied to provide a custom
-message.
-
-### deprecate.property(obj, prop, message)
-
-Call this function to wrap a given property on object in a deprecation message
-on any accessing or setting of the property. An optional message can be supplied
-to provide a custom message.
-
-The method must be called on the object where the property belongs (not
-inherited from the prototype).
-
-If the property is a data descriptor, it will be converted to an accessor
-descriptor in order to display the deprecation message.
-
-### process.on('deprecation', fn)
-
-This module will allow easy capturing of deprecation errors by emitting the
-errors as the type "deprecation" on the global `process`. If there are no
-listeners for this type, the errors are written to STDERR as normal, but if
-there are any listeners, nothing will be written to STDERR and instead only
-emitted. From there, you can write the errors in a different format or to a
-logging source.
-
-The error represents the deprecation and is emitted only once with the same
-rules as writing to STDERR. The error has the following properties:
-
- - `message` - This is the message given by the library
- - `name` - This is always `'DeprecationError'`
- - `namespace` - This is the namespace the deprecation came from
- - `stack` - This is the stack of the call to the deprecated thing
-
-Example `error.stack` output:
-
-```
-DeprecationError: my-cool-module deprecated oldfunction
- at Object. ([eval]-wrapper:6:22)
- at Module._compile (module.js:456:26)
- at evalScript (node.js:532:25)
- at startup (node.js:80:7)
- at node.js:902:3
-```
-
-### process.env.NO_DEPRECATION
-
-As a user of modules that are deprecated, the environment variable `NO_DEPRECATION`
-is provided as a quick solution to silencing deprecation warnings from being
-output. The format of this is similar to that of `DEBUG`:
-
-```sh
-$ NO_DEPRECATION=my-module,othermod node app.js
-```
-
-This will suppress deprecations from being output for "my-module" and "othermod".
-The value is a list of comma-separated namespaces. To suppress every warning
-across all namespaces, use the value `*` for a namespace.
-
-Providing the argument `--no-deprecation` to the `node` executable will suppress
-all deprecations (only available in Node.js 0.8 or higher).
-
-**NOTE** This will not suppress the deperecations given to any "deprecation"
-event listeners, just the output to STDERR.
-
-### process.env.TRACE_DEPRECATION
-
-As a user of modules that are deprecated, the environment variable `TRACE_DEPRECATION`
-is provided as a solution to getting more detailed location information in deprecation
-warnings by including the entire stack trace. The format of this is the same as
-`NO_DEPRECATION`:
-
-```sh
-$ TRACE_DEPRECATION=my-module,othermod node app.js
-```
-
-This will include stack traces for deprecations being output for "my-module" and
-"othermod". The value is a list of comma-separated namespaces. To trace every
-warning across all namespaces, use the value `*` for a namespace.
-
-Providing the argument `--trace-deprecation` to the `node` executable will trace
-all deprecations (only available in Node.js 0.8 or higher).
-
-**NOTE** This will not trace the deperecations silenced by `NO_DEPRECATION`.
-
-## Display
-
-![message](files/message.png)
-
-When a user calls a function in your library that you mark deprecated, they
-will see the following written to STDERR (in the given colors, similar colors
-and layout to the `debug` module):
-
-```
-bright cyan bright yellow
-| | reset cyan
-| | | |
-▼ ▼ ▼ ▼
-my-cool-module deprecated oldfunction [eval]-wrapper:6:22
-▲ ▲ ▲ ▲
-| | | |
-namespace | | location of mycoolmod.oldfunction() call
- | deprecation message
- the word "deprecated"
-```
-
-If the user redirects their STDERR to a file or somewhere that does not support
-colors, they see (similar layout to the `debug` module):
-
-```
-Sun, 15 Jun 2014 05:21:37 GMT my-cool-module deprecated oldfunction at [eval]-wrapper:6:22
-▲ ▲ ▲ ▲ ▲
-| | | | |
-timestamp of message namespace | | location of mycoolmod.oldfunction() call
- | deprecation message
- the word "deprecated"
-```
-
-## Examples
-
-### Deprecating all calls to a function
-
-This will display a deprecated message about "oldfunction" being deprecated
-from "my-module" on STDERR.
-
-```js
-var deprecate = require('depd')('my-cool-module')
-
-// message automatically derived from function name
-// Object.oldfunction
-exports.oldfunction = deprecate.function(function oldfunction () {
- // all calls to function are deprecated
-})
-
-// specific message
-exports.oldfunction = deprecate.function(function () {
- // all calls to function are deprecated
-}, 'oldfunction')
-```
-
-### Conditionally deprecating a function call
-
-This will display a deprecated message about "weirdfunction" being deprecated
-from "my-module" on STDERR when called with less than 2 arguments.
-
-```js
-var deprecate = require('depd')('my-cool-module')
-
-exports.weirdfunction = function () {
- if (arguments.length < 2) {
- // calls with 0 or 1 args are deprecated
- deprecate('weirdfunction args < 2')
- }
-}
-```
-
-When calling `deprecate` as a function, the warning is counted per call site
-within your own module, so you can display different deprecations depending
-on different situations and the users will still get all the warnings:
-
-```js
-var deprecate = require('depd')('my-cool-module')
-
-exports.weirdfunction = function () {
- if (arguments.length < 2) {
- // calls with 0 or 1 args are deprecated
- deprecate('weirdfunction args < 2')
- } else if (typeof arguments[0] !== 'string') {
- // calls with non-string first argument are deprecated
- deprecate('weirdfunction non-string first arg')
- }
-}
-```
-
-### Deprecating property access
-
-This will display a deprecated message about "oldprop" being deprecated
-from "my-module" on STDERR when accessed. A deprecation will be displayed
-when setting the value and when getting the value.
-
-```js
-var deprecate = require('depd')('my-cool-module')
-
-exports.oldprop = 'something'
-
-// message automatically derives from property name
-deprecate.property(exports, 'oldprop')
-
-// explicit message
-deprecate.property(exports, 'oldprop', 'oldprop >= 0.10')
-```
-
-## License
-
-[MIT](LICENSE)
-
-[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://badgen.net/coveralls/c/github/dougwilson/nodejs-depd/master
-[coveralls-url]: https://coveralls.io/r/dougwilson/nodejs-depd?branch=master
-[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
diff --git a/backend/node_modules/depd/index.js b/backend/node_modules/depd/index.js
deleted file mode 100644
index 1bf2fcfde..000000000
--- a/backend/node_modules/depd/index.js
+++ /dev/null
@@ -1,538 +0,0 @@
-/*!
- * depd
- * Copyright(c) 2014-2018 Douglas Christopher Wilson
- * MIT Licensed
- */
-
-/**
- * Module dependencies.
- */
-
-var relative = require('path').relative
-
-/**
- * Module exports.
- */
-
-module.exports = depd
-
-/**
- * Get the path to base files on.
- */
-
-var basePath = process.cwd()
-
-/**
- * Determine if namespace is contained in the string.
- */
-
-function containsNamespace (str, namespace) {
- var vals = str.split(/[ ,]+/)
- var ns = String(namespace).toLowerCase()
-
- for (var i = 0; i < vals.length; i++) {
- var val = vals[i]
-
- // namespace contained
- if (val && (val === '*' || val.toLowerCase() === ns)) {
- return true
- }
- }
-
- return false
-}
-
-/**
- * Convert a data descriptor to accessor descriptor.
- */
-
-function convertDataDescriptorToAccessor (obj, prop, message) {
- var descriptor = Object.getOwnPropertyDescriptor(obj, prop)
- var value = descriptor.value
-
- descriptor.get = function getter () { return value }
-
- if (descriptor.writable) {
- descriptor.set = function setter (val) { return (value = val) }
- }
-
- delete descriptor.value
- delete descriptor.writable
-
- Object.defineProperty(obj, prop, descriptor)
-
- return descriptor
-}
-
-/**
- * Create arguments string to keep arity.
- */
-
-function createArgumentsString (arity) {
- var str = ''
-
- for (var i = 0; i < arity; i++) {
- str += ', arg' + i
- }
-
- return str.substr(2)
-}
-
-/**
- * Create stack string from stack.
- */
-
-function createStackString (stack) {
- var str = this.name + ': ' + this.namespace
-
- if (this.message) {
- str += ' deprecated ' + this.message
- }
-
- for (var i = 0; i < stack.length; i++) {
- str += '\n at ' + stack[i].toString()
- }
-
- return str
-}
-
-/**
- * Create deprecate for namespace in caller.
- */
-
-function depd (namespace) {
- if (!namespace) {
- throw new TypeError('argument namespace is required')
- }
-
- var stack = getStack()
- var site = callSiteLocation(stack[1])
- var file = site[0]
-
- function deprecate (message) {
- // call to self as log
- log.call(deprecate, message)
- }
-
- deprecate._file = file
- deprecate._ignored = isignored(namespace)
- deprecate._namespace = namespace
- deprecate._traced = istraced(namespace)
- deprecate._warned = Object.create(null)
-
- deprecate.function = wrapfunction
- deprecate.property = wrapproperty
-
- 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) {
- if (process.noDeprecation) {
- // --no-deprecation support
- return true
- }
-
- var str = process.env.NO_DEPRECATION || ''
-
- // namespace ignored
- return containsNamespace(str, namespace)
-}
-
-/**
- * Determine if namespace is traced.
- */
-
-function istraced (namespace) {
- if (process.traceDeprecation) {
- // --trace-deprecation support
- return true
- }
-
- var str = process.env.TRACE_DEPRECATION || ''
-
- // namespace traced
- return containsNamespace(str, namespace)
-}
-
-/**
- * Display deprecation message.
- */
-
-function log (message, site) {
- var haslisteners = eehaslisteners(process, 'deprecation')
-
- // abort early if no destination
- if (!haslisteners && this._ignored) {
- return
- }
-
- var caller
- var callFile
- var callSite
- var depSite
- var i = 0
- var seen = false
- var stack = getStack()
- var file = this._file
-
- if (site) {
- // provided site
- depSite = site
- callSite = callSiteLocation(stack[1])
- callSite.name = depSite.name
- file = callSite[0]
- } else {
- // get call site
- i = 2
- depSite = callSiteLocation(stack[i])
- callSite = depSite
- }
-
- // get caller of deprecated thing in relation to file
- for (; i < stack.length; i++) {
- caller = callSiteLocation(stack[i])
- callFile = caller[0]
-
- if (callFile === file) {
- seen = true
- } else if (callFile === this._file) {
- file = this._file
- } else if (seen) {
- break
- }
- }
-
- var key = caller
- ? depSite.join(':') + '__' + caller.join(':')
- : undefined
-
- if (key !== undefined && key in this._warned) {
- // already warned
- return
- }
-
- this._warned[key] = true
-
- // generate automatic message from call site
- var msg = message
- if (!msg) {
- msg = callSite === depSite || !callSite.name
- ? defaultMessage(depSite)
- : defaultMessage(callSite)
- }
-
- // emit deprecation if listeners exist
- if (haslisteners) {
- var err = DeprecationError(this._namespace, msg, stack.slice(i))
- process.emit('deprecation', err)
- return
- }
-
- // format and write message
- var format = process.stderr.isTTY
- ? formatColor
- : formatPlain
- var output = format.call(this, msg, caller, stack.slice(i))
- process.stderr.write(output + '\n', 'utf8')
-}
-
-/**
- * Get call site location as array.
- */
-
-function callSiteLocation (callSite) {
- var file = callSite.getFileName() || ''
- var line = callSite.getLineNumber()
- var colm = callSite.getColumnNumber()
-
- if (callSite.isEval()) {
- file = callSite.getEvalOrigin() + ', ' + file
- }
-
- var site = [file, line, colm]
-
- site.callSite = callSite
- site.name = callSite.getFunctionName()
-
- return site
-}
-
-/**
- * Generate a default message from the site.
- */
-
-function defaultMessage (site) {
- var callSite = site.callSite
- var funcName = site.name
-
- // make useful anonymous name
- if (!funcName) {
- funcName = ''
- }
-
- var context = callSite.getThis()
- var typeName = context && callSite.getTypeName()
-
- // ignore useless type name
- if (typeName === 'Object') {
- typeName = undefined
- }
-
- // make useful type name
- if (typeName === 'Function') {
- typeName = context.name || typeName
- }
-
- return typeName && callSite.getMethodName()
- ? typeName + '.' + funcName
- : funcName
-}
-
-/**
- * Format deprecation message without color.
- */
-
-function formatPlain (msg, caller, stack) {
- var timestamp = new Date().toUTCString()
-
- var formatted = timestamp +
- ' ' + this._namespace +
- ' deprecated ' + msg
-
- // add stack trace
- if (this._traced) {
- for (var i = 0; i < stack.length; i++) {
- formatted += '\n at ' + stack[i].toString()
- }
-
- return formatted
- }
-
- if (caller) {
- formatted += ' at ' + formatLocation(caller)
- }
-
- return formatted
-}
-
-/**
- * Format deprecation message with color.
- */
-
-function formatColor (msg, caller, stack) {
- var formatted = '\x1b[36;1m' + this._namespace + '\x1b[22;39m' + // bold cyan
- ' \x1b[33;1mdeprecated\x1b[22;39m' + // bold yellow
- ' \x1b[0m' + msg + '\x1b[39m' // reset
-
- // add stack trace
- if (this._traced) {
- for (var i = 0; i < stack.length; i++) {
- formatted += '\n \x1b[36mat ' + stack[i].toString() + '\x1b[39m' // cyan
- }
-
- return formatted
- }
-
- if (caller) {
- formatted += ' \x1b[36m' + formatLocation(caller) + '\x1b[39m' // cyan
- }
-
- return formatted
-}
-
-/**
- * Format call site location.
- */
-
-function formatLocation (callSite) {
- return relative(basePath, callSite[0]) +
- ':' + callSite[1] +
- ':' + callSite[2]
-}
-
-/**
- * Get the stack as array of call sites.
- */
-
-function getStack () {
- var limit = Error.stackTraceLimit
- var obj = {}
- var prep = Error.prepareStackTrace
-
- Error.prepareStackTrace = prepareObjectStackTrace
- Error.stackTraceLimit = Math.max(10, limit)
-
- // capture the stack
- Error.captureStackTrace(obj)
-
- // slice this function off the top
- var stack = obj.stack.slice(1)
-
- Error.prepareStackTrace = prep
- Error.stackTraceLimit = limit
-
- return stack
-}
-
-/**
- * Capture call site stack from v8.
- */
-
-function prepareObjectStackTrace (obj, stack) {
- return stack
-}
-
-/**
- * Return a wrapped function in a deprecation message.
- */
-
-function wrapfunction (fn, message) {
- if (typeof fn !== 'function') {
- throw new TypeError('argument fn must be a function')
- }
-
- var args = createArgumentsString(fn.length)
- var stack = getStack()
- var site = callSiteLocation(stack[1])
-
- site.name = fn.name
-
- // 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
-}
-
-/**
- * Wrap property in a deprecation message.
- */
-
-function wrapproperty (obj, prop, message) {
- if (!obj || (typeof obj !== 'object' && typeof obj !== 'function')) {
- throw new TypeError('argument obj must be object')
- }
-
- var descriptor = Object.getOwnPropertyDescriptor(obj, prop)
-
- if (!descriptor) {
- throw new TypeError('must call property on owner object')
- }
-
- if (!descriptor.configurable) {
- throw new TypeError('property must be configurable')
- }
-
- var deprecate = this
- var stack = getStack()
- var site = callSiteLocation(stack[1])
-
- // set site name
- site.name = prop
-
- // convert data descriptor
- if ('value' in descriptor) {
- descriptor = convertDataDescriptorToAccessor(obj, prop, message)
- }
-
- var get = descriptor.get
- var set = descriptor.set
-
- // wrap getter
- if (typeof get === 'function') {
- descriptor.get = function getter () {
- log.call(deprecate, message, site)
- return get.apply(this, arguments)
- }
- }
-
- // wrap setter
- if (typeof set === 'function') {
- descriptor.set = function setter () {
- log.call(deprecate, message, site)
- return set.apply(this, arguments)
- }
- }
-
- Object.defineProperty(obj, prop, descriptor)
-}
-
-/**
- * Create DeprecationError for deprecation
- */
-
-function DeprecationError (namespace, message, stack) {
- var error = new Error()
- var stackString
-
- Object.defineProperty(error, 'constructor', {
- value: DeprecationError
- })
-
- Object.defineProperty(error, 'message', {
- configurable: true,
- enumerable: false,
- value: message,
- writable: true
- })
-
- Object.defineProperty(error, 'name', {
- enumerable: false,
- configurable: true,
- value: 'DeprecationError',
- writable: true
- })
-
- Object.defineProperty(error, 'namespace', {
- configurable: true,
- enumerable: false,
- value: namespace,
- writable: true
- })
-
- Object.defineProperty(error, 'stack', {
- configurable: true,
- enumerable: false,
- get: function () {
- if (stackString !== undefined) {
- return stackString
- }
-
- // prepare stack trace
- return (stackString = createStackString.call(this, stack))
- },
- set: function setter (val) {
- stackString = val
- }
- })
-
- return error
-}
diff --git a/backend/node_modules/depd/lib/browser/index.js b/backend/node_modules/depd/lib/browser/index.js
deleted file mode 100644
index 6be45cc20..000000000
--- a/backend/node_modules/depd/lib/browser/index.js
+++ /dev/null
@@ -1,77 +0,0 @@
-/*!
- * depd
- * Copyright(c) 2015 Douglas Christopher Wilson
- * MIT Licensed
- */
-
-'use strict'
-
-/**
- * Module exports.
- * @public
- */
-
-module.exports = depd
-
-/**
- * Create deprecate for namespace in caller.
- */
-
-function depd (namespace) {
- if (!namespace) {
- throw new TypeError('argument namespace is required')
- }
-
- function deprecate (message) {
- // no-op in browser
- }
-
- deprecate._file = undefined
- deprecate._ignored = true
- deprecate._namespace = namespace
- deprecate._traced = false
- deprecate._warned = Object.create(null)
-
- deprecate.function = wrapfunction
- deprecate.property = wrapproperty
-
- return deprecate
-}
-
-/**
- * Return a wrapped function in a deprecation message.
- *
- * This is a no-op version of the wrapper, which does nothing but call
- * validation.
- */
-
-function wrapfunction (fn, message) {
- if (typeof fn !== 'function') {
- throw new TypeError('argument fn must be a function')
- }
-
- return fn
-}
-
-/**
- * Wrap property in a deprecation message.
- *
- * This is a no-op version of the wrapper, which does nothing but call
- * validation.
- */
-
-function wrapproperty (obj, prop, message) {
- if (!obj || (typeof obj !== 'object' && typeof obj !== 'function')) {
- throw new TypeError('argument obj must be object')
- }
-
- var descriptor = Object.getOwnPropertyDescriptor(obj, prop)
-
- if (!descriptor) {
- throw new TypeError('must call property on owner object')
- }
-
- if (!descriptor.configurable) {
- throw new TypeError('property must be configurable')
- }
-}
diff --git a/backend/node_modules/depd/package.json b/backend/node_modules/depd/package.json
deleted file mode 100644
index 3857e1991..000000000
--- a/backend/node_modules/depd/package.json
+++ /dev/null
@@ -1,45 +0,0 @@
-{
- "name": "depd",
- "description": "Deprecate all the things",
- "version": "2.0.0",
- "author": "Douglas Christopher Wilson ",
- "license": "MIT",
- "keywords": [
- "deprecate",
- "deprecated"
- ],
- "repository": "dougwilson/nodejs-depd",
- "browser": "lib/browser/index.js",
- "devDependencies": {
- "benchmark": "2.1.4",
- "beautify-benchmark": "0.2.4",
- "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-node": "7.0.1",
- "eslint-plugin-promise": "4.0.1",
- "eslint-plugin-standard": "4.0.0",
- "istanbul": "0.4.5",
- "mocha": "5.2.0",
- "safe-buffer": "5.1.2",
- "uid-safe": "2.1.5"
- },
- "files": [
- "lib/",
- "History.md",
- "LICENSE",
- "index.js",
- "Readme.md"
- ],
- "engines": {
- "node": ">= 0.8"
- },
- "scripts": {
- "bench": "node benchmark/index.js",
- "lint": "eslint --plugin markdown --ext js,md .",
- "test": "mocha --reporter spec --bail 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"
- }
-}
diff --git a/backend/node_modules/destroy/LICENSE b/backend/node_modules/destroy/LICENSE
deleted file mode 100644
index 0e2c35f0e..000000000
--- a/backend/node_modules/destroy/LICENSE
+++ /dev/null
@@ -1,23 +0,0 @@
-
-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
-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.
diff --git a/backend/node_modules/destroy/README.md b/backend/node_modules/destroy/README.md
deleted file mode 100644
index e7701aee7..000000000
--- a/backend/node_modules/destroy/README.md
+++ /dev/null
@@ -1,63 +0,0 @@
-# destroy
-
-[![NPM version][npm-image]][npm-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]
-
-Destroy a stream.
-
-This module is meant to ensure a stream gets destroyed, handling different APIs
-and Node.js bugs.
-
-## API
-
-```js
-var destroy = require('destroy')
-```
-
-### destroy(stream [, suppress])
-
-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 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.
-
-## Example
-
-```js
-var destroy = require('destroy')
-
-var fs = require('fs')
-var stream = fs.createReadStream('package.json')
-
-// ... and later
-destroy(stream)
-```
-
-[npm-image]: https://img.shields.io/npm/v/destroy.svg?style=flat-square
-[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
-[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
-[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
diff --git a/backend/node_modules/destroy/index.js b/backend/node_modules/destroy/index.js
deleted file mode 100644
index 7fd5c0936..000000000
--- a/backend/node_modules/destroy/index.js
+++ /dev/null
@@ -1,209 +0,0 @@
-/*!
- * destroy
- * Copyright(c) 2014 Jonathan Ong
- * Copyright(c) 2015-2022 Douglas Christopher Wilson
- * MIT Licensed
- */
-
-'use strict'
-
-/**
- * Module dependencies.
- * @private
- */
-
-var EventEmitter = require('events').EventEmitter
-var ReadStream = require('fs').ReadStream
-var Stream = require('stream')
-var Zlib = require('zlib')
-
-/**
- * Module exports.
- * @public
- */
-
-module.exports = destroy
-
-/**
- * Destroy the given stream, and optionally suppress any future `error` events.
- *
- * @param {object} stream
- * @param {boolean} suppress
- * @public
- */
-
-function destroy (stream, suppress) {
- if (isFsReadStream(stream)) {
- destroyReadStream(stream)
- } else if (isZlibStream(stream)) {
- destroyZlibStream(stream)
- } else if (hasDestroy(stream)) {
- stream.destroy()
- }
-
- if (isEventEmitter(stream) && suppress) {
- stream.removeAllListeners('error')
- stream.addListener('error', noop)
- }
-
- return stream
-}
-
-/**
- * Destroy a ReadStream.
- *
- * @param {object} stream
- * @private
- */
-
-function destroyReadStream (stream) {
- stream.destroy()
-
- if (typeof stream.close === 'function') {
- // node.js core bug work-around
- stream.on('open', onOpenClose)
- }
-}
-
-/**
- * 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()
-}
-
-/**
- * On open handler to close stream.
- * @private
- */
-
-function onOpenClose () {
- if (typeof this.fd === 'number') {
- // actually close down the fd
- this.close()
- }
-}
diff --git a/backend/node_modules/destroy/package.json b/backend/node_modules/destroy/package.json
deleted file mode 100644
index c85e43837..000000000
--- a/backend/node_modules/destroy/package.json
+++ /dev/null
@@ -1,48 +0,0 @@
-{
- "name": "destroy",
- "description": "destroy a stream if possible",
- "version": "1.2.0",
- "author": {
- "name": "Jonathan Ong",
- "email": "me@jongleberry.com",
- "url": "http://jongleberry.com",
- "twitter": "https://twitter.com/jongleberry"
- },
- "contributors": [
- "Douglas Christopher Wilson