├── .eslintrc.json
├── .github
└── FUNDING.yml
├── .gitignore
├── LICENSE
├── README.md
├── api
├── controllers
│ └── UrlController.js
├── helpers
│ └── base58.js
└── models
│ └── Url.js
├── config
├── env
│ ├── development.js
│ ├── index.js
│ ├── production.js
│ └── test.js
├── express.js
├── routes
│ ├── index.js
│ └── url.js
└── sequelize.js
├── index.js
├── package-lock.json
├── package.json
├── screenshot.png
├── test
└── url.test.js
└── view
├── css
└── styles.css
├── index.html
└── javascript
└── shorten.js
/.eslintrc.json:
--------------------------------------------------------------------------------
1 | {
2 | "env": {
3 | "commonjs": true,
4 | "es2020": true,
5 | "node": true
6 | },
7 | "extends": [
8 | "airbnb-base"
9 | ],
10 | "parserOptions": {
11 | "ecmaVersion": 11
12 | },
13 | "rules": {
14 | "no-param-reassign": 0,
15 | "no-undef": 0,
16 | "max-len": 0,
17 | "import/no-dynamic-require": 0
18 | }
19 | }
--------------------------------------------------------------------------------
/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 | # These are supported funding model platforms
2 |
3 | github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
4 | patreon: # Replace with a single Patreon username
5 | open_collective: # Replace with a single Open Collective username
6 | ko_fi: murraco # Replace with a single Ko-fi username
7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
9 | liberapay: # Replace with a single Liberapay username
10 | issuehunt: # Replace with a single IssueHunt username
11 | otechie: # Replace with a single Otechie username
12 | lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry
13 | custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
14 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 |
8 | # Runtime data
9 | pids
10 | *.pid
11 | *.seed
12 | *.pid.lock
13 |
14 | # Directory for instrumented libs generated by jscoverage/JSCover
15 | lib-cov
16 |
17 | # Coverage directory used by tools like istanbul
18 | coverage
19 |
20 | # nyc test coverage
21 | .nyc_output
22 |
23 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
24 | .grunt
25 |
26 | # Bower dependency directory (https://bower.io/)
27 | bower_components
28 |
29 | # node-waf configuration
30 | .lock-wscript
31 |
32 | # Compiled binary addons (http://nodejs.org/api/addons.html)
33 | build/Release
34 |
35 | # Dependency directories
36 | node_modules/
37 | jspm_packages/
38 |
39 | # Typescript v1 declaration files
40 | typings/
41 |
42 | # Optional npm cache directory
43 | .npm
44 |
45 | # Optional eslint cache
46 | .eslintcache
47 |
48 | # Optional REPL history
49 | .node_repl_history
50 |
51 | # Output of 'npm pack'
52 | *.tgz
53 |
54 | # Yarn Integrity file
55 | .yarn-integrity
56 |
57 | # dotenv environment variables file
58 | .env
59 |
60 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2017 Mauricio Urraco
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Node ES6 URL Shortener
2 |
3 | 
4 | 
5 |
6 | # Stack
7 |
8 | 
9 | 
10 | 
11 | 
12 |
13 | # File structure
14 |
15 | ```
16 | node-es6-url-shortener/
17 | │
18 | ├── api/
19 | │ ├── controllers/
20 | │ │ └── UrlController.js
21 | │ │
22 | │ ├── models/
23 | │ │ └── Url.js
24 | │ │
25 | │ └── helpers/
26 | │ └── base58.js
27 | │
28 | ├── config/
29 | │ ├── env/
30 | │ │ ├── development.js
31 | │ │ ├── index.js
32 | │ │ ├── production.js
33 | │ │ └── test.js
34 | │ │
35 | │ ├── routes/
36 | │ │ ├── index.js
37 | │ │ └── url.js
38 | │ │
39 | │ ├── express.js
40 | │ └── sequelize.js
41 | │
42 | ├── view/
43 | │ ├── css/
44 | │ │ └── styles.css
45 | │ │
46 | │ ├── javascript/
47 | │ │ └── shorten.js
48 | │ │
49 | │ └── index.html
50 | │
51 | ├── test/
52 | │ └── url.test.js
53 | │
54 | ├── .eslintrc * ESLint configuration file
55 | ├── .gitignore * Example git ignore file
56 | ├── index.mjs * Entry point of our Node's app
57 | ├── LICENSE * MIT License
58 | ├── package.json * Defines our JavaScript dependencies
59 | ├── package-lock.json * Defines our exact JavaScript dependencies tree
60 | └── README.md * This file
61 | ```
62 |
63 | # Screenshot
64 |
65 |
66 |
67 |
68 |
69 | # Introduction
70 |
71 | ## What's a URL Shortener?
72 |
73 | URL shortening is a technique to convert a long URL (site or page address) to a shorter version. This shorter version of the URL is usually cleaner and easier to share or remember. When someone accesses the shortened address, the browser redirects to the original (large) url address. It is also called URL redirection or URL redirect.
74 |
75 | For example, the large version of this url:
76 | http://en.wikipedia.org/wiki/URL_shortening
77 |
78 | Can be shortened with bit.do service to this small address, that redirects to the previous longer address:
79 | http://bit.do/urlwiki
80 |
81 | ## How does it work?
82 |
83 | Essentially, your database has 3 fields: `primaryKey`, `shortCode` and `targetURL`.
84 |
85 | Normally the `shortCode` is simply the `primaryKey` (which is an int) converted to another base. So for instance base 36 (so 0 through 9, and then 'a' through 'z').
86 |
87 | This makes it easy to look up the `targetURL` in the database, since you can just decode it to base 10 and find the primary key.
88 |
89 | You will also have short URLs since the number of URLs you can have is 36^n where n is the number of characters in the shortened URL. So you can see that just with 4 letters you can have a possible of 2,313,441 different URLs. If you use capital letters (a larger base), this gets even larger.
90 |
91 | ## How to use this code?
92 |
93 | 1. Make sure you have the latest stable version of Node.js installed
94 |
95 | ```
96 | $ sudo npm cache clean -f
97 | $ sudo npm install -g n
98 | $ sudo n stable
99 | ```
100 |
101 | 2. Configure your database and jsonwebtoken in `config/env`. For example `config/env/development.js` would look like this:
102 |
103 | ```js
104 | module.exports = {
105 | mysql: {
106 | host: 'localhost',
107 | port: 3306,
108 | database: 'shortener_dev',
109 | username: 'root',
110 | password: '',
111 | }
112 | };
113 | ```
114 |
115 | 3. Fork this repository and clone it
116 |
117 | ```
118 | $ git clone https://github.com//node-es6-url-shortener
119 | ```
120 |
121 | 4. Navigate into the folder
122 |
123 | ```
124 | $ cd node-es6-url-shortener
125 | ```
126 |
127 | 5. Install NPM dependencies
128 |
129 | ```
130 | $ npm install
131 | ```
132 |
133 | 6. Make sure you have a MySQL DB up and running, if you don't, using docker is the easiest way
134 |
135 | ```
136 | $ docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -t mysql -d mysql
137 | ```
138 | Login into the container, update the root user and create databases
139 |
140 | ```
141 | $ docker exec -it mysql -uroot
142 | $ ALTER USER root IDENTIFIED WITH mysql_native_password BY 'root';
143 | $ CREATE DATABASE shortener_dev;
144 | $ CREATE DATABASE shortener_dev_dev;
145 | $ CREATE DATABASE shortener_dev_test;
146 | ```
147 |
148 | 7. Run the project
149 |
150 | ```
151 | $ node index.js
152 | ```
153 |
154 | 8. Or use `nodemon` for live-reload
155 |
156 | ```
157 | $ npm start
158 | ```
159 |
160 | > `npm start` will run `nodemon index.js`.
161 |
162 | 9. Navigate to `http://localhost:3000` in your browser to test it!
163 |
164 | 10. If you want to execute the tests
165 |
166 | ```
167 | $ npm test
168 | ```
169 |
170 | > `npm test` will run `mocha`.
171 |
172 | # Contribution
173 |
174 | - Report issues
175 | - Open pull request with improvements
176 | - Spread the word
177 | - Reach out to me directly at
178 |
179 | # Buy me a coffee to show your support!
180 |
181 | [](https://ko-fi.com/murraco)
182 |
--------------------------------------------------------------------------------
/api/controllers/UrlController.js:
--------------------------------------------------------------------------------
1 | const Url = require('../models/Url');
2 | const base58 = require('../helpers/base58');
3 |
4 | const webhost = 'http://localhost:3000';
5 |
6 | function shorten(req, res) {
7 | if (req.body.url) {
8 | const longUrl = req.body.url;
9 | // Check if url already exists in the database
10 | Url.findOne({ where: { longUrl } }).then(async (url) => {
11 | if (!url) {
12 | // Since it doesn't exist, let's go ahead and create it
13 | url = await Url.create({ longUrl });
14 | }
15 | res.status(201).json({ shortUrl: `${webhost}/${base58.encode(url.id)}` });
16 | });
17 | }
18 | }
19 |
20 | function decode(req, res) {
21 | const base58ID = req.params.encodedId;
22 | const id = base58.decode(base58ID);
23 | // Check if url already exists in the database
24 | Url.findOne({ where: { id } }).then((url) => {
25 | if (url) {
26 | res.redirect(url.longUrl);
27 | } else {
28 | res.redirect(webhost);
29 | }
30 | });
31 | }
32 |
33 | module.exports = {
34 | shorten, decode,
35 | };
36 |
--------------------------------------------------------------------------------
/api/helpers/base58.js:
--------------------------------------------------------------------------------
1 | const alphabet = '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ';
2 | const base = alphabet.length;
3 |
4 | function encode(num) {
5 | let encoded = '';
6 | while (num) {
7 | const remainder = num % base;
8 | num = Math.floor(num / base);
9 | encoded = alphabet[remainder].toString() + encoded;
10 | }
11 | return encoded;
12 | }
13 |
14 | function decode(str) {
15 | let decoded = 0;
16 | while (str) {
17 | const index = alphabet.indexOf(str[0]);
18 | const power = str.length - 1;
19 | decoded += index * (base ** power);
20 | str = str.substring(1);
21 | }
22 | return decoded;
23 | }
24 |
25 | module.exports.encode = encode;
26 | module.exports.decode = decode;
27 |
--------------------------------------------------------------------------------
/api/models/Url.js:
--------------------------------------------------------------------------------
1 | const { sequelize, Sequelize } = require('../../config/sequelize');
2 |
3 | const Url = sequelize.define('Url', {
4 | id: {
5 | type: Sequelize.INTEGER,
6 | autoIncrement: true,
7 | primaryKey: true,
8 | },
9 | longUrl: {
10 | type: Sequelize.STRING,
11 | allowNull: false,
12 | },
13 | numLogs: {
14 | type: Sequelize.INTEGER,
15 | allowNull: false,
16 | defaultValue: 0,
17 | },
18 | });
19 |
20 | module.exports = Url;
21 |
22 | // urlSchema.pre('save', function (next) {
23 | // var doc = this;
24 | // counter.findByIdAndUpdate({ _id: 'url_count' }, { $inc: { seq: 1 } }, function (error, counter) {
25 | // if (error)
26 | // return next(error);
27 | // doc.created_at = new Date();
28 | // doc._id = counter.seq;
29 | // next();
30 | // });
31 | // });
32 |
--------------------------------------------------------------------------------
/config/env/development.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | mysql: {
3 | host: 'localhost',
4 | port: 3306,
5 | database: 'shortener_dev',
6 | username: 'root',
7 | password: 'root',
8 | },
9 | };
10 |
--------------------------------------------------------------------------------
/config/env/index.js:
--------------------------------------------------------------------------------
1 | const env = process.env.NODE_ENV || 'development';
2 | const config = require(`./${env}`);
3 |
4 | module.exports = config;
5 |
--------------------------------------------------------------------------------
/config/env/production.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | mysql: {
3 | host: 'localhost',
4 | port: 3306,
5 | database: 'shortener',
6 | username: 'root',
7 | password: 'root',
8 | },
9 | };
10 |
--------------------------------------------------------------------------------
/config/env/test.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | mysql: {
3 | host: 'localhost',
4 | port: 3306,
5 | database: 'shortener_test',
6 | username: 'root',
7 | password: 'root',
8 | },
9 | };
10 |
--------------------------------------------------------------------------------
/config/express.js:
--------------------------------------------------------------------------------
1 | const express = require('express');
2 | const path = require('path');
3 | const bodyParser = require('body-parser');
4 | const routes = require('./routes/index');
5 |
6 | const app = express();
7 |
8 | app.use(bodyParser.json());
9 | app.use(bodyParser.urlencoded({ extended: true }));
10 | app.use(express.static(path.join(path.resolve(), 'view')));
11 |
12 | app.get('/', (req, res) => {
13 | res.sendFile(path.join(path.resolve(), 'view/index.html'));
14 | });
15 |
16 | // Mount all routes on / path
17 | app.use('/', routes);
18 |
19 | module.exports = app;
20 |
--------------------------------------------------------------------------------
/config/routes/index.js:
--------------------------------------------------------------------------------
1 | const express = require('express');
2 | const urlRoutes = require('./url');
3 |
4 | const router = express.Router();
5 |
6 | router.get('/api-status', (req, res) => res.json({ status: 'ok' }));
7 |
8 | router.use('/', urlRoutes);
9 |
10 | module.exports = router;
11 |
--------------------------------------------------------------------------------
/config/routes/url.js:
--------------------------------------------------------------------------------
1 | const express = require('express');
2 | const urlCtrl = require('../../api/controllers/UrlController');
3 |
4 | const router = express.Router();
5 |
6 | router.route('/api/shorten').post(urlCtrl.shorten);
7 | router.route('/:encodedId').get(urlCtrl.decode);
8 |
9 | module.exports = router;
10 |
--------------------------------------------------------------------------------
/config/sequelize.js:
--------------------------------------------------------------------------------
1 | const Sequelize = require('sequelize');
2 | const config = require('./env');
3 |
4 | // Set up the config
5 | const sequelize = new Sequelize(config.mysql.database, config.mysql.username, config.mysql.password, {
6 | host: config.mysql.host,
7 | port: config.mysql.port,
8 | dialect: 'mysql',
9 | logging: false, // Disable logging
10 | operatorsAliases: false, // Disable aliases,
11 | });
12 |
13 | sequelize.authenticate();
14 |
15 | module.exports = { sequelize, Sequelize };
16 |
--------------------------------------------------------------------------------
/index.js:
--------------------------------------------------------------------------------
1 | const app = require('./config/express');
2 | const Url = require('./api/models/Url');
3 |
4 | Url.sync({ force: true });
5 |
6 | const port = parseInt(process.env.PORT, 10) || 3000;
7 |
8 | app.listen(port, () => {
9 | console.log(`The server is running at localhost: ${port}`);
10 | });
11 |
--------------------------------------------------------------------------------
/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "url-shortener",
3 | "version": "1.0.0",
4 | "lockfileVersion": 3,
5 | "requires": true,
6 | "packages": {
7 | "": {
8 | "version": "1.0.0",
9 | "license": "MIT",
10 | "dependencies": {
11 | "body-parser": "^1.20.3",
12 | "express": "^4.21.2",
13 | "mysql2": "^3.9.8",
14 | "nodemon": "^2.0.20",
15 | "sequelize": "^6.29.0"
16 | },
17 | "devDependencies": {
18 | "chai": "^4.2.0",
19 | "eslint": "^7.5.0",
20 | "eslint-config-airbnb-base": "^14.2.0",
21 | "eslint-plugin-import": "^2.22.0",
22 | "mocha": "^10.8.2",
23 | "supertest": "^3.4.2",
24 | "supertest-as-promised": "^4.0.2"
25 | }
26 | },
27 | "node_modules/@babel/code-frame": {
28 | "version": "7.10.4",
29 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz",
30 | "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==",
31 | "dev": true,
32 | "dependencies": {
33 | "@babel/highlight": "^7.10.4"
34 | }
35 | },
36 | "node_modules/@babel/helper-validator-identifier": {
37 | "version": "7.10.4",
38 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz",
39 | "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==",
40 | "dev": true
41 | },
42 | "node_modules/@babel/highlight": {
43 | "version": "7.10.4",
44 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz",
45 | "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==",
46 | "dev": true,
47 | "dependencies": {
48 | "@babel/helper-validator-identifier": "^7.10.4",
49 | "chalk": "^2.0.0",
50 | "js-tokens": "^4.0.0"
51 | }
52 | },
53 | "node_modules/@types/color-name": {
54 | "version": "1.1.1",
55 | "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz",
56 | "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==",
57 | "dev": true
58 | },
59 | "node_modules/@types/debug": {
60 | "version": "4.1.7",
61 | "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz",
62 | "integrity": "sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==",
63 | "dependencies": {
64 | "@types/ms": "*"
65 | }
66 | },
67 | "node_modules/@types/json5": {
68 | "version": "0.0.29",
69 | "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz",
70 | "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=",
71 | "dev": true
72 | },
73 | "node_modules/@types/ms": {
74 | "version": "0.7.31",
75 | "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz",
76 | "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA=="
77 | },
78 | "node_modules/@types/node": {
79 | "version": "18.14.1",
80 | "resolved": "https://registry.npmjs.org/@types/node/-/node-18.14.1.tgz",
81 | "integrity": "sha512-QH+37Qds3E0eDlReeboBxfHbX9omAcBCXEzswCu6jySP642jiM3cYSIkU/REqwhCUqXdonHFuBfJDiAJxMNhaQ=="
82 | },
83 | "node_modules/@types/validator": {
84 | "version": "13.7.12",
85 | "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.7.12.tgz",
86 | "integrity": "sha512-YVtyAPqpefU+Mm/qqnOANW6IkqKpCSrarcyV269C8MA8Ux0dbkEuQwM/4CjL47kVEM2LgBef/ETfkH+c6+moFA=="
87 | },
88 | "node_modules/abbrev": {
89 | "version": "1.1.1",
90 | "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
91 | "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="
92 | },
93 | "node_modules/accepts": {
94 | "version": "1.3.8",
95 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
96 | "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
97 | "dependencies": {
98 | "mime-types": "~2.1.34",
99 | "negotiator": "0.6.3"
100 | },
101 | "engines": {
102 | "node": ">= 0.6"
103 | }
104 | },
105 | "node_modules/accepts/node_modules/mime-db": {
106 | "version": "1.52.0",
107 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
108 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
109 | "engines": {
110 | "node": ">= 0.6"
111 | }
112 | },
113 | "node_modules/accepts/node_modules/mime-types": {
114 | "version": "2.1.35",
115 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
116 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
117 | "dependencies": {
118 | "mime-db": "1.52.0"
119 | },
120 | "engines": {
121 | "node": ">= 0.6"
122 | }
123 | },
124 | "node_modules/acorn": {
125 | "version": "7.3.1",
126 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.3.1.tgz",
127 | "integrity": "sha512-tLc0wSnatxAQHVHUapaHdz72pi9KUyHjq5KyHjGg9Y8Ifdc79pTh2XvI6I1/chZbnM7QtNKzh66ooDogPZSleA==",
128 | "dev": true,
129 | "bin": {
130 | "acorn": "bin/acorn"
131 | },
132 | "engines": {
133 | "node": ">=0.4.0"
134 | }
135 | },
136 | "node_modules/acorn-jsx": {
137 | "version": "5.2.0",
138 | "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.2.0.tgz",
139 | "integrity": "sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ==",
140 | "dev": true,
141 | "peerDependencies": {
142 | "acorn": "^6.0.0 || ^7.0.0"
143 | }
144 | },
145 | "node_modules/ajv": {
146 | "version": "6.12.3",
147 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.3.tgz",
148 | "integrity": "sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA==",
149 | "dev": true,
150 | "dependencies": {
151 | "fast-deep-equal": "^3.1.1",
152 | "fast-json-stable-stringify": "^2.0.0",
153 | "json-schema-traverse": "^0.4.1",
154 | "uri-js": "^4.2.2"
155 | },
156 | "funding": {
157 | "type": "github",
158 | "url": "https://github.com/sponsors/epoberezkin"
159 | }
160 | },
161 | "node_modules/ansi-colors": {
162 | "version": "4.1.3",
163 | "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz",
164 | "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==",
165 | "dev": true,
166 | "license": "MIT",
167 | "engines": {
168 | "node": ">=6"
169 | }
170 | },
171 | "node_modules/ansi-regex": {
172 | "version": "5.0.1",
173 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
174 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
175 | "dev": true,
176 | "engines": {
177 | "node": ">=8"
178 | }
179 | },
180 | "node_modules/ansi-styles": {
181 | "version": "3.2.1",
182 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
183 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
184 | "dev": true,
185 | "dependencies": {
186 | "color-convert": "^1.9.0"
187 | },
188 | "engines": {
189 | "node": ">=4"
190 | }
191 | },
192 | "node_modules/anymatch": {
193 | "version": "3.1.3",
194 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
195 | "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
196 | "dependencies": {
197 | "normalize-path": "^3.0.0",
198 | "picomatch": "^2.0.4"
199 | },
200 | "engines": {
201 | "node": ">= 8"
202 | }
203 | },
204 | "node_modules/argparse": {
205 | "version": "1.0.10",
206 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
207 | "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
208 | "dev": true,
209 | "dependencies": {
210 | "sprintf-js": "~1.0.2"
211 | }
212 | },
213 | "node_modules/array-flatten": {
214 | "version": "1.1.1",
215 | "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
216 | "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg=="
217 | },
218 | "node_modules/array-includes": {
219 | "version": "3.1.1",
220 | "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.1.tgz",
221 | "integrity": "sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ==",
222 | "dev": true,
223 | "dependencies": {
224 | "define-properties": "^1.1.3",
225 | "es-abstract": "^1.17.0",
226 | "is-string": "^1.0.5"
227 | },
228 | "engines": {
229 | "node": ">= 0.4"
230 | },
231 | "funding": {
232 | "url": "https://github.com/sponsors/ljharb"
233 | }
234 | },
235 | "node_modules/array.prototype.flat": {
236 | "version": "1.2.3",
237 | "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz",
238 | "integrity": "sha512-gBlRZV0VSmfPIeWfuuy56XZMvbVfbEUnOXUvt3F/eUUUSyzlgLxhEX4YAEpxNAogRGehPSnfXyPtYyKAhkzQhQ==",
239 | "dev": true,
240 | "dependencies": {
241 | "define-properties": "^1.1.3",
242 | "es-abstract": "^1.17.0-next.1"
243 | },
244 | "engines": {
245 | "node": ">= 0.4"
246 | },
247 | "funding": {
248 | "url": "https://github.com/sponsors/ljharb"
249 | }
250 | },
251 | "node_modules/assertion-error": {
252 | "version": "1.1.0",
253 | "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz",
254 | "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==",
255 | "dev": true,
256 | "engines": {
257 | "node": "*"
258 | }
259 | },
260 | "node_modules/astral-regex": {
261 | "version": "1.0.0",
262 | "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz",
263 | "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==",
264 | "dev": true,
265 | "engines": {
266 | "node": ">=4"
267 | }
268 | },
269 | "node_modules/asynckit": {
270 | "version": "0.4.0",
271 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
272 | "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
273 | "dev": true
274 | },
275 | "node_modules/balanced-match": {
276 | "version": "1.0.0",
277 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
278 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
279 | },
280 | "node_modules/binary-extensions": {
281 | "version": "2.2.0",
282 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
283 | "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
284 | "engines": {
285 | "node": ">=8"
286 | }
287 | },
288 | "node_modules/bluebird": {
289 | "version": "3.7.2",
290 | "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz",
291 | "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==",
292 | "dev": true
293 | },
294 | "node_modules/body-parser": {
295 | "version": "1.20.3",
296 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz",
297 | "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==",
298 | "dependencies": {
299 | "bytes": "3.1.2",
300 | "content-type": "~1.0.5",
301 | "debug": "2.6.9",
302 | "depd": "2.0.0",
303 | "destroy": "1.2.0",
304 | "http-errors": "2.0.0",
305 | "iconv-lite": "0.4.24",
306 | "on-finished": "2.4.1",
307 | "qs": "6.13.0",
308 | "raw-body": "2.5.2",
309 | "type-is": "~1.6.18",
310 | "unpipe": "1.0.0"
311 | },
312 | "engines": {
313 | "node": ">= 0.8",
314 | "npm": "1.2.8000 || >= 1.4.16"
315 | }
316 | },
317 | "node_modules/body-parser/node_modules/call-bind": {
318 | "version": "1.0.7",
319 | "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz",
320 | "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==",
321 | "dependencies": {
322 | "es-define-property": "^1.0.0",
323 | "es-errors": "^1.3.0",
324 | "function-bind": "^1.1.2",
325 | "get-intrinsic": "^1.2.4",
326 | "set-function-length": "^1.2.1"
327 | },
328 | "engines": {
329 | "node": ">= 0.4"
330 | },
331 | "funding": {
332 | "url": "https://github.com/sponsors/ljharb"
333 | }
334 | },
335 | "node_modules/body-parser/node_modules/content-type": {
336 | "version": "1.0.5",
337 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
338 | "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
339 | "engines": {
340 | "node": ">= 0.6"
341 | }
342 | },
343 | "node_modules/body-parser/node_modules/function-bind": {
344 | "version": "1.1.2",
345 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
346 | "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
347 | "funding": {
348 | "url": "https://github.com/sponsors/ljharb"
349 | }
350 | },
351 | "node_modules/body-parser/node_modules/get-intrinsic": {
352 | "version": "1.2.4",
353 | "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz",
354 | "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==",
355 | "dependencies": {
356 | "es-errors": "^1.3.0",
357 | "function-bind": "^1.1.2",
358 | "has-proto": "^1.0.1",
359 | "has-symbols": "^1.0.3",
360 | "hasown": "^2.0.0"
361 | },
362 | "engines": {
363 | "node": ">= 0.4"
364 | },
365 | "funding": {
366 | "url": "https://github.com/sponsors/ljharb"
367 | }
368 | },
369 | "node_modules/body-parser/node_modules/has-symbols": {
370 | "version": "1.0.3",
371 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
372 | "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
373 | "engines": {
374 | "node": ">= 0.4"
375 | },
376 | "funding": {
377 | "url": "https://github.com/sponsors/ljharb"
378 | }
379 | },
380 | "node_modules/body-parser/node_modules/object-inspect": {
381 | "version": "1.13.2",
382 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz",
383 | "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==",
384 | "engines": {
385 | "node": ">= 0.4"
386 | },
387 | "funding": {
388 | "url": "https://github.com/sponsors/ljharb"
389 | }
390 | },
391 | "node_modules/body-parser/node_modules/qs": {
392 | "version": "6.13.0",
393 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz",
394 | "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==",
395 | "dependencies": {
396 | "side-channel": "^1.0.6"
397 | },
398 | "engines": {
399 | "node": ">=0.6"
400 | },
401 | "funding": {
402 | "url": "https://github.com/sponsors/ljharb"
403 | }
404 | },
405 | "node_modules/body-parser/node_modules/side-channel": {
406 | "version": "1.0.6",
407 | "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz",
408 | "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==",
409 | "dependencies": {
410 | "call-bind": "^1.0.7",
411 | "es-errors": "^1.3.0",
412 | "get-intrinsic": "^1.2.4",
413 | "object-inspect": "^1.13.1"
414 | },
415 | "engines": {
416 | "node": ">= 0.4"
417 | },
418 | "funding": {
419 | "url": "https://github.com/sponsors/ljharb"
420 | }
421 | },
422 | "node_modules/brace-expansion": {
423 | "version": "1.1.11",
424 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
425 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
426 | "dependencies": {
427 | "balanced-match": "^1.0.0",
428 | "concat-map": "0.0.1"
429 | }
430 | },
431 | "node_modules/braces": {
432 | "version": "3.0.3",
433 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
434 | "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
435 | "dependencies": {
436 | "fill-range": "^7.1.1"
437 | },
438 | "engines": {
439 | "node": ">=8"
440 | }
441 | },
442 | "node_modules/braces/node_modules/fill-range": {
443 | "version": "7.1.1",
444 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
445 | "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
446 | "dependencies": {
447 | "to-regex-range": "^5.0.1"
448 | },
449 | "engines": {
450 | "node": ">=8"
451 | }
452 | },
453 | "node_modules/browser-stdout": {
454 | "version": "1.3.1",
455 | "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz",
456 | "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==",
457 | "dev": true
458 | },
459 | "node_modules/bytes": {
460 | "version": "3.1.2",
461 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
462 | "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
463 | "engines": {
464 | "node": ">= 0.8"
465 | }
466 | },
467 | "node_modules/call-bind": {
468 | "version": "1.0.2",
469 | "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
470 | "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
471 | "dev": true,
472 | "dependencies": {
473 | "function-bind": "^1.1.1",
474 | "get-intrinsic": "^1.0.2"
475 | },
476 | "funding": {
477 | "url": "https://github.com/sponsors/ljharb"
478 | }
479 | },
480 | "node_modules/callsites": {
481 | "version": "3.1.0",
482 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
483 | "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
484 | "dev": true,
485 | "engines": {
486 | "node": ">=6"
487 | }
488 | },
489 | "node_modules/camelcase": {
490 | "version": "6.3.0",
491 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz",
492 | "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
493 | "dev": true,
494 | "engines": {
495 | "node": ">=10"
496 | },
497 | "funding": {
498 | "url": "https://github.com/sponsors/sindresorhus"
499 | }
500 | },
501 | "node_modules/chai": {
502 | "version": "4.2.0",
503 | "resolved": "https://registry.npmjs.org/chai/-/chai-4.2.0.tgz",
504 | "integrity": "sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw==",
505 | "dev": true,
506 | "dependencies": {
507 | "assertion-error": "^1.1.0",
508 | "check-error": "^1.0.2",
509 | "deep-eql": "^3.0.1",
510 | "get-func-name": "^2.0.0",
511 | "pathval": "^1.1.0",
512 | "type-detect": "^4.0.5"
513 | },
514 | "engines": {
515 | "node": ">=4"
516 | }
517 | },
518 | "node_modules/chalk": {
519 | "version": "2.4.2",
520 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
521 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
522 | "dev": true,
523 | "dependencies": {
524 | "ansi-styles": "^3.2.1",
525 | "escape-string-regexp": "^1.0.5",
526 | "supports-color": "^5.3.0"
527 | },
528 | "engines": {
529 | "node": ">=4"
530 | }
531 | },
532 | "node_modules/check-error": {
533 | "version": "1.0.2",
534 | "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz",
535 | "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=",
536 | "dev": true,
537 | "engines": {
538 | "node": "*"
539 | }
540 | },
541 | "node_modules/chokidar": {
542 | "version": "3.5.3",
543 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
544 | "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
545 | "funding": [
546 | {
547 | "type": "individual",
548 | "url": "https://paulmillr.com/funding/"
549 | }
550 | ],
551 | "dependencies": {
552 | "anymatch": "~3.1.2",
553 | "braces": "~3.0.2",
554 | "glob-parent": "~5.1.2",
555 | "is-binary-path": "~2.1.0",
556 | "is-glob": "~4.0.1",
557 | "normalize-path": "~3.0.0",
558 | "readdirp": "~3.6.0"
559 | },
560 | "engines": {
561 | "node": ">= 8.10.0"
562 | },
563 | "optionalDependencies": {
564 | "fsevents": "~2.3.2"
565 | }
566 | },
567 | "node_modules/cliui": {
568 | "version": "7.0.4",
569 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
570 | "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
571 | "dev": true,
572 | "dependencies": {
573 | "string-width": "^4.2.0",
574 | "strip-ansi": "^6.0.0",
575 | "wrap-ansi": "^7.0.0"
576 | }
577 | },
578 | "node_modules/color-convert": {
579 | "version": "1.9.3",
580 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
581 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
582 | "dev": true,
583 | "dependencies": {
584 | "color-name": "1.1.3"
585 | }
586 | },
587 | "node_modules/color-name": {
588 | "version": "1.1.3",
589 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
590 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
591 | "dev": true
592 | },
593 | "node_modules/combined-stream": {
594 | "version": "1.0.8",
595 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
596 | "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
597 | "dev": true,
598 | "dependencies": {
599 | "delayed-stream": "~1.0.0"
600 | },
601 | "engines": {
602 | "node": ">= 0.8"
603 | }
604 | },
605 | "node_modules/component-emitter": {
606 | "version": "1.3.0",
607 | "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz",
608 | "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==",
609 | "dev": true
610 | },
611 | "node_modules/concat-map": {
612 | "version": "0.0.1",
613 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
614 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
615 | },
616 | "node_modules/confusing-browser-globals": {
617 | "version": "1.0.9",
618 | "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.9.tgz",
619 | "integrity": "sha512-KbS1Y0jMtyPgIxjO7ZzMAuUpAKMt1SzCL9fsrKsX6b0zJPTaT0SiSPmewwVZg9UAO83HVIlEhZF84LIjZ0lmAw==",
620 | "dev": true
621 | },
622 | "node_modules/contains-path": {
623 | "version": "0.1.0",
624 | "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz",
625 | "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=",
626 | "dev": true,
627 | "engines": {
628 | "node": ">=0.10.0"
629 | }
630 | },
631 | "node_modules/content-disposition": {
632 | "version": "0.5.4",
633 | "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
634 | "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
635 | "dependencies": {
636 | "safe-buffer": "5.2.1"
637 | },
638 | "engines": {
639 | "node": ">= 0.6"
640 | }
641 | },
642 | "node_modules/content-disposition/node_modules/safe-buffer": {
643 | "version": "5.2.1",
644 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
645 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
646 | "funding": [
647 | {
648 | "type": "github",
649 | "url": "https://github.com/sponsors/feross"
650 | },
651 | {
652 | "type": "patreon",
653 | "url": "https://www.patreon.com/feross"
654 | },
655 | {
656 | "type": "consulting",
657 | "url": "https://feross.org/support"
658 | }
659 | ]
660 | },
661 | "node_modules/content-type": {
662 | "version": "1.0.5",
663 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
664 | "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
665 | "engines": {
666 | "node": ">= 0.6"
667 | }
668 | },
669 | "node_modules/cookie": {
670 | "version": "0.7.1",
671 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz",
672 | "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==",
673 | "engines": {
674 | "node": ">= 0.6"
675 | }
676 | },
677 | "node_modules/cookie-signature": {
678 | "version": "1.0.6",
679 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
680 | "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ=="
681 | },
682 | "node_modules/cookiejar": {
683 | "version": "2.1.4",
684 | "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz",
685 | "integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==",
686 | "dev": true
687 | },
688 | "node_modules/core-util-is": {
689 | "version": "1.0.2",
690 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
691 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
692 | "dev": true
693 | },
694 | "node_modules/debug": {
695 | "version": "2.6.9",
696 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
697 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
698 | "dependencies": {
699 | "ms": "2.0.0"
700 | }
701 | },
702 | "node_modules/decamelize": {
703 | "version": "4.0.0",
704 | "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz",
705 | "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==",
706 | "dev": true,
707 | "engines": {
708 | "node": ">=10"
709 | },
710 | "funding": {
711 | "url": "https://github.com/sponsors/sindresorhus"
712 | }
713 | },
714 | "node_modules/deep-eql": {
715 | "version": "3.0.1",
716 | "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz",
717 | "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==",
718 | "dev": true,
719 | "dependencies": {
720 | "type-detect": "^4.0.0"
721 | },
722 | "engines": {
723 | "node": ">=0.12"
724 | }
725 | },
726 | "node_modules/deep-is": {
727 | "version": "0.1.3",
728 | "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
729 | "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=",
730 | "dev": true
731 | },
732 | "node_modules/define-data-property": {
733 | "version": "1.1.4",
734 | "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz",
735 | "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==",
736 | "dependencies": {
737 | "es-define-property": "^1.0.0",
738 | "es-errors": "^1.3.0",
739 | "gopd": "^1.0.1"
740 | },
741 | "engines": {
742 | "node": ">= 0.4"
743 | },
744 | "funding": {
745 | "url": "https://github.com/sponsors/ljharb"
746 | }
747 | },
748 | "node_modules/define-properties": {
749 | "version": "1.1.3",
750 | "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
751 | "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
752 | "dev": true,
753 | "dependencies": {
754 | "object-keys": "^1.0.12"
755 | },
756 | "engines": {
757 | "node": ">= 0.4"
758 | }
759 | },
760 | "node_modules/delayed-stream": {
761 | "version": "1.0.0",
762 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
763 | "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
764 | "dev": true,
765 | "engines": {
766 | "node": ">=0.4.0"
767 | }
768 | },
769 | "node_modules/denque": {
770 | "version": "2.1.0",
771 | "resolved": "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz",
772 | "integrity": "sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==",
773 | "engines": {
774 | "node": ">=0.10"
775 | }
776 | },
777 | "node_modules/depd": {
778 | "version": "2.0.0",
779 | "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
780 | "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
781 | "engines": {
782 | "node": ">= 0.8"
783 | }
784 | },
785 | "node_modules/destroy": {
786 | "version": "1.2.0",
787 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
788 | "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
789 | "engines": {
790 | "node": ">= 0.8",
791 | "npm": "1.2.8000 || >= 1.4.16"
792 | }
793 | },
794 | "node_modules/diff": {
795 | "version": "5.2.0",
796 | "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz",
797 | "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==",
798 | "dev": true,
799 | "license": "BSD-3-Clause",
800 | "engines": {
801 | "node": ">=0.3.1"
802 | }
803 | },
804 | "node_modules/doctrine": {
805 | "version": "3.0.0",
806 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
807 | "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
808 | "dev": true,
809 | "dependencies": {
810 | "esutils": "^2.0.2"
811 | },
812 | "engines": {
813 | "node": ">=6.0.0"
814 | }
815 | },
816 | "node_modules/dottie": {
817 | "version": "2.0.4",
818 | "resolved": "https://registry.npmjs.org/dottie/-/dottie-2.0.4.tgz",
819 | "integrity": "sha512-iz64WUOmp/ECQhWMJjTWFzJN/wQ7RJ5v/a6A2OiCwjaGCpNo66WGIjlSf+IULO9DQd0b4cFawLOTbiKSrpKodw=="
820 | },
821 | "node_modules/ee-first": {
822 | "version": "1.1.1",
823 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
824 | "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
825 | },
826 | "node_modules/emoji-regex": {
827 | "version": "7.0.3",
828 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
829 | "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
830 | "dev": true
831 | },
832 | "node_modules/encodeurl": {
833 | "version": "2.0.0",
834 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz",
835 | "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==",
836 | "engines": {
837 | "node": ">= 0.8"
838 | }
839 | },
840 | "node_modules/enquirer": {
841 | "version": "2.3.6",
842 | "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz",
843 | "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==",
844 | "dev": true,
845 | "dependencies": {
846 | "ansi-colors": "^4.1.1"
847 | },
848 | "engines": {
849 | "node": ">=8.6"
850 | }
851 | },
852 | "node_modules/error-ex": {
853 | "version": "1.3.2",
854 | "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
855 | "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
856 | "dev": true,
857 | "dependencies": {
858 | "is-arrayish": "^0.2.1"
859 | }
860 | },
861 | "node_modules/es-abstract": {
862 | "version": "1.17.5",
863 | "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz",
864 | "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==",
865 | "dev": true,
866 | "dependencies": {
867 | "es-to-primitive": "^1.2.1",
868 | "function-bind": "^1.1.1",
869 | "has": "^1.0.3",
870 | "has-symbols": "^1.0.1",
871 | "is-callable": "^1.1.5",
872 | "is-regex": "^1.0.5",
873 | "object-inspect": "^1.7.0",
874 | "object-keys": "^1.1.1",
875 | "object.assign": "^4.1.0",
876 | "string.prototype.trimleft": "^2.1.1",
877 | "string.prototype.trimright": "^2.1.1"
878 | },
879 | "engines": {
880 | "node": ">= 0.4"
881 | },
882 | "funding": {
883 | "url": "https://github.com/sponsors/ljharb"
884 | }
885 | },
886 | "node_modules/es-define-property": {
887 | "version": "1.0.0",
888 | "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz",
889 | "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==",
890 | "dependencies": {
891 | "get-intrinsic": "^1.2.4"
892 | },
893 | "engines": {
894 | "node": ">= 0.4"
895 | }
896 | },
897 | "node_modules/es-define-property/node_modules/function-bind": {
898 | "version": "1.1.2",
899 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
900 | "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
901 | "funding": {
902 | "url": "https://github.com/sponsors/ljharb"
903 | }
904 | },
905 | "node_modules/es-define-property/node_modules/get-intrinsic": {
906 | "version": "1.2.4",
907 | "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz",
908 | "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==",
909 | "dependencies": {
910 | "es-errors": "^1.3.0",
911 | "function-bind": "^1.1.2",
912 | "has-proto": "^1.0.1",
913 | "has-symbols": "^1.0.3",
914 | "hasown": "^2.0.0"
915 | },
916 | "engines": {
917 | "node": ">= 0.4"
918 | },
919 | "funding": {
920 | "url": "https://github.com/sponsors/ljharb"
921 | }
922 | },
923 | "node_modules/es-define-property/node_modules/has-symbols": {
924 | "version": "1.0.3",
925 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
926 | "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
927 | "engines": {
928 | "node": ">= 0.4"
929 | },
930 | "funding": {
931 | "url": "https://github.com/sponsors/ljharb"
932 | }
933 | },
934 | "node_modules/es-errors": {
935 | "version": "1.3.0",
936 | "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
937 | "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
938 | "engines": {
939 | "node": ">= 0.4"
940 | }
941 | },
942 | "node_modules/es-to-primitive": {
943 | "version": "1.2.1",
944 | "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
945 | "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
946 | "dev": true,
947 | "dependencies": {
948 | "is-callable": "^1.1.4",
949 | "is-date-object": "^1.0.1",
950 | "is-symbol": "^1.0.2"
951 | },
952 | "engines": {
953 | "node": ">= 0.4"
954 | },
955 | "funding": {
956 | "url": "https://github.com/sponsors/ljharb"
957 | }
958 | },
959 | "node_modules/escalade": {
960 | "version": "3.1.1",
961 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
962 | "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
963 | "dev": true,
964 | "engines": {
965 | "node": ">=6"
966 | }
967 | },
968 | "node_modules/escape-html": {
969 | "version": "1.0.3",
970 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
971 | "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
972 | },
973 | "node_modules/escape-string-regexp": {
974 | "version": "1.0.5",
975 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
976 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
977 | "dev": true,
978 | "engines": {
979 | "node": ">=0.8.0"
980 | }
981 | },
982 | "node_modules/eslint": {
983 | "version": "7.5.0",
984 | "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.5.0.tgz",
985 | "integrity": "sha512-vlUP10xse9sWt9SGRtcr1LAC67BENcQMFeV+w5EvLEoFe3xJ8cF1Skd0msziRx/VMC+72B4DxreCE+OR12OA6Q==",
986 | "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.",
987 | "dev": true,
988 | "dependencies": {
989 | "@babel/code-frame": "^7.0.0",
990 | "ajv": "^6.10.0",
991 | "chalk": "^4.0.0",
992 | "cross-spawn": "^7.0.2",
993 | "debug": "^4.0.1",
994 | "doctrine": "^3.0.0",
995 | "enquirer": "^2.3.5",
996 | "eslint-scope": "^5.1.0",
997 | "eslint-utils": "^2.1.0",
998 | "eslint-visitor-keys": "^1.3.0",
999 | "espree": "^7.2.0",
1000 | "esquery": "^1.2.0",
1001 | "esutils": "^2.0.2",
1002 | "file-entry-cache": "^5.0.1",
1003 | "functional-red-black-tree": "^1.0.1",
1004 | "glob-parent": "^5.0.0",
1005 | "globals": "^12.1.0",
1006 | "ignore": "^4.0.6",
1007 | "import-fresh": "^3.0.0",
1008 | "imurmurhash": "^0.1.4",
1009 | "is-glob": "^4.0.0",
1010 | "js-yaml": "^3.13.1",
1011 | "json-stable-stringify-without-jsonify": "^1.0.1",
1012 | "levn": "^0.4.1",
1013 | "lodash": "^4.17.19",
1014 | "minimatch": "^3.0.4",
1015 | "natural-compare": "^1.4.0",
1016 | "optionator": "^0.9.1",
1017 | "progress": "^2.0.0",
1018 | "regexpp": "^3.1.0",
1019 | "semver": "^7.2.1",
1020 | "strip-ansi": "^6.0.0",
1021 | "strip-json-comments": "^3.1.0",
1022 | "table": "^5.2.3",
1023 | "text-table": "^0.2.0",
1024 | "v8-compile-cache": "^2.0.3"
1025 | },
1026 | "bin": {
1027 | "eslint": "bin/eslint.js"
1028 | },
1029 | "engines": {
1030 | "node": "^10.12.0 || >=12.0.0"
1031 | },
1032 | "funding": {
1033 | "url": "https://opencollective.com/eslint"
1034 | }
1035 | },
1036 | "node_modules/eslint-config-airbnb-base": {
1037 | "version": "14.2.0",
1038 | "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-14.2.0.tgz",
1039 | "integrity": "sha512-Snswd5oC6nJaevs3nZoLSTvGJBvzTfnBqOIArkf3cbyTyq9UD79wOk8s+RiL6bhca0p/eRO6veczhf6A/7Jy8Q==",
1040 | "dev": true,
1041 | "dependencies": {
1042 | "confusing-browser-globals": "^1.0.9",
1043 | "object.assign": "^4.1.0",
1044 | "object.entries": "^1.1.2"
1045 | },
1046 | "engines": {
1047 | "node": ">= 6"
1048 | },
1049 | "peerDependencies": {
1050 | "eslint": "^5.16.0 || ^6.8.0 || ^7.2.0",
1051 | "eslint-plugin-import": "^2.21.2"
1052 | }
1053 | },
1054 | "node_modules/eslint-import-resolver-node": {
1055 | "version": "0.3.4",
1056 | "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz",
1057 | "integrity": "sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA==",
1058 | "dev": true,
1059 | "dependencies": {
1060 | "debug": "^2.6.9",
1061 | "resolve": "^1.13.1"
1062 | }
1063 | },
1064 | "node_modules/eslint-module-utils": {
1065 | "version": "2.6.0",
1066 | "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz",
1067 | "integrity": "sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA==",
1068 | "dev": true,
1069 | "dependencies": {
1070 | "debug": "^2.6.9",
1071 | "pkg-dir": "^2.0.0"
1072 | },
1073 | "engines": {
1074 | "node": ">=4"
1075 | }
1076 | },
1077 | "node_modules/eslint-plugin-import": {
1078 | "version": "2.22.0",
1079 | "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.22.0.tgz",
1080 | "integrity": "sha512-66Fpf1Ln6aIS5Gr/55ts19eUuoDhAbZgnr6UxK5hbDx6l/QgQgx61AePq+BV4PP2uXQFClgMVzep5zZ94qqsxg==",
1081 | "dev": true,
1082 | "dependencies": {
1083 | "array-includes": "^3.1.1",
1084 | "array.prototype.flat": "^1.2.3",
1085 | "contains-path": "^0.1.0",
1086 | "debug": "^2.6.9",
1087 | "doctrine": "1.5.0",
1088 | "eslint-import-resolver-node": "^0.3.3",
1089 | "eslint-module-utils": "^2.6.0",
1090 | "has": "^1.0.3",
1091 | "minimatch": "^3.0.4",
1092 | "object.values": "^1.1.1",
1093 | "read-pkg-up": "^2.0.0",
1094 | "resolve": "^1.17.0",
1095 | "tsconfig-paths": "^3.9.0"
1096 | },
1097 | "engines": {
1098 | "node": ">=4"
1099 | },
1100 | "peerDependencies": {
1101 | "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0"
1102 | }
1103 | },
1104 | "node_modules/eslint-plugin-import/node_modules/doctrine": {
1105 | "version": "1.5.0",
1106 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz",
1107 | "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=",
1108 | "dev": true,
1109 | "dependencies": {
1110 | "esutils": "^2.0.2",
1111 | "isarray": "^1.0.0"
1112 | },
1113 | "engines": {
1114 | "node": ">=0.10.0"
1115 | }
1116 | },
1117 | "node_modules/eslint-scope": {
1118 | "version": "5.1.0",
1119 | "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.0.tgz",
1120 | "integrity": "sha512-iiGRvtxWqgtx5m8EyQUJihBloE4EnYeGE/bz1wSPwJE6tZuJUtHlhqDM4Xj2ukE8Dyy1+HCZ4hE0fzIVMzb58w==",
1121 | "dev": true,
1122 | "dependencies": {
1123 | "esrecurse": "^4.1.0",
1124 | "estraverse": "^4.1.1"
1125 | },
1126 | "engines": {
1127 | "node": ">=8.0.0"
1128 | }
1129 | },
1130 | "node_modules/eslint-utils": {
1131 | "version": "2.1.0",
1132 | "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz",
1133 | "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==",
1134 | "dev": true,
1135 | "dependencies": {
1136 | "eslint-visitor-keys": "^1.1.0"
1137 | },
1138 | "engines": {
1139 | "node": ">=6"
1140 | },
1141 | "funding": {
1142 | "url": "https://github.com/sponsors/mysticatea"
1143 | }
1144 | },
1145 | "node_modules/eslint-visitor-keys": {
1146 | "version": "1.3.0",
1147 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz",
1148 | "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==",
1149 | "dev": true,
1150 | "engines": {
1151 | "node": ">=4"
1152 | }
1153 | },
1154 | "node_modules/eslint/node_modules/ansi-styles": {
1155 | "version": "4.2.1",
1156 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz",
1157 | "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==",
1158 | "dev": true,
1159 | "dependencies": {
1160 | "@types/color-name": "^1.1.1",
1161 | "color-convert": "^2.0.1"
1162 | },
1163 | "engines": {
1164 | "node": ">=8"
1165 | },
1166 | "funding": {
1167 | "url": "https://github.com/chalk/ansi-styles?sponsor=1"
1168 | }
1169 | },
1170 | "node_modules/eslint/node_modules/chalk": {
1171 | "version": "4.1.0",
1172 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
1173 | "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
1174 | "dev": true,
1175 | "dependencies": {
1176 | "ansi-styles": "^4.1.0",
1177 | "supports-color": "^7.1.0"
1178 | },
1179 | "engines": {
1180 | "node": ">=10"
1181 | },
1182 | "funding": {
1183 | "url": "https://github.com/chalk/chalk?sponsor=1"
1184 | }
1185 | },
1186 | "node_modules/eslint/node_modules/color-convert": {
1187 | "version": "2.0.1",
1188 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
1189 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
1190 | "dev": true,
1191 | "dependencies": {
1192 | "color-name": "~1.1.4"
1193 | },
1194 | "engines": {
1195 | "node": ">=7.0.0"
1196 | }
1197 | },
1198 | "node_modules/eslint/node_modules/color-name": {
1199 | "version": "1.1.4",
1200 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
1201 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
1202 | "dev": true
1203 | },
1204 | "node_modules/eslint/node_modules/cross-spawn": {
1205 | "version": "7.0.3",
1206 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
1207 | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
1208 | "dev": true,
1209 | "dependencies": {
1210 | "path-key": "^3.1.0",
1211 | "shebang-command": "^2.0.0",
1212 | "which": "^2.0.1"
1213 | },
1214 | "engines": {
1215 | "node": ">= 8"
1216 | }
1217 | },
1218 | "node_modules/eslint/node_modules/debug": {
1219 | "version": "4.1.1",
1220 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
1221 | "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
1222 | "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)",
1223 | "dev": true,
1224 | "dependencies": {
1225 | "ms": "^2.1.1"
1226 | }
1227 | },
1228 | "node_modules/eslint/node_modules/has-flag": {
1229 | "version": "4.0.0",
1230 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
1231 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
1232 | "dev": true,
1233 | "engines": {
1234 | "node": ">=8"
1235 | }
1236 | },
1237 | "node_modules/eslint/node_modules/lru-cache": {
1238 | "version": "6.0.0",
1239 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
1240 | "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
1241 | "dev": true,
1242 | "dependencies": {
1243 | "yallist": "^4.0.0"
1244 | },
1245 | "engines": {
1246 | "node": ">=10"
1247 | }
1248 | },
1249 | "node_modules/eslint/node_modules/ms": {
1250 | "version": "2.1.2",
1251 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
1252 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
1253 | "dev": true
1254 | },
1255 | "node_modules/eslint/node_modules/path-key": {
1256 | "version": "3.1.1",
1257 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
1258 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
1259 | "dev": true,
1260 | "engines": {
1261 | "node": ">=8"
1262 | }
1263 | },
1264 | "node_modules/eslint/node_modules/semver": {
1265 | "version": "7.5.4",
1266 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
1267 | "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
1268 | "dev": true,
1269 | "dependencies": {
1270 | "lru-cache": "^6.0.0"
1271 | },
1272 | "bin": {
1273 | "semver": "bin/semver.js"
1274 | },
1275 | "engines": {
1276 | "node": ">=10"
1277 | }
1278 | },
1279 | "node_modules/eslint/node_modules/shebang-command": {
1280 | "version": "2.0.0",
1281 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
1282 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
1283 | "dev": true,
1284 | "dependencies": {
1285 | "shebang-regex": "^3.0.0"
1286 | },
1287 | "engines": {
1288 | "node": ">=8"
1289 | }
1290 | },
1291 | "node_modules/eslint/node_modules/shebang-regex": {
1292 | "version": "3.0.0",
1293 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
1294 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
1295 | "dev": true,
1296 | "engines": {
1297 | "node": ">=8"
1298 | }
1299 | },
1300 | "node_modules/eslint/node_modules/strip-ansi": {
1301 | "version": "6.0.0",
1302 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
1303 | "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
1304 | "dev": true,
1305 | "dependencies": {
1306 | "ansi-regex": "^5.0.0"
1307 | },
1308 | "engines": {
1309 | "node": ">=8"
1310 | }
1311 | },
1312 | "node_modules/eslint/node_modules/strip-json-comments": {
1313 | "version": "3.1.1",
1314 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
1315 | "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
1316 | "dev": true,
1317 | "engines": {
1318 | "node": ">=8"
1319 | },
1320 | "funding": {
1321 | "url": "https://github.com/sponsors/sindresorhus"
1322 | }
1323 | },
1324 | "node_modules/eslint/node_modules/supports-color": {
1325 | "version": "7.1.0",
1326 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz",
1327 | "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==",
1328 | "dev": true,
1329 | "dependencies": {
1330 | "has-flag": "^4.0.0"
1331 | },
1332 | "engines": {
1333 | "node": ">=8"
1334 | }
1335 | },
1336 | "node_modules/eslint/node_modules/which": {
1337 | "version": "2.0.2",
1338 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
1339 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
1340 | "dev": true,
1341 | "dependencies": {
1342 | "isexe": "^2.0.0"
1343 | },
1344 | "bin": {
1345 | "node-which": "bin/node-which"
1346 | },
1347 | "engines": {
1348 | "node": ">= 8"
1349 | }
1350 | },
1351 | "node_modules/eslint/node_modules/yallist": {
1352 | "version": "4.0.0",
1353 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
1354 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
1355 | "dev": true
1356 | },
1357 | "node_modules/espree": {
1358 | "version": "7.2.0",
1359 | "resolved": "https://registry.npmjs.org/espree/-/espree-7.2.0.tgz",
1360 | "integrity": "sha512-H+cQ3+3JYRMEIOl87e7QdHX70ocly5iW4+dttuR8iYSPr/hXKFb+7dBsZ7+u1adC4VrnPlTkv0+OwuPnDop19g==",
1361 | "dev": true,
1362 | "dependencies": {
1363 | "acorn": "^7.3.1",
1364 | "acorn-jsx": "^5.2.0",
1365 | "eslint-visitor-keys": "^1.3.0"
1366 | },
1367 | "engines": {
1368 | "node": "^10.12.0 || >=12.0.0"
1369 | }
1370 | },
1371 | "node_modules/esprima": {
1372 | "version": "4.0.1",
1373 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
1374 | "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
1375 | "dev": true,
1376 | "bin": {
1377 | "esparse": "bin/esparse.js",
1378 | "esvalidate": "bin/esvalidate.js"
1379 | },
1380 | "engines": {
1381 | "node": ">=4"
1382 | }
1383 | },
1384 | "node_modules/esquery": {
1385 | "version": "1.3.1",
1386 | "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz",
1387 | "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==",
1388 | "dev": true,
1389 | "dependencies": {
1390 | "estraverse": "^5.1.0"
1391 | },
1392 | "engines": {
1393 | "node": ">=0.10"
1394 | }
1395 | },
1396 | "node_modules/esquery/node_modules/estraverse": {
1397 | "version": "5.1.0",
1398 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.1.0.tgz",
1399 | "integrity": "sha512-FyohXK+R0vE+y1nHLoBM7ZTyqRpqAlhdZHCWIWEviFLiGB8b04H6bQs8G+XTthacvT8VuwvteiP7RJSxMs8UEw==",
1400 | "dev": true,
1401 | "engines": {
1402 | "node": ">=4.0"
1403 | }
1404 | },
1405 | "node_modules/esrecurse": {
1406 | "version": "4.2.1",
1407 | "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz",
1408 | "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==",
1409 | "dev": true,
1410 | "dependencies": {
1411 | "estraverse": "^4.1.0"
1412 | },
1413 | "engines": {
1414 | "node": ">=4.0"
1415 | }
1416 | },
1417 | "node_modules/estraverse": {
1418 | "version": "4.3.0",
1419 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
1420 | "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
1421 | "dev": true,
1422 | "engines": {
1423 | "node": ">=4.0"
1424 | }
1425 | },
1426 | "node_modules/esutils": {
1427 | "version": "2.0.3",
1428 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
1429 | "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
1430 | "dev": true,
1431 | "engines": {
1432 | "node": ">=0.10.0"
1433 | }
1434 | },
1435 | "node_modules/etag": {
1436 | "version": "1.8.1",
1437 | "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
1438 | "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
1439 | "engines": {
1440 | "node": ">= 0.6"
1441 | }
1442 | },
1443 | "node_modules/express": {
1444 | "version": "4.21.2",
1445 | "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz",
1446 | "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==",
1447 | "dependencies": {
1448 | "accepts": "~1.3.8",
1449 | "array-flatten": "1.1.1",
1450 | "body-parser": "1.20.3",
1451 | "content-disposition": "0.5.4",
1452 | "content-type": "~1.0.4",
1453 | "cookie": "0.7.1",
1454 | "cookie-signature": "1.0.6",
1455 | "debug": "2.6.9",
1456 | "depd": "2.0.0",
1457 | "encodeurl": "~2.0.0",
1458 | "escape-html": "~1.0.3",
1459 | "etag": "~1.8.1",
1460 | "finalhandler": "1.3.1",
1461 | "fresh": "0.5.2",
1462 | "http-errors": "2.0.0",
1463 | "merge-descriptors": "1.0.3",
1464 | "methods": "~1.1.2",
1465 | "on-finished": "2.4.1",
1466 | "parseurl": "~1.3.3",
1467 | "path-to-regexp": "0.1.12",
1468 | "proxy-addr": "~2.0.7",
1469 | "qs": "6.13.0",
1470 | "range-parser": "~1.2.1",
1471 | "safe-buffer": "5.2.1",
1472 | "send": "0.19.0",
1473 | "serve-static": "1.16.2",
1474 | "setprototypeof": "1.2.0",
1475 | "statuses": "2.0.1",
1476 | "type-is": "~1.6.18",
1477 | "utils-merge": "1.0.1",
1478 | "vary": "~1.1.2"
1479 | },
1480 | "engines": {
1481 | "node": ">= 0.10.0"
1482 | },
1483 | "funding": {
1484 | "type": "opencollective",
1485 | "url": "https://opencollective.com/express"
1486 | }
1487 | },
1488 | "node_modules/express/node_modules/call-bind": {
1489 | "version": "1.0.7",
1490 | "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz",
1491 | "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==",
1492 | "dependencies": {
1493 | "es-define-property": "^1.0.0",
1494 | "es-errors": "^1.3.0",
1495 | "function-bind": "^1.1.2",
1496 | "get-intrinsic": "^1.2.4",
1497 | "set-function-length": "^1.2.1"
1498 | },
1499 | "engines": {
1500 | "node": ">= 0.4"
1501 | },
1502 | "funding": {
1503 | "url": "https://github.com/sponsors/ljharb"
1504 | }
1505 | },
1506 | "node_modules/express/node_modules/function-bind": {
1507 | "version": "1.1.2",
1508 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
1509 | "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
1510 | "funding": {
1511 | "url": "https://github.com/sponsors/ljharb"
1512 | }
1513 | },
1514 | "node_modules/express/node_modules/get-intrinsic": {
1515 | "version": "1.2.4",
1516 | "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz",
1517 | "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==",
1518 | "dependencies": {
1519 | "es-errors": "^1.3.0",
1520 | "function-bind": "^1.1.2",
1521 | "has-proto": "^1.0.1",
1522 | "has-symbols": "^1.0.3",
1523 | "hasown": "^2.0.0"
1524 | },
1525 | "engines": {
1526 | "node": ">= 0.4"
1527 | },
1528 | "funding": {
1529 | "url": "https://github.com/sponsors/ljharb"
1530 | }
1531 | },
1532 | "node_modules/express/node_modules/has-symbols": {
1533 | "version": "1.1.0",
1534 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
1535 | "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
1536 | "engines": {
1537 | "node": ">= 0.4"
1538 | },
1539 | "funding": {
1540 | "url": "https://github.com/sponsors/ljharb"
1541 | }
1542 | },
1543 | "node_modules/express/node_modules/object-inspect": {
1544 | "version": "1.13.3",
1545 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz",
1546 | "integrity": "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==",
1547 | "engines": {
1548 | "node": ">= 0.4"
1549 | },
1550 | "funding": {
1551 | "url": "https://github.com/sponsors/ljharb"
1552 | }
1553 | },
1554 | "node_modules/express/node_modules/qs": {
1555 | "version": "6.13.0",
1556 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz",
1557 | "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==",
1558 | "dependencies": {
1559 | "side-channel": "^1.0.6"
1560 | },
1561 | "engines": {
1562 | "node": ">=0.6"
1563 | },
1564 | "funding": {
1565 | "url": "https://github.com/sponsors/ljharb"
1566 | }
1567 | },
1568 | "node_modules/express/node_modules/safe-buffer": {
1569 | "version": "5.2.1",
1570 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
1571 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
1572 | "funding": [
1573 | {
1574 | "type": "github",
1575 | "url": "https://github.com/sponsors/feross"
1576 | },
1577 | {
1578 | "type": "patreon",
1579 | "url": "https://www.patreon.com/feross"
1580 | },
1581 | {
1582 | "type": "consulting",
1583 | "url": "https://feross.org/support"
1584 | }
1585 | ]
1586 | },
1587 | "node_modules/express/node_modules/side-channel": {
1588 | "version": "1.0.6",
1589 | "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz",
1590 | "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==",
1591 | "dependencies": {
1592 | "call-bind": "^1.0.7",
1593 | "es-errors": "^1.3.0",
1594 | "get-intrinsic": "^1.2.4",
1595 | "object-inspect": "^1.13.1"
1596 | },
1597 | "engines": {
1598 | "node": ">= 0.4"
1599 | },
1600 | "funding": {
1601 | "url": "https://github.com/sponsors/ljharb"
1602 | }
1603 | },
1604 | "node_modules/extend": {
1605 | "version": "3.0.2",
1606 | "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
1607 | "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
1608 | "dev": true
1609 | },
1610 | "node_modules/fast-deep-equal": {
1611 | "version": "3.1.3",
1612 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
1613 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
1614 | "dev": true
1615 | },
1616 | "node_modules/fast-json-stable-stringify": {
1617 | "version": "2.1.0",
1618 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
1619 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
1620 | "dev": true
1621 | },
1622 | "node_modules/fast-levenshtein": {
1623 | "version": "2.0.6",
1624 | "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
1625 | "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
1626 | "dev": true
1627 | },
1628 | "node_modules/file-entry-cache": {
1629 | "version": "5.0.1",
1630 | "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz",
1631 | "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==",
1632 | "dev": true,
1633 | "dependencies": {
1634 | "flat-cache": "^2.0.1"
1635 | },
1636 | "engines": {
1637 | "node": ">=4"
1638 | }
1639 | },
1640 | "node_modules/finalhandler": {
1641 | "version": "1.3.1",
1642 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz",
1643 | "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==",
1644 | "dependencies": {
1645 | "debug": "2.6.9",
1646 | "encodeurl": "~2.0.0",
1647 | "escape-html": "~1.0.3",
1648 | "on-finished": "2.4.1",
1649 | "parseurl": "~1.3.3",
1650 | "statuses": "2.0.1",
1651 | "unpipe": "~1.0.0"
1652 | },
1653 | "engines": {
1654 | "node": ">= 0.8"
1655 | }
1656 | },
1657 | "node_modules/find-up": {
1658 | "version": "2.1.0",
1659 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
1660 | "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
1661 | "dev": true,
1662 | "dependencies": {
1663 | "locate-path": "^2.0.0"
1664 | },
1665 | "engines": {
1666 | "node": ">=4"
1667 | }
1668 | },
1669 | "node_modules/flat": {
1670 | "version": "5.0.2",
1671 | "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz",
1672 | "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==",
1673 | "dev": true,
1674 | "bin": {
1675 | "flat": "cli.js"
1676 | }
1677 | },
1678 | "node_modules/flat-cache": {
1679 | "version": "2.0.1",
1680 | "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz",
1681 | "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==",
1682 | "dev": true,
1683 | "dependencies": {
1684 | "flatted": "^2.0.0",
1685 | "rimraf": "2.6.3",
1686 | "write": "1.0.3"
1687 | },
1688 | "engines": {
1689 | "node": ">=4"
1690 | }
1691 | },
1692 | "node_modules/flatted": {
1693 | "version": "2.0.2",
1694 | "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz",
1695 | "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==",
1696 | "dev": true
1697 | },
1698 | "node_modules/form-data": {
1699 | "version": "2.5.1",
1700 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz",
1701 | "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==",
1702 | "dev": true,
1703 | "dependencies": {
1704 | "asynckit": "^0.4.0",
1705 | "combined-stream": "^1.0.6",
1706 | "mime-types": "^2.1.12"
1707 | },
1708 | "engines": {
1709 | "node": ">= 0.12"
1710 | }
1711 | },
1712 | "node_modules/formidable": {
1713 | "version": "1.2.2",
1714 | "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.2.tgz",
1715 | "integrity": "sha512-V8gLm+41I/8kguQ4/o1D3RIHRmhYFG4pnNyonvua+40rqcEmT4+V71yaZ3B457xbbgCsCfjSPi65u/W6vK1U5Q==",
1716 | "deprecated": "Please upgrade to latest, formidable@v2 or formidable@v3! Check these notes: https://bit.ly/2ZEqIau",
1717 | "dev": true,
1718 | "funding": {
1719 | "url": "https://ko-fi.com/tunnckoCore/commissions"
1720 | }
1721 | },
1722 | "node_modules/forwarded": {
1723 | "version": "0.2.0",
1724 | "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
1725 | "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
1726 | "engines": {
1727 | "node": ">= 0.6"
1728 | }
1729 | },
1730 | "node_modules/fresh": {
1731 | "version": "0.5.2",
1732 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
1733 | "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
1734 | "engines": {
1735 | "node": ">= 0.6"
1736 | }
1737 | },
1738 | "node_modules/fs.realpath": {
1739 | "version": "1.0.0",
1740 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
1741 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
1742 | "dev": true
1743 | },
1744 | "node_modules/fsevents": {
1745 | "version": "2.3.2",
1746 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
1747 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
1748 | "hasInstallScript": true,
1749 | "optional": true,
1750 | "os": [
1751 | "darwin"
1752 | ],
1753 | "engines": {
1754 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
1755 | }
1756 | },
1757 | "node_modules/function-bind": {
1758 | "version": "1.1.1",
1759 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
1760 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
1761 | },
1762 | "node_modules/functional-red-black-tree": {
1763 | "version": "1.0.1",
1764 | "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
1765 | "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=",
1766 | "dev": true
1767 | },
1768 | "node_modules/generate-function": {
1769 | "version": "2.3.1",
1770 | "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz",
1771 | "integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==",
1772 | "dependencies": {
1773 | "is-property": "^1.0.2"
1774 | }
1775 | },
1776 | "node_modules/get-caller-file": {
1777 | "version": "2.0.5",
1778 | "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
1779 | "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
1780 | "dev": true,
1781 | "engines": {
1782 | "node": "6.* || 8.* || >= 10.*"
1783 | }
1784 | },
1785 | "node_modules/get-func-name": {
1786 | "version": "2.0.0",
1787 | "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz",
1788 | "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=",
1789 | "dev": true,
1790 | "engines": {
1791 | "node": "*"
1792 | }
1793 | },
1794 | "node_modules/get-intrinsic": {
1795 | "version": "1.1.3",
1796 | "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz",
1797 | "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==",
1798 | "dependencies": {
1799 | "function-bind": "^1.1.1",
1800 | "has": "^1.0.3",
1801 | "has-symbols": "^1.0.3"
1802 | },
1803 | "funding": {
1804 | "url": "https://github.com/sponsors/ljharb"
1805 | }
1806 | },
1807 | "node_modules/get-intrinsic/node_modules/has-symbols": {
1808 | "version": "1.0.3",
1809 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
1810 | "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
1811 | "engines": {
1812 | "node": ">= 0.4"
1813 | },
1814 | "funding": {
1815 | "url": "https://github.com/sponsors/ljharb"
1816 | }
1817 | },
1818 | "node_modules/glob": {
1819 | "version": "7.1.6",
1820 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
1821 | "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
1822 | "deprecated": "Glob versions prior to v9 are no longer supported",
1823 | "dev": true,
1824 | "dependencies": {
1825 | "fs.realpath": "^1.0.0",
1826 | "inflight": "^1.0.4",
1827 | "inherits": "2",
1828 | "minimatch": "^3.0.4",
1829 | "once": "^1.3.0",
1830 | "path-is-absolute": "^1.0.0"
1831 | },
1832 | "engines": {
1833 | "node": "*"
1834 | },
1835 | "funding": {
1836 | "url": "https://github.com/sponsors/isaacs"
1837 | }
1838 | },
1839 | "node_modules/glob-parent": {
1840 | "version": "5.1.2",
1841 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
1842 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
1843 | "dependencies": {
1844 | "is-glob": "^4.0.1"
1845 | },
1846 | "engines": {
1847 | "node": ">= 6"
1848 | }
1849 | },
1850 | "node_modules/globals": {
1851 | "version": "12.4.0",
1852 | "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz",
1853 | "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==",
1854 | "dev": true,
1855 | "dependencies": {
1856 | "type-fest": "^0.8.1"
1857 | },
1858 | "engines": {
1859 | "node": ">=8"
1860 | },
1861 | "funding": {
1862 | "url": "https://github.com/sponsors/sindresorhus"
1863 | }
1864 | },
1865 | "node_modules/gopd": {
1866 | "version": "1.0.1",
1867 | "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
1868 | "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
1869 | "dependencies": {
1870 | "get-intrinsic": "^1.1.3"
1871 | },
1872 | "funding": {
1873 | "url": "https://github.com/sponsors/ljharb"
1874 | }
1875 | },
1876 | "node_modules/graceful-fs": {
1877 | "version": "4.2.3",
1878 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
1879 | "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==",
1880 | "dev": true
1881 | },
1882 | "node_modules/has": {
1883 | "version": "1.0.3",
1884 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
1885 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
1886 | "dependencies": {
1887 | "function-bind": "^1.1.1"
1888 | },
1889 | "engines": {
1890 | "node": ">= 0.4.0"
1891 | }
1892 | },
1893 | "node_modules/has-flag": {
1894 | "version": "3.0.0",
1895 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
1896 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
1897 | "engines": {
1898 | "node": ">=4"
1899 | }
1900 | },
1901 | "node_modules/has-property-descriptors": {
1902 | "version": "1.0.2",
1903 | "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz",
1904 | "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==",
1905 | "dependencies": {
1906 | "es-define-property": "^1.0.0"
1907 | },
1908 | "funding": {
1909 | "url": "https://github.com/sponsors/ljharb"
1910 | }
1911 | },
1912 | "node_modules/has-proto": {
1913 | "version": "1.0.3",
1914 | "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz",
1915 | "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==",
1916 | "engines": {
1917 | "node": ">= 0.4"
1918 | },
1919 | "funding": {
1920 | "url": "https://github.com/sponsors/ljharb"
1921 | }
1922 | },
1923 | "node_modules/has-symbols": {
1924 | "version": "1.0.1",
1925 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz",
1926 | "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==",
1927 | "dev": true,
1928 | "engines": {
1929 | "node": ">= 0.4"
1930 | },
1931 | "funding": {
1932 | "url": "https://github.com/sponsors/ljharb"
1933 | }
1934 | },
1935 | "node_modules/hasown": {
1936 | "version": "2.0.2",
1937 | "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
1938 | "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
1939 | "dependencies": {
1940 | "function-bind": "^1.1.2"
1941 | },
1942 | "engines": {
1943 | "node": ">= 0.4"
1944 | }
1945 | },
1946 | "node_modules/hasown/node_modules/function-bind": {
1947 | "version": "1.1.2",
1948 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
1949 | "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
1950 | "funding": {
1951 | "url": "https://github.com/sponsors/ljharb"
1952 | }
1953 | },
1954 | "node_modules/he": {
1955 | "version": "1.2.0",
1956 | "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
1957 | "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
1958 | "dev": true,
1959 | "bin": {
1960 | "he": "bin/he"
1961 | }
1962 | },
1963 | "node_modules/hosted-git-info": {
1964 | "version": "2.8.9",
1965 | "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
1966 | "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
1967 | "dev": true
1968 | },
1969 | "node_modules/http-errors": {
1970 | "version": "2.0.0",
1971 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
1972 | "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
1973 | "dependencies": {
1974 | "depd": "2.0.0",
1975 | "inherits": "2.0.4",
1976 | "setprototypeof": "1.2.0",
1977 | "statuses": "2.0.1",
1978 | "toidentifier": "1.0.1"
1979 | },
1980 | "engines": {
1981 | "node": ">= 0.8"
1982 | }
1983 | },
1984 | "node_modules/http-errors/node_modules/inherits": {
1985 | "version": "2.0.4",
1986 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
1987 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
1988 | },
1989 | "node_modules/iconv-lite": {
1990 | "version": "0.4.24",
1991 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
1992 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
1993 | "dependencies": {
1994 | "safer-buffer": ">= 2.1.2 < 3"
1995 | },
1996 | "engines": {
1997 | "node": ">=0.10.0"
1998 | }
1999 | },
2000 | "node_modules/ignore": {
2001 | "version": "4.0.6",
2002 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
2003 | "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
2004 | "dev": true,
2005 | "engines": {
2006 | "node": ">= 4"
2007 | }
2008 | },
2009 | "node_modules/ignore-by-default": {
2010 | "version": "1.0.1",
2011 | "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz",
2012 | "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA=="
2013 | },
2014 | "node_modules/import-fresh": {
2015 | "version": "3.2.1",
2016 | "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz",
2017 | "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==",
2018 | "dev": true,
2019 | "dependencies": {
2020 | "parent-module": "^1.0.0",
2021 | "resolve-from": "^4.0.0"
2022 | },
2023 | "engines": {
2024 | "node": ">=6"
2025 | }
2026 | },
2027 | "node_modules/imurmurhash": {
2028 | "version": "0.1.4",
2029 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
2030 | "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
2031 | "dev": true,
2032 | "engines": {
2033 | "node": ">=0.8.19"
2034 | }
2035 | },
2036 | "node_modules/inflection": {
2037 | "version": "1.13.4",
2038 | "resolved": "https://registry.npmjs.org/inflection/-/inflection-1.13.4.tgz",
2039 | "integrity": "sha512-6I/HUDeYFfuNCVS3td055BaXBwKYuzw7K3ExVMStBowKo9oOAMJIXIHvdyR3iboTCp1b+1i5DSkIZTcwIktuDw==",
2040 | "engines": [
2041 | "node >= 0.4.0"
2042 | ]
2043 | },
2044 | "node_modules/inflight": {
2045 | "version": "1.0.6",
2046 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
2047 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
2048 | "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.",
2049 | "dev": true,
2050 | "dependencies": {
2051 | "once": "^1.3.0",
2052 | "wrappy": "1"
2053 | }
2054 | },
2055 | "node_modules/inherits": {
2056 | "version": "2.0.3",
2057 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
2058 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
2059 | "dev": true
2060 | },
2061 | "node_modules/ipaddr.js": {
2062 | "version": "1.9.1",
2063 | "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
2064 | "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
2065 | "engines": {
2066 | "node": ">= 0.10"
2067 | }
2068 | },
2069 | "node_modules/is-arrayish": {
2070 | "version": "0.2.1",
2071 | "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
2072 | "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
2073 | "dev": true
2074 | },
2075 | "node_modules/is-binary-path": {
2076 | "version": "2.1.0",
2077 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
2078 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
2079 | "dependencies": {
2080 | "binary-extensions": "^2.0.0"
2081 | },
2082 | "engines": {
2083 | "node": ">=8"
2084 | }
2085 | },
2086 | "node_modules/is-callable": {
2087 | "version": "1.1.5",
2088 | "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz",
2089 | "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==",
2090 | "dev": true,
2091 | "engines": {
2092 | "node": ">= 0.4"
2093 | },
2094 | "funding": {
2095 | "url": "https://github.com/sponsors/ljharb"
2096 | }
2097 | },
2098 | "node_modules/is-date-object": {
2099 | "version": "1.0.2",
2100 | "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz",
2101 | "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==",
2102 | "dev": true,
2103 | "engines": {
2104 | "node": ">= 0.4"
2105 | },
2106 | "funding": {
2107 | "url": "https://github.com/sponsors/ljharb"
2108 | }
2109 | },
2110 | "node_modules/is-extglob": {
2111 | "version": "2.1.1",
2112 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
2113 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
2114 | "engines": {
2115 | "node": ">=0.10.0"
2116 | }
2117 | },
2118 | "node_modules/is-fullwidth-code-point": {
2119 | "version": "2.0.0",
2120 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
2121 | "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
2122 | "dev": true,
2123 | "engines": {
2124 | "node": ">=4"
2125 | }
2126 | },
2127 | "node_modules/is-glob": {
2128 | "version": "4.0.1",
2129 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
2130 | "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
2131 | "dependencies": {
2132 | "is-extglob": "^2.1.1"
2133 | },
2134 | "engines": {
2135 | "node": ">=0.10.0"
2136 | }
2137 | },
2138 | "node_modules/is-number": {
2139 | "version": "7.0.0",
2140 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
2141 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
2142 | "engines": {
2143 | "node": ">=0.12.0"
2144 | }
2145 | },
2146 | "node_modules/is-plain-obj": {
2147 | "version": "2.1.0",
2148 | "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz",
2149 | "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==",
2150 | "dev": true,
2151 | "engines": {
2152 | "node": ">=8"
2153 | }
2154 | },
2155 | "node_modules/is-property": {
2156 | "version": "1.0.2",
2157 | "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz",
2158 | "integrity": "sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g=="
2159 | },
2160 | "node_modules/is-regex": {
2161 | "version": "1.0.5",
2162 | "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz",
2163 | "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==",
2164 | "dev": true,
2165 | "dependencies": {
2166 | "has": "^1.0.3"
2167 | },
2168 | "engines": {
2169 | "node": ">= 0.4"
2170 | },
2171 | "funding": {
2172 | "url": "https://github.com/sponsors/ljharb"
2173 | }
2174 | },
2175 | "node_modules/is-string": {
2176 | "version": "1.0.5",
2177 | "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz",
2178 | "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==",
2179 | "dev": true,
2180 | "engines": {
2181 | "node": ">= 0.4"
2182 | },
2183 | "funding": {
2184 | "url": "https://github.com/sponsors/ljharb"
2185 | }
2186 | },
2187 | "node_modules/is-symbol": {
2188 | "version": "1.0.3",
2189 | "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz",
2190 | "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==",
2191 | "dev": true,
2192 | "dependencies": {
2193 | "has-symbols": "^1.0.1"
2194 | },
2195 | "engines": {
2196 | "node": ">= 0.4"
2197 | },
2198 | "funding": {
2199 | "url": "https://github.com/sponsors/ljharb"
2200 | }
2201 | },
2202 | "node_modules/is-unicode-supported": {
2203 | "version": "0.1.0",
2204 | "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz",
2205 | "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==",
2206 | "dev": true,
2207 | "engines": {
2208 | "node": ">=10"
2209 | },
2210 | "funding": {
2211 | "url": "https://github.com/sponsors/sindresorhus"
2212 | }
2213 | },
2214 | "node_modules/isarray": {
2215 | "version": "1.0.0",
2216 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
2217 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
2218 | "dev": true
2219 | },
2220 | "node_modules/isexe": {
2221 | "version": "2.0.0",
2222 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
2223 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
2224 | "dev": true
2225 | },
2226 | "node_modules/js-tokens": {
2227 | "version": "4.0.0",
2228 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
2229 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
2230 | "dev": true
2231 | },
2232 | "node_modules/js-yaml": {
2233 | "version": "3.13.1",
2234 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz",
2235 | "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==",
2236 | "dev": true,
2237 | "dependencies": {
2238 | "argparse": "^1.0.7",
2239 | "esprima": "^4.0.0"
2240 | },
2241 | "bin": {
2242 | "js-yaml": "bin/js-yaml.js"
2243 | }
2244 | },
2245 | "node_modules/json-schema-traverse": {
2246 | "version": "0.4.1",
2247 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
2248 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
2249 | "dev": true
2250 | },
2251 | "node_modules/json-stable-stringify-without-jsonify": {
2252 | "version": "1.0.1",
2253 | "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
2254 | "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=",
2255 | "dev": true
2256 | },
2257 | "node_modules/json5": {
2258 | "version": "1.0.2",
2259 | "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz",
2260 | "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==",
2261 | "dev": true,
2262 | "dependencies": {
2263 | "minimist": "^1.2.0"
2264 | },
2265 | "bin": {
2266 | "json5": "lib/cli.js"
2267 | }
2268 | },
2269 | "node_modules/levn": {
2270 | "version": "0.4.1",
2271 | "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
2272 | "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
2273 | "dev": true,
2274 | "dependencies": {
2275 | "prelude-ls": "^1.2.1",
2276 | "type-check": "~0.4.0"
2277 | },
2278 | "engines": {
2279 | "node": ">= 0.8.0"
2280 | }
2281 | },
2282 | "node_modules/load-json-file": {
2283 | "version": "2.0.0",
2284 | "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz",
2285 | "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=",
2286 | "dev": true,
2287 | "dependencies": {
2288 | "graceful-fs": "^4.1.2",
2289 | "parse-json": "^2.2.0",
2290 | "pify": "^2.0.0",
2291 | "strip-bom": "^3.0.0"
2292 | },
2293 | "engines": {
2294 | "node": ">=4"
2295 | }
2296 | },
2297 | "node_modules/load-json-file/node_modules/pify": {
2298 | "version": "2.3.0",
2299 | "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
2300 | "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
2301 | "dev": true,
2302 | "engines": {
2303 | "node": ">=0.10.0"
2304 | }
2305 | },
2306 | "node_modules/locate-path": {
2307 | "version": "2.0.0",
2308 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
2309 | "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
2310 | "dev": true,
2311 | "dependencies": {
2312 | "p-locate": "^2.0.0",
2313 | "path-exists": "^3.0.0"
2314 | },
2315 | "engines": {
2316 | "node": ">=4"
2317 | }
2318 | },
2319 | "node_modules/lodash": {
2320 | "version": "4.17.21",
2321 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
2322 | "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
2323 | },
2324 | "node_modules/log-symbols": {
2325 | "version": "4.1.0",
2326 | "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz",
2327 | "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==",
2328 | "dev": true,
2329 | "dependencies": {
2330 | "chalk": "^4.1.0",
2331 | "is-unicode-supported": "^0.1.0"
2332 | },
2333 | "engines": {
2334 | "node": ">=10"
2335 | },
2336 | "funding": {
2337 | "url": "https://github.com/sponsors/sindresorhus"
2338 | }
2339 | },
2340 | "node_modules/log-symbols/node_modules/ansi-styles": {
2341 | "version": "4.3.0",
2342 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
2343 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
2344 | "dev": true,
2345 | "dependencies": {
2346 | "color-convert": "^2.0.1"
2347 | },
2348 | "engines": {
2349 | "node": ">=8"
2350 | },
2351 | "funding": {
2352 | "url": "https://github.com/chalk/ansi-styles?sponsor=1"
2353 | }
2354 | },
2355 | "node_modules/log-symbols/node_modules/chalk": {
2356 | "version": "4.1.2",
2357 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
2358 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
2359 | "dev": true,
2360 | "dependencies": {
2361 | "ansi-styles": "^4.1.0",
2362 | "supports-color": "^7.1.0"
2363 | },
2364 | "engines": {
2365 | "node": ">=10"
2366 | },
2367 | "funding": {
2368 | "url": "https://github.com/chalk/chalk?sponsor=1"
2369 | }
2370 | },
2371 | "node_modules/log-symbols/node_modules/color-convert": {
2372 | "version": "2.0.1",
2373 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
2374 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
2375 | "dev": true,
2376 | "dependencies": {
2377 | "color-name": "~1.1.4"
2378 | },
2379 | "engines": {
2380 | "node": ">=7.0.0"
2381 | }
2382 | },
2383 | "node_modules/log-symbols/node_modules/color-name": {
2384 | "version": "1.1.4",
2385 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
2386 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
2387 | "dev": true
2388 | },
2389 | "node_modules/log-symbols/node_modules/has-flag": {
2390 | "version": "4.0.0",
2391 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
2392 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
2393 | "dev": true,
2394 | "engines": {
2395 | "node": ">=8"
2396 | }
2397 | },
2398 | "node_modules/log-symbols/node_modules/supports-color": {
2399 | "version": "7.2.0",
2400 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
2401 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
2402 | "dev": true,
2403 | "dependencies": {
2404 | "has-flag": "^4.0.0"
2405 | },
2406 | "engines": {
2407 | "node": ">=8"
2408 | }
2409 | },
2410 | "node_modules/long": {
2411 | "version": "5.2.3",
2412 | "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz",
2413 | "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q=="
2414 | },
2415 | "node_modules/lru-cache": {
2416 | "version": "8.0.5",
2417 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-8.0.5.tgz",
2418 | "integrity": "sha512-MhWWlVnuab1RG5/zMRRcVGXZLCXrZTgfwMikgzCegsPnG62yDQo5JnqKkrK4jO5iKqDAZGItAqN5CtKBCBWRUA==",
2419 | "engines": {
2420 | "node": ">=16.14"
2421 | }
2422 | },
2423 | "node_modules/media-typer": {
2424 | "version": "0.3.0",
2425 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
2426 | "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
2427 | "engines": {
2428 | "node": ">= 0.6"
2429 | }
2430 | },
2431 | "node_modules/merge-descriptors": {
2432 | "version": "1.0.3",
2433 | "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz",
2434 | "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==",
2435 | "funding": {
2436 | "url": "https://github.com/sponsors/sindresorhus"
2437 | }
2438 | },
2439 | "node_modules/methods": {
2440 | "version": "1.1.2",
2441 | "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
2442 | "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=",
2443 | "engines": {
2444 | "node": ">= 0.6"
2445 | }
2446 | },
2447 | "node_modules/mime": {
2448 | "version": "1.6.0",
2449 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
2450 | "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
2451 | "bin": {
2452 | "mime": "cli.js"
2453 | },
2454 | "engines": {
2455 | "node": ">=4"
2456 | }
2457 | },
2458 | "node_modules/mime-db": {
2459 | "version": "1.43.0",
2460 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.43.0.tgz",
2461 | "integrity": "sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ==",
2462 | "engines": {
2463 | "node": ">= 0.6"
2464 | }
2465 | },
2466 | "node_modules/mime-types": {
2467 | "version": "2.1.26",
2468 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.26.tgz",
2469 | "integrity": "sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ==",
2470 | "dependencies": {
2471 | "mime-db": "1.43.0"
2472 | },
2473 | "engines": {
2474 | "node": ">= 0.6"
2475 | }
2476 | },
2477 | "node_modules/minimatch": {
2478 | "version": "3.1.2",
2479 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
2480 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
2481 | "dependencies": {
2482 | "brace-expansion": "^1.1.7"
2483 | },
2484 | "engines": {
2485 | "node": "*"
2486 | }
2487 | },
2488 | "node_modules/minimist": {
2489 | "version": "1.2.7",
2490 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz",
2491 | "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==",
2492 | "dev": true,
2493 | "funding": {
2494 | "url": "https://github.com/sponsors/ljharb"
2495 | }
2496 | },
2497 | "node_modules/mkdirp": {
2498 | "version": "0.5.5",
2499 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
2500 | "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
2501 | "dev": true,
2502 | "dependencies": {
2503 | "minimist": "^1.2.5"
2504 | },
2505 | "bin": {
2506 | "mkdirp": "bin/cmd.js"
2507 | }
2508 | },
2509 | "node_modules/mocha": {
2510 | "version": "10.8.2",
2511 | "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz",
2512 | "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==",
2513 | "dev": true,
2514 | "license": "MIT",
2515 | "dependencies": {
2516 | "ansi-colors": "^4.1.3",
2517 | "browser-stdout": "^1.3.1",
2518 | "chokidar": "^3.5.3",
2519 | "debug": "^4.3.5",
2520 | "diff": "^5.2.0",
2521 | "escape-string-regexp": "^4.0.0",
2522 | "find-up": "^5.0.0",
2523 | "glob": "^8.1.0",
2524 | "he": "^1.2.0",
2525 | "js-yaml": "^4.1.0",
2526 | "log-symbols": "^4.1.0",
2527 | "minimatch": "^5.1.6",
2528 | "ms": "^2.1.3",
2529 | "serialize-javascript": "^6.0.2",
2530 | "strip-json-comments": "^3.1.1",
2531 | "supports-color": "^8.1.1",
2532 | "workerpool": "^6.5.1",
2533 | "yargs": "^16.2.0",
2534 | "yargs-parser": "^20.2.9",
2535 | "yargs-unparser": "^2.0.0"
2536 | },
2537 | "bin": {
2538 | "_mocha": "bin/_mocha",
2539 | "mocha": "bin/mocha.js"
2540 | },
2541 | "engines": {
2542 | "node": ">= 14.0.0"
2543 | }
2544 | },
2545 | "node_modules/mocha/node_modules/argparse": {
2546 | "version": "2.0.1",
2547 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
2548 | "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
2549 | "dev": true
2550 | },
2551 | "node_modules/mocha/node_modules/brace-expansion": {
2552 | "version": "2.0.1",
2553 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
2554 | "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
2555 | "dev": true,
2556 | "license": "MIT",
2557 | "dependencies": {
2558 | "balanced-match": "^1.0.0"
2559 | }
2560 | },
2561 | "node_modules/mocha/node_modules/debug": {
2562 | "version": "4.4.0",
2563 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz",
2564 | "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==",
2565 | "dev": true,
2566 | "license": "MIT",
2567 | "dependencies": {
2568 | "ms": "^2.1.3"
2569 | },
2570 | "engines": {
2571 | "node": ">=6.0"
2572 | },
2573 | "peerDependenciesMeta": {
2574 | "supports-color": {
2575 | "optional": true
2576 | }
2577 | }
2578 | },
2579 | "node_modules/mocha/node_modules/escape-string-regexp": {
2580 | "version": "4.0.0",
2581 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
2582 | "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
2583 | "dev": true,
2584 | "engines": {
2585 | "node": ">=10"
2586 | },
2587 | "funding": {
2588 | "url": "https://github.com/sponsors/sindresorhus"
2589 | }
2590 | },
2591 | "node_modules/mocha/node_modules/find-up": {
2592 | "version": "5.0.0",
2593 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
2594 | "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
2595 | "dev": true,
2596 | "dependencies": {
2597 | "locate-path": "^6.0.0",
2598 | "path-exists": "^4.0.0"
2599 | },
2600 | "engines": {
2601 | "node": ">=10"
2602 | },
2603 | "funding": {
2604 | "url": "https://github.com/sponsors/sindresorhus"
2605 | }
2606 | },
2607 | "node_modules/mocha/node_modules/glob": {
2608 | "version": "8.1.0",
2609 | "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz",
2610 | "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==",
2611 | "deprecated": "Glob versions prior to v9 are no longer supported",
2612 | "dev": true,
2613 | "license": "ISC",
2614 | "dependencies": {
2615 | "fs.realpath": "^1.0.0",
2616 | "inflight": "^1.0.4",
2617 | "inherits": "2",
2618 | "minimatch": "^5.0.1",
2619 | "once": "^1.3.0"
2620 | },
2621 | "engines": {
2622 | "node": ">=12"
2623 | },
2624 | "funding": {
2625 | "url": "https://github.com/sponsors/isaacs"
2626 | }
2627 | },
2628 | "node_modules/mocha/node_modules/has-flag": {
2629 | "version": "4.0.0",
2630 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
2631 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
2632 | "dev": true,
2633 | "engines": {
2634 | "node": ">=8"
2635 | }
2636 | },
2637 | "node_modules/mocha/node_modules/js-yaml": {
2638 | "version": "4.1.0",
2639 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
2640 | "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
2641 | "dev": true,
2642 | "dependencies": {
2643 | "argparse": "^2.0.1"
2644 | },
2645 | "bin": {
2646 | "js-yaml": "bin/js-yaml.js"
2647 | }
2648 | },
2649 | "node_modules/mocha/node_modules/locate-path": {
2650 | "version": "6.0.0",
2651 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
2652 | "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
2653 | "dev": true,
2654 | "dependencies": {
2655 | "p-locate": "^5.0.0"
2656 | },
2657 | "engines": {
2658 | "node": ">=10"
2659 | },
2660 | "funding": {
2661 | "url": "https://github.com/sponsors/sindresorhus"
2662 | }
2663 | },
2664 | "node_modules/mocha/node_modules/minimatch": {
2665 | "version": "5.1.6",
2666 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
2667 | "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
2668 | "dev": true,
2669 | "license": "ISC",
2670 | "dependencies": {
2671 | "brace-expansion": "^2.0.1"
2672 | },
2673 | "engines": {
2674 | "node": ">=10"
2675 | }
2676 | },
2677 | "node_modules/mocha/node_modules/ms": {
2678 | "version": "2.1.3",
2679 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
2680 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
2681 | "dev": true
2682 | },
2683 | "node_modules/mocha/node_modules/p-limit": {
2684 | "version": "3.1.0",
2685 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
2686 | "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
2687 | "dev": true,
2688 | "dependencies": {
2689 | "yocto-queue": "^0.1.0"
2690 | },
2691 | "engines": {
2692 | "node": ">=10"
2693 | },
2694 | "funding": {
2695 | "url": "https://github.com/sponsors/sindresorhus"
2696 | }
2697 | },
2698 | "node_modules/mocha/node_modules/p-locate": {
2699 | "version": "5.0.0",
2700 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
2701 | "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
2702 | "dev": true,
2703 | "dependencies": {
2704 | "p-limit": "^3.0.2"
2705 | },
2706 | "engines": {
2707 | "node": ">=10"
2708 | },
2709 | "funding": {
2710 | "url": "https://github.com/sponsors/sindresorhus"
2711 | }
2712 | },
2713 | "node_modules/mocha/node_modules/path-exists": {
2714 | "version": "4.0.0",
2715 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
2716 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
2717 | "dev": true,
2718 | "engines": {
2719 | "node": ">=8"
2720 | }
2721 | },
2722 | "node_modules/mocha/node_modules/supports-color": {
2723 | "version": "8.1.1",
2724 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
2725 | "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
2726 | "dev": true,
2727 | "dependencies": {
2728 | "has-flag": "^4.0.0"
2729 | },
2730 | "engines": {
2731 | "node": ">=10"
2732 | },
2733 | "funding": {
2734 | "url": "https://github.com/chalk/supports-color?sponsor=1"
2735 | }
2736 | },
2737 | "node_modules/moment": {
2738 | "version": "2.29.4",
2739 | "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz",
2740 | "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==",
2741 | "engines": {
2742 | "node": "*"
2743 | }
2744 | },
2745 | "node_modules/moment-timezone": {
2746 | "version": "0.5.40",
2747 | "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.40.tgz",
2748 | "integrity": "sha512-tWfmNkRYmBkPJz5mr9GVDn9vRlVZOTe6yqY92rFxiOdWXbjaR0+9LwQnZGGuNR63X456NqmEkbskte8tWL5ePg==",
2749 | "dependencies": {
2750 | "moment": ">= 2.9.0"
2751 | },
2752 | "engines": {
2753 | "node": "*"
2754 | }
2755 | },
2756 | "node_modules/ms": {
2757 | "version": "2.0.0",
2758 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
2759 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
2760 | },
2761 | "node_modules/mysql2": {
2762 | "version": "3.9.8",
2763 | "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.9.8.tgz",
2764 | "integrity": "sha512-+5JKNjPuks1FNMoy9TYpl77f+5frbTklz7eb3XDwbpsERRLEeXiW2PDEkakYF50UuKU2qwfGnyXpKYvukv8mGA==",
2765 | "dependencies": {
2766 | "denque": "^2.1.0",
2767 | "generate-function": "^2.3.1",
2768 | "iconv-lite": "^0.6.3",
2769 | "long": "^5.2.1",
2770 | "lru-cache": "^8.0.0",
2771 | "named-placeholders": "^1.1.3",
2772 | "seq-queue": "^0.0.5",
2773 | "sqlstring": "^2.3.2"
2774 | },
2775 | "engines": {
2776 | "node": ">= 8.0"
2777 | }
2778 | },
2779 | "node_modules/mysql2/node_modules/iconv-lite": {
2780 | "version": "0.6.3",
2781 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
2782 | "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
2783 | "dependencies": {
2784 | "safer-buffer": ">= 2.1.2 < 3.0.0"
2785 | },
2786 | "engines": {
2787 | "node": ">=0.10.0"
2788 | }
2789 | },
2790 | "node_modules/named-placeholders": {
2791 | "version": "1.1.3",
2792 | "resolved": "https://registry.npmjs.org/named-placeholders/-/named-placeholders-1.1.3.tgz",
2793 | "integrity": "sha512-eLoBxg6wE/rZkJPhU/xRX1WTpkFEwDJEN96oxFrTsqBdbT5ec295Q+CoHrL9IT0DipqKhmGcaZmwOt8OON5x1w==",
2794 | "dependencies": {
2795 | "lru-cache": "^7.14.1"
2796 | },
2797 | "engines": {
2798 | "node": ">=12.0.0"
2799 | }
2800 | },
2801 | "node_modules/named-placeholders/node_modules/lru-cache": {
2802 | "version": "7.18.3",
2803 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
2804 | "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==",
2805 | "engines": {
2806 | "node": ">=12"
2807 | }
2808 | },
2809 | "node_modules/natural-compare": {
2810 | "version": "1.4.0",
2811 | "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
2812 | "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
2813 | "dev": true
2814 | },
2815 | "node_modules/negotiator": {
2816 | "version": "0.6.3",
2817 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
2818 | "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
2819 | "engines": {
2820 | "node": ">= 0.6"
2821 | }
2822 | },
2823 | "node_modules/nodemon": {
2824 | "version": "2.0.20",
2825 | "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.20.tgz",
2826 | "integrity": "sha512-Km2mWHKKY5GzRg6i1j5OxOHQtuvVsgskLfigG25yTtbyfRGn/GNvIbRyOf1PSCKJ2aT/58TiuUsuOU5UToVViw==",
2827 | "dependencies": {
2828 | "chokidar": "^3.5.2",
2829 | "debug": "^3.2.7",
2830 | "ignore-by-default": "^1.0.1",
2831 | "minimatch": "^3.1.2",
2832 | "pstree.remy": "^1.1.8",
2833 | "semver": "^5.7.1",
2834 | "simple-update-notifier": "^1.0.7",
2835 | "supports-color": "^5.5.0",
2836 | "touch": "^3.1.0",
2837 | "undefsafe": "^2.0.5"
2838 | },
2839 | "bin": {
2840 | "nodemon": "bin/nodemon.js"
2841 | },
2842 | "engines": {
2843 | "node": ">=8.10.0"
2844 | },
2845 | "funding": {
2846 | "type": "opencollective",
2847 | "url": "https://opencollective.com/nodemon"
2848 | }
2849 | },
2850 | "node_modules/nodemon/node_modules/debug": {
2851 | "version": "3.2.7",
2852 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
2853 | "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
2854 | "dependencies": {
2855 | "ms": "^2.1.1"
2856 | }
2857 | },
2858 | "node_modules/nodemon/node_modules/ms": {
2859 | "version": "2.1.3",
2860 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
2861 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
2862 | },
2863 | "node_modules/nopt": {
2864 | "version": "1.0.10",
2865 | "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz",
2866 | "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==",
2867 | "dependencies": {
2868 | "abbrev": "1"
2869 | },
2870 | "bin": {
2871 | "nopt": "bin/nopt.js"
2872 | },
2873 | "engines": {
2874 | "node": "*"
2875 | }
2876 | },
2877 | "node_modules/normalize-package-data": {
2878 | "version": "2.5.0",
2879 | "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
2880 | "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
2881 | "dev": true,
2882 | "dependencies": {
2883 | "hosted-git-info": "^2.1.4",
2884 | "resolve": "^1.10.0",
2885 | "semver": "2 || 3 || 4 || 5",
2886 | "validate-npm-package-license": "^3.0.1"
2887 | }
2888 | },
2889 | "node_modules/normalize-path": {
2890 | "version": "3.0.0",
2891 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
2892 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
2893 | "engines": {
2894 | "node": ">=0.10.0"
2895 | }
2896 | },
2897 | "node_modules/object-inspect": {
2898 | "version": "1.7.0",
2899 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz",
2900 | "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==",
2901 | "dev": true,
2902 | "funding": {
2903 | "url": "https://github.com/sponsors/ljharb"
2904 | }
2905 | },
2906 | "node_modules/object-keys": {
2907 | "version": "1.1.1",
2908 | "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
2909 | "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
2910 | "dev": true,
2911 | "engines": {
2912 | "node": ">= 0.4"
2913 | }
2914 | },
2915 | "node_modules/object.assign": {
2916 | "version": "4.1.0",
2917 | "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz",
2918 | "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==",
2919 | "dev": true,
2920 | "dependencies": {
2921 | "define-properties": "^1.1.2",
2922 | "function-bind": "^1.1.1",
2923 | "has-symbols": "^1.0.0",
2924 | "object-keys": "^1.0.11"
2925 | },
2926 | "engines": {
2927 | "node": ">= 0.4"
2928 | }
2929 | },
2930 | "node_modules/object.entries": {
2931 | "version": "1.1.2",
2932 | "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.2.tgz",
2933 | "integrity": "sha512-BQdB9qKmb/HyNdMNWVr7O3+z5MUIx3aiegEIJqjMBbBf0YT9RRxTJSim4mzFqtyr7PDAHigq0N9dO0m0tRakQA==",
2934 | "dev": true,
2935 | "dependencies": {
2936 | "define-properties": "^1.1.3",
2937 | "es-abstract": "^1.17.5",
2938 | "has": "^1.0.3"
2939 | },
2940 | "engines": {
2941 | "node": ">= 0.4"
2942 | }
2943 | },
2944 | "node_modules/object.values": {
2945 | "version": "1.1.1",
2946 | "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz",
2947 | "integrity": "sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==",
2948 | "dev": true,
2949 | "dependencies": {
2950 | "define-properties": "^1.1.3",
2951 | "es-abstract": "^1.17.0-next.1",
2952 | "function-bind": "^1.1.1",
2953 | "has": "^1.0.3"
2954 | },
2955 | "engines": {
2956 | "node": ">= 0.4"
2957 | },
2958 | "funding": {
2959 | "url": "https://github.com/sponsors/ljharb"
2960 | }
2961 | },
2962 | "node_modules/on-finished": {
2963 | "version": "2.4.1",
2964 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
2965 | "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
2966 | "dependencies": {
2967 | "ee-first": "1.1.1"
2968 | },
2969 | "engines": {
2970 | "node": ">= 0.8"
2971 | }
2972 | },
2973 | "node_modules/once": {
2974 | "version": "1.4.0",
2975 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
2976 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
2977 | "dev": true,
2978 | "dependencies": {
2979 | "wrappy": "1"
2980 | }
2981 | },
2982 | "node_modules/optionator": {
2983 | "version": "0.9.1",
2984 | "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz",
2985 | "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==",
2986 | "dev": true,
2987 | "dependencies": {
2988 | "deep-is": "^0.1.3",
2989 | "fast-levenshtein": "^2.0.6",
2990 | "levn": "^0.4.1",
2991 | "prelude-ls": "^1.2.1",
2992 | "type-check": "^0.4.0",
2993 | "word-wrap": "^1.2.3"
2994 | },
2995 | "engines": {
2996 | "node": ">= 0.8.0"
2997 | }
2998 | },
2999 | "node_modules/p-limit": {
3000 | "version": "1.3.0",
3001 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
3002 | "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
3003 | "dev": true,
3004 | "dependencies": {
3005 | "p-try": "^1.0.0"
3006 | },
3007 | "engines": {
3008 | "node": ">=4"
3009 | }
3010 | },
3011 | "node_modules/p-locate": {
3012 | "version": "2.0.0",
3013 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
3014 | "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
3015 | "dev": true,
3016 | "dependencies": {
3017 | "p-limit": "^1.1.0"
3018 | },
3019 | "engines": {
3020 | "node": ">=4"
3021 | }
3022 | },
3023 | "node_modules/p-try": {
3024 | "version": "1.0.0",
3025 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
3026 | "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
3027 | "dev": true,
3028 | "engines": {
3029 | "node": ">=4"
3030 | }
3031 | },
3032 | "node_modules/parent-module": {
3033 | "version": "1.0.1",
3034 | "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
3035 | "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
3036 | "dev": true,
3037 | "dependencies": {
3038 | "callsites": "^3.0.0"
3039 | },
3040 | "engines": {
3041 | "node": ">=6"
3042 | }
3043 | },
3044 | "node_modules/parse-json": {
3045 | "version": "2.2.0",
3046 | "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
3047 | "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
3048 | "dev": true,
3049 | "dependencies": {
3050 | "error-ex": "^1.2.0"
3051 | },
3052 | "engines": {
3053 | "node": ">=0.10.0"
3054 | }
3055 | },
3056 | "node_modules/parseurl": {
3057 | "version": "1.3.3",
3058 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
3059 | "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
3060 | "engines": {
3061 | "node": ">= 0.8"
3062 | }
3063 | },
3064 | "node_modules/path-exists": {
3065 | "version": "3.0.0",
3066 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
3067 | "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
3068 | "dev": true,
3069 | "engines": {
3070 | "node": ">=4"
3071 | }
3072 | },
3073 | "node_modules/path-is-absolute": {
3074 | "version": "1.0.1",
3075 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
3076 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
3077 | "dev": true,
3078 | "engines": {
3079 | "node": ">=0.10.0"
3080 | }
3081 | },
3082 | "node_modules/path-parse": {
3083 | "version": "1.0.7",
3084 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
3085 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
3086 | "dev": true
3087 | },
3088 | "node_modules/path-to-regexp": {
3089 | "version": "0.1.12",
3090 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz",
3091 | "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ=="
3092 | },
3093 | "node_modules/path-type": {
3094 | "version": "2.0.0",
3095 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz",
3096 | "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=",
3097 | "dev": true,
3098 | "dependencies": {
3099 | "pify": "^2.0.0"
3100 | },
3101 | "engines": {
3102 | "node": ">=4"
3103 | }
3104 | },
3105 | "node_modules/path-type/node_modules/pify": {
3106 | "version": "2.3.0",
3107 | "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
3108 | "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
3109 | "dev": true,
3110 | "engines": {
3111 | "node": ">=0.10.0"
3112 | }
3113 | },
3114 | "node_modules/pathval": {
3115 | "version": "1.1.1",
3116 | "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz",
3117 | "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==",
3118 | "dev": true,
3119 | "engines": {
3120 | "node": "*"
3121 | }
3122 | },
3123 | "node_modules/pg-connection-string": {
3124 | "version": "2.5.0",
3125 | "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.5.0.tgz",
3126 | "integrity": "sha512-r5o/V/ORTA6TmUnyWZR9nCj1klXCO2CEKNRlVuJptZe85QuhFayC7WeMic7ndayT5IRIR0S0xFxFi2ousartlQ=="
3127 | },
3128 | "node_modules/picomatch": {
3129 | "version": "2.2.2",
3130 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz",
3131 | "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==",
3132 | "engines": {
3133 | "node": ">=8.6"
3134 | },
3135 | "funding": {
3136 | "url": "https://github.com/sponsors/jonschlinkert"
3137 | }
3138 | },
3139 | "node_modules/pkg-dir": {
3140 | "version": "2.0.0",
3141 | "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz",
3142 | "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=",
3143 | "dev": true,
3144 | "dependencies": {
3145 | "find-up": "^2.1.0"
3146 | },
3147 | "engines": {
3148 | "node": ">=4"
3149 | }
3150 | },
3151 | "node_modules/prelude-ls": {
3152 | "version": "1.2.1",
3153 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
3154 | "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
3155 | "dev": true,
3156 | "engines": {
3157 | "node": ">= 0.8.0"
3158 | }
3159 | },
3160 | "node_modules/process-nextick-args": {
3161 | "version": "2.0.1",
3162 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
3163 | "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
3164 | "dev": true
3165 | },
3166 | "node_modules/progress": {
3167 | "version": "2.0.3",
3168 | "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
3169 | "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
3170 | "dev": true,
3171 | "engines": {
3172 | "node": ">=0.4.0"
3173 | }
3174 | },
3175 | "node_modules/proxy-addr": {
3176 | "version": "2.0.7",
3177 | "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
3178 | "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
3179 | "dependencies": {
3180 | "forwarded": "0.2.0",
3181 | "ipaddr.js": "1.9.1"
3182 | },
3183 | "engines": {
3184 | "node": ">= 0.10"
3185 | }
3186 | },
3187 | "node_modules/pstree.remy": {
3188 | "version": "1.1.8",
3189 | "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz",
3190 | "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w=="
3191 | },
3192 | "node_modules/punycode": {
3193 | "version": "2.1.1",
3194 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
3195 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
3196 | "dev": true,
3197 | "engines": {
3198 | "node": ">=6"
3199 | }
3200 | },
3201 | "node_modules/qs": {
3202 | "version": "6.11.0",
3203 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
3204 | "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
3205 | "dev": true,
3206 | "dependencies": {
3207 | "side-channel": "^1.0.4"
3208 | },
3209 | "engines": {
3210 | "node": ">=0.6"
3211 | },
3212 | "funding": {
3213 | "url": "https://github.com/sponsors/ljharb"
3214 | }
3215 | },
3216 | "node_modules/randombytes": {
3217 | "version": "2.1.0",
3218 | "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
3219 | "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
3220 | "dev": true,
3221 | "license": "MIT",
3222 | "dependencies": {
3223 | "safe-buffer": "^5.1.0"
3224 | }
3225 | },
3226 | "node_modules/range-parser": {
3227 | "version": "1.2.1",
3228 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
3229 | "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
3230 | "engines": {
3231 | "node": ">= 0.6"
3232 | }
3233 | },
3234 | "node_modules/raw-body": {
3235 | "version": "2.5.2",
3236 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz",
3237 | "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==",
3238 | "dependencies": {
3239 | "bytes": "3.1.2",
3240 | "http-errors": "2.0.0",
3241 | "iconv-lite": "0.4.24",
3242 | "unpipe": "1.0.0"
3243 | },
3244 | "engines": {
3245 | "node": ">= 0.8"
3246 | }
3247 | },
3248 | "node_modules/read-pkg": {
3249 | "version": "2.0.0",
3250 | "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz",
3251 | "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=",
3252 | "dev": true,
3253 | "dependencies": {
3254 | "load-json-file": "^2.0.0",
3255 | "normalize-package-data": "^2.3.2",
3256 | "path-type": "^2.0.0"
3257 | },
3258 | "engines": {
3259 | "node": ">=4"
3260 | }
3261 | },
3262 | "node_modules/read-pkg-up": {
3263 | "version": "2.0.0",
3264 | "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz",
3265 | "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=",
3266 | "dev": true,
3267 | "dependencies": {
3268 | "find-up": "^2.0.0",
3269 | "read-pkg": "^2.0.0"
3270 | },
3271 | "engines": {
3272 | "node": ">=4"
3273 | }
3274 | },
3275 | "node_modules/readable-stream": {
3276 | "version": "2.3.7",
3277 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
3278 | "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
3279 | "dev": true,
3280 | "dependencies": {
3281 | "core-util-is": "~1.0.0",
3282 | "inherits": "~2.0.3",
3283 | "isarray": "~1.0.0",
3284 | "process-nextick-args": "~2.0.0",
3285 | "safe-buffer": "~5.1.1",
3286 | "string_decoder": "~1.1.1",
3287 | "util-deprecate": "~1.0.1"
3288 | }
3289 | },
3290 | "node_modules/readdirp": {
3291 | "version": "3.6.0",
3292 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
3293 | "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
3294 | "dependencies": {
3295 | "picomatch": "^2.2.1"
3296 | },
3297 | "engines": {
3298 | "node": ">=8.10.0"
3299 | }
3300 | },
3301 | "node_modules/regexpp": {
3302 | "version": "3.1.0",
3303 | "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz",
3304 | "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==",
3305 | "dev": true,
3306 | "engines": {
3307 | "node": ">=8"
3308 | },
3309 | "funding": {
3310 | "url": "https://github.com/sponsors/mysticatea"
3311 | }
3312 | },
3313 | "node_modules/require-directory": {
3314 | "version": "2.1.1",
3315 | "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
3316 | "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
3317 | "dev": true,
3318 | "engines": {
3319 | "node": ">=0.10.0"
3320 | }
3321 | },
3322 | "node_modules/resolve": {
3323 | "version": "1.17.0",
3324 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz",
3325 | "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==",
3326 | "dev": true,
3327 | "dependencies": {
3328 | "path-parse": "^1.0.6"
3329 | },
3330 | "funding": {
3331 | "url": "https://github.com/sponsors/ljharb"
3332 | }
3333 | },
3334 | "node_modules/resolve-from": {
3335 | "version": "4.0.0",
3336 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
3337 | "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
3338 | "dev": true,
3339 | "engines": {
3340 | "node": ">=4"
3341 | }
3342 | },
3343 | "node_modules/retry-as-promised": {
3344 | "version": "7.0.4",
3345 | "resolved": "https://registry.npmjs.org/retry-as-promised/-/retry-as-promised-7.0.4.tgz",
3346 | "integrity": "sha512-XgmCoxKWkDofwH8WddD0w85ZfqYz+ZHlr5yo+3YUCfycWawU56T5ckWXsScsj5B8tqUcIG67DxXByo3VUgiAdA=="
3347 | },
3348 | "node_modules/rimraf": {
3349 | "version": "2.6.3",
3350 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
3351 | "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
3352 | "deprecated": "Rimraf versions prior to v4 are no longer supported",
3353 | "dev": true,
3354 | "dependencies": {
3355 | "glob": "^7.1.3"
3356 | },
3357 | "bin": {
3358 | "rimraf": "bin.js"
3359 | }
3360 | },
3361 | "node_modules/safe-buffer": {
3362 | "version": "5.1.2",
3363 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
3364 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
3365 | "dev": true
3366 | },
3367 | "node_modules/safer-buffer": {
3368 | "version": "2.1.2",
3369 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
3370 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
3371 | },
3372 | "node_modules/semver": {
3373 | "version": "5.7.2",
3374 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
3375 | "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
3376 | "bin": {
3377 | "semver": "bin/semver"
3378 | }
3379 | },
3380 | "node_modules/send": {
3381 | "version": "0.19.0",
3382 | "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz",
3383 | "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==",
3384 | "dependencies": {
3385 | "debug": "2.6.9",
3386 | "depd": "2.0.0",
3387 | "destroy": "1.2.0",
3388 | "encodeurl": "~1.0.2",
3389 | "escape-html": "~1.0.3",
3390 | "etag": "~1.8.1",
3391 | "fresh": "0.5.2",
3392 | "http-errors": "2.0.0",
3393 | "mime": "1.6.0",
3394 | "ms": "2.1.3",
3395 | "on-finished": "2.4.1",
3396 | "range-parser": "~1.2.1",
3397 | "statuses": "2.0.1"
3398 | },
3399 | "engines": {
3400 | "node": ">= 0.8.0"
3401 | }
3402 | },
3403 | "node_modules/send/node_modules/encodeurl": {
3404 | "version": "1.0.2",
3405 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
3406 | "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
3407 | "engines": {
3408 | "node": ">= 0.8"
3409 | }
3410 | },
3411 | "node_modules/send/node_modules/ms": {
3412 | "version": "2.1.3",
3413 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
3414 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
3415 | },
3416 | "node_modules/seq-queue": {
3417 | "version": "0.0.5",
3418 | "resolved": "https://registry.npmjs.org/seq-queue/-/seq-queue-0.0.5.tgz",
3419 | "integrity": "sha512-hr3Wtp/GZIc/6DAGPDcV4/9WoZhjrkXsi5B/07QgX8tsdc6ilr7BFM6PM6rbdAX1kFSDYeZGLipIZZKyQP0O5Q=="
3420 | },
3421 | "node_modules/sequelize": {
3422 | "version": "6.29.0",
3423 | "resolved": "https://registry.npmjs.org/sequelize/-/sequelize-6.29.0.tgz",
3424 | "integrity": "sha512-m8Wi90rs3NZP9coXE52c7PL4Q078nwYZXqt1IxPvgki7nOFn0p/F0eKsYDBXCPw9G8/BCEa6zZNk0DQUAT4ypA==",
3425 | "funding": [
3426 | {
3427 | "type": "opencollective",
3428 | "url": "https://opencollective.com/sequelize"
3429 | }
3430 | ],
3431 | "dependencies": {
3432 | "@types/debug": "^4.1.7",
3433 | "@types/validator": "^13.7.1",
3434 | "debug": "^4.3.3",
3435 | "dottie": "^2.0.2",
3436 | "inflection": "^1.13.2",
3437 | "lodash": "^4.17.21",
3438 | "moment": "^2.29.1",
3439 | "moment-timezone": "^0.5.35",
3440 | "pg-connection-string": "^2.5.0",
3441 | "retry-as-promised": "^7.0.3",
3442 | "semver": "^7.3.5",
3443 | "sequelize-pool": "^7.1.0",
3444 | "toposort-class": "^1.0.1",
3445 | "uuid": "^8.3.2",
3446 | "validator": "^13.7.0",
3447 | "wkx": "^0.5.0"
3448 | },
3449 | "engines": {
3450 | "node": ">=10.0.0"
3451 | },
3452 | "peerDependenciesMeta": {
3453 | "ibm_db": {
3454 | "optional": true
3455 | },
3456 | "mariadb": {
3457 | "optional": true
3458 | },
3459 | "mysql2": {
3460 | "optional": true
3461 | },
3462 | "oracledb": {
3463 | "optional": true
3464 | },
3465 | "pg": {
3466 | "optional": true
3467 | },
3468 | "pg-hstore": {
3469 | "optional": true
3470 | },
3471 | "snowflake-sdk": {
3472 | "optional": true
3473 | },
3474 | "sqlite3": {
3475 | "optional": true
3476 | },
3477 | "tedious": {
3478 | "optional": true
3479 | }
3480 | }
3481 | },
3482 | "node_modules/sequelize-pool": {
3483 | "version": "7.1.0",
3484 | "resolved": "https://registry.npmjs.org/sequelize-pool/-/sequelize-pool-7.1.0.tgz",
3485 | "integrity": "sha512-G9c0qlIWQSK29pR/5U2JF5dDQeqqHRragoyahj/Nx4KOOQ3CPPfzxnfqFPCSB7x5UgjOgnZ61nSxz+fjDpRlJg==",
3486 | "engines": {
3487 | "node": ">= 10.0.0"
3488 | }
3489 | },
3490 | "node_modules/sequelize/node_modules/debug": {
3491 | "version": "4.3.4",
3492 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
3493 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
3494 | "dependencies": {
3495 | "ms": "2.1.2"
3496 | },
3497 | "engines": {
3498 | "node": ">=6.0"
3499 | },
3500 | "peerDependenciesMeta": {
3501 | "supports-color": {
3502 | "optional": true
3503 | }
3504 | }
3505 | },
3506 | "node_modules/sequelize/node_modules/lru-cache": {
3507 | "version": "6.0.0",
3508 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
3509 | "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
3510 | "dependencies": {
3511 | "yallist": "^4.0.0"
3512 | },
3513 | "engines": {
3514 | "node": ">=10"
3515 | }
3516 | },
3517 | "node_modules/sequelize/node_modules/ms": {
3518 | "version": "2.1.2",
3519 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
3520 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
3521 | },
3522 | "node_modules/sequelize/node_modules/semver": {
3523 | "version": "7.5.4",
3524 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
3525 | "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
3526 | "dependencies": {
3527 | "lru-cache": "^6.0.0"
3528 | },
3529 | "bin": {
3530 | "semver": "bin/semver.js"
3531 | },
3532 | "engines": {
3533 | "node": ">=10"
3534 | }
3535 | },
3536 | "node_modules/sequelize/node_modules/yallist": {
3537 | "version": "4.0.0",
3538 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
3539 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
3540 | },
3541 | "node_modules/serialize-javascript": {
3542 | "version": "6.0.2",
3543 | "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz",
3544 | "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==",
3545 | "dev": true,
3546 | "license": "BSD-3-Clause",
3547 | "dependencies": {
3548 | "randombytes": "^2.1.0"
3549 | }
3550 | },
3551 | "node_modules/serve-static": {
3552 | "version": "1.16.2",
3553 | "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz",
3554 | "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==",
3555 | "dependencies": {
3556 | "encodeurl": "~2.0.0",
3557 | "escape-html": "~1.0.3",
3558 | "parseurl": "~1.3.3",
3559 | "send": "0.19.0"
3560 | },
3561 | "engines": {
3562 | "node": ">= 0.8.0"
3563 | }
3564 | },
3565 | "node_modules/set-function-length": {
3566 | "version": "1.2.2",
3567 | "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz",
3568 | "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==",
3569 | "dependencies": {
3570 | "define-data-property": "^1.1.4",
3571 | "es-errors": "^1.3.0",
3572 | "function-bind": "^1.1.2",
3573 | "get-intrinsic": "^1.2.4",
3574 | "gopd": "^1.0.1",
3575 | "has-property-descriptors": "^1.0.2"
3576 | },
3577 | "engines": {
3578 | "node": ">= 0.4"
3579 | }
3580 | },
3581 | "node_modules/set-function-length/node_modules/function-bind": {
3582 | "version": "1.1.2",
3583 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
3584 | "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
3585 | "funding": {
3586 | "url": "https://github.com/sponsors/ljharb"
3587 | }
3588 | },
3589 | "node_modules/set-function-length/node_modules/get-intrinsic": {
3590 | "version": "1.2.4",
3591 | "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz",
3592 | "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==",
3593 | "dependencies": {
3594 | "es-errors": "^1.3.0",
3595 | "function-bind": "^1.1.2",
3596 | "has-proto": "^1.0.1",
3597 | "has-symbols": "^1.0.3",
3598 | "hasown": "^2.0.0"
3599 | },
3600 | "engines": {
3601 | "node": ">= 0.4"
3602 | },
3603 | "funding": {
3604 | "url": "https://github.com/sponsors/ljharb"
3605 | }
3606 | },
3607 | "node_modules/set-function-length/node_modules/has-symbols": {
3608 | "version": "1.0.3",
3609 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
3610 | "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
3611 | "engines": {
3612 | "node": ">= 0.4"
3613 | },
3614 | "funding": {
3615 | "url": "https://github.com/sponsors/ljharb"
3616 | }
3617 | },
3618 | "node_modules/setprototypeof": {
3619 | "version": "1.2.0",
3620 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
3621 | "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
3622 | },
3623 | "node_modules/side-channel": {
3624 | "version": "1.0.4",
3625 | "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
3626 | "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
3627 | "dev": true,
3628 | "dependencies": {
3629 | "call-bind": "^1.0.0",
3630 | "get-intrinsic": "^1.0.2",
3631 | "object-inspect": "^1.9.0"
3632 | },
3633 | "funding": {
3634 | "url": "https://github.com/sponsors/ljharb"
3635 | }
3636 | },
3637 | "node_modules/side-channel/node_modules/object-inspect": {
3638 | "version": "1.12.2",
3639 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz",
3640 | "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==",
3641 | "dev": true,
3642 | "funding": {
3643 | "url": "https://github.com/sponsors/ljharb"
3644 | }
3645 | },
3646 | "node_modules/simple-update-notifier": {
3647 | "version": "1.1.0",
3648 | "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.1.0.tgz",
3649 | "integrity": "sha512-VpsrsJSUcJEseSbMHkrsrAVSdvVS5I96Qo1QAQ4FxQ9wXFcB+pjj7FB7/us9+GcgfW4ziHtYMc1J0PLczb55mg==",
3650 | "dependencies": {
3651 | "semver": "~7.0.0"
3652 | },
3653 | "engines": {
3654 | "node": ">=8.10.0"
3655 | }
3656 | },
3657 | "node_modules/simple-update-notifier/node_modules/semver": {
3658 | "version": "7.0.0",
3659 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz",
3660 | "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==",
3661 | "bin": {
3662 | "semver": "bin/semver.js"
3663 | }
3664 | },
3665 | "node_modules/slice-ansi": {
3666 | "version": "2.1.0",
3667 | "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz",
3668 | "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==",
3669 | "dev": true,
3670 | "dependencies": {
3671 | "ansi-styles": "^3.2.0",
3672 | "astral-regex": "^1.0.0",
3673 | "is-fullwidth-code-point": "^2.0.0"
3674 | },
3675 | "engines": {
3676 | "node": ">=6"
3677 | }
3678 | },
3679 | "node_modules/spdx-correct": {
3680 | "version": "3.1.1",
3681 | "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz",
3682 | "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==",
3683 | "dev": true,
3684 | "dependencies": {
3685 | "spdx-expression-parse": "^3.0.0",
3686 | "spdx-license-ids": "^3.0.0"
3687 | }
3688 | },
3689 | "node_modules/spdx-exceptions": {
3690 | "version": "2.3.0",
3691 | "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz",
3692 | "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==",
3693 | "dev": true
3694 | },
3695 | "node_modules/spdx-expression-parse": {
3696 | "version": "3.0.1",
3697 | "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
3698 | "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
3699 | "dev": true,
3700 | "dependencies": {
3701 | "spdx-exceptions": "^2.1.0",
3702 | "spdx-license-ids": "^3.0.0"
3703 | }
3704 | },
3705 | "node_modules/spdx-license-ids": {
3706 | "version": "3.0.5",
3707 | "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz",
3708 | "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==",
3709 | "dev": true
3710 | },
3711 | "node_modules/sprintf-js": {
3712 | "version": "1.0.3",
3713 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
3714 | "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
3715 | "dev": true
3716 | },
3717 | "node_modules/sqlstring": {
3718 | "version": "2.3.3",
3719 | "resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.3.tgz",
3720 | "integrity": "sha512-qC9iz2FlN7DQl3+wjwn3802RTyjCx7sDvfQEXchwa6CWOx07/WVfh91gBmQ9fahw8snwGEWU3xGzOt4tFyHLxg==",
3721 | "engines": {
3722 | "node": ">= 0.6"
3723 | }
3724 | },
3725 | "node_modules/statuses": {
3726 | "version": "2.0.1",
3727 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
3728 | "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
3729 | "engines": {
3730 | "node": ">= 0.8"
3731 | }
3732 | },
3733 | "node_modules/string_decoder": {
3734 | "version": "1.1.1",
3735 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
3736 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
3737 | "dev": true,
3738 | "dependencies": {
3739 | "safe-buffer": "~5.1.0"
3740 | }
3741 | },
3742 | "node_modules/string-width": {
3743 | "version": "4.2.3",
3744 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
3745 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
3746 | "dev": true,
3747 | "dependencies": {
3748 | "emoji-regex": "^8.0.0",
3749 | "is-fullwidth-code-point": "^3.0.0",
3750 | "strip-ansi": "^6.0.1"
3751 | },
3752 | "engines": {
3753 | "node": ">=8"
3754 | }
3755 | },
3756 | "node_modules/string-width/node_modules/emoji-regex": {
3757 | "version": "8.0.0",
3758 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
3759 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
3760 | "dev": true
3761 | },
3762 | "node_modules/string-width/node_modules/is-fullwidth-code-point": {
3763 | "version": "3.0.0",
3764 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
3765 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
3766 | "dev": true,
3767 | "engines": {
3768 | "node": ">=8"
3769 | }
3770 | },
3771 | "node_modules/string.prototype.trimend": {
3772 | "version": "1.0.0",
3773 | "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.0.tgz",
3774 | "integrity": "sha512-EEJnGqa/xNfIg05SxiPSqRS7S9qwDhYts1TSLR1BQfYUfPe1stofgGKvwERK9+9yf+PpfBMlpBaCHucXGPQfUA==",
3775 | "dev": true,
3776 | "dependencies": {
3777 | "define-properties": "^1.1.3",
3778 | "es-abstract": "^1.17.5"
3779 | },
3780 | "funding": {
3781 | "url": "https://github.com/sponsors/ljharb"
3782 | }
3783 | },
3784 | "node_modules/string.prototype.trimleft": {
3785 | "version": "2.1.2",
3786 | "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz",
3787 | "integrity": "sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw==",
3788 | "dev": true,
3789 | "dependencies": {
3790 | "define-properties": "^1.1.3",
3791 | "es-abstract": "^1.17.5",
3792 | "string.prototype.trimstart": "^1.0.0"
3793 | },
3794 | "engines": {
3795 | "node": ">= 0.4"
3796 | },
3797 | "funding": {
3798 | "url": "https://github.com/sponsors/ljharb"
3799 | }
3800 | },
3801 | "node_modules/string.prototype.trimright": {
3802 | "version": "2.1.2",
3803 | "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz",
3804 | "integrity": "sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg==",
3805 | "dev": true,
3806 | "dependencies": {
3807 | "define-properties": "^1.1.3",
3808 | "es-abstract": "^1.17.5",
3809 | "string.prototype.trimend": "^1.0.0"
3810 | },
3811 | "engines": {
3812 | "node": ">= 0.4"
3813 | },
3814 | "funding": {
3815 | "url": "https://github.com/sponsors/ljharb"
3816 | }
3817 | },
3818 | "node_modules/string.prototype.trimstart": {
3819 | "version": "1.0.0",
3820 | "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.0.tgz",
3821 | "integrity": "sha512-iCP8g01NFYiiBOnwG1Xc3WZLyoo+RuBymwIlWncShXDDJYWN6DbnM3odslBJdgCdRlq94B5s63NWAZlcn2CS4w==",
3822 | "dev": true,
3823 | "dependencies": {
3824 | "define-properties": "^1.1.3",
3825 | "es-abstract": "^1.17.5"
3826 | },
3827 | "funding": {
3828 | "url": "https://github.com/sponsors/ljharb"
3829 | }
3830 | },
3831 | "node_modules/strip-ansi": {
3832 | "version": "6.0.1",
3833 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
3834 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
3835 | "dev": true,
3836 | "dependencies": {
3837 | "ansi-regex": "^5.0.1"
3838 | },
3839 | "engines": {
3840 | "node": ">=8"
3841 | }
3842 | },
3843 | "node_modules/strip-bom": {
3844 | "version": "3.0.0",
3845 | "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
3846 | "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
3847 | "dev": true,
3848 | "engines": {
3849 | "node": ">=4"
3850 | }
3851 | },
3852 | "node_modules/strip-json-comments": {
3853 | "version": "3.1.1",
3854 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
3855 | "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
3856 | "dev": true,
3857 | "engines": {
3858 | "node": ">=8"
3859 | },
3860 | "funding": {
3861 | "url": "https://github.com/sponsors/sindresorhus"
3862 | }
3863 | },
3864 | "node_modules/superagent": {
3865 | "version": "3.8.3",
3866 | "resolved": "https://registry.npmjs.org/superagent/-/superagent-3.8.3.tgz",
3867 | "integrity": "sha512-GLQtLMCoEIK4eDv6OGtkOoSMt3D+oq0y3dsxMuYuDvaNUvuT8eFBuLmfR0iYYzHC1e8hpzC6ZsxbuP6DIalMFA==",
3868 | "deprecated": "Please upgrade to v9.0.0+ as we have fixed a public vulnerability with formidable dependency. Note that v9.0.0+ requires Node.js v14.18.0+. See https://github.com/ladjs/superagent/pull/1800 for insight. This project is supported and maintained by the team at Forward Email @ https://forwardemail.net",
3869 | "dev": true,
3870 | "dependencies": {
3871 | "component-emitter": "^1.2.0",
3872 | "cookiejar": "^2.1.0",
3873 | "debug": "^3.1.0",
3874 | "extend": "^3.0.0",
3875 | "form-data": "^2.3.1",
3876 | "formidable": "^1.2.0",
3877 | "methods": "^1.1.1",
3878 | "mime": "^1.4.1",
3879 | "qs": "^6.5.1",
3880 | "readable-stream": "^2.3.5"
3881 | },
3882 | "engines": {
3883 | "node": ">= 4.0"
3884 | }
3885 | },
3886 | "node_modules/superagent/node_modules/debug": {
3887 | "version": "3.2.6",
3888 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
3889 | "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
3890 | "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)",
3891 | "dev": true,
3892 | "dependencies": {
3893 | "ms": "^2.1.1"
3894 | }
3895 | },
3896 | "node_modules/superagent/node_modules/ms": {
3897 | "version": "2.1.2",
3898 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
3899 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
3900 | "dev": true
3901 | },
3902 | "node_modules/supertest": {
3903 | "version": "3.4.2",
3904 | "resolved": "https://registry.npmjs.org/supertest/-/supertest-3.4.2.tgz",
3905 | "integrity": "sha512-WZWbwceHUo2P36RoEIdXvmqfs47idNNZjCuJOqDz6rvtkk8ym56aU5oglORCpPeXGxT7l9rkJ41+O1lffQXYSA==",
3906 | "dev": true,
3907 | "dependencies": {
3908 | "methods": "^1.1.2",
3909 | "superagent": "^3.8.3"
3910 | },
3911 | "engines": {
3912 | "node": ">=6.0.0"
3913 | }
3914 | },
3915 | "node_modules/supertest-as-promised": {
3916 | "version": "4.0.2",
3917 | "resolved": "https://registry.npmjs.org/supertest-as-promised/-/supertest-as-promised-4.0.2.tgz",
3918 | "integrity": "sha1-BGTyvSVlaNSlm86EJpwFSPaHnxo=",
3919 | "deprecated": "SuperTest 2.0+ supports promises natively; use that instead!",
3920 | "dev": true,
3921 | "dependencies": {
3922 | "bluebird": "^3.3.1",
3923 | "methods": "^1.1.1"
3924 | },
3925 | "peerDependencies": {
3926 | "supertest": "*"
3927 | }
3928 | },
3929 | "node_modules/supports-color": {
3930 | "version": "5.5.0",
3931 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
3932 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
3933 | "dependencies": {
3934 | "has-flag": "^3.0.0"
3935 | },
3936 | "engines": {
3937 | "node": ">=4"
3938 | }
3939 | },
3940 | "node_modules/table": {
3941 | "version": "5.4.6",
3942 | "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz",
3943 | "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==",
3944 | "dev": true,
3945 | "dependencies": {
3946 | "ajv": "^6.10.2",
3947 | "lodash": "^4.17.14",
3948 | "slice-ansi": "^2.1.0",
3949 | "string-width": "^3.0.0"
3950 | },
3951 | "engines": {
3952 | "node": ">=6.0.0"
3953 | }
3954 | },
3955 | "node_modules/table/node_modules/ansi-regex": {
3956 | "version": "4.1.1",
3957 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz",
3958 | "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==",
3959 | "dev": true,
3960 | "engines": {
3961 | "node": ">=6"
3962 | }
3963 | },
3964 | "node_modules/table/node_modules/string-width": {
3965 | "version": "3.1.0",
3966 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
3967 | "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
3968 | "dev": true,
3969 | "dependencies": {
3970 | "emoji-regex": "^7.0.1",
3971 | "is-fullwidth-code-point": "^2.0.0",
3972 | "strip-ansi": "^5.1.0"
3973 | },
3974 | "engines": {
3975 | "node": ">=6"
3976 | }
3977 | },
3978 | "node_modules/table/node_modules/strip-ansi": {
3979 | "version": "5.2.0",
3980 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
3981 | "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
3982 | "dev": true,
3983 | "dependencies": {
3984 | "ansi-regex": "^4.1.0"
3985 | },
3986 | "engines": {
3987 | "node": ">=6"
3988 | }
3989 | },
3990 | "node_modules/text-table": {
3991 | "version": "0.2.0",
3992 | "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
3993 | "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
3994 | "dev": true
3995 | },
3996 | "node_modules/to-regex-range": {
3997 | "version": "5.0.1",
3998 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
3999 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
4000 | "dependencies": {
4001 | "is-number": "^7.0.0"
4002 | },
4003 | "engines": {
4004 | "node": ">=8.0"
4005 | }
4006 | },
4007 | "node_modules/toidentifier": {
4008 | "version": "1.0.1",
4009 | "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
4010 | "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
4011 | "engines": {
4012 | "node": ">=0.6"
4013 | }
4014 | },
4015 | "node_modules/toposort-class": {
4016 | "version": "1.0.1",
4017 | "resolved": "https://registry.npmjs.org/toposort-class/-/toposort-class-1.0.1.tgz",
4018 | "integrity": "sha512-OsLcGGbYF3rMjPUf8oKktyvCiUxSbqMMS39m33MAjLTC1DVIH6x3WSt63/M77ihI09+Sdfk1AXvfhCEeUmC7mg=="
4019 | },
4020 | "node_modules/touch": {
4021 | "version": "3.1.0",
4022 | "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz",
4023 | "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==",
4024 | "dependencies": {
4025 | "nopt": "~1.0.10"
4026 | },
4027 | "bin": {
4028 | "nodetouch": "bin/nodetouch.js"
4029 | }
4030 | },
4031 | "node_modules/tsconfig-paths": {
4032 | "version": "3.14.1",
4033 | "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz",
4034 | "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==",
4035 | "dev": true,
4036 | "dependencies": {
4037 | "@types/json5": "^0.0.29",
4038 | "json5": "^1.0.1",
4039 | "minimist": "^1.2.6",
4040 | "strip-bom": "^3.0.0"
4041 | }
4042 | },
4043 | "node_modules/type-check": {
4044 | "version": "0.4.0",
4045 | "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
4046 | "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
4047 | "dev": true,
4048 | "dependencies": {
4049 | "prelude-ls": "^1.2.1"
4050 | },
4051 | "engines": {
4052 | "node": ">= 0.8.0"
4053 | }
4054 | },
4055 | "node_modules/type-detect": {
4056 | "version": "4.0.8",
4057 | "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz",
4058 | "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==",
4059 | "dev": true,
4060 | "engines": {
4061 | "node": ">=4"
4062 | }
4063 | },
4064 | "node_modules/type-fest": {
4065 | "version": "0.8.1",
4066 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
4067 | "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
4068 | "dev": true,
4069 | "engines": {
4070 | "node": ">=8"
4071 | }
4072 | },
4073 | "node_modules/type-is": {
4074 | "version": "1.6.18",
4075 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
4076 | "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
4077 | "dependencies": {
4078 | "media-typer": "0.3.0",
4079 | "mime-types": "~2.1.24"
4080 | },
4081 | "engines": {
4082 | "node": ">= 0.6"
4083 | }
4084 | },
4085 | "node_modules/undefsafe": {
4086 | "version": "2.0.5",
4087 | "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz",
4088 | "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA=="
4089 | },
4090 | "node_modules/unpipe": {
4091 | "version": "1.0.0",
4092 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
4093 | "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
4094 | "engines": {
4095 | "node": ">= 0.8"
4096 | }
4097 | },
4098 | "node_modules/uri-js": {
4099 | "version": "4.2.2",
4100 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
4101 | "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
4102 | "dev": true,
4103 | "dependencies": {
4104 | "punycode": "^2.1.0"
4105 | }
4106 | },
4107 | "node_modules/util-deprecate": {
4108 | "version": "1.0.2",
4109 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
4110 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
4111 | "dev": true
4112 | },
4113 | "node_modules/utils-merge": {
4114 | "version": "1.0.1",
4115 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
4116 | "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==",
4117 | "engines": {
4118 | "node": ">= 0.4.0"
4119 | }
4120 | },
4121 | "node_modules/uuid": {
4122 | "version": "8.3.2",
4123 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
4124 | "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
4125 | "bin": {
4126 | "uuid": "dist/bin/uuid"
4127 | }
4128 | },
4129 | "node_modules/v8-compile-cache": {
4130 | "version": "2.1.1",
4131 | "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz",
4132 | "integrity": "sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ==",
4133 | "dev": true
4134 | },
4135 | "node_modules/validate-npm-package-license": {
4136 | "version": "3.0.4",
4137 | "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
4138 | "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
4139 | "dev": true,
4140 | "dependencies": {
4141 | "spdx-correct": "^3.0.0",
4142 | "spdx-expression-parse": "^3.0.0"
4143 | }
4144 | },
4145 | "node_modules/validator": {
4146 | "version": "13.9.0",
4147 | "resolved": "https://registry.npmjs.org/validator/-/validator-13.9.0.tgz",
4148 | "integrity": "sha512-B+dGG8U3fdtM0/aNK4/X8CXq/EcxU2WPrPEkJGslb47qyHsxmbggTWK0yEA4qnYVNF+nxNlN88o14hIcPmSIEA==",
4149 | "engines": {
4150 | "node": ">= 0.10"
4151 | }
4152 | },
4153 | "node_modules/vary": {
4154 | "version": "1.1.2",
4155 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
4156 | "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
4157 | "engines": {
4158 | "node": ">= 0.8"
4159 | }
4160 | },
4161 | "node_modules/wkx": {
4162 | "version": "0.5.0",
4163 | "resolved": "https://registry.npmjs.org/wkx/-/wkx-0.5.0.tgz",
4164 | "integrity": "sha512-Xng/d4Ichh8uN4l0FToV/258EjMGU9MGcA0HV2d9B/ZpZB3lqQm7nkOdZdm5GhKtLLhAE7PiVQwN4eN+2YJJUg==",
4165 | "dependencies": {
4166 | "@types/node": "*"
4167 | }
4168 | },
4169 | "node_modules/word-wrap": {
4170 | "version": "1.2.4",
4171 | "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.4.tgz",
4172 | "integrity": "sha512-2V81OA4ugVo5pRo46hAoD2ivUJx8jXmWXfUkY4KFNw0hEptvN0QfH3K4nHiwzGeKl5rFKedV48QVoqYavy4YpA==",
4173 | "dev": true,
4174 | "engines": {
4175 | "node": ">=0.10.0"
4176 | }
4177 | },
4178 | "node_modules/workerpool": {
4179 | "version": "6.5.1",
4180 | "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.5.1.tgz",
4181 | "integrity": "sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==",
4182 | "dev": true,
4183 | "license": "Apache-2.0"
4184 | },
4185 | "node_modules/wrap-ansi": {
4186 | "version": "7.0.0",
4187 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
4188 | "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
4189 | "dev": true,
4190 | "dependencies": {
4191 | "ansi-styles": "^4.0.0",
4192 | "string-width": "^4.1.0",
4193 | "strip-ansi": "^6.0.0"
4194 | },
4195 | "engines": {
4196 | "node": ">=10"
4197 | },
4198 | "funding": {
4199 | "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
4200 | }
4201 | },
4202 | "node_modules/wrap-ansi/node_modules/ansi-styles": {
4203 | "version": "4.3.0",
4204 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
4205 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
4206 | "dev": true,
4207 | "dependencies": {
4208 | "color-convert": "^2.0.1"
4209 | },
4210 | "engines": {
4211 | "node": ">=8"
4212 | },
4213 | "funding": {
4214 | "url": "https://github.com/chalk/ansi-styles?sponsor=1"
4215 | }
4216 | },
4217 | "node_modules/wrap-ansi/node_modules/color-convert": {
4218 | "version": "2.0.1",
4219 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
4220 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
4221 | "dev": true,
4222 | "dependencies": {
4223 | "color-name": "~1.1.4"
4224 | },
4225 | "engines": {
4226 | "node": ">=7.0.0"
4227 | }
4228 | },
4229 | "node_modules/wrap-ansi/node_modules/color-name": {
4230 | "version": "1.1.4",
4231 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
4232 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
4233 | "dev": true
4234 | },
4235 | "node_modules/wrappy": {
4236 | "version": "1.0.2",
4237 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
4238 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
4239 | "dev": true
4240 | },
4241 | "node_modules/write": {
4242 | "version": "1.0.3",
4243 | "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz",
4244 | "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==",
4245 | "dev": true,
4246 | "dependencies": {
4247 | "mkdirp": "^0.5.1"
4248 | },
4249 | "engines": {
4250 | "node": ">=4"
4251 | }
4252 | },
4253 | "node_modules/y18n": {
4254 | "version": "5.0.8",
4255 | "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
4256 | "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
4257 | "dev": true,
4258 | "engines": {
4259 | "node": ">=10"
4260 | }
4261 | },
4262 | "node_modules/yargs": {
4263 | "version": "16.2.0",
4264 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
4265 | "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
4266 | "dev": true,
4267 | "dependencies": {
4268 | "cliui": "^7.0.2",
4269 | "escalade": "^3.1.1",
4270 | "get-caller-file": "^2.0.5",
4271 | "require-directory": "^2.1.1",
4272 | "string-width": "^4.2.0",
4273 | "y18n": "^5.0.5",
4274 | "yargs-parser": "^20.2.2"
4275 | },
4276 | "engines": {
4277 | "node": ">=10"
4278 | }
4279 | },
4280 | "node_modules/yargs-parser": {
4281 | "version": "20.2.9",
4282 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz",
4283 | "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==",
4284 | "dev": true,
4285 | "license": "ISC",
4286 | "engines": {
4287 | "node": ">=10"
4288 | }
4289 | },
4290 | "node_modules/yargs-unparser": {
4291 | "version": "2.0.0",
4292 | "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz",
4293 | "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==",
4294 | "dev": true,
4295 | "dependencies": {
4296 | "camelcase": "^6.0.0",
4297 | "decamelize": "^4.0.0",
4298 | "flat": "^5.0.2",
4299 | "is-plain-obj": "^2.1.0"
4300 | },
4301 | "engines": {
4302 | "node": ">=10"
4303 | }
4304 | },
4305 | "node_modules/yocto-queue": {
4306 | "version": "0.1.0",
4307 | "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
4308 | "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
4309 | "dev": true,
4310 | "engines": {
4311 | "node": ">=10"
4312 | },
4313 | "funding": {
4314 | "url": "https://github.com/sponsors/sindresorhus"
4315 | }
4316 | }
4317 | }
4318 | }
4319 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "url-shortener",
3 | "version": "1.0.0",
4 | "description": "Url Shortener",
5 | "author": "Mauricio Urraco ",
6 | "license": "MIT",
7 | "main": "index.js",
8 | "scripts": {
9 | "start": "nodemon index.js",
10 | "test": "mocha"
11 | },
12 | "dependencies": {
13 | "body-parser": "^1.20.3",
14 | "express": "^4.21.2",
15 | "mysql2": "^3.9.8",
16 | "nodemon": "^2.0.20",
17 | "sequelize": "^6.29.0"
18 | },
19 | "devDependencies": {
20 | "chai": "^4.2.0",
21 | "eslint": "^7.5.0",
22 | "eslint-config-airbnb-base": "^14.2.0",
23 | "eslint-plugin-import": "^2.22.0",
24 | "mocha": "^10.8.2",
25 | "supertest": "^3.4.2",
26 | "supertest-as-promised": "^4.0.2"
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/screenshot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/murraco/node-url-shortener/82951f440f92f19584b2e08583bb441fcd7bd45b/screenshot.png
--------------------------------------------------------------------------------
/test/url.test.js:
--------------------------------------------------------------------------------
1 | process.env.NODE_ENV = 'test';
2 |
3 | const request = require('supertest-as-promised');
4 | const { assert } = require('chai');
5 | const app = require('../config/express');
6 | const base58 = require('../api/helpers/base58');
7 | const Url = require('../api/models/Url');
8 |
9 | describe('Url', () => {
10 | before(async () => {
11 | await Url.sync({ force: true });
12 | });
13 |
14 | describe('POST /api/shorten', () => {
15 | it('It should short the url: https://medium.com/@xoor/jwt-authentication-service-44658409e12c', (done) => {
16 | request(app)
17 | .post('/api/shorten')
18 | .send({
19 | url: 'https://medium.com/@xoor/jwt-authentication-service-44658409e12c',
20 | })
21 | .expect(201)
22 | .then((res) => {
23 | assert.equal(res.body.shortUrl.split('/').slice(-1)[0], base58.encode(1));
24 | done();
25 | });
26 | });
27 | });
28 |
29 | describe('GET /:encodedId', () => {
30 | it('It should retrieve the shorten version of the url: https://medium.com/@xoor/jwt-authentication-service-44658409e12c', (done) => {
31 | request(app)
32 | .get(`/${base58.encode(1)}`)
33 | .expect(302, done);
34 | });
35 | });
36 | });
37 |
--------------------------------------------------------------------------------
/view/css/styles.css:
--------------------------------------------------------------------------------
1 | .btn:focus, .btn-shorten:focus{
2 | outline: 0 !important;
3 | }
4 |
5 | html,
6 | body {
7 | height: 100%;
8 | background-color: #03a9f4;
9 | }
10 |
11 | body {
12 | color: #fff;
13 | text-align: center;
14 | font-family: 'Raleway', sans-serif;
15 | }
16 |
17 | .btn-shorten {
18 | color: #ffffff;
19 | background-color: #673ab7;
20 | border: none;
21 | }
22 |
23 | .btn-shorten:hover,
24 | .btn-shorten:focus,
25 | .btn-shorten:active,
26 | .btn-shorten.active {
27 | color: #ffffff;
28 | background-color: #673ab7;
29 | border: none;
30 | }
31 |
32 | .site-wrapper {
33 | display: table;
34 | width: 100%;
35 | height: 100%;
36 | min-height: 100%;
37 | }
38 |
39 | .site-wrapper-inner {
40 | display: table-cell;
41 | vertical-align: top;
42 | }
43 |
44 | .main-container {
45 | margin-right: auto;
46 | margin-left: auto;
47 | margin-top: 80px;
48 | }
49 |
50 | .inner {
51 | padding: 30px;
52 | }
53 |
54 | .inner h4 {
55 | padding-bottom: 30px;
56 | }
57 |
58 | .glyphicon-link {
59 | font-size: 2em;
60 | }
61 |
62 | .inner h1 {
63 | margin-top: 5px;
64 | }
65 |
66 | #link {
67 | display: none;
68 | padding-top: 15px;
69 | }
70 |
71 | #link a{
72 | color: #1A237E;
73 | font-size: 1.5em;
74 | margin-right: 20px;
75 | }
76 |
77 | @media (min-width: 768px) {
78 | .main-container {
79 | width: 100%;
80 | }
81 | }
82 |
83 | @media (min-width: 992px) {
84 | .main-container {
85 | width: 700px;
86 | }
87 | }
--------------------------------------------------------------------------------
/view/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 | URL Shortener - coligo.io
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
URL Shortener
23 |
your-website-url
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
--------------------------------------------------------------------------------
/view/javascript/shorten.js:
--------------------------------------------------------------------------------
1 | $('.btn-shorten').on('click', () => {
2 | $.ajax({
3 | url: '/api/shorten',
4 | type: 'POST',
5 | dataType: 'JSON',
6 | data: { url: $('#url-field').val() },
7 | success(data) {
8 | const resultHTML = `${data.shortUrl}`;
9 | $('#link').html(resultHTML);
10 | $('#link').hide().fadeIn('slow');
11 | },
12 | });
13 | });
14 |
--------------------------------------------------------------------------------