├── .gitignore
├── README.md
├── 02_mongodb_mongoose _relaciones
├── src
│ ├── routes
│ │ ├── role.routes.js
│ │ ├── task.routes.js
│ │ ├── index.js
│ │ └── user.routes.js
│ ├── models
│ │ ├── roles.model.js
│ │ ├── task.model.js
│ │ └── user.model.js
│ ├── config
│ │ └── database.js
│ └── controllers
│ │ ├── role.controllers.js
│ │ ├── task.controllers.js
│ │ └── user.controllers.js
├── package.json
├── app.js
└── package-lock.json
└── 01_mongodb_mongoose
├── src
├── config
│ └── database.js
├── models
│ └── user.model.js
├── routes
│ └── user.routes.js
└── controllers
│ └── user.controllers.js
├── package.json
├── app.js
└── package-lock.json
/.gitignore:
--------------------------------------------------------------------------------
1 | .env
2 | node_modules/
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/02_mongodb_mongoose _relaciones/src/routes/role.routes.js:
--------------------------------------------------------------------------------
1 | import { Router } from "express";
2 | import { createRole, getAllRoles } from "../controllers/role.controllers.js";
3 |
4 | export const roleRoutes = Router();
5 |
6 | // ruta para crear un rol
7 | roleRoutes.post("/roles", createRole);
8 |
9 | // ruta para traer todos los roles
10 | roleRoutes.get("/roles", getAllRoles);
11 |
--------------------------------------------------------------------------------
/02_mongodb_mongoose _relaciones/src/routes/task.routes.js:
--------------------------------------------------------------------------------
1 | import { Router } from "express";
2 | import { createTask, getAllTasks } from "../controllers/task.controllers.js";
3 |
4 | export const taskRoutes = Router();
5 |
6 | // ruta para crear una tarea
7 | taskRoutes.post("/tasks", createTask);
8 |
9 | // ruta para traer todas las tareas
10 | taskRoutes.get("/tasks", getAllTasks);
11 |
--------------------------------------------------------------------------------
/02_mongodb_mongoose _relaciones/src/routes/index.js:
--------------------------------------------------------------------------------
1 | // exportar todas las rutas
2 |
3 | import { Router } from "express";
4 | import { userRoutes } from "./user.routes.js";
5 | import { taskRoutes } from "./task.routes.js";
6 | import { roleRoutes } from "./role.routes.js";
7 |
8 | export const routes = Router();
9 |
10 | routes.use(userRoutes);
11 | routes.use(taskRoutes);
12 | routes.use(roleRoutes);
13 |
--------------------------------------------------------------------------------
/02_mongodb_mongoose _relaciones/src/models/roles.model.js:
--------------------------------------------------------------------------------
1 | import { model, Schema } from "mongoose";
2 |
3 | const RoleSchema = new Schema(
4 | {
5 | rolename: {
6 | type: String,
7 | required: true,
8 | },
9 | },
10 | {
11 | versionKey: false,
12 | timestamps: {
13 | createdAt: "create_at",
14 | },
15 | }
16 | );
17 |
18 | export const RoleModel = model("Role", RoleSchema);
19 |
--------------------------------------------------------------------------------
/01_mongodb_mongoose/src/config/database.js:
--------------------------------------------------------------------------------
1 | import mongoose from "mongoose";
2 |
3 | export const connectDB = async () => {
4 | try {
5 | await mongoose.connect("mongodb://127.0.0.1:27017/mydatabase");
6 | // para borrar toda la base de datos
7 | // await mongoose.connection.dropDatabase();
8 | console.log("Conectado a la base de datos");
9 | } catch (error) {
10 | console.log("No se pudo conectar a la base de datos", error);
11 | }
12 | };
13 |
--------------------------------------------------------------------------------
/02_mongodb_mongoose _relaciones/src/config/database.js:
--------------------------------------------------------------------------------
1 | import mongoose from "mongoose";
2 |
3 | export const connectDB = async () => {
4 | try {
5 | await mongoose.connect("mongodb://127.0.0.1:27017/mydatabase");
6 | // para borrar toda la base de datos
7 | // await mongoose.connection.dropDatabase();
8 | console.log("Conectado a la base de datos");
9 | } catch (error) {
10 | console.log("No se pudo conectar a la base de datos", error);
11 | }
12 | };
13 |
--------------------------------------------------------------------------------
/01_mongodb_mongoose/src/models/user.model.js:
--------------------------------------------------------------------------------
1 | import { model, Schema } from "mongoose";
2 |
3 | const UserSchema = new Schema(
4 | {
5 | username: {
6 | type: String,
7 | required: true,
8 | unique: true,
9 | },
10 | email: {
11 | type: String,
12 | required: true,
13 | unique: true,
14 | },
15 | password: {
16 | type: String,
17 | required: true,
18 | },
19 | },
20 | {
21 | versionKey: false,
22 | }
23 | );
24 |
25 | export const UserModel = model("User", UserSchema);
26 |
--------------------------------------------------------------------------------
/02_mongodb_mongoose _relaciones/src/models/task.model.js:
--------------------------------------------------------------------------------
1 | import { model, Schema, Types } from "mongoose";
2 |
3 | const TaskSchema = new Schema(
4 | {
5 | title: {
6 | type: String,
7 | required: true,
8 | },
9 | description: {
10 | type: String,
11 | required: true,
12 | },
13 | author: {
14 | type: Types.ObjectId,
15 | ref: "User",
16 | required: true,
17 | unique: true,
18 | },
19 | },
20 | {
21 | versionKey: false,
22 | }
23 | );
24 |
25 | export const TaskModel = model("Task", TaskSchema);
26 |
--------------------------------------------------------------------------------
/01_mongodb_mongoose/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "01_mongodb_mongoose",
3 | "version": "1.0.0",
4 | "main": "app.js",
5 | "type": "module",
6 | "scripts": {
7 | "dev": "node --watch app.js"
8 | },
9 | "keywords": [],
10 | "author": "",
11 | "license": "ISC",
12 | "description": "",
13 | "dependencies": {
14 | "bcryptjs": "^3.0.2",
15 | "cookie-parser": "^1.4.7",
16 | "cors": "^2.8.5",
17 | "dotenv": "^17.2.2",
18 | "express": "^5.1.0",
19 | "express-validator": "^7.2.1",
20 | "jsonwebtoken": "^9.0.2",
21 | "mongoose": "^8.18.1"
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/02_mongodb_mongoose _relaciones/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "01_mongodb_mongoose",
3 | "version": "1.0.0",
4 | "main": "app.js",
5 | "type": "module",
6 | "scripts": {
7 | "dev": "node --watch app.js"
8 | },
9 | "keywords": [],
10 | "author": "",
11 | "license": "ISC",
12 | "description": "",
13 | "dependencies": {
14 | "bcryptjs": "^3.0.2",
15 | "cookie-parser": "^1.4.7",
16 | "cors": "^2.8.5",
17 | "dotenv": "^17.2.2",
18 | "express": "^5.1.0",
19 | "express-validator": "^7.2.1",
20 | "jsonwebtoken": "^9.0.2",
21 | "mongoose": "^8.18.1"
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/02_mongodb_mongoose _relaciones/app.js:
--------------------------------------------------------------------------------
1 | import cookieParser from "cookie-parser";
2 | import cors from "cors";
3 | import "dotenv/config";
4 | import express from "express";
5 | import { connectDB } from "./src/config/database.js";
6 | import { routes } from "./src/routes/index.js";
7 |
8 | const app = express();
9 | const PORT = process.env.PORT;
10 |
11 | // middlewares
12 | app.use(express.json());
13 | app.use(cors());
14 | app.use(cookieParser()); //para poder leer las cookies
15 |
16 | // rutas
17 | app.use("/api", routes);
18 |
19 | app.listen(PORT, async () => {
20 | await connectDB();
21 | console.log(`Servidor escuchando en el puerto ${PORT}`);
22 | });
23 |
--------------------------------------------------------------------------------
/01_mongodb_mongoose/app.js:
--------------------------------------------------------------------------------
1 | import express from "express";
2 | import cors from "cors";
3 | import cookieParser from "cookie-parser";
4 | import "dotenv/config";
5 | import { connectDB } from "./src/config/database.js";
6 | import { userRoutes } from "./src/routes/user.routes.js";
7 |
8 | const app = express();
9 | const PORT = process.env.PORT;
10 |
11 | // middlewares
12 | app.use(express.json());
13 | app.use(cors());
14 | app.use(cookieParser()); //para poder leer las cookies
15 |
16 | // rutas
17 | app.use("/api", userRoutes);
18 |
19 | app.listen(PORT, async () => {
20 | await connectDB();
21 | console.log(`Servidor escuchando en el puerto ${PORT}`);
22 | });
23 |
--------------------------------------------------------------------------------
/01_mongodb_mongoose/src/routes/user.routes.js:
--------------------------------------------------------------------------------
1 | import { Router } from "express";
2 | import {
3 | createUser,
4 | deleteUser,
5 | getAllUser,
6 | getUserById,
7 | updateUser,
8 | } from "../controllers/user.controllers.js";
9 |
10 | export const userRoutes = Router();
11 |
12 | // ruta para crear un usuario
13 | userRoutes.post("/users", createUser);
14 |
15 | // ruta para traer todos los usuarios
16 | userRoutes.get("/users", getAllUser);
17 |
18 | // ruta para traer un solo usuario
19 | userRoutes.get("/users/:id", getUserById);
20 |
21 | // ruta para actualizar un usuario
22 | userRoutes.put("/users/:id", updateUser);
23 |
24 | // ruta para eliminar un usuario
25 | userRoutes.delete("/users/:id", deleteUser);
26 |
--------------------------------------------------------------------------------
/02_mongodb_mongoose _relaciones/src/routes/user.routes.js:
--------------------------------------------------------------------------------
1 | import { Router } from "express";
2 | import {
3 | createUser,
4 | deleteUser,
5 | getAllUser,
6 | getUserById,
7 | updateUser,
8 | } from "../controllers/user.controllers.js";
9 |
10 | export const userRoutes = Router();
11 |
12 | // ruta para crear un usuario
13 | userRoutes.post("/users", createUser);
14 |
15 | // ruta para traer todos los usuarios
16 | userRoutes.get("/users", getAllUser);
17 |
18 | // ruta para traer un solo usuario
19 | userRoutes.get("/users/:id", getUserById);
20 |
21 | // ruta para actualizar un usuario
22 | userRoutes.put("/users/:id", updateUser);
23 |
24 | // ruta para eliminar un usuario
25 | userRoutes.delete("/users/:id", deleteUser);
26 |
--------------------------------------------------------------------------------
/02_mongodb_mongoose _relaciones/src/models/user.model.js:
--------------------------------------------------------------------------------
1 | import { model, Schema, Types } from "mongoose";
2 |
3 | const UserSchema = new Schema(
4 | {
5 | username: {
6 | type: String,
7 | required: true,
8 | unique: true,
9 | },
10 | email: {
11 | type: String,
12 | required: true,
13 | unique: true,
14 | },
15 | password: {
16 | type: String,
17 | required: true,
18 | },
19 | // roles: {
20 | // type: [Types.ObjectId],
21 | // ref: "Role",
22 | // required: true,
23 | // validate: {
24 | // // validacion personalizada
25 | // validator: (arreglo) => (arreglo) => {
26 | // if (arreglo.length === 0) {
27 | // return false;
28 | // }
29 | // },
30 | // message: "El título debe tener más de 3 caracteres",
31 | // },
32 | // },
33 | // roles: [
34 | // {
35 | // type: Types.ObjectId,
36 | // ref: "Role",
37 | // required: true,
38 | // },
39 | // ],
40 |
41 | // addresses: [
42 | // {
43 | // _id: false,
44 | // street: {
45 | // type: String,
46 | // required: true,
47 | // },
48 | // city: {
49 | // type: String,
50 | // required: true,
51 | // },
52 | // country: {
53 | // type: String,
54 | // required: true,
55 | // },
56 | // },
57 | // ],
58 | // address: {
59 | // street: {
60 | // type: String,
61 | // required: true,
62 | // },
63 | // city: {
64 | // type: String,
65 | // required: true,
66 | // },
67 | // country: {
68 | // type: String,
69 | // required: true,
70 | // },
71 | // },
72 | },
73 | {
74 | versionKey: false,
75 | }
76 | );
77 |
78 | export const UserModel = model("User", UserSchema);
79 |
--------------------------------------------------------------------------------
/02_mongodb_mongoose _relaciones/src/controllers/role.controllers.js:
--------------------------------------------------------------------------------
1 | import { RoleModel } from "../models/roles.model.js";
2 |
3 | export const createRole = async (req, res) => {
4 | const { rolename } = req.body;
5 |
6 | try {
7 | const newRole = await RoleModel.create({
8 | rolename,
9 | });
10 |
11 | res.status(201).json({
12 | ok: true,
13 | msg: "Rol creado correctamente",
14 | data: newRole,
15 | });
16 | } catch (error) {
17 | console.log(error);
18 | return res.status(500).json({
19 | ok: false,
20 | msg: "Error interno del servidor",
21 | });
22 | }
23 | };
24 |
25 | export const getAllRoles = async (req, res) => {
26 | try {
27 | const roles = await RoleModel.find();
28 |
29 | res.status(200).json({
30 | ok: true,
31 | data: roles,
32 | });
33 | } catch (error) {
34 | console.log(error);
35 | return res.status(500).json({
36 | ok: false,
37 | msg: "Error interno del servidor",
38 | });
39 | }
40 | };
41 |
42 | // export const getUserById = async (req, res) => {
43 | // const { id } = req.params;
44 |
45 | // try {
46 | // const user = await UserModel.findById(id);
47 |
48 | // res.status(200).json({
49 | // ok: true,
50 | // data: user,
51 | // });
52 | // } catch (error) {
53 | // console.log(error);
54 | // return res.status(500).json({
55 | // ok: false,
56 | // msg: "Error interno del servidor",
57 | // });
58 | // }
59 | // };
60 |
61 | // export const updateUser = async (req, res) => {
62 | // const { id } = req.params;
63 | // const { username } = req.body;
64 |
65 | // try {
66 | // // const user = await UserModel.findById(id);
67 |
68 | // // const updatedUser2 = await UserModel.updateOne({ _id: id }, { username });
69 |
70 | // const updatedUser = await UserModel.findByIdAndUpdate(
71 | // id,
72 | // { username },
73 | // { new: true }
74 | // );
75 |
76 | // res.status(200).json({
77 | // ok: true,
78 | // msg: "Usuario actualizado correctamente",
79 | // data: updatedUser,
80 | // });
81 | // } catch (error) {
82 | // console.log(error);
83 | // return res.status(500).json({
84 | // ok: false,
85 | // msg: "Error interno del servidor",
86 | // });
87 | // }
88 | // };
89 |
90 | // export const deleteUser = async (req, res) => {
91 | // const { id } = req.params;
92 |
93 | // try {
94 | // // const user = await UserModel.findById(id);
95 |
96 | // // const deletedUser2 = await UserModel.deleteOne({ _id: id });
97 |
98 | // const deletedUser = await UserModel.findByIdAndDelete(id);
99 |
100 | // res.status(200).json({
101 | // ok: true,
102 | // msg: "Usuario eliminado correctamente",
103 | // data: deletedUser,
104 | // });
105 | // } catch (error) {
106 | // console.log(error);
107 | // return res.status(500).json({
108 | // ok: false,
109 | // msg: "Error interno del servidor",
110 | // });
111 | // }
112 | // };
113 |
--------------------------------------------------------------------------------
/02_mongodb_mongoose _relaciones/src/controllers/task.controllers.js:
--------------------------------------------------------------------------------
1 | import { TaskModel } from "../models/task.model.js";
2 |
3 | export const createTask = async (req, res) => {
4 | const { title, description, author } = req.body;
5 |
6 | try {
7 | const newTask = await TaskModel.create({
8 | title,
9 | description,
10 | author,
11 | });
12 |
13 | res.status(201).json({
14 | ok: true,
15 | msg: "Tarea creada correctamente",
16 | data: newTask,
17 | });
18 | } catch (error) {
19 | console.log(error);
20 | return res.status(500).json({
21 | ok: false,
22 | msg: "Error interno del servidor",
23 | });
24 | }
25 | };
26 |
27 | export const getAllTasks = async (req, res) => {
28 | try {
29 | const tasks = await TaskModel.find().populate("author", "-password");
30 | // const tasks = await TaskModel.find().populate({
31 | // path: "author",
32 | // select: "username -_id"
33 | // });
34 |
35 | res.status(200).json({
36 | ok: true,
37 | data: tasks,
38 | });
39 | } catch (error) {
40 | console.log(error);
41 | return res.status(500).json({
42 | ok: false,
43 | msg: "Error interno del servidor",
44 | });
45 | }
46 | };
47 |
48 | // export const getUserById = async (req, res) => {
49 | // const { id } = req.params;
50 |
51 | // try {
52 | // const user = await UserModel.findById(id);
53 |
54 | // res.status(200).json({
55 | // ok: true,
56 | // data: user,
57 | // });
58 | // } catch (error) {
59 | // console.log(error);
60 | // return res.status(500).json({
61 | // ok: false,
62 | // msg: "Error interno del servidor",
63 | // });
64 | // }
65 | // };
66 |
67 | // export const updateUser = async (req, res) => {
68 | // const { id } = req.params;
69 | // const { username } = req.body;
70 |
71 | // try {
72 | // // const user = await UserModel.findById(id);
73 |
74 | // // const updatedUser2 = await UserModel.updateOne({ _id: id }, { username });
75 |
76 | // const updatedUser = await UserModel.findByIdAndUpdate(
77 | // id,
78 | // { username },
79 | // { new: true }
80 | // );
81 |
82 | // res.status(200).json({
83 | // ok: true,
84 | // msg: "Usuario actualizado correctamente",
85 | // data: updatedUser,
86 | // });
87 | // } catch (error) {
88 | // console.log(error);
89 | // return res.status(500).json({
90 | // ok: false,
91 | // msg: "Error interno del servidor",
92 | // });
93 | // }
94 | // };
95 |
96 | // export const deleteUser = async (req, res) => {
97 | // const { id } = req.params;
98 |
99 | // try {
100 | // // const user = await UserModel.findById(id);
101 |
102 | // // const deletedUser2 = await UserModel.deleteOne({ _id: id });
103 |
104 | // const deletedUser = await UserModel.findByIdAndDelete(id);
105 |
106 | // res.status(200).json({
107 | // ok: true,
108 | // msg: "Usuario eliminado correctamente",
109 | // data: deletedUser,
110 | // });
111 | // } catch (error) {
112 | // console.log(error);
113 | // return res.status(500).json({
114 | // ok: false,
115 | // msg: "Error interno del servidor",
116 | // });
117 | // }
118 | // };
119 |
--------------------------------------------------------------------------------
/01_mongodb_mongoose/src/controllers/user.controllers.js:
--------------------------------------------------------------------------------
1 | import { UserModel } from "../models/user.model.js";
2 |
3 | export const createUser = async (req, res) => {
4 | const { username, email, password } = req.body;
5 |
6 | try {
7 | // validar los datos
8 | // verificar si ya existe
9 | // hashear la contraseña
10 | // equivalentes:
11 | // username: username
12 | // username
13 |
14 | // const newUser2 = new UserModel({
15 | // username,
16 | // email,
17 | // password,
18 | // });
19 |
20 | // await newUser2.save();
21 |
22 | const newUser = await UserModel.create({
23 | username,
24 | email,
25 | password,
26 | });
27 |
28 | res.status(201).json({
29 | ok: true,
30 | msg: "Usuario creado correctamente",
31 | data: newUser,
32 | });
33 | } catch (error) {
34 | console.log(error);
35 | return res.status(500).json({
36 | ok: false,
37 | msg: "Error interno del servidor",
38 | });
39 | }
40 | };
41 |
42 | export const getAllUser = async (req, res) => {
43 | try {
44 | const users = await UserModel.find();
45 |
46 | res.status(200).json({
47 | ok: true,
48 | data: users,
49 | });
50 | } catch (error) {
51 | console.log(error);
52 | return res.status(500).json({
53 | ok: false,
54 | msg: "Error interno del servidor",
55 | });
56 | }
57 | };
58 |
59 | export const getUserById = async (req, res) => {
60 | const { id } = req.params;
61 |
62 | try {
63 | const user = await UserModel.findById(id);
64 |
65 | res.status(200).json({
66 | ok: true,
67 | data: user,
68 | });
69 | } catch (error) {
70 | console.log(error);
71 | return res.status(500).json({
72 | ok: false,
73 | msg: "Error interno del servidor",
74 | });
75 | }
76 | };
77 |
78 | export const updateUser = async (req, res) => {
79 | const { id } = req.params;
80 | const { username } = req.body;
81 |
82 | try {
83 | // const user = await UserModel.findById(id);
84 |
85 | // const updatedUser2 = await UserModel.updateOne({ _id: id }, { username });
86 |
87 | const updatedUser = await UserModel.findByIdAndUpdate(
88 | id,
89 | { username },
90 | { new: true }
91 | );
92 |
93 | res.status(200).json({
94 | ok: true,
95 | msg: "Usuario actualizado correctamente",
96 | data: updatedUser,
97 | });
98 | } catch (error) {
99 | console.log(error);
100 | return res.status(500).json({
101 | ok: false,
102 | msg: "Error interno del servidor",
103 | });
104 | }
105 | };
106 |
107 | export const deleteUser = async (req, res) => {
108 | const { id } = req.params;
109 |
110 | try {
111 | // const user = await UserModel.findById(id);
112 |
113 | // const deletedUser2 = await UserModel.deleteOne({ _id: id });
114 |
115 | const deletedUser = await UserModel.findByIdAndDelete(id);
116 |
117 | res.status(200).json({
118 | ok: true,
119 | msg: "Usuario eliminado correctamente",
120 | data: deletedUser,
121 | });
122 | } catch (error) {
123 | console.log(error);
124 | return res.status(500).json({
125 | ok: false,
126 | msg: "Error interno del servidor",
127 | });
128 | }
129 | };
130 |
--------------------------------------------------------------------------------
/02_mongodb_mongoose _relaciones/src/controllers/user.controllers.js:
--------------------------------------------------------------------------------
1 | import { UserModel } from "../models/user.model.js";
2 |
3 | export const createUser = async (req, res) => {
4 | const { username, email, password, roles } = req.body;
5 |
6 | try {
7 | // validar los datos
8 | // verificar si ya existe
9 | // hashear la contraseña
10 | // equivalentes:
11 | // username: username
12 | // username
13 |
14 | // const newUser2 = new UserModel({
15 | // username,
16 | // email,
17 | // password,
18 | // });
19 |
20 | // await newUser2.save();
21 |
22 | const newUser = await UserModel.create({
23 | username,
24 | email,
25 | password,
26 | roles,
27 | });
28 |
29 | res.status(201).json({
30 | ok: true,
31 | msg: "Usuario creado correctamente",
32 | data: newUser,
33 | });
34 | } catch (error) {
35 | console.log(error);
36 | return res.status(500).json({
37 | ok: false,
38 | msg: "Error interno del servidor",
39 | });
40 | }
41 | };
42 |
43 | export const getAllUser = async (req, res) => {
44 | try {
45 | const users = await UserModel.find().populate("roles");
46 |
47 | res.status(200).json({
48 | ok: true,
49 | data: users,
50 | });
51 | } catch (error) {
52 | console.log(error);
53 | return res.status(500).json({
54 | ok: false,
55 | msg: "Error interno del servidor",
56 | });
57 | }
58 | };
59 |
60 | export const getUserById = async (req, res) => {
61 | const { id } = req.params;
62 |
63 | try {
64 | const user = await UserModel.findById(id);
65 |
66 | res.status(200).json({
67 | ok: true,
68 | data: user,
69 | });
70 | } catch (error) {
71 | console.log(error);
72 | return res.status(500).json({
73 | ok: false,
74 | msg: "Error interno del servidor",
75 | });
76 | }
77 | };
78 |
79 | export const updateUser = async (req, res) => {
80 | const { id } = req.params;
81 | const { username } = req.body;
82 |
83 | try {
84 | // const user = await UserModel.findById(id);
85 |
86 | // const updatedUser2 = await UserModel.updateOne({ _id: id }, { username });
87 |
88 | const updatedUser = await UserModel.findByIdAndUpdate(
89 | id,
90 | { username },
91 | { new: true }
92 | );
93 |
94 | res.status(200).json({
95 | ok: true,
96 | msg: "Usuario actualizado correctamente",
97 | data: updatedUser,
98 | });
99 | } catch (error) {
100 | console.log(error);
101 | return res.status(500).json({
102 | ok: false,
103 | msg: "Error interno del servidor",
104 | });
105 | }
106 | };
107 |
108 | export const deleteUser = async (req, res) => {
109 | const { id } = req.params;
110 |
111 | try {
112 | // const user = await UserModel.findById(id);
113 |
114 | // const deletedUser2 = await UserModel.deleteOne({ _id: id });
115 |
116 | const deletedUser = await UserModel.findByIdAndDelete(id);
117 |
118 | res.status(200).json({
119 | ok: true,
120 | msg: "Usuario eliminado correctamente",
121 | data: deletedUser,
122 | });
123 | } catch (error) {
124 | console.log(error);
125 | return res.status(500).json({
126 | ok: false,
127 | msg: "Error interno del servidor",
128 | });
129 | }
130 | };
131 |
--------------------------------------------------------------------------------
/01_mongodb_mongoose/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "01_mongodb_mongoose",
3 | "version": "1.0.0",
4 | "lockfileVersion": 3,
5 | "requires": true,
6 | "packages": {
7 | "": {
8 | "name": "01_mongodb_mongoose",
9 | "version": "1.0.0",
10 | "license": "ISC",
11 | "dependencies": {
12 | "bcryptjs": "^3.0.2",
13 | "cookie-parser": "^1.4.7",
14 | "cors": "^2.8.5",
15 | "dotenv": "^17.2.2",
16 | "express": "^5.1.0",
17 | "express-validator": "^7.2.1",
18 | "jsonwebtoken": "^9.0.2",
19 | "mongoose": "^8.18.1"
20 | }
21 | },
22 | "node_modules/@mongodb-js/saslprep": {
23 | "version": "1.3.0",
24 | "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.3.0.tgz",
25 | "integrity": "sha512-zlayKCsIjYb7/IdfqxorK5+xUMyi4vOKcFy10wKJYc63NSdKI8mNME+uJqfatkPmOSMMUiojrL58IePKBm3gvQ==",
26 | "license": "MIT",
27 | "dependencies": {
28 | "sparse-bitfield": "^3.0.3"
29 | }
30 | },
31 | "node_modules/@types/webidl-conversions": {
32 | "version": "7.0.3",
33 | "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.3.tgz",
34 | "integrity": "sha512-CiJJvcRtIgzadHCYXw7dqEnMNRjhGZlYK05Mj9OyktqV8uVT8fD2BFOB7S1uwBE3Kj2Z+4UyPmFw/Ixgw/LAlA==",
35 | "license": "MIT"
36 | },
37 | "node_modules/@types/whatwg-url": {
38 | "version": "11.0.5",
39 | "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-11.0.5.tgz",
40 | "integrity": "sha512-coYR071JRaHa+xoEvvYqvnIHaVqaYrLPbsufM9BF63HkwI5Lgmy2QR8Q5K/lYDYo5AK82wOvSOS0UsLTpTG7uQ==",
41 | "license": "MIT",
42 | "dependencies": {
43 | "@types/webidl-conversions": "*"
44 | }
45 | },
46 | "node_modules/accepts": {
47 | "version": "2.0.0",
48 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz",
49 | "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==",
50 | "license": "MIT",
51 | "dependencies": {
52 | "mime-types": "^3.0.0",
53 | "negotiator": "^1.0.0"
54 | },
55 | "engines": {
56 | "node": ">= 0.6"
57 | }
58 | },
59 | "node_modules/bcryptjs": {
60 | "version": "3.0.2",
61 | "resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-3.0.2.tgz",
62 | "integrity": "sha512-k38b3XOZKv60C4E2hVsXTolJWfkGRMbILBIe2IBITXciy5bOsTKot5kDrf3ZfufQtQOUN5mXceUEpU1rTl9Uog==",
63 | "license": "BSD-3-Clause",
64 | "bin": {
65 | "bcrypt": "bin/bcrypt"
66 | }
67 | },
68 | "node_modules/body-parser": {
69 | "version": "2.2.0",
70 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.0.tgz",
71 | "integrity": "sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==",
72 | "license": "MIT",
73 | "dependencies": {
74 | "bytes": "^3.1.2",
75 | "content-type": "^1.0.5",
76 | "debug": "^4.4.0",
77 | "http-errors": "^2.0.0",
78 | "iconv-lite": "^0.6.3",
79 | "on-finished": "^2.4.1",
80 | "qs": "^6.14.0",
81 | "raw-body": "^3.0.0",
82 | "type-is": "^2.0.0"
83 | },
84 | "engines": {
85 | "node": ">=18"
86 | }
87 | },
88 | "node_modules/bson": {
89 | "version": "6.10.4",
90 | "resolved": "https://registry.npmjs.org/bson/-/bson-6.10.4.tgz",
91 | "integrity": "sha512-WIsKqkSC0ABoBJuT1LEX+2HEvNmNKKgnTAyd0fL8qzK4SH2i9NXg+t08YtdZp/V9IZ33cxe3iV4yM0qg8lMQng==",
92 | "license": "Apache-2.0",
93 | "engines": {
94 | "node": ">=16.20.1"
95 | }
96 | },
97 | "node_modules/buffer-equal-constant-time": {
98 | "version": "1.0.1",
99 | "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz",
100 | "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==",
101 | "license": "BSD-3-Clause"
102 | },
103 | "node_modules/bytes": {
104 | "version": "3.1.2",
105 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
106 | "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
107 | "license": "MIT",
108 | "engines": {
109 | "node": ">= 0.8"
110 | }
111 | },
112 | "node_modules/call-bind-apply-helpers": {
113 | "version": "1.0.2",
114 | "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
115 | "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
116 | "license": "MIT",
117 | "dependencies": {
118 | "es-errors": "^1.3.0",
119 | "function-bind": "^1.1.2"
120 | },
121 | "engines": {
122 | "node": ">= 0.4"
123 | }
124 | },
125 | "node_modules/call-bound": {
126 | "version": "1.0.4",
127 | "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz",
128 | "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==",
129 | "license": "MIT",
130 | "dependencies": {
131 | "call-bind-apply-helpers": "^1.0.2",
132 | "get-intrinsic": "^1.3.0"
133 | },
134 | "engines": {
135 | "node": ">= 0.4"
136 | },
137 | "funding": {
138 | "url": "https://github.com/sponsors/ljharb"
139 | }
140 | },
141 | "node_modules/content-disposition": {
142 | "version": "1.0.0",
143 | "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.0.tgz",
144 | "integrity": "sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==",
145 | "license": "MIT",
146 | "dependencies": {
147 | "safe-buffer": "5.2.1"
148 | },
149 | "engines": {
150 | "node": ">= 0.6"
151 | }
152 | },
153 | "node_modules/content-type": {
154 | "version": "1.0.5",
155 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
156 | "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
157 | "license": "MIT",
158 | "engines": {
159 | "node": ">= 0.6"
160 | }
161 | },
162 | "node_modules/cookie": {
163 | "version": "0.7.2",
164 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz",
165 | "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==",
166 | "license": "MIT",
167 | "engines": {
168 | "node": ">= 0.6"
169 | }
170 | },
171 | "node_modules/cookie-parser": {
172 | "version": "1.4.7",
173 | "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.7.tgz",
174 | "integrity": "sha512-nGUvgXnotP3BsjiLX2ypbQnWoGUPIIfHQNZkkC668ntrzGWEZVW70HDEB1qnNGMicPje6EttlIgzo51YSwNQGw==",
175 | "license": "MIT",
176 | "dependencies": {
177 | "cookie": "0.7.2",
178 | "cookie-signature": "1.0.6"
179 | },
180 | "engines": {
181 | "node": ">= 0.8.0"
182 | }
183 | },
184 | "node_modules/cookie-signature": {
185 | "version": "1.0.6",
186 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
187 | "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==",
188 | "license": "MIT"
189 | },
190 | "node_modules/cors": {
191 | "version": "2.8.5",
192 | "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz",
193 | "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==",
194 | "license": "MIT",
195 | "dependencies": {
196 | "object-assign": "^4",
197 | "vary": "^1"
198 | },
199 | "engines": {
200 | "node": ">= 0.10"
201 | }
202 | },
203 | "node_modules/debug": {
204 | "version": "4.4.1",
205 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz",
206 | "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==",
207 | "license": "MIT",
208 | "dependencies": {
209 | "ms": "^2.1.3"
210 | },
211 | "engines": {
212 | "node": ">=6.0"
213 | },
214 | "peerDependenciesMeta": {
215 | "supports-color": {
216 | "optional": true
217 | }
218 | }
219 | },
220 | "node_modules/depd": {
221 | "version": "2.0.0",
222 | "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
223 | "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
224 | "license": "MIT",
225 | "engines": {
226 | "node": ">= 0.8"
227 | }
228 | },
229 | "node_modules/dotenv": {
230 | "version": "17.2.2",
231 | "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.2.2.tgz",
232 | "integrity": "sha512-Sf2LSQP+bOlhKWWyhFsn0UsfdK/kCWRv1iuA2gXAwt3dyNabr6QSj00I2V10pidqz69soatm9ZwZvpQMTIOd5Q==",
233 | "license": "BSD-2-Clause",
234 | "engines": {
235 | "node": ">=12"
236 | },
237 | "funding": {
238 | "url": "https://dotenvx.com"
239 | }
240 | },
241 | "node_modules/dunder-proto": {
242 | "version": "1.0.1",
243 | "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
244 | "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
245 | "license": "MIT",
246 | "dependencies": {
247 | "call-bind-apply-helpers": "^1.0.1",
248 | "es-errors": "^1.3.0",
249 | "gopd": "^1.2.0"
250 | },
251 | "engines": {
252 | "node": ">= 0.4"
253 | }
254 | },
255 | "node_modules/ecdsa-sig-formatter": {
256 | "version": "1.0.11",
257 | "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz",
258 | "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==",
259 | "license": "Apache-2.0",
260 | "dependencies": {
261 | "safe-buffer": "^5.0.1"
262 | }
263 | },
264 | "node_modules/ee-first": {
265 | "version": "1.1.1",
266 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
267 | "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==",
268 | "license": "MIT"
269 | },
270 | "node_modules/encodeurl": {
271 | "version": "2.0.0",
272 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz",
273 | "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==",
274 | "license": "MIT",
275 | "engines": {
276 | "node": ">= 0.8"
277 | }
278 | },
279 | "node_modules/es-define-property": {
280 | "version": "1.0.1",
281 | "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
282 | "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
283 | "license": "MIT",
284 | "engines": {
285 | "node": ">= 0.4"
286 | }
287 | },
288 | "node_modules/es-errors": {
289 | "version": "1.3.0",
290 | "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
291 | "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
292 | "license": "MIT",
293 | "engines": {
294 | "node": ">= 0.4"
295 | }
296 | },
297 | "node_modules/es-object-atoms": {
298 | "version": "1.1.1",
299 | "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz",
300 | "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==",
301 | "license": "MIT",
302 | "dependencies": {
303 | "es-errors": "^1.3.0"
304 | },
305 | "engines": {
306 | "node": ">= 0.4"
307 | }
308 | },
309 | "node_modules/escape-html": {
310 | "version": "1.0.3",
311 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
312 | "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==",
313 | "license": "MIT"
314 | },
315 | "node_modules/etag": {
316 | "version": "1.8.1",
317 | "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
318 | "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
319 | "license": "MIT",
320 | "engines": {
321 | "node": ">= 0.6"
322 | }
323 | },
324 | "node_modules/express": {
325 | "version": "5.1.0",
326 | "resolved": "https://registry.npmjs.org/express/-/express-5.1.0.tgz",
327 | "integrity": "sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==",
328 | "license": "MIT",
329 | "dependencies": {
330 | "accepts": "^2.0.0",
331 | "body-parser": "^2.2.0",
332 | "content-disposition": "^1.0.0",
333 | "content-type": "^1.0.5",
334 | "cookie": "^0.7.1",
335 | "cookie-signature": "^1.2.1",
336 | "debug": "^4.4.0",
337 | "encodeurl": "^2.0.0",
338 | "escape-html": "^1.0.3",
339 | "etag": "^1.8.1",
340 | "finalhandler": "^2.1.0",
341 | "fresh": "^2.0.0",
342 | "http-errors": "^2.0.0",
343 | "merge-descriptors": "^2.0.0",
344 | "mime-types": "^3.0.0",
345 | "on-finished": "^2.4.1",
346 | "once": "^1.4.0",
347 | "parseurl": "^1.3.3",
348 | "proxy-addr": "^2.0.7",
349 | "qs": "^6.14.0",
350 | "range-parser": "^1.2.1",
351 | "router": "^2.2.0",
352 | "send": "^1.1.0",
353 | "serve-static": "^2.2.0",
354 | "statuses": "^2.0.1",
355 | "type-is": "^2.0.1",
356 | "vary": "^1.1.2"
357 | },
358 | "engines": {
359 | "node": ">= 18"
360 | },
361 | "funding": {
362 | "type": "opencollective",
363 | "url": "https://opencollective.com/express"
364 | }
365 | },
366 | "node_modules/express-validator": {
367 | "version": "7.2.1",
368 | "resolved": "https://registry.npmjs.org/express-validator/-/express-validator-7.2.1.tgz",
369 | "integrity": "sha512-CjNE6aakfpuwGaHQZ3m8ltCG2Qvivd7RHtVMS/6nVxOM7xVGqr4bhflsm4+N5FP5zI7Zxp+Hae+9RE+o8e3ZOQ==",
370 | "license": "MIT",
371 | "dependencies": {
372 | "lodash": "^4.17.21",
373 | "validator": "~13.12.0"
374 | },
375 | "engines": {
376 | "node": ">= 8.0.0"
377 | }
378 | },
379 | "node_modules/express/node_modules/cookie-signature": {
380 | "version": "1.2.2",
381 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz",
382 | "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==",
383 | "license": "MIT",
384 | "engines": {
385 | "node": ">=6.6.0"
386 | }
387 | },
388 | "node_modules/finalhandler": {
389 | "version": "2.1.0",
390 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.0.tgz",
391 | "integrity": "sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==",
392 | "license": "MIT",
393 | "dependencies": {
394 | "debug": "^4.4.0",
395 | "encodeurl": "^2.0.0",
396 | "escape-html": "^1.0.3",
397 | "on-finished": "^2.4.1",
398 | "parseurl": "^1.3.3",
399 | "statuses": "^2.0.1"
400 | },
401 | "engines": {
402 | "node": ">= 0.8"
403 | }
404 | },
405 | "node_modules/forwarded": {
406 | "version": "0.2.0",
407 | "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
408 | "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
409 | "license": "MIT",
410 | "engines": {
411 | "node": ">= 0.6"
412 | }
413 | },
414 | "node_modules/fresh": {
415 | "version": "2.0.0",
416 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz",
417 | "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==",
418 | "license": "MIT",
419 | "engines": {
420 | "node": ">= 0.8"
421 | }
422 | },
423 | "node_modules/function-bind": {
424 | "version": "1.1.2",
425 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
426 | "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
427 | "license": "MIT",
428 | "funding": {
429 | "url": "https://github.com/sponsors/ljharb"
430 | }
431 | },
432 | "node_modules/get-intrinsic": {
433 | "version": "1.3.0",
434 | "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
435 | "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
436 | "license": "MIT",
437 | "dependencies": {
438 | "call-bind-apply-helpers": "^1.0.2",
439 | "es-define-property": "^1.0.1",
440 | "es-errors": "^1.3.0",
441 | "es-object-atoms": "^1.1.1",
442 | "function-bind": "^1.1.2",
443 | "get-proto": "^1.0.1",
444 | "gopd": "^1.2.0",
445 | "has-symbols": "^1.1.0",
446 | "hasown": "^2.0.2",
447 | "math-intrinsics": "^1.1.0"
448 | },
449 | "engines": {
450 | "node": ">= 0.4"
451 | },
452 | "funding": {
453 | "url": "https://github.com/sponsors/ljharb"
454 | }
455 | },
456 | "node_modules/get-proto": {
457 | "version": "1.0.1",
458 | "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz",
459 | "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
460 | "license": "MIT",
461 | "dependencies": {
462 | "dunder-proto": "^1.0.1",
463 | "es-object-atoms": "^1.0.0"
464 | },
465 | "engines": {
466 | "node": ">= 0.4"
467 | }
468 | },
469 | "node_modules/gopd": {
470 | "version": "1.2.0",
471 | "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
472 | "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
473 | "license": "MIT",
474 | "engines": {
475 | "node": ">= 0.4"
476 | },
477 | "funding": {
478 | "url": "https://github.com/sponsors/ljharb"
479 | }
480 | },
481 | "node_modules/has-symbols": {
482 | "version": "1.1.0",
483 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
484 | "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
485 | "license": "MIT",
486 | "engines": {
487 | "node": ">= 0.4"
488 | },
489 | "funding": {
490 | "url": "https://github.com/sponsors/ljharb"
491 | }
492 | },
493 | "node_modules/hasown": {
494 | "version": "2.0.2",
495 | "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
496 | "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
497 | "license": "MIT",
498 | "dependencies": {
499 | "function-bind": "^1.1.2"
500 | },
501 | "engines": {
502 | "node": ">= 0.4"
503 | }
504 | },
505 | "node_modules/http-errors": {
506 | "version": "2.0.0",
507 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
508 | "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
509 | "license": "MIT",
510 | "dependencies": {
511 | "depd": "2.0.0",
512 | "inherits": "2.0.4",
513 | "setprototypeof": "1.2.0",
514 | "statuses": "2.0.1",
515 | "toidentifier": "1.0.1"
516 | },
517 | "engines": {
518 | "node": ">= 0.8"
519 | }
520 | },
521 | "node_modules/http-errors/node_modules/statuses": {
522 | "version": "2.0.1",
523 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
524 | "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
525 | "license": "MIT",
526 | "engines": {
527 | "node": ">= 0.8"
528 | }
529 | },
530 | "node_modules/iconv-lite": {
531 | "version": "0.6.3",
532 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
533 | "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
534 | "license": "MIT",
535 | "dependencies": {
536 | "safer-buffer": ">= 2.1.2 < 3.0.0"
537 | },
538 | "engines": {
539 | "node": ">=0.10.0"
540 | }
541 | },
542 | "node_modules/inherits": {
543 | "version": "2.0.4",
544 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
545 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
546 | "license": "ISC"
547 | },
548 | "node_modules/ipaddr.js": {
549 | "version": "1.9.1",
550 | "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
551 | "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
552 | "license": "MIT",
553 | "engines": {
554 | "node": ">= 0.10"
555 | }
556 | },
557 | "node_modules/is-promise": {
558 | "version": "4.0.0",
559 | "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz",
560 | "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==",
561 | "license": "MIT"
562 | },
563 | "node_modules/jsonwebtoken": {
564 | "version": "9.0.2",
565 | "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz",
566 | "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==",
567 | "license": "MIT",
568 | "dependencies": {
569 | "jws": "^3.2.2",
570 | "lodash.includes": "^4.3.0",
571 | "lodash.isboolean": "^3.0.3",
572 | "lodash.isinteger": "^4.0.4",
573 | "lodash.isnumber": "^3.0.3",
574 | "lodash.isplainobject": "^4.0.6",
575 | "lodash.isstring": "^4.0.1",
576 | "lodash.once": "^4.0.0",
577 | "ms": "^2.1.1",
578 | "semver": "^7.5.4"
579 | },
580 | "engines": {
581 | "node": ">=12",
582 | "npm": ">=6"
583 | }
584 | },
585 | "node_modules/jwa": {
586 | "version": "1.4.2",
587 | "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.2.tgz",
588 | "integrity": "sha512-eeH5JO+21J78qMvTIDdBXidBd6nG2kZjg5Ohz/1fpa28Z4CcsWUzJ1ZZyFq/3z3N17aZy+ZuBoHljASbL1WfOw==",
589 | "license": "MIT",
590 | "dependencies": {
591 | "buffer-equal-constant-time": "^1.0.1",
592 | "ecdsa-sig-formatter": "1.0.11",
593 | "safe-buffer": "^5.0.1"
594 | }
595 | },
596 | "node_modules/jws": {
597 | "version": "3.2.2",
598 | "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz",
599 | "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==",
600 | "license": "MIT",
601 | "dependencies": {
602 | "jwa": "^1.4.1",
603 | "safe-buffer": "^5.0.1"
604 | }
605 | },
606 | "node_modules/kareem": {
607 | "version": "2.6.3",
608 | "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.6.3.tgz",
609 | "integrity": "sha512-C3iHfuGUXK2u8/ipq9LfjFfXFxAZMQJJq7vLS45r3D9Y2xQ/m4S8zaR4zMLFWh9AsNPXmcFfUDhTEO8UIC/V6Q==",
610 | "license": "Apache-2.0",
611 | "engines": {
612 | "node": ">=12.0.0"
613 | }
614 | },
615 | "node_modules/lodash": {
616 | "version": "4.17.21",
617 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
618 | "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
619 | "license": "MIT"
620 | },
621 | "node_modules/lodash.includes": {
622 | "version": "4.3.0",
623 | "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz",
624 | "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==",
625 | "license": "MIT"
626 | },
627 | "node_modules/lodash.isboolean": {
628 | "version": "3.0.3",
629 | "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz",
630 | "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==",
631 | "license": "MIT"
632 | },
633 | "node_modules/lodash.isinteger": {
634 | "version": "4.0.4",
635 | "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz",
636 | "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==",
637 | "license": "MIT"
638 | },
639 | "node_modules/lodash.isnumber": {
640 | "version": "3.0.3",
641 | "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz",
642 | "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==",
643 | "license": "MIT"
644 | },
645 | "node_modules/lodash.isplainobject": {
646 | "version": "4.0.6",
647 | "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
648 | "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==",
649 | "license": "MIT"
650 | },
651 | "node_modules/lodash.isstring": {
652 | "version": "4.0.1",
653 | "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz",
654 | "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==",
655 | "license": "MIT"
656 | },
657 | "node_modules/lodash.once": {
658 | "version": "4.1.1",
659 | "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz",
660 | "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==",
661 | "license": "MIT"
662 | },
663 | "node_modules/math-intrinsics": {
664 | "version": "1.1.0",
665 | "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
666 | "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
667 | "license": "MIT",
668 | "engines": {
669 | "node": ">= 0.4"
670 | }
671 | },
672 | "node_modules/media-typer": {
673 | "version": "1.1.0",
674 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz",
675 | "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==",
676 | "license": "MIT",
677 | "engines": {
678 | "node": ">= 0.8"
679 | }
680 | },
681 | "node_modules/memory-pager": {
682 | "version": "1.5.0",
683 | "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz",
684 | "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==",
685 | "license": "MIT"
686 | },
687 | "node_modules/merge-descriptors": {
688 | "version": "2.0.0",
689 | "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz",
690 | "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==",
691 | "license": "MIT",
692 | "engines": {
693 | "node": ">=18"
694 | },
695 | "funding": {
696 | "url": "https://github.com/sponsors/sindresorhus"
697 | }
698 | },
699 | "node_modules/mime-db": {
700 | "version": "1.54.0",
701 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz",
702 | "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==",
703 | "license": "MIT",
704 | "engines": {
705 | "node": ">= 0.6"
706 | }
707 | },
708 | "node_modules/mime-types": {
709 | "version": "3.0.1",
710 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz",
711 | "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==",
712 | "license": "MIT",
713 | "dependencies": {
714 | "mime-db": "^1.54.0"
715 | },
716 | "engines": {
717 | "node": ">= 0.6"
718 | }
719 | },
720 | "node_modules/mongodb": {
721 | "version": "6.18.0",
722 | "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.18.0.tgz",
723 | "integrity": "sha512-fO5ttN9VC8P0F5fqtQmclAkgXZxbIkYRTUi1j8JO6IYwvamkhtYDilJr35jOPELR49zqCJgXZWwCtW7B+TM8vQ==",
724 | "license": "Apache-2.0",
725 | "dependencies": {
726 | "@mongodb-js/saslprep": "^1.1.9",
727 | "bson": "^6.10.4",
728 | "mongodb-connection-string-url": "^3.0.0"
729 | },
730 | "engines": {
731 | "node": ">=16.20.1"
732 | },
733 | "peerDependencies": {
734 | "@aws-sdk/credential-providers": "^3.188.0",
735 | "@mongodb-js/zstd": "^1.1.0 || ^2.0.0",
736 | "gcp-metadata": "^5.2.0",
737 | "kerberos": "^2.0.1",
738 | "mongodb-client-encryption": ">=6.0.0 <7",
739 | "snappy": "^7.2.2",
740 | "socks": "^2.7.1"
741 | },
742 | "peerDependenciesMeta": {
743 | "@aws-sdk/credential-providers": {
744 | "optional": true
745 | },
746 | "@mongodb-js/zstd": {
747 | "optional": true
748 | },
749 | "gcp-metadata": {
750 | "optional": true
751 | },
752 | "kerberos": {
753 | "optional": true
754 | },
755 | "mongodb-client-encryption": {
756 | "optional": true
757 | },
758 | "snappy": {
759 | "optional": true
760 | },
761 | "socks": {
762 | "optional": true
763 | }
764 | }
765 | },
766 | "node_modules/mongodb-connection-string-url": {
767 | "version": "3.0.2",
768 | "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-3.0.2.tgz",
769 | "integrity": "sha512-rMO7CGo/9BFwyZABcKAWL8UJwH/Kc2x0g72uhDWzG48URRax5TCIcJ7Rc3RZqffZzO/Gwff/jyKwCU9TN8gehA==",
770 | "license": "Apache-2.0",
771 | "dependencies": {
772 | "@types/whatwg-url": "^11.0.2",
773 | "whatwg-url": "^14.1.0 || ^13.0.0"
774 | }
775 | },
776 | "node_modules/mongoose": {
777 | "version": "8.18.1",
778 | "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-8.18.1.tgz",
779 | "integrity": "sha512-K0RfrUXXufqNRZZjvAGdyjydB91SnbWxlwFYi5t7zN2DxVWFD3c6puia0/7xfBwZm6RCpYOVdYFlRFpoDWiC+w==",
780 | "license": "MIT",
781 | "dependencies": {
782 | "bson": "^6.10.4",
783 | "kareem": "2.6.3",
784 | "mongodb": "~6.18.0",
785 | "mpath": "0.9.0",
786 | "mquery": "5.0.0",
787 | "ms": "2.1.3",
788 | "sift": "17.1.3"
789 | },
790 | "engines": {
791 | "node": ">=16.20.1"
792 | },
793 | "funding": {
794 | "type": "opencollective",
795 | "url": "https://opencollective.com/mongoose"
796 | }
797 | },
798 | "node_modules/mpath": {
799 | "version": "0.9.0",
800 | "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.9.0.tgz",
801 | "integrity": "sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew==",
802 | "license": "MIT",
803 | "engines": {
804 | "node": ">=4.0.0"
805 | }
806 | },
807 | "node_modules/mquery": {
808 | "version": "5.0.0",
809 | "resolved": "https://registry.npmjs.org/mquery/-/mquery-5.0.0.tgz",
810 | "integrity": "sha512-iQMncpmEK8R8ncT8HJGsGc9Dsp8xcgYMVSbs5jgnm1lFHTZqMJTUWTDx1LBO8+mK3tPNZWFLBghQEIOULSTHZg==",
811 | "license": "MIT",
812 | "dependencies": {
813 | "debug": "4.x"
814 | },
815 | "engines": {
816 | "node": ">=14.0.0"
817 | }
818 | },
819 | "node_modules/ms": {
820 | "version": "2.1.3",
821 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
822 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
823 | "license": "MIT"
824 | },
825 | "node_modules/negotiator": {
826 | "version": "1.0.0",
827 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz",
828 | "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==",
829 | "license": "MIT",
830 | "engines": {
831 | "node": ">= 0.6"
832 | }
833 | },
834 | "node_modules/object-assign": {
835 | "version": "4.1.1",
836 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
837 | "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
838 | "license": "MIT",
839 | "engines": {
840 | "node": ">=0.10.0"
841 | }
842 | },
843 | "node_modules/object-inspect": {
844 | "version": "1.13.4",
845 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz",
846 | "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==",
847 | "license": "MIT",
848 | "engines": {
849 | "node": ">= 0.4"
850 | },
851 | "funding": {
852 | "url": "https://github.com/sponsors/ljharb"
853 | }
854 | },
855 | "node_modules/on-finished": {
856 | "version": "2.4.1",
857 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
858 | "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
859 | "license": "MIT",
860 | "dependencies": {
861 | "ee-first": "1.1.1"
862 | },
863 | "engines": {
864 | "node": ">= 0.8"
865 | }
866 | },
867 | "node_modules/once": {
868 | "version": "1.4.0",
869 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
870 | "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
871 | "license": "ISC",
872 | "dependencies": {
873 | "wrappy": "1"
874 | }
875 | },
876 | "node_modules/parseurl": {
877 | "version": "1.3.3",
878 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
879 | "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
880 | "license": "MIT",
881 | "engines": {
882 | "node": ">= 0.8"
883 | }
884 | },
885 | "node_modules/path-to-regexp": {
886 | "version": "8.3.0",
887 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.3.0.tgz",
888 | "integrity": "sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA==",
889 | "license": "MIT",
890 | "funding": {
891 | "type": "opencollective",
892 | "url": "https://opencollective.com/express"
893 | }
894 | },
895 | "node_modules/proxy-addr": {
896 | "version": "2.0.7",
897 | "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
898 | "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
899 | "license": "MIT",
900 | "dependencies": {
901 | "forwarded": "0.2.0",
902 | "ipaddr.js": "1.9.1"
903 | },
904 | "engines": {
905 | "node": ">= 0.10"
906 | }
907 | },
908 | "node_modules/punycode": {
909 | "version": "2.3.1",
910 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
911 | "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
912 | "license": "MIT",
913 | "engines": {
914 | "node": ">=6"
915 | }
916 | },
917 | "node_modules/qs": {
918 | "version": "6.14.0",
919 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz",
920 | "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==",
921 | "license": "BSD-3-Clause",
922 | "dependencies": {
923 | "side-channel": "^1.1.0"
924 | },
925 | "engines": {
926 | "node": ">=0.6"
927 | },
928 | "funding": {
929 | "url": "https://github.com/sponsors/ljharb"
930 | }
931 | },
932 | "node_modules/range-parser": {
933 | "version": "1.2.1",
934 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
935 | "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
936 | "license": "MIT",
937 | "engines": {
938 | "node": ">= 0.6"
939 | }
940 | },
941 | "node_modules/raw-body": {
942 | "version": "3.0.1",
943 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.1.tgz",
944 | "integrity": "sha512-9G8cA+tuMS75+6G/TzW8OtLzmBDMo8p1JRxN5AZ+LAp8uxGA8V8GZm4GQ4/N5QNQEnLmg6SS7wyuSmbKepiKqA==",
945 | "license": "MIT",
946 | "dependencies": {
947 | "bytes": "3.1.2",
948 | "http-errors": "2.0.0",
949 | "iconv-lite": "0.7.0",
950 | "unpipe": "1.0.0"
951 | },
952 | "engines": {
953 | "node": ">= 0.10"
954 | }
955 | },
956 | "node_modules/raw-body/node_modules/iconv-lite": {
957 | "version": "0.7.0",
958 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.0.tgz",
959 | "integrity": "sha512-cf6L2Ds3h57VVmkZe+Pn+5APsT7FpqJtEhhieDCvrE2MK5Qk9MyffgQyuxQTm6BChfeZNtcOLHp9IcWRVcIcBQ==",
960 | "license": "MIT",
961 | "dependencies": {
962 | "safer-buffer": ">= 2.1.2 < 3.0.0"
963 | },
964 | "engines": {
965 | "node": ">=0.10.0"
966 | },
967 | "funding": {
968 | "type": "opencollective",
969 | "url": "https://opencollective.com/express"
970 | }
971 | },
972 | "node_modules/router": {
973 | "version": "2.2.0",
974 | "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz",
975 | "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==",
976 | "license": "MIT",
977 | "dependencies": {
978 | "debug": "^4.4.0",
979 | "depd": "^2.0.0",
980 | "is-promise": "^4.0.0",
981 | "parseurl": "^1.3.3",
982 | "path-to-regexp": "^8.0.0"
983 | },
984 | "engines": {
985 | "node": ">= 18"
986 | }
987 | },
988 | "node_modules/safe-buffer": {
989 | "version": "5.2.1",
990 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
991 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
992 | "funding": [
993 | {
994 | "type": "github",
995 | "url": "https://github.com/sponsors/feross"
996 | },
997 | {
998 | "type": "patreon",
999 | "url": "https://www.patreon.com/feross"
1000 | },
1001 | {
1002 | "type": "consulting",
1003 | "url": "https://feross.org/support"
1004 | }
1005 | ],
1006 | "license": "MIT"
1007 | },
1008 | "node_modules/safer-buffer": {
1009 | "version": "2.1.2",
1010 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
1011 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
1012 | "license": "MIT"
1013 | },
1014 | "node_modules/semver": {
1015 | "version": "7.7.2",
1016 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz",
1017 | "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==",
1018 | "license": "ISC",
1019 | "bin": {
1020 | "semver": "bin/semver.js"
1021 | },
1022 | "engines": {
1023 | "node": ">=10"
1024 | }
1025 | },
1026 | "node_modules/send": {
1027 | "version": "1.2.0",
1028 | "resolved": "https://registry.npmjs.org/send/-/send-1.2.0.tgz",
1029 | "integrity": "sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==",
1030 | "license": "MIT",
1031 | "dependencies": {
1032 | "debug": "^4.3.5",
1033 | "encodeurl": "^2.0.0",
1034 | "escape-html": "^1.0.3",
1035 | "etag": "^1.8.1",
1036 | "fresh": "^2.0.0",
1037 | "http-errors": "^2.0.0",
1038 | "mime-types": "^3.0.1",
1039 | "ms": "^2.1.3",
1040 | "on-finished": "^2.4.1",
1041 | "range-parser": "^1.2.1",
1042 | "statuses": "^2.0.1"
1043 | },
1044 | "engines": {
1045 | "node": ">= 18"
1046 | }
1047 | },
1048 | "node_modules/serve-static": {
1049 | "version": "2.2.0",
1050 | "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.0.tgz",
1051 | "integrity": "sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==",
1052 | "license": "MIT",
1053 | "dependencies": {
1054 | "encodeurl": "^2.0.0",
1055 | "escape-html": "^1.0.3",
1056 | "parseurl": "^1.3.3",
1057 | "send": "^1.2.0"
1058 | },
1059 | "engines": {
1060 | "node": ">= 18"
1061 | }
1062 | },
1063 | "node_modules/setprototypeof": {
1064 | "version": "1.2.0",
1065 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
1066 | "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==",
1067 | "license": "ISC"
1068 | },
1069 | "node_modules/side-channel": {
1070 | "version": "1.1.0",
1071 | "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz",
1072 | "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==",
1073 | "license": "MIT",
1074 | "dependencies": {
1075 | "es-errors": "^1.3.0",
1076 | "object-inspect": "^1.13.3",
1077 | "side-channel-list": "^1.0.0",
1078 | "side-channel-map": "^1.0.1",
1079 | "side-channel-weakmap": "^1.0.2"
1080 | },
1081 | "engines": {
1082 | "node": ">= 0.4"
1083 | },
1084 | "funding": {
1085 | "url": "https://github.com/sponsors/ljharb"
1086 | }
1087 | },
1088 | "node_modules/side-channel-list": {
1089 | "version": "1.0.0",
1090 | "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz",
1091 | "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==",
1092 | "license": "MIT",
1093 | "dependencies": {
1094 | "es-errors": "^1.3.0",
1095 | "object-inspect": "^1.13.3"
1096 | },
1097 | "engines": {
1098 | "node": ">= 0.4"
1099 | },
1100 | "funding": {
1101 | "url": "https://github.com/sponsors/ljharb"
1102 | }
1103 | },
1104 | "node_modules/side-channel-map": {
1105 | "version": "1.0.1",
1106 | "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz",
1107 | "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==",
1108 | "license": "MIT",
1109 | "dependencies": {
1110 | "call-bound": "^1.0.2",
1111 | "es-errors": "^1.3.0",
1112 | "get-intrinsic": "^1.2.5",
1113 | "object-inspect": "^1.13.3"
1114 | },
1115 | "engines": {
1116 | "node": ">= 0.4"
1117 | },
1118 | "funding": {
1119 | "url": "https://github.com/sponsors/ljharb"
1120 | }
1121 | },
1122 | "node_modules/side-channel-weakmap": {
1123 | "version": "1.0.2",
1124 | "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz",
1125 | "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==",
1126 | "license": "MIT",
1127 | "dependencies": {
1128 | "call-bound": "^1.0.2",
1129 | "es-errors": "^1.3.0",
1130 | "get-intrinsic": "^1.2.5",
1131 | "object-inspect": "^1.13.3",
1132 | "side-channel-map": "^1.0.1"
1133 | },
1134 | "engines": {
1135 | "node": ">= 0.4"
1136 | },
1137 | "funding": {
1138 | "url": "https://github.com/sponsors/ljharb"
1139 | }
1140 | },
1141 | "node_modules/sift": {
1142 | "version": "17.1.3",
1143 | "resolved": "https://registry.npmjs.org/sift/-/sift-17.1.3.tgz",
1144 | "integrity": "sha512-Rtlj66/b0ICeFzYTuNvX/EF1igRbbnGSvEyT79McoZa/DeGhMyC5pWKOEsZKnpkqtSeovd5FL/bjHWC3CIIvCQ==",
1145 | "license": "MIT"
1146 | },
1147 | "node_modules/sparse-bitfield": {
1148 | "version": "3.0.3",
1149 | "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz",
1150 | "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==",
1151 | "license": "MIT",
1152 | "dependencies": {
1153 | "memory-pager": "^1.0.2"
1154 | }
1155 | },
1156 | "node_modules/statuses": {
1157 | "version": "2.0.2",
1158 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz",
1159 | "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==",
1160 | "license": "MIT",
1161 | "engines": {
1162 | "node": ">= 0.8"
1163 | }
1164 | },
1165 | "node_modules/toidentifier": {
1166 | "version": "1.0.1",
1167 | "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
1168 | "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
1169 | "license": "MIT",
1170 | "engines": {
1171 | "node": ">=0.6"
1172 | }
1173 | },
1174 | "node_modules/tr46": {
1175 | "version": "5.1.1",
1176 | "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.1.1.tgz",
1177 | "integrity": "sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==",
1178 | "license": "MIT",
1179 | "dependencies": {
1180 | "punycode": "^2.3.1"
1181 | },
1182 | "engines": {
1183 | "node": ">=18"
1184 | }
1185 | },
1186 | "node_modules/type-is": {
1187 | "version": "2.0.1",
1188 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz",
1189 | "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==",
1190 | "license": "MIT",
1191 | "dependencies": {
1192 | "content-type": "^1.0.5",
1193 | "media-typer": "^1.1.0",
1194 | "mime-types": "^3.0.0"
1195 | },
1196 | "engines": {
1197 | "node": ">= 0.6"
1198 | }
1199 | },
1200 | "node_modules/unpipe": {
1201 | "version": "1.0.0",
1202 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
1203 | "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
1204 | "license": "MIT",
1205 | "engines": {
1206 | "node": ">= 0.8"
1207 | }
1208 | },
1209 | "node_modules/validator": {
1210 | "version": "13.12.0",
1211 | "resolved": "https://registry.npmjs.org/validator/-/validator-13.12.0.tgz",
1212 | "integrity": "sha512-c1Q0mCiPlgdTVVVIJIrBuxNicYE+t/7oKeI9MWLj3fh/uq2Pxh/3eeWbVZ4OcGW1TUf53At0njHw5SMdA3tmMg==",
1213 | "license": "MIT",
1214 | "engines": {
1215 | "node": ">= 0.10"
1216 | }
1217 | },
1218 | "node_modules/vary": {
1219 | "version": "1.1.2",
1220 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
1221 | "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
1222 | "license": "MIT",
1223 | "engines": {
1224 | "node": ">= 0.8"
1225 | }
1226 | },
1227 | "node_modules/webidl-conversions": {
1228 | "version": "7.0.0",
1229 | "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz",
1230 | "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==",
1231 | "license": "BSD-2-Clause",
1232 | "engines": {
1233 | "node": ">=12"
1234 | }
1235 | },
1236 | "node_modules/whatwg-url": {
1237 | "version": "14.2.0",
1238 | "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.2.0.tgz",
1239 | "integrity": "sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==",
1240 | "license": "MIT",
1241 | "dependencies": {
1242 | "tr46": "^5.1.0",
1243 | "webidl-conversions": "^7.0.0"
1244 | },
1245 | "engines": {
1246 | "node": ">=18"
1247 | }
1248 | },
1249 | "node_modules/wrappy": {
1250 | "version": "1.0.2",
1251 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
1252 | "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
1253 | "license": "ISC"
1254 | }
1255 | }
1256 | }
1257 |
--------------------------------------------------------------------------------
/02_mongodb_mongoose _relaciones/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "01_mongodb_mongoose",
3 | "version": "1.0.0",
4 | "lockfileVersion": 3,
5 | "requires": true,
6 | "packages": {
7 | "": {
8 | "name": "01_mongodb_mongoose",
9 | "version": "1.0.0",
10 | "license": "ISC",
11 | "dependencies": {
12 | "bcryptjs": "^3.0.2",
13 | "cookie-parser": "^1.4.7",
14 | "cors": "^2.8.5",
15 | "dotenv": "^17.2.2",
16 | "express": "^5.1.0",
17 | "express-validator": "^7.2.1",
18 | "jsonwebtoken": "^9.0.2",
19 | "mongoose": "^8.18.1"
20 | }
21 | },
22 | "node_modules/@mongodb-js/saslprep": {
23 | "version": "1.3.0",
24 | "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.3.0.tgz",
25 | "integrity": "sha512-zlayKCsIjYb7/IdfqxorK5+xUMyi4vOKcFy10wKJYc63NSdKI8mNME+uJqfatkPmOSMMUiojrL58IePKBm3gvQ==",
26 | "license": "MIT",
27 | "dependencies": {
28 | "sparse-bitfield": "^3.0.3"
29 | }
30 | },
31 | "node_modules/@types/webidl-conversions": {
32 | "version": "7.0.3",
33 | "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.3.tgz",
34 | "integrity": "sha512-CiJJvcRtIgzadHCYXw7dqEnMNRjhGZlYK05Mj9OyktqV8uVT8fD2BFOB7S1uwBE3Kj2Z+4UyPmFw/Ixgw/LAlA==",
35 | "license": "MIT"
36 | },
37 | "node_modules/@types/whatwg-url": {
38 | "version": "11.0.5",
39 | "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-11.0.5.tgz",
40 | "integrity": "sha512-coYR071JRaHa+xoEvvYqvnIHaVqaYrLPbsufM9BF63HkwI5Lgmy2QR8Q5K/lYDYo5AK82wOvSOS0UsLTpTG7uQ==",
41 | "license": "MIT",
42 | "dependencies": {
43 | "@types/webidl-conversions": "*"
44 | }
45 | },
46 | "node_modules/accepts": {
47 | "version": "2.0.0",
48 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz",
49 | "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==",
50 | "license": "MIT",
51 | "dependencies": {
52 | "mime-types": "^3.0.0",
53 | "negotiator": "^1.0.0"
54 | },
55 | "engines": {
56 | "node": ">= 0.6"
57 | }
58 | },
59 | "node_modules/bcryptjs": {
60 | "version": "3.0.2",
61 | "resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-3.0.2.tgz",
62 | "integrity": "sha512-k38b3XOZKv60C4E2hVsXTolJWfkGRMbILBIe2IBITXciy5bOsTKot5kDrf3ZfufQtQOUN5mXceUEpU1rTl9Uog==",
63 | "license": "BSD-3-Clause",
64 | "bin": {
65 | "bcrypt": "bin/bcrypt"
66 | }
67 | },
68 | "node_modules/body-parser": {
69 | "version": "2.2.0",
70 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.0.tgz",
71 | "integrity": "sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==",
72 | "license": "MIT",
73 | "dependencies": {
74 | "bytes": "^3.1.2",
75 | "content-type": "^1.0.5",
76 | "debug": "^4.4.0",
77 | "http-errors": "^2.0.0",
78 | "iconv-lite": "^0.6.3",
79 | "on-finished": "^2.4.1",
80 | "qs": "^6.14.0",
81 | "raw-body": "^3.0.0",
82 | "type-is": "^2.0.0"
83 | },
84 | "engines": {
85 | "node": ">=18"
86 | }
87 | },
88 | "node_modules/bson": {
89 | "version": "6.10.4",
90 | "resolved": "https://registry.npmjs.org/bson/-/bson-6.10.4.tgz",
91 | "integrity": "sha512-WIsKqkSC0ABoBJuT1LEX+2HEvNmNKKgnTAyd0fL8qzK4SH2i9NXg+t08YtdZp/V9IZ33cxe3iV4yM0qg8lMQng==",
92 | "license": "Apache-2.0",
93 | "engines": {
94 | "node": ">=16.20.1"
95 | }
96 | },
97 | "node_modules/buffer-equal-constant-time": {
98 | "version": "1.0.1",
99 | "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz",
100 | "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==",
101 | "license": "BSD-3-Clause"
102 | },
103 | "node_modules/bytes": {
104 | "version": "3.1.2",
105 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
106 | "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
107 | "license": "MIT",
108 | "engines": {
109 | "node": ">= 0.8"
110 | }
111 | },
112 | "node_modules/call-bind-apply-helpers": {
113 | "version": "1.0.2",
114 | "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
115 | "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
116 | "license": "MIT",
117 | "dependencies": {
118 | "es-errors": "^1.3.0",
119 | "function-bind": "^1.1.2"
120 | },
121 | "engines": {
122 | "node": ">= 0.4"
123 | }
124 | },
125 | "node_modules/call-bound": {
126 | "version": "1.0.4",
127 | "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz",
128 | "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==",
129 | "license": "MIT",
130 | "dependencies": {
131 | "call-bind-apply-helpers": "^1.0.2",
132 | "get-intrinsic": "^1.3.0"
133 | },
134 | "engines": {
135 | "node": ">= 0.4"
136 | },
137 | "funding": {
138 | "url": "https://github.com/sponsors/ljharb"
139 | }
140 | },
141 | "node_modules/content-disposition": {
142 | "version": "1.0.0",
143 | "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.0.tgz",
144 | "integrity": "sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==",
145 | "license": "MIT",
146 | "dependencies": {
147 | "safe-buffer": "5.2.1"
148 | },
149 | "engines": {
150 | "node": ">= 0.6"
151 | }
152 | },
153 | "node_modules/content-type": {
154 | "version": "1.0.5",
155 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
156 | "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
157 | "license": "MIT",
158 | "engines": {
159 | "node": ">= 0.6"
160 | }
161 | },
162 | "node_modules/cookie": {
163 | "version": "0.7.2",
164 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz",
165 | "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==",
166 | "license": "MIT",
167 | "engines": {
168 | "node": ">= 0.6"
169 | }
170 | },
171 | "node_modules/cookie-parser": {
172 | "version": "1.4.7",
173 | "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.7.tgz",
174 | "integrity": "sha512-nGUvgXnotP3BsjiLX2ypbQnWoGUPIIfHQNZkkC668ntrzGWEZVW70HDEB1qnNGMicPje6EttlIgzo51YSwNQGw==",
175 | "license": "MIT",
176 | "dependencies": {
177 | "cookie": "0.7.2",
178 | "cookie-signature": "1.0.6"
179 | },
180 | "engines": {
181 | "node": ">= 0.8.0"
182 | }
183 | },
184 | "node_modules/cookie-signature": {
185 | "version": "1.0.6",
186 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
187 | "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==",
188 | "license": "MIT"
189 | },
190 | "node_modules/cors": {
191 | "version": "2.8.5",
192 | "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz",
193 | "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==",
194 | "license": "MIT",
195 | "dependencies": {
196 | "object-assign": "^4",
197 | "vary": "^1"
198 | },
199 | "engines": {
200 | "node": ">= 0.10"
201 | }
202 | },
203 | "node_modules/debug": {
204 | "version": "4.4.1",
205 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz",
206 | "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==",
207 | "license": "MIT",
208 | "dependencies": {
209 | "ms": "^2.1.3"
210 | },
211 | "engines": {
212 | "node": ">=6.0"
213 | },
214 | "peerDependenciesMeta": {
215 | "supports-color": {
216 | "optional": true
217 | }
218 | }
219 | },
220 | "node_modules/depd": {
221 | "version": "2.0.0",
222 | "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
223 | "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
224 | "license": "MIT",
225 | "engines": {
226 | "node": ">= 0.8"
227 | }
228 | },
229 | "node_modules/dotenv": {
230 | "version": "17.2.2",
231 | "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.2.2.tgz",
232 | "integrity": "sha512-Sf2LSQP+bOlhKWWyhFsn0UsfdK/kCWRv1iuA2gXAwt3dyNabr6QSj00I2V10pidqz69soatm9ZwZvpQMTIOd5Q==",
233 | "license": "BSD-2-Clause",
234 | "engines": {
235 | "node": ">=12"
236 | },
237 | "funding": {
238 | "url": "https://dotenvx.com"
239 | }
240 | },
241 | "node_modules/dunder-proto": {
242 | "version": "1.0.1",
243 | "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
244 | "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
245 | "license": "MIT",
246 | "dependencies": {
247 | "call-bind-apply-helpers": "^1.0.1",
248 | "es-errors": "^1.3.0",
249 | "gopd": "^1.2.0"
250 | },
251 | "engines": {
252 | "node": ">= 0.4"
253 | }
254 | },
255 | "node_modules/ecdsa-sig-formatter": {
256 | "version": "1.0.11",
257 | "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz",
258 | "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==",
259 | "license": "Apache-2.0",
260 | "dependencies": {
261 | "safe-buffer": "^5.0.1"
262 | }
263 | },
264 | "node_modules/ee-first": {
265 | "version": "1.1.1",
266 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
267 | "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==",
268 | "license": "MIT"
269 | },
270 | "node_modules/encodeurl": {
271 | "version": "2.0.0",
272 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz",
273 | "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==",
274 | "license": "MIT",
275 | "engines": {
276 | "node": ">= 0.8"
277 | }
278 | },
279 | "node_modules/es-define-property": {
280 | "version": "1.0.1",
281 | "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
282 | "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
283 | "license": "MIT",
284 | "engines": {
285 | "node": ">= 0.4"
286 | }
287 | },
288 | "node_modules/es-errors": {
289 | "version": "1.3.0",
290 | "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
291 | "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
292 | "license": "MIT",
293 | "engines": {
294 | "node": ">= 0.4"
295 | }
296 | },
297 | "node_modules/es-object-atoms": {
298 | "version": "1.1.1",
299 | "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz",
300 | "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==",
301 | "license": "MIT",
302 | "dependencies": {
303 | "es-errors": "^1.3.0"
304 | },
305 | "engines": {
306 | "node": ">= 0.4"
307 | }
308 | },
309 | "node_modules/escape-html": {
310 | "version": "1.0.3",
311 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
312 | "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==",
313 | "license": "MIT"
314 | },
315 | "node_modules/etag": {
316 | "version": "1.8.1",
317 | "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
318 | "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
319 | "license": "MIT",
320 | "engines": {
321 | "node": ">= 0.6"
322 | }
323 | },
324 | "node_modules/express": {
325 | "version": "5.1.0",
326 | "resolved": "https://registry.npmjs.org/express/-/express-5.1.0.tgz",
327 | "integrity": "sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==",
328 | "license": "MIT",
329 | "dependencies": {
330 | "accepts": "^2.0.0",
331 | "body-parser": "^2.2.0",
332 | "content-disposition": "^1.0.0",
333 | "content-type": "^1.0.5",
334 | "cookie": "^0.7.1",
335 | "cookie-signature": "^1.2.1",
336 | "debug": "^4.4.0",
337 | "encodeurl": "^2.0.0",
338 | "escape-html": "^1.0.3",
339 | "etag": "^1.8.1",
340 | "finalhandler": "^2.1.0",
341 | "fresh": "^2.0.0",
342 | "http-errors": "^2.0.0",
343 | "merge-descriptors": "^2.0.0",
344 | "mime-types": "^3.0.0",
345 | "on-finished": "^2.4.1",
346 | "once": "^1.4.0",
347 | "parseurl": "^1.3.3",
348 | "proxy-addr": "^2.0.7",
349 | "qs": "^6.14.0",
350 | "range-parser": "^1.2.1",
351 | "router": "^2.2.0",
352 | "send": "^1.1.0",
353 | "serve-static": "^2.2.0",
354 | "statuses": "^2.0.1",
355 | "type-is": "^2.0.1",
356 | "vary": "^1.1.2"
357 | },
358 | "engines": {
359 | "node": ">= 18"
360 | },
361 | "funding": {
362 | "type": "opencollective",
363 | "url": "https://opencollective.com/express"
364 | }
365 | },
366 | "node_modules/express-validator": {
367 | "version": "7.2.1",
368 | "resolved": "https://registry.npmjs.org/express-validator/-/express-validator-7.2.1.tgz",
369 | "integrity": "sha512-CjNE6aakfpuwGaHQZ3m8ltCG2Qvivd7RHtVMS/6nVxOM7xVGqr4bhflsm4+N5FP5zI7Zxp+Hae+9RE+o8e3ZOQ==",
370 | "license": "MIT",
371 | "dependencies": {
372 | "lodash": "^4.17.21",
373 | "validator": "~13.12.0"
374 | },
375 | "engines": {
376 | "node": ">= 8.0.0"
377 | }
378 | },
379 | "node_modules/express/node_modules/cookie-signature": {
380 | "version": "1.2.2",
381 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz",
382 | "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==",
383 | "license": "MIT",
384 | "engines": {
385 | "node": ">=6.6.0"
386 | }
387 | },
388 | "node_modules/finalhandler": {
389 | "version": "2.1.0",
390 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.0.tgz",
391 | "integrity": "sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==",
392 | "license": "MIT",
393 | "dependencies": {
394 | "debug": "^4.4.0",
395 | "encodeurl": "^2.0.0",
396 | "escape-html": "^1.0.3",
397 | "on-finished": "^2.4.1",
398 | "parseurl": "^1.3.3",
399 | "statuses": "^2.0.1"
400 | },
401 | "engines": {
402 | "node": ">= 0.8"
403 | }
404 | },
405 | "node_modules/forwarded": {
406 | "version": "0.2.0",
407 | "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
408 | "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
409 | "license": "MIT",
410 | "engines": {
411 | "node": ">= 0.6"
412 | }
413 | },
414 | "node_modules/fresh": {
415 | "version": "2.0.0",
416 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz",
417 | "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==",
418 | "license": "MIT",
419 | "engines": {
420 | "node": ">= 0.8"
421 | }
422 | },
423 | "node_modules/function-bind": {
424 | "version": "1.1.2",
425 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
426 | "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
427 | "license": "MIT",
428 | "funding": {
429 | "url": "https://github.com/sponsors/ljharb"
430 | }
431 | },
432 | "node_modules/get-intrinsic": {
433 | "version": "1.3.0",
434 | "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
435 | "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
436 | "license": "MIT",
437 | "dependencies": {
438 | "call-bind-apply-helpers": "^1.0.2",
439 | "es-define-property": "^1.0.1",
440 | "es-errors": "^1.3.0",
441 | "es-object-atoms": "^1.1.1",
442 | "function-bind": "^1.1.2",
443 | "get-proto": "^1.0.1",
444 | "gopd": "^1.2.0",
445 | "has-symbols": "^1.1.0",
446 | "hasown": "^2.0.2",
447 | "math-intrinsics": "^1.1.0"
448 | },
449 | "engines": {
450 | "node": ">= 0.4"
451 | },
452 | "funding": {
453 | "url": "https://github.com/sponsors/ljharb"
454 | }
455 | },
456 | "node_modules/get-proto": {
457 | "version": "1.0.1",
458 | "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz",
459 | "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
460 | "license": "MIT",
461 | "dependencies": {
462 | "dunder-proto": "^1.0.1",
463 | "es-object-atoms": "^1.0.0"
464 | },
465 | "engines": {
466 | "node": ">= 0.4"
467 | }
468 | },
469 | "node_modules/gopd": {
470 | "version": "1.2.0",
471 | "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
472 | "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
473 | "license": "MIT",
474 | "engines": {
475 | "node": ">= 0.4"
476 | },
477 | "funding": {
478 | "url": "https://github.com/sponsors/ljharb"
479 | }
480 | },
481 | "node_modules/has-symbols": {
482 | "version": "1.1.0",
483 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
484 | "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
485 | "license": "MIT",
486 | "engines": {
487 | "node": ">= 0.4"
488 | },
489 | "funding": {
490 | "url": "https://github.com/sponsors/ljharb"
491 | }
492 | },
493 | "node_modules/hasown": {
494 | "version": "2.0.2",
495 | "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
496 | "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
497 | "license": "MIT",
498 | "dependencies": {
499 | "function-bind": "^1.1.2"
500 | },
501 | "engines": {
502 | "node": ">= 0.4"
503 | }
504 | },
505 | "node_modules/http-errors": {
506 | "version": "2.0.0",
507 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
508 | "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
509 | "license": "MIT",
510 | "dependencies": {
511 | "depd": "2.0.0",
512 | "inherits": "2.0.4",
513 | "setprototypeof": "1.2.0",
514 | "statuses": "2.0.1",
515 | "toidentifier": "1.0.1"
516 | },
517 | "engines": {
518 | "node": ">= 0.8"
519 | }
520 | },
521 | "node_modules/http-errors/node_modules/statuses": {
522 | "version": "2.0.1",
523 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
524 | "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
525 | "license": "MIT",
526 | "engines": {
527 | "node": ">= 0.8"
528 | }
529 | },
530 | "node_modules/iconv-lite": {
531 | "version": "0.6.3",
532 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
533 | "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
534 | "license": "MIT",
535 | "dependencies": {
536 | "safer-buffer": ">= 2.1.2 < 3.0.0"
537 | },
538 | "engines": {
539 | "node": ">=0.10.0"
540 | }
541 | },
542 | "node_modules/inherits": {
543 | "version": "2.0.4",
544 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
545 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
546 | "license": "ISC"
547 | },
548 | "node_modules/ipaddr.js": {
549 | "version": "1.9.1",
550 | "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
551 | "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
552 | "license": "MIT",
553 | "engines": {
554 | "node": ">= 0.10"
555 | }
556 | },
557 | "node_modules/is-promise": {
558 | "version": "4.0.0",
559 | "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz",
560 | "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==",
561 | "license": "MIT"
562 | },
563 | "node_modules/jsonwebtoken": {
564 | "version": "9.0.2",
565 | "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz",
566 | "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==",
567 | "license": "MIT",
568 | "dependencies": {
569 | "jws": "^3.2.2",
570 | "lodash.includes": "^4.3.0",
571 | "lodash.isboolean": "^3.0.3",
572 | "lodash.isinteger": "^4.0.4",
573 | "lodash.isnumber": "^3.0.3",
574 | "lodash.isplainobject": "^4.0.6",
575 | "lodash.isstring": "^4.0.1",
576 | "lodash.once": "^4.0.0",
577 | "ms": "^2.1.1",
578 | "semver": "^7.5.4"
579 | },
580 | "engines": {
581 | "node": ">=12",
582 | "npm": ">=6"
583 | }
584 | },
585 | "node_modules/jwa": {
586 | "version": "1.4.2",
587 | "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.2.tgz",
588 | "integrity": "sha512-eeH5JO+21J78qMvTIDdBXidBd6nG2kZjg5Ohz/1fpa28Z4CcsWUzJ1ZZyFq/3z3N17aZy+ZuBoHljASbL1WfOw==",
589 | "license": "MIT",
590 | "dependencies": {
591 | "buffer-equal-constant-time": "^1.0.1",
592 | "ecdsa-sig-formatter": "1.0.11",
593 | "safe-buffer": "^5.0.1"
594 | }
595 | },
596 | "node_modules/jws": {
597 | "version": "3.2.2",
598 | "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz",
599 | "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==",
600 | "license": "MIT",
601 | "dependencies": {
602 | "jwa": "^1.4.1",
603 | "safe-buffer": "^5.0.1"
604 | }
605 | },
606 | "node_modules/kareem": {
607 | "version": "2.6.3",
608 | "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.6.3.tgz",
609 | "integrity": "sha512-C3iHfuGUXK2u8/ipq9LfjFfXFxAZMQJJq7vLS45r3D9Y2xQ/m4S8zaR4zMLFWh9AsNPXmcFfUDhTEO8UIC/V6Q==",
610 | "license": "Apache-2.0",
611 | "engines": {
612 | "node": ">=12.0.0"
613 | }
614 | },
615 | "node_modules/lodash": {
616 | "version": "4.17.21",
617 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
618 | "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
619 | "license": "MIT"
620 | },
621 | "node_modules/lodash.includes": {
622 | "version": "4.3.0",
623 | "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz",
624 | "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==",
625 | "license": "MIT"
626 | },
627 | "node_modules/lodash.isboolean": {
628 | "version": "3.0.3",
629 | "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz",
630 | "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==",
631 | "license": "MIT"
632 | },
633 | "node_modules/lodash.isinteger": {
634 | "version": "4.0.4",
635 | "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz",
636 | "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==",
637 | "license": "MIT"
638 | },
639 | "node_modules/lodash.isnumber": {
640 | "version": "3.0.3",
641 | "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz",
642 | "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==",
643 | "license": "MIT"
644 | },
645 | "node_modules/lodash.isplainobject": {
646 | "version": "4.0.6",
647 | "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
648 | "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==",
649 | "license": "MIT"
650 | },
651 | "node_modules/lodash.isstring": {
652 | "version": "4.0.1",
653 | "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz",
654 | "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==",
655 | "license": "MIT"
656 | },
657 | "node_modules/lodash.once": {
658 | "version": "4.1.1",
659 | "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz",
660 | "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==",
661 | "license": "MIT"
662 | },
663 | "node_modules/math-intrinsics": {
664 | "version": "1.1.0",
665 | "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
666 | "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
667 | "license": "MIT",
668 | "engines": {
669 | "node": ">= 0.4"
670 | }
671 | },
672 | "node_modules/media-typer": {
673 | "version": "1.1.0",
674 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz",
675 | "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==",
676 | "license": "MIT",
677 | "engines": {
678 | "node": ">= 0.8"
679 | }
680 | },
681 | "node_modules/memory-pager": {
682 | "version": "1.5.0",
683 | "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz",
684 | "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==",
685 | "license": "MIT"
686 | },
687 | "node_modules/merge-descriptors": {
688 | "version": "2.0.0",
689 | "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz",
690 | "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==",
691 | "license": "MIT",
692 | "engines": {
693 | "node": ">=18"
694 | },
695 | "funding": {
696 | "url": "https://github.com/sponsors/sindresorhus"
697 | }
698 | },
699 | "node_modules/mime-db": {
700 | "version": "1.54.0",
701 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz",
702 | "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==",
703 | "license": "MIT",
704 | "engines": {
705 | "node": ">= 0.6"
706 | }
707 | },
708 | "node_modules/mime-types": {
709 | "version": "3.0.1",
710 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz",
711 | "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==",
712 | "license": "MIT",
713 | "dependencies": {
714 | "mime-db": "^1.54.0"
715 | },
716 | "engines": {
717 | "node": ">= 0.6"
718 | }
719 | },
720 | "node_modules/mongodb": {
721 | "version": "6.18.0",
722 | "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.18.0.tgz",
723 | "integrity": "sha512-fO5ttN9VC8P0F5fqtQmclAkgXZxbIkYRTUi1j8JO6IYwvamkhtYDilJr35jOPELR49zqCJgXZWwCtW7B+TM8vQ==",
724 | "license": "Apache-2.0",
725 | "dependencies": {
726 | "@mongodb-js/saslprep": "^1.1.9",
727 | "bson": "^6.10.4",
728 | "mongodb-connection-string-url": "^3.0.0"
729 | },
730 | "engines": {
731 | "node": ">=16.20.1"
732 | },
733 | "peerDependencies": {
734 | "@aws-sdk/credential-providers": "^3.188.0",
735 | "@mongodb-js/zstd": "^1.1.0 || ^2.0.0",
736 | "gcp-metadata": "^5.2.0",
737 | "kerberos": "^2.0.1",
738 | "mongodb-client-encryption": ">=6.0.0 <7",
739 | "snappy": "^7.2.2",
740 | "socks": "^2.7.1"
741 | },
742 | "peerDependenciesMeta": {
743 | "@aws-sdk/credential-providers": {
744 | "optional": true
745 | },
746 | "@mongodb-js/zstd": {
747 | "optional": true
748 | },
749 | "gcp-metadata": {
750 | "optional": true
751 | },
752 | "kerberos": {
753 | "optional": true
754 | },
755 | "mongodb-client-encryption": {
756 | "optional": true
757 | },
758 | "snappy": {
759 | "optional": true
760 | },
761 | "socks": {
762 | "optional": true
763 | }
764 | }
765 | },
766 | "node_modules/mongodb-connection-string-url": {
767 | "version": "3.0.2",
768 | "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-3.0.2.tgz",
769 | "integrity": "sha512-rMO7CGo/9BFwyZABcKAWL8UJwH/Kc2x0g72uhDWzG48URRax5TCIcJ7Rc3RZqffZzO/Gwff/jyKwCU9TN8gehA==",
770 | "license": "Apache-2.0",
771 | "dependencies": {
772 | "@types/whatwg-url": "^11.0.2",
773 | "whatwg-url": "^14.1.0 || ^13.0.0"
774 | }
775 | },
776 | "node_modules/mongoose": {
777 | "version": "8.18.1",
778 | "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-8.18.1.tgz",
779 | "integrity": "sha512-K0RfrUXXufqNRZZjvAGdyjydB91SnbWxlwFYi5t7zN2DxVWFD3c6puia0/7xfBwZm6RCpYOVdYFlRFpoDWiC+w==",
780 | "license": "MIT",
781 | "dependencies": {
782 | "bson": "^6.10.4",
783 | "kareem": "2.6.3",
784 | "mongodb": "~6.18.0",
785 | "mpath": "0.9.0",
786 | "mquery": "5.0.0",
787 | "ms": "2.1.3",
788 | "sift": "17.1.3"
789 | },
790 | "engines": {
791 | "node": ">=16.20.1"
792 | },
793 | "funding": {
794 | "type": "opencollective",
795 | "url": "https://opencollective.com/mongoose"
796 | }
797 | },
798 | "node_modules/mpath": {
799 | "version": "0.9.0",
800 | "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.9.0.tgz",
801 | "integrity": "sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew==",
802 | "license": "MIT",
803 | "engines": {
804 | "node": ">=4.0.0"
805 | }
806 | },
807 | "node_modules/mquery": {
808 | "version": "5.0.0",
809 | "resolved": "https://registry.npmjs.org/mquery/-/mquery-5.0.0.tgz",
810 | "integrity": "sha512-iQMncpmEK8R8ncT8HJGsGc9Dsp8xcgYMVSbs5jgnm1lFHTZqMJTUWTDx1LBO8+mK3tPNZWFLBghQEIOULSTHZg==",
811 | "license": "MIT",
812 | "dependencies": {
813 | "debug": "4.x"
814 | },
815 | "engines": {
816 | "node": ">=14.0.0"
817 | }
818 | },
819 | "node_modules/ms": {
820 | "version": "2.1.3",
821 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
822 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
823 | "license": "MIT"
824 | },
825 | "node_modules/negotiator": {
826 | "version": "1.0.0",
827 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz",
828 | "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==",
829 | "license": "MIT",
830 | "engines": {
831 | "node": ">= 0.6"
832 | }
833 | },
834 | "node_modules/object-assign": {
835 | "version": "4.1.1",
836 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
837 | "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
838 | "license": "MIT",
839 | "engines": {
840 | "node": ">=0.10.0"
841 | }
842 | },
843 | "node_modules/object-inspect": {
844 | "version": "1.13.4",
845 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz",
846 | "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==",
847 | "license": "MIT",
848 | "engines": {
849 | "node": ">= 0.4"
850 | },
851 | "funding": {
852 | "url": "https://github.com/sponsors/ljharb"
853 | }
854 | },
855 | "node_modules/on-finished": {
856 | "version": "2.4.1",
857 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
858 | "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
859 | "license": "MIT",
860 | "dependencies": {
861 | "ee-first": "1.1.1"
862 | },
863 | "engines": {
864 | "node": ">= 0.8"
865 | }
866 | },
867 | "node_modules/once": {
868 | "version": "1.4.0",
869 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
870 | "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
871 | "license": "ISC",
872 | "dependencies": {
873 | "wrappy": "1"
874 | }
875 | },
876 | "node_modules/parseurl": {
877 | "version": "1.3.3",
878 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
879 | "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
880 | "license": "MIT",
881 | "engines": {
882 | "node": ">= 0.8"
883 | }
884 | },
885 | "node_modules/path-to-regexp": {
886 | "version": "8.3.0",
887 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.3.0.tgz",
888 | "integrity": "sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA==",
889 | "license": "MIT",
890 | "funding": {
891 | "type": "opencollective",
892 | "url": "https://opencollective.com/express"
893 | }
894 | },
895 | "node_modules/proxy-addr": {
896 | "version": "2.0.7",
897 | "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
898 | "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
899 | "license": "MIT",
900 | "dependencies": {
901 | "forwarded": "0.2.0",
902 | "ipaddr.js": "1.9.1"
903 | },
904 | "engines": {
905 | "node": ">= 0.10"
906 | }
907 | },
908 | "node_modules/punycode": {
909 | "version": "2.3.1",
910 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
911 | "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
912 | "license": "MIT",
913 | "engines": {
914 | "node": ">=6"
915 | }
916 | },
917 | "node_modules/qs": {
918 | "version": "6.14.0",
919 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz",
920 | "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==",
921 | "license": "BSD-3-Clause",
922 | "dependencies": {
923 | "side-channel": "^1.1.0"
924 | },
925 | "engines": {
926 | "node": ">=0.6"
927 | },
928 | "funding": {
929 | "url": "https://github.com/sponsors/ljharb"
930 | }
931 | },
932 | "node_modules/range-parser": {
933 | "version": "1.2.1",
934 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
935 | "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
936 | "license": "MIT",
937 | "engines": {
938 | "node": ">= 0.6"
939 | }
940 | },
941 | "node_modules/raw-body": {
942 | "version": "3.0.1",
943 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.1.tgz",
944 | "integrity": "sha512-9G8cA+tuMS75+6G/TzW8OtLzmBDMo8p1JRxN5AZ+LAp8uxGA8V8GZm4GQ4/N5QNQEnLmg6SS7wyuSmbKepiKqA==",
945 | "license": "MIT",
946 | "dependencies": {
947 | "bytes": "3.1.2",
948 | "http-errors": "2.0.0",
949 | "iconv-lite": "0.7.0",
950 | "unpipe": "1.0.0"
951 | },
952 | "engines": {
953 | "node": ">= 0.10"
954 | }
955 | },
956 | "node_modules/raw-body/node_modules/iconv-lite": {
957 | "version": "0.7.0",
958 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.0.tgz",
959 | "integrity": "sha512-cf6L2Ds3h57VVmkZe+Pn+5APsT7FpqJtEhhieDCvrE2MK5Qk9MyffgQyuxQTm6BChfeZNtcOLHp9IcWRVcIcBQ==",
960 | "license": "MIT",
961 | "dependencies": {
962 | "safer-buffer": ">= 2.1.2 < 3.0.0"
963 | },
964 | "engines": {
965 | "node": ">=0.10.0"
966 | },
967 | "funding": {
968 | "type": "opencollective",
969 | "url": "https://opencollective.com/express"
970 | }
971 | },
972 | "node_modules/router": {
973 | "version": "2.2.0",
974 | "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz",
975 | "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==",
976 | "license": "MIT",
977 | "dependencies": {
978 | "debug": "^4.4.0",
979 | "depd": "^2.0.0",
980 | "is-promise": "^4.0.0",
981 | "parseurl": "^1.3.3",
982 | "path-to-regexp": "^8.0.0"
983 | },
984 | "engines": {
985 | "node": ">= 18"
986 | }
987 | },
988 | "node_modules/safe-buffer": {
989 | "version": "5.2.1",
990 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
991 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
992 | "funding": [
993 | {
994 | "type": "github",
995 | "url": "https://github.com/sponsors/feross"
996 | },
997 | {
998 | "type": "patreon",
999 | "url": "https://www.patreon.com/feross"
1000 | },
1001 | {
1002 | "type": "consulting",
1003 | "url": "https://feross.org/support"
1004 | }
1005 | ],
1006 | "license": "MIT"
1007 | },
1008 | "node_modules/safer-buffer": {
1009 | "version": "2.1.2",
1010 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
1011 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
1012 | "license": "MIT"
1013 | },
1014 | "node_modules/semver": {
1015 | "version": "7.7.2",
1016 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz",
1017 | "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==",
1018 | "license": "ISC",
1019 | "bin": {
1020 | "semver": "bin/semver.js"
1021 | },
1022 | "engines": {
1023 | "node": ">=10"
1024 | }
1025 | },
1026 | "node_modules/send": {
1027 | "version": "1.2.0",
1028 | "resolved": "https://registry.npmjs.org/send/-/send-1.2.0.tgz",
1029 | "integrity": "sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==",
1030 | "license": "MIT",
1031 | "dependencies": {
1032 | "debug": "^4.3.5",
1033 | "encodeurl": "^2.0.0",
1034 | "escape-html": "^1.0.3",
1035 | "etag": "^1.8.1",
1036 | "fresh": "^2.0.0",
1037 | "http-errors": "^2.0.0",
1038 | "mime-types": "^3.0.1",
1039 | "ms": "^2.1.3",
1040 | "on-finished": "^2.4.1",
1041 | "range-parser": "^1.2.1",
1042 | "statuses": "^2.0.1"
1043 | },
1044 | "engines": {
1045 | "node": ">= 18"
1046 | }
1047 | },
1048 | "node_modules/serve-static": {
1049 | "version": "2.2.0",
1050 | "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.0.tgz",
1051 | "integrity": "sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==",
1052 | "license": "MIT",
1053 | "dependencies": {
1054 | "encodeurl": "^2.0.0",
1055 | "escape-html": "^1.0.3",
1056 | "parseurl": "^1.3.3",
1057 | "send": "^1.2.0"
1058 | },
1059 | "engines": {
1060 | "node": ">= 18"
1061 | }
1062 | },
1063 | "node_modules/setprototypeof": {
1064 | "version": "1.2.0",
1065 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
1066 | "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==",
1067 | "license": "ISC"
1068 | },
1069 | "node_modules/side-channel": {
1070 | "version": "1.1.0",
1071 | "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz",
1072 | "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==",
1073 | "license": "MIT",
1074 | "dependencies": {
1075 | "es-errors": "^1.3.0",
1076 | "object-inspect": "^1.13.3",
1077 | "side-channel-list": "^1.0.0",
1078 | "side-channel-map": "^1.0.1",
1079 | "side-channel-weakmap": "^1.0.2"
1080 | },
1081 | "engines": {
1082 | "node": ">= 0.4"
1083 | },
1084 | "funding": {
1085 | "url": "https://github.com/sponsors/ljharb"
1086 | }
1087 | },
1088 | "node_modules/side-channel-list": {
1089 | "version": "1.0.0",
1090 | "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz",
1091 | "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==",
1092 | "license": "MIT",
1093 | "dependencies": {
1094 | "es-errors": "^1.3.0",
1095 | "object-inspect": "^1.13.3"
1096 | },
1097 | "engines": {
1098 | "node": ">= 0.4"
1099 | },
1100 | "funding": {
1101 | "url": "https://github.com/sponsors/ljharb"
1102 | }
1103 | },
1104 | "node_modules/side-channel-map": {
1105 | "version": "1.0.1",
1106 | "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz",
1107 | "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==",
1108 | "license": "MIT",
1109 | "dependencies": {
1110 | "call-bound": "^1.0.2",
1111 | "es-errors": "^1.3.0",
1112 | "get-intrinsic": "^1.2.5",
1113 | "object-inspect": "^1.13.3"
1114 | },
1115 | "engines": {
1116 | "node": ">= 0.4"
1117 | },
1118 | "funding": {
1119 | "url": "https://github.com/sponsors/ljharb"
1120 | }
1121 | },
1122 | "node_modules/side-channel-weakmap": {
1123 | "version": "1.0.2",
1124 | "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz",
1125 | "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==",
1126 | "license": "MIT",
1127 | "dependencies": {
1128 | "call-bound": "^1.0.2",
1129 | "es-errors": "^1.3.0",
1130 | "get-intrinsic": "^1.2.5",
1131 | "object-inspect": "^1.13.3",
1132 | "side-channel-map": "^1.0.1"
1133 | },
1134 | "engines": {
1135 | "node": ">= 0.4"
1136 | },
1137 | "funding": {
1138 | "url": "https://github.com/sponsors/ljharb"
1139 | }
1140 | },
1141 | "node_modules/sift": {
1142 | "version": "17.1.3",
1143 | "resolved": "https://registry.npmjs.org/sift/-/sift-17.1.3.tgz",
1144 | "integrity": "sha512-Rtlj66/b0ICeFzYTuNvX/EF1igRbbnGSvEyT79McoZa/DeGhMyC5pWKOEsZKnpkqtSeovd5FL/bjHWC3CIIvCQ==",
1145 | "license": "MIT"
1146 | },
1147 | "node_modules/sparse-bitfield": {
1148 | "version": "3.0.3",
1149 | "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz",
1150 | "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==",
1151 | "license": "MIT",
1152 | "dependencies": {
1153 | "memory-pager": "^1.0.2"
1154 | }
1155 | },
1156 | "node_modules/statuses": {
1157 | "version": "2.0.2",
1158 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz",
1159 | "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==",
1160 | "license": "MIT",
1161 | "engines": {
1162 | "node": ">= 0.8"
1163 | }
1164 | },
1165 | "node_modules/toidentifier": {
1166 | "version": "1.0.1",
1167 | "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
1168 | "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
1169 | "license": "MIT",
1170 | "engines": {
1171 | "node": ">=0.6"
1172 | }
1173 | },
1174 | "node_modules/tr46": {
1175 | "version": "5.1.1",
1176 | "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.1.1.tgz",
1177 | "integrity": "sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==",
1178 | "license": "MIT",
1179 | "dependencies": {
1180 | "punycode": "^2.3.1"
1181 | },
1182 | "engines": {
1183 | "node": ">=18"
1184 | }
1185 | },
1186 | "node_modules/type-is": {
1187 | "version": "2.0.1",
1188 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz",
1189 | "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==",
1190 | "license": "MIT",
1191 | "dependencies": {
1192 | "content-type": "^1.0.5",
1193 | "media-typer": "^1.1.0",
1194 | "mime-types": "^3.0.0"
1195 | },
1196 | "engines": {
1197 | "node": ">= 0.6"
1198 | }
1199 | },
1200 | "node_modules/unpipe": {
1201 | "version": "1.0.0",
1202 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
1203 | "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
1204 | "license": "MIT",
1205 | "engines": {
1206 | "node": ">= 0.8"
1207 | }
1208 | },
1209 | "node_modules/validator": {
1210 | "version": "13.12.0",
1211 | "resolved": "https://registry.npmjs.org/validator/-/validator-13.12.0.tgz",
1212 | "integrity": "sha512-c1Q0mCiPlgdTVVVIJIrBuxNicYE+t/7oKeI9MWLj3fh/uq2Pxh/3eeWbVZ4OcGW1TUf53At0njHw5SMdA3tmMg==",
1213 | "license": "MIT",
1214 | "engines": {
1215 | "node": ">= 0.10"
1216 | }
1217 | },
1218 | "node_modules/vary": {
1219 | "version": "1.1.2",
1220 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
1221 | "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
1222 | "license": "MIT",
1223 | "engines": {
1224 | "node": ">= 0.8"
1225 | }
1226 | },
1227 | "node_modules/webidl-conversions": {
1228 | "version": "7.0.0",
1229 | "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz",
1230 | "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==",
1231 | "license": "BSD-2-Clause",
1232 | "engines": {
1233 | "node": ">=12"
1234 | }
1235 | },
1236 | "node_modules/whatwg-url": {
1237 | "version": "14.2.0",
1238 | "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.2.0.tgz",
1239 | "integrity": "sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==",
1240 | "license": "MIT",
1241 | "dependencies": {
1242 | "tr46": "^5.1.0",
1243 | "webidl-conversions": "^7.0.0"
1244 | },
1245 | "engines": {
1246 | "node": ">=18"
1247 | }
1248 | },
1249 | "node_modules/wrappy": {
1250 | "version": "1.0.2",
1251 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
1252 | "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
1253 | "license": "ISC"
1254 | }
1255 | }
1256 | }
1257 |
--------------------------------------------------------------------------------