├── frontend
├── public
│ ├── robots.txt
│ ├── favicon.ico
│ ├── logo192.png
│ ├── logo512.png
│ ├── manifest.json
│ └── index.html
├── src
│ ├── setupTests.js
│ ├── App.test.js
│ ├── index.css
│ ├── reportWebVitals.js
│ ├── App.js
│ ├── App.css
│ ├── index.js
│ ├── UsersTable.js
│ ├── logo.svg
│ ├── Users.js
│ └── UserForm.js
├── .gitignore
├── package.json
└── README.md
├── backend
├── model.js
├── router.js
├── package.json
├── server.js
├── app.js
├── controller.js
└── package-lock.json
└── README.md
/frontend/public/robots.txt:
--------------------------------------------------------------------------------
1 | # https://www.robotstxt.org/robotstxt.html
2 | User-agent: *
3 | Disallow:
4 |
--------------------------------------------------------------------------------
/frontend/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hirushavinushka99/UserCRUDSystem/HEAD/frontend/public/favicon.ico
--------------------------------------------------------------------------------
/frontend/public/logo192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hirushavinushka99/UserCRUDSystem/HEAD/frontend/public/logo192.png
--------------------------------------------------------------------------------
/frontend/public/logo512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hirushavinushka99/UserCRUDSystem/HEAD/frontend/public/logo512.png
--------------------------------------------------------------------------------
/backend/model.js:
--------------------------------------------------------------------------------
1 | const mongoose = require('mongoose');
2 | const Schema = mongoose.Schema;
3 |
4 | const userSchema = new Schema({
5 | id: Number,
6 | name: String,
7 | });
8 |
9 | const User = mongoose.model('User', userSchema);
10 |
11 | module.exports = User
--------------------------------------------------------------------------------
/frontend/src/setupTests.js:
--------------------------------------------------------------------------------
1 | // jest-dom adds custom jest matchers for asserting on DOM nodes.
2 | // allows you to do things like:
3 | // expect(element).toHaveTextContent(/react/i)
4 | // learn more: https://github.com/testing-library/jest-dom
5 | import '@testing-library/jest-dom';
6 |
--------------------------------------------------------------------------------
/frontend/src/App.test.js:
--------------------------------------------------------------------------------
1 | import { render, screen } from '@testing-library/react';
2 | import App from './App';
3 |
4 | test('renders learn react link', () => {
5 | render();
6 | const linkElement = screen.getByText(/learn react/i);
7 | expect(linkElement).toBeInTheDocument();
8 | });
9 |
--------------------------------------------------------------------------------
/backend/router.js:
--------------------------------------------------------------------------------
1 | const express = require('express');
2 | const router = express.Router();
3 | const controller = require('./controller');
4 |
5 | router.get('/users',controller.getUsers);
6 | router.post('/createuser',controller.addUser);
7 | router.post('/updateuser',controller.updateUser);
8 | router.post('/deleteuser',controller.deleteUser);
9 |
10 |
11 | module.exports = router;
--------------------------------------------------------------------------------
/backend/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "testreactapp-backend",
3 | "version": "1.0.0",
4 | "main": "server.js",
5 | "scripts": {
6 | "test": "echo \"Error: no test specified\" && exit 1"
7 | },
8 | "author": "",
9 | "license": "ISC",
10 | "description": "",
11 | "dependencies": {
12 | "cors": "^2.8.5",
13 | "express": "^4.19.2",
14 | "mongoose": "^8.6.1"
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/frontend/.gitignore:
--------------------------------------------------------------------------------
1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
2 |
3 | # dependencies
4 | /node_modules
5 | /.pnp
6 | .pnp.js
7 |
8 | # testing
9 | /coverage
10 |
11 | # production
12 | /build
13 |
14 | # misc
15 | .DS_Store
16 | .env.local
17 | .env.development.local
18 | .env.test.local
19 | .env.production.local
20 |
21 | npm-debug.log*
22 | yarn-debug.log*
23 | yarn-error.log*
24 |
--------------------------------------------------------------------------------
/frontend/src/index.css:
--------------------------------------------------------------------------------
1 | body {
2 | margin: 0;
3 | font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',
4 | 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',
5 | sans-serif;
6 | -webkit-font-smoothing: antialiased;
7 | -moz-osx-font-smoothing: grayscale;
8 | }
9 |
10 | code {
11 | font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New',
12 | monospace;
13 | }
14 |
--------------------------------------------------------------------------------
/frontend/src/reportWebVitals.js:
--------------------------------------------------------------------------------
1 | const reportWebVitals = onPerfEntry => {
2 | if (onPerfEntry && onPerfEntry instanceof Function) {
3 | import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {
4 | getCLS(onPerfEntry);
5 | getFID(onPerfEntry);
6 | getFCP(onPerfEntry);
7 | getLCP(onPerfEntry);
8 | getTTFB(onPerfEntry);
9 | });
10 | }
11 | };
12 |
13 | export default reportWebVitals;
14 |
--------------------------------------------------------------------------------
/frontend/src/App.js:
--------------------------------------------------------------------------------
1 | import { useNavigate } from "react-router-dom";
2 | import './App.css';
3 |
4 | function App() {
5 |
6 | const navigate = useNavigate();
7 |
8 | return (
9 |
10 |
11 | Welcome to PSR Vlog
12 |
13 |
14 |
15 | );
16 | }
17 |
18 | export default App;
19 |
--------------------------------------------------------------------------------
/frontend/src/App.css:
--------------------------------------------------------------------------------
1 | .App {
2 | text-align: center;
3 | }
4 |
5 | .App-header {
6 | background-color: #282c34;
7 | min-height: 100vh;
8 | display: flex;
9 | flex-direction: column;
10 | align-items: center;
11 | justify-content: center;
12 | font-size: calc(10px + 2vmin);
13 | color: white;
14 | }
15 |
16 | .users-button {
17 | font-size: 18px;
18 | padding: 20px 40px;
19 | border-radius: 10px;
20 | background-color: #ffffff;
21 | cursor: pointer;
22 | }
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/frontend/public/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "short_name": "React App",
3 | "name": "Create React App Sample",
4 | "icons": [
5 | {
6 | "src": "favicon.ico",
7 | "sizes": "64x64 32x32 24x24 16x16",
8 | "type": "image/x-icon"
9 | },
10 | {
11 | "src": "logo192.png",
12 | "type": "image/png",
13 | "sizes": "192x192"
14 | },
15 | {
16 | "src": "logo512.png",
17 | "type": "image/png",
18 | "sizes": "512x512"
19 | }
20 | ],
21 | "start_url": ".",
22 | "display": "standalone",
23 | "theme_color": "#000000",
24 | "background_color": "#ffffff"
25 | }
26 |
--------------------------------------------------------------------------------
/frontend/src/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import ReactDOM from 'react-dom/client';
3 | import './index.css';
4 | import App from './App';
5 | import reportWebVitals from './reportWebVitals';
6 | import {BrowserRouter, Route, Routes} from 'react-router-dom';
7 | import Users from './Users';
8 |
9 | const root = ReactDOM.createRoot(document.getElementById('root'));
10 | root.render(
11 |
12 |
13 | }/>
14 | }/>
15 |
16 |
17 | );
18 |
19 | // If you want to start measuring performance in your app, pass a function
20 | // to log results (for example: reportWebVitals(console.log))
21 | // or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals
22 | reportWebVitals();
23 |
--------------------------------------------------------------------------------
/backend/server.js:
--------------------------------------------------------------------------------
1 | const express = require('express');
2 | const app = express();
3 | const cors = require('cors');
4 | const port = 3001;
5 | const host = 'localhost';
6 | const mongoose = require('mongoose');
7 | const router =require('./router');
8 |
9 | app.use(cors());
10 | app.use(express.json());
11 |
12 | const uri = 'mongodb+srv://Hirusha_Vinushka:2001@cluster0.5rr0x.mongodb.net/?retryWrites=true&w=majority&appName=Cluster0'
13 |
14 | const connect = async () => {
15 | try{
16 | await mongoose.connect(uri);
17 | console.log('Connect to MongoDB');
18 | }
19 | catch(error) {
20 | console.log('MongoDB Error: ', error);
21 | }
22 | };
23 |
24 | connect();
25 |
26 | const server = app.listen(port, host, () => {
27 | console.log(`Node server is listenning to ${server.address().port}`)
28 | });
29 |
30 | app.use('/api',router);
--------------------------------------------------------------------------------
/backend/app.js:
--------------------------------------------------------------------------------
1 | const express = require('express');
2 | const app = express();
3 | const cors = require('cors');
4 | const controller = require('./controller');
5 |
6 | app.use(cors());
7 |
8 | app.use(
9 | express.urlencoded({
10 | extended:true,
11 | })
12 | );
13 |
14 | app.use(express.json());
15 |
16 | app.get('/users', (req, res) => {
17 | controller.getUsers((req,res,next) => {
18 | res.send();
19 | });
20 | });
21 |
22 | app.post('/createuser', (req, res) => {
23 | controller.addUser(req.body, (calback) => {
24 | res.send();
25 | });
26 | });
27 |
28 | app.put('/updateuser', (req, res) => {
29 | controller.updateUser(req.body, (calback) => {
30 | res.send(calback);
31 | });
32 | });
33 |
34 | app.delete('/deleteuser', (req, res) => {
35 | controller.deleteUser(req.body, (calback) => {
36 | res.send(calback);
37 | });
38 | });
39 |
40 | module.exports = app;
--------------------------------------------------------------------------------
/frontend/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "testreactapp",
3 | "version": "0.1.0",
4 | "private": true,
5 | "dependencies": {
6 | "@emotion/react": "^11.13.3",
7 | "@emotion/styled": "^11.13.0",
8 | "@mui/material": "^6.0.2",
9 | "@testing-library/jest-dom": "^6.5.0",
10 | "@testing-library/react": "^16.0.1",
11 | "@testing-library/user-event": "^14.5.2",
12 | "axios": "^1.7.7",
13 | "mui": "^0.0.1",
14 | "react": "^18.3.1",
15 | "react-dom": "^18.3.1",
16 | "react-router-dom": "^6.26.1",
17 | "react-scripts": "^5.0.1",
18 | "router-dom": "^2.2.11",
19 | "web-vitals": "^4.2.3"
20 | },
21 | "scripts": {
22 | "start": "react-scripts start",
23 | "build": "react-scripts build",
24 | "test": "react-scripts test",
25 | "eject": "react-scripts eject"
26 | },
27 | "eslintConfig": {
28 | "extends": [
29 | "react-app",
30 | "react-app/jest"
31 | ]
32 | },
33 | "browserslist": {
34 | "production": [
35 | ">0.2%",
36 | "not dead",
37 | "not op_mini all"
38 | ],
39 | "development": [
40 | "last 1 chrome version",
41 | "last 1 firefox version",
42 | "last 1 safari version"
43 | ]
44 | },
45 | "devDependencies": {
46 | "@babel/plugin-proposal-private-property-in-object": "^7.21.11"
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/backend/controller.js:
--------------------------------------------------------------------------------
1 | const User = require('./model'); // Use a single import for the User model
2 |
3 | const getUsers = (req, res, next) => {
4 | User.find() // Use the model directly
5 | .then(response => {
6 | res.json({ response });
7 | })
8 | .catch(error => {
9 | res.json({ error });
10 | });
11 | };
12 |
13 | const addUser = (req, res, next) => {
14 | const newUser = new User({ // Rename variable to avoid conflict
15 | id: req.body.id,
16 | name: req.body.name,
17 | });
18 |
19 | newUser.save() // Save the new instance of User
20 | .then(response => {
21 | res.json({ response });
22 | })
23 | .catch(error => {
24 | res.json({ error });
25 | });
26 | };
27 |
28 | const updateUser = (req, res, next) => {
29 | const { id, name } = req.body;
30 | User.updateOne({ id: id }, { $set: { name: name } })
31 | .then(response => {
32 | res.json({ response });
33 | })
34 | .catch(error => {
35 | res.json({ error });
36 | });
37 | };
38 |
39 | const deleteUser = (req, res, next) => {
40 | const id = req.body.id;
41 | User.deleteOne({ id: id })
42 | .then(response => {
43 | res.json({ response });
44 | })
45 | .catch(error => {
46 | res.json({ error });
47 | });
48 | };
49 |
50 | exports.getUsers = getUsers;
51 | exports.addUser = addUser;
52 | exports.updateUser = updateUser;
53 | exports.deleteUser = deleteUser;
--------------------------------------------------------------------------------
/frontend/public/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
12 |
13 |
17 |
18 |
27 | React App
28 |
29 |
30 |
31 |
32 |
42 |
43 |
44 |
--------------------------------------------------------------------------------
/frontend/src/UsersTable.js:
--------------------------------------------------------------------------------
1 | import { Button, Paper, Table, TableBody, TableCell, TableContainer, TableHead, TableRow } from '@mui/material'
2 | import React from 'react'
3 |
4 | const UsersTable = ({rows, selectedUser, deleteUser}) => {
5 | return (
6 |
7 |
8 |
9 |
10 | ID
11 | Name
12 | Actions
13 |
14 |
15 |
16 | {
17 | rows.length > 0 ? rows.map(row => (
18 |
19 | {row.id}
20 | {row.name}
21 |
22 |
28 |
34 |
35 |
36 | )) : (
37 |
38 | No Data
39 |
40 |
41 | )
42 | }
43 |
44 |
45 |
46 | )
47 | }
48 |
49 | export default UsersTable
--------------------------------------------------------------------------------
/frontend/src/logo.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/frontend/src/Users.js:
--------------------------------------------------------------------------------
1 | import React, { useEffect, useState } from 'react'
2 | import UserForm from './UserForm'
3 | import UsersTable from './UsersTable'
4 | import { Box } from '@mui/material'
5 | import Axios from 'axios'
6 |
7 |
8 |
9 | const Users = () => {
10 |
11 | const [users, setUsers] = useState([]);
12 | const [submitted, setSubmitted] = useState(false);
13 | const [selectedUser, setselectedUser] = useState({});
14 | const [isEdit, setIsEdit] = useState(false);
15 |
16 | useEffect(() => {
17 | getUsers();
18 | },[]);
19 |
20 | const getUsers = () => {
21 | Axios.get('http://localhost:3001/api/users')
22 | .then(response => {
23 | setUsers(response?.data?.response || [])
24 | })
25 | .catch(error => {
26 | console.error("Axios Error :",error);
27 | });
28 | }
29 |
30 | const addUser = (data) => {
31 | setSubmitted(true);
32 | const payload = {
33 | id:data.id,
34 | name:data.name,
35 | }
36 | Axios.post('http://localhost:3001/api/createuser', payload)
37 | .then(response => {
38 | getUsers();
39 | setSubmitted(false);
40 | isEdit(false);
41 | })
42 | .catch(error => {
43 | console.error("Axios Error :",error);
44 | });
45 | }
46 |
47 | const updateUser = (data) => {
48 | setSubmitted(true);
49 | const payload = {
50 | id:data.id,
51 | name:data.name,
52 | }
53 | Axios.post('http://localhost:3001/api/updateuser', payload)
54 | .then(response => {
55 | getUsers();
56 | setSubmitted(false);
57 | isEdit(false);
58 | })
59 | .catch(error => {
60 | console.error("Axios Error :",error);
61 | });
62 | }
63 |
64 | const deleteUser = (data) => {
65 |
66 | Axios.post('http://localhost:3001/api/deleteuser', data)
67 | .then(response => {
68 | getUsers();
69 | })
70 | .catch(error => {
71 | console.error("Axios Error :",error);
72 | });
73 | }
74 |
75 | return (
76 |
83 |
90 | {
93 | setselectedUser(data);
94 | setIsEdit(true);
95 | }}
96 | deleteUser={data => window.confirm('Are you sure?') && deleteUser(data)}
97 | />
98 |
99 | )
100 | }
101 |
102 | export default Users
--------------------------------------------------------------------------------
/frontend/src/UserForm.js:
--------------------------------------------------------------------------------
1 | import { Button, Grid2, Input, Typography } from '@mui/material'
2 | import React, { useEffect, useState } from 'react'
3 |
4 | const UserForm = ({ addUser, updateUser, submitted, data, isEdit }) => {
5 |
6 | const [id, setId] = useState('0');
7 | const [name, setName] = useState('');
8 |
9 | useEffect(() => {
10 | if(!submitted){
11 | setId(0);
12 | setName('');
13 | }
14 | },[submitted]);
15 |
16 | useEffect(() => {
17 | if(data?.id && data.id !==0){
18 | setId(data.id);
19 | setName(data.name);
20 | }
21 | },[data]);
22 |
23 | return (
24 |
34 |
49 |
59 | User Form
60 |
61 |
62 |
63 |
64 |
65 |
74 | ID
75 |
76 | setId(e.target.value)}
83 | />
84 |
85 |
86 |
87 |
96 | Name
97 |
98 | setName(e.target.value)}
105 | />
106 |
107 |
108 |
109 |
123 |
124 |
125 |
126 | )
127 | }
128 |
129 | export default UserForm
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Getting Started with Create React App
2 |
3 | This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app).
4 |
5 | ## Available Scripts
6 |
7 | In the project directory, you can run:
8 |
9 | ### `npm start`
10 |
11 | Runs the app in the development mode.\
12 | Open [http://localhost:3000](http://localhost:3000) to view it in your browser.
13 |
14 | The page will reload when you make changes.\
15 | You may also see any lint errors in the console.
16 |
17 | ### `npm test`
18 |
19 | Launches the test runner in the interactive watch mode.\
20 | See the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information.
21 |
22 | ### `npm run build`
23 |
24 | Builds the app for production to the `build` folder.\
25 | It correctly bundles React in production mode and optimizes the build for the best performance.
26 |
27 | The build is minified and the filenames include the hashes.\
28 | Your app is ready to be deployed!
29 |
30 | See the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information.
31 |
32 | ### `npm run eject`
33 |
34 | **Note: this is a one-way operation. Once you `eject`, you can't go back!**
35 |
36 | If you aren't satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project.
37 |
38 | Instead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you're on your own.
39 |
40 | You don't have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn't feel obligated to use this feature. However we understand that this tool wouldn't be useful if you couldn't customize it when you are ready for it.
41 |
42 | ## Learn More
43 |
44 | You can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started).
45 |
46 | To learn React, check out the [React documentation](https://reactjs.org/).
47 |
48 | ### Code Splitting
49 |
50 | This section has moved here: [https://facebook.github.io/create-react-app/docs/code-splitting](https://facebook.github.io/create-react-app/docs/code-splitting)
51 |
52 | ### Analyzing the Bundle Size
53 |
54 | This section has moved here: [https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size](https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size)
55 |
56 | ### Making a Progressive Web App
57 |
58 | This section has moved here: [https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app](https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app)
59 |
60 | ### Advanced Configuration
61 |
62 | This section has moved here: [https://facebook.github.io/create-react-app/docs/advanced-configuration](https://facebook.github.io/create-react-app/docs/advanced-configuration)
63 |
64 | ### Deployment
65 |
66 | This section has moved here: [https://facebook.github.io/create-react-app/docs/deployment](https://facebook.github.io/create-react-app/docs/deployment)
67 |
68 | ### `npm run build` fails to minify
69 |
70 | This section has moved here: [https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify](https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify)
71 |
--------------------------------------------------------------------------------
/frontend/README.md:
--------------------------------------------------------------------------------
1 | # Getting Started with Create React App
2 |
3 | This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app).
4 |
5 | ## Available Scripts
6 |
7 | In the project directory, you can run:
8 |
9 | ### `npm start`
10 |
11 | Runs the app in the development mode.\
12 | Open [http://localhost:3000](http://localhost:3000) to view it in your browser.
13 |
14 | The page will reload when you make changes.\
15 | You may also see any lint errors in the console.
16 |
17 | ### `npm test`
18 |
19 | Launches the test runner in the interactive watch mode.\
20 | See the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information.
21 |
22 | ### `npm run build`
23 |
24 | Builds the app for production to the `build` folder.\
25 | It correctly bundles React in production mode and optimizes the build for the best performance.
26 |
27 | The build is minified and the filenames include the hashes.\
28 | Your app is ready to be deployed!
29 |
30 | See the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information.
31 |
32 | ### `npm run eject`
33 |
34 | **Note: this is a one-way operation. Once you `eject`, you can't go back!**
35 |
36 | If you aren't satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project.
37 |
38 | Instead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you're on your own.
39 |
40 | You don't have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn't feel obligated to use this feature. However we understand that this tool wouldn't be useful if you couldn't customize it when you are ready for it.
41 |
42 | ## Learn More
43 |
44 | You can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started).
45 |
46 | To learn React, check out the [React documentation](https://reactjs.org/).
47 |
48 | ### Code Splitting
49 |
50 | This section has moved here: [https://facebook.github.io/create-react-app/docs/code-splitting](https://facebook.github.io/create-react-app/docs/code-splitting)
51 |
52 | ### Analyzing the Bundle Size
53 |
54 | This section has moved here: [https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size](https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size)
55 |
56 | ### Making a Progressive Web App
57 |
58 | This section has moved here: [https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app](https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app)
59 |
60 | ### Advanced Configuration
61 |
62 | This section has moved here: [https://facebook.github.io/create-react-app/docs/advanced-configuration](https://facebook.github.io/create-react-app/docs/advanced-configuration)
63 |
64 | ### Deployment
65 |
66 | This section has moved here: [https://facebook.github.io/create-react-app/docs/deployment](https://facebook.github.io/create-react-app/docs/deployment)
67 |
68 | ### `npm run build` fails to minify
69 |
70 | This section has moved here: [https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify](https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify)
71 |
--------------------------------------------------------------------------------
/backend/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "testreactapp-backend",
3 | "version": "1.0.0",
4 | "lockfileVersion": 3,
5 | "requires": true,
6 | "packages": {
7 | "": {
8 | "name": "testreactapp-backend",
9 | "version": "1.0.0",
10 | "license": "ISC",
11 | "dependencies": {
12 | "cors": "^2.8.5",
13 | "express": "^4.19.2",
14 | "mongoose": "^8.6.1"
15 | }
16 | },
17 | "node_modules/@mongodb-js/saslprep": {
18 | "version": "1.1.9",
19 | "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.9.tgz",
20 | "integrity": "sha512-tVkljjeEaAhCqTzajSdgbQ6gE6f3oneVwa3iXR6csiEwXXOFsiC6Uh9iAjAhXPtqa/XMDHWjjeNH/77m/Yq2dw==",
21 | "license": "MIT",
22 | "dependencies": {
23 | "sparse-bitfield": "^3.0.3"
24 | }
25 | },
26 | "node_modules/@types/webidl-conversions": {
27 | "version": "7.0.3",
28 | "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.3.tgz",
29 | "integrity": "sha512-CiJJvcRtIgzadHCYXw7dqEnMNRjhGZlYK05Mj9OyktqV8uVT8fD2BFOB7S1uwBE3Kj2Z+4UyPmFw/Ixgw/LAlA==",
30 | "license": "MIT"
31 | },
32 | "node_modules/@types/whatwg-url": {
33 | "version": "11.0.5",
34 | "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-11.0.5.tgz",
35 | "integrity": "sha512-coYR071JRaHa+xoEvvYqvnIHaVqaYrLPbsufM9BF63HkwI5Lgmy2QR8Q5K/lYDYo5AK82wOvSOS0UsLTpTG7uQ==",
36 | "license": "MIT",
37 | "dependencies": {
38 | "@types/webidl-conversions": "*"
39 | }
40 | },
41 | "node_modules/accepts": {
42 | "version": "1.3.8",
43 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
44 | "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
45 | "license": "MIT",
46 | "dependencies": {
47 | "mime-types": "~2.1.34",
48 | "negotiator": "0.6.3"
49 | },
50 | "engines": {
51 | "node": ">= 0.6"
52 | }
53 | },
54 | "node_modules/array-flatten": {
55 | "version": "1.1.1",
56 | "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
57 | "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==",
58 | "license": "MIT"
59 | },
60 | "node_modules/body-parser": {
61 | "version": "1.20.2",
62 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz",
63 | "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==",
64 | "license": "MIT",
65 | "dependencies": {
66 | "bytes": "3.1.2",
67 | "content-type": "~1.0.5",
68 | "debug": "2.6.9",
69 | "depd": "2.0.0",
70 | "destroy": "1.2.0",
71 | "http-errors": "2.0.0",
72 | "iconv-lite": "0.4.24",
73 | "on-finished": "2.4.1",
74 | "qs": "6.11.0",
75 | "raw-body": "2.5.2",
76 | "type-is": "~1.6.18",
77 | "unpipe": "1.0.0"
78 | },
79 | "engines": {
80 | "node": ">= 0.8",
81 | "npm": "1.2.8000 || >= 1.4.16"
82 | }
83 | },
84 | "node_modules/bson": {
85 | "version": "6.8.0",
86 | "resolved": "https://registry.npmjs.org/bson/-/bson-6.8.0.tgz",
87 | "integrity": "sha512-iOJg8pr7wq2tg/zSlCCHMi3hMm5JTOxLTagf3zxhcenHsFp+c6uOs6K7W5UE7A4QIJGtqh/ZovFNMP4mOPJynQ==",
88 | "license": "Apache-2.0",
89 | "engines": {
90 | "node": ">=16.20.1"
91 | }
92 | },
93 | "node_modules/bytes": {
94 | "version": "3.1.2",
95 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
96 | "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
97 | "license": "MIT",
98 | "engines": {
99 | "node": ">= 0.8"
100 | }
101 | },
102 | "node_modules/call-bind": {
103 | "version": "1.0.7",
104 | "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz",
105 | "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==",
106 | "license": "MIT",
107 | "dependencies": {
108 | "es-define-property": "^1.0.0",
109 | "es-errors": "^1.3.0",
110 | "function-bind": "^1.1.2",
111 | "get-intrinsic": "^1.2.4",
112 | "set-function-length": "^1.2.1"
113 | },
114 | "engines": {
115 | "node": ">= 0.4"
116 | },
117 | "funding": {
118 | "url": "https://github.com/sponsors/ljharb"
119 | }
120 | },
121 | "node_modules/content-disposition": {
122 | "version": "0.5.4",
123 | "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
124 | "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
125 | "license": "MIT",
126 | "dependencies": {
127 | "safe-buffer": "5.2.1"
128 | },
129 | "engines": {
130 | "node": ">= 0.6"
131 | }
132 | },
133 | "node_modules/content-type": {
134 | "version": "1.0.5",
135 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
136 | "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
137 | "license": "MIT",
138 | "engines": {
139 | "node": ">= 0.6"
140 | }
141 | },
142 | "node_modules/cookie": {
143 | "version": "0.6.0",
144 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz",
145 | "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==",
146 | "license": "MIT",
147 | "engines": {
148 | "node": ">= 0.6"
149 | }
150 | },
151 | "node_modules/cookie-signature": {
152 | "version": "1.0.6",
153 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
154 | "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==",
155 | "license": "MIT"
156 | },
157 | "node_modules/cors": {
158 | "version": "2.8.5",
159 | "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz",
160 | "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==",
161 | "license": "MIT",
162 | "dependencies": {
163 | "object-assign": "^4",
164 | "vary": "^1"
165 | },
166 | "engines": {
167 | "node": ">= 0.10"
168 | }
169 | },
170 | "node_modules/debug": {
171 | "version": "2.6.9",
172 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
173 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
174 | "license": "MIT",
175 | "dependencies": {
176 | "ms": "2.0.0"
177 | }
178 | },
179 | "node_modules/define-data-property": {
180 | "version": "1.1.4",
181 | "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz",
182 | "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==",
183 | "license": "MIT",
184 | "dependencies": {
185 | "es-define-property": "^1.0.0",
186 | "es-errors": "^1.3.0",
187 | "gopd": "^1.0.1"
188 | },
189 | "engines": {
190 | "node": ">= 0.4"
191 | },
192 | "funding": {
193 | "url": "https://github.com/sponsors/ljharb"
194 | }
195 | },
196 | "node_modules/depd": {
197 | "version": "2.0.0",
198 | "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
199 | "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
200 | "license": "MIT",
201 | "engines": {
202 | "node": ">= 0.8"
203 | }
204 | },
205 | "node_modules/destroy": {
206 | "version": "1.2.0",
207 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
208 | "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
209 | "license": "MIT",
210 | "engines": {
211 | "node": ">= 0.8",
212 | "npm": "1.2.8000 || >= 1.4.16"
213 | }
214 | },
215 | "node_modules/ee-first": {
216 | "version": "1.1.1",
217 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
218 | "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==",
219 | "license": "MIT"
220 | },
221 | "node_modules/encodeurl": {
222 | "version": "1.0.2",
223 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
224 | "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
225 | "license": "MIT",
226 | "engines": {
227 | "node": ">= 0.8"
228 | }
229 | },
230 | "node_modules/es-define-property": {
231 | "version": "1.0.0",
232 | "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz",
233 | "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==",
234 | "license": "MIT",
235 | "dependencies": {
236 | "get-intrinsic": "^1.2.4"
237 | },
238 | "engines": {
239 | "node": ">= 0.4"
240 | }
241 | },
242 | "node_modules/es-errors": {
243 | "version": "1.3.0",
244 | "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
245 | "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
246 | "license": "MIT",
247 | "engines": {
248 | "node": ">= 0.4"
249 | }
250 | },
251 | "node_modules/escape-html": {
252 | "version": "1.0.3",
253 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
254 | "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==",
255 | "license": "MIT"
256 | },
257 | "node_modules/etag": {
258 | "version": "1.8.1",
259 | "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
260 | "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
261 | "license": "MIT",
262 | "engines": {
263 | "node": ">= 0.6"
264 | }
265 | },
266 | "node_modules/express": {
267 | "version": "4.19.2",
268 | "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz",
269 | "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==",
270 | "license": "MIT",
271 | "dependencies": {
272 | "accepts": "~1.3.8",
273 | "array-flatten": "1.1.1",
274 | "body-parser": "1.20.2",
275 | "content-disposition": "0.5.4",
276 | "content-type": "~1.0.4",
277 | "cookie": "0.6.0",
278 | "cookie-signature": "1.0.6",
279 | "debug": "2.6.9",
280 | "depd": "2.0.0",
281 | "encodeurl": "~1.0.2",
282 | "escape-html": "~1.0.3",
283 | "etag": "~1.8.1",
284 | "finalhandler": "1.2.0",
285 | "fresh": "0.5.2",
286 | "http-errors": "2.0.0",
287 | "merge-descriptors": "1.0.1",
288 | "methods": "~1.1.2",
289 | "on-finished": "2.4.1",
290 | "parseurl": "~1.3.3",
291 | "path-to-regexp": "0.1.7",
292 | "proxy-addr": "~2.0.7",
293 | "qs": "6.11.0",
294 | "range-parser": "~1.2.1",
295 | "safe-buffer": "5.2.1",
296 | "send": "0.18.0",
297 | "serve-static": "1.15.0",
298 | "setprototypeof": "1.2.0",
299 | "statuses": "2.0.1",
300 | "type-is": "~1.6.18",
301 | "utils-merge": "1.0.1",
302 | "vary": "~1.1.2"
303 | },
304 | "engines": {
305 | "node": ">= 0.10.0"
306 | }
307 | },
308 | "node_modules/finalhandler": {
309 | "version": "1.2.0",
310 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
311 | "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
312 | "license": "MIT",
313 | "dependencies": {
314 | "debug": "2.6.9",
315 | "encodeurl": "~1.0.2",
316 | "escape-html": "~1.0.3",
317 | "on-finished": "2.4.1",
318 | "parseurl": "~1.3.3",
319 | "statuses": "2.0.1",
320 | "unpipe": "~1.0.0"
321 | },
322 | "engines": {
323 | "node": ">= 0.8"
324 | }
325 | },
326 | "node_modules/forwarded": {
327 | "version": "0.2.0",
328 | "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
329 | "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
330 | "license": "MIT",
331 | "engines": {
332 | "node": ">= 0.6"
333 | }
334 | },
335 | "node_modules/fresh": {
336 | "version": "0.5.2",
337 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
338 | "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
339 | "license": "MIT",
340 | "engines": {
341 | "node": ">= 0.6"
342 | }
343 | },
344 | "node_modules/function-bind": {
345 | "version": "1.1.2",
346 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
347 | "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
348 | "license": "MIT",
349 | "funding": {
350 | "url": "https://github.com/sponsors/ljharb"
351 | }
352 | },
353 | "node_modules/get-intrinsic": {
354 | "version": "1.2.4",
355 | "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz",
356 | "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==",
357 | "license": "MIT",
358 | "dependencies": {
359 | "es-errors": "^1.3.0",
360 | "function-bind": "^1.1.2",
361 | "has-proto": "^1.0.1",
362 | "has-symbols": "^1.0.3",
363 | "hasown": "^2.0.0"
364 | },
365 | "engines": {
366 | "node": ">= 0.4"
367 | },
368 | "funding": {
369 | "url": "https://github.com/sponsors/ljharb"
370 | }
371 | },
372 | "node_modules/gopd": {
373 | "version": "1.0.1",
374 | "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
375 | "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
376 | "license": "MIT",
377 | "dependencies": {
378 | "get-intrinsic": "^1.1.3"
379 | },
380 | "funding": {
381 | "url": "https://github.com/sponsors/ljharb"
382 | }
383 | },
384 | "node_modules/has-property-descriptors": {
385 | "version": "1.0.2",
386 | "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz",
387 | "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==",
388 | "license": "MIT",
389 | "dependencies": {
390 | "es-define-property": "^1.0.0"
391 | },
392 | "funding": {
393 | "url": "https://github.com/sponsors/ljharb"
394 | }
395 | },
396 | "node_modules/has-proto": {
397 | "version": "1.0.3",
398 | "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz",
399 | "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==",
400 | "license": "MIT",
401 | "engines": {
402 | "node": ">= 0.4"
403 | },
404 | "funding": {
405 | "url": "https://github.com/sponsors/ljharb"
406 | }
407 | },
408 | "node_modules/has-symbols": {
409 | "version": "1.0.3",
410 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
411 | "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
412 | "license": "MIT",
413 | "engines": {
414 | "node": ">= 0.4"
415 | },
416 | "funding": {
417 | "url": "https://github.com/sponsors/ljharb"
418 | }
419 | },
420 | "node_modules/hasown": {
421 | "version": "2.0.2",
422 | "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
423 | "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
424 | "license": "MIT",
425 | "dependencies": {
426 | "function-bind": "^1.1.2"
427 | },
428 | "engines": {
429 | "node": ">= 0.4"
430 | }
431 | },
432 | "node_modules/http-errors": {
433 | "version": "2.0.0",
434 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
435 | "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
436 | "license": "MIT",
437 | "dependencies": {
438 | "depd": "2.0.0",
439 | "inherits": "2.0.4",
440 | "setprototypeof": "1.2.0",
441 | "statuses": "2.0.1",
442 | "toidentifier": "1.0.1"
443 | },
444 | "engines": {
445 | "node": ">= 0.8"
446 | }
447 | },
448 | "node_modules/iconv-lite": {
449 | "version": "0.4.24",
450 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
451 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
452 | "license": "MIT",
453 | "dependencies": {
454 | "safer-buffer": ">= 2.1.2 < 3"
455 | },
456 | "engines": {
457 | "node": ">=0.10.0"
458 | }
459 | },
460 | "node_modules/inherits": {
461 | "version": "2.0.4",
462 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
463 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
464 | "license": "ISC"
465 | },
466 | "node_modules/ipaddr.js": {
467 | "version": "1.9.1",
468 | "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
469 | "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
470 | "license": "MIT",
471 | "engines": {
472 | "node": ">= 0.10"
473 | }
474 | },
475 | "node_modules/kareem": {
476 | "version": "2.6.3",
477 | "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.6.3.tgz",
478 | "integrity": "sha512-C3iHfuGUXK2u8/ipq9LfjFfXFxAZMQJJq7vLS45r3D9Y2xQ/m4S8zaR4zMLFWh9AsNPXmcFfUDhTEO8UIC/V6Q==",
479 | "license": "Apache-2.0",
480 | "engines": {
481 | "node": ">=12.0.0"
482 | }
483 | },
484 | "node_modules/media-typer": {
485 | "version": "0.3.0",
486 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
487 | "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
488 | "license": "MIT",
489 | "engines": {
490 | "node": ">= 0.6"
491 | }
492 | },
493 | "node_modules/memory-pager": {
494 | "version": "1.5.0",
495 | "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz",
496 | "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==",
497 | "license": "MIT"
498 | },
499 | "node_modules/merge-descriptors": {
500 | "version": "1.0.1",
501 | "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
502 | "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==",
503 | "license": "MIT"
504 | },
505 | "node_modules/methods": {
506 | "version": "1.1.2",
507 | "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
508 | "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==",
509 | "license": "MIT",
510 | "engines": {
511 | "node": ">= 0.6"
512 | }
513 | },
514 | "node_modules/mime": {
515 | "version": "1.6.0",
516 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
517 | "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
518 | "license": "MIT",
519 | "bin": {
520 | "mime": "cli.js"
521 | },
522 | "engines": {
523 | "node": ">=4"
524 | }
525 | },
526 | "node_modules/mime-db": {
527 | "version": "1.52.0",
528 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
529 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
530 | "license": "MIT",
531 | "engines": {
532 | "node": ">= 0.6"
533 | }
534 | },
535 | "node_modules/mime-types": {
536 | "version": "2.1.35",
537 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
538 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
539 | "license": "MIT",
540 | "dependencies": {
541 | "mime-db": "1.52.0"
542 | },
543 | "engines": {
544 | "node": ">= 0.6"
545 | }
546 | },
547 | "node_modules/mongodb": {
548 | "version": "6.8.0",
549 | "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.8.0.tgz",
550 | "integrity": "sha512-HGQ9NWDle5WvwMnrvUxsFYPd3JEbqD3RgABHBQRuoCEND0qzhsd0iH5ypHsf1eJ+sXmvmyKpP+FLOKY8Il7jMw==",
551 | "license": "Apache-2.0",
552 | "dependencies": {
553 | "@mongodb-js/saslprep": "^1.1.5",
554 | "bson": "^6.7.0",
555 | "mongodb-connection-string-url": "^3.0.0"
556 | },
557 | "engines": {
558 | "node": ">=16.20.1"
559 | },
560 | "peerDependencies": {
561 | "@aws-sdk/credential-providers": "^3.188.0",
562 | "@mongodb-js/zstd": "^1.1.0",
563 | "gcp-metadata": "^5.2.0",
564 | "kerberos": "^2.0.1",
565 | "mongodb-client-encryption": ">=6.0.0 <7",
566 | "snappy": "^7.2.2",
567 | "socks": "^2.7.1"
568 | },
569 | "peerDependenciesMeta": {
570 | "@aws-sdk/credential-providers": {
571 | "optional": true
572 | },
573 | "@mongodb-js/zstd": {
574 | "optional": true
575 | },
576 | "gcp-metadata": {
577 | "optional": true
578 | },
579 | "kerberos": {
580 | "optional": true
581 | },
582 | "mongodb-client-encryption": {
583 | "optional": true
584 | },
585 | "snappy": {
586 | "optional": true
587 | },
588 | "socks": {
589 | "optional": true
590 | }
591 | }
592 | },
593 | "node_modules/mongodb-connection-string-url": {
594 | "version": "3.0.1",
595 | "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-3.0.1.tgz",
596 | "integrity": "sha512-XqMGwRX0Lgn05TDB4PyG2h2kKO/FfWJyCzYQbIhXUxz7ETt0I/FqHjUeqj37irJ+Dl1ZtU82uYyj14u2XsZKfg==",
597 | "license": "Apache-2.0",
598 | "dependencies": {
599 | "@types/whatwg-url": "^11.0.2",
600 | "whatwg-url": "^13.0.0"
601 | }
602 | },
603 | "node_modules/mongoose": {
604 | "version": "8.6.1",
605 | "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-8.6.1.tgz",
606 | "integrity": "sha512-dppGcYqvsdg+VcnqXR5b467V4a+iNhmvkfYNpEPi6AjaUxnz6ioEDmrMLOi+sOWjvoHapuwPOigV4f2l7HC6ag==",
607 | "license": "MIT",
608 | "dependencies": {
609 | "bson": "^6.7.0",
610 | "kareem": "2.6.3",
611 | "mongodb": "6.8.0",
612 | "mpath": "0.9.0",
613 | "mquery": "5.0.0",
614 | "ms": "2.1.3",
615 | "sift": "17.1.3"
616 | },
617 | "engines": {
618 | "node": ">=16.20.1"
619 | },
620 | "funding": {
621 | "type": "opencollective",
622 | "url": "https://opencollective.com/mongoose"
623 | }
624 | },
625 | "node_modules/mongoose/node_modules/ms": {
626 | "version": "2.1.3",
627 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
628 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
629 | "license": "MIT"
630 | },
631 | "node_modules/mpath": {
632 | "version": "0.9.0",
633 | "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.9.0.tgz",
634 | "integrity": "sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew==",
635 | "license": "MIT",
636 | "engines": {
637 | "node": ">=4.0.0"
638 | }
639 | },
640 | "node_modules/mquery": {
641 | "version": "5.0.0",
642 | "resolved": "https://registry.npmjs.org/mquery/-/mquery-5.0.0.tgz",
643 | "integrity": "sha512-iQMncpmEK8R8ncT8HJGsGc9Dsp8xcgYMVSbs5jgnm1lFHTZqMJTUWTDx1LBO8+mK3tPNZWFLBghQEIOULSTHZg==",
644 | "license": "MIT",
645 | "dependencies": {
646 | "debug": "4.x"
647 | },
648 | "engines": {
649 | "node": ">=14.0.0"
650 | }
651 | },
652 | "node_modules/mquery/node_modules/debug": {
653 | "version": "4.3.7",
654 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz",
655 | "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==",
656 | "license": "MIT",
657 | "dependencies": {
658 | "ms": "^2.1.3"
659 | },
660 | "engines": {
661 | "node": ">=6.0"
662 | },
663 | "peerDependenciesMeta": {
664 | "supports-color": {
665 | "optional": true
666 | }
667 | }
668 | },
669 | "node_modules/mquery/node_modules/ms": {
670 | "version": "2.1.3",
671 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
672 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
673 | "license": "MIT"
674 | },
675 | "node_modules/ms": {
676 | "version": "2.0.0",
677 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
678 | "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
679 | "license": "MIT"
680 | },
681 | "node_modules/negotiator": {
682 | "version": "0.6.3",
683 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
684 | "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
685 | "license": "MIT",
686 | "engines": {
687 | "node": ">= 0.6"
688 | }
689 | },
690 | "node_modules/object-assign": {
691 | "version": "4.1.1",
692 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
693 | "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
694 | "license": "MIT",
695 | "engines": {
696 | "node": ">=0.10.0"
697 | }
698 | },
699 | "node_modules/object-inspect": {
700 | "version": "1.13.2",
701 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz",
702 | "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==",
703 | "license": "MIT",
704 | "engines": {
705 | "node": ">= 0.4"
706 | },
707 | "funding": {
708 | "url": "https://github.com/sponsors/ljharb"
709 | }
710 | },
711 | "node_modules/on-finished": {
712 | "version": "2.4.1",
713 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
714 | "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
715 | "license": "MIT",
716 | "dependencies": {
717 | "ee-first": "1.1.1"
718 | },
719 | "engines": {
720 | "node": ">= 0.8"
721 | }
722 | },
723 | "node_modules/parseurl": {
724 | "version": "1.3.3",
725 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
726 | "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
727 | "license": "MIT",
728 | "engines": {
729 | "node": ">= 0.8"
730 | }
731 | },
732 | "node_modules/path-to-regexp": {
733 | "version": "0.1.7",
734 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
735 | "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==",
736 | "license": "MIT"
737 | },
738 | "node_modules/proxy-addr": {
739 | "version": "2.0.7",
740 | "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
741 | "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
742 | "license": "MIT",
743 | "dependencies": {
744 | "forwarded": "0.2.0",
745 | "ipaddr.js": "1.9.1"
746 | },
747 | "engines": {
748 | "node": ">= 0.10"
749 | }
750 | },
751 | "node_modules/punycode": {
752 | "version": "2.3.1",
753 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
754 | "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
755 | "license": "MIT",
756 | "engines": {
757 | "node": ">=6"
758 | }
759 | },
760 | "node_modules/qs": {
761 | "version": "6.11.0",
762 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
763 | "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
764 | "license": "BSD-3-Clause",
765 | "dependencies": {
766 | "side-channel": "^1.0.4"
767 | },
768 | "engines": {
769 | "node": ">=0.6"
770 | },
771 | "funding": {
772 | "url": "https://github.com/sponsors/ljharb"
773 | }
774 | },
775 | "node_modules/range-parser": {
776 | "version": "1.2.1",
777 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
778 | "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
779 | "license": "MIT",
780 | "engines": {
781 | "node": ">= 0.6"
782 | }
783 | },
784 | "node_modules/raw-body": {
785 | "version": "2.5.2",
786 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz",
787 | "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==",
788 | "license": "MIT",
789 | "dependencies": {
790 | "bytes": "3.1.2",
791 | "http-errors": "2.0.0",
792 | "iconv-lite": "0.4.24",
793 | "unpipe": "1.0.0"
794 | },
795 | "engines": {
796 | "node": ">= 0.8"
797 | }
798 | },
799 | "node_modules/safe-buffer": {
800 | "version": "5.2.1",
801 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
802 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
803 | "funding": [
804 | {
805 | "type": "github",
806 | "url": "https://github.com/sponsors/feross"
807 | },
808 | {
809 | "type": "patreon",
810 | "url": "https://www.patreon.com/feross"
811 | },
812 | {
813 | "type": "consulting",
814 | "url": "https://feross.org/support"
815 | }
816 | ],
817 | "license": "MIT"
818 | },
819 | "node_modules/safer-buffer": {
820 | "version": "2.1.2",
821 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
822 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
823 | "license": "MIT"
824 | },
825 | "node_modules/send": {
826 | "version": "0.18.0",
827 | "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
828 | "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
829 | "license": "MIT",
830 | "dependencies": {
831 | "debug": "2.6.9",
832 | "depd": "2.0.0",
833 | "destroy": "1.2.0",
834 | "encodeurl": "~1.0.2",
835 | "escape-html": "~1.0.3",
836 | "etag": "~1.8.1",
837 | "fresh": "0.5.2",
838 | "http-errors": "2.0.0",
839 | "mime": "1.6.0",
840 | "ms": "2.1.3",
841 | "on-finished": "2.4.1",
842 | "range-parser": "~1.2.1",
843 | "statuses": "2.0.1"
844 | },
845 | "engines": {
846 | "node": ">= 0.8.0"
847 | }
848 | },
849 | "node_modules/send/node_modules/ms": {
850 | "version": "2.1.3",
851 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
852 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
853 | "license": "MIT"
854 | },
855 | "node_modules/serve-static": {
856 | "version": "1.15.0",
857 | "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz",
858 | "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
859 | "license": "MIT",
860 | "dependencies": {
861 | "encodeurl": "~1.0.2",
862 | "escape-html": "~1.0.3",
863 | "parseurl": "~1.3.3",
864 | "send": "0.18.0"
865 | },
866 | "engines": {
867 | "node": ">= 0.8.0"
868 | }
869 | },
870 | "node_modules/set-function-length": {
871 | "version": "1.2.2",
872 | "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz",
873 | "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==",
874 | "license": "MIT",
875 | "dependencies": {
876 | "define-data-property": "^1.1.4",
877 | "es-errors": "^1.3.0",
878 | "function-bind": "^1.1.2",
879 | "get-intrinsic": "^1.2.4",
880 | "gopd": "^1.0.1",
881 | "has-property-descriptors": "^1.0.2"
882 | },
883 | "engines": {
884 | "node": ">= 0.4"
885 | }
886 | },
887 | "node_modules/setprototypeof": {
888 | "version": "1.2.0",
889 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
890 | "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==",
891 | "license": "ISC"
892 | },
893 | "node_modules/side-channel": {
894 | "version": "1.0.6",
895 | "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz",
896 | "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==",
897 | "license": "MIT",
898 | "dependencies": {
899 | "call-bind": "^1.0.7",
900 | "es-errors": "^1.3.0",
901 | "get-intrinsic": "^1.2.4",
902 | "object-inspect": "^1.13.1"
903 | },
904 | "engines": {
905 | "node": ">= 0.4"
906 | },
907 | "funding": {
908 | "url": "https://github.com/sponsors/ljharb"
909 | }
910 | },
911 | "node_modules/sift": {
912 | "version": "17.1.3",
913 | "resolved": "https://registry.npmjs.org/sift/-/sift-17.1.3.tgz",
914 | "integrity": "sha512-Rtlj66/b0ICeFzYTuNvX/EF1igRbbnGSvEyT79McoZa/DeGhMyC5pWKOEsZKnpkqtSeovd5FL/bjHWC3CIIvCQ==",
915 | "license": "MIT"
916 | },
917 | "node_modules/sparse-bitfield": {
918 | "version": "3.0.3",
919 | "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz",
920 | "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==",
921 | "license": "MIT",
922 | "dependencies": {
923 | "memory-pager": "^1.0.2"
924 | }
925 | },
926 | "node_modules/statuses": {
927 | "version": "2.0.1",
928 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
929 | "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
930 | "license": "MIT",
931 | "engines": {
932 | "node": ">= 0.8"
933 | }
934 | },
935 | "node_modules/toidentifier": {
936 | "version": "1.0.1",
937 | "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
938 | "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
939 | "license": "MIT",
940 | "engines": {
941 | "node": ">=0.6"
942 | }
943 | },
944 | "node_modules/tr46": {
945 | "version": "4.1.1",
946 | "resolved": "https://registry.npmjs.org/tr46/-/tr46-4.1.1.tgz",
947 | "integrity": "sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==",
948 | "license": "MIT",
949 | "dependencies": {
950 | "punycode": "^2.3.0"
951 | },
952 | "engines": {
953 | "node": ">=14"
954 | }
955 | },
956 | "node_modules/type-is": {
957 | "version": "1.6.18",
958 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
959 | "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
960 | "license": "MIT",
961 | "dependencies": {
962 | "media-typer": "0.3.0",
963 | "mime-types": "~2.1.24"
964 | },
965 | "engines": {
966 | "node": ">= 0.6"
967 | }
968 | },
969 | "node_modules/unpipe": {
970 | "version": "1.0.0",
971 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
972 | "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
973 | "license": "MIT",
974 | "engines": {
975 | "node": ">= 0.8"
976 | }
977 | },
978 | "node_modules/utils-merge": {
979 | "version": "1.0.1",
980 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
981 | "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==",
982 | "license": "MIT",
983 | "engines": {
984 | "node": ">= 0.4.0"
985 | }
986 | },
987 | "node_modules/vary": {
988 | "version": "1.1.2",
989 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
990 | "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
991 | "license": "MIT",
992 | "engines": {
993 | "node": ">= 0.8"
994 | }
995 | },
996 | "node_modules/webidl-conversions": {
997 | "version": "7.0.0",
998 | "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz",
999 | "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==",
1000 | "license": "BSD-2-Clause",
1001 | "engines": {
1002 | "node": ">=12"
1003 | }
1004 | },
1005 | "node_modules/whatwg-url": {
1006 | "version": "13.0.0",
1007 | "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-13.0.0.tgz",
1008 | "integrity": "sha512-9WWbymnqj57+XEuqADHrCJ2eSXzn8WXIW/YSGaZtb2WKAInQ6CHfaUUcTyyver0p8BDg5StLQq8h1vtZuwmOig==",
1009 | "license": "MIT",
1010 | "dependencies": {
1011 | "tr46": "^4.1.1",
1012 | "webidl-conversions": "^7.0.0"
1013 | },
1014 | "engines": {
1015 | "node": ">=16"
1016 | }
1017 | }
1018 | }
1019 | }
1020 |
--------------------------------------------------------------------------------