+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/LaboratorioIV/JavaScript/Leccion03/e-commerce2022/client/js/cart.js b/LaboratorioIV/JavaScript/Leccion03/e-commerce2022/client/js/cart.js
new file mode 100644
index 0000000..e355660
--- /dev/null
+++ b/LaboratorioIV/JavaScript/Leccion03/e-commerce2022/client/js/cart.js
@@ -0,0 +1,90 @@
+const modalContainer = document.getElementById("modal-container");
+const modalOverlay = document.getElementById("modal-overlay");
+
+const cartBtn = document.getElementById("cart-btn");
+
+const displayCart = ()=>{
+ modalContainer.innerHTML = "";
+ modalContainer.style.display = "block";
+ modalOverlay.style.display = "block";
+ //modal header
+ const modalHeader = document.createElement("div");
+
+ const modalClose = document.createElement("div");
+ modalClose.innerText ="❌";
+ modalClose.className = "modal-close";
+ modalHeader.append(modalClose);
+
+ modalClose.addEventListener("click",() => {
+ modalContainer.style.display = "none";
+ modalOverlay.style.display = "none";
+ });
+
+ const modalTitle = document.createElement("div");
+ modalTitle.innerText = "Cart";
+ modalTitle.className = "modal-title";
+ modalHeader.append(modalTitle);
+
+ modalContainer.append(modalHeader);
+
+ //modal Body
+ cart.forEach((product) => {
+ const modalBody = document.createElement("div");
+ modalBody.className = "modal-body";
+ modalBody.innerHTML = `
+
+ `;
+ modalContainer.append(modalBody);
+
+ const decrease = modalBody.querySelector(".quantity-btn-decrease");
+ decrease.addEventListener("click", () => {
+ if(product.quantity !== 1){
+ product.quantity --;
+ displayCart();
+ }
+ })
+
+ const increase = modalBody.querySelector(".quantity-btn-increase");
+ increase.addEventListener("click", () => {
+ product.quantity ++;
+ displayCart();
+ });
+
+ //delete
+ const deleteProduct = modalBody.querySelector(".delete-product");
+
+ deleteProduct.addEventListener("click",()=>{
+ deleteCartProduct(product.id);
+ });
+ });
+
+ //modal footter
+ const total = cart.reduce((acc, el) => acc + el.price * el.quantity, 0);
+
+ const modalFooter = document.createElement("div");
+ modalFooter.className = "modal-footer";
+ modalFooter.innerHTML = `
+
+ `;
+ modalContainer.append(modalFooter);
+};
+
+
+cartBtn.addEventListener("click", displayCart);
+
+const deleteCartProduct =(id)=>{
+ const foundId = cart.findIndex((element)=> element.id === id);
+ console.log(foundId);
+};
\ No newline at end of file
diff --git a/LaboratorioIV/JavaScript/Leccion03/e-commerce2022/client/js/index.js b/LaboratorioIV/JavaScript/Leccion03/e-commerce2022/client/js/index.js
new file mode 100644
index 0000000..ded0c47
--- /dev/null
+++ b/LaboratorioIV/JavaScript/Leccion03/e-commerce2022/client/js/index.js
@@ -0,0 +1,38 @@
+const shopContent = document.getElementById("shopContent");
+const cart = []; //Este es nuestro carrito, un array vacío
+
+productos.forEach((product) =>{
+ const content = document.createElement("div");
+ content.innerHTML = `
+
+ `;
+ shopContent.append(content);
+
+ const buyButton = document.createElement("button");
+ buyButton.innerText = "Comprar";
+
+ content.append(buyButton);
+
+ buyButton.addEventListener("click", () => {
+ const repeat = cart.some((repeatProduct)=> repeatProduct.id === product.id );
+
+ if(repeat){
+ cart.map((prod)=> {
+ if(prod.id === product.id) {
+ prod.quantity++;
+ }
+ });
+ }else{
+ cart.push({
+ id: product.id,
+ productName: product.productName,
+ price: product.price,
+ quantity: product.quantity,
+ img: product.img,
+ });
+ }
+
+ });
+});
\ No newline at end of file
diff --git a/LaboratorioIV/JavaScript/Leccion03/e-commerce2022/client/js/products.js b/LaboratorioIV/JavaScript/Leccion03/e-commerce2022/client/js/products.js
new file mode 100644
index 0000000..2208dd6
--- /dev/null
+++ b/LaboratorioIV/JavaScript/Leccion03/e-commerce2022/client/js/products.js
@@ -0,0 +1,38 @@
+const productos = [
+ {
+ id: 1,
+ productName: "Banana",
+ price: 480,
+ quantity: 1,
+ img: "./media/banana.jpeg"
+ },
+ {
+ id: 2,
+ productName: "Enlatados",
+ price: 980,
+ quantity: 1,
+ img: "./media/enlatados.jpeg"
+ },
+ {
+ id: 3,
+ productName: "Leche",
+ price: 500,
+ quantity: 1,
+ img: "./media/leche.jpeg"
+ },
+ {
+ id: 4,
+ productName: "Mayonesa",
+ price: 850,
+ quantity: 1,
+ img:"./media/mayonesa.jpeg"
+
+ },
+ {
+ id: 5,
+ productName: "Pollo",
+ price: 2400,
+ quantity: 1,
+ img:"media/pollo.jpeg"
+ },
+];
\ No newline at end of file
diff --git a/LaboratorioIV/JavaScript/Leccion03/e-commerce2022/client/media/banana.jpeg b/LaboratorioIV/JavaScript/Leccion03/e-commerce2022/client/media/banana.jpeg
new file mode 100644
index 0000000..3119264
Binary files /dev/null and b/LaboratorioIV/JavaScript/Leccion03/e-commerce2022/client/media/banana.jpeg differ
diff --git a/LaboratorioIV/JavaScript/Leccion03/e-commerce2022/client/media/enlatados.jpeg b/LaboratorioIV/JavaScript/Leccion03/e-commerce2022/client/media/enlatados.jpeg
new file mode 100644
index 0000000..ec0c088
Binary files /dev/null and b/LaboratorioIV/JavaScript/Leccion03/e-commerce2022/client/media/enlatados.jpeg differ
diff --git a/LaboratorioIV/JavaScript/Leccion03/e-commerce2022/client/media/leche.jpeg b/LaboratorioIV/JavaScript/Leccion03/e-commerce2022/client/media/leche.jpeg
new file mode 100644
index 0000000..c0b6ebc
Binary files /dev/null and b/LaboratorioIV/JavaScript/Leccion03/e-commerce2022/client/media/leche.jpeg differ
diff --git a/LaboratorioIV/JavaScript/Leccion03/e-commerce2022/client/media/mayonesa.jpeg b/LaboratorioIV/JavaScript/Leccion03/e-commerce2022/client/media/mayonesa.jpeg
new file mode 100644
index 0000000..bed82e3
Binary files /dev/null and b/LaboratorioIV/JavaScript/Leccion03/e-commerce2022/client/media/mayonesa.jpeg differ
diff --git a/LaboratorioIV/JavaScript/Leccion03/e-commerce2022/client/media/pollo.jpeg b/LaboratorioIV/JavaScript/Leccion03/e-commerce2022/client/media/pollo.jpeg
new file mode 100644
index 0000000..0760391
Binary files /dev/null and b/LaboratorioIV/JavaScript/Leccion03/e-commerce2022/client/media/pollo.jpeg differ
diff --git a/LaboratorioIV/JavaScript/Leccion03/e-commerce2022/client/styles.css b/LaboratorioIV/JavaScript/Leccion03/e-commerce2022/client/styles.css
new file mode 100644
index 0000000..f012719
--- /dev/null
+++ b/LaboratorioIV/JavaScript/Leccion03/e-commerce2022/client/styles.css
@@ -0,0 +1,186 @@
+/*products styles*/
+
+.card-products-container {
+ margin: 5vh auto;
+}
+
+.card-products {
+ text-align: center;
+ display: flex;
+ flex-direction: row;
+ justify-content: space-around;
+ flex-wrap: wrap;
+}
+
+.card-products img {
+ margin-top: 40px;
+ width: 250px;
+ height: 250px;
+}
+
+.card-products button {
+ border: none;
+ outline: 0;
+ padding: 10px;
+ color: white;
+ background-color: #1bcb7f;
+ text-align: center;
+ cursor: pointer;
+ width: 100%;
+ font-size: 15px;
+}
+
+.card-products button:hover {
+ opacity: 0.7;
+}
+
+/*card button*/
+.cart-btn {
+ position: fixed;
+ top: 90vh;
+ right: 40px;
+ background-color: black;
+ padding: 10px;
+ border-radius: 50%;
+ height: 24px;
+ width: 24px;
+ transition: transform 0.2s ease-in-out;
+}
+
+.cart-btn:hover {
+ cursor: pointer;
+ opacity: 0.9;
+}
+
+/*modal*/
+.modal-overlay {
+ display: none;
+ background-color: rgba(0, 0, 0, 0.5);
+ position: fixed;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ z-index: 1;
+}
+
+.modal-container {
+ display: none;
+ background-color: #ffffff;
+ box-shadow: 0px 3px 6px #00000029;
+ padding: 40px;
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ transform: translate(-50%, -50%);
+ max-width: 500px;
+ width: 100%;
+ z-index: 1;
+ max-height: 80vh;
+ overflow-y: auto;
+}
+
+.modal-container::-webkit-scrollbar {
+ display: none;
+}
+
+.modal-close{
+ float: right;
+ cursor: pointer;
+}
+
+/*modal-title*/
+.modal-title {
+ font-size: 24px;
+ font-weight: bold;
+ margin-bottom: 20px;
+ text-align: center;
+}
+
+/*modal-body*/
+.modal-body {
+ margin-bottom: 20px;
+ text-align: center;
+}
+
+.product {
+ display: flex;
+ align-items: center;
+ justify-content: space-around;
+ margin-bottom: 20px;
+}
+
+.product-img {
+ height: 80px;
+ margin-right: 20px;
+ width: 80px;
+}
+
+.product-info {
+ flex: 1;
+ text-align: left;
+}
+
+.product-info h4 {
+ margin-top: 35px;
+}
+
+.quantity {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ margin-bottom: 10px;
+ margin-right: 4em;
+}
+
+.quantity-btn-decrease,
+.quantity-btn-increase {
+ color: #333333;
+ align-items: center;
+ cursor: pointer;
+ font-size: 16px;
+ width: 28px;
+ font-weight: bold;
+}
+
+.quantity-input {
+ color: #333333;
+ font-size: 16px;
+ padding: 10 10px;
+ text-align: center;
+ width: 50px;
+ font-weight: bold;
+}
+
+@media only screen and (max-width: 500px) {
+ .product-img {
+ display: none;
+ }
+ .modal-body {
+ margin-left: 5px;
+ margin-right: 5px;
+ }
+}
+
+.price {
+ font-size: 20px;
+ font-weight: bold;
+ margin-top: 20px;
+}
+
+.delete-product {
+ margin-top: 20px;
+ margin-left: 2em;
+ cursor: pointer;
+}
+
+.modal-footer {
+ text-align: center;
+}
+
+.total-price {
+ font-size: 20px;
+ font-weight: bold;
+ margin-top: 20px;
+ margin-bottom: 10px;
+}
\ No newline at end of file
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nopt/.npmignore b/LaboratorioIV/JavaScript/Leccion03/readme.txt
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nopt/.npmignore
rename to LaboratorioIV/JavaScript/Leccion03/readme.txt
diff --git a/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/.vscode/settings.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/.vscode/settings.json
new file mode 100644
index 0000000..6f3a291
--- /dev/null
+++ b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/.vscode/settings.json
@@ -0,0 +1,3 @@
+{
+ "liveServer.settings.port": 5501
+}
\ No newline at end of file
diff --git a/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/client/index.html b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/client/index.html
new file mode 100644
index 0000000..146a552
--- /dev/null
+++ b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/client/index.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
🛒
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/client/js/cart.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/client/js/cart.js
new file mode 100644
index 0000000..a354b43
--- /dev/null
+++ b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/client/js/cart.js
@@ -0,0 +1,170 @@
+const modalContainer = document.getElementById("modal-container");
+const modalOverlay = document.getElementById("modal-overlay");
+
+const cartBtn = document.getElementById("cart-btn");
+
+const displayCart = ()=>{
+ modalContainer.innerHTML = "";
+ modalContainer.style.display = "block";
+ modalOverlay.style.display = "block";
+ //modal header
+ const modalHeader = document.createElement("div");
+
+ const modalClose = document.createElement("div");
+ modalClose.innerText ="❌";
+ modalClose.className = "modal-close";
+ modalHeader.append(modalClose);
+
+ modalClose.addEventListener("click",() => {
+ modalContainer.style.display = "none";
+ modalOverlay.style.display = "none";
+ });
+
+ const modalTitle = document.createElement("div");
+ modalTitle.innerText = "Cart";
+ modalTitle.className = "modal-title";
+ modalHeader.append(modalTitle);
+
+ modalContainer.append(modalHeader);
+
+ //modal Body
+ if (cart.length > 0) {
+ cart.forEach((product) => {
+ const modalBody = document.createElement("div");
+ modalBody.className = "modal-body";
+ modalBody.innerHTML = `
+
+
+
+
${product.productName}
+
+
+ -
+ ${product.quantity}
+ +
+
+
${product.price * product.quantity} $
+
❌
+
+ `;
+ modalContainer.append(modalBody);
+
+ const decrease = modalBody.querySelector(".quantity-btn-decrease");
+ decrease.addEventListener("click", () => {
+ if(product.quantity !== 1){
+ product.quantity --;
+ displayCart();
+ displayCartCounter();
+ }
+ });
+
+ const increase = modalBody.querySelector(".quantity-btn-increase");
+ increase.addEventListener("click", () => {
+ product.quantity ++;
+ displayCart();
+ displayCartCounter();
+ });
+
+ //delete
+ const deleteProduct = modalBody.querySelector(".delete-product");
+ deleteProduct.addEventListener("click",()=>{
+ deleteCartProduct(product.id);
+ });
+ });
+
+ //modal footter
+ const total = cart.reduce((acc, el) => acc + el.price * el.quantity, 0);
+
+ const modalFooter = document.createElement("div");
+ modalFooter.className = "modal-footer";
+ modalFooter.innerHTML = `
+
Total:${total}
+
go to checkout
+
+ `;
+ modalContainer.append(modalFooter);
+
+ //mp
+ const mercadopago = new MercadoPago ("TEST-568e2a49-e9fd-4243-901b-06f5f59f2f95", {
+ locale: "es-AR", //Los mas comunes son: 'pt-BR','es-AR','en-US'
+ });
+
+ const checkoutButton = modalFooter.querySelector("#checkout-btn");
+
+ checkoutButton.addEventListener("click",function () {
+ checkoutButton.remove();
+
+ const orderData = {
+ quantity: 1,
+ description: "Compra de ecommerce",
+ price: total,
+ };
+
+ fetch("http://localhost:8080/create_preference",{
+ method: "POST",
+ headers: {
+ "Content-Type":"application/json",
+ },
+ body: JSON.stringify(orderData),
+ })
+ .then(function (response) {
+ return response.json();
+ })
+ .then(function (preference) {
+ createCheckoutButton(preference.id);
+ })
+ .catch(function() {
+ alert("Unexpected error");
+ });
+ });
+
+ function createCheckoutButton(preferenceId){
+ //Initialize the checkout
+ const bricksBuilder = mercadopago.bricks();
+
+ const renderComponent = async(bricksBuilder) => {
+ //if (window.checkoutButton) checkoutButton.unmount();
+
+ await bricksBuilder.create(
+ "wallet",
+ "button-checkout", //class/id where the payment button will be displayed
+ {
+ initialization: {
+ preferenceId: preferenceId,
+ },
+ callbacks:{
+ onError: (error) => console.error(error),
+ onReady: () => {},
+ },
+ }
+ );
+ };
+ window.checkoutButton = renderComponent(bricksBuilder);
+ }
+
+ } else {
+ const modalText = document.createElement("h2");
+ modalText.className = "modal-body";
+ modalText.innerText = "your cart is empty";
+ modalContainer.append(modalText);
+ }
+};
+
+cartBtn.addEventListener("click", displayCart);
+
+const deleteCartProduct =(id)=>{
+ const foundId = cart.findIndex((element)=> element.id === id);
+ cart.splice(foundId, 1);
+ displayCart();
+ displayCartCounter();
+};
+
+const displayCartCounter = () => {
+ const cartLenght = cart.reduce( (acc, el) => acc + el.quantity, 0);
+ if(cartLenght > 0){
+ cartCounter.style.display = "block";
+ cartCounter.innerText = cartLenght;
+ }else{
+ cartCounter.style.display = "none";
+ }
+};
diff --git a/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/client/js/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/client/js/index.js
new file mode 100644
index 0000000..2e8777f
--- /dev/null
+++ b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/client/js/index.js
@@ -0,0 +1,39 @@
+const shopContent = document.getElementById("shopContent");
+const cart = []; //Este es nuestro carrito, un array vacío
+
+productos.forEach((product) =>{
+ const content = document.createElement("div");
+ content.innerHTML = `
+
+
${product.productName}
+
$ ${product.price}
+ `;
+ shopContent.append(content);
+
+ const buyButton = document.createElement("button");
+ buyButton.innerText = "Comprar";
+
+ content.append(buyButton);
+
+ buyButton.addEventListener("click", () => {
+ const repeat = cart.some((repeatProduct)=> repeatProduct.id === product.id );
+
+ if(repeat){
+ cart.map((prod)=> {
+ if(prod.id === product.id) {
+ prod.quantity++;
+ displayCartCounter();
+ }
+ });
+ } else {
+ cart.push({
+ id: product.id,
+ productName: product.productName,
+ price: product.price,
+ quantity: product.quantity,
+ img: product.img,
+ });
+ displayCartCounter();
+ }
+ });
+});
\ No newline at end of file
diff --git a/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/client/js/products.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/client/js/products.js
new file mode 100644
index 0000000..2208dd6
--- /dev/null
+++ b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/client/js/products.js
@@ -0,0 +1,38 @@
+const productos = [
+ {
+ id: 1,
+ productName: "Banana",
+ price: 480,
+ quantity: 1,
+ img: "./media/banana.jpeg"
+ },
+ {
+ id: 2,
+ productName: "Enlatados",
+ price: 980,
+ quantity: 1,
+ img: "./media/enlatados.jpeg"
+ },
+ {
+ id: 3,
+ productName: "Leche",
+ price: 500,
+ quantity: 1,
+ img: "./media/leche.jpeg"
+ },
+ {
+ id: 4,
+ productName: "Mayonesa",
+ price: 850,
+ quantity: 1,
+ img:"./media/mayonesa.jpeg"
+
+ },
+ {
+ id: 5,
+ productName: "Pollo",
+ price: 2400,
+ quantity: 1,
+ img:"media/pollo.jpeg"
+ },
+];
\ No newline at end of file
diff --git a/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/client/media/banana.jpeg b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/client/media/banana.jpeg
new file mode 100644
index 0000000..3119264
Binary files /dev/null and b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/client/media/banana.jpeg differ
diff --git a/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/client/media/enlatados.jpeg b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/client/media/enlatados.jpeg
new file mode 100644
index 0000000..ec0c088
Binary files /dev/null and b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/client/media/enlatados.jpeg differ
diff --git a/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/client/media/leche.jpeg b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/client/media/leche.jpeg
new file mode 100644
index 0000000..c0b6ebc
Binary files /dev/null and b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/client/media/leche.jpeg differ
diff --git a/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/client/media/mayonesa.jpeg b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/client/media/mayonesa.jpeg
new file mode 100644
index 0000000..bed82e3
Binary files /dev/null and b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/client/media/mayonesa.jpeg differ
diff --git a/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/client/media/pollo.jpeg b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/client/media/pollo.jpeg
new file mode 100644
index 0000000..0760391
Binary files /dev/null and b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/client/media/pollo.jpeg differ
diff --git a/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/client/styles.css b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/client/styles.css
new file mode 100644
index 0000000..b3e7b0a
--- /dev/null
+++ b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/client/styles.css
@@ -0,0 +1,208 @@
+/*products styles*/
+
+.card-products-container {
+ margin: 5vh auto;
+}
+
+.card-products {
+ text-align: center;
+ display: flex;
+ flex-direction: row;
+ justify-content: space-around;
+ flex-wrap: wrap;
+}
+
+.card-products img {
+ margin-top: 40px;
+ width: 250px;
+ height: 250px;
+}
+
+.card-products button {
+ border: none;
+ outline: 0;
+ padding: 10px;
+ color: white;
+ background-color: #1bcb7f;
+ text-align: center;
+ cursor: pointer;
+ width: 100%;
+ font-size: 15px;
+}
+
+.card-products button:hover {
+ opacity: 0.7;
+}
+
+/*card button*/
+.cart-btn {
+ position: fixed;
+ top: 90vh;
+ right: 40px;
+ background-color: black;
+ padding: 10px;
+ border-radius: 50%;
+ height: 24px;
+ width: 24px;
+ transition: transform 0.2s ease-in-out;
+}
+
+.cart-btn:hover {
+ cursor: pointer;
+ opacity: 0.9;
+}
+
+/*modal*/
+.modal-overlay {
+ display: none;
+ background-color: rgba(0, 0, 0, 0.5);
+ position: fixed;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ z-index: 1;
+}
+
+.modal-container {
+ display: none;
+ background-color: #ffffff;
+ box-shadow: 0px 3px 6px #00000029;
+ padding: 40px;
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ transform: translate(-50%, -50%);
+ max-width: 500px;
+ width: 100%;
+ z-index: 1;
+ max-height: 80vh;
+ overflow-y: auto;
+}
+
+.modal-container::-webkit-scrollbar {
+ display: none;
+}
+
+.modal-close{
+ float: right;
+ cursor: pointer;
+}
+
+/*modal-title*/
+.modal-title {
+ font-size: 24px;
+ font-weight: bold;
+ margin-bottom: 20px;
+ text-align: center;
+}
+
+/*modal-body*/
+.modal-body {
+ margin-bottom: 20px;
+ text-align: center;
+}
+
+.product {
+ display: flex;
+ align-items: center;
+ justify-content: space-around;
+ margin-bottom: 20px;
+}
+
+.product-img {
+ height: 80px;
+ margin-right: 20px;
+ width: 80px;
+}
+
+.product-info {
+ flex: 1;
+ text-align: left;
+}
+
+.product-info h4 {
+ margin-top: 35px;
+}
+
+.quantity {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ margin-bottom: 10px;
+ margin-right: 4em;
+}
+
+.quantity-btn-decrease,
+.quantity-btn-increase {
+ color: #333333;
+ align-items: center;
+ cursor: pointer;
+ font-size: 16px;
+ width: 28px;
+ font-weight: bold;
+}
+
+.quantity-input {
+ color: #333333;
+ font-size: 16px;
+ padding: 10 10px;
+ text-align: center;
+ width: 50px;
+ font-weight: bold;
+}
+
+@media only screen and (max-width: 500px) {
+ .product-img {
+ display: none;
+ }
+ .modal-body {
+ margin-left: 5px;
+ margin-right: 5px;
+ }
+}
+
+.price {
+ font-size: 20px;
+ font-weight: bold;
+ margin-top: 20px;
+}
+
+.delete-product {
+ margin-top: 20px;
+ margin-left: 2em;
+ cursor: pointer;
+}
+
+.modal-footer {
+ text-align: center;
+}
+
+.total-price {
+ font-size: 20px;
+ font-weight: bold;
+ margin-top: 20px;
+ margin-bottom: 10px;
+}
+
+.btn-primary {
+ background-color: #007bff;
+ border-color: #007bff;
+ color: #ffffff;
+ font-size: 14px;
+ font-weight: bold;
+ padding: 10px 16px;
+ text-transform: uppercase;
+ transition: background-color 0.3s ease;
+ cursor: pointer;
+}
+
+.btn-primary:hover{
+ background-color: #0069d9;
+ border-color: #0062cc;
+}
+
+#button-checkout{
+ z-index: 10,
+}
+
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/.bin/mime b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/.bin/mime
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/.bin/mime
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/.bin/mime
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/.bin/mime.cmd b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/.bin/mime.cmd
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/.bin/mime.cmd
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/.bin/mime.cmd
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/.bin/mime.ps1 b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/.bin/mime.ps1
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/.bin/mime.ps1
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/.bin/mime.ps1
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/.bin/nodemon b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/.bin/nodemon
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/.bin/nodemon
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/.bin/nodemon
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/.bin/nodemon.cmd b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/.bin/nodemon.cmd
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/.bin/nodemon.cmd
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/.bin/nodemon.cmd
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/.bin/nodemon.ps1 b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/.bin/nodemon.ps1
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/.bin/nodemon.ps1
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/.bin/nodemon.ps1
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/.bin/nodetouch b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/.bin/nodetouch
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/.bin/nodetouch
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/.bin/nodetouch
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/.bin/nodetouch.cmd b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/.bin/nodetouch.cmd
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/.bin/nodetouch.cmd
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/.bin/nodetouch.cmd
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/.bin/nodetouch.ps1 b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/.bin/nodetouch.ps1
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/.bin/nodetouch.ps1
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/.bin/nodetouch.ps1
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/.bin/nopt b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/.bin/nopt
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/.bin/nopt
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/.bin/nopt
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/.bin/nopt.cmd b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/.bin/nopt.cmd
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/.bin/nopt.cmd
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/.bin/nopt.cmd
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/.bin/nopt.ps1 b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/.bin/nopt.ps1
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/.bin/nopt.ps1
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/.bin/nopt.ps1
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/.bin/semver b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/.bin/semver
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/.bin/semver
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/.bin/semver
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/.bin/semver.cmd b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/.bin/semver.cmd
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/.bin/semver.cmd
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/.bin/semver.cmd
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/.bin/semver.ps1 b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/.bin/semver.ps1
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/.bin/semver.ps1
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/.bin/semver.ps1
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/.bin/sshpk-conv b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/.bin/sshpk-conv
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/.bin/sshpk-conv
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/.bin/sshpk-conv
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/.bin/sshpk-conv.cmd b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/.bin/sshpk-conv.cmd
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/.bin/sshpk-conv.cmd
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/.bin/sshpk-conv.cmd
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/.bin/sshpk-conv.ps1 b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/.bin/sshpk-conv.ps1
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/.bin/sshpk-conv.ps1
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/.bin/sshpk-conv.ps1
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/.bin/sshpk-sign b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/.bin/sshpk-sign
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/.bin/sshpk-sign
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/.bin/sshpk-sign
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/.bin/sshpk-sign.cmd b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/.bin/sshpk-sign.cmd
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/.bin/sshpk-sign.cmd
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/.bin/sshpk-sign.cmd
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/.bin/sshpk-sign.ps1 b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/.bin/sshpk-sign.ps1
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/.bin/sshpk-sign.ps1
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/.bin/sshpk-sign.ps1
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/.bin/sshpk-verify b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/.bin/sshpk-verify
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/.bin/sshpk-verify
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/.bin/sshpk-verify
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/.bin/sshpk-verify.cmd b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/.bin/sshpk-verify.cmd
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/.bin/sshpk-verify.cmd
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/.bin/sshpk-verify.cmd
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/.bin/sshpk-verify.ps1 b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/.bin/sshpk-verify.ps1
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/.bin/sshpk-verify.ps1
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/.bin/sshpk-verify.ps1
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/.bin/uuid b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/.bin/uuid
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/.bin/uuid
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/.bin/uuid
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/.bin/uuid.cmd b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/.bin/uuid.cmd
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/.bin/uuid.cmd
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/.bin/uuid.cmd
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/.bin/uuid.ps1 b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/.bin/uuid.ps1
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/.bin/uuid.ps1
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/.bin/uuid.ps1
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/.package-lock.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/.package-lock.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/.package-lock.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/.package-lock.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/abbrev/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/abbrev/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/abbrev/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/abbrev/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/abbrev/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/abbrev/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/abbrev/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/abbrev/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/abbrev/abbrev.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/abbrev/abbrev.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/abbrev/abbrev.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/abbrev/abbrev.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/abbrev/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/abbrev/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/abbrev/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/abbrev/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/accepts/HISTORY.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/accepts/HISTORY.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/accepts/HISTORY.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/accepts/HISTORY.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/accepts/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/accepts/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/accepts/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/accepts/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/accepts/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/accepts/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/accepts/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/accepts/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/accepts/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/accepts/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/accepts/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/accepts/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/accepts/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/accepts/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/accepts/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/accepts/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/.tonic_example.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/.tonic_example.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/.tonic_example.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/.tonic_example.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/dist/ajv.bundle.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/dist/ajv.bundle.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/dist/ajv.bundle.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/dist/ajv.bundle.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/dist/ajv.min.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/dist/ajv.min.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/dist/ajv.min.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/dist/ajv.min.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/dist/ajv.min.js.map b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/dist/ajv.min.js.map
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/dist/ajv.min.js.map
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/dist/ajv.min.js.map
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/ajv.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/ajv.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/ajv.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/ajv.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/ajv.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/ajv.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/ajv.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/ajv.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/cache.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/cache.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/cache.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/cache.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/compile/async.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/compile/async.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/compile/async.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/compile/async.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/compile/equal.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/compile/equal.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/compile/equal.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/compile/equal.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/compile/error_classes.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/compile/error_classes.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/compile/error_classes.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/compile/error_classes.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/compile/formats.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/compile/formats.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/compile/formats.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/compile/formats.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/compile/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/compile/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/compile/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/compile/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/compile/resolve.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/compile/resolve.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/compile/resolve.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/compile/resolve.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/compile/rules.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/compile/rules.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/compile/rules.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/compile/rules.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/compile/schema_obj.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/compile/schema_obj.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/compile/schema_obj.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/compile/schema_obj.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/compile/ucs2length.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/compile/ucs2length.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/compile/ucs2length.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/compile/ucs2length.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/compile/util.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/compile/util.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/compile/util.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/compile/util.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/data.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/data.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/data.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/data.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/definition_schema.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/definition_schema.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/definition_schema.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/definition_schema.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dot/_limit.jst b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dot/_limit.jst
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dot/_limit.jst
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dot/_limit.jst
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dot/_limitItems.jst b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dot/_limitItems.jst
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dot/_limitItems.jst
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dot/_limitItems.jst
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dot/_limitLength.jst b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dot/_limitLength.jst
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dot/_limitLength.jst
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dot/_limitLength.jst
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dot/_limitProperties.jst b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dot/_limitProperties.jst
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dot/_limitProperties.jst
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dot/_limitProperties.jst
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dot/allOf.jst b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dot/allOf.jst
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dot/allOf.jst
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dot/allOf.jst
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dot/anyOf.jst b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dot/anyOf.jst
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dot/anyOf.jst
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dot/anyOf.jst
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dot/coerce.def b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dot/coerce.def
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dot/coerce.def
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dot/coerce.def
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dot/comment.jst b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dot/comment.jst
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dot/comment.jst
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dot/comment.jst
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dot/const.jst b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dot/const.jst
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dot/const.jst
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dot/const.jst
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dot/contains.jst b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dot/contains.jst
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dot/contains.jst
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dot/contains.jst
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dot/custom.jst b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dot/custom.jst
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dot/custom.jst
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dot/custom.jst
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dot/defaults.def b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dot/defaults.def
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dot/defaults.def
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dot/defaults.def
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dot/definitions.def b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dot/definitions.def
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dot/definitions.def
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dot/definitions.def
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dot/dependencies.jst b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dot/dependencies.jst
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dot/dependencies.jst
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dot/dependencies.jst
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dot/enum.jst b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dot/enum.jst
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dot/enum.jst
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dot/enum.jst
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dot/errors.def b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dot/errors.def
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dot/errors.def
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dot/errors.def
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dot/format.jst b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dot/format.jst
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dot/format.jst
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dot/format.jst
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dot/if.jst b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dot/if.jst
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dot/if.jst
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dot/if.jst
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dot/items.jst b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dot/items.jst
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dot/items.jst
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dot/items.jst
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dot/missing.def b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dot/missing.def
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dot/missing.def
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dot/missing.def
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dot/multipleOf.jst b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dot/multipleOf.jst
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dot/multipleOf.jst
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dot/multipleOf.jst
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dot/not.jst b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dot/not.jst
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dot/not.jst
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dot/not.jst
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dot/oneOf.jst b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dot/oneOf.jst
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dot/oneOf.jst
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dot/oneOf.jst
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dot/pattern.jst b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dot/pattern.jst
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dot/pattern.jst
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dot/pattern.jst
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dot/properties.jst b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dot/properties.jst
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dot/properties.jst
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dot/properties.jst
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dot/propertyNames.jst b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dot/propertyNames.jst
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dot/propertyNames.jst
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dot/propertyNames.jst
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dot/ref.jst b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dot/ref.jst
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dot/ref.jst
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dot/ref.jst
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dot/required.jst b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dot/required.jst
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dot/required.jst
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dot/required.jst
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dot/uniqueItems.jst b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dot/uniqueItems.jst
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dot/uniqueItems.jst
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dot/uniqueItems.jst
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dot/validate.jst b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dot/validate.jst
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dot/validate.jst
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dot/validate.jst
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dotjs/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dotjs/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dotjs/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dotjs/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dotjs/_limit.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dotjs/_limit.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dotjs/_limit.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dotjs/_limit.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dotjs/_limitItems.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dotjs/_limitItems.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dotjs/_limitItems.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dotjs/_limitItems.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dotjs/_limitLength.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dotjs/_limitLength.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dotjs/_limitLength.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dotjs/_limitLength.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dotjs/_limitProperties.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dotjs/_limitProperties.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dotjs/_limitProperties.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dotjs/_limitProperties.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dotjs/allOf.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dotjs/allOf.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dotjs/allOf.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dotjs/allOf.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dotjs/anyOf.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dotjs/anyOf.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dotjs/anyOf.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dotjs/anyOf.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dotjs/comment.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dotjs/comment.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dotjs/comment.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dotjs/comment.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dotjs/const.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dotjs/const.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dotjs/const.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dotjs/const.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dotjs/contains.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dotjs/contains.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dotjs/contains.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dotjs/contains.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dotjs/custom.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dotjs/custom.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dotjs/custom.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dotjs/custom.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dotjs/dependencies.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dotjs/dependencies.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dotjs/dependencies.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dotjs/dependencies.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dotjs/enum.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dotjs/enum.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dotjs/enum.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dotjs/enum.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dotjs/format.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dotjs/format.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dotjs/format.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dotjs/format.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dotjs/if.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dotjs/if.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dotjs/if.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dotjs/if.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dotjs/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dotjs/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dotjs/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dotjs/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dotjs/items.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dotjs/items.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dotjs/items.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dotjs/items.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dotjs/multipleOf.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dotjs/multipleOf.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dotjs/multipleOf.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dotjs/multipleOf.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dotjs/not.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dotjs/not.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dotjs/not.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dotjs/not.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dotjs/oneOf.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dotjs/oneOf.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dotjs/oneOf.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dotjs/oneOf.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dotjs/pattern.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dotjs/pattern.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dotjs/pattern.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dotjs/pattern.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dotjs/properties.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dotjs/properties.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dotjs/properties.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dotjs/properties.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dotjs/propertyNames.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dotjs/propertyNames.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dotjs/propertyNames.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dotjs/propertyNames.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dotjs/ref.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dotjs/ref.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dotjs/ref.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dotjs/ref.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dotjs/required.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dotjs/required.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dotjs/required.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dotjs/required.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dotjs/uniqueItems.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dotjs/uniqueItems.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dotjs/uniqueItems.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dotjs/uniqueItems.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dotjs/validate.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dotjs/validate.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/dotjs/validate.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/dotjs/validate.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/keyword.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/keyword.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/keyword.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/keyword.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/refs/data.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/refs/data.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/refs/data.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/refs/data.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/refs/json-schema-draft-04.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/refs/json-schema-draft-04.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/refs/json-schema-draft-04.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/refs/json-schema-draft-04.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/refs/json-schema-draft-06.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/refs/json-schema-draft-06.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/refs/json-schema-draft-06.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/refs/json-schema-draft-06.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/refs/json-schema-draft-07.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/refs/json-schema-draft-07.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/refs/json-schema-draft-07.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/refs/json-schema-draft-07.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/refs/json-schema-secure.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/refs/json-schema-secure.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/lib/refs/json-schema-secure.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/lib/refs/json-schema-secure.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/scripts/.eslintrc.yml b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/scripts/.eslintrc.yml
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/scripts/.eslintrc.yml
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/scripts/.eslintrc.yml
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/scripts/bundle.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/scripts/bundle.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/scripts/bundle.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/scripts/bundle.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/scripts/compile-dots.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/scripts/compile-dots.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/scripts/compile-dots.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/scripts/compile-dots.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/scripts/info b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/scripts/info
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/scripts/info
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/scripts/info
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/scripts/prepare-tests b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/scripts/prepare-tests
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/scripts/prepare-tests
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/scripts/prepare-tests
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/scripts/publish-built-version b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/scripts/publish-built-version
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/scripts/publish-built-version
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/scripts/publish-built-version
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/scripts/travis-gh-pages b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/scripts/travis-gh-pages
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ajv/scripts/travis-gh-pages
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ajv/scripts/travis-gh-pages
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/anymatch/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/anymatch/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/anymatch/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/anymatch/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/anymatch/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/anymatch/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/anymatch/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/anymatch/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/anymatch/index.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/anymatch/index.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/anymatch/index.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/anymatch/index.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/anymatch/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/anymatch/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/anymatch/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/anymatch/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/anymatch/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/anymatch/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/anymatch/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/anymatch/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/array-flatten/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/array-flatten/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/array-flatten/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/array-flatten/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/array-flatten/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/array-flatten/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/array-flatten/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/array-flatten/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/array-flatten/array-flatten.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/array-flatten/array-flatten.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/array-flatten/array-flatten.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/array-flatten/array-flatten.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/array-flatten/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/array-flatten/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/array-flatten/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/array-flatten/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/asn1/Jenkinsfile b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/asn1/Jenkinsfile
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/asn1/Jenkinsfile
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/asn1/Jenkinsfile
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/asn1/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/asn1/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/asn1/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/asn1/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/asn1/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/asn1/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/asn1/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/asn1/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/asn1/lib/ber/errors.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/asn1/lib/ber/errors.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/asn1/lib/ber/errors.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/asn1/lib/ber/errors.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/asn1/lib/ber/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/asn1/lib/ber/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/asn1/lib/ber/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/asn1/lib/ber/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/asn1/lib/ber/reader.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/asn1/lib/ber/reader.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/asn1/lib/ber/reader.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/asn1/lib/ber/reader.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/asn1/lib/ber/types.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/asn1/lib/ber/types.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/asn1/lib/ber/types.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/asn1/lib/ber/types.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/asn1/lib/ber/writer.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/asn1/lib/ber/writer.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/asn1/lib/ber/writer.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/asn1/lib/ber/writer.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/asn1/lib/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/asn1/lib/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/asn1/lib/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/asn1/lib/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/asn1/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/asn1/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/asn1/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/asn1/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/assert-plus/AUTHORS b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/assert-plus/AUTHORS
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/assert-plus/AUTHORS
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/assert-plus/AUTHORS
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/assert-plus/CHANGES.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/assert-plus/CHANGES.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/assert-plus/CHANGES.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/assert-plus/CHANGES.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/assert-plus/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/assert-plus/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/assert-plus/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/assert-plus/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/assert-plus/assert.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/assert-plus/assert.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/assert-plus/assert.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/assert-plus/assert.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/assert-plus/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/assert-plus/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/assert-plus/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/assert-plus/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/asynckit/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/asynckit/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/asynckit/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/asynckit/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/asynckit/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/asynckit/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/asynckit/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/asynckit/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/asynckit/bench.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/asynckit/bench.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/asynckit/bench.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/asynckit/bench.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/asynckit/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/asynckit/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/asynckit/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/asynckit/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/asynckit/lib/abort.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/asynckit/lib/abort.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/asynckit/lib/abort.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/asynckit/lib/abort.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/asynckit/lib/async.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/asynckit/lib/async.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/asynckit/lib/async.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/asynckit/lib/async.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/asynckit/lib/defer.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/asynckit/lib/defer.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/asynckit/lib/defer.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/asynckit/lib/defer.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/asynckit/lib/iterate.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/asynckit/lib/iterate.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/asynckit/lib/iterate.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/asynckit/lib/iterate.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/asynckit/lib/readable_asynckit.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/asynckit/lib/readable_asynckit.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/asynckit/lib/readable_asynckit.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/asynckit/lib/readable_asynckit.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/asynckit/lib/readable_parallel.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/asynckit/lib/readable_parallel.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/asynckit/lib/readable_parallel.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/asynckit/lib/readable_parallel.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/asynckit/lib/readable_serial.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/asynckit/lib/readable_serial.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/asynckit/lib/readable_serial.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/asynckit/lib/readable_serial.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/asynckit/lib/readable_serial_ordered.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/asynckit/lib/readable_serial_ordered.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/asynckit/lib/readable_serial_ordered.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/asynckit/lib/readable_serial_ordered.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/asynckit/lib/state.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/asynckit/lib/state.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/asynckit/lib/state.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/asynckit/lib/state.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/asynckit/lib/streamify.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/asynckit/lib/streamify.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/asynckit/lib/streamify.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/asynckit/lib/streamify.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/asynckit/lib/terminator.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/asynckit/lib/terminator.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/asynckit/lib/terminator.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/asynckit/lib/terminator.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/asynckit/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/asynckit/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/asynckit/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/asynckit/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/asynckit/parallel.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/asynckit/parallel.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/asynckit/parallel.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/asynckit/parallel.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/asynckit/serial.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/asynckit/serial.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/asynckit/serial.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/asynckit/serial.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/asynckit/serialOrdered.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/asynckit/serialOrdered.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/asynckit/serialOrdered.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/asynckit/serialOrdered.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/asynckit/stream.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/asynckit/stream.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/asynckit/stream.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/asynckit/stream.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/aws-sign2/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/aws-sign2/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/aws-sign2/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/aws-sign2/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/aws-sign2/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/aws-sign2/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/aws-sign2/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/aws-sign2/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/aws-sign2/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/aws-sign2/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/aws-sign2/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/aws-sign2/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/aws-sign2/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/aws-sign2/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/aws-sign2/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/aws-sign2/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/aws4/.github/FUNDING.yml b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/aws4/.github/FUNDING.yml
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/aws4/.github/FUNDING.yml
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/aws4/.github/FUNDING.yml
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/aws4/.travis.yml b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/aws4/.travis.yml
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/aws4/.travis.yml
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/aws4/.travis.yml
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/aws4/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/aws4/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/aws4/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/aws4/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/aws4/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/aws4/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/aws4/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/aws4/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/aws4/aws4.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/aws4/aws4.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/aws4/aws4.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/aws4/aws4.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/aws4/lru.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/aws4/lru.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/aws4/lru.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/aws4/lru.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/aws4/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/aws4/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/aws4/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/aws4/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/balanced-match/.github/FUNDING.yml b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/balanced-match/.github/FUNDING.yml
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/balanced-match/.github/FUNDING.yml
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/balanced-match/.github/FUNDING.yml
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/balanced-match/LICENSE.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/balanced-match/LICENSE.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/balanced-match/LICENSE.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/balanced-match/LICENSE.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/balanced-match/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/balanced-match/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/balanced-match/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/balanced-match/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/balanced-match/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/balanced-match/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/balanced-match/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/balanced-match/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/balanced-match/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/balanced-match/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/balanced-match/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/balanced-match/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bcrypt-pbkdf/CONTRIBUTING.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bcrypt-pbkdf/CONTRIBUTING.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bcrypt-pbkdf/CONTRIBUTING.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bcrypt-pbkdf/CONTRIBUTING.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bcrypt-pbkdf/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bcrypt-pbkdf/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bcrypt-pbkdf/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bcrypt-pbkdf/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bcrypt-pbkdf/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bcrypt-pbkdf/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bcrypt-pbkdf/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bcrypt-pbkdf/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bcrypt-pbkdf/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bcrypt-pbkdf/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bcrypt-pbkdf/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bcrypt-pbkdf/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bcrypt-pbkdf/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bcrypt-pbkdf/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bcrypt-pbkdf/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bcrypt-pbkdf/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/binary-extensions/binary-extensions.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/binary-extensions/binary-extensions.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/binary-extensions/binary-extensions.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/binary-extensions/binary-extensions.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/binary-extensions/binary-extensions.json.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/binary-extensions/binary-extensions.json.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/binary-extensions/binary-extensions.json.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/binary-extensions/binary-extensions.json.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/binary-extensions/index.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/binary-extensions/index.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/binary-extensions/index.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/binary-extensions/index.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/binary-extensions/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/binary-extensions/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/binary-extensions/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/binary-extensions/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/binary-extensions/license b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/binary-extensions/license
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/binary-extensions/license
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/binary-extensions/license
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/binary-extensions/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/binary-extensions/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/binary-extensions/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/binary-extensions/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/binary-extensions/readme.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/binary-extensions/readme.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/binary-extensions/readme.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/binary-extensions/readme.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bluebird/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bluebird/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bluebird/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bluebird/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bluebird/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bluebird/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bluebird/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bluebird/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bluebird/changelog.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bluebird/changelog.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bluebird/changelog.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bluebird/changelog.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bluebird/js/browser/bluebird.core.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bluebird/js/browser/bluebird.core.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bluebird/js/browser/bluebird.core.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bluebird/js/browser/bluebird.core.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bluebird/js/browser/bluebird.core.min.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bluebird/js/browser/bluebird.core.min.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bluebird/js/browser/bluebird.core.min.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bluebird/js/browser/bluebird.core.min.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bluebird/js/browser/bluebird.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bluebird/js/browser/bluebird.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bluebird/js/browser/bluebird.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bluebird/js/browser/bluebird.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bluebird/js/browser/bluebird.min.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bluebird/js/browser/bluebird.min.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bluebird/js/browser/bluebird.min.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bluebird/js/browser/bluebird.min.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bluebird/js/release/any.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bluebird/js/release/any.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bluebird/js/release/any.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bluebird/js/release/any.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bluebird/js/release/assert.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bluebird/js/release/assert.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bluebird/js/release/assert.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bluebird/js/release/assert.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bluebird/js/release/async.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bluebird/js/release/async.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bluebird/js/release/async.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bluebird/js/release/async.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bluebird/js/release/bind.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bluebird/js/release/bind.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bluebird/js/release/bind.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bluebird/js/release/bind.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bluebird/js/release/bluebird.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bluebird/js/release/bluebird.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bluebird/js/release/bluebird.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bluebird/js/release/bluebird.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bluebird/js/release/call_get.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bluebird/js/release/call_get.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bluebird/js/release/call_get.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bluebird/js/release/call_get.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bluebird/js/release/cancel.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bluebird/js/release/cancel.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bluebird/js/release/cancel.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bluebird/js/release/cancel.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bluebird/js/release/catch_filter.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bluebird/js/release/catch_filter.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bluebird/js/release/catch_filter.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bluebird/js/release/catch_filter.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bluebird/js/release/context.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bluebird/js/release/context.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bluebird/js/release/context.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bluebird/js/release/context.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bluebird/js/release/debuggability.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bluebird/js/release/debuggability.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bluebird/js/release/debuggability.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bluebird/js/release/debuggability.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bluebird/js/release/direct_resolve.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bluebird/js/release/direct_resolve.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bluebird/js/release/direct_resolve.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bluebird/js/release/direct_resolve.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bluebird/js/release/each.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bluebird/js/release/each.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bluebird/js/release/each.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bluebird/js/release/each.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bluebird/js/release/errors.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bluebird/js/release/errors.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bluebird/js/release/errors.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bluebird/js/release/errors.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bluebird/js/release/es5.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bluebird/js/release/es5.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bluebird/js/release/es5.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bluebird/js/release/es5.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bluebird/js/release/filter.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bluebird/js/release/filter.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bluebird/js/release/filter.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bluebird/js/release/filter.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bluebird/js/release/finally.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bluebird/js/release/finally.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bluebird/js/release/finally.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bluebird/js/release/finally.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bluebird/js/release/generators.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bluebird/js/release/generators.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bluebird/js/release/generators.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bluebird/js/release/generators.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bluebird/js/release/join.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bluebird/js/release/join.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bluebird/js/release/join.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bluebird/js/release/join.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bluebird/js/release/map.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bluebird/js/release/map.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bluebird/js/release/map.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bluebird/js/release/map.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bluebird/js/release/method.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bluebird/js/release/method.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bluebird/js/release/method.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bluebird/js/release/method.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bluebird/js/release/nodeback.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bluebird/js/release/nodeback.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bluebird/js/release/nodeback.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bluebird/js/release/nodeback.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bluebird/js/release/nodeify.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bluebird/js/release/nodeify.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bluebird/js/release/nodeify.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bluebird/js/release/nodeify.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bluebird/js/release/promise.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bluebird/js/release/promise.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bluebird/js/release/promise.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bluebird/js/release/promise.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bluebird/js/release/promise_array.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bluebird/js/release/promise_array.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bluebird/js/release/promise_array.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bluebird/js/release/promise_array.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bluebird/js/release/promisify.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bluebird/js/release/promisify.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bluebird/js/release/promisify.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bluebird/js/release/promisify.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bluebird/js/release/props.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bluebird/js/release/props.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bluebird/js/release/props.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bluebird/js/release/props.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bluebird/js/release/queue.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bluebird/js/release/queue.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bluebird/js/release/queue.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bluebird/js/release/queue.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bluebird/js/release/race.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bluebird/js/release/race.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bluebird/js/release/race.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bluebird/js/release/race.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bluebird/js/release/reduce.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bluebird/js/release/reduce.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bluebird/js/release/reduce.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bluebird/js/release/reduce.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bluebird/js/release/schedule.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bluebird/js/release/schedule.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bluebird/js/release/schedule.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bluebird/js/release/schedule.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bluebird/js/release/settle.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bluebird/js/release/settle.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bluebird/js/release/settle.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bluebird/js/release/settle.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bluebird/js/release/some.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bluebird/js/release/some.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bluebird/js/release/some.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bluebird/js/release/some.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bluebird/js/release/synchronous_inspection.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bluebird/js/release/synchronous_inspection.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bluebird/js/release/synchronous_inspection.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bluebird/js/release/synchronous_inspection.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bluebird/js/release/thenables.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bluebird/js/release/thenables.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bluebird/js/release/thenables.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bluebird/js/release/thenables.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bluebird/js/release/timers.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bluebird/js/release/timers.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bluebird/js/release/timers.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bluebird/js/release/timers.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bluebird/js/release/using.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bluebird/js/release/using.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bluebird/js/release/using.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bluebird/js/release/using.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bluebird/js/release/util.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bluebird/js/release/util.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bluebird/js/release/util.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bluebird/js/release/util.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bluebird/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bluebird/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bluebird/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bluebird/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/body-parser/HISTORY.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/body-parser/HISTORY.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/body-parser/HISTORY.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/body-parser/HISTORY.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/body-parser/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/body-parser/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/body-parser/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/body-parser/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/body-parser/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/body-parser/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/body-parser/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/body-parser/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/body-parser/SECURITY.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/body-parser/SECURITY.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/body-parser/SECURITY.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/body-parser/SECURITY.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/body-parser/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/body-parser/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/body-parser/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/body-parser/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/body-parser/lib/read.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/body-parser/lib/read.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/body-parser/lib/read.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/body-parser/lib/read.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/body-parser/lib/types/json.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/body-parser/lib/types/json.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/body-parser/lib/types/json.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/body-parser/lib/types/json.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/body-parser/lib/types/raw.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/body-parser/lib/types/raw.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/body-parser/lib/types/raw.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/body-parser/lib/types/raw.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/body-parser/lib/types/text.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/body-parser/lib/types/text.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/body-parser/lib/types/text.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/body-parser/lib/types/text.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/body-parser/lib/types/urlencoded.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/body-parser/lib/types/urlencoded.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/body-parser/lib/types/urlencoded.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/body-parser/lib/types/urlencoded.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/body-parser/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/body-parser/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/body-parser/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/body-parser/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/brace-expansion/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/brace-expansion/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/brace-expansion/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/brace-expansion/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/brace-expansion/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/brace-expansion/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/brace-expansion/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/brace-expansion/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/brace-expansion/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/brace-expansion/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/brace-expansion/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/brace-expansion/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/brace-expansion/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/brace-expansion/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/brace-expansion/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/brace-expansion/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/braces/CHANGELOG.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/braces/CHANGELOG.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/braces/CHANGELOG.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/braces/CHANGELOG.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/braces/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/braces/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/braces/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/braces/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/braces/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/braces/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/braces/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/braces/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/braces/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/braces/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/braces/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/braces/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/braces/lib/compile.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/braces/lib/compile.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/braces/lib/compile.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/braces/lib/compile.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/braces/lib/constants.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/braces/lib/constants.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/braces/lib/constants.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/braces/lib/constants.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/braces/lib/expand.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/braces/lib/expand.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/braces/lib/expand.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/braces/lib/expand.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/braces/lib/parse.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/braces/lib/parse.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/braces/lib/parse.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/braces/lib/parse.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/braces/lib/stringify.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/braces/lib/stringify.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/braces/lib/stringify.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/braces/lib/stringify.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/braces/lib/utils.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/braces/lib/utils.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/braces/lib/utils.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/braces/lib/utils.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/braces/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/braces/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/braces/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/braces/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bytes/History.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bytes/History.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bytes/History.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bytes/History.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bytes/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bytes/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bytes/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bytes/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bytes/Readme.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bytes/Readme.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bytes/Readme.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bytes/Readme.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bytes/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bytes/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bytes/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bytes/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bytes/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bytes/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/bytes/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/bytes/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/call-bind/.eslintignore b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/call-bind/.eslintignore
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/call-bind/.eslintignore
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/call-bind/.eslintignore
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/call-bind/.eslintrc b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/call-bind/.eslintrc
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/call-bind/.eslintrc
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/call-bind/.eslintrc
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/call-bind/.github/FUNDING.yml b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/call-bind/.github/FUNDING.yml
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/call-bind/.github/FUNDING.yml
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/call-bind/.github/FUNDING.yml
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/call-bind/.nycrc b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/call-bind/.nycrc
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/call-bind/.nycrc
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/call-bind/.nycrc
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/call-bind/CHANGELOG.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/call-bind/CHANGELOG.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/call-bind/CHANGELOG.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/call-bind/CHANGELOG.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/call-bind/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/call-bind/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/call-bind/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/call-bind/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/call-bind/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/call-bind/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/call-bind/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/call-bind/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/call-bind/callBound.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/call-bind/callBound.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/call-bind/callBound.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/call-bind/callBound.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/call-bind/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/call-bind/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/call-bind/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/call-bind/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/call-bind/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/call-bind/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/call-bind/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/call-bind/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/call-bind/test/callBound.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/call-bind/test/callBound.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/call-bind/test/callBound.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/call-bind/test/callBound.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/call-bind/test/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/call-bind/test/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/call-bind/test/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/call-bind/test/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/caseless/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/caseless/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/caseless/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/caseless/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/caseless/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/caseless/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/caseless/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/caseless/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/caseless/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/caseless/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/caseless/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/caseless/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/caseless/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/caseless/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/caseless/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/caseless/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/caseless/test.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/caseless/test.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/caseless/test.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/caseless/test.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/chokidar/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/chokidar/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/chokidar/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/chokidar/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/chokidar/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/chokidar/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/chokidar/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/chokidar/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/chokidar/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/chokidar/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/chokidar/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/chokidar/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/chokidar/lib/constants.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/chokidar/lib/constants.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/chokidar/lib/constants.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/chokidar/lib/constants.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/chokidar/lib/fsevents-handler.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/chokidar/lib/fsevents-handler.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/chokidar/lib/fsevents-handler.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/chokidar/lib/fsevents-handler.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/chokidar/lib/nodefs-handler.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/chokidar/lib/nodefs-handler.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/chokidar/lib/nodefs-handler.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/chokidar/lib/nodefs-handler.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/chokidar/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/chokidar/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/chokidar/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/chokidar/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/chokidar/types/index.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/chokidar/types/index.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/chokidar/types/index.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/chokidar/types/index.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/combined-stream/License b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/combined-stream/License
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/combined-stream/License
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/combined-stream/License
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/combined-stream/Readme.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/combined-stream/Readme.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/combined-stream/Readme.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/combined-stream/Readme.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/combined-stream/lib/combined_stream.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/combined-stream/lib/combined_stream.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/combined-stream/lib/combined_stream.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/combined-stream/lib/combined_stream.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/combined-stream/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/combined-stream/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/combined-stream/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/combined-stream/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/combined-stream/yarn.lock b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/combined-stream/yarn.lock
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/combined-stream/yarn.lock
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/combined-stream/yarn.lock
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/concat-map/.travis.yml b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/concat-map/.travis.yml
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/concat-map/.travis.yml
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/concat-map/.travis.yml
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/concat-map/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/concat-map/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/concat-map/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/concat-map/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/concat-map/README.markdown b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/concat-map/README.markdown
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/concat-map/README.markdown
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/concat-map/README.markdown
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/concat-map/example/map.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/concat-map/example/map.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/concat-map/example/map.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/concat-map/example/map.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/concat-map/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/concat-map/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/concat-map/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/concat-map/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/concat-map/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/concat-map/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/concat-map/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/concat-map/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/concat-map/test/map.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/concat-map/test/map.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/concat-map/test/map.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/concat-map/test/map.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/content-disposition/HISTORY.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/content-disposition/HISTORY.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/content-disposition/HISTORY.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/content-disposition/HISTORY.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/content-disposition/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/content-disposition/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/content-disposition/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/content-disposition/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/content-disposition/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/content-disposition/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/content-disposition/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/content-disposition/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/content-disposition/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/content-disposition/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/content-disposition/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/content-disposition/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/content-disposition/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/content-disposition/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/content-disposition/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/content-disposition/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/content-type/HISTORY.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/content-type/HISTORY.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/content-type/HISTORY.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/content-type/HISTORY.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/content-type/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/content-type/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/content-type/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/content-type/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/content-type/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/content-type/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/content-type/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/content-type/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/content-type/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/content-type/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/content-type/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/content-type/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/content-type/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/content-type/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/content-type/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/content-type/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/cookie-signature/.npmignore b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/cookie-signature/.npmignore
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/cookie-signature/.npmignore
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/cookie-signature/.npmignore
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/cookie-signature/History.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/cookie-signature/History.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/cookie-signature/History.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/cookie-signature/History.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/cookie-signature/Readme.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/cookie-signature/Readme.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/cookie-signature/Readme.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/cookie-signature/Readme.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/cookie-signature/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/cookie-signature/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/cookie-signature/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/cookie-signature/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/cookie-signature/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/cookie-signature/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/cookie-signature/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/cookie-signature/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/cookie/HISTORY.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/cookie/HISTORY.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/cookie/HISTORY.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/cookie/HISTORY.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/cookie/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/cookie/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/cookie/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/cookie/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/cookie/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/cookie/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/cookie/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/cookie/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/cookie/SECURITY.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/cookie/SECURITY.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/cookie/SECURITY.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/cookie/SECURITY.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/cookie/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/cookie/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/cookie/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/cookie/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/cookie/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/cookie/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/cookie/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/cookie/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/core-util-is/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/core-util-is/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/core-util-is/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/core-util-is/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/core-util-is/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/core-util-is/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/core-util-is/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/core-util-is/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/core-util-is/float.patch b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/core-util-is/float.patch
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/core-util-is/float.patch
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/core-util-is/float.patch
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/core-util-is/lib/util.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/core-util-is/lib/util.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/core-util-is/lib/util.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/core-util-is/lib/util.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/core-util-is/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/core-util-is/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/core-util-is/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/core-util-is/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/core-util-is/test.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/core-util-is/test.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/core-util-is/test.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/core-util-is/test.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/cors/CONTRIBUTING.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/cors/CONTRIBUTING.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/cors/CONTRIBUTING.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/cors/CONTRIBUTING.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/cors/HISTORY.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/cors/HISTORY.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/cors/HISTORY.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/cors/HISTORY.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/cors/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/cors/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/cors/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/cors/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/cors/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/cors/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/cors/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/cors/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/cors/lib/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/cors/lib/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/cors/lib/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/cors/lib/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/cors/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/cors/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/cors/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/cors/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dashdash/CHANGES.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dashdash/CHANGES.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dashdash/CHANGES.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dashdash/CHANGES.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dashdash/LICENSE.txt b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dashdash/LICENSE.txt
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dashdash/LICENSE.txt
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dashdash/LICENSE.txt
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dashdash/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dashdash/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dashdash/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dashdash/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dashdash/etc/dashdash.bash_completion.in b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dashdash/etc/dashdash.bash_completion.in
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dashdash/etc/dashdash.bash_completion.in
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dashdash/etc/dashdash.bash_completion.in
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dashdash/lib/dashdash.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dashdash/lib/dashdash.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dashdash/lib/dashdash.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dashdash/lib/dashdash.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dashdash/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dashdash/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dashdash/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dashdash/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/.editorconfig b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/.editorconfig
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/.editorconfig
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/.editorconfig
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/CHANGELOG.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/CHANGELOG.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/CHANGELOG.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/CHANGELOG.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/dayjs.min.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/dayjs.min.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/dayjs.min.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/dayjs.min.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/constant.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/constant.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/constant.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/constant.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/index.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/index.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/index.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/index.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/af.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/af.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/af.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/af.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/am.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/am.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/am.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/am.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/ar-dz.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/ar-dz.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/ar-dz.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/ar-dz.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/ar-iq.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/ar-iq.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/ar-iq.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/ar-iq.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/ar-kw.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/ar-kw.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/ar-kw.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/ar-kw.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/ar-ly.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/ar-ly.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/ar-ly.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/ar-ly.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/ar-ma.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/ar-ma.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/ar-ma.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/ar-ma.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/ar-sa.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/ar-sa.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/ar-sa.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/ar-sa.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/ar-tn.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/ar-tn.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/ar-tn.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/ar-tn.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/ar.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/ar.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/ar.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/ar.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/az.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/az.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/az.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/az.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/be.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/be.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/be.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/be.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/bg.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/bg.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/bg.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/bg.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/bi.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/bi.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/bi.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/bi.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/bm.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/bm.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/bm.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/bm.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/bn-bd.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/bn-bd.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/bn-bd.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/bn-bd.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/bn.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/bn.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/bn.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/bn.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/bo.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/bo.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/bo.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/bo.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/br.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/br.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/br.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/br.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/bs.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/bs.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/bs.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/bs.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/ca.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/ca.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/ca.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/ca.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/cs.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/cs.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/cs.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/cs.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/cv.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/cv.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/cv.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/cv.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/cy.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/cy.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/cy.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/cy.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/da.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/da.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/da.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/da.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/de-at.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/de-at.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/de-at.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/de-at.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/de-ch.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/de-ch.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/de-ch.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/de-ch.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/de.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/de.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/de.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/de.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/dv.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/dv.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/dv.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/dv.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/el.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/el.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/el.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/el.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/en-au.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/en-au.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/en-au.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/en-au.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/en-ca.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/en-ca.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/en-ca.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/en-ca.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/en-gb.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/en-gb.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/en-gb.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/en-gb.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/en-ie.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/en-ie.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/en-ie.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/en-ie.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/en-il.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/en-il.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/en-il.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/en-il.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/en-in.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/en-in.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/en-in.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/en-in.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/en-nz.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/en-nz.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/en-nz.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/en-nz.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/en-sg.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/en-sg.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/en-sg.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/en-sg.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/en-tt.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/en-tt.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/en-tt.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/en-tt.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/en.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/en.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/en.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/en.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/eo.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/eo.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/eo.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/eo.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/es-do.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/es-do.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/es-do.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/es-do.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/es-mx.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/es-mx.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/es-mx.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/es-mx.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/es-pr.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/es-pr.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/es-pr.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/es-pr.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/es-us.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/es-us.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/es-us.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/es-us.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/es.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/es.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/es.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/es.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/et.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/et.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/et.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/et.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/eu.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/eu.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/eu.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/eu.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/fa.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/fa.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/fa.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/fa.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/fi.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/fi.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/fi.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/fi.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/fo.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/fo.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/fo.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/fo.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/fr-ca.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/fr-ca.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/fr-ca.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/fr-ca.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/fr-ch.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/fr-ch.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/fr-ch.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/fr-ch.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/fr.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/fr.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/fr.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/fr.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/fy.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/fy.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/fy.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/fy.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/ga.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/ga.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/ga.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/ga.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/gd.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/gd.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/gd.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/gd.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/gl.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/gl.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/gl.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/gl.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/gom-latn.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/gom-latn.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/gom-latn.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/gom-latn.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/gu.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/gu.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/gu.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/gu.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/he.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/he.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/he.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/he.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/hi.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/hi.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/hi.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/hi.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/hr.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/hr.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/hr.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/hr.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/ht.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/ht.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/ht.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/ht.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/hu.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/hu.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/hu.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/hu.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/hy-am.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/hy-am.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/hy-am.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/hy-am.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/id.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/id.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/id.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/id.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/index.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/index.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/index.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/index.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/is.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/is.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/is.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/is.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/it-ch.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/it-ch.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/it-ch.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/it-ch.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/it.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/it.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/it.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/it.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/ja.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/ja.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/ja.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/ja.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/jv.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/jv.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/jv.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/jv.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/ka.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/ka.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/ka.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/ka.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/kk.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/kk.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/kk.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/kk.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/km.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/km.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/km.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/km.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/kn.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/kn.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/kn.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/kn.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/ko.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/ko.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/ko.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/ko.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/ku.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/ku.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/ku.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/ku.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/ky.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/ky.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/ky.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/ky.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/lb.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/lb.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/lb.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/lb.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/lo.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/lo.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/lo.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/lo.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/lt.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/lt.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/lt.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/lt.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/lv.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/lv.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/lv.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/lv.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/me.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/me.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/me.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/me.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/mi.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/mi.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/mi.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/mi.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/mk.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/mk.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/mk.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/mk.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/ml.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/ml.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/ml.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/ml.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/mn.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/mn.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/mn.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/mn.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/mr.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/mr.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/mr.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/mr.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/ms-my.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/ms-my.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/ms-my.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/ms-my.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/ms.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/ms.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/ms.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/ms.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/mt.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/mt.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/mt.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/mt.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/my.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/my.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/my.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/my.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/nb.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/nb.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/nb.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/nb.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/ne.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/ne.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/ne.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/ne.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/nl-be.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/nl-be.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/nl-be.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/nl-be.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/nl.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/nl.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/nl.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/nl.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/nn.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/nn.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/nn.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/nn.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/oc-lnc.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/oc-lnc.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/oc-lnc.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/oc-lnc.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/pa-in.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/pa-in.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/pa-in.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/pa-in.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/pl.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/pl.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/pl.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/pl.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/pt-br.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/pt-br.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/pt-br.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/pt-br.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/pt.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/pt.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/pt.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/pt.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/rn.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/rn.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/rn.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/rn.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/ro.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/ro.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/ro.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/ro.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/ru.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/ru.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/ru.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/ru.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/rw.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/rw.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/rw.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/rw.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/sd.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/sd.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/sd.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/sd.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/se.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/se.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/se.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/se.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/si.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/si.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/si.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/si.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/sk.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/sk.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/sk.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/sk.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/sl.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/sl.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/sl.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/sl.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/sq.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/sq.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/sq.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/sq.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/sr-cyrl.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/sr-cyrl.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/sr-cyrl.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/sr-cyrl.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/sr.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/sr.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/sr.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/sr.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/ss.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/ss.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/ss.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/ss.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/sv-fi.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/sv-fi.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/sv-fi.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/sv-fi.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/sv.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/sv.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/sv.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/sv.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/sw.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/sw.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/sw.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/sw.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/ta.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/ta.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/ta.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/ta.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/te.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/te.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/te.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/te.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/tet.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/tet.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/tet.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/tet.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/tg.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/tg.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/tg.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/tg.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/th.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/th.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/th.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/th.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/tk.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/tk.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/tk.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/tk.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/tl-ph.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/tl-ph.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/tl-ph.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/tl-ph.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/tlh.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/tlh.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/tlh.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/tlh.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/tr.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/tr.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/tr.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/tr.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/types.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/types.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/types.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/types.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/tzl.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/tzl.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/tzl.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/tzl.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/tzm-latn.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/tzm-latn.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/tzm-latn.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/tzm-latn.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/tzm.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/tzm.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/tzm.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/tzm.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/ug-cn.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/ug-cn.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/ug-cn.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/ug-cn.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/uk.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/uk.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/uk.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/uk.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/ur.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/ur.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/ur.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/ur.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/uz-latn.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/uz-latn.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/uz-latn.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/uz-latn.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/uz.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/uz.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/uz.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/uz.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/vi.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/vi.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/vi.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/vi.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/x-pseudo.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/x-pseudo.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/x-pseudo.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/x-pseudo.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/yo.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/yo.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/yo.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/yo.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/zh-cn.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/zh-cn.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/zh-cn.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/zh-cn.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/zh-hk.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/zh-hk.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/zh-hk.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/zh-hk.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/zh-tw.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/zh-tw.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/zh-tw.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/zh-tw.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/zh.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/zh.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/locale/zh.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/locale/zh.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/advancedFormat/index.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/advancedFormat/index.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/advancedFormat/index.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/advancedFormat/index.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/advancedFormat/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/advancedFormat/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/advancedFormat/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/advancedFormat/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/arraySupport/index.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/arraySupport/index.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/arraySupport/index.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/arraySupport/index.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/arraySupport/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/arraySupport/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/arraySupport/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/arraySupport/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/badMutable/index.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/badMutable/index.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/badMutable/index.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/badMutable/index.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/badMutable/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/badMutable/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/badMutable/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/badMutable/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/bigIntSupport/index.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/bigIntSupport/index.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/bigIntSupport/index.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/bigIntSupport/index.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/bigIntSupport/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/bigIntSupport/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/bigIntSupport/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/bigIntSupport/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/buddhistEra/index.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/buddhistEra/index.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/buddhistEra/index.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/buddhistEra/index.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/buddhistEra/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/buddhistEra/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/buddhistEra/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/buddhistEra/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/calendar/index.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/calendar/index.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/calendar/index.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/calendar/index.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/calendar/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/calendar/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/calendar/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/calendar/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/customParseFormat/index.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/customParseFormat/index.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/customParseFormat/index.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/customParseFormat/index.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/customParseFormat/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/customParseFormat/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/customParseFormat/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/customParseFormat/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/dayOfYear/index.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/dayOfYear/index.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/dayOfYear/index.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/dayOfYear/index.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/dayOfYear/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/dayOfYear/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/dayOfYear/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/dayOfYear/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/devHelper/index.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/devHelper/index.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/devHelper/index.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/devHelper/index.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/devHelper/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/devHelper/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/devHelper/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/devHelper/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/duration/index.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/duration/index.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/duration/index.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/duration/index.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/duration/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/duration/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/duration/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/duration/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/isBetween/index.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/isBetween/index.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/isBetween/index.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/isBetween/index.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/isBetween/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/isBetween/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/isBetween/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/isBetween/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/isLeapYear/index.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/isLeapYear/index.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/isLeapYear/index.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/isLeapYear/index.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/isLeapYear/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/isLeapYear/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/isLeapYear/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/isLeapYear/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/isMoment/index.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/isMoment/index.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/isMoment/index.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/isMoment/index.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/isMoment/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/isMoment/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/isMoment/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/isMoment/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/isSameOrAfter/index.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/isSameOrAfter/index.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/isSameOrAfter/index.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/isSameOrAfter/index.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/isSameOrAfter/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/isSameOrAfter/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/isSameOrAfter/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/isSameOrAfter/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/isSameOrBefore/index.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/isSameOrBefore/index.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/isSameOrBefore/index.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/isSameOrBefore/index.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/isSameOrBefore/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/isSameOrBefore/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/isSameOrBefore/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/isSameOrBefore/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/isToday/index.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/isToday/index.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/isToday/index.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/isToday/index.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/isToday/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/isToday/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/isToday/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/isToday/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/isTomorrow/index.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/isTomorrow/index.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/isTomorrow/index.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/isTomorrow/index.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/isTomorrow/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/isTomorrow/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/isTomorrow/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/isTomorrow/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/isYesterday/index.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/isYesterday/index.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/isYesterday/index.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/isYesterday/index.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/isYesterday/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/isYesterday/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/isYesterday/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/isYesterday/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/isoWeek/index.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/isoWeek/index.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/isoWeek/index.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/isoWeek/index.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/isoWeek/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/isoWeek/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/isoWeek/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/isoWeek/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/isoWeeksInYear/index.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/isoWeeksInYear/index.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/isoWeeksInYear/index.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/isoWeeksInYear/index.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/isoWeeksInYear/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/isoWeeksInYear/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/isoWeeksInYear/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/isoWeeksInYear/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/localeData/index.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/localeData/index.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/localeData/index.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/localeData/index.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/localeData/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/localeData/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/localeData/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/localeData/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/localizedFormat/index.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/localizedFormat/index.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/localizedFormat/index.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/localizedFormat/index.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/localizedFormat/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/localizedFormat/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/localizedFormat/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/localizedFormat/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/localizedFormat/utils.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/localizedFormat/utils.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/localizedFormat/utils.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/localizedFormat/utils.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/minMax/index.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/minMax/index.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/minMax/index.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/minMax/index.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/minMax/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/minMax/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/minMax/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/minMax/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/objectSupport/index.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/objectSupport/index.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/objectSupport/index.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/objectSupport/index.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/objectSupport/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/objectSupport/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/objectSupport/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/objectSupport/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/pluralGetSet/index.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/pluralGetSet/index.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/pluralGetSet/index.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/pluralGetSet/index.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/pluralGetSet/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/pluralGetSet/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/pluralGetSet/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/pluralGetSet/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/preParsePostFormat/index.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/preParsePostFormat/index.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/preParsePostFormat/index.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/preParsePostFormat/index.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/preParsePostFormat/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/preParsePostFormat/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/preParsePostFormat/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/preParsePostFormat/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/quarterOfYear/index.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/quarterOfYear/index.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/quarterOfYear/index.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/quarterOfYear/index.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/quarterOfYear/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/quarterOfYear/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/quarterOfYear/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/quarterOfYear/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/relativeTime/index.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/relativeTime/index.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/relativeTime/index.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/relativeTime/index.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/relativeTime/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/relativeTime/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/relativeTime/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/relativeTime/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/timezone/index.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/timezone/index.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/timezone/index.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/timezone/index.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/timezone/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/timezone/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/timezone/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/timezone/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/toArray/index.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/toArray/index.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/toArray/index.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/toArray/index.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/toArray/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/toArray/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/toArray/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/toArray/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/toObject/index.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/toObject/index.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/toObject/index.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/toObject/index.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/toObject/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/toObject/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/toObject/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/toObject/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/updateLocale/index.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/updateLocale/index.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/updateLocale/index.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/updateLocale/index.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/updateLocale/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/updateLocale/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/updateLocale/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/updateLocale/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/utc/index.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/utc/index.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/utc/index.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/utc/index.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/utc/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/utc/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/utc/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/utc/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/weekOfYear/index.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/weekOfYear/index.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/weekOfYear/index.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/weekOfYear/index.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/weekOfYear/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/weekOfYear/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/weekOfYear/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/weekOfYear/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/weekYear/index.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/weekYear/index.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/weekYear/index.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/weekYear/index.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/weekYear/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/weekYear/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/weekYear/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/weekYear/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/weekday/index.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/weekday/index.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/weekday/index.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/weekday/index.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/weekday/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/weekday/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/plugin/weekday/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/plugin/weekday/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/utils.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/utils.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/esm/utils.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/esm/utils.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/index.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/index.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/index.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/index.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/af.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/af.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/af.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/af.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/am.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/am.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/am.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/am.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/ar-dz.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/ar-dz.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/ar-dz.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/ar-dz.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/ar-iq.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/ar-iq.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/ar-iq.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/ar-iq.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/ar-kw.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/ar-kw.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/ar-kw.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/ar-kw.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/ar-ly.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/ar-ly.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/ar-ly.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/ar-ly.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/ar-ma.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/ar-ma.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/ar-ma.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/ar-ma.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/ar-sa.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/ar-sa.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/ar-sa.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/ar-sa.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/ar-tn.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/ar-tn.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/ar-tn.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/ar-tn.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/ar.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/ar.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/ar.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/ar.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/az.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/az.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/az.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/az.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/be.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/be.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/be.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/be.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/bg.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/bg.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/bg.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/bg.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/bi.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/bi.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/bi.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/bi.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/bm.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/bm.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/bm.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/bm.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/bn-bd.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/bn-bd.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/bn-bd.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/bn-bd.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/bn.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/bn.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/bn.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/bn.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/bo.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/bo.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/bo.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/bo.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/br.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/br.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/br.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/br.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/bs.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/bs.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/bs.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/bs.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/ca.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/ca.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/ca.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/ca.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/cs.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/cs.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/cs.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/cs.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/cv.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/cv.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/cv.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/cv.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/cy.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/cy.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/cy.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/cy.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/da.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/da.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/da.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/da.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/de-at.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/de-at.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/de-at.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/de-at.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/de-ch.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/de-ch.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/de-ch.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/de-ch.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/de.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/de.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/de.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/de.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/dv.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/dv.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/dv.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/dv.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/el.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/el.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/el.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/el.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/en-au.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/en-au.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/en-au.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/en-au.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/en-ca.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/en-ca.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/en-ca.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/en-ca.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/en-gb.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/en-gb.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/en-gb.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/en-gb.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/en-ie.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/en-ie.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/en-ie.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/en-ie.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/en-il.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/en-il.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/en-il.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/en-il.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/en-in.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/en-in.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/en-in.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/en-in.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/en-nz.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/en-nz.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/en-nz.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/en-nz.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/en-sg.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/en-sg.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/en-sg.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/en-sg.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/en-tt.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/en-tt.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/en-tt.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/en-tt.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/en.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/en.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/en.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/en.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/eo.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/eo.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/eo.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/eo.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/es-do.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/es-do.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/es-do.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/es-do.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/es-mx.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/es-mx.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/es-mx.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/es-mx.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/es-pr.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/es-pr.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/es-pr.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/es-pr.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/es-us.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/es-us.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/es-us.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/es-us.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/es.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/es.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/es.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/es.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/et.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/et.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/et.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/et.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/eu.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/eu.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/eu.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/eu.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/fa.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/fa.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/fa.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/fa.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/fi.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/fi.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/fi.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/fi.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/fo.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/fo.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/fo.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/fo.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/fr-ca.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/fr-ca.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/fr-ca.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/fr-ca.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/fr-ch.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/fr-ch.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/fr-ch.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/fr-ch.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/fr.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/fr.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/fr.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/fr.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/fy.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/fy.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/fy.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/fy.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/ga.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/ga.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/ga.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/ga.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/gd.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/gd.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/gd.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/gd.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/gl.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/gl.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/gl.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/gl.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/gom-latn.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/gom-latn.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/gom-latn.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/gom-latn.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/gu.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/gu.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/gu.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/gu.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/he.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/he.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/he.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/he.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/hi.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/hi.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/hi.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/hi.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/hr.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/hr.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/hr.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/hr.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/ht.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/ht.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/ht.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/ht.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/hu.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/hu.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/hu.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/hu.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/hy-am.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/hy-am.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/hy-am.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/hy-am.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/id.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/id.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/id.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/id.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/index.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/index.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/index.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/index.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/is.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/is.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/is.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/is.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/it-ch.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/it-ch.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/it-ch.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/it-ch.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/it.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/it.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/it.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/it.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/ja.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/ja.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/ja.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/ja.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/jv.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/jv.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/jv.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/jv.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/ka.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/ka.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/ka.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/ka.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/kk.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/kk.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/kk.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/kk.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/km.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/km.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/km.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/km.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/kn.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/kn.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/kn.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/kn.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/ko.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/ko.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/ko.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/ko.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/ku.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/ku.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/ku.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/ku.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/ky.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/ky.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/ky.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/ky.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/lb.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/lb.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/lb.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/lb.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/lo.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/lo.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/lo.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/lo.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/lt.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/lt.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/lt.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/lt.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/lv.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/lv.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/lv.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/lv.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/me.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/me.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/me.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/me.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/mi.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/mi.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/mi.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/mi.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/mk.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/mk.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/mk.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/mk.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/ml.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/ml.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/ml.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/ml.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/mn.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/mn.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/mn.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/mn.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/mr.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/mr.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/mr.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/mr.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/ms-my.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/ms-my.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/ms-my.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/ms-my.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/ms.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/ms.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/ms.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/ms.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/mt.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/mt.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/mt.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/mt.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/my.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/my.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/my.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/my.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/nb.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/nb.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/nb.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/nb.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/ne.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/ne.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/ne.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/ne.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/nl-be.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/nl-be.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/nl-be.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/nl-be.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/nl.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/nl.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/nl.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/nl.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/nn.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/nn.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/nn.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/nn.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/oc-lnc.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/oc-lnc.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/oc-lnc.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/oc-lnc.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/pa-in.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/pa-in.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/pa-in.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/pa-in.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/pl.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/pl.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/pl.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/pl.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/pt-br.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/pt-br.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/pt-br.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/pt-br.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/pt.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/pt.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/pt.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/pt.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/rn.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/rn.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/rn.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/rn.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/ro.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/ro.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/ro.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/ro.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/ru.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/ru.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/ru.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/ru.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/rw.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/rw.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/rw.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/rw.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/sd.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/sd.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/sd.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/sd.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/se.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/se.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/se.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/se.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/si.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/si.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/si.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/si.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/sk.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/sk.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/sk.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/sk.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/sl.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/sl.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/sl.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/sl.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/sq.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/sq.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/sq.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/sq.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/sr-cyrl.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/sr-cyrl.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/sr-cyrl.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/sr-cyrl.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/sr.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/sr.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/sr.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/sr.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/ss.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/ss.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/ss.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/ss.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/sv-fi.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/sv-fi.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/sv-fi.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/sv-fi.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/sv.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/sv.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/sv.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/sv.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/sw.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/sw.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/sw.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/sw.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/ta.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/ta.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/ta.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/ta.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/te.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/te.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/te.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/te.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/tet.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/tet.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/tet.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/tet.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/tg.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/tg.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/tg.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/tg.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/th.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/th.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/th.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/th.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/tk.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/tk.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/tk.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/tk.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/tl-ph.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/tl-ph.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/tl-ph.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/tl-ph.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/tlh.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/tlh.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/tlh.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/tlh.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/tr.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/tr.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/tr.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/tr.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/types.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/types.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/types.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/types.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/tzl.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/tzl.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/tzl.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/tzl.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/tzm-latn.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/tzm-latn.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/tzm-latn.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/tzm-latn.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/tzm.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/tzm.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/tzm.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/tzm.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/ug-cn.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/ug-cn.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/ug-cn.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/ug-cn.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/uk.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/uk.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/uk.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/uk.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/ur.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/ur.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/ur.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/ur.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/uz-latn.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/uz-latn.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/uz-latn.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/uz-latn.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/uz.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/uz.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/uz.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/uz.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/vi.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/vi.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/vi.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/vi.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/x-pseudo.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/x-pseudo.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/x-pseudo.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/x-pseudo.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/yo.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/yo.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/yo.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/yo.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/zh-cn.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/zh-cn.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/zh-cn.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/zh-cn.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/zh-hk.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/zh-hk.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/zh-hk.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/zh-hk.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/zh-tw.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/zh-tw.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/zh-tw.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/zh-tw.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/zh.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/zh.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/locale/zh.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/locale/zh.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/advancedFormat.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/advancedFormat.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/advancedFormat.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/advancedFormat.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/advancedFormat.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/advancedFormat.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/advancedFormat.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/advancedFormat.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/arraySupport.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/arraySupport.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/arraySupport.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/arraySupport.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/arraySupport.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/arraySupport.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/arraySupport.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/arraySupport.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/badMutable.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/badMutable.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/badMutable.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/badMutable.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/badMutable.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/badMutable.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/badMutable.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/badMutable.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/bigIntSupport.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/bigIntSupport.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/bigIntSupport.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/bigIntSupport.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/bigIntSupport.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/bigIntSupport.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/bigIntSupport.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/bigIntSupport.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/buddhistEra.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/buddhistEra.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/buddhistEra.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/buddhistEra.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/buddhistEra.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/buddhistEra.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/buddhistEra.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/buddhistEra.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/calendar.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/calendar.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/calendar.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/calendar.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/calendar.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/calendar.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/calendar.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/calendar.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/customParseFormat.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/customParseFormat.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/customParseFormat.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/customParseFormat.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/customParseFormat.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/customParseFormat.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/customParseFormat.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/customParseFormat.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/dayOfYear.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/dayOfYear.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/dayOfYear.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/dayOfYear.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/dayOfYear.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/dayOfYear.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/dayOfYear.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/dayOfYear.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/devHelper.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/devHelper.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/devHelper.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/devHelper.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/devHelper.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/devHelper.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/devHelper.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/devHelper.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/duration.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/duration.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/duration.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/duration.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/duration.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/duration.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/duration.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/duration.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/isBetween.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/isBetween.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/isBetween.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/isBetween.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/isBetween.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/isBetween.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/isBetween.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/isBetween.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/isLeapYear.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/isLeapYear.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/isLeapYear.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/isLeapYear.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/isLeapYear.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/isLeapYear.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/isLeapYear.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/isLeapYear.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/isMoment.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/isMoment.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/isMoment.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/isMoment.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/isMoment.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/isMoment.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/isMoment.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/isMoment.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/isSameOrAfter.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/isSameOrAfter.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/isSameOrAfter.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/isSameOrAfter.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/isSameOrAfter.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/isSameOrAfter.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/isSameOrAfter.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/isSameOrAfter.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/isSameOrBefore.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/isSameOrBefore.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/isSameOrBefore.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/isSameOrBefore.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/isSameOrBefore.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/isSameOrBefore.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/isSameOrBefore.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/isSameOrBefore.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/isToday.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/isToday.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/isToday.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/isToday.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/isToday.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/isToday.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/isToday.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/isToday.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/isTomorrow.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/isTomorrow.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/isTomorrow.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/isTomorrow.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/isTomorrow.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/isTomorrow.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/isTomorrow.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/isTomorrow.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/isYesterday.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/isYesterday.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/isYesterday.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/isYesterday.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/isYesterday.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/isYesterday.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/isYesterday.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/isYesterday.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/isoWeek.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/isoWeek.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/isoWeek.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/isoWeek.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/isoWeek.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/isoWeek.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/isoWeek.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/isoWeek.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/isoWeeksInYear.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/isoWeeksInYear.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/isoWeeksInYear.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/isoWeeksInYear.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/isoWeeksInYear.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/isoWeeksInYear.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/isoWeeksInYear.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/isoWeeksInYear.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/localeData.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/localeData.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/localeData.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/localeData.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/localeData.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/localeData.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/localeData.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/localeData.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/localizedFormat.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/localizedFormat.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/localizedFormat.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/localizedFormat.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/localizedFormat.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/localizedFormat.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/localizedFormat.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/localizedFormat.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/minMax.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/minMax.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/minMax.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/minMax.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/minMax.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/minMax.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/minMax.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/minMax.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/objectSupport.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/objectSupport.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/objectSupport.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/objectSupport.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/objectSupport.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/objectSupport.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/objectSupport.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/objectSupport.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/pluralGetSet.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/pluralGetSet.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/pluralGetSet.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/pluralGetSet.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/pluralGetSet.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/pluralGetSet.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/pluralGetSet.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/pluralGetSet.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/preParsePostFormat.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/preParsePostFormat.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/preParsePostFormat.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/preParsePostFormat.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/preParsePostFormat.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/preParsePostFormat.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/preParsePostFormat.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/preParsePostFormat.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/quarterOfYear.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/quarterOfYear.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/quarterOfYear.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/quarterOfYear.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/quarterOfYear.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/quarterOfYear.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/quarterOfYear.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/quarterOfYear.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/relativeTime.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/relativeTime.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/relativeTime.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/relativeTime.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/relativeTime.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/relativeTime.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/relativeTime.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/relativeTime.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/timezone.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/timezone.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/timezone.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/timezone.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/timezone.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/timezone.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/timezone.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/timezone.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/toArray.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/toArray.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/toArray.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/toArray.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/toArray.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/toArray.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/toArray.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/toArray.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/toObject.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/toObject.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/toObject.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/toObject.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/toObject.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/toObject.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/toObject.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/toObject.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/updateLocale.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/updateLocale.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/updateLocale.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/updateLocale.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/updateLocale.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/updateLocale.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/updateLocale.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/updateLocale.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/utc.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/utc.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/utc.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/utc.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/utc.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/utc.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/utc.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/utc.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/weekOfYear.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/weekOfYear.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/weekOfYear.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/weekOfYear.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/weekOfYear.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/weekOfYear.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/weekOfYear.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/weekOfYear.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/weekYear.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/weekYear.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/weekYear.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/weekYear.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/weekYear.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/weekYear.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/weekYear.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/weekYear.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/weekday.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/weekday.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/weekday.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/weekday.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/weekday.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/weekday.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/dayjs/plugin/weekday.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/dayjs/plugin/weekday.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/debug/.coveralls.yml b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/debug/.coveralls.yml
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/debug/.coveralls.yml
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/debug/.coveralls.yml
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/debug/.eslintrc b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/debug/.eslintrc
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/debug/.eslintrc
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/debug/.eslintrc
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/debug/.npmignore b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/debug/.npmignore
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/debug/.npmignore
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/debug/.npmignore
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/debug/.travis.yml b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/debug/.travis.yml
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/debug/.travis.yml
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/debug/.travis.yml
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/debug/CHANGELOG.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/debug/CHANGELOG.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/debug/CHANGELOG.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/debug/CHANGELOG.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/debug/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/debug/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/debug/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/debug/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/debug/Makefile b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/debug/Makefile
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/debug/Makefile
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/debug/Makefile
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/debug/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/debug/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/debug/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/debug/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/debug/component.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/debug/component.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/debug/component.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/debug/component.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/debug/karma.conf.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/debug/karma.conf.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/debug/karma.conf.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/debug/karma.conf.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/debug/node.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/debug/node.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/debug/node.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/debug/node.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/debug/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/debug/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/debug/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/debug/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/debug/src/browser.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/debug/src/browser.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/debug/src/browser.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/debug/src/browser.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/debug/src/debug.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/debug/src/debug.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/debug/src/debug.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/debug/src/debug.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/debug/src/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/debug/src/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/debug/src/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/debug/src/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/debug/src/inspector-log.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/debug/src/inspector-log.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/debug/src/inspector-log.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/debug/src/inspector-log.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/debug/src/node.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/debug/src/node.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/debug/src/node.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/debug/src/node.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/delayed-stream/.npmignore b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/delayed-stream/.npmignore
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/delayed-stream/.npmignore
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/delayed-stream/.npmignore
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/delayed-stream/License b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/delayed-stream/License
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/delayed-stream/License
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/delayed-stream/License
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/delayed-stream/Makefile b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/delayed-stream/Makefile
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/delayed-stream/Makefile
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/delayed-stream/Makefile
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/delayed-stream/Readme.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/delayed-stream/Readme.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/delayed-stream/Readme.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/delayed-stream/Readme.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/delayed-stream/lib/delayed_stream.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/delayed-stream/lib/delayed_stream.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/delayed-stream/lib/delayed_stream.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/delayed-stream/lib/delayed_stream.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/delayed-stream/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/delayed-stream/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/delayed-stream/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/delayed-stream/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/depd/History.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/depd/History.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/depd/History.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/depd/History.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/depd/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/depd/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/depd/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/depd/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/depd/Readme.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/depd/Readme.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/depd/Readme.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/depd/Readme.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/depd/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/depd/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/depd/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/depd/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/depd/lib/browser/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/depd/lib/browser/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/depd/lib/browser/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/depd/lib/browser/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/depd/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/depd/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/depd/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/depd/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/destroy/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/destroy/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/destroy/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/destroy/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/destroy/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/destroy/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/destroy/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/destroy/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/destroy/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/destroy/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/destroy/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/destroy/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/destroy/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/destroy/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/destroy/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/destroy/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ecc-jsbn/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ecc-jsbn/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ecc-jsbn/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ecc-jsbn/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ecc-jsbn/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ecc-jsbn/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ecc-jsbn/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ecc-jsbn/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ecc-jsbn/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ecc-jsbn/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ecc-jsbn/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ecc-jsbn/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ecc-jsbn/lib/LICENSE-jsbn b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ecc-jsbn/lib/LICENSE-jsbn
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ecc-jsbn/lib/LICENSE-jsbn
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ecc-jsbn/lib/LICENSE-jsbn
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ecc-jsbn/lib/ec.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ecc-jsbn/lib/ec.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ecc-jsbn/lib/ec.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ecc-jsbn/lib/ec.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ecc-jsbn/lib/sec.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ecc-jsbn/lib/sec.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ecc-jsbn/lib/sec.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ecc-jsbn/lib/sec.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ecc-jsbn/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ecc-jsbn/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ecc-jsbn/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ecc-jsbn/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ecc-jsbn/test.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ecc-jsbn/test.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ecc-jsbn/test.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ecc-jsbn/test.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ee-first/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ee-first/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ee-first/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ee-first/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ee-first/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ee-first/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ee-first/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ee-first/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ee-first/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ee-first/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ee-first/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ee-first/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ee-first/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ee-first/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ee-first/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ee-first/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/encodeurl/HISTORY.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/encodeurl/HISTORY.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/encodeurl/HISTORY.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/encodeurl/HISTORY.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/encodeurl/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/encodeurl/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/encodeurl/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/encodeurl/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/encodeurl/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/encodeurl/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/encodeurl/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/encodeurl/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/encodeurl/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/encodeurl/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/encodeurl/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/encodeurl/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/encodeurl/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/encodeurl/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/encodeurl/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/encodeurl/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/escape-html/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/escape-html/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/escape-html/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/escape-html/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/escape-html/Readme.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/escape-html/Readme.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/escape-html/Readme.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/escape-html/Readme.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/escape-html/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/escape-html/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/escape-html/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/escape-html/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/escape-html/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/escape-html/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/escape-html/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/escape-html/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/etag/HISTORY.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/etag/HISTORY.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/etag/HISTORY.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/etag/HISTORY.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/etag/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/etag/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/etag/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/etag/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/etag/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/etag/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/etag/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/etag/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/etag/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/etag/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/etag/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/etag/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/etag/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/etag/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/etag/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/etag/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/express/History.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/express/History.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/express/History.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/express/History.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/express/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/express/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/express/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/express/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/express/Readme.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/express/Readme.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/express/Readme.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/express/Readme.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/express/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/express/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/express/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/express/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/express/lib/application.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/express/lib/application.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/express/lib/application.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/express/lib/application.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/express/lib/express.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/express/lib/express.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/express/lib/express.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/express/lib/express.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/express/lib/middleware/init.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/express/lib/middleware/init.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/express/lib/middleware/init.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/express/lib/middleware/init.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/express/lib/middleware/query.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/express/lib/middleware/query.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/express/lib/middleware/query.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/express/lib/middleware/query.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/express/lib/request.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/express/lib/request.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/express/lib/request.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/express/lib/request.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/express/lib/response.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/express/lib/response.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/express/lib/response.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/express/lib/response.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/express/lib/router/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/express/lib/router/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/express/lib/router/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/express/lib/router/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/express/lib/router/layer.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/express/lib/router/layer.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/express/lib/router/layer.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/express/lib/router/layer.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/express/lib/router/route.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/express/lib/router/route.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/express/lib/router/route.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/express/lib/router/route.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/express/lib/utils.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/express/lib/utils.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/express/lib/utils.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/express/lib/utils.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/express/lib/view.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/express/lib/view.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/express/lib/view.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/express/lib/view.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/express/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/express/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/express/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/express/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/extend/.editorconfig b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/extend/.editorconfig
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/extend/.editorconfig
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/extend/.editorconfig
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/extend/.eslintrc b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/extend/.eslintrc
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/extend/.eslintrc
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/extend/.eslintrc
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/extend/.jscs.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/extend/.jscs.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/extend/.jscs.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/extend/.jscs.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/extend/.travis.yml b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/extend/.travis.yml
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/extend/.travis.yml
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/extend/.travis.yml
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/extend/CHANGELOG.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/extend/CHANGELOG.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/extend/CHANGELOG.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/extend/CHANGELOG.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/extend/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/extend/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/extend/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/extend/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/extend/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/extend/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/extend/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/extend/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/extend/component.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/extend/component.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/extend/component.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/extend/component.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/extend/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/extend/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/extend/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/extend/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/extend/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/extend/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/extend/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/extend/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/psl/.env b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/extsprintf/.gitmodules
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/psl/.env
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/extsprintf/.gitmodules
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/extsprintf/.npmignore b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/extsprintf/.npmignore
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/extsprintf/.npmignore
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/extsprintf/.npmignore
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/extsprintf/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/extsprintf/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/extsprintf/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/extsprintf/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/extsprintf/Makefile b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/extsprintf/Makefile
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/extsprintf/Makefile
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/extsprintf/Makefile
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/extsprintf/Makefile.targ b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/extsprintf/Makefile.targ
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/extsprintf/Makefile.targ
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/extsprintf/Makefile.targ
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/extsprintf/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/extsprintf/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/extsprintf/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/extsprintf/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/extsprintf/jsl.node.conf b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/extsprintf/jsl.node.conf
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/extsprintf/jsl.node.conf
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/extsprintf/jsl.node.conf
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/extsprintf/lib/extsprintf.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/extsprintf/lib/extsprintf.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/extsprintf/lib/extsprintf.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/extsprintf/lib/extsprintf.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/extsprintf/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/extsprintf/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/extsprintf/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/extsprintf/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/fast-deep-equal/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/fast-deep-equal/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/fast-deep-equal/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/fast-deep-equal/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/fast-deep-equal/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/fast-deep-equal/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/fast-deep-equal/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/fast-deep-equal/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/fast-deep-equal/es6/index.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/fast-deep-equal/es6/index.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/fast-deep-equal/es6/index.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/fast-deep-equal/es6/index.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/fast-deep-equal/es6/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/fast-deep-equal/es6/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/fast-deep-equal/es6/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/fast-deep-equal/es6/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/fast-deep-equal/es6/react.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/fast-deep-equal/es6/react.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/fast-deep-equal/es6/react.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/fast-deep-equal/es6/react.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/fast-deep-equal/es6/react.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/fast-deep-equal/es6/react.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/fast-deep-equal/es6/react.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/fast-deep-equal/es6/react.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/fast-deep-equal/index.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/fast-deep-equal/index.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/fast-deep-equal/index.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/fast-deep-equal/index.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/fast-deep-equal/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/fast-deep-equal/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/fast-deep-equal/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/fast-deep-equal/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/fast-deep-equal/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/fast-deep-equal/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/fast-deep-equal/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/fast-deep-equal/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/fast-deep-equal/react.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/fast-deep-equal/react.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/fast-deep-equal/react.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/fast-deep-equal/react.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/fast-deep-equal/react.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/fast-deep-equal/react.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/fast-deep-equal/react.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/fast-deep-equal/react.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/fast-json-stable-stringify/.eslintrc.yml b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/fast-json-stable-stringify/.eslintrc.yml
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/fast-json-stable-stringify/.eslintrc.yml
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/fast-json-stable-stringify/.eslintrc.yml
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/fast-json-stable-stringify/.github/FUNDING.yml b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/fast-json-stable-stringify/.github/FUNDING.yml
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/fast-json-stable-stringify/.github/FUNDING.yml
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/fast-json-stable-stringify/.github/FUNDING.yml
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/fast-json-stable-stringify/.travis.yml b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/fast-json-stable-stringify/.travis.yml
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/fast-json-stable-stringify/.travis.yml
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/fast-json-stable-stringify/.travis.yml
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/fast-json-stable-stringify/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/fast-json-stable-stringify/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/fast-json-stable-stringify/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/fast-json-stable-stringify/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/fast-json-stable-stringify/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/fast-json-stable-stringify/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/fast-json-stable-stringify/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/fast-json-stable-stringify/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/fast-json-stable-stringify/benchmark/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/fast-json-stable-stringify/benchmark/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/fast-json-stable-stringify/benchmark/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/fast-json-stable-stringify/benchmark/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/fast-json-stable-stringify/benchmark/test.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/fast-json-stable-stringify/benchmark/test.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/fast-json-stable-stringify/benchmark/test.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/fast-json-stable-stringify/benchmark/test.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/fast-json-stable-stringify/example/key_cmp.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/fast-json-stable-stringify/example/key_cmp.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/fast-json-stable-stringify/example/key_cmp.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/fast-json-stable-stringify/example/key_cmp.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/fast-json-stable-stringify/example/nested.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/fast-json-stable-stringify/example/nested.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/fast-json-stable-stringify/example/nested.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/fast-json-stable-stringify/example/nested.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/fast-json-stable-stringify/example/str.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/fast-json-stable-stringify/example/str.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/fast-json-stable-stringify/example/str.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/fast-json-stable-stringify/example/str.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/fast-json-stable-stringify/example/value_cmp.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/fast-json-stable-stringify/example/value_cmp.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/fast-json-stable-stringify/example/value_cmp.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/fast-json-stable-stringify/example/value_cmp.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/fast-json-stable-stringify/index.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/fast-json-stable-stringify/index.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/fast-json-stable-stringify/index.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/fast-json-stable-stringify/index.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/fast-json-stable-stringify/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/fast-json-stable-stringify/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/fast-json-stable-stringify/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/fast-json-stable-stringify/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/fast-json-stable-stringify/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/fast-json-stable-stringify/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/fast-json-stable-stringify/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/fast-json-stable-stringify/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/fast-json-stable-stringify/test/cmp.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/fast-json-stable-stringify/test/cmp.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/fast-json-stable-stringify/test/cmp.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/fast-json-stable-stringify/test/cmp.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/fast-json-stable-stringify/test/nested.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/fast-json-stable-stringify/test/nested.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/fast-json-stable-stringify/test/nested.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/fast-json-stable-stringify/test/nested.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/fast-json-stable-stringify/test/str.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/fast-json-stable-stringify/test/str.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/fast-json-stable-stringify/test/str.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/fast-json-stable-stringify/test/str.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/fast-json-stable-stringify/test/to-json.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/fast-json-stable-stringify/test/to-json.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/fast-json-stable-stringify/test/to-json.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/fast-json-stable-stringify/test/to-json.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/fill-range/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/fill-range/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/fill-range/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/fill-range/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/fill-range/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/fill-range/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/fill-range/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/fill-range/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/fill-range/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/fill-range/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/fill-range/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/fill-range/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/fill-range/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/fill-range/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/fill-range/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/fill-range/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/finalhandler/HISTORY.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/finalhandler/HISTORY.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/finalhandler/HISTORY.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/finalhandler/HISTORY.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/finalhandler/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/finalhandler/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/finalhandler/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/finalhandler/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/finalhandler/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/finalhandler/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/finalhandler/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/finalhandler/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/finalhandler/SECURITY.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/finalhandler/SECURITY.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/finalhandler/SECURITY.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/finalhandler/SECURITY.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/finalhandler/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/finalhandler/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/finalhandler/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/finalhandler/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/finalhandler/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/finalhandler/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/finalhandler/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/finalhandler/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/forever-agent/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/forever-agent/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/forever-agent/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/forever-agent/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/forever-agent/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/forever-agent/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/forever-agent/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/forever-agent/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/forever-agent/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/forever-agent/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/forever-agent/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/forever-agent/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/forever-agent/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/forever-agent/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/forever-agent/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/forever-agent/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/form-data/License b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/form-data/License
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/form-data/License
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/form-data/License
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/form-data/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/form-data/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/form-data/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/form-data/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/form-data/README.md.bak b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/form-data/README.md.bak
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/form-data/README.md.bak
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/form-data/README.md.bak
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/form-data/lib/browser.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/form-data/lib/browser.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/form-data/lib/browser.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/form-data/lib/browser.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/form-data/lib/form_data.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/form-data/lib/form_data.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/form-data/lib/form_data.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/form-data/lib/form_data.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/form-data/lib/populate.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/form-data/lib/populate.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/form-data/lib/populate.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/form-data/lib/populate.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/form-data/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/form-data/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/form-data/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/form-data/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/form-data/yarn.lock b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/form-data/yarn.lock
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/form-data/yarn.lock
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/form-data/yarn.lock
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/forwarded/HISTORY.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/forwarded/HISTORY.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/forwarded/HISTORY.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/forwarded/HISTORY.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/forwarded/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/forwarded/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/forwarded/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/forwarded/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/forwarded/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/forwarded/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/forwarded/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/forwarded/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/forwarded/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/forwarded/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/forwarded/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/forwarded/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/forwarded/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/forwarded/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/forwarded/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/forwarded/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/fresh/HISTORY.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/fresh/HISTORY.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/fresh/HISTORY.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/fresh/HISTORY.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/fresh/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/fresh/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/fresh/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/fresh/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/fresh/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/fresh/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/fresh/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/fresh/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/fresh/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/fresh/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/fresh/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/fresh/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/fresh/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/fresh/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/fresh/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/fresh/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/function-bind/.editorconfig b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/function-bind/.editorconfig
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/function-bind/.editorconfig
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/function-bind/.editorconfig
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/function-bind/.eslintrc b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/function-bind/.eslintrc
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/function-bind/.eslintrc
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/function-bind/.eslintrc
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/function-bind/.jscs.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/function-bind/.jscs.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/function-bind/.jscs.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/function-bind/.jscs.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/function-bind/.npmignore b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/function-bind/.npmignore
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/function-bind/.npmignore
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/function-bind/.npmignore
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/function-bind/.travis.yml b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/function-bind/.travis.yml
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/function-bind/.travis.yml
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/function-bind/.travis.yml
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/function-bind/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/function-bind/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/function-bind/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/function-bind/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/function-bind/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/function-bind/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/function-bind/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/function-bind/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/function-bind/implementation.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/function-bind/implementation.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/function-bind/implementation.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/function-bind/implementation.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/function-bind/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/function-bind/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/function-bind/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/function-bind/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/function-bind/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/function-bind/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/function-bind/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/function-bind/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/function-bind/test/.eslintrc b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/function-bind/test/.eslintrc
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/function-bind/test/.eslintrc
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/function-bind/test/.eslintrc
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/function-bind/test/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/function-bind/test/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/function-bind/test/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/function-bind/test/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/get-intrinsic/.eslintrc b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/get-intrinsic/.eslintrc
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/get-intrinsic/.eslintrc
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/get-intrinsic/.eslintrc
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/get-intrinsic/.github/FUNDING.yml b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/get-intrinsic/.github/FUNDING.yml
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/get-intrinsic/.github/FUNDING.yml
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/get-intrinsic/.github/FUNDING.yml
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/get-intrinsic/.nycrc b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/get-intrinsic/.nycrc
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/get-intrinsic/.nycrc
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/get-intrinsic/.nycrc
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/get-intrinsic/CHANGELOG.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/get-intrinsic/CHANGELOG.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/get-intrinsic/CHANGELOG.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/get-intrinsic/CHANGELOG.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/get-intrinsic/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/get-intrinsic/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/get-intrinsic/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/get-intrinsic/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/get-intrinsic/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/get-intrinsic/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/get-intrinsic/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/get-intrinsic/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/get-intrinsic/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/get-intrinsic/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/get-intrinsic/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/get-intrinsic/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/get-intrinsic/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/get-intrinsic/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/get-intrinsic/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/get-intrinsic/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/get-intrinsic/test/GetIntrinsic.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/get-intrinsic/test/GetIntrinsic.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/get-intrinsic/test/GetIntrinsic.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/get-intrinsic/test/GetIntrinsic.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/getpass/.npmignore b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/getpass/.npmignore
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/getpass/.npmignore
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/getpass/.npmignore
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/getpass/.travis.yml b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/getpass/.travis.yml
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/getpass/.travis.yml
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/getpass/.travis.yml
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/getpass/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/getpass/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/getpass/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/getpass/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/getpass/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/getpass/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/getpass/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/getpass/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/getpass/lib/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/getpass/lib/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/getpass/lib/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/getpass/lib/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/getpass/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/getpass/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/getpass/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/getpass/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/glob-parent/CHANGELOG.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/glob-parent/CHANGELOG.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/glob-parent/CHANGELOG.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/glob-parent/CHANGELOG.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/glob-parent/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/glob-parent/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/glob-parent/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/glob-parent/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/glob-parent/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/glob-parent/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/glob-parent/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/glob-parent/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/glob-parent/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/glob-parent/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/glob-parent/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/glob-parent/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/glob-parent/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/glob-parent/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/glob-parent/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/glob-parent/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/har-schema/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/har-schema/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/har-schema/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/har-schema/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/har-schema/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/har-schema/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/har-schema/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/har-schema/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/har-schema/lib/afterRequest.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/har-schema/lib/afterRequest.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/har-schema/lib/afterRequest.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/har-schema/lib/afterRequest.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/har-schema/lib/beforeRequest.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/har-schema/lib/beforeRequest.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/har-schema/lib/beforeRequest.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/har-schema/lib/beforeRequest.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/har-schema/lib/browser.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/har-schema/lib/browser.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/har-schema/lib/browser.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/har-schema/lib/browser.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/har-schema/lib/cache.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/har-schema/lib/cache.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/har-schema/lib/cache.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/har-schema/lib/cache.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/har-schema/lib/content.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/har-schema/lib/content.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/har-schema/lib/content.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/har-schema/lib/content.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/har-schema/lib/cookie.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/har-schema/lib/cookie.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/har-schema/lib/cookie.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/har-schema/lib/cookie.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/har-schema/lib/creator.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/har-schema/lib/creator.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/har-schema/lib/creator.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/har-schema/lib/creator.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/har-schema/lib/entry.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/har-schema/lib/entry.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/har-schema/lib/entry.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/har-schema/lib/entry.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/har-schema/lib/har.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/har-schema/lib/har.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/har-schema/lib/har.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/har-schema/lib/har.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/har-schema/lib/header.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/har-schema/lib/header.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/har-schema/lib/header.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/har-schema/lib/header.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/har-schema/lib/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/har-schema/lib/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/har-schema/lib/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/har-schema/lib/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/har-schema/lib/log.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/har-schema/lib/log.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/har-schema/lib/log.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/har-schema/lib/log.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/har-schema/lib/page.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/har-schema/lib/page.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/har-schema/lib/page.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/har-schema/lib/page.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/har-schema/lib/pageTimings.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/har-schema/lib/pageTimings.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/har-schema/lib/pageTimings.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/har-schema/lib/pageTimings.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/har-schema/lib/postData.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/har-schema/lib/postData.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/har-schema/lib/postData.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/har-schema/lib/postData.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/har-schema/lib/query.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/har-schema/lib/query.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/har-schema/lib/query.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/har-schema/lib/query.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/har-schema/lib/request.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/har-schema/lib/request.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/har-schema/lib/request.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/har-schema/lib/request.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/har-schema/lib/response.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/har-schema/lib/response.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/har-schema/lib/response.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/har-schema/lib/response.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/har-schema/lib/timings.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/har-schema/lib/timings.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/har-schema/lib/timings.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/har-schema/lib/timings.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/har-schema/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/har-schema/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/har-schema/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/har-schema/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/har-validator/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/har-validator/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/har-validator/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/har-validator/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/har-validator/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/har-validator/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/har-validator/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/har-validator/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/har-validator/lib/async.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/har-validator/lib/async.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/har-validator/lib/async.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/har-validator/lib/async.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/har-validator/lib/error.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/har-validator/lib/error.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/har-validator/lib/error.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/har-validator/lib/error.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/har-validator/lib/promise.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/har-validator/lib/promise.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/har-validator/lib/promise.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/har-validator/lib/promise.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/har-validator/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/har-validator/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/har-validator/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/har-validator/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/has-flag/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/has-flag/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/has-flag/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/has-flag/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/has-flag/license b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/has-flag/license
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/has-flag/license
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/has-flag/license
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/has-flag/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/has-flag/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/has-flag/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/has-flag/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/has-flag/readme.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/has-flag/readme.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/has-flag/readme.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/has-flag/readme.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/has-proto/.eslintrc b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/has-proto/.eslintrc
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/has-proto/.eslintrc
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/has-proto/.eslintrc
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/has-proto/.github/FUNDING.yml b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/has-proto/.github/FUNDING.yml
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/has-proto/.github/FUNDING.yml
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/has-proto/.github/FUNDING.yml
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/has-proto/CHANGELOG.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/has-proto/CHANGELOG.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/has-proto/CHANGELOG.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/has-proto/CHANGELOG.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/has-proto/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/has-proto/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/has-proto/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/has-proto/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/has-proto/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/has-proto/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/has-proto/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/has-proto/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/has-proto/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/has-proto/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/has-proto/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/has-proto/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/has-proto/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/has-proto/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/has-proto/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/has-proto/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/has-proto/test/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/has-proto/test/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/has-proto/test/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/has-proto/test/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/has-symbols/.eslintrc b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/has-symbols/.eslintrc
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/has-symbols/.eslintrc
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/has-symbols/.eslintrc
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/has-symbols/.github/FUNDING.yml b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/has-symbols/.github/FUNDING.yml
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/has-symbols/.github/FUNDING.yml
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/has-symbols/.github/FUNDING.yml
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/has-symbols/.nycrc b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/has-symbols/.nycrc
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/has-symbols/.nycrc
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/has-symbols/.nycrc
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/has-symbols/CHANGELOG.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/has-symbols/CHANGELOG.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/has-symbols/CHANGELOG.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/has-symbols/CHANGELOG.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/has-symbols/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/has-symbols/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/has-symbols/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/has-symbols/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/has-symbols/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/has-symbols/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/has-symbols/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/has-symbols/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/has-symbols/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/has-symbols/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/has-symbols/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/has-symbols/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/has-symbols/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/has-symbols/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/has-symbols/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/has-symbols/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/has-symbols/shams.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/has-symbols/shams.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/has-symbols/shams.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/has-symbols/shams.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/has-symbols/test/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/has-symbols/test/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/has-symbols/test/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/has-symbols/test/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/has-symbols/test/shams/core-js.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/has-symbols/test/shams/core-js.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/has-symbols/test/shams/core-js.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/has-symbols/test/shams/core-js.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/has-symbols/test/shams/get-own-property-symbols.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/has-symbols/test/shams/get-own-property-symbols.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/has-symbols/test/shams/get-own-property-symbols.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/has-symbols/test/shams/get-own-property-symbols.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/has-symbols/test/tests.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/has-symbols/test/tests.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/has-symbols/test/tests.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/has-symbols/test/tests.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/has/LICENSE-MIT b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/has/LICENSE-MIT
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/has/LICENSE-MIT
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/has/LICENSE-MIT
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/has/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/has/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/has/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/has/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/has/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/has/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/has/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/has/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/has/src/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/has/src/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/has/src/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/has/src/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/has/test/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/has/test/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/has/test/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/has/test/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/http-errors/HISTORY.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/http-errors/HISTORY.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/http-errors/HISTORY.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/http-errors/HISTORY.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/http-errors/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/http-errors/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/http-errors/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/http-errors/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/http-errors/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/http-errors/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/http-errors/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/http-errors/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/http-errors/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/http-errors/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/http-errors/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/http-errors/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/http-errors/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/http-errors/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/http-errors/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/http-errors/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/http-signature/.dir-locals.el b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/http-signature/.dir-locals.el
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/http-signature/.dir-locals.el
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/http-signature/.dir-locals.el
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/http-signature/.npmignore b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/http-signature/.npmignore
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/http-signature/.npmignore
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/http-signature/.npmignore
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/http-signature/CHANGES.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/http-signature/CHANGES.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/http-signature/CHANGES.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/http-signature/CHANGES.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/http-signature/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/http-signature/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/http-signature/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/http-signature/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/http-signature/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/http-signature/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/http-signature/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/http-signature/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/http-signature/http_signing.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/http-signature/http_signing.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/http-signature/http_signing.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/http-signature/http_signing.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/http-signature/lib/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/http-signature/lib/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/http-signature/lib/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/http-signature/lib/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/http-signature/lib/parser.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/http-signature/lib/parser.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/http-signature/lib/parser.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/http-signature/lib/parser.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/http-signature/lib/signer.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/http-signature/lib/signer.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/http-signature/lib/signer.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/http-signature/lib/signer.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/http-signature/lib/utils.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/http-signature/lib/utils.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/http-signature/lib/utils.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/http-signature/lib/utils.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/http-signature/lib/verify.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/http-signature/lib/verify.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/http-signature/lib/verify.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/http-signature/lib/verify.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/http-signature/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/http-signature/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/http-signature/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/http-signature/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/iconv-lite/Changelog.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/iconv-lite/Changelog.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/iconv-lite/Changelog.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/iconv-lite/Changelog.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/iconv-lite/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/iconv-lite/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/iconv-lite/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/iconv-lite/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/iconv-lite/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/iconv-lite/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/iconv-lite/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/iconv-lite/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/iconv-lite/encodings/dbcs-codec.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/iconv-lite/encodings/dbcs-codec.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/iconv-lite/encodings/dbcs-codec.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/iconv-lite/encodings/dbcs-codec.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/iconv-lite/encodings/dbcs-data.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/iconv-lite/encodings/dbcs-data.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/iconv-lite/encodings/dbcs-data.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/iconv-lite/encodings/dbcs-data.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/iconv-lite/encodings/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/iconv-lite/encodings/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/iconv-lite/encodings/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/iconv-lite/encodings/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/iconv-lite/encodings/internal.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/iconv-lite/encodings/internal.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/iconv-lite/encodings/internal.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/iconv-lite/encodings/internal.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/iconv-lite/encodings/sbcs-codec.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/iconv-lite/encodings/sbcs-codec.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/iconv-lite/encodings/sbcs-codec.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/iconv-lite/encodings/sbcs-codec.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/iconv-lite/encodings/sbcs-data-generated.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/iconv-lite/encodings/sbcs-data-generated.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/iconv-lite/encodings/sbcs-data-generated.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/iconv-lite/encodings/sbcs-data-generated.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/iconv-lite/encodings/sbcs-data.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/iconv-lite/encodings/sbcs-data.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/iconv-lite/encodings/sbcs-data.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/iconv-lite/encodings/sbcs-data.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/iconv-lite/encodings/tables/big5-added.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/iconv-lite/encodings/tables/big5-added.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/iconv-lite/encodings/tables/big5-added.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/iconv-lite/encodings/tables/big5-added.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/iconv-lite/encodings/tables/cp936.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/iconv-lite/encodings/tables/cp936.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/iconv-lite/encodings/tables/cp936.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/iconv-lite/encodings/tables/cp936.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/iconv-lite/encodings/tables/cp949.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/iconv-lite/encodings/tables/cp949.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/iconv-lite/encodings/tables/cp949.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/iconv-lite/encodings/tables/cp949.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/iconv-lite/encodings/tables/cp950.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/iconv-lite/encodings/tables/cp950.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/iconv-lite/encodings/tables/cp950.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/iconv-lite/encodings/tables/cp950.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/iconv-lite/encodings/tables/eucjp.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/iconv-lite/encodings/tables/eucjp.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/iconv-lite/encodings/tables/eucjp.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/iconv-lite/encodings/tables/eucjp.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/iconv-lite/encodings/tables/gbk-added.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/iconv-lite/encodings/tables/gbk-added.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/iconv-lite/encodings/tables/gbk-added.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/iconv-lite/encodings/tables/gbk-added.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/iconv-lite/encodings/tables/shiftjis.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/iconv-lite/encodings/tables/shiftjis.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/iconv-lite/encodings/tables/shiftjis.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/iconv-lite/encodings/tables/shiftjis.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/iconv-lite/encodings/utf16.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/iconv-lite/encodings/utf16.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/iconv-lite/encodings/utf16.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/iconv-lite/encodings/utf16.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/iconv-lite/encodings/utf7.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/iconv-lite/encodings/utf7.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/iconv-lite/encodings/utf7.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/iconv-lite/encodings/utf7.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/iconv-lite/lib/bom-handling.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/iconv-lite/lib/bom-handling.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/iconv-lite/lib/bom-handling.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/iconv-lite/lib/bom-handling.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/iconv-lite/lib/extend-node.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/iconv-lite/lib/extend-node.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/iconv-lite/lib/extend-node.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/iconv-lite/lib/extend-node.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/iconv-lite/lib/index.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/iconv-lite/lib/index.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/iconv-lite/lib/index.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/iconv-lite/lib/index.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/iconv-lite/lib/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/iconv-lite/lib/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/iconv-lite/lib/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/iconv-lite/lib/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/iconv-lite/lib/streams.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/iconv-lite/lib/streams.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/iconv-lite/lib/streams.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/iconv-lite/lib/streams.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/iconv-lite/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/iconv-lite/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/iconv-lite/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/iconv-lite/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ignore-by-default/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ignore-by-default/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ignore-by-default/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ignore-by-default/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ignore-by-default/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ignore-by-default/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ignore-by-default/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ignore-by-default/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ignore-by-default/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ignore-by-default/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ignore-by-default/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ignore-by-default/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ignore-by-default/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ignore-by-default/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ignore-by-default/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ignore-by-default/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/inherits/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/inherits/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/inherits/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/inherits/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/inherits/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/inherits/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/inherits/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/inherits/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/inherits/inherits.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/inherits/inherits.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/inherits/inherits.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/inherits/inherits.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/inherits/inherits_browser.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/inherits/inherits_browser.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/inherits/inherits_browser.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/inherits/inherits_browser.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/inherits/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/inherits/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/inherits/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/inherits/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ipaddr.js/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ipaddr.js/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ipaddr.js/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ipaddr.js/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ipaddr.js/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ipaddr.js/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ipaddr.js/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ipaddr.js/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ipaddr.js/ipaddr.min.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ipaddr.js/ipaddr.min.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ipaddr.js/ipaddr.min.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ipaddr.js/ipaddr.min.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ipaddr.js/lib/ipaddr.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ipaddr.js/lib/ipaddr.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ipaddr.js/lib/ipaddr.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ipaddr.js/lib/ipaddr.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ipaddr.js/lib/ipaddr.js.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ipaddr.js/lib/ipaddr.js.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ipaddr.js/lib/ipaddr.js.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ipaddr.js/lib/ipaddr.js.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ipaddr.js/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ipaddr.js/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ipaddr.js/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ipaddr.js/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/is-binary-path/index.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/is-binary-path/index.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/is-binary-path/index.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/is-binary-path/index.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/is-binary-path/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/is-binary-path/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/is-binary-path/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/is-binary-path/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/is-binary-path/license b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/is-binary-path/license
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/is-binary-path/license
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/is-binary-path/license
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/is-binary-path/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/is-binary-path/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/is-binary-path/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/is-binary-path/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/is-binary-path/readme.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/is-binary-path/readme.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/is-binary-path/readme.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/is-binary-path/readme.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/is-extglob/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/is-extglob/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/is-extglob/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/is-extglob/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/is-extglob/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/is-extglob/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/is-extglob/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/is-extglob/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/is-extglob/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/is-extglob/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/is-extglob/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/is-extglob/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/is-extglob/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/is-extglob/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/is-extglob/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/is-extglob/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/is-glob/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/is-glob/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/is-glob/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/is-glob/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/is-glob/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/is-glob/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/is-glob/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/is-glob/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/is-glob/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/is-glob/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/is-glob/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/is-glob/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/is-glob/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/is-glob/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/is-glob/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/is-glob/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/is-number/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/is-number/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/is-number/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/is-number/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/is-number/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/is-number/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/is-number/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/is-number/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/is-number/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/is-number/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/is-number/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/is-number/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/is-number/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/is-number/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/is-number/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/is-number/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/is-typedarray/LICENSE.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/is-typedarray/LICENSE.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/is-typedarray/LICENSE.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/is-typedarray/LICENSE.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/is-typedarray/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/is-typedarray/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/is-typedarray/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/is-typedarray/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/is-typedarray/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/is-typedarray/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/is-typedarray/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/is-typedarray/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/is-typedarray/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/is-typedarray/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/is-typedarray/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/is-typedarray/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/is-typedarray/test.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/is-typedarray/test.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/is-typedarray/test.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/is-typedarray/test.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/isstream/.jshintrc b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/isstream/.jshintrc
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/isstream/.jshintrc
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/isstream/.jshintrc
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/isstream/.npmignore b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/isstream/.npmignore
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/isstream/.npmignore
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/isstream/.npmignore
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/isstream/.travis.yml b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/isstream/.travis.yml
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/isstream/.travis.yml
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/isstream/.travis.yml
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/isstream/LICENSE.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/isstream/LICENSE.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/isstream/LICENSE.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/isstream/LICENSE.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/isstream/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/isstream/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/isstream/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/isstream/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/isstream/isstream.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/isstream/isstream.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/isstream/isstream.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/isstream/isstream.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/isstream/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/isstream/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/isstream/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/isstream/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/isstream/test.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/isstream/test.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/isstream/test.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/isstream/test.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/jsbn/.npmignore b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/jsbn/.npmignore
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/jsbn/.npmignore
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/jsbn/.npmignore
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/jsbn/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/jsbn/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/jsbn/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/jsbn/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/jsbn/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/jsbn/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/jsbn/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/jsbn/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/jsbn/example.html b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/jsbn/example.html
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/jsbn/example.html
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/jsbn/example.html
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/jsbn/example.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/jsbn/example.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/jsbn/example.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/jsbn/example.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/jsbn/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/jsbn/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/jsbn/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/jsbn/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/jsbn/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/jsbn/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/jsbn/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/jsbn/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/json-schema-traverse/.eslintrc.yml b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/json-schema-traverse/.eslintrc.yml
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/json-schema-traverse/.eslintrc.yml
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/json-schema-traverse/.eslintrc.yml
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/json-schema-traverse/.travis.yml b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/json-schema-traverse/.travis.yml
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/json-schema-traverse/.travis.yml
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/json-schema-traverse/.travis.yml
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/json-schema-traverse/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/json-schema-traverse/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/json-schema-traverse/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/json-schema-traverse/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/json-schema-traverse/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/json-schema-traverse/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/json-schema-traverse/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/json-schema-traverse/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/json-schema-traverse/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/json-schema-traverse/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/json-schema-traverse/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/json-schema-traverse/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/json-schema-traverse/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/json-schema-traverse/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/json-schema-traverse/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/json-schema-traverse/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/json-schema-traverse/spec/.eslintrc.yml b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/json-schema-traverse/spec/.eslintrc.yml
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/json-schema-traverse/spec/.eslintrc.yml
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/json-schema-traverse/spec/.eslintrc.yml
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/json-schema-traverse/spec/fixtures/schema.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/json-schema-traverse/spec/fixtures/schema.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/json-schema-traverse/spec/fixtures/schema.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/json-schema-traverse/spec/fixtures/schema.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/json-schema-traverse/spec/index.spec.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/json-schema-traverse/spec/index.spec.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/json-schema-traverse/spec/index.spec.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/json-schema-traverse/spec/index.spec.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/json-schema/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/json-schema/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/json-schema/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/json-schema/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/json-schema/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/json-schema/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/json-schema/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/json-schema/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/json-schema/lib/links.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/json-schema/lib/links.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/json-schema/lib/links.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/json-schema/lib/links.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/json-schema/lib/validate.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/json-schema/lib/validate.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/json-schema/lib/validate.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/json-schema/lib/validate.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/json-schema/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/json-schema/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/json-schema/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/json-schema/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/json-stringify-safe/.npmignore b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/json-stringify-safe/.npmignore
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/json-stringify-safe/.npmignore
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/json-stringify-safe/.npmignore
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/json-stringify-safe/CHANGELOG.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/json-stringify-safe/CHANGELOG.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/json-stringify-safe/CHANGELOG.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/json-stringify-safe/CHANGELOG.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/json-stringify-safe/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/json-stringify-safe/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/json-stringify-safe/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/json-stringify-safe/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/json-stringify-safe/Makefile b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/json-stringify-safe/Makefile
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/json-stringify-safe/Makefile
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/json-stringify-safe/Makefile
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/json-stringify-safe/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/json-stringify-safe/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/json-stringify-safe/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/json-stringify-safe/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/json-stringify-safe/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/json-stringify-safe/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/json-stringify-safe/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/json-stringify-safe/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/json-stringify-safe/stringify.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/json-stringify-safe/stringify.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/json-stringify-safe/stringify.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/json-stringify-safe/stringify.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/json-stringify-safe/test/mocha.opts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/json-stringify-safe/test/mocha.opts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/json-stringify-safe/test/mocha.opts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/json-stringify-safe/test/mocha.opts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/json-stringify-safe/test/stringify_test.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/json-stringify-safe/test/stringify_test.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/json-stringify-safe/test/stringify_test.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/json-stringify-safe/test/stringify_test.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/jsprim/CHANGES.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/jsprim/CHANGES.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/jsprim/CHANGES.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/jsprim/CHANGES.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/jsprim/CONTRIBUTING.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/jsprim/CONTRIBUTING.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/jsprim/CONTRIBUTING.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/jsprim/CONTRIBUTING.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/jsprim/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/jsprim/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/jsprim/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/jsprim/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/jsprim/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/jsprim/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/jsprim/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/jsprim/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/jsprim/lib/jsprim.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/jsprim/lib/jsprim.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/jsprim/lib/jsprim.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/jsprim/lib/jsprim.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/jsprim/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/jsprim/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/jsprim/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/jsprim/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/lodash.assign/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/lodash.assign/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/lodash.assign/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/lodash.assign/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/lodash.assign/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/lodash.assign/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/lodash.assign/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/lodash.assign/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/lodash.assign/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/lodash.assign/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/lodash.assign/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/lodash.assign/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/lodash.assign/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/lodash.assign/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/lodash.assign/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/lodash.assign/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/lodash.clonedeep/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/lodash.clonedeep/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/lodash.clonedeep/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/lodash.clonedeep/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/lodash.clonedeep/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/lodash.clonedeep/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/lodash.clonedeep/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/lodash.clonedeep/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/lodash.clonedeep/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/lodash.clonedeep/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/lodash.clonedeep/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/lodash.clonedeep/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/lodash.clonedeep/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/lodash.clonedeep/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/lodash.clonedeep/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/lodash.clonedeep/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/lru-cache/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/lru-cache/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/lru-cache/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/lru-cache/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/lru-cache/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/lru-cache/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/lru-cache/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/lru-cache/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/lru-cache/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/lru-cache/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/lru-cache/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/lru-cache/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/lru-cache/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/lru-cache/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/lru-cache/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/lru-cache/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/media-typer/HISTORY.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/media-typer/HISTORY.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/media-typer/HISTORY.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/media-typer/HISTORY.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/media-typer/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/media-typer/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/media-typer/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/media-typer/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/media-typer/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/media-typer/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/media-typer/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/media-typer/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/media-typer/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/media-typer/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/media-typer/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/media-typer/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/media-typer/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/media-typer/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/media-typer/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/media-typer/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mercadopago/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mercadopago/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mercadopago/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mercadopago/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mercadopago/LICENSE.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mercadopago/LICENSE.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mercadopago/LICENSE.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mercadopago/LICENSE.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mercadopago/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mercadopago/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mercadopago/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mercadopago/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mercadopago/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mercadopago/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mercadopago/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mercadopago/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mercadopago/lib/configurations.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mercadopago/lib/configurations.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mercadopago/lib/configurations.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mercadopago/lib/configurations.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mercadopago/lib/mercadopago-support.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mercadopago/lib/mercadopago-support.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mercadopago/lib/mercadopago-support.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mercadopago/lib/mercadopago-support.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mercadopago/lib/mercadopago.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mercadopago/lib/mercadopago.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mercadopago/lib/mercadopago.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mercadopago/lib/mercadopago.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mercadopago/lib/models/cardModel.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mercadopago/lib/models/cardModel.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mercadopago/lib/models/cardModel.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mercadopago/lib/models/cardModel.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mercadopago/lib/models/cardTokenModel.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mercadopago/lib/models/cardTokenModel.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mercadopago/lib/models/cardTokenModel.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mercadopago/lib/models/cardTokenModel.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mercadopago/lib/models/collectionsModel.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mercadopago/lib/models/collectionsModel.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mercadopago/lib/models/collectionsModel.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mercadopago/lib/models/collectionsModel.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mercadopago/lib/models/customersModel.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mercadopago/lib/models/customersModel.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mercadopago/lib/models/customersModel.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mercadopago/lib/models/customersModel.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mercadopago/lib/models/discountCampaignModel.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mercadopago/lib/models/discountCampaignModel.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mercadopago/lib/models/discountCampaignModel.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mercadopago/lib/models/discountCampaignModel.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mercadopago/lib/models/merchantOrdersModel.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mercadopago/lib/models/merchantOrdersModel.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mercadopago/lib/models/merchantOrdersModel.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mercadopago/lib/models/merchantOrdersModel.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mercadopago/lib/models/moneyRequestsModel.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mercadopago/lib/models/moneyRequestsModel.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mercadopago/lib/models/moneyRequestsModel.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mercadopago/lib/models/moneyRequestsModel.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mercadopago/lib/models/paymentModel.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mercadopago/lib/models/paymentModel.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mercadopago/lib/models/paymentModel.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mercadopago/lib/models/paymentModel.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mercadopago/lib/models/preapprovalModel.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mercadopago/lib/models/preapprovalModel.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mercadopago/lib/models/preapprovalModel.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mercadopago/lib/models/preapprovalModel.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mercadopago/lib/models/preferencesModel.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mercadopago/lib/models/preferencesModel.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mercadopago/lib/models/preferencesModel.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mercadopago/lib/models/preferencesModel.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mercadopago/lib/models/refundModel.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mercadopago/lib/models/refundModel.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mercadopago/lib/models/refundModel.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mercadopago/lib/models/refundModel.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mercadopago/lib/precondition.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mercadopago/lib/precondition.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mercadopago/lib/precondition.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mercadopago/lib/precondition.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mercadopago/lib/request-manager.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mercadopago/lib/request-manager.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mercadopago/lib/request-manager.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mercadopago/lib/request-manager.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mercadopago/lib/resources/card.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mercadopago/lib/resources/card.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mercadopago/lib/resources/card.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mercadopago/lib/resources/card.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mercadopago/lib/resources/cardToken.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mercadopago/lib/resources/cardToken.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mercadopago/lib/resources/cardToken.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mercadopago/lib/resources/cardToken.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mercadopago/lib/resources/collections.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mercadopago/lib/resources/collections.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mercadopago/lib/resources/collections.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mercadopago/lib/resources/collections.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mercadopago/lib/resources/connect.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mercadopago/lib/resources/connect.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mercadopago/lib/resources/connect.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mercadopago/lib/resources/connect.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mercadopago/lib/resources/customers.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mercadopago/lib/resources/customers.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mercadopago/lib/resources/customers.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mercadopago/lib/resources/customers.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mercadopago/lib/resources/discountCampaign.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mercadopago/lib/resources/discountCampaign.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mercadopago/lib/resources/discountCampaign.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mercadopago/lib/resources/discountCampaign.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mercadopago/lib/resources/ipn.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mercadopago/lib/resources/ipn.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mercadopago/lib/resources/ipn.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mercadopago/lib/resources/ipn.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mercadopago/lib/resources/merchantOrders.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mercadopago/lib/resources/merchantOrders.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mercadopago/lib/resources/merchantOrders.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mercadopago/lib/resources/merchantOrders.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mercadopago/lib/resources/moneyRequests.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mercadopago/lib/resources/moneyRequests.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mercadopago/lib/resources/moneyRequests.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mercadopago/lib/resources/moneyRequests.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mercadopago/lib/resources/payment.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mercadopago/lib/resources/payment.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mercadopago/lib/resources/payment.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mercadopago/lib/resources/payment.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mercadopago/lib/resources/paymentMethods.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mercadopago/lib/resources/paymentMethods.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mercadopago/lib/resources/paymentMethods.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mercadopago/lib/resources/paymentMethods.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mercadopago/lib/resources/preapproval.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mercadopago/lib/resources/preapproval.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mercadopago/lib/resources/preapproval.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mercadopago/lib/resources/preapproval.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mercadopago/lib/resources/preferences.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mercadopago/lib/resources/preferences.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mercadopago/lib/resources/preferences.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mercadopago/lib/resources/preferences.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mercadopago/lib/resources/refund.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mercadopago/lib/resources/refund.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mercadopago/lib/resources/refund.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mercadopago/lib/resources/refund.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mercadopago/lib/utils.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mercadopago/lib/utils.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mercadopago/lib/utils.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mercadopago/lib/utils.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mercadopago/lib/utils/mercadopagoDate.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mercadopago/lib/utils/mercadopagoDate.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mercadopago/lib/utils/mercadopagoDate.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mercadopago/lib/utils/mercadopagoDate.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mercadopago/lib/utils/mercadopagoError.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mercadopago/lib/utils/mercadopagoError.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mercadopago/lib/utils/mercadopagoError.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mercadopago/lib/utils/mercadopagoError.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mercadopago/lib/utils/mercadopagoIpnResponse.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mercadopago/lib/utils/mercadopagoIpnResponse.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mercadopago/lib/utils/mercadopagoIpnResponse.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mercadopago/lib/utils/mercadopagoIpnResponse.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mercadopago/lib/utils/mercadopagoResponse.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mercadopago/lib/utils/mercadopagoResponse.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mercadopago/lib/utils/mercadopagoResponse.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mercadopago/lib/utils/mercadopagoResponse.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mercadopago/lib/validation.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mercadopago/lib/validation.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mercadopago/lib/validation.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mercadopago/lib/validation.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mercadopago/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mercadopago/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mercadopago/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mercadopago/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/merge-descriptors/HISTORY.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/merge-descriptors/HISTORY.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/merge-descriptors/HISTORY.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/merge-descriptors/HISTORY.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/merge-descriptors/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/merge-descriptors/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/merge-descriptors/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/merge-descriptors/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/merge-descriptors/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/merge-descriptors/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/merge-descriptors/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/merge-descriptors/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/merge-descriptors/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/merge-descriptors/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/merge-descriptors/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/merge-descriptors/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/merge-descriptors/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/merge-descriptors/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/merge-descriptors/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/merge-descriptors/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/methods/HISTORY.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/methods/HISTORY.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/methods/HISTORY.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/methods/HISTORY.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/methods/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/methods/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/methods/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/methods/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/methods/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/methods/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/methods/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/methods/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/methods/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/methods/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/methods/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/methods/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/methods/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/methods/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/methods/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/methods/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mime-db/HISTORY.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mime-db/HISTORY.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mime-db/HISTORY.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mime-db/HISTORY.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mime-db/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mime-db/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mime-db/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mime-db/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mime-db/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mime-db/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mime-db/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mime-db/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mime-db/db.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mime-db/db.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mime-db/db.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mime-db/db.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mime-db/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mime-db/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mime-db/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mime-db/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mime-db/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mime-db/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mime-db/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mime-db/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mime-types/HISTORY.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mime-types/HISTORY.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mime-types/HISTORY.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mime-types/HISTORY.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mime-types/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mime-types/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mime-types/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mime-types/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mime-types/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mime-types/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mime-types/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mime-types/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mime-types/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mime-types/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mime-types/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mime-types/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mime-types/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mime-types/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mime-types/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mime-types/package.json
diff --git a/LaboratorioIV/Python/Semana9/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mime/.npmignore
similarity index 100%
rename from LaboratorioIV/Python/Semana9/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mime/.npmignore
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mime/CHANGELOG.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mime/CHANGELOG.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mime/CHANGELOG.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mime/CHANGELOG.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mime/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mime/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mime/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mime/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mime/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mime/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mime/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mime/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mime/cli.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mime/cli.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mime/cli.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mime/cli.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mime/mime.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mime/mime.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mime/mime.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mime/mime.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mime/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mime/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mime/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mime/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mime/src/build.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mime/src/build.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mime/src/build.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mime/src/build.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mime/src/test.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mime/src/test.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mime/src/test.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mime/src/test.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mime/types.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mime/types.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/mime/types.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/mime/types.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/minimatch/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/minimatch/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/minimatch/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/minimatch/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/minimatch/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/minimatch/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/minimatch/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/minimatch/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/minimatch/minimatch.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/minimatch/minimatch.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/minimatch/minimatch.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/minimatch/minimatch.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/minimatch/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/minimatch/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/minimatch/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/minimatch/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ms/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ms/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ms/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ms/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ms/license.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ms/license.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ms/license.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ms/license.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ms/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ms/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ms/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ms/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ms/readme.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ms/readme.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/ms/readme.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/ms/readme.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/negotiator/HISTORY.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/negotiator/HISTORY.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/negotiator/HISTORY.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/negotiator/HISTORY.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/negotiator/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/negotiator/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/negotiator/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/negotiator/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/negotiator/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/negotiator/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/negotiator/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/negotiator/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/negotiator/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/negotiator/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/negotiator/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/negotiator/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/negotiator/lib/charset.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/negotiator/lib/charset.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/negotiator/lib/charset.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/negotiator/lib/charset.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/negotiator/lib/encoding.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/negotiator/lib/encoding.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/negotiator/lib/encoding.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/negotiator/lib/encoding.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/negotiator/lib/language.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/negotiator/lib/language.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/negotiator/lib/language.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/negotiator/lib/language.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/negotiator/lib/mediaType.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/negotiator/lib/mediaType.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/negotiator/lib/mediaType.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/negotiator/lib/mediaType.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/negotiator/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/negotiator/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/negotiator/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/negotiator/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/.prettierrc.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/.prettierrc.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/.prettierrc.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/.prettierrc.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/bin/nodemon.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/bin/nodemon.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/bin/nodemon.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/bin/nodemon.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/bin/windows-kill.exe b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/bin/windows-kill.exe
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/bin/windows-kill.exe
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/bin/windows-kill.exe
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/doc/cli/authors.txt b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/doc/cli/authors.txt
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/doc/cli/authors.txt
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/doc/cli/authors.txt
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/doc/cli/config.txt b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/doc/cli/config.txt
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/doc/cli/config.txt
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/doc/cli/config.txt
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/doc/cli/help.txt b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/doc/cli/help.txt
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/doc/cli/help.txt
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/doc/cli/help.txt
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/doc/cli/logo.txt b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/doc/cli/logo.txt
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/doc/cli/logo.txt
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/doc/cli/logo.txt
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/doc/cli/options.txt b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/doc/cli/options.txt
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/doc/cli/options.txt
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/doc/cli/options.txt
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/doc/cli/topics.txt b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/doc/cli/topics.txt
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/doc/cli/topics.txt
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/doc/cli/topics.txt
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/doc/cli/usage.txt b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/doc/cli/usage.txt
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/doc/cli/usage.txt
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/doc/cli/usage.txt
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/doc/cli/whoami.txt b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/doc/cli/whoami.txt
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/doc/cli/whoami.txt
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/doc/cli/whoami.txt
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/lib/cli/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/lib/cli/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/lib/cli/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/lib/cli/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/lib/cli/parse.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/lib/cli/parse.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/lib/cli/parse.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/lib/cli/parse.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/lib/config/command.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/lib/config/command.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/lib/config/command.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/lib/config/command.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/lib/config/defaults.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/lib/config/defaults.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/lib/config/defaults.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/lib/config/defaults.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/lib/config/exec.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/lib/config/exec.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/lib/config/exec.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/lib/config/exec.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/lib/config/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/lib/config/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/lib/config/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/lib/config/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/lib/config/load.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/lib/config/load.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/lib/config/load.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/lib/config/load.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/lib/help/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/lib/help/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/lib/help/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/lib/help/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/lib/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/lib/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/lib/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/lib/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/lib/monitor/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/lib/monitor/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/lib/monitor/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/lib/monitor/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/lib/monitor/match.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/lib/monitor/match.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/lib/monitor/match.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/lib/monitor/match.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/lib/monitor/run.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/lib/monitor/run.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/lib/monitor/run.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/lib/monitor/run.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/lib/monitor/signals.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/lib/monitor/signals.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/lib/monitor/signals.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/lib/monitor/signals.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/lib/monitor/watch.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/lib/monitor/watch.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/lib/monitor/watch.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/lib/monitor/watch.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/lib/nodemon.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/lib/nodemon.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/lib/nodemon.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/lib/nodemon.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/lib/rules/add.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/lib/rules/add.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/lib/rules/add.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/lib/rules/add.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/lib/rules/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/lib/rules/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/lib/rules/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/lib/rules/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/lib/rules/parse.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/lib/rules/parse.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/lib/rules/parse.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/lib/rules/parse.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/lib/spawn.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/lib/spawn.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/lib/spawn.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/lib/spawn.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/lib/utils/bus.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/lib/utils/bus.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/lib/utils/bus.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/lib/utils/bus.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/lib/utils/clone.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/lib/utils/clone.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/lib/utils/clone.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/lib/utils/clone.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/lib/utils/colour.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/lib/utils/colour.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/lib/utils/colour.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/lib/utils/colour.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/lib/utils/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/lib/utils/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/lib/utils/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/lib/utils/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/lib/utils/log.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/lib/utils/log.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/lib/utils/log.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/lib/utils/log.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/lib/utils/merge.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/lib/utils/merge.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/lib/utils/merge.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/lib/utils/merge.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/lib/version.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/lib/version.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/lib/version.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/lib/version.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/node_modules/debug/CHANGELOG.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/node_modules/debug/CHANGELOG.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/node_modules/debug/CHANGELOG.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/node_modules/debug/CHANGELOG.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/node_modules/debug/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/node_modules/debug/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/node_modules/debug/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/node_modules/debug/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/node_modules/debug/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/node_modules/debug/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/node_modules/debug/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/node_modules/debug/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/node_modules/debug/node.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/node_modules/debug/node.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/node_modules/debug/node.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/node_modules/debug/node.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/node_modules/debug/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/node_modules/debug/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/node_modules/debug/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/node_modules/debug/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/node_modules/debug/src/browser.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/node_modules/debug/src/browser.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/node_modules/debug/src/browser.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/node_modules/debug/src/browser.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/node_modules/debug/src/common.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/node_modules/debug/src/common.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/node_modules/debug/src/common.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/node_modules/debug/src/common.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/node_modules/debug/src/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/node_modules/debug/src/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/node_modules/debug/src/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/node_modules/debug/src/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/node_modules/debug/src/node.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/node_modules/debug/src/node.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/node_modules/debug/src/node.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/node_modules/debug/src/node.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/node_modules/ms/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/node_modules/ms/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/node_modules/ms/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/node_modules/ms/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/node_modules/ms/license.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/node_modules/ms/license.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/node_modules/ms/license.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/node_modules/ms/license.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/node_modules/ms/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/node_modules/ms/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/node_modules/ms/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/node_modules/ms/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/node_modules/ms/readme.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/node_modules/ms/readme.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/node_modules/ms/readme.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/node_modules/ms/readme.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nodemon/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nodemon/package.json
diff --git a/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nopt/.npmignore b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nopt/.npmignore
new file mode 100644
index 0000000..e69de29
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nopt/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nopt/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nopt/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nopt/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nopt/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nopt/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nopt/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nopt/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nopt/bin/nopt.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nopt/bin/nopt.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nopt/bin/nopt.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nopt/bin/nopt.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nopt/examples/my-program.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nopt/examples/my-program.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nopt/examples/my-program.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nopt/examples/my-program.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nopt/lib/nopt.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nopt/lib/nopt.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nopt/lib/nopt.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nopt/lib/nopt.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nopt/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nopt/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/nopt/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/nopt/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/normalize-path/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/normalize-path/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/normalize-path/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/normalize-path/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/normalize-path/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/normalize-path/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/normalize-path/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/normalize-path/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/normalize-path/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/normalize-path/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/normalize-path/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/normalize-path/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/normalize-path/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/normalize-path/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/normalize-path/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/normalize-path/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/oauth-sign/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/oauth-sign/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/oauth-sign/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/oauth-sign/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/oauth-sign/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/oauth-sign/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/oauth-sign/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/oauth-sign/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/oauth-sign/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/oauth-sign/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/oauth-sign/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/oauth-sign/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/oauth-sign/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/oauth-sign/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/oauth-sign/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/oauth-sign/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/object-assign/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/object-assign/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/object-assign/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/object-assign/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/object-assign/license b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/object-assign/license
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/object-assign/license
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/object-assign/license
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/object-assign/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/object-assign/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/object-assign/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/object-assign/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/object-assign/readme.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/object-assign/readme.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/object-assign/readme.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/object-assign/readme.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/object-inspect/.eslintrc b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/object-inspect/.eslintrc
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/object-inspect/.eslintrc
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/object-inspect/.eslintrc
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/object-inspect/.github/FUNDING.yml b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/object-inspect/.github/FUNDING.yml
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/object-inspect/.github/FUNDING.yml
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/object-inspect/.github/FUNDING.yml
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/object-inspect/.nycrc b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/object-inspect/.nycrc
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/object-inspect/.nycrc
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/object-inspect/.nycrc
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/object-inspect/CHANGELOG.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/object-inspect/CHANGELOG.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/object-inspect/CHANGELOG.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/object-inspect/CHANGELOG.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/object-inspect/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/object-inspect/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/object-inspect/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/object-inspect/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/object-inspect/example/all.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/object-inspect/example/all.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/object-inspect/example/all.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/object-inspect/example/all.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/object-inspect/example/circular.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/object-inspect/example/circular.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/object-inspect/example/circular.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/object-inspect/example/circular.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/object-inspect/example/fn.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/object-inspect/example/fn.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/object-inspect/example/fn.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/object-inspect/example/fn.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/object-inspect/example/inspect.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/object-inspect/example/inspect.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/object-inspect/example/inspect.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/object-inspect/example/inspect.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/object-inspect/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/object-inspect/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/object-inspect/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/object-inspect/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/object-inspect/package-support.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/object-inspect/package-support.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/object-inspect/package-support.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/object-inspect/package-support.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/object-inspect/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/object-inspect/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/object-inspect/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/object-inspect/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/object-inspect/readme.markdown b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/object-inspect/readme.markdown
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/object-inspect/readme.markdown
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/object-inspect/readme.markdown
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/object-inspect/test-core-js.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/object-inspect/test-core-js.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/object-inspect/test-core-js.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/object-inspect/test-core-js.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/object-inspect/test/bigint.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/object-inspect/test/bigint.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/object-inspect/test/bigint.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/object-inspect/test/bigint.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/object-inspect/test/browser/dom.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/object-inspect/test/browser/dom.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/object-inspect/test/browser/dom.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/object-inspect/test/browser/dom.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/object-inspect/test/circular.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/object-inspect/test/circular.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/object-inspect/test/circular.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/object-inspect/test/circular.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/object-inspect/test/deep.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/object-inspect/test/deep.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/object-inspect/test/deep.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/object-inspect/test/deep.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/object-inspect/test/element.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/object-inspect/test/element.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/object-inspect/test/element.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/object-inspect/test/element.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/object-inspect/test/err.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/object-inspect/test/err.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/object-inspect/test/err.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/object-inspect/test/err.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/object-inspect/test/fakes.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/object-inspect/test/fakes.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/object-inspect/test/fakes.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/object-inspect/test/fakes.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/object-inspect/test/fn.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/object-inspect/test/fn.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/object-inspect/test/fn.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/object-inspect/test/fn.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/object-inspect/test/has.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/object-inspect/test/has.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/object-inspect/test/has.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/object-inspect/test/has.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/object-inspect/test/holes.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/object-inspect/test/holes.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/object-inspect/test/holes.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/object-inspect/test/holes.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/object-inspect/test/indent-option.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/object-inspect/test/indent-option.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/object-inspect/test/indent-option.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/object-inspect/test/indent-option.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/object-inspect/test/inspect.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/object-inspect/test/inspect.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/object-inspect/test/inspect.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/object-inspect/test/inspect.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/object-inspect/test/lowbyte.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/object-inspect/test/lowbyte.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/object-inspect/test/lowbyte.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/object-inspect/test/lowbyte.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/object-inspect/test/number.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/object-inspect/test/number.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/object-inspect/test/number.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/object-inspect/test/number.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/object-inspect/test/quoteStyle.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/object-inspect/test/quoteStyle.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/object-inspect/test/quoteStyle.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/object-inspect/test/quoteStyle.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/object-inspect/test/toStringTag.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/object-inspect/test/toStringTag.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/object-inspect/test/toStringTag.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/object-inspect/test/toStringTag.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/object-inspect/test/undef.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/object-inspect/test/undef.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/object-inspect/test/undef.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/object-inspect/test/undef.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/object-inspect/test/values.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/object-inspect/test/values.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/object-inspect/test/values.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/object-inspect/test/values.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/object-inspect/util.inspect.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/object-inspect/util.inspect.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/object-inspect/util.inspect.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/object-inspect/util.inspect.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/on-finished/HISTORY.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/on-finished/HISTORY.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/on-finished/HISTORY.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/on-finished/HISTORY.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/on-finished/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/on-finished/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/on-finished/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/on-finished/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/on-finished/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/on-finished/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/on-finished/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/on-finished/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/on-finished/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/on-finished/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/on-finished/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/on-finished/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/on-finished/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/on-finished/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/on-finished/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/on-finished/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/parseurl/HISTORY.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/parseurl/HISTORY.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/parseurl/HISTORY.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/parseurl/HISTORY.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/parseurl/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/parseurl/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/parseurl/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/parseurl/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/parseurl/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/parseurl/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/parseurl/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/parseurl/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/parseurl/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/parseurl/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/parseurl/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/parseurl/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/parseurl/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/parseurl/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/parseurl/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/parseurl/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/path-to-regexp/History.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/path-to-regexp/History.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/path-to-regexp/History.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/path-to-regexp/History.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/path-to-regexp/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/path-to-regexp/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/path-to-regexp/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/path-to-regexp/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/path-to-regexp/Readme.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/path-to-regexp/Readme.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/path-to-regexp/Readme.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/path-to-regexp/Readme.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/path-to-regexp/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/path-to-regexp/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/path-to-regexp/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/path-to-regexp/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/path-to-regexp/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/path-to-regexp/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/path-to-regexp/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/path-to-regexp/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/performance-now/.npmignore b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/performance-now/.npmignore
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/performance-now/.npmignore
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/performance-now/.npmignore
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/performance-now/.tm_properties b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/performance-now/.tm_properties
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/performance-now/.tm_properties
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/performance-now/.tm_properties
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/performance-now/.travis.yml b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/performance-now/.travis.yml
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/performance-now/.travis.yml
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/performance-now/.travis.yml
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/performance-now/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/performance-now/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/performance-now/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/performance-now/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/performance-now/lib/performance-now.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/performance-now/lib/performance-now.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/performance-now/lib/performance-now.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/performance-now/lib/performance-now.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/performance-now/lib/performance-now.js.map b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/performance-now/lib/performance-now.js.map
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/performance-now/lib/performance-now.js.map
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/performance-now/lib/performance-now.js.map
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/performance-now/license.txt b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/performance-now/license.txt
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/performance-now/license.txt
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/performance-now/license.txt
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/performance-now/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/performance-now/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/performance-now/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/performance-now/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/performance-now/src/index.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/performance-now/src/index.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/performance-now/src/index.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/performance-now/src/index.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/performance-now/src/performance-now.coffee b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/performance-now/src/performance-now.coffee
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/performance-now/src/performance-now.coffee
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/performance-now/src/performance-now.coffee
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/performance-now/test/mocha.opts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/performance-now/test/mocha.opts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/performance-now/test/mocha.opts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/performance-now/test/mocha.opts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/performance-now/test/performance-now.coffee b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/performance-now/test/performance-now.coffee
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/performance-now/test/performance-now.coffee
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/performance-now/test/performance-now.coffee
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/performance-now/test/scripts.coffee b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/performance-now/test/scripts.coffee
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/performance-now/test/scripts.coffee
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/performance-now/test/scripts.coffee
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/performance-now/test/scripts/delayed-call.coffee b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/performance-now/test/scripts/delayed-call.coffee
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/performance-now/test/scripts/delayed-call.coffee
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/performance-now/test/scripts/delayed-call.coffee
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/performance-now/test/scripts/delayed-require.coffee b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/performance-now/test/scripts/delayed-require.coffee
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/performance-now/test/scripts/delayed-require.coffee
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/performance-now/test/scripts/delayed-require.coffee
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/performance-now/test/scripts/difference.coffee b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/performance-now/test/scripts/difference.coffee
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/performance-now/test/scripts/difference.coffee
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/performance-now/test/scripts/difference.coffee
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/performance-now/test/scripts/initial-value.coffee b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/performance-now/test/scripts/initial-value.coffee
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/performance-now/test/scripts/initial-value.coffee
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/performance-now/test/scripts/initial-value.coffee
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/picomatch/CHANGELOG.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/picomatch/CHANGELOG.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/picomatch/CHANGELOG.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/picomatch/CHANGELOG.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/picomatch/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/picomatch/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/picomatch/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/picomatch/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/picomatch/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/picomatch/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/picomatch/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/picomatch/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/picomatch/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/picomatch/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/picomatch/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/picomatch/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/picomatch/lib/constants.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/picomatch/lib/constants.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/picomatch/lib/constants.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/picomatch/lib/constants.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/picomatch/lib/parse.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/picomatch/lib/parse.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/picomatch/lib/parse.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/picomatch/lib/parse.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/picomatch/lib/picomatch.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/picomatch/lib/picomatch.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/picomatch/lib/picomatch.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/picomatch/lib/picomatch.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/picomatch/lib/scan.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/picomatch/lib/scan.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/picomatch/lib/scan.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/picomatch/lib/scan.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/picomatch/lib/utils.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/picomatch/lib/utils.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/picomatch/lib/utils.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/picomatch/lib/utils.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/picomatch/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/picomatch/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/picomatch/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/picomatch/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/proxy-addr/HISTORY.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/proxy-addr/HISTORY.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/proxy-addr/HISTORY.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/proxy-addr/HISTORY.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/proxy-addr/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/proxy-addr/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/proxy-addr/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/proxy-addr/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/proxy-addr/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/proxy-addr/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/proxy-addr/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/proxy-addr/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/proxy-addr/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/proxy-addr/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/proxy-addr/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/proxy-addr/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/proxy-addr/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/proxy-addr/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/proxy-addr/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/proxy-addr/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/pseudomap/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/pseudomap/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/pseudomap/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/pseudomap/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/pseudomap/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/pseudomap/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/pseudomap/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/pseudomap/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/pseudomap/map.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/pseudomap/map.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/pseudomap/map.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/pseudomap/map.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/pseudomap/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/pseudomap/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/pseudomap/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/pseudomap/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/pseudomap/pseudomap.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/pseudomap/pseudomap.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/pseudomap/pseudomap.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/pseudomap/pseudomap.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/pseudomap/test/basic.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/pseudomap/test/basic.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/pseudomap/test/basic.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/pseudomap/test/basic.js
diff --git a/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/psl/.env b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/psl/.env
new file mode 100644
index 0000000..e69de29
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/psl/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/psl/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/psl/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/psl/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/psl/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/psl/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/psl/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/psl/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/psl/browserstack-logo.svg b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/psl/browserstack-logo.svg
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/psl/browserstack-logo.svg
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/psl/browserstack-logo.svg
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/psl/data/rules.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/psl/data/rules.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/psl/data/rules.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/psl/data/rules.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/psl/dist/psl.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/psl/dist/psl.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/psl/dist/psl.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/psl/dist/psl.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/psl/dist/psl.min.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/psl/dist/psl.min.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/psl/dist/psl.min.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/psl/dist/psl.min.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/psl/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/psl/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/psl/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/psl/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/psl/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/psl/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/psl/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/psl/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/pstree.remy/.travis.yml b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/pstree.remy/.travis.yml
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/pstree.remy/.travis.yml
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/pstree.remy/.travis.yml
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/pstree.remy/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/pstree.remy/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/pstree.remy/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/pstree.remy/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/pstree.remy/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/pstree.remy/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/pstree.remy/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/pstree.remy/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/pstree.remy/lib/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/pstree.remy/lib/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/pstree.remy/lib/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/pstree.remy/lib/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/pstree.remy/lib/tree.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/pstree.remy/lib/tree.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/pstree.remy/lib/tree.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/pstree.remy/lib/tree.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/pstree.remy/lib/utils.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/pstree.remy/lib/utils.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/pstree.remy/lib/utils.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/pstree.remy/lib/utils.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/pstree.remy/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/pstree.remy/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/pstree.remy/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/pstree.remy/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/pstree.remy/tests/fixtures/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/pstree.remy/tests/fixtures/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/pstree.remy/tests/fixtures/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/pstree.remy/tests/fixtures/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/pstree.remy/tests/fixtures/out1 b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/pstree.remy/tests/fixtures/out1
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/pstree.remy/tests/fixtures/out1
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/pstree.remy/tests/fixtures/out1
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/pstree.remy/tests/fixtures/out2 b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/pstree.remy/tests/fixtures/out2
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/pstree.remy/tests/fixtures/out2
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/pstree.remy/tests/fixtures/out2
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/pstree.remy/tests/index.test.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/pstree.remy/tests/index.test.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/pstree.remy/tests/index.test.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/pstree.remy/tests/index.test.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/punycode/LICENSE-MIT.txt b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/punycode/LICENSE-MIT.txt
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/punycode/LICENSE-MIT.txt
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/punycode/LICENSE-MIT.txt
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/punycode/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/punycode/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/punycode/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/punycode/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/punycode/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/punycode/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/punycode/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/punycode/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/punycode/punycode.es6.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/punycode/punycode.es6.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/punycode/punycode.es6.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/punycode/punycode.es6.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/punycode/punycode.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/punycode/punycode.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/punycode/punycode.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/punycode/punycode.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/qs/.editorconfig b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/qs/.editorconfig
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/qs/.editorconfig
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/qs/.editorconfig
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/qs/.eslintrc b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/qs/.eslintrc
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/qs/.eslintrc
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/qs/.eslintrc
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/qs/.github/FUNDING.yml b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/qs/.github/FUNDING.yml
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/qs/.github/FUNDING.yml
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/qs/.github/FUNDING.yml
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/qs/.nycrc b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/qs/.nycrc
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/qs/.nycrc
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/qs/.nycrc
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/qs/CHANGELOG.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/qs/CHANGELOG.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/qs/CHANGELOG.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/qs/CHANGELOG.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/qs/LICENSE.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/qs/LICENSE.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/qs/LICENSE.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/qs/LICENSE.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/qs/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/qs/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/qs/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/qs/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/qs/dist/qs.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/qs/dist/qs.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/qs/dist/qs.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/qs/dist/qs.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/qs/lib/formats.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/qs/lib/formats.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/qs/lib/formats.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/qs/lib/formats.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/qs/lib/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/qs/lib/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/qs/lib/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/qs/lib/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/qs/lib/parse.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/qs/lib/parse.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/qs/lib/parse.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/qs/lib/parse.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/qs/lib/stringify.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/qs/lib/stringify.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/qs/lib/stringify.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/qs/lib/stringify.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/qs/lib/utils.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/qs/lib/utils.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/qs/lib/utils.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/qs/lib/utils.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/qs/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/qs/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/qs/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/qs/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/qs/test/parse.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/qs/test/parse.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/qs/test/parse.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/qs/test/parse.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/qs/test/stringify.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/qs/test/stringify.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/qs/test/stringify.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/qs/test/stringify.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/qs/test/utils.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/qs/test/utils.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/qs/test/utils.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/qs/test/utils.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/range-parser/HISTORY.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/range-parser/HISTORY.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/range-parser/HISTORY.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/range-parser/HISTORY.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/range-parser/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/range-parser/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/range-parser/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/range-parser/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/range-parser/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/range-parser/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/range-parser/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/range-parser/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/range-parser/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/range-parser/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/range-parser/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/range-parser/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/range-parser/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/range-parser/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/range-parser/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/range-parser/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/raw-body/HISTORY.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/raw-body/HISTORY.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/raw-body/HISTORY.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/raw-body/HISTORY.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/raw-body/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/raw-body/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/raw-body/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/raw-body/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/raw-body/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/raw-body/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/raw-body/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/raw-body/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/raw-body/SECURITY.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/raw-body/SECURITY.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/raw-body/SECURITY.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/raw-body/SECURITY.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/raw-body/index.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/raw-body/index.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/raw-body/index.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/raw-body/index.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/raw-body/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/raw-body/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/raw-body/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/raw-body/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/raw-body/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/raw-body/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/raw-body/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/raw-body/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/readdirp/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/readdirp/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/readdirp/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/readdirp/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/readdirp/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/readdirp/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/readdirp/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/readdirp/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/readdirp/index.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/readdirp/index.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/readdirp/index.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/readdirp/index.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/readdirp/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/readdirp/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/readdirp/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/readdirp/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/readdirp/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/readdirp/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/readdirp/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/readdirp/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request-etag/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request-etag/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request-etag/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request-etag/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request-etag/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request-etag/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request-etag/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request-etag/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request-etag/lib/cache.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request-etag/lib/cache.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request-etag/lib/cache.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request-etag/lib/cache.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request-etag/lib/request-etag.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request-etag/lib/request-etag.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request-etag/lib/request-etag.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request-etag/lib/request-etag.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request-etag/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request-etag/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request-etag/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request-etag/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request-etag/tests/cache.tests.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request-etag/tests/cache.tests.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request-etag/tests/cache.tests.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request-etag/tests/cache.tests.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request-etag/tests/request-etag.tests.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request-etag/tests/request-etag.tests.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request-etag/tests/request-etag.tests.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request-etag/tests/request-etag.tests.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/CHANGELOG.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/CHANGELOG.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/CHANGELOG.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/CHANGELOG.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/lib/auth.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/lib/auth.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/lib/auth.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/lib/auth.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/lib/cookies.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/lib/cookies.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/lib/cookies.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/lib/cookies.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/lib/getProxyFromURI.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/lib/getProxyFromURI.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/lib/getProxyFromURI.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/lib/getProxyFromURI.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/lib/har.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/lib/har.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/lib/har.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/lib/har.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/lib/hawk.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/lib/hawk.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/lib/hawk.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/lib/hawk.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/lib/helpers.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/lib/helpers.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/lib/helpers.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/lib/helpers.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/lib/multipart.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/lib/multipart.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/lib/multipart.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/lib/multipart.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/lib/oauth.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/lib/oauth.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/lib/oauth.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/lib/oauth.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/lib/querystring.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/lib/querystring.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/lib/querystring.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/lib/querystring.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/lib/redirect.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/lib/redirect.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/lib/redirect.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/lib/redirect.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/lib/tunnel.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/lib/tunnel.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/lib/tunnel.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/lib/tunnel.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/node_modules/.bin/uuid b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/node_modules/.bin/uuid
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/node_modules/.bin/uuid
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/node_modules/.bin/uuid
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/node_modules/.bin/uuid.cmd b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/node_modules/.bin/uuid.cmd
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/node_modules/.bin/uuid.cmd
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/node_modules/.bin/uuid.cmd
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/node_modules/.bin/uuid.ps1 b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/node_modules/.bin/uuid.ps1
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/node_modules/.bin/uuid.ps1
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/node_modules/.bin/uuid.ps1
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/node_modules/qs/.editorconfig b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/node_modules/qs/.editorconfig
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/node_modules/qs/.editorconfig
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/node_modules/qs/.editorconfig
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/node_modules/qs/.eslintrc b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/node_modules/qs/.eslintrc
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/node_modules/qs/.eslintrc
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/node_modules/qs/.eslintrc
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/node_modules/qs/.github/FUNDING.yml b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/node_modules/qs/.github/FUNDING.yml
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/node_modules/qs/.github/FUNDING.yml
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/node_modules/qs/.github/FUNDING.yml
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/node_modules/qs/.nycrc b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/node_modules/qs/.nycrc
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/node_modules/qs/.nycrc
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/node_modules/qs/.nycrc
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/node_modules/qs/CHANGELOG.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/node_modules/qs/CHANGELOG.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/node_modules/qs/CHANGELOG.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/node_modules/qs/CHANGELOG.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/node_modules/qs/LICENSE.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/node_modules/qs/LICENSE.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/node_modules/qs/LICENSE.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/node_modules/qs/LICENSE.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/node_modules/qs/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/node_modules/qs/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/node_modules/qs/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/node_modules/qs/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/node_modules/qs/bower.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/node_modules/qs/bower.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/node_modules/qs/bower.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/node_modules/qs/bower.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/node_modules/qs/component.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/node_modules/qs/component.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/node_modules/qs/component.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/node_modules/qs/component.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/node_modules/qs/dist/qs.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/node_modules/qs/dist/qs.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/node_modules/qs/dist/qs.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/node_modules/qs/dist/qs.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/node_modules/qs/lib/formats.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/node_modules/qs/lib/formats.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/node_modules/qs/lib/formats.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/node_modules/qs/lib/formats.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/node_modules/qs/lib/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/node_modules/qs/lib/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/node_modules/qs/lib/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/node_modules/qs/lib/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/node_modules/qs/lib/parse.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/node_modules/qs/lib/parse.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/node_modules/qs/lib/parse.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/node_modules/qs/lib/parse.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/node_modules/qs/lib/stringify.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/node_modules/qs/lib/stringify.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/node_modules/qs/lib/stringify.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/node_modules/qs/lib/stringify.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/node_modules/qs/lib/utils.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/node_modules/qs/lib/utils.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/node_modules/qs/lib/utils.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/node_modules/qs/lib/utils.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/node_modules/qs/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/node_modules/qs/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/node_modules/qs/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/node_modules/qs/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/node_modules/qs/test/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/node_modules/qs/test/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/node_modules/qs/test/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/node_modules/qs/test/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/node_modules/qs/test/parse.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/node_modules/qs/test/parse.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/node_modules/qs/test/parse.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/node_modules/qs/test/parse.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/node_modules/qs/test/stringify.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/node_modules/qs/test/stringify.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/node_modules/qs/test/stringify.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/node_modules/qs/test/stringify.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/node_modules/qs/test/utils.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/node_modules/qs/test/utils.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/node_modules/qs/test/utils.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/node_modules/qs/test/utils.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/node_modules/uuid/AUTHORS b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/node_modules/uuid/AUTHORS
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/node_modules/uuid/AUTHORS
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/node_modules/uuid/AUTHORS
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/node_modules/uuid/CHANGELOG.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/node_modules/uuid/CHANGELOG.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/node_modules/uuid/CHANGELOG.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/node_modules/uuid/CHANGELOG.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/node_modules/uuid/LICENSE.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/node_modules/uuid/LICENSE.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/node_modules/uuid/LICENSE.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/node_modules/uuid/LICENSE.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/node_modules/uuid/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/node_modules/uuid/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/node_modules/uuid/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/node_modules/uuid/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/node_modules/uuid/bin/uuid b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/node_modules/uuid/bin/uuid
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/node_modules/uuid/bin/uuid
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/node_modules/uuid/bin/uuid
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/node_modules/uuid/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/node_modules/uuid/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/node_modules/uuid/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/node_modules/uuid/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/node_modules/uuid/lib/bytesToUuid.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/node_modules/uuid/lib/bytesToUuid.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/node_modules/uuid/lib/bytesToUuid.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/node_modules/uuid/lib/bytesToUuid.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/node_modules/uuid/lib/md5-browser.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/node_modules/uuid/lib/md5-browser.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/node_modules/uuid/lib/md5-browser.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/node_modules/uuid/lib/md5-browser.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/node_modules/uuid/lib/md5.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/node_modules/uuid/lib/md5.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/node_modules/uuid/lib/md5.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/node_modules/uuid/lib/md5.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/node_modules/uuid/lib/rng-browser.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/node_modules/uuid/lib/rng-browser.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/node_modules/uuid/lib/rng-browser.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/node_modules/uuid/lib/rng-browser.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/node_modules/uuid/lib/rng.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/node_modules/uuid/lib/rng.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/node_modules/uuid/lib/rng.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/node_modules/uuid/lib/rng.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/node_modules/uuid/lib/sha1-browser.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/node_modules/uuid/lib/sha1-browser.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/node_modules/uuid/lib/sha1-browser.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/node_modules/uuid/lib/sha1-browser.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/node_modules/uuid/lib/sha1.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/node_modules/uuid/lib/sha1.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/node_modules/uuid/lib/sha1.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/node_modules/uuid/lib/sha1.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/node_modules/uuid/lib/v35.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/node_modules/uuid/lib/v35.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/node_modules/uuid/lib/v35.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/node_modules/uuid/lib/v35.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/node_modules/uuid/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/node_modules/uuid/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/node_modules/uuid/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/node_modules/uuid/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/node_modules/uuid/v1.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/node_modules/uuid/v1.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/node_modules/uuid/v1.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/node_modules/uuid/v1.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/node_modules/uuid/v3.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/node_modules/uuid/v3.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/node_modules/uuid/v3.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/node_modules/uuid/v3.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/node_modules/uuid/v4.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/node_modules/uuid/v4.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/node_modules/uuid/v4.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/node_modules/uuid/v4.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/node_modules/uuid/v5.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/node_modules/uuid/v5.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/node_modules/uuid/v5.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/node_modules/uuid/v5.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/request.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/request.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/request/request.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/request/request.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/safe-buffer/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/safe-buffer/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/safe-buffer/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/safe-buffer/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/safe-buffer/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/safe-buffer/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/safe-buffer/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/safe-buffer/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/safe-buffer/index.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/safe-buffer/index.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/safe-buffer/index.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/safe-buffer/index.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/safe-buffer/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/safe-buffer/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/safe-buffer/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/safe-buffer/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/safe-buffer/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/safe-buffer/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/safe-buffer/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/safe-buffer/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/safer-buffer/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/safer-buffer/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/safer-buffer/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/safer-buffer/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/safer-buffer/Porting-Buffer.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/safer-buffer/Porting-Buffer.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/safer-buffer/Porting-Buffer.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/safer-buffer/Porting-Buffer.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/safer-buffer/Readme.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/safer-buffer/Readme.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/safer-buffer/Readme.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/safer-buffer/Readme.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/safer-buffer/dangerous.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/safer-buffer/dangerous.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/safer-buffer/dangerous.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/safer-buffer/dangerous.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/safer-buffer/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/safer-buffer/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/safer-buffer/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/safer-buffer/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/safer-buffer/safer.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/safer-buffer/safer.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/safer-buffer/safer.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/safer-buffer/safer.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/safer-buffer/tests.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/safer-buffer/tests.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/safer-buffer/tests.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/safer-buffer/tests.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/bin/semver.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/bin/semver.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/bin/semver.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/bin/semver.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/classes/comparator.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/classes/comparator.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/classes/comparator.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/classes/comparator.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/classes/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/classes/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/classes/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/classes/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/classes/range.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/classes/range.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/classes/range.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/classes/range.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/classes/semver.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/classes/semver.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/classes/semver.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/classes/semver.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/functions/clean.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/functions/clean.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/functions/clean.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/functions/clean.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/functions/cmp.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/functions/cmp.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/functions/cmp.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/functions/cmp.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/functions/coerce.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/functions/coerce.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/functions/coerce.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/functions/coerce.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/functions/compare-build.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/functions/compare-build.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/functions/compare-build.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/functions/compare-build.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/functions/compare-loose.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/functions/compare-loose.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/functions/compare-loose.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/functions/compare-loose.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/functions/compare.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/functions/compare.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/functions/compare.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/functions/compare.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/functions/diff.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/functions/diff.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/functions/diff.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/functions/diff.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/functions/eq.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/functions/eq.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/functions/eq.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/functions/eq.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/functions/gt.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/functions/gt.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/functions/gt.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/functions/gt.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/functions/gte.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/functions/gte.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/functions/gte.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/functions/gte.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/functions/inc.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/functions/inc.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/functions/inc.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/functions/inc.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/functions/lt.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/functions/lt.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/functions/lt.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/functions/lt.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/functions/lte.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/functions/lte.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/functions/lte.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/functions/lte.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/functions/major.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/functions/major.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/functions/major.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/functions/major.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/functions/minor.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/functions/minor.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/functions/minor.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/functions/minor.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/functions/neq.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/functions/neq.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/functions/neq.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/functions/neq.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/functions/parse.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/functions/parse.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/functions/parse.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/functions/parse.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/functions/patch.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/functions/patch.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/functions/patch.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/functions/patch.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/functions/prerelease.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/functions/prerelease.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/functions/prerelease.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/functions/prerelease.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/functions/rcompare.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/functions/rcompare.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/functions/rcompare.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/functions/rcompare.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/functions/rsort.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/functions/rsort.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/functions/rsort.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/functions/rsort.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/functions/satisfies.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/functions/satisfies.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/functions/satisfies.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/functions/satisfies.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/functions/sort.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/functions/sort.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/functions/sort.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/functions/sort.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/functions/valid.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/functions/valid.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/functions/valid.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/functions/valid.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/internal/constants.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/internal/constants.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/internal/constants.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/internal/constants.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/internal/debug.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/internal/debug.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/internal/debug.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/internal/debug.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/internal/identifiers.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/internal/identifiers.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/internal/identifiers.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/internal/identifiers.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/internal/parse-options.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/internal/parse-options.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/internal/parse-options.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/internal/parse-options.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/internal/re.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/internal/re.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/internal/re.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/internal/re.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/node_modules/lru-cache/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/node_modules/lru-cache/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/node_modules/lru-cache/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/node_modules/lru-cache/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/node_modules/lru-cache/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/node_modules/lru-cache/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/node_modules/lru-cache/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/node_modules/lru-cache/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/node_modules/lru-cache/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/node_modules/lru-cache/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/node_modules/lru-cache/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/node_modules/lru-cache/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/node_modules/lru-cache/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/node_modules/lru-cache/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/node_modules/lru-cache/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/node_modules/lru-cache/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/node_modules/yallist/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/node_modules/yallist/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/node_modules/yallist/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/node_modules/yallist/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/node_modules/yallist/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/node_modules/yallist/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/node_modules/yallist/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/node_modules/yallist/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/node_modules/yallist/iterator.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/node_modules/yallist/iterator.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/node_modules/yallist/iterator.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/node_modules/yallist/iterator.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/node_modules/yallist/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/node_modules/yallist/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/node_modules/yallist/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/node_modules/yallist/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/node_modules/yallist/yallist.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/node_modules/yallist/yallist.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/node_modules/yallist/yallist.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/node_modules/yallist/yallist.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/preload.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/preload.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/preload.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/preload.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/range.bnf b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/range.bnf
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/range.bnf
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/range.bnf
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/ranges/gtr.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/ranges/gtr.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/ranges/gtr.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/ranges/gtr.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/ranges/intersects.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/ranges/intersects.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/ranges/intersects.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/ranges/intersects.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/ranges/ltr.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/ranges/ltr.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/ranges/ltr.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/ranges/ltr.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/ranges/max-satisfying.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/ranges/max-satisfying.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/ranges/max-satisfying.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/ranges/max-satisfying.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/ranges/min-satisfying.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/ranges/min-satisfying.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/ranges/min-satisfying.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/ranges/min-satisfying.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/ranges/min-version.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/ranges/min-version.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/ranges/min-version.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/ranges/min-version.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/ranges/outside.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/ranges/outside.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/ranges/outside.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/ranges/outside.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/ranges/simplify.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/ranges/simplify.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/ranges/simplify.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/ranges/simplify.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/ranges/subset.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/ranges/subset.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/ranges/subset.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/ranges/subset.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/ranges/to-comparators.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/ranges/to-comparators.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/ranges/to-comparators.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/ranges/to-comparators.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/ranges/valid.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/ranges/valid.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/semver/ranges/valid.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/semver/ranges/valid.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/send/HISTORY.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/send/HISTORY.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/send/HISTORY.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/send/HISTORY.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/send/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/send/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/send/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/send/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/send/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/send/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/send/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/send/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/send/SECURITY.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/send/SECURITY.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/send/SECURITY.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/send/SECURITY.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/send/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/send/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/send/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/send/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/send/node_modules/ms/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/send/node_modules/ms/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/send/node_modules/ms/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/send/node_modules/ms/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/send/node_modules/ms/license.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/send/node_modules/ms/license.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/send/node_modules/ms/license.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/send/node_modules/ms/license.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/send/node_modules/ms/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/send/node_modules/ms/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/send/node_modules/ms/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/send/node_modules/ms/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/send/node_modules/ms/readme.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/send/node_modules/ms/readme.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/send/node_modules/ms/readme.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/send/node_modules/ms/readme.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/send/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/send/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/send/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/send/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/serve-static/HISTORY.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/serve-static/HISTORY.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/serve-static/HISTORY.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/serve-static/HISTORY.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/serve-static/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/serve-static/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/serve-static/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/serve-static/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/serve-static/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/serve-static/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/serve-static/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/serve-static/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/serve-static/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/serve-static/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/serve-static/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/serve-static/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/serve-static/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/serve-static/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/serve-static/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/serve-static/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/setprototypeof/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/setprototypeof/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/setprototypeof/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/setprototypeof/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/setprototypeof/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/setprototypeof/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/setprototypeof/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/setprototypeof/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/setprototypeof/index.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/setprototypeof/index.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/setprototypeof/index.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/setprototypeof/index.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/setprototypeof/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/setprototypeof/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/setprototypeof/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/setprototypeof/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/setprototypeof/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/setprototypeof/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/setprototypeof/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/setprototypeof/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/setprototypeof/test/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/setprototypeof/test/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/setprototypeof/test/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/setprototypeof/test/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/side-channel/.eslintignore b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/side-channel/.eslintignore
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/side-channel/.eslintignore
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/side-channel/.eslintignore
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/side-channel/.eslintrc b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/side-channel/.eslintrc
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/side-channel/.eslintrc
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/side-channel/.eslintrc
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/side-channel/.github/FUNDING.yml b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/side-channel/.github/FUNDING.yml
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/side-channel/.github/FUNDING.yml
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/side-channel/.github/FUNDING.yml
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/side-channel/.nycrc b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/side-channel/.nycrc
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/side-channel/.nycrc
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/side-channel/.nycrc
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/side-channel/CHANGELOG.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/side-channel/CHANGELOG.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/side-channel/CHANGELOG.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/side-channel/CHANGELOG.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/side-channel/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/side-channel/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/side-channel/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/side-channel/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/side-channel/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/side-channel/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/side-channel/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/side-channel/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/side-channel/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/side-channel/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/side-channel/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/side-channel/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/side-channel/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/side-channel/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/side-channel/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/side-channel/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/side-channel/test/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/side-channel/test/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/side-channel/test/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/side-channel/test/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/simple-update-notifier/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/simple-update-notifier/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/simple-update-notifier/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/simple-update-notifier/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/simple-update-notifier/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/simple-update-notifier/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/simple-update-notifier/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/simple-update-notifier/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/simple-update-notifier/build/index.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/simple-update-notifier/build/index.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/simple-update-notifier/build/index.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/simple-update-notifier/build/index.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/simple-update-notifier/build/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/simple-update-notifier/build/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/simple-update-notifier/build/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/simple-update-notifier/build/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/simple-update-notifier/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/simple-update-notifier/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/simple-update-notifier/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/simple-update-notifier/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/simple-update-notifier/src/borderedText.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/simple-update-notifier/src/borderedText.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/simple-update-notifier/src/borderedText.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/simple-update-notifier/src/borderedText.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/simple-update-notifier/src/cache.spec.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/simple-update-notifier/src/cache.spec.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/simple-update-notifier/src/cache.spec.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/simple-update-notifier/src/cache.spec.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/simple-update-notifier/src/cache.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/simple-update-notifier/src/cache.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/simple-update-notifier/src/cache.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/simple-update-notifier/src/cache.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/simple-update-notifier/src/getDistVersion.spec.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/simple-update-notifier/src/getDistVersion.spec.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/simple-update-notifier/src/getDistVersion.spec.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/simple-update-notifier/src/getDistVersion.spec.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/simple-update-notifier/src/getDistVersion.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/simple-update-notifier/src/getDistVersion.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/simple-update-notifier/src/getDistVersion.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/simple-update-notifier/src/getDistVersion.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/simple-update-notifier/src/hasNewVersion.spec.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/simple-update-notifier/src/hasNewVersion.spec.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/simple-update-notifier/src/hasNewVersion.spec.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/simple-update-notifier/src/hasNewVersion.spec.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/simple-update-notifier/src/hasNewVersion.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/simple-update-notifier/src/hasNewVersion.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/simple-update-notifier/src/hasNewVersion.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/simple-update-notifier/src/hasNewVersion.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/simple-update-notifier/src/index.spec.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/simple-update-notifier/src/index.spec.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/simple-update-notifier/src/index.spec.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/simple-update-notifier/src/index.spec.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/simple-update-notifier/src/index.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/simple-update-notifier/src/index.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/simple-update-notifier/src/index.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/simple-update-notifier/src/index.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/simple-update-notifier/src/isNpmOrYarn.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/simple-update-notifier/src/isNpmOrYarn.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/simple-update-notifier/src/isNpmOrYarn.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/simple-update-notifier/src/isNpmOrYarn.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/simple-update-notifier/src/types.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/simple-update-notifier/src/types.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/simple-update-notifier/src/types.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/simple-update-notifier/src/types.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/sshpk/.travis.yml b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/sshpk/.travis.yml
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/sshpk/.travis.yml
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/sshpk/.travis.yml
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/sshpk/Jenkinsfile b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/sshpk/Jenkinsfile
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/sshpk/Jenkinsfile
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/sshpk/Jenkinsfile
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/sshpk/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/sshpk/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/sshpk/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/sshpk/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/sshpk/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/sshpk/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/sshpk/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/sshpk/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/sshpk/bin/sshpk-conv b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/sshpk/bin/sshpk-conv
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/sshpk/bin/sshpk-conv
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/sshpk/bin/sshpk-conv
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/sshpk/bin/sshpk-sign b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/sshpk/bin/sshpk-sign
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/sshpk/bin/sshpk-sign
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/sshpk/bin/sshpk-sign
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/sshpk/bin/sshpk-verify b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/sshpk/bin/sshpk-verify
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/sshpk/bin/sshpk-verify
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/sshpk/bin/sshpk-verify
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/sshpk/lib/algs.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/sshpk/lib/algs.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/sshpk/lib/algs.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/sshpk/lib/algs.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/sshpk/lib/certificate.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/sshpk/lib/certificate.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/sshpk/lib/certificate.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/sshpk/lib/certificate.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/sshpk/lib/dhe.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/sshpk/lib/dhe.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/sshpk/lib/dhe.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/sshpk/lib/dhe.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/sshpk/lib/ed-compat.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/sshpk/lib/ed-compat.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/sshpk/lib/ed-compat.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/sshpk/lib/ed-compat.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/sshpk/lib/errors.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/sshpk/lib/errors.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/sshpk/lib/errors.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/sshpk/lib/errors.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/sshpk/lib/fingerprint.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/sshpk/lib/fingerprint.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/sshpk/lib/fingerprint.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/sshpk/lib/fingerprint.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/sshpk/lib/formats/auto.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/sshpk/lib/formats/auto.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/sshpk/lib/formats/auto.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/sshpk/lib/formats/auto.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/sshpk/lib/formats/dnssec.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/sshpk/lib/formats/dnssec.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/sshpk/lib/formats/dnssec.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/sshpk/lib/formats/dnssec.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/sshpk/lib/formats/openssh-cert.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/sshpk/lib/formats/openssh-cert.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/sshpk/lib/formats/openssh-cert.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/sshpk/lib/formats/openssh-cert.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/sshpk/lib/formats/pem.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/sshpk/lib/formats/pem.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/sshpk/lib/formats/pem.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/sshpk/lib/formats/pem.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/sshpk/lib/formats/pkcs1.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/sshpk/lib/formats/pkcs1.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/sshpk/lib/formats/pkcs1.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/sshpk/lib/formats/pkcs1.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/sshpk/lib/formats/pkcs8.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/sshpk/lib/formats/pkcs8.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/sshpk/lib/formats/pkcs8.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/sshpk/lib/formats/pkcs8.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/sshpk/lib/formats/putty.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/sshpk/lib/formats/putty.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/sshpk/lib/formats/putty.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/sshpk/lib/formats/putty.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/sshpk/lib/formats/rfc4253.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/sshpk/lib/formats/rfc4253.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/sshpk/lib/formats/rfc4253.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/sshpk/lib/formats/rfc4253.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/sshpk/lib/formats/ssh-private.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/sshpk/lib/formats/ssh-private.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/sshpk/lib/formats/ssh-private.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/sshpk/lib/formats/ssh-private.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/sshpk/lib/formats/ssh.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/sshpk/lib/formats/ssh.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/sshpk/lib/formats/ssh.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/sshpk/lib/formats/ssh.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/sshpk/lib/formats/x509-pem.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/sshpk/lib/formats/x509-pem.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/sshpk/lib/formats/x509-pem.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/sshpk/lib/formats/x509-pem.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/sshpk/lib/formats/x509.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/sshpk/lib/formats/x509.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/sshpk/lib/formats/x509.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/sshpk/lib/formats/x509.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/sshpk/lib/identity.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/sshpk/lib/identity.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/sshpk/lib/identity.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/sshpk/lib/identity.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/sshpk/lib/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/sshpk/lib/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/sshpk/lib/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/sshpk/lib/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/sshpk/lib/key.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/sshpk/lib/key.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/sshpk/lib/key.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/sshpk/lib/key.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/sshpk/lib/private-key.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/sshpk/lib/private-key.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/sshpk/lib/private-key.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/sshpk/lib/private-key.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/sshpk/lib/signature.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/sshpk/lib/signature.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/sshpk/lib/signature.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/sshpk/lib/signature.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/sshpk/lib/ssh-buffer.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/sshpk/lib/ssh-buffer.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/sshpk/lib/ssh-buffer.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/sshpk/lib/ssh-buffer.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/sshpk/lib/utils.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/sshpk/lib/utils.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/sshpk/lib/utils.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/sshpk/lib/utils.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/sshpk/man/man1/sshpk-conv.1 b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/sshpk/man/man1/sshpk-conv.1
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/sshpk/man/man1/sshpk-conv.1
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/sshpk/man/man1/sshpk-conv.1
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/sshpk/man/man1/sshpk-sign.1 b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/sshpk/man/man1/sshpk-sign.1
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/sshpk/man/man1/sshpk-sign.1
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/sshpk/man/man1/sshpk-sign.1
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/sshpk/man/man1/sshpk-verify.1 b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/sshpk/man/man1/sshpk-verify.1
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/sshpk/man/man1/sshpk-verify.1
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/sshpk/man/man1/sshpk-verify.1
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/sshpk/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/sshpk/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/sshpk/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/sshpk/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/statuses/HISTORY.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/statuses/HISTORY.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/statuses/HISTORY.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/statuses/HISTORY.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/statuses/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/statuses/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/statuses/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/statuses/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/statuses/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/statuses/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/statuses/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/statuses/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/statuses/codes.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/statuses/codes.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/statuses/codes.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/statuses/codes.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/statuses/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/statuses/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/statuses/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/statuses/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/statuses/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/statuses/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/statuses/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/statuses/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/supports-color/browser.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/supports-color/browser.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/supports-color/browser.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/supports-color/browser.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/supports-color/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/supports-color/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/supports-color/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/supports-color/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/supports-color/license b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/supports-color/license
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/supports-color/license
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/supports-color/license
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/supports-color/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/supports-color/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/supports-color/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/supports-color/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/supports-color/readme.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/supports-color/readme.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/supports-color/readme.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/supports-color/readme.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/to-regex-range/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/to-regex-range/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/to-regex-range/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/to-regex-range/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/to-regex-range/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/to-regex-range/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/to-regex-range/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/to-regex-range/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/to-regex-range/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/to-regex-range/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/to-regex-range/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/to-regex-range/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/to-regex-range/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/to-regex-range/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/to-regex-range/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/to-regex-range/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/toidentifier/HISTORY.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/toidentifier/HISTORY.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/toidentifier/HISTORY.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/toidentifier/HISTORY.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/toidentifier/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/toidentifier/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/toidentifier/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/toidentifier/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/toidentifier/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/toidentifier/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/toidentifier/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/toidentifier/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/toidentifier/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/toidentifier/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/toidentifier/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/toidentifier/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/toidentifier/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/toidentifier/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/toidentifier/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/toidentifier/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/touch/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/touch/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/touch/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/touch/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/touch/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/touch/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/touch/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/touch/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/touch/bin/nodetouch.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/touch/bin/nodetouch.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/touch/bin/nodetouch.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/touch/bin/nodetouch.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/touch/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/touch/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/touch/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/touch/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/touch/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/touch/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/touch/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/touch/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/tough-cookie/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/tough-cookie/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/tough-cookie/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/tough-cookie/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/tough-cookie/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/tough-cookie/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/tough-cookie/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/tough-cookie/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/tough-cookie/lib/cookie.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/tough-cookie/lib/cookie.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/tough-cookie/lib/cookie.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/tough-cookie/lib/cookie.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/tough-cookie/lib/memstore.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/tough-cookie/lib/memstore.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/tough-cookie/lib/memstore.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/tough-cookie/lib/memstore.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/tough-cookie/lib/pathMatch.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/tough-cookie/lib/pathMatch.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/tough-cookie/lib/pathMatch.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/tough-cookie/lib/pathMatch.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/tough-cookie/lib/permuteDomain.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/tough-cookie/lib/permuteDomain.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/tough-cookie/lib/permuteDomain.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/tough-cookie/lib/permuteDomain.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/tough-cookie/lib/pubsuffix-psl.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/tough-cookie/lib/pubsuffix-psl.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/tough-cookie/lib/pubsuffix-psl.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/tough-cookie/lib/pubsuffix-psl.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/tough-cookie/lib/store.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/tough-cookie/lib/store.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/tough-cookie/lib/store.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/tough-cookie/lib/store.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/tough-cookie/lib/version.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/tough-cookie/lib/version.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/tough-cookie/lib/version.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/tough-cookie/lib/version.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/tough-cookie/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/tough-cookie/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/tough-cookie/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/tough-cookie/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/tunnel-agent/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/tunnel-agent/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/tunnel-agent/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/tunnel-agent/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/tunnel-agent/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/tunnel-agent/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/tunnel-agent/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/tunnel-agent/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/tunnel-agent/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/tunnel-agent/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/tunnel-agent/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/tunnel-agent/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/tunnel-agent/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/tunnel-agent/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/tunnel-agent/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/tunnel-agent/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/tweetnacl/.npmignore b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/tweetnacl/.npmignore
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/tweetnacl/.npmignore
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/tweetnacl/.npmignore
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/tweetnacl/AUTHORS.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/tweetnacl/AUTHORS.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/tweetnacl/AUTHORS.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/tweetnacl/AUTHORS.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/tweetnacl/CHANGELOG.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/tweetnacl/CHANGELOG.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/tweetnacl/CHANGELOG.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/tweetnacl/CHANGELOG.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/tweetnacl/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/tweetnacl/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/tweetnacl/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/tweetnacl/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/tweetnacl/PULL_REQUEST_TEMPLATE.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/tweetnacl/PULL_REQUEST_TEMPLATE.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/tweetnacl/PULL_REQUEST_TEMPLATE.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/tweetnacl/PULL_REQUEST_TEMPLATE.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/tweetnacl/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/tweetnacl/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/tweetnacl/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/tweetnacl/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/tweetnacl/nacl-fast.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/tweetnacl/nacl-fast.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/tweetnacl/nacl-fast.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/tweetnacl/nacl-fast.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/tweetnacl/nacl-fast.min.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/tweetnacl/nacl-fast.min.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/tweetnacl/nacl-fast.min.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/tweetnacl/nacl-fast.min.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/tweetnacl/nacl.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/tweetnacl/nacl.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/tweetnacl/nacl.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/tweetnacl/nacl.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/tweetnacl/nacl.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/tweetnacl/nacl.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/tweetnacl/nacl.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/tweetnacl/nacl.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/tweetnacl/nacl.min.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/tweetnacl/nacl.min.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/tweetnacl/nacl.min.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/tweetnacl/nacl.min.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/tweetnacl/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/tweetnacl/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/tweetnacl/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/tweetnacl/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/type-is/HISTORY.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/type-is/HISTORY.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/type-is/HISTORY.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/type-is/HISTORY.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/type-is/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/type-is/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/type-is/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/type-is/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/type-is/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/type-is/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/type-is/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/type-is/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/type-is/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/type-is/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/type-is/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/type-is/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/type-is/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/type-is/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/type-is/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/type-is/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/undefsafe/.github/workflows/release.yml b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/undefsafe/.github/workflows/release.yml
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/undefsafe/.github/workflows/release.yml
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/undefsafe/.github/workflows/release.yml
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/undefsafe/.jscsrc b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/undefsafe/.jscsrc
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/undefsafe/.jscsrc
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/undefsafe/.jscsrc
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/undefsafe/.jshintrc b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/undefsafe/.jshintrc
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/undefsafe/.jshintrc
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/undefsafe/.jshintrc
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/undefsafe/.travis.yml b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/undefsafe/.travis.yml
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/undefsafe/.travis.yml
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/undefsafe/.travis.yml
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/undefsafe/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/undefsafe/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/undefsafe/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/undefsafe/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/undefsafe/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/undefsafe/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/undefsafe/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/undefsafe/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/undefsafe/example.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/undefsafe/example.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/undefsafe/example.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/undefsafe/example.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/undefsafe/lib/undefsafe.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/undefsafe/lib/undefsafe.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/undefsafe/lib/undefsafe.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/undefsafe/lib/undefsafe.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/undefsafe/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/undefsafe/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/undefsafe/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/undefsafe/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/unpipe/HISTORY.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/unpipe/HISTORY.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/unpipe/HISTORY.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/unpipe/HISTORY.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/unpipe/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/unpipe/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/unpipe/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/unpipe/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/unpipe/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/unpipe/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/unpipe/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/unpipe/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/unpipe/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/unpipe/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/unpipe/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/unpipe/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/unpipe/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/unpipe/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/unpipe/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/unpipe/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uri-js/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uri-js/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uri-js/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uri-js/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uri-js/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uri-js/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uri-js/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uri-js/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uri-js/dist/es5/uri.all.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uri-js/dist/es5/uri.all.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uri-js/dist/es5/uri.all.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uri-js/dist/es5/uri.all.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uri-js/dist/es5/uri.all.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uri-js/dist/es5/uri.all.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uri-js/dist/es5/uri.all.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uri-js/dist/es5/uri.all.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uri-js/dist/es5/uri.all.js.map b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uri-js/dist/es5/uri.all.js.map
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uri-js/dist/es5/uri.all.js.map
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uri-js/dist/es5/uri.all.js.map
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uri-js/dist/es5/uri.all.min.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uri-js/dist/es5/uri.all.min.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uri-js/dist/es5/uri.all.min.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uri-js/dist/es5/uri.all.min.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uri-js/dist/es5/uri.all.min.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uri-js/dist/es5/uri.all.min.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uri-js/dist/es5/uri.all.min.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uri-js/dist/es5/uri.all.min.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uri-js/dist/es5/uri.all.min.js.map b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uri-js/dist/es5/uri.all.min.js.map
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uri-js/dist/es5/uri.all.min.js.map
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uri-js/dist/es5/uri.all.min.js.map
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uri-js/dist/esnext/index.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uri-js/dist/esnext/index.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uri-js/dist/esnext/index.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uri-js/dist/esnext/index.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uri-js/dist/esnext/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uri-js/dist/esnext/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uri-js/dist/esnext/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uri-js/dist/esnext/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uri-js/dist/esnext/index.js.map b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uri-js/dist/esnext/index.js.map
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uri-js/dist/esnext/index.js.map
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uri-js/dist/esnext/index.js.map
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uri-js/dist/esnext/regexps-iri.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uri-js/dist/esnext/regexps-iri.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uri-js/dist/esnext/regexps-iri.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uri-js/dist/esnext/regexps-iri.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uri-js/dist/esnext/regexps-iri.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uri-js/dist/esnext/regexps-iri.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uri-js/dist/esnext/regexps-iri.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uri-js/dist/esnext/regexps-iri.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uri-js/dist/esnext/regexps-iri.js.map b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uri-js/dist/esnext/regexps-iri.js.map
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uri-js/dist/esnext/regexps-iri.js.map
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uri-js/dist/esnext/regexps-iri.js.map
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uri-js/dist/esnext/regexps-uri.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uri-js/dist/esnext/regexps-uri.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uri-js/dist/esnext/regexps-uri.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uri-js/dist/esnext/regexps-uri.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uri-js/dist/esnext/regexps-uri.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uri-js/dist/esnext/regexps-uri.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uri-js/dist/esnext/regexps-uri.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uri-js/dist/esnext/regexps-uri.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uri-js/dist/esnext/regexps-uri.js.map b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uri-js/dist/esnext/regexps-uri.js.map
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uri-js/dist/esnext/regexps-uri.js.map
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uri-js/dist/esnext/regexps-uri.js.map
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uri-js/dist/esnext/schemes/http.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uri-js/dist/esnext/schemes/http.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uri-js/dist/esnext/schemes/http.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uri-js/dist/esnext/schemes/http.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uri-js/dist/esnext/schemes/http.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uri-js/dist/esnext/schemes/http.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uri-js/dist/esnext/schemes/http.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uri-js/dist/esnext/schemes/http.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uri-js/dist/esnext/schemes/http.js.map b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uri-js/dist/esnext/schemes/http.js.map
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uri-js/dist/esnext/schemes/http.js.map
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uri-js/dist/esnext/schemes/http.js.map
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uri-js/dist/esnext/schemes/https.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uri-js/dist/esnext/schemes/https.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uri-js/dist/esnext/schemes/https.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uri-js/dist/esnext/schemes/https.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uri-js/dist/esnext/schemes/https.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uri-js/dist/esnext/schemes/https.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uri-js/dist/esnext/schemes/https.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uri-js/dist/esnext/schemes/https.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uri-js/dist/esnext/schemes/https.js.map b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uri-js/dist/esnext/schemes/https.js.map
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uri-js/dist/esnext/schemes/https.js.map
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uri-js/dist/esnext/schemes/https.js.map
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uri-js/dist/esnext/schemes/mailto.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uri-js/dist/esnext/schemes/mailto.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uri-js/dist/esnext/schemes/mailto.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uri-js/dist/esnext/schemes/mailto.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uri-js/dist/esnext/schemes/mailto.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uri-js/dist/esnext/schemes/mailto.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uri-js/dist/esnext/schemes/mailto.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uri-js/dist/esnext/schemes/mailto.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uri-js/dist/esnext/schemes/mailto.js.map b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uri-js/dist/esnext/schemes/mailto.js.map
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uri-js/dist/esnext/schemes/mailto.js.map
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uri-js/dist/esnext/schemes/mailto.js.map
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uri-js/dist/esnext/schemes/urn-uuid.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uri-js/dist/esnext/schemes/urn-uuid.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uri-js/dist/esnext/schemes/urn-uuid.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uri-js/dist/esnext/schemes/urn-uuid.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uri-js/dist/esnext/schemes/urn-uuid.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uri-js/dist/esnext/schemes/urn-uuid.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uri-js/dist/esnext/schemes/urn-uuid.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uri-js/dist/esnext/schemes/urn-uuid.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uri-js/dist/esnext/schemes/urn-uuid.js.map b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uri-js/dist/esnext/schemes/urn-uuid.js.map
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uri-js/dist/esnext/schemes/urn-uuid.js.map
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uri-js/dist/esnext/schemes/urn-uuid.js.map
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uri-js/dist/esnext/schemes/urn.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uri-js/dist/esnext/schemes/urn.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uri-js/dist/esnext/schemes/urn.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uri-js/dist/esnext/schemes/urn.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uri-js/dist/esnext/schemes/urn.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uri-js/dist/esnext/schemes/urn.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uri-js/dist/esnext/schemes/urn.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uri-js/dist/esnext/schemes/urn.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uri-js/dist/esnext/schemes/urn.js.map b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uri-js/dist/esnext/schemes/urn.js.map
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uri-js/dist/esnext/schemes/urn.js.map
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uri-js/dist/esnext/schemes/urn.js.map
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uri-js/dist/esnext/schemes/ws.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uri-js/dist/esnext/schemes/ws.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uri-js/dist/esnext/schemes/ws.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uri-js/dist/esnext/schemes/ws.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uri-js/dist/esnext/schemes/ws.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uri-js/dist/esnext/schemes/ws.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uri-js/dist/esnext/schemes/ws.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uri-js/dist/esnext/schemes/ws.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uri-js/dist/esnext/schemes/ws.js.map b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uri-js/dist/esnext/schemes/ws.js.map
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uri-js/dist/esnext/schemes/ws.js.map
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uri-js/dist/esnext/schemes/ws.js.map
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uri-js/dist/esnext/schemes/wss.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uri-js/dist/esnext/schemes/wss.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uri-js/dist/esnext/schemes/wss.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uri-js/dist/esnext/schemes/wss.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uri-js/dist/esnext/schemes/wss.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uri-js/dist/esnext/schemes/wss.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uri-js/dist/esnext/schemes/wss.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uri-js/dist/esnext/schemes/wss.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uri-js/dist/esnext/schemes/wss.js.map b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uri-js/dist/esnext/schemes/wss.js.map
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uri-js/dist/esnext/schemes/wss.js.map
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uri-js/dist/esnext/schemes/wss.js.map
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uri-js/dist/esnext/uri.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uri-js/dist/esnext/uri.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uri-js/dist/esnext/uri.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uri-js/dist/esnext/uri.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uri-js/dist/esnext/uri.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uri-js/dist/esnext/uri.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uri-js/dist/esnext/uri.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uri-js/dist/esnext/uri.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uri-js/dist/esnext/uri.js.map b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uri-js/dist/esnext/uri.js.map
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uri-js/dist/esnext/uri.js.map
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uri-js/dist/esnext/uri.js.map
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uri-js/dist/esnext/util.d.ts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uri-js/dist/esnext/util.d.ts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uri-js/dist/esnext/util.d.ts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uri-js/dist/esnext/util.d.ts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uri-js/dist/esnext/util.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uri-js/dist/esnext/util.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uri-js/dist/esnext/util.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uri-js/dist/esnext/util.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uri-js/dist/esnext/util.js.map b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uri-js/dist/esnext/util.js.map
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uri-js/dist/esnext/util.js.map
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uri-js/dist/esnext/util.js.map
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uri-js/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uri-js/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uri-js/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uri-js/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uri-js/yarn.lock b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uri-js/yarn.lock
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uri-js/yarn.lock
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uri-js/yarn.lock
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/utils-merge/.npmignore b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/utils-merge/.npmignore
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/utils-merge/.npmignore
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/utils-merge/.npmignore
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/utils-merge/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/utils-merge/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/utils-merge/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/utils-merge/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/utils-merge/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/utils-merge/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/utils-merge/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/utils-merge/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/utils-merge/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/utils-merge/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/utils-merge/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/utils-merge/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/utils-merge/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/utils-merge/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/utils-merge/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/utils-merge/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uuid/.npmignore b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uuid/.npmignore
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uuid/.npmignore
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uuid/.npmignore
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uuid/.travis.yml b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uuid/.travis.yml
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uuid/.travis.yml
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uuid/.travis.yml
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uuid/AUTHORS b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uuid/AUTHORS
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uuid/AUTHORS
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uuid/AUTHORS
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uuid/HISTORY.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uuid/HISTORY.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uuid/HISTORY.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uuid/HISTORY.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uuid/LICENSE.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uuid/LICENSE.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uuid/LICENSE.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uuid/LICENSE.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uuid/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uuid/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uuid/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uuid/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uuid/bin/uuid b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uuid/bin/uuid
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uuid/bin/uuid
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uuid/bin/uuid
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uuid/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uuid/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uuid/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uuid/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uuid/lib/bytesToUuid.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uuid/lib/bytesToUuid.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uuid/lib/bytesToUuid.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uuid/lib/bytesToUuid.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uuid/lib/rng-browser.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uuid/lib/rng-browser.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uuid/lib/rng-browser.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uuid/lib/rng-browser.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uuid/lib/rng.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uuid/lib/rng.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uuid/lib/rng.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uuid/lib/rng.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uuid/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uuid/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uuid/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uuid/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uuid/test/mocha.opts b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uuid/test/mocha.opts
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uuid/test/mocha.opts
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uuid/test/mocha.opts
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uuid/test/test.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uuid/test/test.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uuid/test/test.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uuid/test/test.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uuid/v1.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uuid/v1.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uuid/v1.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uuid/v1.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uuid/v4.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uuid/v4.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/uuid/v4.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/uuid/v4.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/vary/HISTORY.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/vary/HISTORY.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/vary/HISTORY.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/vary/HISTORY.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/vary/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/vary/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/vary/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/vary/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/vary/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/vary/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/vary/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/vary/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/vary/index.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/vary/index.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/vary/index.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/vary/index.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/vary/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/vary/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/vary/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/vary/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/verror/.npmignore b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/verror/.npmignore
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/verror/.npmignore
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/verror/.npmignore
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/verror/CHANGES.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/verror/CHANGES.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/verror/CHANGES.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/verror/CHANGES.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/verror/CONTRIBUTING.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/verror/CONTRIBUTING.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/verror/CONTRIBUTING.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/verror/CONTRIBUTING.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/verror/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/verror/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/verror/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/verror/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/verror/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/verror/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/verror/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/verror/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/verror/lib/verror.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/verror/lib/verror.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/verror/lib/verror.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/verror/lib/verror.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/verror/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/verror/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/verror/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/verror/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/yallist/LICENSE b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/yallist/LICENSE
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/yallist/LICENSE
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/yallist/LICENSE
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/yallist/README.md b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/yallist/README.md
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/yallist/README.md
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/yallist/README.md
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/yallist/iterator.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/yallist/iterator.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/yallist/iterator.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/yallist/iterator.js
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/yallist/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/yallist/package.json
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/yallist/package.json
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/yallist/package.json
diff --git a/LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/yallist/yallist.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/yallist/yallist.js
similarity index 100%
rename from LaboratorioIV/JavaScript/Clase4/e-commerce/server/node_modules/yallist/yallist.js
rename to LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/node_modules/yallist/yallist.js
diff --git a/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/package-lock.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/package-lock.json
new file mode 100644
index 0000000..2fa2fea
--- /dev/null
+++ b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/package-lock.json
@@ -0,0 +1,1032 @@
+{
+ "name": "server",
+ "version": "1.0.0",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "server",
+ "version": "1.0.0",
+ "license": "ISC",
+ "dependencies": {
+ "cors": "^2.8.5",
+ "express": "^4.18.2",
+ "mercadopago": "^2.0.3",
+ "nodemon": "^3.0.1"
+ }
+ },
+ "node_modules/abbrev": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
+ "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="
+ },
+ "node_modules/accepts": {
+ "version": "1.3.8",
+ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
+ "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
+ "dependencies": {
+ "mime-types": "~2.1.34",
+ "negotiator": "0.6.3"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/anymatch": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
+ "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
+ "dependencies": {
+ "normalize-path": "^3.0.0",
+ "picomatch": "^2.0.4"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/array-flatten": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
+ "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg=="
+ },
+ "node_modules/balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
+ },
+ "node_modules/binary-extensions": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
+ "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/body-parser": {
+ "version": "1.20.1",
+ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz",
+ "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==",
+ "dependencies": {
+ "bytes": "3.1.2",
+ "content-type": "~1.0.4",
+ "debug": "2.6.9",
+ "depd": "2.0.0",
+ "destroy": "1.2.0",
+ "http-errors": "2.0.0",
+ "iconv-lite": "0.4.24",
+ "on-finished": "2.4.1",
+ "qs": "6.11.0",
+ "raw-body": "2.5.1",
+ "type-is": "~1.6.18",
+ "unpipe": "1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8",
+ "npm": "1.2.8000 || >= 1.4.16"
+ }
+ },
+ "node_modules/brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/braces": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
+ "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+ "dependencies": {
+ "fill-range": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/bytes": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
+ "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/call-bind": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
+ "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
+ "dependencies": {
+ "function-bind": "^1.1.1",
+ "get-intrinsic": "^1.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/chokidar": {
+ "version": "3.5.3",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
+ "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://paulmillr.com/funding/"
+ }
+ ],
+ "dependencies": {
+ "anymatch": "~3.1.2",
+ "braces": "~3.0.2",
+ "glob-parent": "~5.1.2",
+ "is-binary-path": "~2.1.0",
+ "is-glob": "~4.0.1",
+ "normalize-path": "~3.0.0",
+ "readdirp": "~3.6.0"
+ },
+ "engines": {
+ "node": ">= 8.10.0"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.2"
+ }
+ },
+ "node_modules/concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
+ },
+ "node_modules/content-disposition": {
+ "version": "0.5.4",
+ "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
+ "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
+ "dependencies": {
+ "safe-buffer": "5.2.1"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/content-type": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
+ "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/cookie": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz",
+ "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/cookie-signature": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
+ "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ=="
+ },
+ "node_modules/cors": {
+ "version": "2.8.5",
+ "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz",
+ "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==",
+ "dependencies": {
+ "object-assign": "^4",
+ "vary": "^1"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/depd": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
+ "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/destroy": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
+ "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
+ "engines": {
+ "node": ">= 0.8",
+ "npm": "1.2.8000 || >= 1.4.16"
+ }
+ },
+ "node_modules/ee-first": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
+ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
+ },
+ "node_modules/encodeurl": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
+ "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/escape-html": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
+ "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
+ },
+ "node_modules/etag": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
+ "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/express": {
+ "version": "4.18.2",
+ "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz",
+ "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==",
+ "dependencies": {
+ "accepts": "~1.3.8",
+ "array-flatten": "1.1.1",
+ "body-parser": "1.20.1",
+ "content-disposition": "0.5.4",
+ "content-type": "~1.0.4",
+ "cookie": "0.5.0",
+ "cookie-signature": "1.0.6",
+ "debug": "2.6.9",
+ "depd": "2.0.0",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "etag": "~1.8.1",
+ "finalhandler": "1.2.0",
+ "fresh": "0.5.2",
+ "http-errors": "2.0.0",
+ "merge-descriptors": "1.0.1",
+ "methods": "~1.1.2",
+ "on-finished": "2.4.1",
+ "parseurl": "~1.3.3",
+ "path-to-regexp": "0.1.7",
+ "proxy-addr": "~2.0.7",
+ "qs": "6.11.0",
+ "range-parser": "~1.2.1",
+ "safe-buffer": "5.2.1",
+ "send": "0.18.0",
+ "serve-static": "1.15.0",
+ "setprototypeof": "1.2.0",
+ "statuses": "2.0.1",
+ "type-is": "~1.6.18",
+ "utils-merge": "1.0.1",
+ "vary": "~1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.10.0"
+ }
+ },
+ "node_modules/fill-range": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
+ "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+ "dependencies": {
+ "to-regex-range": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/finalhandler": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
+ "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
+ "dependencies": {
+ "debug": "2.6.9",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "on-finished": "2.4.1",
+ "parseurl": "~1.3.3",
+ "statuses": "2.0.1",
+ "unpipe": "~1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/forwarded": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
+ "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/fresh": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
+ "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/fsevents": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+ "hasInstallScript": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+ }
+ },
+ "node_modules/function-bind": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
+ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
+ },
+ "node_modules/get-intrinsic": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz",
+ "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==",
+ "dependencies": {
+ "function-bind": "^1.1.1",
+ "has": "^1.0.3",
+ "has-proto": "^1.0.1",
+ "has-symbols": "^1.0.3"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "dependencies": {
+ "is-glob": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/has": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
+ "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+ "dependencies": {
+ "function-bind": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4.0"
+ }
+ },
+ "node_modules/has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/has-proto": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz",
+ "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-symbols": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
+ "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/http-errors": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
+ "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
+ "dependencies": {
+ "depd": "2.0.0",
+ "inherits": "2.0.4",
+ "setprototypeof": "1.2.0",
+ "statuses": "2.0.1",
+ "toidentifier": "1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/iconv-lite": {
+ "version": "0.4.24",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+ "dependencies": {
+ "safer-buffer": ">= 2.1.2 < 3"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/ignore-by-default": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz",
+ "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA=="
+ },
+ "node_modules/inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
+ },
+ "node_modules/ipaddr.js": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
+ "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/is-binary-path": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
+ "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
+ "dependencies": {
+ "binary-extensions": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-glob": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+ "dependencies": {
+ "is-extglob": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+ "engines": {
+ "node": ">=0.12.0"
+ }
+ },
+ "node_modules/media-typer": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
+ "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mercadopago": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/mercadopago/-/mercadopago-2.0.3.tgz",
+ "integrity": "sha512-4aYlKSZxw6WrLFeJ8OKR+CW0GNwzmEfyoiyqY6aEt/BQDwKp0QCwcL7pGrNIXrR6Gjj+N1XeUv7ZaI5SmN8RTg==",
+ "dependencies": {
+ "node-fetch": "^2.6.12",
+ "uuid": "^9.0.0"
+ }
+ },
+ "node_modules/merge-descriptors": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
+ "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w=="
+ },
+ "node_modules/methods": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
+ "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mime": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
+ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
+ "bin": {
+ "mime": "cli.js"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/mime-db": {
+ "version": "1.52.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mime-types": {
+ "version": "2.1.35",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+ "dependencies": {
+ "mime-db": "1.52.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
+ },
+ "node_modules/negotiator": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
+ "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/node-fetch": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
+ "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
+ "dependencies": {
+ "whatwg-url": "^5.0.0"
+ },
+ "engines": {
+ "node": "4.x || >=6.0.0"
+ },
+ "peerDependencies": {
+ "encoding": "^0.1.0"
+ },
+ "peerDependenciesMeta": {
+ "encoding": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/nodemon": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.0.1.tgz",
+ "integrity": "sha512-g9AZ7HmkhQkqXkRc20w+ZfQ73cHLbE8hnPbtaFbFtCumZsjyMhKk9LajQ07U5Ux28lvFjZ5X7HvWR1xzU8jHVw==",
+ "dependencies": {
+ "chokidar": "^3.5.2",
+ "debug": "^3.2.7",
+ "ignore-by-default": "^1.0.1",
+ "minimatch": "^3.1.2",
+ "pstree.remy": "^1.1.8",
+ "semver": "^7.5.3",
+ "simple-update-notifier": "^2.0.0",
+ "supports-color": "^5.5.0",
+ "touch": "^3.1.0",
+ "undefsafe": "^2.0.5"
+ },
+ "bin": {
+ "nodemon": "bin/nodemon.js"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/nodemon"
+ }
+ },
+ "node_modules/nodemon/node_modules/debug": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+ "dependencies": {
+ "ms": "^2.1.1"
+ }
+ },
+ "node_modules/nodemon/node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
+ },
+ "node_modules/nopt": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz",
+ "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==",
+ "dependencies": {
+ "abbrev": "1"
+ },
+ "bin": {
+ "nopt": "bin/nopt.js"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/normalize-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
+ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object-assign": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+ "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object-inspect": {
+ "version": "1.12.3",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz",
+ "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/on-finished": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
+ "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
+ "dependencies": {
+ "ee-first": "1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/parseurl": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
+ "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/path-to-regexp": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
+ "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ=="
+ },
+ "node_modules/picomatch": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "engines": {
+ "node": ">=8.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/proxy-addr": {
+ "version": "2.0.7",
+ "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
+ "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
+ "dependencies": {
+ "forwarded": "0.2.0",
+ "ipaddr.js": "1.9.1"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/pstree.remy": {
+ "version": "1.1.8",
+ "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz",
+ "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w=="
+ },
+ "node_modules/qs": {
+ "version": "6.11.0",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
+ "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
+ "dependencies": {
+ "side-channel": "^1.0.4"
+ },
+ "engines": {
+ "node": ">=0.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/range-parser": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
+ "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/raw-body": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz",
+ "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==",
+ "dependencies": {
+ "bytes": "3.1.2",
+ "http-errors": "2.0.0",
+ "iconv-lite": "0.4.24",
+ "unpipe": "1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/readdirp": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
+ "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
+ "dependencies": {
+ "picomatch": "^2.2.1"
+ },
+ "engines": {
+ "node": ">=8.10.0"
+ }
+ },
+ "node_modules/safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
+ "node_modules/safer-buffer": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
+ },
+ "node_modules/semver": {
+ "version": "7.5.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
+ "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/semver/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/semver/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
+ },
+ "node_modules/send": {
+ "version": "0.18.0",
+ "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
+ "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
+ "dependencies": {
+ "debug": "2.6.9",
+ "depd": "2.0.0",
+ "destroy": "1.2.0",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "etag": "~1.8.1",
+ "fresh": "0.5.2",
+ "http-errors": "2.0.0",
+ "mime": "1.6.0",
+ "ms": "2.1.3",
+ "on-finished": "2.4.1",
+ "range-parser": "~1.2.1",
+ "statuses": "2.0.1"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/send/node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
+ },
+ "node_modules/serve-static": {
+ "version": "1.15.0",
+ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz",
+ "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
+ "dependencies": {
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "parseurl": "~1.3.3",
+ "send": "0.18.0"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/setprototypeof": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
+ "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
+ },
+ "node_modules/side-channel": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
+ "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
+ "dependencies": {
+ "call-bind": "^1.0.0",
+ "get-intrinsic": "^1.0.2",
+ "object-inspect": "^1.9.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/simple-update-notifier": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz",
+ "integrity": "sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==",
+ "dependencies": {
+ "semver": "^7.5.3"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/statuses": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
+ "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dependencies": {
+ "has-flag": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/to-regex-range": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "dependencies": {
+ "is-number": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=8.0"
+ }
+ },
+ "node_modules/toidentifier": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
+ "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
+ "engines": {
+ "node": ">=0.6"
+ }
+ },
+ "node_modules/touch": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz",
+ "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==",
+ "dependencies": {
+ "nopt": "~1.0.10"
+ },
+ "bin": {
+ "nodetouch": "bin/nodetouch.js"
+ }
+ },
+ "node_modules/tr46": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
+ "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
+ },
+ "node_modules/type-is": {
+ "version": "1.6.18",
+ "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
+ "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
+ "dependencies": {
+ "media-typer": "0.3.0",
+ "mime-types": "~2.1.24"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/undefsafe": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz",
+ "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA=="
+ },
+ "node_modules/unpipe": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
+ "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/utils-merge": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
+ "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==",
+ "engines": {
+ "node": ">= 0.4.0"
+ }
+ },
+ "node_modules/uuid": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz",
+ "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==",
+ "funding": [
+ "https://github.com/sponsors/broofa",
+ "https://github.com/sponsors/ctavan"
+ ],
+ "bin": {
+ "uuid": "dist/bin/uuid"
+ }
+ },
+ "node_modules/vary": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
+ "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/webidl-conversions": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
+ "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="
+ },
+ "node_modules/whatwg-url": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
+ "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
+ "dependencies": {
+ "tr46": "~0.0.3",
+ "webidl-conversions": "^3.0.0"
+ }
+ }
+ }
+}
diff --git a/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/package.json b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/package.json
new file mode 100644
index 0000000..7ce913e
--- /dev/null
+++ b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/package.json
@@ -0,0 +1,18 @@
+{
+ "name": "server",
+ "version": "1.0.0",
+ "description": "",
+ "main": "index.js",
+ "scripts": {
+ "start": "nodemon server.js",
+ "test": "echo \"Error: no test specified\" && exit 1"
+ },
+ "author": "",
+ "license": "ISC",
+ "dependencies": {
+ "cors": "^2.8.5",
+ "express": "^4.18.2",
+ "mercadopago": "^2.0.3",
+ "nodemon": "^3.0.1"
+ }
+}
diff --git a/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/server.js b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/server.js
new file mode 100644
index 0000000..b8bab73
--- /dev/null
+++ b/LaboratorioIV/JavaScript/Leccion04/e-commerce2022/server/server.js
@@ -0,0 +1,63 @@
+const express = require("express");
+const app = express();
+const cors = require("cors");
+const mercadopago = require("mercadopago");
+const path = require("path");
+
+// REPLACE WITH YOUR ACCESS TOKEN AVAILABLE IN: https://developers.mercadopago.com/panel
+mercadopago.configure({
+ access_token: "TEST-2559386050472488-091712-1d0b77b2997029e6d625b24bd8d90198-78655666",
+});
+
+
+app.use(express.urlencoded({ extended: false }));
+app.use(express.json());
+
+app.use(express.static(path.join(__dirname, '../client')));
+app.use(cors());
+
+app.get("/", function () {
+ path.resolve(__dirname, "..", "client"), "index.html";
+});
+
+app.post("/create_preference", (req, res) => {
+
+ let preference = {
+ items: [
+ {
+ title: req.body.description,
+ unit_price: Number(req.body.price),
+ quantity: Number(req.body.quantity),
+ }
+ ],
+ back_urls: {
+ "success": "http://localhost:8080",
+ "failure": "http://localhost:8080",
+ "pending": ""
+ },
+ auto_return: "approved",
+ };
+
+ mercadopago.preferences
+ .create(preference)
+ .then(function (response) {
+ res.json({
+ id: response.body.id
+ });
+ })
+ .catch(function (error) {
+ console.log(error);
+ });
+});
+
+app.get('/feedback', function (req, res) {
+ res.json({
+ Payment: req.query.payment_id,
+ Status: req.query.status,
+ MerchantOrder: req.query.merchant_order_id
+ });
+});
+
+app.listen(8080, () => {
+ console.log("The server is now running on Port 8080");
+});
\ No newline at end of file
diff --git a/LaboratorioIV/JavaScript/Leccion05/node_modules/.bin/acorn b/LaboratorioIV/JavaScript/Leccion05/node_modules/.bin/acorn
new file mode 100644
index 0000000..46a3e61
--- /dev/null
+++ b/LaboratorioIV/JavaScript/Leccion05/node_modules/.bin/acorn
@@ -0,0 +1,12 @@
+#!/bin/sh
+basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
+
+case `uname` in
+ *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;;
+esac
+
+if [ -x "$basedir/node" ]; then
+ exec "$basedir/node" "$basedir/../acorn/bin/acorn" "$@"
+else
+ exec node "$basedir/../acorn/bin/acorn" "$@"
+fi
diff --git a/LaboratorioIV/JavaScript/Leccion05/node_modules/.bin/acorn.cmd b/LaboratorioIV/JavaScript/Leccion05/node_modules/.bin/acorn.cmd
new file mode 100644
index 0000000..a9324df
--- /dev/null
+++ b/LaboratorioIV/JavaScript/Leccion05/node_modules/.bin/acorn.cmd
@@ -0,0 +1,17 @@
+@ECHO off
+GOTO start
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
+:start
+SETLOCAL
+CALL :find_dp0
+
+IF EXIST "%dp0%\node.exe" (
+ SET "_prog=%dp0%\node.exe"
+) ELSE (
+ SET "_prog=node"
+ SET PATHEXT=%PATHEXT:;.JS;=;%
+)
+
+endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\acorn\bin\acorn" %*
diff --git a/LaboratorioIV/JavaScript/Leccion05/node_modules/.bin/acorn.ps1 b/LaboratorioIV/JavaScript/Leccion05/node_modules/.bin/acorn.ps1
new file mode 100644
index 0000000..6f6dcdd
--- /dev/null
+++ b/LaboratorioIV/JavaScript/Leccion05/node_modules/.bin/acorn.ps1
@@ -0,0 +1,28 @@
+#!/usr/bin/env pwsh
+$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
+
+$exe=""
+if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
+ # Fix case when both the Windows and Linux builds of Node
+ # are installed in the same directory
+ $exe=".exe"
+}
+$ret=0
+if (Test-Path "$basedir/node$exe") {
+ # Support pipeline input
+ if ($MyInvocation.ExpectingInput) {
+ $input | & "$basedir/node$exe" "$basedir/../acorn/bin/acorn" $args
+ } else {
+ & "$basedir/node$exe" "$basedir/../acorn/bin/acorn" $args
+ }
+ $ret=$LASTEXITCODE
+} else {
+ # Support pipeline input
+ if ($MyInvocation.ExpectingInput) {
+ $input | & "node$exe" "$basedir/../acorn/bin/acorn" $args
+ } else {
+ & "node$exe" "$basedir/../acorn/bin/acorn" $args
+ }
+ $ret=$LASTEXITCODE
+}
+exit $ret
diff --git a/LaboratorioIV/JavaScript/Leccion05/node_modules/.bin/eslint b/LaboratorioIV/JavaScript/Leccion05/node_modules/.bin/eslint
new file mode 100644
index 0000000..4e7c1c9
--- /dev/null
+++ b/LaboratorioIV/JavaScript/Leccion05/node_modules/.bin/eslint
@@ -0,0 +1,12 @@
+#!/bin/sh
+basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
+
+case `uname` in
+ *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;;
+esac
+
+if [ -x "$basedir/node" ]; then
+ exec "$basedir/node" "$basedir/../eslint/bin/eslint.js" "$@"
+else
+ exec node "$basedir/../eslint/bin/eslint.js" "$@"
+fi
diff --git a/LaboratorioIV/JavaScript/Leccion05/node_modules/.bin/eslint.cmd b/LaboratorioIV/JavaScript/Leccion05/node_modules/.bin/eslint.cmd
new file mode 100644
index 0000000..032901a
--- /dev/null
+++ b/LaboratorioIV/JavaScript/Leccion05/node_modules/.bin/eslint.cmd
@@ -0,0 +1,17 @@
+@ECHO off
+GOTO start
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
+:start
+SETLOCAL
+CALL :find_dp0
+
+IF EXIST "%dp0%\node.exe" (
+ SET "_prog=%dp0%\node.exe"
+) ELSE (
+ SET "_prog=node"
+ SET PATHEXT=%PATHEXT:;.JS;=;%
+)
+
+endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\eslint\bin\eslint.js" %*
diff --git a/LaboratorioIV/JavaScript/Leccion05/node_modules/.bin/eslint.ps1 b/LaboratorioIV/JavaScript/Leccion05/node_modules/.bin/eslint.ps1
new file mode 100644
index 0000000..155bec4
--- /dev/null
+++ b/LaboratorioIV/JavaScript/Leccion05/node_modules/.bin/eslint.ps1
@@ -0,0 +1,28 @@
+#!/usr/bin/env pwsh
+$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
+
+$exe=""
+if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
+ # Fix case when both the Windows and Linux builds of Node
+ # are installed in the same directory
+ $exe=".exe"
+}
+$ret=0
+if (Test-Path "$basedir/node$exe") {
+ # Support pipeline input
+ if ($MyInvocation.ExpectingInput) {
+ $input | & "$basedir/node$exe" "$basedir/../eslint/bin/eslint.js" $args
+ } else {
+ & "$basedir/node$exe" "$basedir/../eslint/bin/eslint.js" $args
+ }
+ $ret=$LASTEXITCODE
+} else {
+ # Support pipeline input
+ if ($MyInvocation.ExpectingInput) {
+ $input | & "node$exe" "$basedir/../eslint/bin/eslint.js" $args
+ } else {
+ & "node$exe" "$basedir/../eslint/bin/eslint.js" $args
+ }
+ $ret=$LASTEXITCODE
+}
+exit $ret
diff --git a/LaboratorioIV/JavaScript/Leccion05/node_modules/.bin/js-yaml b/LaboratorioIV/JavaScript/Leccion05/node_modules/.bin/js-yaml
new file mode 100644
index 0000000..ed78a86
--- /dev/null
+++ b/LaboratorioIV/JavaScript/Leccion05/node_modules/.bin/js-yaml
@@ -0,0 +1,12 @@
+#!/bin/sh
+basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
+
+case `uname` in
+ *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;;
+esac
+
+if [ -x "$basedir/node" ]; then
+ exec "$basedir/node" "$basedir/../js-yaml/bin/js-yaml.js" "$@"
+else
+ exec node "$basedir/../js-yaml/bin/js-yaml.js" "$@"
+fi
diff --git a/LaboratorioIV/JavaScript/Leccion05/node_modules/.bin/js-yaml.cmd b/LaboratorioIV/JavaScript/Leccion05/node_modules/.bin/js-yaml.cmd
new file mode 100644
index 0000000..453312b
--- /dev/null
+++ b/LaboratorioIV/JavaScript/Leccion05/node_modules/.bin/js-yaml.cmd
@@ -0,0 +1,17 @@
+@ECHO off
+GOTO start
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
+:start
+SETLOCAL
+CALL :find_dp0
+
+IF EXIST "%dp0%\node.exe" (
+ SET "_prog=%dp0%\node.exe"
+) ELSE (
+ SET "_prog=node"
+ SET PATHEXT=%PATHEXT:;.JS;=;%
+)
+
+endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\js-yaml\bin\js-yaml.js" %*
diff --git a/LaboratorioIV/JavaScript/Leccion05/node_modules/.bin/js-yaml.ps1 b/LaboratorioIV/JavaScript/Leccion05/node_modules/.bin/js-yaml.ps1
new file mode 100644
index 0000000..2acfc61
--- /dev/null
+++ b/LaboratorioIV/JavaScript/Leccion05/node_modules/.bin/js-yaml.ps1
@@ -0,0 +1,28 @@
+#!/usr/bin/env pwsh
+$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
+
+$exe=""
+if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
+ # Fix case when both the Windows and Linux builds of Node
+ # are installed in the same directory
+ $exe=".exe"
+}
+$ret=0
+if (Test-Path "$basedir/node$exe") {
+ # Support pipeline input
+ if ($MyInvocation.ExpectingInput) {
+ $input | & "$basedir/node$exe" "$basedir/../js-yaml/bin/js-yaml.js" $args
+ } else {
+ & "$basedir/node$exe" "$basedir/../js-yaml/bin/js-yaml.js" $args
+ }
+ $ret=$LASTEXITCODE
+} else {
+ # Support pipeline input
+ if ($MyInvocation.ExpectingInput) {
+ $input | & "node$exe" "$basedir/../js-yaml/bin/js-yaml.js" $args
+ } else {
+ & "node$exe" "$basedir/../js-yaml/bin/js-yaml.js" $args
+ }
+ $ret=$LASTEXITCODE
+}
+exit $ret
diff --git a/LaboratorioIV/JavaScript/Leccion05/node_modules/.bin/mime b/LaboratorioIV/JavaScript/Leccion05/node_modules/.bin/mime
new file mode 100644
index 0000000..0a62a1b
--- /dev/null
+++ b/LaboratorioIV/JavaScript/Leccion05/node_modules/.bin/mime
@@ -0,0 +1,12 @@
+#!/bin/sh
+basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
+
+case `uname` in
+ *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;;
+esac
+
+if [ -x "$basedir/node" ]; then
+ exec "$basedir/node" "$basedir/../mime/cli.js" "$@"
+else
+ exec node "$basedir/../mime/cli.js" "$@"
+fi
diff --git a/LaboratorioIV/JavaScript/Leccion05/node_modules/.bin/mime.cmd b/LaboratorioIV/JavaScript/Leccion05/node_modules/.bin/mime.cmd
new file mode 100644
index 0000000..54491f1
--- /dev/null
+++ b/LaboratorioIV/JavaScript/Leccion05/node_modules/.bin/mime.cmd
@@ -0,0 +1,17 @@
+@ECHO off
+GOTO start
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
+:start
+SETLOCAL
+CALL :find_dp0
+
+IF EXIST "%dp0%\node.exe" (
+ SET "_prog=%dp0%\node.exe"
+) ELSE (
+ SET "_prog=node"
+ SET PATHEXT=%PATHEXT:;.JS;=;%
+)
+
+endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\mime\cli.js" %*
diff --git a/LaboratorioIV/JavaScript/Leccion05/node_modules/.bin/mime.ps1 b/LaboratorioIV/JavaScript/Leccion05/node_modules/.bin/mime.ps1
new file mode 100644
index 0000000..2222f40
--- /dev/null
+++ b/LaboratorioIV/JavaScript/Leccion05/node_modules/.bin/mime.ps1
@@ -0,0 +1,28 @@
+#!/usr/bin/env pwsh
+$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
+
+$exe=""
+if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
+ # Fix case when both the Windows and Linux builds of Node
+ # are installed in the same directory
+ $exe=".exe"
+}
+$ret=0
+if (Test-Path "$basedir/node$exe") {
+ # Support pipeline input
+ if ($MyInvocation.ExpectingInput) {
+ $input | & "$basedir/node$exe" "$basedir/../mime/cli.js" $args
+ } else {
+ & "$basedir/node$exe" "$basedir/../mime/cli.js" $args
+ }
+ $ret=$LASTEXITCODE
+} else {
+ # Support pipeline input
+ if ($MyInvocation.ExpectingInput) {
+ $input | & "node$exe" "$basedir/../mime/cli.js" $args
+ } else {
+ & "node$exe" "$basedir/../mime/cli.js" $args
+ }
+ $ret=$LASTEXITCODE
+}
+exit $ret
diff --git a/LaboratorioIV/JavaScript/Leccion05/node_modules/.bin/node-which b/LaboratorioIV/JavaScript/Leccion05/node_modules/.bin/node-which
new file mode 100644
index 0000000..aece735
--- /dev/null
+++ b/LaboratorioIV/JavaScript/Leccion05/node_modules/.bin/node-which
@@ -0,0 +1,12 @@
+#!/bin/sh
+basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
+
+case `uname` in
+ *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;;
+esac
+
+if [ -x "$basedir/node" ]; then
+ exec "$basedir/node" "$basedir/../which/bin/node-which" "$@"
+else
+ exec node "$basedir/../which/bin/node-which" "$@"
+fi
diff --git a/LaboratorioIV/JavaScript/Leccion05/node_modules/.bin/node-which.cmd b/LaboratorioIV/JavaScript/Leccion05/node_modules/.bin/node-which.cmd
new file mode 100644
index 0000000..8738aed
--- /dev/null
+++ b/LaboratorioIV/JavaScript/Leccion05/node_modules/.bin/node-which.cmd
@@ -0,0 +1,17 @@
+@ECHO off
+GOTO start
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
+:start
+SETLOCAL
+CALL :find_dp0
+
+IF EXIST "%dp0%\node.exe" (
+ SET "_prog=%dp0%\node.exe"
+) ELSE (
+ SET "_prog=node"
+ SET PATHEXT=%PATHEXT:;.JS;=;%
+)
+
+endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\which\bin\node-which" %*
diff --git a/LaboratorioIV/JavaScript/Leccion05/node_modules/.bin/node-which.ps1 b/LaboratorioIV/JavaScript/Leccion05/node_modules/.bin/node-which.ps1
new file mode 100644
index 0000000..cfb09e8
--- /dev/null
+++ b/LaboratorioIV/JavaScript/Leccion05/node_modules/.bin/node-which.ps1
@@ -0,0 +1,28 @@
+#!/usr/bin/env pwsh
+$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
+
+$exe=""
+if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
+ # Fix case when both the Windows and Linux builds of Node
+ # are installed in the same directory
+ $exe=".exe"
+}
+$ret=0
+if (Test-Path "$basedir/node$exe") {
+ # Support pipeline input
+ if ($MyInvocation.ExpectingInput) {
+ $input | & "$basedir/node$exe" "$basedir/../which/bin/node-which" $args
+ } else {
+ & "$basedir/node$exe" "$basedir/../which/bin/node-which" $args
+ }
+ $ret=$LASTEXITCODE
+} else {
+ # Support pipeline input
+ if ($MyInvocation.ExpectingInput) {
+ $input | & "node$exe" "$basedir/../which/bin/node-which" $args
+ } else {
+ & "node$exe" "$basedir/../which/bin/node-which" $args
+ }
+ $ret=$LASTEXITCODE
+}
+exit $ret
diff --git a/LaboratorioIV/JavaScript/Leccion05/node_modules/.bin/nodemon b/LaboratorioIV/JavaScript/Leccion05/node_modules/.bin/nodemon
new file mode 100644
index 0000000..4d75661
--- /dev/null
+++ b/LaboratorioIV/JavaScript/Leccion05/node_modules/.bin/nodemon
@@ -0,0 +1,12 @@
+#!/bin/sh
+basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
+
+case `uname` in
+ *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;;
+esac
+
+if [ -x "$basedir/node" ]; then
+ exec "$basedir/node" "$basedir/../nodemon/bin/nodemon.js" "$@"
+else
+ exec node "$basedir/../nodemon/bin/nodemon.js" "$@"
+fi
diff --git a/LaboratorioIV/JavaScript/Leccion05/node_modules/.bin/nodemon.cmd b/LaboratorioIV/JavaScript/Leccion05/node_modules/.bin/nodemon.cmd
new file mode 100644
index 0000000..55acf8a
--- /dev/null
+++ b/LaboratorioIV/JavaScript/Leccion05/node_modules/.bin/nodemon.cmd
@@ -0,0 +1,17 @@
+@ECHO off
+GOTO start
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
+:start
+SETLOCAL
+CALL :find_dp0
+
+IF EXIST "%dp0%\node.exe" (
+ SET "_prog=%dp0%\node.exe"
+) ELSE (
+ SET "_prog=node"
+ SET PATHEXT=%PATHEXT:;.JS;=;%
+)
+
+endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\nodemon\bin\nodemon.js" %*
diff --git a/LaboratorioIV/JavaScript/Leccion05/node_modules/.bin/nodemon.ps1 b/LaboratorioIV/JavaScript/Leccion05/node_modules/.bin/nodemon.ps1
new file mode 100644
index 0000000..d4e3f5d
--- /dev/null
+++ b/LaboratorioIV/JavaScript/Leccion05/node_modules/.bin/nodemon.ps1
@@ -0,0 +1,28 @@
+#!/usr/bin/env pwsh
+$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
+
+$exe=""
+if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
+ # Fix case when both the Windows and Linux builds of Node
+ # are installed in the same directory
+ $exe=".exe"
+}
+$ret=0
+if (Test-Path "$basedir/node$exe") {
+ # Support pipeline input
+ if ($MyInvocation.ExpectingInput) {
+ $input | & "$basedir/node$exe" "$basedir/../nodemon/bin/nodemon.js" $args
+ } else {
+ & "$basedir/node$exe" "$basedir/../nodemon/bin/nodemon.js" $args
+ }
+ $ret=$LASTEXITCODE
+} else {
+ # Support pipeline input
+ if ($MyInvocation.ExpectingInput) {
+ $input | & "node$exe" "$basedir/../nodemon/bin/nodemon.js" $args
+ } else {
+ & "node$exe" "$basedir/../nodemon/bin/nodemon.js" $args
+ }
+ $ret=$LASTEXITCODE
+}
+exit $ret
diff --git a/LaboratorioIV/JavaScript/Leccion05/node_modules/.bin/nodetouch b/LaboratorioIV/JavaScript/Leccion05/node_modules/.bin/nodetouch
new file mode 100644
index 0000000..03f8b4d
--- /dev/null
+++ b/LaboratorioIV/JavaScript/Leccion05/node_modules/.bin/nodetouch
@@ -0,0 +1,12 @@
+#!/bin/sh
+basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
+
+case `uname` in
+ *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;;
+esac
+
+if [ -x "$basedir/node" ]; then
+ exec "$basedir/node" "$basedir/../touch/bin/nodetouch.js" "$@"
+else
+ exec node "$basedir/../touch/bin/nodetouch.js" "$@"
+fi
diff --git a/LaboratorioIV/JavaScript/Leccion05/node_modules/.bin/nodetouch.cmd b/LaboratorioIV/JavaScript/Leccion05/node_modules/.bin/nodetouch.cmd
new file mode 100644
index 0000000..8298b91
--- /dev/null
+++ b/LaboratorioIV/JavaScript/Leccion05/node_modules/.bin/nodetouch.cmd
@@ -0,0 +1,17 @@
+@ECHO off
+GOTO start
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
+:start
+SETLOCAL
+CALL :find_dp0
+
+IF EXIST "%dp0%\node.exe" (
+ SET "_prog=%dp0%\node.exe"
+) ELSE (
+ SET "_prog=node"
+ SET PATHEXT=%PATHEXT:;.JS;=;%
+)
+
+endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\touch\bin\nodetouch.js" %*
diff --git a/LaboratorioIV/JavaScript/Leccion05/node_modules/.bin/nodetouch.ps1 b/LaboratorioIV/JavaScript/Leccion05/node_modules/.bin/nodetouch.ps1
new file mode 100644
index 0000000..5f68b4c
--- /dev/null
+++ b/LaboratorioIV/JavaScript/Leccion05/node_modules/.bin/nodetouch.ps1
@@ -0,0 +1,28 @@
+#!/usr/bin/env pwsh
+$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
+
+$exe=""
+if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
+ # Fix case when both the Windows and Linux builds of Node
+ # are installed in the same directory
+ $exe=".exe"
+}
+$ret=0
+if (Test-Path "$basedir/node$exe") {
+ # Support pipeline input
+ if ($MyInvocation.ExpectingInput) {
+ $input | & "$basedir/node$exe" "$basedir/../touch/bin/nodetouch.js" $args
+ } else {
+ & "$basedir/node$exe" "$basedir/../touch/bin/nodetouch.js" $args
+ }
+ $ret=$LASTEXITCODE
+} else {
+ # Support pipeline input
+ if ($MyInvocation.ExpectingInput) {
+ $input | & "node$exe" "$basedir/../touch/bin/nodetouch.js" $args
+ } else {
+ & "node$exe" "$basedir/../touch/bin/nodetouch.js" $args
+ }
+ $ret=$LASTEXITCODE
+}
+exit $ret
diff --git a/LaboratorioIV/JavaScript/Leccion05/node_modules/.bin/nopt b/LaboratorioIV/JavaScript/Leccion05/node_modules/.bin/nopt
new file mode 100644
index 0000000..f1ec43b
--- /dev/null
+++ b/LaboratorioIV/JavaScript/Leccion05/node_modules/.bin/nopt
@@ -0,0 +1,12 @@
+#!/bin/sh
+basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
+
+case `uname` in
+ *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;;
+esac
+
+if [ -x "$basedir/node" ]; then
+ exec "$basedir/node" "$basedir/../nopt/bin/nopt.js" "$@"
+else
+ exec node "$basedir/../nopt/bin/nopt.js" "$@"
+fi
diff --git a/LaboratorioIV/JavaScript/Leccion05/node_modules/.bin/nopt.cmd b/LaboratorioIV/JavaScript/Leccion05/node_modules/.bin/nopt.cmd
new file mode 100644
index 0000000..a7f38b3
--- /dev/null
+++ b/LaboratorioIV/JavaScript/Leccion05/node_modules/.bin/nopt.cmd
@@ -0,0 +1,17 @@
+@ECHO off
+GOTO start
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
+:start
+SETLOCAL
+CALL :find_dp0
+
+IF EXIST "%dp0%\node.exe" (
+ SET "_prog=%dp0%\node.exe"
+) ELSE (
+ SET "_prog=node"
+ SET PATHEXT=%PATHEXT:;.JS;=;%
+)
+
+endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\nopt\bin\nopt.js" %*
diff --git a/LaboratorioIV/JavaScript/Leccion05/node_modules/.bin/nopt.ps1 b/LaboratorioIV/JavaScript/Leccion05/node_modules/.bin/nopt.ps1
new file mode 100644
index 0000000..9d6ba56
--- /dev/null
+++ b/LaboratorioIV/JavaScript/Leccion05/node_modules/.bin/nopt.ps1
@@ -0,0 +1,28 @@
+#!/usr/bin/env pwsh
+$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
+
+$exe=""
+if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
+ # Fix case when both the Windows and Linux builds of Node
+ # are installed in the same directory
+ $exe=".exe"
+}
+$ret=0
+if (Test-Path "$basedir/node$exe") {
+ # Support pipeline input
+ if ($MyInvocation.ExpectingInput) {
+ $input | & "$basedir/node$exe" "$basedir/../nopt/bin/nopt.js" $args
+ } else {
+ & "$basedir/node$exe" "$basedir/../nopt/bin/nopt.js" $args
+ }
+ $ret=$LASTEXITCODE
+} else {
+ # Support pipeline input
+ if ($MyInvocation.ExpectingInput) {
+ $input | & "node$exe" "$basedir/../nopt/bin/nopt.js" $args
+ } else {
+ & "node$exe" "$basedir/../nopt/bin/nopt.js" $args
+ }
+ $ret=$LASTEXITCODE
+}
+exit $ret
diff --git a/LaboratorioIV/JavaScript/Leccion05/node_modules/.bin/rimraf b/LaboratorioIV/JavaScript/Leccion05/node_modules/.bin/rimraf
new file mode 100644
index 0000000..b816825
--- /dev/null
+++ b/LaboratorioIV/JavaScript/Leccion05/node_modules/.bin/rimraf
@@ -0,0 +1,12 @@
+#!/bin/sh
+basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
+
+case `uname` in
+ *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;;
+esac
+
+if [ -x "$basedir/node" ]; then
+ exec "$basedir/node" "$basedir/../rimraf/bin.js" "$@"
+else
+ exec node "$basedir/../rimraf/bin.js" "$@"
+fi
diff --git a/LaboratorioIV/JavaScript/Leccion05/node_modules/.bin/rimraf.cmd b/LaboratorioIV/JavaScript/Leccion05/node_modules/.bin/rimraf.cmd
new file mode 100644
index 0000000..13f45ec
--- /dev/null
+++ b/LaboratorioIV/JavaScript/Leccion05/node_modules/.bin/rimraf.cmd
@@ -0,0 +1,17 @@
+@ECHO off
+GOTO start
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
+:start
+SETLOCAL
+CALL :find_dp0
+
+IF EXIST "%dp0%\node.exe" (
+ SET "_prog=%dp0%\node.exe"
+) ELSE (
+ SET "_prog=node"
+ SET PATHEXT=%PATHEXT:;.JS;=;%
+)
+
+endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\rimraf\bin.js" %*
diff --git a/LaboratorioIV/JavaScript/Leccion05/node_modules/.bin/rimraf.ps1 b/LaboratorioIV/JavaScript/Leccion05/node_modules/.bin/rimraf.ps1
new file mode 100644
index 0000000..1716791
--- /dev/null
+++ b/LaboratorioIV/JavaScript/Leccion05/node_modules/.bin/rimraf.ps1
@@ -0,0 +1,28 @@
+#!/usr/bin/env pwsh
+$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
+
+$exe=""
+if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
+ # Fix case when both the Windows and Linux builds of Node
+ # are installed in the same directory
+ $exe=".exe"
+}
+$ret=0
+if (Test-Path "$basedir/node$exe") {
+ # Support pipeline input
+ if ($MyInvocation.ExpectingInput) {
+ $input | & "$basedir/node$exe" "$basedir/../rimraf/bin.js" $args
+ } else {
+ & "$basedir/node$exe" "$basedir/../rimraf/bin.js" $args
+ }
+ $ret=$LASTEXITCODE
+} else {
+ # Support pipeline input
+ if ($MyInvocation.ExpectingInput) {
+ $input | & "node$exe" "$basedir/../rimraf/bin.js" $args
+ } else {
+ & "node$exe" "$basedir/../rimraf/bin.js" $args
+ }
+ $ret=$LASTEXITCODE
+}
+exit $ret
diff --git a/LaboratorioIV/JavaScript/Leccion05/node_modules/.bin/semver b/LaboratorioIV/JavaScript/Leccion05/node_modules/.bin/semver
new file mode 100644
index 0000000..77443e7
--- /dev/null
+++ b/LaboratorioIV/JavaScript/Leccion05/node_modules/.bin/semver
@@ -0,0 +1,12 @@
+#!/bin/sh
+basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
+
+case `uname` in
+ *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;;
+esac
+
+if [ -x "$basedir/node" ]; then
+ exec "$basedir/node" "$basedir/../semver/bin/semver.js" "$@"
+else
+ exec node "$basedir/../semver/bin/semver.js" "$@"
+fi
diff --git a/LaboratorioIV/JavaScript/Leccion05/node_modules/.bin/semver.cmd b/LaboratorioIV/JavaScript/Leccion05/node_modules/.bin/semver.cmd
new file mode 100644
index 0000000..9913fa9
--- /dev/null
+++ b/LaboratorioIV/JavaScript/Leccion05/node_modules/.bin/semver.cmd
@@ -0,0 +1,17 @@
+@ECHO off
+GOTO start
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
+:start
+SETLOCAL
+CALL :find_dp0
+
+IF EXIST "%dp0%\node.exe" (
+ SET "_prog=%dp0%\node.exe"
+) ELSE (
+ SET "_prog=node"
+ SET PATHEXT=%PATHEXT:;.JS;=;%
+)
+
+endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\semver\bin\semver.js" %*
diff --git a/LaboratorioIV/JavaScript/Leccion05/node_modules/.bin/semver.ps1 b/LaboratorioIV/JavaScript/Leccion05/node_modules/.bin/semver.ps1
new file mode 100644
index 0000000..314717a
--- /dev/null
+++ b/LaboratorioIV/JavaScript/Leccion05/node_modules/.bin/semver.ps1
@@ -0,0 +1,28 @@
+#!/usr/bin/env pwsh
+$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
+
+$exe=""
+if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
+ # Fix case when both the Windows and Linux builds of Node
+ # are installed in the same directory
+ $exe=".exe"
+}
+$ret=0
+if (Test-Path "$basedir/node$exe") {
+ # Support pipeline input
+ if ($MyInvocation.ExpectingInput) {
+ $input | & "$basedir/node$exe" "$basedir/../semver/bin/semver.js" $args
+ } else {
+ & "$basedir/node$exe" "$basedir/../semver/bin/semver.js" $args
+ }
+ $ret=$LASTEXITCODE
+} else {
+ # Support pipeline input
+ if ($MyInvocation.ExpectingInput) {
+ $input | & "node$exe" "$basedir/../semver/bin/semver.js" $args
+ } else {
+ & "node$exe" "$basedir/../semver/bin/semver.js" $args
+ }
+ $ret=$LASTEXITCODE
+}
+exit $ret
diff --git a/LaboratorioIV/JavaScript/Leccion05/node_modules/.package-lock.json b/LaboratorioIV/JavaScript/Leccion05/node_modules/.package-lock.json
new file mode 100644
index 0000000..601ca29
--- /dev/null
+++ b/LaboratorioIV/JavaScript/Leccion05/node_modules/.package-lock.json
@@ -0,0 +1,2457 @@
+{
+ "name": "leccion05",
+ "version": "1.0.0",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "node_modules/@aashutoshrathi/word-wrap": {
+ "version": "1.2.6",
+ "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz",
+ "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/@eslint-community/eslint-utils": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz",
+ "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==",
+ "dev": true,
+ "dependencies": {
+ "eslint-visitor-keys": "^3.3.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "peerDependencies": {
+ "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
+ }
+ },
+ "node_modules/@eslint-community/regexpp": {
+ "version": "4.8.1",
+ "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.8.1.tgz",
+ "integrity": "sha512-PWiOzLIUAjN/w5K17PoF4n6sKBw0gqLHPhywmYHP4t1VFQQVYeb1yWsJwnMVEMl3tUHME7X/SJPZLmtG7XBDxQ==",
+ "dev": true,
+ "engines": {
+ "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
+ }
+ },
+ "node_modules/@eslint/eslintrc": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz",
+ "integrity": "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==",
+ "dev": true,
+ "dependencies": {
+ "ajv": "^6.12.4",
+ "debug": "^4.3.2",
+ "espree": "^9.6.0",
+ "globals": "^13.19.0",
+ "ignore": "^5.2.0",
+ "import-fresh": "^3.2.1",
+ "js-yaml": "^4.1.0",
+ "minimatch": "^3.1.2",
+ "strip-json-comments": "^3.1.1"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/@eslint/eslintrc/node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dev": true,
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@eslint/eslintrc/node_modules/ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
+ },
+ "node_modules/@eslint/js": {
+ "version": "8.50.0",
+ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.50.0.tgz",
+ "integrity": "sha512-NCC3zz2+nvYd+Ckfh87rA47zfu2QsQpvc6k1yzTk+b9KzRj0wkGa8LSoGOXN6Zv4lRf/EIoZ80biDh9HOI+RNQ==",
+ "dev": true,
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ }
+ },
+ "node_modules/@humanwhocodes/config-array": {
+ "version": "0.11.11",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz",
+ "integrity": "sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==",
+ "dev": true,
+ "dependencies": {
+ "@humanwhocodes/object-schema": "^1.2.1",
+ "debug": "^4.1.1",
+ "minimatch": "^3.0.5"
+ },
+ "engines": {
+ "node": ">=10.10.0"
+ }
+ },
+ "node_modules/@humanwhocodes/config-array/node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dev": true,
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@humanwhocodes/config-array/node_modules/ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
+ },
+ "node_modules/@humanwhocodes/module-importer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
+ "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
+ "dev": true,
+ "engines": {
+ "node": ">=12.22"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/nzakas"
+ }
+ },
+ "node_modules/@humanwhocodes/object-schema": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz",
+ "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==",
+ "dev": true
+ },
+ "node_modules/@nodelib/fs.scandir": {
+ "version": "2.1.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+ "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
+ "dev": true,
+ "dependencies": {
+ "@nodelib/fs.stat": "2.0.5",
+ "run-parallel": "^1.1.9"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.stat": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
+ "dev": true,
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.walk": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+ "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
+ "dev": true,
+ "dependencies": {
+ "@nodelib/fs.scandir": "2.1.5",
+ "fastq": "^1.6.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/abbrev": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
+ "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
+ "dev": true
+ },
+ "node_modules/accepts": {
+ "version": "1.3.8",
+ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
+ "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
+ "dependencies": {
+ "mime-types": "~2.1.34",
+ "negotiator": "0.6.3"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/acorn": {
+ "version": "8.10.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz",
+ "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==",
+ "dev": true,
+ "bin": {
+ "acorn": "bin/acorn"
+ },
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/acorn-jsx": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
+ "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
+ "dev": true,
+ "peerDependencies": {
+ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
+ }
+ },
+ "node_modules/ajv": {
+ "version": "6.12.6",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "dev": true,
+ "dependencies": {
+ "fast-deep-equal": "^3.1.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/anymatch": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
+ "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
+ "dev": true,
+ "dependencies": {
+ "normalize-path": "^3.0.0",
+ "picomatch": "^2.0.4"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/argparse": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
+ "dev": true
+ },
+ "node_modules/array-flatten": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
+ "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg=="
+ },
+ "node_modules/balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+ "dev": true
+ },
+ "node_modules/basic-auth": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz",
+ "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==",
+ "dependencies": {
+ "safe-buffer": "5.1.2"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/basic-auth/node_modules/safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+ },
+ "node_modules/binary-extensions": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
+ "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/body-parser": {
+ "version": "1.20.1",
+ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz",
+ "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==",
+ "dependencies": {
+ "bytes": "3.1.2",
+ "content-type": "~1.0.4",
+ "debug": "2.6.9",
+ "depd": "2.0.0",
+ "destroy": "1.2.0",
+ "http-errors": "2.0.0",
+ "iconv-lite": "0.4.24",
+ "on-finished": "2.4.1",
+ "qs": "6.11.0",
+ "raw-body": "2.5.1",
+ "type-is": "~1.6.18",
+ "unpipe": "1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8",
+ "npm": "1.2.8000 || >= 1.4.16"
+ }
+ },
+ "node_modules/brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dev": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/braces": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
+ "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+ "dev": true,
+ "dependencies": {
+ "fill-range": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/buffer-equal-constant-time": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz",
+ "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA=="
+ },
+ "node_modules/buffer-writer": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/buffer-writer/-/buffer-writer-2.0.0.tgz",
+ "integrity": "sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/bytes": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
+ "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/call-bind": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
+ "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
+ "dependencies": {
+ "function-bind": "^1.1.1",
+ "get-intrinsic": "^1.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/callsites": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/charenc": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz",
+ "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==",
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/chokidar": {
+ "version": "3.5.3",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
+ "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://paulmillr.com/funding/"
+ }
+ ],
+ "dependencies": {
+ "anymatch": "~3.1.2",
+ "braces": "~3.0.2",
+ "glob-parent": "~5.1.2",
+ "is-binary-path": "~2.1.0",
+ "is-glob": "~4.0.1",
+ "normalize-path": "~3.0.0",
+ "readdirp": "~3.6.0"
+ },
+ "engines": {
+ "node": ">= 8.10.0"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.2"
+ }
+ },
+ "node_modules/chokidar/node_modules/glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "dev": true,
+ "dependencies": {
+ "is-glob": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "node_modules/concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
+ "dev": true
+ },
+ "node_modules/content-disposition": {
+ "version": "0.5.4",
+ "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
+ "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
+ "dependencies": {
+ "safe-buffer": "5.2.1"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/content-type": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
+ "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/cookie": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz",
+ "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/cookie-parser": {
+ "version": "1.4.6",
+ "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.6.tgz",
+ "integrity": "sha512-z3IzaNjdwUC2olLIB5/ITd0/setiaFMLYiZJle7xg5Fe9KWAceil7xszYfHHBtDFYLSgJduS2Ty0P1uJdPDJeA==",
+ "dependencies": {
+ "cookie": "0.4.1",
+ "cookie-signature": "1.0.6"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/cookie-signature": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
+ "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ=="
+ },
+ "node_modules/cors": {
+ "version": "2.8.5",
+ "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz",
+ "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==",
+ "dependencies": {
+ "object-assign": "^4",
+ "vary": "^1"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/cross-spawn": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
+ "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
+ "dev": true,
+ "dependencies": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/crypt": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz",
+ "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==",
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/deep-is": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
+ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
+ "dev": true
+ },
+ "node_modules/depd": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
+ "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/destroy": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
+ "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
+ "engines": {
+ "node": ">= 0.8",
+ "npm": "1.2.8000 || >= 1.4.16"
+ }
+ },
+ "node_modules/doctrine": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
+ "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
+ "dev": true,
+ "dependencies": {
+ "esutils": "^2.0.2"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/ecdsa-sig-formatter": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz",
+ "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==",
+ "dependencies": {
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "node_modules/ee-first": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
+ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
+ },
+ "node_modules/encodeurl": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
+ "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/escape-html": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
+ "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
+ },
+ "node_modules/escape-string-regexp": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/eslint": {
+ "version": "8.50.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.50.0.tgz",
+ "integrity": "sha512-FOnOGSuFuFLv/Sa+FDVRZl4GGVAAFFi8LecRsI5a1tMO5HIE8nCm4ivAlzt4dT3ol/PaaGC0rJEEXQmHJBGoOg==",
+ "dev": true,
+ "dependencies": {
+ "@eslint-community/eslint-utils": "^4.2.0",
+ "@eslint-community/regexpp": "^4.6.1",
+ "@eslint/eslintrc": "^2.1.2",
+ "@eslint/js": "8.50.0",
+ "@humanwhocodes/config-array": "^0.11.11",
+ "@humanwhocodes/module-importer": "^1.0.1",
+ "@nodelib/fs.walk": "^1.2.8",
+ "ajv": "^6.12.4",
+ "chalk": "^4.0.0",
+ "cross-spawn": "^7.0.2",
+ "debug": "^4.3.2",
+ "doctrine": "^3.0.0",
+ "escape-string-regexp": "^4.0.0",
+ "eslint-scope": "^7.2.2",
+ "eslint-visitor-keys": "^3.4.3",
+ "espree": "^9.6.1",
+ "esquery": "^1.4.2",
+ "esutils": "^2.0.2",
+ "fast-deep-equal": "^3.1.3",
+ "file-entry-cache": "^6.0.1",
+ "find-up": "^5.0.0",
+ "glob-parent": "^6.0.2",
+ "globals": "^13.19.0",
+ "graphemer": "^1.4.0",
+ "ignore": "^5.2.0",
+ "imurmurhash": "^0.1.4",
+ "is-glob": "^4.0.0",
+ "is-path-inside": "^3.0.3",
+ "js-yaml": "^4.1.0",
+ "json-stable-stringify-without-jsonify": "^1.0.1",
+ "levn": "^0.4.1",
+ "lodash.merge": "^4.6.2",
+ "minimatch": "^3.1.2",
+ "natural-compare": "^1.4.0",
+ "optionator": "^0.9.3",
+ "strip-ansi": "^6.0.1",
+ "text-table": "^0.2.0"
+ },
+ "bin": {
+ "eslint": "bin/eslint.js"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/eslint-scope": {
+ "version": "7.2.2",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz",
+ "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==",
+ "dev": true,
+ "dependencies": {
+ "esrecurse": "^4.3.0",
+ "estraverse": "^5.2.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/eslint-visitor-keys": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
+ "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
+ "dev": true,
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/eslint/node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dev": true,
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/eslint/node_modules/ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
+ },
+ "node_modules/espree": {
+ "version": "9.6.1",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz",
+ "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==",
+ "dev": true,
+ "dependencies": {
+ "acorn": "^8.9.0",
+ "acorn-jsx": "^5.3.2",
+ "eslint-visitor-keys": "^3.4.1"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/esquery": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz",
+ "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==",
+ "dev": true,
+ "dependencies": {
+ "estraverse": "^5.1.0"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/esrecurse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
+ "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
+ "dev": true,
+ "dependencies": {
+ "estraverse": "^5.2.0"
+ },
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "dev": true,
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/esutils": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/etag": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
+ "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/express": {
+ "version": "4.18.2",
+ "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz",
+ "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==",
+ "dependencies": {
+ "accepts": "~1.3.8",
+ "array-flatten": "1.1.1",
+ "body-parser": "1.20.1",
+ "content-disposition": "0.5.4",
+ "content-type": "~1.0.4",
+ "cookie": "0.5.0",
+ "cookie-signature": "1.0.6",
+ "debug": "2.6.9",
+ "depd": "2.0.0",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "etag": "~1.8.1",
+ "finalhandler": "1.2.0",
+ "fresh": "0.5.2",
+ "http-errors": "2.0.0",
+ "merge-descriptors": "1.0.1",
+ "methods": "~1.1.2",
+ "on-finished": "2.4.1",
+ "parseurl": "~1.3.3",
+ "path-to-regexp": "0.1.7",
+ "proxy-addr": "~2.0.7",
+ "qs": "6.11.0",
+ "range-parser": "~1.2.1",
+ "safe-buffer": "5.2.1",
+ "send": "0.18.0",
+ "serve-static": "1.15.0",
+ "setprototypeof": "1.2.0",
+ "statuses": "2.0.1",
+ "type-is": "~1.6.18",
+ "utils-merge": "1.0.1",
+ "vary": "~1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.10.0"
+ }
+ },
+ "node_modules/express-promise-router": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/express-promise-router/-/express-promise-router-4.1.1.tgz",
+ "integrity": "sha512-Lkvcy/ZGrBhzkl3y7uYBHLMtLI4D6XQ2kiFg9dq7fbktBch5gjqJ0+KovX0cvCAvTJw92raWunRLM/OM+5l4fA==",
+ "dependencies": {
+ "is-promise": "^4.0.0",
+ "lodash.flattendeep": "^4.0.0",
+ "methods": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "@types/express": "^4.0.0",
+ "express": "^4.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/express": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/express/node_modules/cookie": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz",
+ "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/fast-deep-equal": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
+ "dev": true
+ },
+ "node_modules/fast-json-stable-stringify": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
+ "dev": true
+ },
+ "node_modules/fast-levenshtein": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
+ "dev": true
+ },
+ "node_modules/fastq": {
+ "version": "1.15.0",
+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz",
+ "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==",
+ "dev": true,
+ "dependencies": {
+ "reusify": "^1.0.4"
+ }
+ },
+ "node_modules/file-entry-cache": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
+ "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
+ "dev": true,
+ "dependencies": {
+ "flat-cache": "^3.0.4"
+ },
+ "engines": {
+ "node": "^10.12.0 || >=12.0.0"
+ }
+ },
+ "node_modules/fill-range": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
+ "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+ "dev": true,
+ "dependencies": {
+ "to-regex-range": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/finalhandler": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
+ "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
+ "dependencies": {
+ "debug": "2.6.9",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "on-finished": "2.4.1",
+ "parseurl": "~1.3.3",
+ "statuses": "2.0.1",
+ "unpipe": "~1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/find-up": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
+ "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
+ "dev": true,
+ "dependencies": {
+ "locate-path": "^6.0.0",
+ "path-exists": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/flat-cache": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.1.0.tgz",
+ "integrity": "sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew==",
+ "dev": true,
+ "dependencies": {
+ "flatted": "^3.2.7",
+ "keyv": "^4.5.3",
+ "rimraf": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ }
+ },
+ "node_modules/flatted": {
+ "version": "3.2.9",
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz",
+ "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==",
+ "dev": true
+ },
+ "node_modules/forwarded": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
+ "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/fresh": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
+ "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
+ "dev": true
+ },
+ "node_modules/function-bind": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
+ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
+ },
+ "node_modules/get-intrinsic": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz",
+ "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==",
+ "dependencies": {
+ "function-bind": "^1.1.1",
+ "has": "^1.0.3",
+ "has-proto": "^1.0.1",
+ "has-symbols": "^1.0.3"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/glob": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "dev": true,
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.1.1",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/glob-parent": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
+ "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
+ "dev": true,
+ "dependencies": {
+ "is-glob": "^4.0.3"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/globals": {
+ "version": "13.22.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-13.22.0.tgz",
+ "integrity": "sha512-H1Ddc/PbZHTDVJSnj8kWptIRSD6AM3pK+mKytuIVF4uoBV7rshFlhhvA58ceJ5wp3Er58w6zj7bykMpYXt3ETw==",
+ "dev": true,
+ "dependencies": {
+ "type-fest": "^0.20.2"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/graphemer": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
+ "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
+ "dev": true
+ },
+ "node_modules/has": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
+ "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+ "dependencies": {
+ "function-bind": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4.0"
+ }
+ },
+ "node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/has-proto": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz",
+ "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-symbols": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
+ "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/http-errors": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
+ "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
+ "dependencies": {
+ "depd": "2.0.0",
+ "inherits": "2.0.4",
+ "setprototypeof": "1.2.0",
+ "statuses": "2.0.1",
+ "toidentifier": "1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/iconv-lite": {
+ "version": "0.4.24",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+ "dependencies": {
+ "safer-buffer": ">= 2.1.2 < 3"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/ignore": {
+ "version": "5.2.4",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz",
+ "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/ignore-by-default": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz",
+ "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==",
+ "dev": true
+ },
+ "node_modules/import-fresh": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
+ "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
+ "dev": true,
+ "dependencies": {
+ "parent-module": "^1.0.0",
+ "resolve-from": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/imurmurhash": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+ "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8.19"
+ }
+ },
+ "node_modules/inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
+ "dev": true,
+ "dependencies": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "node_modules/inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
+ },
+ "node_modules/ipaddr.js": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
+ "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/is-binary-path": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
+ "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
+ "dev": true,
+ "dependencies": {
+ "binary-extensions": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-buffer": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
+ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
+ },
+ "node_modules/is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-glob": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+ "dev": true,
+ "dependencies": {
+ "is-extglob": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.12.0"
+ }
+ },
+ "node_modules/is-path-inside": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
+ "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-promise": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz",
+ "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ=="
+ },
+ "node_modules/isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
+ "dev": true
+ },
+ "node_modules/js-yaml": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
+ "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+ "dev": true,
+ "dependencies": {
+ "argparse": "^2.0.1"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/json-buffer": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
+ "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
+ "dev": true
+ },
+ "node_modules/json-schema-traverse": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+ "dev": true
+ },
+ "node_modules/json-stable-stringify-without-jsonify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
+ "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
+ "dev": true
+ },
+ "node_modules/jsonwebtoken": {
+ "version": "9.0.2",
+ "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz",
+ "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==",
+ "dependencies": {
+ "jws": "^3.2.2",
+ "lodash.includes": "^4.3.0",
+ "lodash.isboolean": "^3.0.3",
+ "lodash.isinteger": "^4.0.4",
+ "lodash.isnumber": "^3.0.3",
+ "lodash.isplainobject": "^4.0.6",
+ "lodash.isstring": "^4.0.1",
+ "lodash.once": "^4.0.0",
+ "ms": "^2.1.1",
+ "semver": "^7.5.4"
+ },
+ "engines": {
+ "node": ">=12",
+ "npm": ">=6"
+ }
+ },
+ "node_modules/jsonwebtoken/node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
+ },
+ "node_modules/jwa": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz",
+ "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==",
+ "dependencies": {
+ "buffer-equal-constant-time": "1.0.1",
+ "ecdsa-sig-formatter": "1.0.11",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "node_modules/jws": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz",
+ "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==",
+ "dependencies": {
+ "jwa": "^1.4.1",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "node_modules/keyv": {
+ "version": "4.5.3",
+ "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.3.tgz",
+ "integrity": "sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==",
+ "dev": true,
+ "dependencies": {
+ "json-buffer": "3.0.1"
+ }
+ },
+ "node_modules/levn": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
+ "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
+ "dev": true,
+ "dependencies": {
+ "prelude-ls": "^1.2.1",
+ "type-check": "~0.4.0"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/locate-path": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
+ "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
+ "dev": true,
+ "dependencies": {
+ "p-locate": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/lodash.flattendeep": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz",
+ "integrity": "sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ=="
+ },
+ "node_modules/lodash.includes": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz",
+ "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w=="
+ },
+ "node_modules/lodash.isboolean": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz",
+ "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg=="
+ },
+ "node_modules/lodash.isinteger": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz",
+ "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA=="
+ },
+ "node_modules/lodash.isnumber": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz",
+ "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw=="
+ },
+ "node_modules/lodash.isplainobject": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
+ "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA=="
+ },
+ "node_modules/lodash.isstring": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz",
+ "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw=="
+ },
+ "node_modules/lodash.merge": {
+ "version": "4.6.2",
+ "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
+ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
+ "dev": true
+ },
+ "node_modules/lodash.once": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz",
+ "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg=="
+ },
+ "node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/md5": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz",
+ "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==",
+ "dependencies": {
+ "charenc": "0.0.2",
+ "crypt": "0.0.2",
+ "is-buffer": "~1.1.6"
+ }
+ },
+ "node_modules/media-typer": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
+ "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/merge-descriptors": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
+ "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w=="
+ },
+ "node_modules/methods": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
+ "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mime": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
+ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
+ "bin": {
+ "mime": "cli.js"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/mime-db": {
+ "version": "1.52.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mime-types": {
+ "version": "2.1.35",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+ "dependencies": {
+ "mime-db": "1.52.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/morgan": {
+ "version": "1.10.0",
+ "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz",
+ "integrity": "sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==",
+ "dependencies": {
+ "basic-auth": "~2.0.1",
+ "debug": "2.6.9",
+ "depd": "~2.0.0",
+ "on-finished": "~2.3.0",
+ "on-headers": "~1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/morgan/node_modules/on-finished": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
+ "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==",
+ "dependencies": {
+ "ee-first": "1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
+ },
+ "node_modules/natural-compare": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
+ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
+ "dev": true
+ },
+ "node_modules/negotiator": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
+ "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/nodemon": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.0.1.tgz",
+ "integrity": "sha512-g9AZ7HmkhQkqXkRc20w+ZfQ73cHLbE8hnPbtaFbFtCumZsjyMhKk9LajQ07U5Ux28lvFjZ5X7HvWR1xzU8jHVw==",
+ "dev": true,
+ "dependencies": {
+ "chokidar": "^3.5.2",
+ "debug": "^3.2.7",
+ "ignore-by-default": "^1.0.1",
+ "minimatch": "^3.1.2",
+ "pstree.remy": "^1.1.8",
+ "semver": "^7.5.3",
+ "simple-update-notifier": "^2.0.0",
+ "supports-color": "^5.5.0",
+ "touch": "^3.1.0",
+ "undefsafe": "^2.0.5"
+ },
+ "bin": {
+ "nodemon": "bin/nodemon.js"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/nodemon"
+ }
+ },
+ "node_modules/nodemon/node_modules/debug": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+ "dev": true,
+ "dependencies": {
+ "ms": "^2.1.1"
+ }
+ },
+ "node_modules/nodemon/node_modules/has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/nodemon/node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "dev": true
+ },
+ "node_modules/nodemon/node_modules/supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/nopt": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz",
+ "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==",
+ "dev": true,
+ "dependencies": {
+ "abbrev": "1"
+ },
+ "bin": {
+ "nopt": "bin/nopt.js"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/normalize-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
+ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object-assign": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+ "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object-inspect": {
+ "version": "1.12.3",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz",
+ "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/on-finished": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
+ "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
+ "dependencies": {
+ "ee-first": "1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/on-headers": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz",
+ "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+ "dev": true,
+ "dependencies": {
+ "wrappy": "1"
+ }
+ },
+ "node_modules/optionator": {
+ "version": "0.9.3",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz",
+ "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==",
+ "dev": true,
+ "dependencies": {
+ "@aashutoshrathi/word-wrap": "^1.2.3",
+ "deep-is": "^0.1.3",
+ "fast-levenshtein": "^2.0.6",
+ "levn": "^0.4.1",
+ "prelude-ls": "^1.2.1",
+ "type-check": "^0.4.0"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/p-limit": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
+ "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
+ "dev": true,
+ "dependencies": {
+ "yocto-queue": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-locate": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
+ "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
+ "dev": true,
+ "dependencies": {
+ "p-limit": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/packet-reader": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/packet-reader/-/packet-reader-1.0.0.tgz",
+ "integrity": "sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ=="
+ },
+ "node_modules/parent-module": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
+ "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
+ "dev": true,
+ "dependencies": {
+ "callsites": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/parseurl": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
+ "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/path-exists": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/path-key": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/path-to-regexp": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
+ "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ=="
+ },
+ "node_modules/pg": {
+ "version": "8.11.3",
+ "resolved": "https://registry.npmjs.org/pg/-/pg-8.11.3.tgz",
+ "integrity": "sha512-+9iuvG8QfaaUrrph+kpF24cXkH1YOOUeArRNYIxq1viYHZagBxrTno7cecY1Fa44tJeZvaoG+Djpkc3JwehN5g==",
+ "dependencies": {
+ "buffer-writer": "2.0.0",
+ "packet-reader": "1.0.0",
+ "pg-connection-string": "^2.6.2",
+ "pg-pool": "^3.6.1",
+ "pg-protocol": "^1.6.0",
+ "pg-types": "^2.1.0",
+ "pgpass": "1.x"
+ },
+ "engines": {
+ "node": ">= 8.0.0"
+ },
+ "optionalDependencies": {
+ "pg-cloudflare": "^1.1.1"
+ },
+ "peerDependencies": {
+ "pg-native": ">=3.0.1"
+ },
+ "peerDependenciesMeta": {
+ "pg-native": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/pg-cloudflare": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/pg-cloudflare/-/pg-cloudflare-1.1.1.tgz",
+ "integrity": "sha512-xWPagP/4B6BgFO+EKz3JONXv3YDgvkbVrGw2mTo3D6tVDQRh1e7cqVGvyR3BE+eQgAvx1XhW/iEASj4/jCWl3Q==",
+ "optional": true
+ },
+ "node_modules/pg-connection-string": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.6.2.tgz",
+ "integrity": "sha512-ch6OwaeaPYcova4kKZ15sbJ2hKb/VP48ZD2gE7i1J+L4MspCtBMAx8nMgz7bksc7IojCIIWuEhHibSMFH8m8oA=="
+ },
+ "node_modules/pg-int8": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz",
+ "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==",
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
+ "node_modules/pg-pool": {
+ "version": "3.6.1",
+ "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.6.1.tgz",
+ "integrity": "sha512-jizsIzhkIitxCGfPRzJn1ZdcosIt3pz9Sh3V01fm1vZnbnCMgmGl5wvGGdNN2EL9Rmb0EcFoCkixH4Pu+sP9Og==",
+ "peerDependencies": {
+ "pg": ">=8.0"
+ }
+ },
+ "node_modules/pg-protocol": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.6.0.tgz",
+ "integrity": "sha512-M+PDm637OY5WM307051+bsDia5Xej6d9IR4GwJse1qA1DIhiKlksvrneZOYQq42OM+spubpcNYEo2FcKQrDk+Q=="
+ },
+ "node_modules/pg-types": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz",
+ "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==",
+ "dependencies": {
+ "pg-int8": "1.0.1",
+ "postgres-array": "~2.0.0",
+ "postgres-bytea": "~1.0.0",
+ "postgres-date": "~1.0.4",
+ "postgres-interval": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/pgpass": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/pgpass/-/pgpass-1.0.5.tgz",
+ "integrity": "sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==",
+ "dependencies": {
+ "split2": "^4.1.0"
+ }
+ },
+ "node_modules/picomatch": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "dev": true,
+ "engines": {
+ "node": ">=8.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/postgres-array": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz",
+ "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/postgres-bytea": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz",
+ "integrity": "sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/postgres-date": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz",
+ "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/postgres-interval": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz",
+ "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==",
+ "dependencies": {
+ "xtend": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/prelude-ls": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
+ "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/proxy-addr": {
+ "version": "2.0.7",
+ "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
+ "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
+ "dependencies": {
+ "forwarded": "0.2.0",
+ "ipaddr.js": "1.9.1"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/pstree.remy": {
+ "version": "1.1.8",
+ "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz",
+ "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==",
+ "dev": true
+ },
+ "node_modules/punycode": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz",
+ "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/qs": {
+ "version": "6.11.0",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
+ "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
+ "dependencies": {
+ "side-channel": "^1.0.4"
+ },
+ "engines": {
+ "node": ">=0.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/queue-microtask": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
+ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
+ "node_modules/range-parser": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
+ "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/raw-body": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz",
+ "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==",
+ "dependencies": {
+ "bytes": "3.1.2",
+ "http-errors": "2.0.0",
+ "iconv-lite": "0.4.24",
+ "unpipe": "1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/readdirp": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
+ "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
+ "dev": true,
+ "dependencies": {
+ "picomatch": "^2.2.1"
+ },
+ "engines": {
+ "node": ">=8.10.0"
+ }
+ },
+ "node_modules/resolve-from": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
+ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/reusify": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
+ "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
+ "dev": true,
+ "engines": {
+ "iojs": ">=1.0.0",
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/rimraf": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
+ "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
+ "dev": true,
+ "dependencies": {
+ "glob": "^7.1.3"
+ },
+ "bin": {
+ "rimraf": "bin.js"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/run-parallel": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
+ "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "dependencies": {
+ "queue-microtask": "^1.2.2"
+ }
+ },
+ "node_modules/safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
+ "node_modules/safer-buffer": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
+ },
+ "node_modules/semver": {
+ "version": "7.5.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
+ "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/send": {
+ "version": "0.18.0",
+ "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
+ "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
+ "dependencies": {
+ "debug": "2.6.9",
+ "depd": "2.0.0",
+ "destroy": "1.2.0",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "etag": "~1.8.1",
+ "fresh": "0.5.2",
+ "http-errors": "2.0.0",
+ "mime": "1.6.0",
+ "ms": "2.1.3",
+ "on-finished": "2.4.1",
+ "range-parser": "~1.2.1",
+ "statuses": "2.0.1"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/send/node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
+ },
+ "node_modules/serve-static": {
+ "version": "1.15.0",
+ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz",
+ "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
+ "dependencies": {
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "parseurl": "~1.3.3",
+ "send": "0.18.0"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/setprototypeof": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
+ "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
+ },
+ "node_modules/shebang-command": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+ "dev": true,
+ "dependencies": {
+ "shebang-regex": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/shebang-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/side-channel": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
+ "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
+ "dependencies": {
+ "call-bind": "^1.0.0",
+ "get-intrinsic": "^1.0.2",
+ "object-inspect": "^1.9.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/simple-update-notifier": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz",
+ "integrity": "sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==",
+ "dev": true,
+ "dependencies": {
+ "semver": "^7.5.3"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/split2": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz",
+ "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==",
+ "engines": {
+ "node": ">= 10.x"
+ }
+ },
+ "node_modules/statuses": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
+ "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-json-comments": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/text-table": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
+ "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
+ "dev": true
+ },
+ "node_modules/to-regex-range": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "dev": true,
+ "dependencies": {
+ "is-number": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=8.0"
+ }
+ },
+ "node_modules/toidentifier": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
+ "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
+ "engines": {
+ "node": ">=0.6"
+ }
+ },
+ "node_modules/touch": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz",
+ "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==",
+ "dev": true,
+ "dependencies": {
+ "nopt": "~1.0.10"
+ },
+ "bin": {
+ "nodetouch": "bin/nodetouch.js"
+ }
+ },
+ "node_modules/type-check": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
+ "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
+ "dev": true,
+ "dependencies": {
+ "prelude-ls": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/type-fest": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
+ "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/type-is": {
+ "version": "1.6.18",
+ "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
+ "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
+ "dependencies": {
+ "media-typer": "0.3.0",
+ "mime-types": "~2.1.24"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/undefsafe": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz",
+ "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==",
+ "dev": true
+ },
+ "node_modules/unpipe": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
+ "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/uri-js": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
+ "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
+ "dev": true,
+ "dependencies": {
+ "punycode": "^2.1.0"
+ }
+ },
+ "node_modules/utils-merge": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
+ "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==",
+ "engines": {
+ "node": ">= 0.4.0"
+ }
+ },
+ "node_modules/vary": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
+ "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "dev": true,
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "node-which": "bin/node-which"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
+ "dev": true
+ },
+ "node_modules/xtend": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
+ "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
+ "engines": {
+ "node": ">=0.4"
+ }
+ },
+ "node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
+ },
+ "node_modules/yocto-queue": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
+ "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/zod": {
+ "version": "3.22.2",
+ "resolved": "https://registry.npmjs.org/zod/-/zod-3.22.2.tgz",
+ "integrity": "sha512-wvWkphh5WQsJbVk1tbx1l1Ly4yg+XecD+Mq280uBGt9wa5BKSWf4Mhp6GmrkPixhMxmabYY7RbzlwVP32pbGCg==",
+ "funding": {
+ "url": "https://github.com/sponsors/colinhacks"
+ }
+ }
+ }
+}
diff --git a/LaboratorioIV/JavaScript/Leccion05/node_modules/@aashutoshrathi/word-wrap/LICENSE b/LaboratorioIV/JavaScript/Leccion05/node_modules/@aashutoshrathi/word-wrap/LICENSE
new file mode 100644
index 0000000..842218c
--- /dev/null
+++ b/LaboratorioIV/JavaScript/Leccion05/node_modules/@aashutoshrathi/word-wrap/LICENSE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2014-2016, Jon Schlinkert
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/LaboratorioIV/JavaScript/Leccion05/node_modules/@aashutoshrathi/word-wrap/README.md b/LaboratorioIV/JavaScript/Leccion05/node_modules/@aashutoshrathi/word-wrap/README.md
new file mode 100644
index 0000000..3abb882
--- /dev/null
+++ b/LaboratorioIV/JavaScript/Leccion05/node_modules/@aashutoshrathi/word-wrap/README.md
@@ -0,0 +1,182 @@
+# word-wrap [![NPM version](https://img.shields.io/npm/v/word-wrap.svg?style=flat)](https://www.npmjs.com/package/word-wrap) [![NPM monthly downloads](https://img.shields.io/npm/dm/word-wrap.svg?style=flat)](https://npmjs.org/package/word-wrap) [![NPM total downloads](https://img.shields.io/npm/dt/word-wrap.svg?style=flat)](https://npmjs.org/package/word-wrap) [![Linux Build Status](https://img.shields.io/travis/jonschlinkert/word-wrap.svg?style=flat&label=Travis)](https://travis-ci.org/jonschlinkert/word-wrap)
+
+> Wrap words to a specified length.
+
+## Install
+
+Install with [npm](https://www.npmjs.com/):
+
+```sh
+$ npm install --save word-wrap
+```
+
+## Usage
+
+```js
+var wrap = require('word-wrap');
+
+wrap('Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.');
+```
+
+Results in:
+
+```
+ Lorem ipsum dolor sit amet, consectetur adipiscing
+ elit, sed do eiusmod tempor incididunt ut labore
+ et dolore magna aliqua. Ut enim ad minim veniam,
+ quis nostrud exercitation ullamco laboris nisi ut
+ aliquip ex ea commodo consequat.
+```
+
+## Options
+
+![image](https://cloud.githubusercontent.com/assets/383994/6543728/7a381c08-c4f6-11e4-8b7d-b6ba197569c9.png)
+
+### options.width
+
+Type: `Number`
+
+Default: `50`
+
+The width of the text before wrapping to a new line.
+
+**Example:**
+
+```js
+wrap(str, {width: 60});
+```
+
+### options.indent
+
+Type: `String`
+
+Default: `` (none)
+
+The string to use at the beginning of each line.
+
+**Example:**
+
+```js
+wrap(str, {indent: ' '});
+```
+
+### options.newline
+
+Type: `String`
+
+Default: `\n`
+
+The string to use at the end of each line.
+
+**Example:**
+
+```js
+wrap(str, {newline: '\n\n'});
+```
+
+### options.escape
+
+Type: `function`
+
+Default: `function(str){return str;}`
+
+An escape function to run on each line after splitting them.
+
+**Example:**
+
+```js
+var xmlescape = require('xml-escape');
+wrap(str, {
+ escape: function(string){
+ return xmlescape(string);
+ }
+});
+```
+
+### options.trim
+
+Type: `Boolean`
+
+Default: `false`
+
+Trim trailing whitespace from the returned string. This option is included since `.trim()` would also strip the leading indentation from the first line.
+
+**Example:**
+
+```js
+wrap(str, {trim: true});
+```
+
+### options.cut
+
+Type: `Boolean`
+
+Default: `false`
+
+Break a word between any two letters when the word is longer than the specified width.
+
+**Example:**
+
+```js
+wrap(str, {cut: true});
+```
+
+## About
+
+### Related projects
+
+* [common-words](https://www.npmjs.com/package/common-words): Updated list (JSON) of the 100 most common words in the English language. Useful for… [more](https://github.com/jonschlinkert/common-words) | [homepage](https://github.com/jonschlinkert/common-words "Updated list (JSON) of the 100 most common words in the English language. Useful for excluding these words from arrays.")
+* [shuffle-words](https://www.npmjs.com/package/shuffle-words): Shuffle the words in a string and optionally the letters in each word using the… [more](https://github.com/jonschlinkert/shuffle-words) | [homepage](https://github.com/jonschlinkert/shuffle-words "Shuffle the words in a string and optionally the letters in each word using the Fisher-Yates algorithm. Useful for creating test fixtures, benchmarking samples, etc.")
+* [unique-words](https://www.npmjs.com/package/unique-words): Return the unique words in a string or array. | [homepage](https://github.com/jonschlinkert/unique-words "Return the unique words in a string or array.")
+* [wordcount](https://www.npmjs.com/package/wordcount): Count the words in a string. Support for english, CJK and Cyrillic. | [homepage](https://github.com/jonschlinkert/wordcount "Count the words in a string. Support for english, CJK and Cyrillic.")
+
+### Contributing
+
+Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new).
+
+### Contributors
+
+| **Commits** | **Contributor** |
+| --- | --- |
+| 43 | [jonschlinkert](https://github.com/jonschlinkert) |
+| 2 | [lordvlad](https://github.com/lordvlad) |
+| 2 | [hildjj](https://github.com/hildjj) |
+| 1 | [danilosampaio](https://github.com/danilosampaio) |
+| 1 | [2fd](https://github.com/2fd) |
+| 1 | [toddself](https://github.com/toddself) |
+| 1 | [wolfgang42](https://github.com/wolfgang42) |
+| 1 | [zachhale](https://github.com/zachhale) |
+
+### Building docs
+
+_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_
+
+To generate the readme, run the following command:
+
+```sh
+$ npm install -g verbose/verb#dev verb-generate-readme && verb
+```
+
+### Running tests
+
+Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command:
+
+```sh
+$ npm install && npm test
+```
+
+### Author
+
+**Jon Schlinkert**
+
+* [github/jonschlinkert](https://github.com/jonschlinkert)
+* [twitter/jonschlinkert](https://twitter.com/jonschlinkert)
+
+### License
+
+Copyright © 2017, [Jon Schlinkert](https://github.com/jonschlinkert).
+Released under the [MIT License](LICENSE).
+
+***
+
+_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.6.0, on June 02, 2017._
diff --git a/LaboratorioIV/JavaScript/Leccion05/node_modules/@aashutoshrathi/word-wrap/index.d.ts b/LaboratorioIV/JavaScript/Leccion05/node_modules/@aashutoshrathi/word-wrap/index.d.ts
new file mode 100644
index 0000000..1acd425
--- /dev/null
+++ b/LaboratorioIV/JavaScript/Leccion05/node_modules/@aashutoshrathi/word-wrap/index.d.ts
@@ -0,0 +1,50 @@
+/**
+ * Wrap words to a specified length.
+ */
+export = wrap;
+
+declare function wrap(str: string, options?: wrap.IOptions): string;
+
+declare namespace wrap {
+ export interface IOptions {
+
+ /**
+ * The width of the text before wrapping to a new line.
+ * @default ´50´
+ */
+ width?: number;
+
+ /**
+ * The string to use at the beginning of each line.
+ * @default ´´ (none)
+ */
+ indent?: string;
+
+ /**
+ * The string to use at the end of each line.
+ * @default ´\n´
+ */
+ newline?: string;
+
+ /**
+ * An escape function to run on each line after splitting them.
+ * @default (str: string) => string;
+ */
+ escape?: (str: string) => string;
+
+ /**
+ * Trim trailing whitespace from the returned string.
+ * This option is included since .trim() would also strip
+ * the leading indentation from the first line.
+ * @default true
+ */
+ trim?: boolean;
+
+ /**
+ * Break a word between any two letters when the word is longer
+ * than the specified width.
+ * @default false
+ */
+ cut?: boolean;
+ }
+}
diff --git a/LaboratorioIV/JavaScript/Leccion05/node_modules/@aashutoshrathi/word-wrap/index.js b/LaboratorioIV/JavaScript/Leccion05/node_modules/@aashutoshrathi/word-wrap/index.js
new file mode 100644
index 0000000..461a17c
--- /dev/null
+++ b/LaboratorioIV/JavaScript/Leccion05/node_modules/@aashutoshrathi/word-wrap/index.js
@@ -0,0 +1,52 @@
+/*!
+ * word-wrap
+ *
+ * Copyright (c) 2014-2023, Jon Schlinkert.
+ * Released under the MIT License.
+ */
+
+function trimTabAndSpaces(str) {
+ const lines = str.split('\n');
+ const trimmedLines = lines.map((line) => line.trimEnd());
+ return trimmedLines.join('\n');
+}
+
+module.exports = function(str, options) {
+ options = options || {};
+ if (str == null) {
+ return str;
+ }
+
+ var width = options.width || 50;
+ var indent = (typeof options.indent === 'string')
+ ? options.indent
+ : '';
+
+ var newline = options.newline || '\n' + indent;
+ var escape = typeof options.escape === 'function'
+ ? options.escape
+ : identity;
+
+ var regexString = '.{1,' + width + '}';
+ if (options.cut !== true) {
+ regexString += '([\\s\u200B]+|$)|[^\\s\u200B]+?([\\s\u200B]+|$)';
+ }
+
+ var re = new RegExp(regexString, 'g');
+ var lines = str.match(re) || [];
+ var result = indent + lines.map(function(line) {
+ if (line.slice(-1) === '\n') {
+ line = line.slice(0, line.length - 1);
+ }
+ return escape(line);
+ }).join(newline);
+
+ if (options.trim === true) {
+ result = trimTabAndSpaces(result);
+ }
+ return result;
+};
+
+function identity(str) {
+ return str;
+}
diff --git a/LaboratorioIV/JavaScript/Leccion05/node_modules/@aashutoshrathi/word-wrap/package.json b/LaboratorioIV/JavaScript/Leccion05/node_modules/@aashutoshrathi/word-wrap/package.json
new file mode 100644
index 0000000..e33e077
--- /dev/null
+++ b/LaboratorioIV/JavaScript/Leccion05/node_modules/@aashutoshrathi/word-wrap/package.json
@@ -0,0 +1,81 @@
+{
+ "name": "@aashutoshrathi/word-wrap",
+ "description": "Wrap words to a specified length.",
+ "version": "1.2.6",
+ "homepage": "https://github.com/aashutoshrathi/word-wrap",
+ "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
+ "contributors": [
+ "Aashutosh Rathi ",
+ "Danilo Sampaio (localhost:8080)",
+ "Fede Ramirez (https://2fd.github.io)",
+ "Joe Hildebrand (https://twitter.com/hildjj)",
+ "Jon Schlinkert (http://twitter.com/jonschlinkert)",
+ "Todd Kennedy (https://tck.io)",
+ "Waldemar Reusch (https://github.com/lordvlad)",
+ "Wolfgang Faust (http://www.linestarve.com)",
+ "Zach Hale (http://zachhale.com)"
+ ],
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/aashutoshrathi/word-wrap.git"
+ },
+ "bugs": {
+ "url": "https://github.com/aashutoshrathi/word-wrap/issues"
+ },
+ "license": "MIT",
+ "files": [
+ "index.js",
+ "index.d.ts"
+ ],
+ "main": "index.js",
+ "engines": {
+ "node": ">=0.10.0"
+ },
+ "scripts": {
+ "test": "mocha"
+ },
+ "devDependencies": {
+ "gulp-format-md": "^0.1.11",
+ "mocha": "^10.2.0"
+ },
+ "keywords": [
+ "break",
+ "carriage",
+ "line",
+ "new-line",
+ "newline",
+ "return",
+ "soft",
+ "text",
+ "word",
+ "word-wrap",
+ "words",
+ "wrap"
+ ],
+ "typings": "index.d.ts",
+ "verb": {
+ "toc": false,
+ "layout": "default",
+ "tasks": [
+ "readme"
+ ],
+ "plugins": [
+ "gulp-format-md"
+ ],
+ "lint": {
+ "reflinks": true
+ },
+ "related": {
+ "list": [
+ "common-words",
+ "shuffle-words",
+ "unique-words",
+ "wordcount"
+ ]
+ },
+ "reflinks": [
+ "verb",
+ "verb-generate-readme"
+ ]
+ }
+}
diff --git a/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint-community/eslint-utils/LICENSE b/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint-community/eslint-utils/LICENSE
new file mode 100644
index 0000000..883ee1f
--- /dev/null
+++ b/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint-community/eslint-utils/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2018 Toru Nagashima
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint-community/eslint-utils/README.md b/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint-community/eslint-utils/README.md
new file mode 100644
index 0000000..90552a9
--- /dev/null
+++ b/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint-community/eslint-utils/README.md
@@ -0,0 +1,37 @@
+# @eslint-community/eslint-utils
+
+[![npm version](https://img.shields.io/npm/v/@eslint-community/eslint-utils.svg)](https://www.npmjs.com/package/@eslint-community/eslint-utils)
+[![Downloads/month](https://img.shields.io/npm/dm/@eslint-community/eslint-utils.svg)](http://www.npmtrends.com/@eslint-community/eslint-utils)
+[![Build Status](https://github.com/eslint-community/eslint-utils/workflows/CI/badge.svg)](https://github.com/eslint-community/eslint-utils/actions)
+[![Coverage Status](https://codecov.io/gh/eslint-community/eslint-utils/branch/main/graph/badge.svg)](https://codecov.io/gh/eslint-community/eslint-utils)
+
+## 🏁 Goal
+
+This package provides utility functions and classes for make ESLint custom rules.
+
+For examples:
+
+- [`getStaticValue`](https://eslint-community.github.io/eslint-utils/api/ast-utils.html#getstaticvalue) evaluates static value on AST.
+- [`ReferenceTracker`](https://eslint-community.github.io/eslint-utils/api/scope-utils.html#referencetracker-class) checks the members of modules/globals as handling assignments and destructuring.
+
+## 📖 Usage
+
+See [documentation](https://eslint-community.github.io/eslint-utils).
+
+## 📰 Changelog
+
+See [releases](https://github.com/eslint-community/eslint-utils/releases).
+
+## ❤️ Contributing
+
+Welcome contributing!
+
+Please use GitHub's Issues/PRs.
+
+### Development Tools
+
+- `npm test` runs tests and measures coverage.
+- `npm run clean` removes the coverage result of `npm test` command.
+- `npm run coverage` shows the coverage result of the last `npm test` command.
+- `npm run lint` runs ESLint.
+- `npm run watch` runs tests on each file change.
diff --git a/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint-community/eslint-utils/index.js b/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint-community/eslint-utils/index.js
new file mode 100644
index 0000000..156015e
--- /dev/null
+++ b/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint-community/eslint-utils/index.js
@@ -0,0 +1,2068 @@
+'use strict';
+
+Object.defineProperty(exports, '__esModule', { value: true });
+
+var eslintVisitorKeys = require('eslint-visitor-keys');
+
+/**
+ * Get the innermost scope which contains a given location.
+ * @param {Scope} initialScope The initial scope to search.
+ * @param {Node} node The location to search.
+ * @returns {Scope} The innermost scope.
+ */
+function getInnermostScope(initialScope, node) {
+ const location = node.range[0];
+
+ let scope = initialScope;
+ let found = false;
+ do {
+ found = false;
+ for (const childScope of scope.childScopes) {
+ const range = childScope.block.range;
+
+ if (range[0] <= location && location < range[1]) {
+ scope = childScope;
+ found = true;
+ break
+ }
+ }
+ } while (found)
+
+ return scope
+}
+
+/**
+ * Find the variable of a given name.
+ * @param {Scope} initialScope The scope to start finding.
+ * @param {string|Node} nameOrNode The variable name to find. If this is a Node object then it should be an Identifier node.
+ * @returns {Variable|null} The found variable or null.
+ */
+function findVariable(initialScope, nameOrNode) {
+ let name = "";
+ let scope = initialScope;
+
+ if (typeof nameOrNode === "string") {
+ name = nameOrNode;
+ } else {
+ name = nameOrNode.name;
+ scope = getInnermostScope(scope, nameOrNode);
+ }
+
+ while (scope != null) {
+ const variable = scope.set.get(name);
+ if (variable != null) {
+ return variable
+ }
+ scope = scope.upper;
+ }
+
+ return null
+}
+
+/**
+ * Negate the result of `this` calling.
+ * @param {Token} token The token to check.
+ * @returns {boolean} `true` if the result of `this(token)` is `false`.
+ */
+function negate0(token) {
+ return !this(token) //eslint-disable-line no-invalid-this
+}
+
+/**
+ * Creates the negate function of the given function.
+ * @param {function(Token):boolean} f - The function to negate.
+ * @returns {function(Token):boolean} Negated function.
+ */
+function negate(f) {
+ return negate0.bind(f)
+}
+
+/**
+ * Checks if the given token is a PunctuatorToken with the given value
+ * @param {Token} token - The token to check.
+ * @param {string} value - The value to check.
+ * @returns {boolean} `true` if the token is a PunctuatorToken with the given value.
+ */
+function isPunctuatorTokenWithValue(token, value) {
+ return token.type === "Punctuator" && token.value === value
+}
+
+/**
+ * Checks if the given token is an arrow token or not.
+ * @param {Token} token - The token to check.
+ * @returns {boolean} `true` if the token is an arrow token.
+ */
+function isArrowToken(token) {
+ return isPunctuatorTokenWithValue(token, "=>")
+}
+
+/**
+ * Checks if the given token is a comma token or not.
+ * @param {Token} token - The token to check.
+ * @returns {boolean} `true` if the token is a comma token.
+ */
+function isCommaToken(token) {
+ return isPunctuatorTokenWithValue(token, ",")
+}
+
+/**
+ * Checks if the given token is a semicolon token or not.
+ * @param {Token} token - The token to check.
+ * @returns {boolean} `true` if the token is a semicolon token.
+ */
+function isSemicolonToken(token) {
+ return isPunctuatorTokenWithValue(token, ";")
+}
+
+/**
+ * Checks if the given token is a colon token or not.
+ * @param {Token} token - The token to check.
+ * @returns {boolean} `true` if the token is a colon token.
+ */
+function isColonToken(token) {
+ return isPunctuatorTokenWithValue(token, ":")
+}
+
+/**
+ * Checks if the given token is an opening parenthesis token or not.
+ * @param {Token} token - The token to check.
+ * @returns {boolean} `true` if the token is an opening parenthesis token.
+ */
+function isOpeningParenToken(token) {
+ return isPunctuatorTokenWithValue(token, "(")
+}
+
+/**
+ * Checks if the given token is a closing parenthesis token or not.
+ * @param {Token} token - The token to check.
+ * @returns {boolean} `true` if the token is a closing parenthesis token.
+ */
+function isClosingParenToken(token) {
+ return isPunctuatorTokenWithValue(token, ")")
+}
+
+/**
+ * Checks if the given token is an opening square bracket token or not.
+ * @param {Token} token - The token to check.
+ * @returns {boolean} `true` if the token is an opening square bracket token.
+ */
+function isOpeningBracketToken(token) {
+ return isPunctuatorTokenWithValue(token, "[")
+}
+
+/**
+ * Checks if the given token is a closing square bracket token or not.
+ * @param {Token} token - The token to check.
+ * @returns {boolean} `true` if the token is a closing square bracket token.
+ */
+function isClosingBracketToken(token) {
+ return isPunctuatorTokenWithValue(token, "]")
+}
+
+/**
+ * Checks if the given token is an opening brace token or not.
+ * @param {Token} token - The token to check.
+ * @returns {boolean} `true` if the token is an opening brace token.
+ */
+function isOpeningBraceToken(token) {
+ return isPunctuatorTokenWithValue(token, "{")
+}
+
+/**
+ * Checks if the given token is a closing brace token or not.
+ * @param {Token} token - The token to check.
+ * @returns {boolean} `true` if the token is a closing brace token.
+ */
+function isClosingBraceToken(token) {
+ return isPunctuatorTokenWithValue(token, "}")
+}
+
+/**
+ * Checks if the given token is a comment token or not.
+ * @param {Token} token - The token to check.
+ * @returns {boolean} `true` if the token is a comment token.
+ */
+function isCommentToken(token) {
+ return ["Block", "Line", "Shebang"].includes(token.type)
+}
+
+const isNotArrowToken = negate(isArrowToken);
+const isNotCommaToken = negate(isCommaToken);
+const isNotSemicolonToken = negate(isSemicolonToken);
+const isNotColonToken = negate(isColonToken);
+const isNotOpeningParenToken = negate(isOpeningParenToken);
+const isNotClosingParenToken = negate(isClosingParenToken);
+const isNotOpeningBracketToken = negate(isOpeningBracketToken);
+const isNotClosingBracketToken = negate(isClosingBracketToken);
+const isNotOpeningBraceToken = negate(isOpeningBraceToken);
+const isNotClosingBraceToken = negate(isClosingBraceToken);
+const isNotCommentToken = negate(isCommentToken);
+
+/**
+ * Get the `(` token of the given function node.
+ * @param {Node} node - The function node to get.
+ * @param {SourceCode} sourceCode - The source code object to get tokens.
+ * @returns {Token} `(` token.
+ */
+function getOpeningParenOfParams(node, sourceCode) {
+ return node.id
+ ? sourceCode.getTokenAfter(node.id, isOpeningParenToken)
+ : sourceCode.getFirstToken(node, isOpeningParenToken)
+}
+
+/**
+ * Get the location of the given function node for reporting.
+ * @param {Node} node - The function node to get.
+ * @param {SourceCode} sourceCode - The source code object to get tokens.
+ * @returns {string} The location of the function node for reporting.
+ */
+function getFunctionHeadLocation(node, sourceCode) {
+ const parent = node.parent;
+ let start = null;
+ let end = null;
+
+ if (node.type === "ArrowFunctionExpression") {
+ const arrowToken = sourceCode.getTokenBefore(node.body, isArrowToken);
+
+ start = arrowToken.loc.start;
+ end = arrowToken.loc.end;
+ } else if (
+ parent.type === "Property" ||
+ parent.type === "MethodDefinition" ||
+ parent.type === "PropertyDefinition"
+ ) {
+ start = parent.loc.start;
+ end = getOpeningParenOfParams(node, sourceCode).loc.start;
+ } else {
+ start = node.loc.start;
+ end = getOpeningParenOfParams(node, sourceCode).loc.start;
+ }
+
+ return {
+ start: { ...start },
+ end: { ...end },
+ }
+}
+
+/* globals globalThis, global, self, window */
+
+const globalObject =
+ typeof globalThis !== "undefined"
+ ? globalThis
+ : typeof self !== "undefined"
+ ? self
+ : typeof window !== "undefined"
+ ? window
+ : typeof global !== "undefined"
+ ? global
+ : {};
+
+const builtinNames = Object.freeze(
+ new Set([
+ "Array",
+ "ArrayBuffer",
+ "BigInt",
+ "BigInt64Array",
+ "BigUint64Array",
+ "Boolean",
+ "DataView",
+ "Date",
+ "decodeURI",
+ "decodeURIComponent",
+ "encodeURI",
+ "encodeURIComponent",
+ "escape",
+ "Float32Array",
+ "Float64Array",
+ "Function",
+ "Infinity",
+ "Int16Array",
+ "Int32Array",
+ "Int8Array",
+ "isFinite",
+ "isNaN",
+ "isPrototypeOf",
+ "JSON",
+ "Map",
+ "Math",
+ "NaN",
+ "Number",
+ "Object",
+ "parseFloat",
+ "parseInt",
+ "Promise",
+ "Proxy",
+ "Reflect",
+ "RegExp",
+ "Set",
+ "String",
+ "Symbol",
+ "Uint16Array",
+ "Uint32Array",
+ "Uint8Array",
+ "Uint8ClampedArray",
+ "undefined",
+ "unescape",
+ "WeakMap",
+ "WeakSet",
+ ]),
+);
+const callAllowed = new Set(
+ [
+ Array.isArray,
+ Array.of,
+ Array.prototype.at,
+ Array.prototype.concat,
+ Array.prototype.entries,
+ Array.prototype.every,
+ Array.prototype.filter,
+ Array.prototype.find,
+ Array.prototype.findIndex,
+ Array.prototype.flat,
+ Array.prototype.includes,
+ Array.prototype.indexOf,
+ Array.prototype.join,
+ Array.prototype.keys,
+ Array.prototype.lastIndexOf,
+ Array.prototype.slice,
+ Array.prototype.some,
+ Array.prototype.toString,
+ Array.prototype.values,
+ typeof BigInt === "function" ? BigInt : undefined,
+ Boolean,
+ Date,
+ Date.parse,
+ decodeURI,
+ decodeURIComponent,
+ encodeURI,
+ encodeURIComponent,
+ escape,
+ isFinite,
+ isNaN,
+ isPrototypeOf,
+ Map,
+ Map.prototype.entries,
+ Map.prototype.get,
+ Map.prototype.has,
+ Map.prototype.keys,
+ Map.prototype.values,
+ ...Object.getOwnPropertyNames(Math)
+ .filter((k) => k !== "random")
+ .map((k) => Math[k])
+ .filter((f) => typeof f === "function"),
+ Number,
+ Number.isFinite,
+ Number.isNaN,
+ Number.parseFloat,
+ Number.parseInt,
+ Number.prototype.toExponential,
+ Number.prototype.toFixed,
+ Number.prototype.toPrecision,
+ Number.prototype.toString,
+ Object,
+ Object.entries,
+ Object.is,
+ Object.isExtensible,
+ Object.isFrozen,
+ Object.isSealed,
+ Object.keys,
+ Object.values,
+ parseFloat,
+ parseInt,
+ RegExp,
+ Set,
+ Set.prototype.entries,
+ Set.prototype.has,
+ Set.prototype.keys,
+ Set.prototype.values,
+ String,
+ String.fromCharCode,
+ String.fromCodePoint,
+ String.raw,
+ String.prototype.at,
+ String.prototype.charAt,
+ String.prototype.charCodeAt,
+ String.prototype.codePointAt,
+ String.prototype.concat,
+ String.prototype.endsWith,
+ String.prototype.includes,
+ String.prototype.indexOf,
+ String.prototype.lastIndexOf,
+ String.prototype.normalize,
+ String.prototype.padEnd,
+ String.prototype.padStart,
+ String.prototype.slice,
+ String.prototype.startsWith,
+ String.prototype.substr,
+ String.prototype.substring,
+ String.prototype.toLowerCase,
+ String.prototype.toString,
+ String.prototype.toUpperCase,
+ String.prototype.trim,
+ String.prototype.trimEnd,
+ String.prototype.trimLeft,
+ String.prototype.trimRight,
+ String.prototype.trimStart,
+ Symbol.for,
+ Symbol.keyFor,
+ unescape,
+ ].filter((f) => typeof f === "function"),
+);
+const callPassThrough = new Set([
+ Object.freeze,
+ Object.preventExtensions,
+ Object.seal,
+]);
+
+/** @type {ReadonlyArray]>} */
+const getterAllowed = [
+ [Map, new Set(["size"])],
+ [
+ RegExp,
+ new Set([
+ "dotAll",
+ "flags",
+ "global",
+ "hasIndices",
+ "ignoreCase",
+ "multiline",
+ "source",
+ "sticky",
+ "unicode",
+ ]),
+ ],
+ [Set, new Set(["size"])],
+];
+
+/**
+ * Get the property descriptor.
+ * @param {object} object The object to get.
+ * @param {string|number|symbol} name The property name to get.
+ */
+function getPropertyDescriptor(object, name) {
+ let x = object;
+ while ((typeof x === "object" || typeof x === "function") && x !== null) {
+ const d = Object.getOwnPropertyDescriptor(x, name);
+ if (d) {
+ return d
+ }
+ x = Object.getPrototypeOf(x);
+ }
+ return null
+}
+
+/**
+ * Check if a property is getter or not.
+ * @param {object} object The object to check.
+ * @param {string|number|symbol} name The property name to check.
+ */
+function isGetter(object, name) {
+ const d = getPropertyDescriptor(object, name);
+ return d != null && d.get != null
+}
+
+/**
+ * Get the element values of a given node list.
+ * @param {Node[]} nodeList The node list to get values.
+ * @param {Scope|undefined} initialScope The initial scope to find variables.
+ * @returns {any[]|null} The value list if all nodes are constant. Otherwise, null.
+ */
+function getElementValues(nodeList, initialScope) {
+ const valueList = [];
+
+ for (let i = 0; i < nodeList.length; ++i) {
+ const elementNode = nodeList[i];
+
+ if (elementNode == null) {
+ valueList.length = i + 1;
+ } else if (elementNode.type === "SpreadElement") {
+ const argument = getStaticValueR(elementNode.argument, initialScope);
+ if (argument == null) {
+ return null
+ }
+ valueList.push(...argument.value);
+ } else {
+ const element = getStaticValueR(elementNode, initialScope);
+ if (element == null) {
+ return null
+ }
+ valueList.push(element.value);
+ }
+ }
+
+ return valueList
+}
+
+/**
+ * Returns whether the given variable is never written to after initialization.
+ * @param {import("eslint").Scope.Variable} variable
+ * @returns {boolean}
+ */
+function isEffectivelyConst(variable) {
+ const refs = variable.references;
+
+ const inits = refs.filter((r) => r.init).length;
+ const reads = refs.filter((r) => r.isReadOnly()).length;
+ if (inits === 1 && reads + inits === refs.length) {
+ // there is only one init and all other references only read
+ return true
+ }
+ return false
+}
+
+const operations = Object.freeze({
+ ArrayExpression(node, initialScope) {
+ const elements = getElementValues(node.elements, initialScope);
+ return elements != null ? { value: elements } : null
+ },
+
+ AssignmentExpression(node, initialScope) {
+ if (node.operator === "=") {
+ return getStaticValueR(node.right, initialScope)
+ }
+ return null
+ },
+
+ //eslint-disable-next-line complexity
+ BinaryExpression(node, initialScope) {
+ if (node.operator === "in" || node.operator === "instanceof") {
+ // Not supported.
+ return null
+ }
+
+ const left = getStaticValueR(node.left, initialScope);
+ const right = getStaticValueR(node.right, initialScope);
+ if (left != null && right != null) {
+ switch (node.operator) {
+ case "==":
+ return { value: left.value == right.value } //eslint-disable-line eqeqeq
+ case "!=":
+ return { value: left.value != right.value } //eslint-disable-line eqeqeq
+ case "===":
+ return { value: left.value === right.value }
+ case "!==":
+ return { value: left.value !== right.value }
+ case "<":
+ return { value: left.value < right.value }
+ case "<=":
+ return { value: left.value <= right.value }
+ case ">":
+ return { value: left.value > right.value }
+ case ">=":
+ return { value: left.value >= right.value }
+ case "<<":
+ return { value: left.value << right.value }
+ case ">>":
+ return { value: left.value >> right.value }
+ case ">>>":
+ return { value: left.value >>> right.value }
+ case "+":
+ return { value: left.value + right.value }
+ case "-":
+ return { value: left.value - right.value }
+ case "*":
+ return { value: left.value * right.value }
+ case "/":
+ return { value: left.value / right.value }
+ case "%":
+ return { value: left.value % right.value }
+ case "**":
+ return { value: left.value ** right.value }
+ case "|":
+ return { value: left.value | right.value }
+ case "^":
+ return { value: left.value ^ right.value }
+ case "&":
+ return { value: left.value & right.value }
+
+ // no default
+ }
+ }
+
+ return null
+ },
+
+ CallExpression(node, initialScope) {
+ const calleeNode = node.callee;
+ const args = getElementValues(node.arguments, initialScope);
+
+ if (args != null) {
+ if (calleeNode.type === "MemberExpression") {
+ if (calleeNode.property.type === "PrivateIdentifier") {
+ return null
+ }
+ const object = getStaticValueR(calleeNode.object, initialScope);
+ if (object != null) {
+ if (
+ object.value == null &&
+ (object.optional || node.optional)
+ ) {
+ return { value: undefined, optional: true }
+ }
+ const property = getStaticPropertyNameValue(
+ calleeNode,
+ initialScope,
+ );
+
+ if (property != null) {
+ const receiver = object.value;
+ const methodName = property.value;
+ if (callAllowed.has(receiver[methodName])) {
+ return { value: receiver[methodName](...args) }
+ }
+ if (callPassThrough.has(receiver[methodName])) {
+ return { value: args[0] }
+ }
+ }
+ }
+ } else {
+ const callee = getStaticValueR(calleeNode, initialScope);
+ if (callee != null) {
+ if (callee.value == null && node.optional) {
+ return { value: undefined, optional: true }
+ }
+ const func = callee.value;
+ if (callAllowed.has(func)) {
+ return { value: func(...args) }
+ }
+ if (callPassThrough.has(func)) {
+ return { value: args[0] }
+ }
+ }
+ }
+ }
+
+ return null
+ },
+
+ ConditionalExpression(node, initialScope) {
+ const test = getStaticValueR(node.test, initialScope);
+ if (test != null) {
+ return test.value
+ ? getStaticValueR(node.consequent, initialScope)
+ : getStaticValueR(node.alternate, initialScope)
+ }
+ return null
+ },
+
+ ExpressionStatement(node, initialScope) {
+ return getStaticValueR(node.expression, initialScope)
+ },
+
+ Identifier(node, initialScope) {
+ if (initialScope != null) {
+ const variable = findVariable(initialScope, node);
+
+ // Built-in globals.
+ if (
+ variable != null &&
+ variable.defs.length === 0 &&
+ builtinNames.has(variable.name) &&
+ variable.name in globalObject
+ ) {
+ return { value: globalObject[variable.name] }
+ }
+
+ // Constants.
+ if (variable != null && variable.defs.length === 1) {
+ const def = variable.defs[0];
+ if (
+ def.parent &&
+ def.type === "Variable" &&
+ (def.parent.kind === "const" ||
+ isEffectivelyConst(variable)) &&
+ // TODO(mysticatea): don't support destructuring here.
+ def.node.id.type === "Identifier"
+ ) {
+ return getStaticValueR(def.node.init, initialScope)
+ }
+ }
+ }
+ return null
+ },
+
+ Literal(node) {
+ //istanbul ignore if : this is implementation-specific behavior.
+ if ((node.regex != null || node.bigint != null) && node.value == null) {
+ // It was a RegExp/BigInt literal, but Node.js didn't support it.
+ return null
+ }
+ return { value: node.value }
+ },
+
+ LogicalExpression(node, initialScope) {
+ const left = getStaticValueR(node.left, initialScope);
+ if (left != null) {
+ if (
+ (node.operator === "||" && Boolean(left.value) === true) ||
+ (node.operator === "&&" && Boolean(left.value) === false) ||
+ (node.operator === "??" && left.value != null)
+ ) {
+ return left
+ }
+
+ const right = getStaticValueR(node.right, initialScope);
+ if (right != null) {
+ return right
+ }
+ }
+
+ return null
+ },
+
+ MemberExpression(node, initialScope) {
+ if (node.property.type === "PrivateIdentifier") {
+ return null
+ }
+ const object = getStaticValueR(node.object, initialScope);
+ if (object != null) {
+ if (object.value == null && (object.optional || node.optional)) {
+ return { value: undefined, optional: true }
+ }
+ const property = getStaticPropertyNameValue(node, initialScope);
+
+ if (property != null) {
+ if (!isGetter(object.value, property.value)) {
+ return { value: object.value[property.value] }
+ }
+
+ for (const [classFn, allowed] of getterAllowed) {
+ if (
+ object.value instanceof classFn &&
+ allowed.has(property.value)
+ ) {
+ return { value: object.value[property.value] }
+ }
+ }
+ }
+ }
+ return null
+ },
+
+ ChainExpression(node, initialScope) {
+ const expression = getStaticValueR(node.expression, initialScope);
+ if (expression != null) {
+ return { value: expression.value }
+ }
+ return null
+ },
+
+ NewExpression(node, initialScope) {
+ const callee = getStaticValueR(node.callee, initialScope);
+ const args = getElementValues(node.arguments, initialScope);
+
+ if (callee != null && args != null) {
+ const Func = callee.value;
+ if (callAllowed.has(Func)) {
+ return { value: new Func(...args) }
+ }
+ }
+
+ return null
+ },
+
+ ObjectExpression(node, initialScope) {
+ const object = {};
+
+ for (const propertyNode of node.properties) {
+ if (propertyNode.type === "Property") {
+ if (propertyNode.kind !== "init") {
+ return null
+ }
+ const key = getStaticPropertyNameValue(
+ propertyNode,
+ initialScope,
+ );
+ const value = getStaticValueR(propertyNode.value, initialScope);
+ if (key == null || value == null) {
+ return null
+ }
+ object[key.value] = value.value;
+ } else if (
+ propertyNode.type === "SpreadElement" ||
+ propertyNode.type === "ExperimentalSpreadProperty"
+ ) {
+ const argument = getStaticValueR(
+ propertyNode.argument,
+ initialScope,
+ );
+ if (argument == null) {
+ return null
+ }
+ Object.assign(object, argument.value);
+ } else {
+ return null
+ }
+ }
+
+ return { value: object }
+ },
+
+ SequenceExpression(node, initialScope) {
+ const last = node.expressions[node.expressions.length - 1];
+ return getStaticValueR(last, initialScope)
+ },
+
+ TaggedTemplateExpression(node, initialScope) {
+ const tag = getStaticValueR(node.tag, initialScope);
+ const expressions = getElementValues(
+ node.quasi.expressions,
+ initialScope,
+ );
+
+ if (tag != null && expressions != null) {
+ const func = tag.value;
+ const strings = node.quasi.quasis.map((q) => q.value.cooked);
+ strings.raw = node.quasi.quasis.map((q) => q.value.raw);
+
+ if (func === String.raw) {
+ return { value: func(strings, ...expressions) }
+ }
+ }
+
+ return null
+ },
+
+ TemplateLiteral(node, initialScope) {
+ const expressions = getElementValues(node.expressions, initialScope);
+ if (expressions != null) {
+ let value = node.quasis[0].value.cooked;
+ for (let i = 0; i < expressions.length; ++i) {
+ value += expressions[i];
+ value += node.quasis[i + 1].value.cooked;
+ }
+ return { value }
+ }
+ return null
+ },
+
+ UnaryExpression(node, initialScope) {
+ if (node.operator === "delete") {
+ // Not supported.
+ return null
+ }
+ if (node.operator === "void") {
+ return { value: undefined }
+ }
+
+ const arg = getStaticValueR(node.argument, initialScope);
+ if (arg != null) {
+ switch (node.operator) {
+ case "-":
+ return { value: -arg.value }
+ case "+":
+ return { value: +arg.value } //eslint-disable-line no-implicit-coercion
+ case "!":
+ return { value: !arg.value }
+ case "~":
+ return { value: ~arg.value }
+ case "typeof":
+ return { value: typeof arg.value }
+
+ // no default
+ }
+ }
+
+ return null
+ },
+});
+
+/**
+ * Get the value of a given node if it's a static value.
+ * @param {Node} node The node to get.
+ * @param {Scope|undefined} initialScope The scope to start finding variable.
+ * @returns {{value:any}|{value:undefined,optional?:true}|null} The static value of the node, or `null`.
+ */
+function getStaticValueR(node, initialScope) {
+ if (node != null && Object.hasOwnProperty.call(operations, node.type)) {
+ return operations[node.type](node, initialScope)
+ }
+ return null
+}
+
+/**
+ * Get the static value of property name from a MemberExpression node or a Property node.
+ * @param {Node} node The node to get.
+ * @param {Scope} [initialScope] The scope to start finding variable. Optional. If the node is a computed property node and this scope was given, this checks the computed property name by the `getStringIfConstant` function with the scope, and returns the value of it.
+ * @returns {{value:any}|{value:undefined,optional?:true}|null} The static value of the property name of the node, or `null`.
+ */
+function getStaticPropertyNameValue(node, initialScope) {
+ const nameNode = node.type === "Property" ? node.key : node.property;
+
+ if (node.computed) {
+ return getStaticValueR(nameNode, initialScope)
+ }
+
+ if (nameNode.type === "Identifier") {
+ return { value: nameNode.name }
+ }
+
+ if (nameNode.type === "Literal") {
+ if (nameNode.bigint) {
+ return { value: nameNode.bigint }
+ }
+ return { value: String(nameNode.value) }
+ }
+
+ return null
+}
+
+/**
+ * Get the value of a given node if it's a static value.
+ * @param {Node} node The node to get.
+ * @param {Scope} [initialScope] The scope to start finding variable. Optional. If this scope was given, this tries to resolve identifier references which are in the given node as much as possible.
+ * @returns {{value:any}|{value:undefined,optional?:true}|null} The static value of the node, or `null`.
+ */
+function getStaticValue(node, initialScope = null) {
+ try {
+ return getStaticValueR(node, initialScope)
+ } catch (_error) {
+ return null
+ }
+}
+
+/**
+ * Get the value of a given node if it's a literal or a template literal.
+ * @param {Node} node The node to get.
+ * @param {Scope} [initialScope] The scope to start finding variable. Optional. If the node is an Identifier node and this scope was given, this checks the variable of the identifier, and returns the value of it if the variable is a constant.
+ * @returns {string|null} The value of the node, or `null`.
+ */
+function getStringIfConstant(node, initialScope = null) {
+ // Handle the literals that the platform doesn't support natively.
+ if (node && node.type === "Literal" && node.value === null) {
+ if (node.regex) {
+ return `/${node.regex.pattern}/${node.regex.flags}`
+ }
+ if (node.bigint) {
+ return node.bigint
+ }
+ }
+
+ const evaluated = getStaticValue(node, initialScope);
+ return evaluated && String(evaluated.value)
+}
+
+/**
+ * Get the property name from a MemberExpression node or a Property node.
+ * @param {Node} node The node to get.
+ * @param {Scope} [initialScope] The scope to start finding variable. Optional. If the node is a computed property node and this scope was given, this checks the computed property name by the `getStringIfConstant` function with the scope, and returns the value of it.
+ * @returns {string|null} The property name of the node.
+ */
+function getPropertyName(node, initialScope) {
+ switch (node.type) {
+ case "MemberExpression":
+ if (node.computed) {
+ return getStringIfConstant(node.property, initialScope)
+ }
+ if (node.property.type === "PrivateIdentifier") {
+ return null
+ }
+ return node.property.name
+
+ case "Property":
+ case "MethodDefinition":
+ case "PropertyDefinition":
+ if (node.computed) {
+ return getStringIfConstant(node.key, initialScope)
+ }
+ if (node.key.type === "Literal") {
+ return String(node.key.value)
+ }
+ if (node.key.type === "PrivateIdentifier") {
+ return null
+ }
+ return node.key.name
+
+ // no default
+ }
+
+ return null
+}
+
+/**
+ * Get the name and kind of the given function node.
+ * @param {ASTNode} node - The function node to get.
+ * @param {SourceCode} [sourceCode] The source code object to get the code of computed property keys.
+ * @returns {string} The name and kind of the function node.
+ */
+// eslint-disable-next-line complexity
+function getFunctionNameWithKind(node, sourceCode) {
+ const parent = node.parent;
+ const tokens = [];
+ const isObjectMethod = parent.type === "Property" && parent.value === node;
+ const isClassMethod =
+ parent.type === "MethodDefinition" && parent.value === node;
+ const isClassFieldMethod =
+ parent.type === "PropertyDefinition" && parent.value === node;
+
+ // Modifiers.
+ if (isClassMethod || isClassFieldMethod) {
+ if (parent.static) {
+ tokens.push("static");
+ }
+ if (parent.key.type === "PrivateIdentifier") {
+ tokens.push("private");
+ }
+ }
+ if (node.async) {
+ tokens.push("async");
+ }
+ if (node.generator) {
+ tokens.push("generator");
+ }
+
+ // Kinds.
+ if (isObjectMethod || isClassMethod) {
+ if (parent.kind === "constructor") {
+ return "constructor"
+ }
+ if (parent.kind === "get") {
+ tokens.push("getter");
+ } else if (parent.kind === "set") {
+ tokens.push("setter");
+ } else {
+ tokens.push("method");
+ }
+ } else if (isClassFieldMethod) {
+ tokens.push("method");
+ } else {
+ if (node.type === "ArrowFunctionExpression") {
+ tokens.push("arrow");
+ }
+ tokens.push("function");
+ }
+
+ // Names.
+ if (isObjectMethod || isClassMethod || isClassFieldMethod) {
+ if (parent.key.type === "PrivateIdentifier") {
+ tokens.push(`#${parent.key.name}`);
+ } else {
+ const name = getPropertyName(parent);
+ if (name) {
+ tokens.push(`'${name}'`);
+ } else if (sourceCode) {
+ const keyText = sourceCode.getText(parent.key);
+ if (!keyText.includes("\n")) {
+ tokens.push(`[${keyText}]`);
+ }
+ }
+ }
+ } else if (node.id) {
+ tokens.push(`'${node.id.name}'`);
+ } else if (
+ parent.type === "VariableDeclarator" &&
+ parent.id &&
+ parent.id.type === "Identifier"
+ ) {
+ tokens.push(`'${parent.id.name}'`);
+ } else if (
+ (parent.type === "AssignmentExpression" ||
+ parent.type === "AssignmentPattern") &&
+ parent.left &&
+ parent.left.type === "Identifier"
+ ) {
+ tokens.push(`'${parent.left.name}'`);
+ } else if (
+ parent.type === "ExportDefaultDeclaration" &&
+ parent.declaration === node
+ ) {
+ tokens.push("'default'");
+ }
+
+ return tokens.join(" ")
+}
+
+const typeConversionBinaryOps = Object.freeze(
+ new Set([
+ "==",
+ "!=",
+ "<",
+ "<=",
+ ">",
+ ">=",
+ "<<",
+ ">>",
+ ">>>",
+ "+",
+ "-",
+ "*",
+ "/",
+ "%",
+ "|",
+ "^",
+ "&",
+ "in",
+ ]),
+);
+const typeConversionUnaryOps = Object.freeze(new Set(["-", "+", "!", "~"]));
+
+/**
+ * Check whether the given value is an ASTNode or not.
+ * @param {any} x The value to check.
+ * @returns {boolean} `true` if the value is an ASTNode.
+ */
+function isNode(x) {
+ return x !== null && typeof x === "object" && typeof x.type === "string"
+}
+
+const visitor = Object.freeze(
+ Object.assign(Object.create(null), {
+ $visit(node, options, visitorKeys) {
+ const { type } = node;
+
+ if (typeof this[type] === "function") {
+ return this[type](node, options, visitorKeys)
+ }
+
+ return this.$visitChildren(node, options, visitorKeys)
+ },
+
+ $visitChildren(node, options, visitorKeys) {
+ const { type } = node;
+
+ for (const key of visitorKeys[type] || eslintVisitorKeys.getKeys(node)) {
+ const value = node[key];
+
+ if (Array.isArray(value)) {
+ for (const element of value) {
+ if (
+ isNode(element) &&
+ this.$visit(element, options, visitorKeys)
+ ) {
+ return true
+ }
+ }
+ } else if (
+ isNode(value) &&
+ this.$visit(value, options, visitorKeys)
+ ) {
+ return true
+ }
+ }
+
+ return false
+ },
+
+ ArrowFunctionExpression() {
+ return false
+ },
+ AssignmentExpression() {
+ return true
+ },
+ AwaitExpression() {
+ return true
+ },
+ BinaryExpression(node, options, visitorKeys) {
+ if (
+ options.considerImplicitTypeConversion &&
+ typeConversionBinaryOps.has(node.operator) &&
+ (node.left.type !== "Literal" || node.right.type !== "Literal")
+ ) {
+ return true
+ }
+ return this.$visitChildren(node, options, visitorKeys)
+ },
+ CallExpression() {
+ return true
+ },
+ FunctionExpression() {
+ return false
+ },
+ ImportExpression() {
+ return true
+ },
+ MemberExpression(node, options, visitorKeys) {
+ if (options.considerGetters) {
+ return true
+ }
+ if (
+ options.considerImplicitTypeConversion &&
+ node.computed &&
+ node.property.type !== "Literal"
+ ) {
+ return true
+ }
+ return this.$visitChildren(node, options, visitorKeys)
+ },
+ MethodDefinition(node, options, visitorKeys) {
+ if (
+ options.considerImplicitTypeConversion &&
+ node.computed &&
+ node.key.type !== "Literal"
+ ) {
+ return true
+ }
+ return this.$visitChildren(node, options, visitorKeys)
+ },
+ NewExpression() {
+ return true
+ },
+ Property(node, options, visitorKeys) {
+ if (
+ options.considerImplicitTypeConversion &&
+ node.computed &&
+ node.key.type !== "Literal"
+ ) {
+ return true
+ }
+ return this.$visitChildren(node, options, visitorKeys)
+ },
+ PropertyDefinition(node, options, visitorKeys) {
+ if (
+ options.considerImplicitTypeConversion &&
+ node.computed &&
+ node.key.type !== "Literal"
+ ) {
+ return true
+ }
+ return this.$visitChildren(node, options, visitorKeys)
+ },
+ UnaryExpression(node, options, visitorKeys) {
+ if (node.operator === "delete") {
+ return true
+ }
+ if (
+ options.considerImplicitTypeConversion &&
+ typeConversionUnaryOps.has(node.operator) &&
+ node.argument.type !== "Literal"
+ ) {
+ return true
+ }
+ return this.$visitChildren(node, options, visitorKeys)
+ },
+ UpdateExpression() {
+ return true
+ },
+ YieldExpression() {
+ return true
+ },
+ }),
+);
+
+/**
+ * Check whether a given node has any side effect or not.
+ * @param {Node} node The node to get.
+ * @param {SourceCode} sourceCode The source code object.
+ * @param {object} [options] The option object.
+ * @param {boolean} [options.considerGetters=false] If `true` then it considers member accesses as the node which has side effects.
+ * @param {boolean} [options.considerImplicitTypeConversion=false] If `true` then it considers implicit type conversion as the node which has side effects.
+ * @param {object} [options.visitorKeys=KEYS] The keys to traverse nodes. Use `context.getSourceCode().visitorKeys`.
+ * @returns {boolean} `true` if the node has a certain side effect.
+ */
+function hasSideEffect(
+ node,
+ sourceCode,
+ { considerGetters = false, considerImplicitTypeConversion = false } = {},
+) {
+ return visitor.$visit(
+ node,
+ { considerGetters, considerImplicitTypeConversion },
+ sourceCode.visitorKeys || eslintVisitorKeys.KEYS,
+ )
+}
+
+/**
+ * Get the left parenthesis of the parent node syntax if it exists.
+ * E.g., `if (a) {}` then the `(`.
+ * @param {Node} node The AST node to check.
+ * @param {SourceCode} sourceCode The source code object to get tokens.
+ * @returns {Token|null} The left parenthesis of the parent node syntax
+ */
+function getParentSyntaxParen(node, sourceCode) {
+ const parent = node.parent;
+
+ switch (parent.type) {
+ case "CallExpression":
+ case "NewExpression":
+ if (parent.arguments.length === 1 && parent.arguments[0] === node) {
+ return sourceCode.getTokenAfter(
+ parent.callee,
+ isOpeningParenToken,
+ )
+ }
+ return null
+
+ case "DoWhileStatement":
+ if (parent.test === node) {
+ return sourceCode.getTokenAfter(
+ parent.body,
+ isOpeningParenToken,
+ )
+ }
+ return null
+
+ case "IfStatement":
+ case "WhileStatement":
+ if (parent.test === node) {
+ return sourceCode.getFirstToken(parent, 1)
+ }
+ return null
+
+ case "ImportExpression":
+ if (parent.source === node) {
+ return sourceCode.getFirstToken(parent, 1)
+ }
+ return null
+
+ case "SwitchStatement":
+ if (parent.discriminant === node) {
+ return sourceCode.getFirstToken(parent, 1)
+ }
+ return null
+
+ case "WithStatement":
+ if (parent.object === node) {
+ return sourceCode.getFirstToken(parent, 1)
+ }
+ return null
+
+ default:
+ return null
+ }
+}
+
+/**
+ * Check whether a given node is parenthesized or not.
+ * @param {number} times The number of parantheses.
+ * @param {Node} node The AST node to check.
+ * @param {SourceCode} sourceCode The source code object to get tokens.
+ * @returns {boolean} `true` if the node is parenthesized the given times.
+ */
+/**
+ * Check whether a given node is parenthesized or not.
+ * @param {Node} node The AST node to check.
+ * @param {SourceCode} sourceCode The source code object to get tokens.
+ * @returns {boolean} `true` if the node is parenthesized.
+ */
+function isParenthesized(
+ timesOrNode,
+ nodeOrSourceCode,
+ optionalSourceCode,
+) {
+ let times, node, sourceCode, maybeLeftParen, maybeRightParen;
+ if (typeof timesOrNode === "number") {
+ times = timesOrNode | 0;
+ node = nodeOrSourceCode;
+ sourceCode = optionalSourceCode;
+ if (!(times >= 1)) {
+ throw new TypeError("'times' should be a positive integer.")
+ }
+ } else {
+ times = 1;
+ node = timesOrNode;
+ sourceCode = nodeOrSourceCode;
+ }
+
+ if (
+ node == null ||
+ // `Program` can't be parenthesized
+ node.parent == null ||
+ // `CatchClause.param` can't be parenthesized, example `try {} catch (error) {}`
+ (node.parent.type === "CatchClause" && node.parent.param === node)
+ ) {
+ return false
+ }
+
+ maybeLeftParen = maybeRightParen = node;
+ do {
+ maybeLeftParen = sourceCode.getTokenBefore(maybeLeftParen);
+ maybeRightParen = sourceCode.getTokenAfter(maybeRightParen);
+ } while (
+ maybeLeftParen != null &&
+ maybeRightParen != null &&
+ isOpeningParenToken(maybeLeftParen) &&
+ isClosingParenToken(maybeRightParen) &&
+ // Avoid false positive such as `if (a) {}`
+ maybeLeftParen !== getParentSyntaxParen(node, sourceCode) &&
+ --times > 0
+ )
+
+ return times === 0
+}
+
+/**
+ * @author Toru Nagashima
+ * See LICENSE file in root directory for full license.
+ */
+
+const placeholder = /\$(?:[$&`']|[1-9][0-9]?)/gu;
+
+/** @type {WeakMap} */
+const internal = new WeakMap();
+
+/**
+ * Check whether a given character is escaped or not.
+ * @param {string} str The string to check.
+ * @param {number} index The location of the character to check.
+ * @returns {boolean} `true` if the character is escaped.
+ */
+function isEscaped(str, index) {
+ let escaped = false;
+ for (let i = index - 1; i >= 0 && str.charCodeAt(i) === 0x5c; --i) {
+ escaped = !escaped;
+ }
+ return escaped
+}
+
+/**
+ * Replace a given string by a given matcher.
+ * @param {PatternMatcher} matcher The pattern matcher.
+ * @param {string} str The string to be replaced.
+ * @param {string} replacement The new substring to replace each matched part.
+ * @returns {string} The replaced string.
+ */
+function replaceS(matcher, str, replacement) {
+ const chunks = [];
+ let index = 0;
+
+ /** @type {RegExpExecArray} */
+ let match = null;
+
+ /**
+ * @param {string} key The placeholder.
+ * @returns {string} The replaced string.
+ */
+ function replacer(key) {
+ switch (key) {
+ case "$$":
+ return "$"
+ case "$&":
+ return match[0]
+ case "$`":
+ return str.slice(0, match.index)
+ case "$'":
+ return str.slice(match.index + match[0].length)
+ default: {
+ const i = key.slice(1);
+ if (i in match) {
+ return match[i]
+ }
+ return key
+ }
+ }
+ }
+
+ for (match of matcher.execAll(str)) {
+ chunks.push(str.slice(index, match.index));
+ chunks.push(replacement.replace(placeholder, replacer));
+ index = match.index + match[0].length;
+ }
+ chunks.push(str.slice(index));
+
+ return chunks.join("")
+}
+
+/**
+ * Replace a given string by a given matcher.
+ * @param {PatternMatcher} matcher The pattern matcher.
+ * @param {string} str The string to be replaced.
+ * @param {(...strs[])=>string} replace The function to replace each matched part.
+ * @returns {string} The replaced string.
+ */
+function replaceF(matcher, str, replace) {
+ const chunks = [];
+ let index = 0;
+
+ for (const match of matcher.execAll(str)) {
+ chunks.push(str.slice(index, match.index));
+ chunks.push(String(replace(...match, match.index, match.input)));
+ index = match.index + match[0].length;
+ }
+ chunks.push(str.slice(index));
+
+ return chunks.join("")
+}
+
+/**
+ * The class to find patterns as considering escape sequences.
+ */
+class PatternMatcher {
+ /**
+ * Initialize this matcher.
+ * @param {RegExp} pattern The pattern to match.
+ * @param {{escaped:boolean}} options The options.
+ */
+ constructor(pattern, { escaped = false } = {}) {
+ if (!(pattern instanceof RegExp)) {
+ throw new TypeError("'pattern' should be a RegExp instance.")
+ }
+ if (!pattern.flags.includes("g")) {
+ throw new Error("'pattern' should contains 'g' flag.")
+ }
+
+ internal.set(this, {
+ pattern: new RegExp(pattern.source, pattern.flags),
+ escaped: Boolean(escaped),
+ });
+ }
+
+ /**
+ * Find the pattern in a given string.
+ * @param {string} str The string to find.
+ * @returns {IterableIterator} The iterator which iterate the matched information.
+ */
+ *execAll(str) {
+ const { pattern, escaped } = internal.get(this);
+ let match = null;
+ let lastIndex = 0;
+
+ pattern.lastIndex = 0;
+ while ((match = pattern.exec(str)) != null) {
+ if (escaped || !isEscaped(str, match.index)) {
+ lastIndex = pattern.lastIndex;
+ yield match;
+ pattern.lastIndex = lastIndex;
+ }
+ }
+ }
+
+ /**
+ * Check whether the pattern is found in a given string.
+ * @param {string} str The string to check.
+ * @returns {boolean} `true` if the pattern was found in the string.
+ */
+ test(str) {
+ const it = this.execAll(str);
+ const ret = it.next();
+ return !ret.done
+ }
+
+ /**
+ * Replace a given string.
+ * @param {string} str The string to be replaced.
+ * @param {(string|((...strs:string[])=>string))} replacer The string or function to replace. This is the same as the 2nd argument of `String.prototype.replace`.
+ * @returns {string} The replaced string.
+ */
+ [Symbol.replace](str, replacer) {
+ return typeof replacer === "function"
+ ? replaceF(this, String(str), replacer)
+ : replaceS(this, String(str), String(replacer))
+ }
+}
+
+const IMPORT_TYPE = /^(?:Import|Export(?:All|Default|Named))Declaration$/u;
+const has = Function.call.bind(Object.hasOwnProperty);
+
+const READ = Symbol("read");
+const CALL = Symbol("call");
+const CONSTRUCT = Symbol("construct");
+const ESM = Symbol("esm");
+
+const requireCall = { require: { [CALL]: true } };
+
+/**
+ * Check whether a given variable is modified or not.
+ * @param {Variable} variable The variable to check.
+ * @returns {boolean} `true` if the variable is modified.
+ */
+function isModifiedGlobal(variable) {
+ return (
+ variable == null ||
+ variable.defs.length !== 0 ||
+ variable.references.some((r) => r.isWrite())
+ )
+}
+
+/**
+ * Check if the value of a given node is passed through to the parent syntax as-is.
+ * For example, `a` and `b` in (`a || b` and `c ? a : b`) are passed through.
+ * @param {Node} node A node to check.
+ * @returns {boolean} `true` if the node is passed through.
+ */
+function isPassThrough(node) {
+ const parent = node.parent;
+
+ switch (parent && parent.type) {
+ case "ConditionalExpression":
+ return parent.consequent === node || parent.alternate === node
+ case "LogicalExpression":
+ return true
+ case "SequenceExpression":
+ return parent.expressions[parent.expressions.length - 1] === node
+ case "ChainExpression":
+ return true
+
+ default:
+ return false
+ }
+}
+
+/**
+ * The reference tracker.
+ */
+class ReferenceTracker {
+ /**
+ * Initialize this tracker.
+ * @param {Scope} globalScope The global scope.
+ * @param {object} [options] The options.
+ * @param {"legacy"|"strict"} [options.mode="strict"] The mode to determine the ImportDeclaration's behavior for CJS modules.
+ * @param {string[]} [options.globalObjectNames=["global","globalThis","self","window"]] The variable names for Global Object.
+ */
+ constructor(
+ globalScope,
+ {
+ mode = "strict",
+ globalObjectNames = ["global", "globalThis", "self", "window"],
+ } = {},
+ ) {
+ this.variableStack = [];
+ this.globalScope = globalScope;
+ this.mode = mode;
+ this.globalObjectNames = globalObjectNames.slice(0);
+ }
+
+ /**
+ * Iterate the references of global variables.
+ * @param {object} traceMap The trace map.
+ * @returns {IterableIterator<{node:Node,path:string[],type:symbol,info:any}>} The iterator to iterate references.
+ */
+ *iterateGlobalReferences(traceMap) {
+ for (const key of Object.keys(traceMap)) {
+ const nextTraceMap = traceMap[key];
+ const path = [key];
+ const variable = this.globalScope.set.get(key);
+
+ if (isModifiedGlobal(variable)) {
+ continue
+ }
+
+ yield* this._iterateVariableReferences(
+ variable,
+ path,
+ nextTraceMap,
+ true,
+ );
+ }
+
+ for (const key of this.globalObjectNames) {
+ const path = [];
+ const variable = this.globalScope.set.get(key);
+
+ if (isModifiedGlobal(variable)) {
+ continue
+ }
+
+ yield* this._iterateVariableReferences(
+ variable,
+ path,
+ traceMap,
+ false,
+ );
+ }
+ }
+
+ /**
+ * Iterate the references of CommonJS modules.
+ * @param {object} traceMap The trace map.
+ * @returns {IterableIterator<{node:Node,path:string[],type:symbol,info:any}>} The iterator to iterate references.
+ */
+ *iterateCjsReferences(traceMap) {
+ for (const { node } of this.iterateGlobalReferences(requireCall)) {
+ const key = getStringIfConstant(node.arguments[0]);
+ if (key == null || !has(traceMap, key)) {
+ continue
+ }
+
+ const nextTraceMap = traceMap[key];
+ const path = [key];
+
+ if (nextTraceMap[READ]) {
+ yield {
+ node,
+ path,
+ type: READ,
+ info: nextTraceMap[READ],
+ };
+ }
+ yield* this._iteratePropertyReferences(node, path, nextTraceMap);
+ }
+ }
+
+ /**
+ * Iterate the references of ES modules.
+ * @param {object} traceMap The trace map.
+ * @returns {IterableIterator<{node:Node,path:string[],type:symbol,info:any}>} The iterator to iterate references.
+ */
+ *iterateEsmReferences(traceMap) {
+ const programNode = this.globalScope.block;
+
+ for (const node of programNode.body) {
+ if (!IMPORT_TYPE.test(node.type) || node.source == null) {
+ continue
+ }
+ const moduleId = node.source.value;
+
+ if (!has(traceMap, moduleId)) {
+ continue
+ }
+ const nextTraceMap = traceMap[moduleId];
+ const path = [moduleId];
+
+ if (nextTraceMap[READ]) {
+ yield { node, path, type: READ, info: nextTraceMap[READ] };
+ }
+
+ if (node.type === "ExportAllDeclaration") {
+ for (const key of Object.keys(nextTraceMap)) {
+ const exportTraceMap = nextTraceMap[key];
+ if (exportTraceMap[READ]) {
+ yield {
+ node,
+ path: path.concat(key),
+ type: READ,
+ info: exportTraceMap[READ],
+ };
+ }
+ }
+ } else {
+ for (const specifier of node.specifiers) {
+ const esm = has(nextTraceMap, ESM);
+ const it = this._iterateImportReferences(
+ specifier,
+ path,
+ esm
+ ? nextTraceMap
+ : this.mode === "legacy"
+ ? { default: nextTraceMap, ...nextTraceMap }
+ : { default: nextTraceMap },
+ );
+
+ if (esm) {
+ yield* it;
+ } else {
+ for (const report of it) {
+ report.path = report.path.filter(exceptDefault);
+ if (
+ report.path.length >= 2 ||
+ report.type !== READ
+ ) {
+ yield report;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * Iterate the references for a given variable.
+ * @param {Variable} variable The variable to iterate that references.
+ * @param {string[]} path The current path.
+ * @param {object} traceMap The trace map.
+ * @param {boolean} shouldReport = The flag to report those references.
+ * @returns {IterableIterator<{node:Node,path:string[],type:symbol,info:any}>} The iterator to iterate references.
+ */
+ *_iterateVariableReferences(variable, path, traceMap, shouldReport) {
+ if (this.variableStack.includes(variable)) {
+ return
+ }
+ this.variableStack.push(variable);
+ try {
+ for (const reference of variable.references) {
+ if (!reference.isRead()) {
+ continue
+ }
+ const node = reference.identifier;
+
+ if (shouldReport && traceMap[READ]) {
+ yield { node, path, type: READ, info: traceMap[READ] };
+ }
+ yield* this._iteratePropertyReferences(node, path, traceMap);
+ }
+ } finally {
+ this.variableStack.pop();
+ }
+ }
+
+ /**
+ * Iterate the references for a given AST node.
+ * @param rootNode The AST node to iterate references.
+ * @param {string[]} path The current path.
+ * @param {object} traceMap The trace map.
+ * @returns {IterableIterator<{node:Node,path:string[],type:symbol,info:any}>} The iterator to iterate references.
+ */
+ //eslint-disable-next-line complexity
+ *_iteratePropertyReferences(rootNode, path, traceMap) {
+ let node = rootNode;
+ while (isPassThrough(node)) {
+ node = node.parent;
+ }
+
+ const parent = node.parent;
+ if (parent.type === "MemberExpression") {
+ if (parent.object === node) {
+ const key = getPropertyName(parent);
+ if (key == null || !has(traceMap, key)) {
+ return
+ }
+
+ path = path.concat(key); //eslint-disable-line no-param-reassign
+ const nextTraceMap = traceMap[key];
+ if (nextTraceMap[READ]) {
+ yield {
+ node: parent,
+ path,
+ type: READ,
+ info: nextTraceMap[READ],
+ };
+ }
+ yield* this._iteratePropertyReferences(
+ parent,
+ path,
+ nextTraceMap,
+ );
+ }
+ return
+ }
+ if (parent.type === "CallExpression") {
+ if (parent.callee === node && traceMap[CALL]) {
+ yield { node: parent, path, type: CALL, info: traceMap[CALL] };
+ }
+ return
+ }
+ if (parent.type === "NewExpression") {
+ if (parent.callee === node && traceMap[CONSTRUCT]) {
+ yield {
+ node: parent,
+ path,
+ type: CONSTRUCT,
+ info: traceMap[CONSTRUCT],
+ };
+ }
+ return
+ }
+ if (parent.type === "AssignmentExpression") {
+ if (parent.right === node) {
+ yield* this._iterateLhsReferences(parent.left, path, traceMap);
+ yield* this._iteratePropertyReferences(parent, path, traceMap);
+ }
+ return
+ }
+ if (parent.type === "AssignmentPattern") {
+ if (parent.right === node) {
+ yield* this._iterateLhsReferences(parent.left, path, traceMap);
+ }
+ return
+ }
+ if (parent.type === "VariableDeclarator") {
+ if (parent.init === node) {
+ yield* this._iterateLhsReferences(parent.id, path, traceMap);
+ }
+ }
+ }
+
+ /**
+ * Iterate the references for a given Pattern node.
+ * @param {Node} patternNode The Pattern node to iterate references.
+ * @param {string[]} path The current path.
+ * @param {object} traceMap The trace map.
+ * @returns {IterableIterator<{node:Node,path:string[],type:symbol,info:any}>} The iterator to iterate references.
+ */
+ *_iterateLhsReferences(patternNode, path, traceMap) {
+ if (patternNode.type === "Identifier") {
+ const variable = findVariable(this.globalScope, patternNode);
+ if (variable != null) {
+ yield* this._iterateVariableReferences(
+ variable,
+ path,
+ traceMap,
+ false,
+ );
+ }
+ return
+ }
+ if (patternNode.type === "ObjectPattern") {
+ for (const property of patternNode.properties) {
+ const key = getPropertyName(property);
+
+ if (key == null || !has(traceMap, key)) {
+ continue
+ }
+
+ const nextPath = path.concat(key);
+ const nextTraceMap = traceMap[key];
+ if (nextTraceMap[READ]) {
+ yield {
+ node: property,
+ path: nextPath,
+ type: READ,
+ info: nextTraceMap[READ],
+ };
+ }
+ yield* this._iterateLhsReferences(
+ property.value,
+ nextPath,
+ nextTraceMap,
+ );
+ }
+ return
+ }
+ if (patternNode.type === "AssignmentPattern") {
+ yield* this._iterateLhsReferences(patternNode.left, path, traceMap);
+ }
+ }
+
+ /**
+ * Iterate the references for a given ModuleSpecifier node.
+ * @param {Node} specifierNode The ModuleSpecifier node to iterate references.
+ * @param {string[]} path The current path.
+ * @param {object} traceMap The trace map.
+ * @returns {IterableIterator<{node:Node,path:string[],type:symbol,info:any}>} The iterator to iterate references.
+ */
+ *_iterateImportReferences(specifierNode, path, traceMap) {
+ const type = specifierNode.type;
+
+ if (type === "ImportSpecifier" || type === "ImportDefaultSpecifier") {
+ const key =
+ type === "ImportDefaultSpecifier"
+ ? "default"
+ : specifierNode.imported.name;
+ if (!has(traceMap, key)) {
+ return
+ }
+
+ path = path.concat(key); //eslint-disable-line no-param-reassign
+ const nextTraceMap = traceMap[key];
+ if (nextTraceMap[READ]) {
+ yield {
+ node: specifierNode,
+ path,
+ type: READ,
+ info: nextTraceMap[READ],
+ };
+ }
+ yield* this._iterateVariableReferences(
+ findVariable(this.globalScope, specifierNode.local),
+ path,
+ nextTraceMap,
+ false,
+ );
+
+ return
+ }
+
+ if (type === "ImportNamespaceSpecifier") {
+ yield* this._iterateVariableReferences(
+ findVariable(this.globalScope, specifierNode.local),
+ path,
+ traceMap,
+ false,
+ );
+ return
+ }
+
+ if (type === "ExportSpecifier") {
+ const key = specifierNode.local.name;
+ if (!has(traceMap, key)) {
+ return
+ }
+
+ path = path.concat(key); //eslint-disable-line no-param-reassign
+ const nextTraceMap = traceMap[key];
+ if (nextTraceMap[READ]) {
+ yield {
+ node: specifierNode,
+ path,
+ type: READ,
+ info: nextTraceMap[READ],
+ };
+ }
+ }
+ }
+}
+
+ReferenceTracker.READ = READ;
+ReferenceTracker.CALL = CALL;
+ReferenceTracker.CONSTRUCT = CONSTRUCT;
+ReferenceTracker.ESM = ESM;
+
+/**
+ * This is a predicate function for Array#filter.
+ * @param {string} name A name part.
+ * @param {number} index The index of the name.
+ * @returns {boolean} `false` if it's default.
+ */
+function exceptDefault(name, index) {
+ return !(index === 1 && name === "default")
+}
+
+var index = {
+ CALL,
+ CONSTRUCT,
+ ESM,
+ findVariable,
+ getFunctionHeadLocation,
+ getFunctionNameWithKind,
+ getInnermostScope,
+ getPropertyName,
+ getStaticValue,
+ getStringIfConstant,
+ hasSideEffect,
+ isArrowToken,
+ isClosingBraceToken,
+ isClosingBracketToken,
+ isClosingParenToken,
+ isColonToken,
+ isCommaToken,
+ isCommentToken,
+ isNotArrowToken,
+ isNotClosingBraceToken,
+ isNotClosingBracketToken,
+ isNotClosingParenToken,
+ isNotColonToken,
+ isNotCommaToken,
+ isNotCommentToken,
+ isNotOpeningBraceToken,
+ isNotOpeningBracketToken,
+ isNotOpeningParenToken,
+ isNotSemicolonToken,
+ isOpeningBraceToken,
+ isOpeningBracketToken,
+ isOpeningParenToken,
+ isParenthesized,
+ isSemicolonToken,
+ PatternMatcher,
+ READ,
+ ReferenceTracker,
+};
+
+exports.CALL = CALL;
+exports.CONSTRUCT = CONSTRUCT;
+exports.ESM = ESM;
+exports.PatternMatcher = PatternMatcher;
+exports.READ = READ;
+exports.ReferenceTracker = ReferenceTracker;
+exports["default"] = index;
+exports.findVariable = findVariable;
+exports.getFunctionHeadLocation = getFunctionHeadLocation;
+exports.getFunctionNameWithKind = getFunctionNameWithKind;
+exports.getInnermostScope = getInnermostScope;
+exports.getPropertyName = getPropertyName;
+exports.getStaticValue = getStaticValue;
+exports.getStringIfConstant = getStringIfConstant;
+exports.hasSideEffect = hasSideEffect;
+exports.isArrowToken = isArrowToken;
+exports.isClosingBraceToken = isClosingBraceToken;
+exports.isClosingBracketToken = isClosingBracketToken;
+exports.isClosingParenToken = isClosingParenToken;
+exports.isColonToken = isColonToken;
+exports.isCommaToken = isCommaToken;
+exports.isCommentToken = isCommentToken;
+exports.isNotArrowToken = isNotArrowToken;
+exports.isNotClosingBraceToken = isNotClosingBraceToken;
+exports.isNotClosingBracketToken = isNotClosingBracketToken;
+exports.isNotClosingParenToken = isNotClosingParenToken;
+exports.isNotColonToken = isNotColonToken;
+exports.isNotCommaToken = isNotCommaToken;
+exports.isNotCommentToken = isNotCommentToken;
+exports.isNotOpeningBraceToken = isNotOpeningBraceToken;
+exports.isNotOpeningBracketToken = isNotOpeningBracketToken;
+exports.isNotOpeningParenToken = isNotOpeningParenToken;
+exports.isNotSemicolonToken = isNotSemicolonToken;
+exports.isOpeningBraceToken = isOpeningBraceToken;
+exports.isOpeningBracketToken = isOpeningBracketToken;
+exports.isOpeningParenToken = isOpeningParenToken;
+exports.isParenthesized = isParenthesized;
+exports.isSemicolonToken = isSemicolonToken;
+//# sourceMappingURL=index.js.map
diff --git a/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint-community/eslint-utils/index.js.map b/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint-community/eslint-utils/index.js.map
new file mode 100644
index 0000000..bcadeff
--- /dev/null
+++ b/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint-community/eslint-utils/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sources":["src/get-innermost-scope.mjs","src/find-variable.mjs","src/token-predicate.mjs","src/get-function-head-location.mjs","src/get-static-value.mjs","src/get-string-if-constant.mjs","src/get-property-name.mjs","src/get-function-name-with-kind.mjs","src/has-side-effect.mjs","src/is-parenthesized.mjs","src/pattern-matcher.mjs","src/reference-tracker.mjs","src/index.mjs"],"sourcesContent":["/**\n * Get the innermost scope which contains a given location.\n * @param {Scope} initialScope The initial scope to search.\n * @param {Node} node The location to search.\n * @returns {Scope} The innermost scope.\n */\nexport function getInnermostScope(initialScope, node) {\n const location = node.range[0]\n\n let scope = initialScope\n let found = false\n do {\n found = false\n for (const childScope of scope.childScopes) {\n const range = childScope.block.range\n\n if (range[0] <= location && location < range[1]) {\n scope = childScope\n found = true\n break\n }\n }\n } while (found)\n\n return scope\n}\n","import { getInnermostScope } from \"./get-innermost-scope.mjs\"\n\n/**\n * Find the variable of a given name.\n * @param {Scope} initialScope The scope to start finding.\n * @param {string|Node} nameOrNode The variable name to find. If this is a Node object then it should be an Identifier node.\n * @returns {Variable|null} The found variable or null.\n */\nexport function findVariable(initialScope, nameOrNode) {\n let name = \"\"\n let scope = initialScope\n\n if (typeof nameOrNode === \"string\") {\n name = nameOrNode\n } else {\n name = nameOrNode.name\n scope = getInnermostScope(scope, nameOrNode)\n }\n\n while (scope != null) {\n const variable = scope.set.get(name)\n if (variable != null) {\n return variable\n }\n scope = scope.upper\n }\n\n return null\n}\n","/**\n * Negate the result of `this` calling.\n * @param {Token} token The token to check.\n * @returns {boolean} `true` if the result of `this(token)` is `false`.\n */\nfunction negate0(token) {\n return !this(token) //eslint-disable-line no-invalid-this\n}\n\n/**\n * Creates the negate function of the given function.\n * @param {function(Token):boolean} f - The function to negate.\n * @returns {function(Token):boolean} Negated function.\n */\nfunction negate(f) {\n return negate0.bind(f)\n}\n\n/**\n * Checks if the given token is a PunctuatorToken with the given value\n * @param {Token} token - The token to check.\n * @param {string} value - The value to check.\n * @returns {boolean} `true` if the token is a PunctuatorToken with the given value.\n */\nfunction isPunctuatorTokenWithValue(token, value) {\n return token.type === \"Punctuator\" && token.value === value\n}\n\n/**\n * Checks if the given token is an arrow token or not.\n * @param {Token} token - The token to check.\n * @returns {boolean} `true` if the token is an arrow token.\n */\nexport function isArrowToken(token) {\n return isPunctuatorTokenWithValue(token, \"=>\")\n}\n\n/**\n * Checks if the given token is a comma token or not.\n * @param {Token} token - The token to check.\n * @returns {boolean} `true` if the token is a comma token.\n */\nexport function isCommaToken(token) {\n return isPunctuatorTokenWithValue(token, \",\")\n}\n\n/**\n * Checks if the given token is a semicolon token or not.\n * @param {Token} token - The token to check.\n * @returns {boolean} `true` if the token is a semicolon token.\n */\nexport function isSemicolonToken(token) {\n return isPunctuatorTokenWithValue(token, \";\")\n}\n\n/**\n * Checks if the given token is a colon token or not.\n * @param {Token} token - The token to check.\n * @returns {boolean} `true` if the token is a colon token.\n */\nexport function isColonToken(token) {\n return isPunctuatorTokenWithValue(token, \":\")\n}\n\n/**\n * Checks if the given token is an opening parenthesis token or not.\n * @param {Token} token - The token to check.\n * @returns {boolean} `true` if the token is an opening parenthesis token.\n */\nexport function isOpeningParenToken(token) {\n return isPunctuatorTokenWithValue(token, \"(\")\n}\n\n/**\n * Checks if the given token is a closing parenthesis token or not.\n * @param {Token} token - The token to check.\n * @returns {boolean} `true` if the token is a closing parenthesis token.\n */\nexport function isClosingParenToken(token) {\n return isPunctuatorTokenWithValue(token, \")\")\n}\n\n/**\n * Checks if the given token is an opening square bracket token or not.\n * @param {Token} token - The token to check.\n * @returns {boolean} `true` if the token is an opening square bracket token.\n */\nexport function isOpeningBracketToken(token) {\n return isPunctuatorTokenWithValue(token, \"[\")\n}\n\n/**\n * Checks if the given token is a closing square bracket token or not.\n * @param {Token} token - The token to check.\n * @returns {boolean} `true` if the token is a closing square bracket token.\n */\nexport function isClosingBracketToken(token) {\n return isPunctuatorTokenWithValue(token, \"]\")\n}\n\n/**\n * Checks if the given token is an opening brace token or not.\n * @param {Token} token - The token to check.\n * @returns {boolean} `true` if the token is an opening brace token.\n */\nexport function isOpeningBraceToken(token) {\n return isPunctuatorTokenWithValue(token, \"{\")\n}\n\n/**\n * Checks if the given token is a closing brace token or not.\n * @param {Token} token - The token to check.\n * @returns {boolean} `true` if the token is a closing brace token.\n */\nexport function isClosingBraceToken(token) {\n return isPunctuatorTokenWithValue(token, \"}\")\n}\n\n/**\n * Checks if the given token is a comment token or not.\n * @param {Token} token - The token to check.\n * @returns {boolean} `true` if the token is a comment token.\n */\nexport function isCommentToken(token) {\n return [\"Block\", \"Line\", \"Shebang\"].includes(token.type)\n}\n\nexport const isNotArrowToken = negate(isArrowToken)\nexport const isNotCommaToken = negate(isCommaToken)\nexport const isNotSemicolonToken = negate(isSemicolonToken)\nexport const isNotColonToken = negate(isColonToken)\nexport const isNotOpeningParenToken = negate(isOpeningParenToken)\nexport const isNotClosingParenToken = negate(isClosingParenToken)\nexport const isNotOpeningBracketToken = negate(isOpeningBracketToken)\nexport const isNotClosingBracketToken = negate(isClosingBracketToken)\nexport const isNotOpeningBraceToken = negate(isOpeningBraceToken)\nexport const isNotClosingBraceToken = negate(isClosingBraceToken)\nexport const isNotCommentToken = negate(isCommentToken)\n","import { isArrowToken, isOpeningParenToken } from \"./token-predicate.mjs\"\n\n/**\n * Get the `(` token of the given function node.\n * @param {Node} node - The function node to get.\n * @param {SourceCode} sourceCode - The source code object to get tokens.\n * @returns {Token} `(` token.\n */\nfunction getOpeningParenOfParams(node, sourceCode) {\n return node.id\n ? sourceCode.getTokenAfter(node.id, isOpeningParenToken)\n : sourceCode.getFirstToken(node, isOpeningParenToken)\n}\n\n/**\n * Get the location of the given function node for reporting.\n * @param {Node} node - The function node to get.\n * @param {SourceCode} sourceCode - The source code object to get tokens.\n * @returns {string} The location of the function node for reporting.\n */\nexport function getFunctionHeadLocation(node, sourceCode) {\n const parent = node.parent\n let start = null\n let end = null\n\n if (node.type === \"ArrowFunctionExpression\") {\n const arrowToken = sourceCode.getTokenBefore(node.body, isArrowToken)\n\n start = arrowToken.loc.start\n end = arrowToken.loc.end\n } else if (\n parent.type === \"Property\" ||\n parent.type === \"MethodDefinition\" ||\n parent.type === \"PropertyDefinition\"\n ) {\n start = parent.loc.start\n end = getOpeningParenOfParams(node, sourceCode).loc.start\n } else {\n start = node.loc.start\n end = getOpeningParenOfParams(node, sourceCode).loc.start\n }\n\n return {\n start: { ...start },\n end: { ...end },\n }\n}\n","/* globals globalThis, global, self, window */\n\nimport { findVariable } from \"./find-variable.mjs\"\n\nconst globalObject =\n typeof globalThis !== \"undefined\"\n ? globalThis\n : typeof self !== \"undefined\"\n ? self\n : typeof window !== \"undefined\"\n ? window\n : typeof global !== \"undefined\"\n ? global\n : {}\n\nconst builtinNames = Object.freeze(\n new Set([\n \"Array\",\n \"ArrayBuffer\",\n \"BigInt\",\n \"BigInt64Array\",\n \"BigUint64Array\",\n \"Boolean\",\n \"DataView\",\n \"Date\",\n \"decodeURI\",\n \"decodeURIComponent\",\n \"encodeURI\",\n \"encodeURIComponent\",\n \"escape\",\n \"Float32Array\",\n \"Float64Array\",\n \"Function\",\n \"Infinity\",\n \"Int16Array\",\n \"Int32Array\",\n \"Int8Array\",\n \"isFinite\",\n \"isNaN\",\n \"isPrototypeOf\",\n \"JSON\",\n \"Map\",\n \"Math\",\n \"NaN\",\n \"Number\",\n \"Object\",\n \"parseFloat\",\n \"parseInt\",\n \"Promise\",\n \"Proxy\",\n \"Reflect\",\n \"RegExp\",\n \"Set\",\n \"String\",\n \"Symbol\",\n \"Uint16Array\",\n \"Uint32Array\",\n \"Uint8Array\",\n \"Uint8ClampedArray\",\n \"undefined\",\n \"unescape\",\n \"WeakMap\",\n \"WeakSet\",\n ]),\n)\nconst callAllowed = new Set(\n [\n Array.isArray,\n Array.of,\n Array.prototype.at,\n Array.prototype.concat,\n Array.prototype.entries,\n Array.prototype.every,\n Array.prototype.filter,\n Array.prototype.find,\n Array.prototype.findIndex,\n Array.prototype.flat,\n Array.prototype.includes,\n Array.prototype.indexOf,\n Array.prototype.join,\n Array.prototype.keys,\n Array.prototype.lastIndexOf,\n Array.prototype.slice,\n Array.prototype.some,\n Array.prototype.toString,\n Array.prototype.values,\n typeof BigInt === \"function\" ? BigInt : undefined,\n Boolean,\n Date,\n Date.parse,\n decodeURI,\n decodeURIComponent,\n encodeURI,\n encodeURIComponent,\n escape,\n isFinite,\n isNaN,\n isPrototypeOf,\n Map,\n Map.prototype.entries,\n Map.prototype.get,\n Map.prototype.has,\n Map.prototype.keys,\n Map.prototype.values,\n ...Object.getOwnPropertyNames(Math)\n .filter((k) => k !== \"random\")\n .map((k) => Math[k])\n .filter((f) => typeof f === \"function\"),\n Number,\n Number.isFinite,\n Number.isNaN,\n Number.parseFloat,\n Number.parseInt,\n Number.prototype.toExponential,\n Number.prototype.toFixed,\n Number.prototype.toPrecision,\n Number.prototype.toString,\n Object,\n Object.entries,\n Object.is,\n Object.isExtensible,\n Object.isFrozen,\n Object.isSealed,\n Object.keys,\n Object.values,\n parseFloat,\n parseInt,\n RegExp,\n Set,\n Set.prototype.entries,\n Set.prototype.has,\n Set.prototype.keys,\n Set.prototype.values,\n String,\n String.fromCharCode,\n String.fromCodePoint,\n String.raw,\n String.prototype.at,\n String.prototype.charAt,\n String.prototype.charCodeAt,\n String.prototype.codePointAt,\n String.prototype.concat,\n String.prototype.endsWith,\n String.prototype.includes,\n String.prototype.indexOf,\n String.prototype.lastIndexOf,\n String.prototype.normalize,\n String.prototype.padEnd,\n String.prototype.padStart,\n String.prototype.slice,\n String.prototype.startsWith,\n String.prototype.substr,\n String.prototype.substring,\n String.prototype.toLowerCase,\n String.prototype.toString,\n String.prototype.toUpperCase,\n String.prototype.trim,\n String.prototype.trimEnd,\n String.prototype.trimLeft,\n String.prototype.trimRight,\n String.prototype.trimStart,\n Symbol.for,\n Symbol.keyFor,\n unescape,\n ].filter((f) => typeof f === \"function\"),\n)\nconst callPassThrough = new Set([\n Object.freeze,\n Object.preventExtensions,\n Object.seal,\n])\n\n/** @type {ReadonlyArray]>} */\nconst getterAllowed = [\n [Map, new Set([\"size\"])],\n [\n RegExp,\n new Set([\n \"dotAll\",\n \"flags\",\n \"global\",\n \"hasIndices\",\n \"ignoreCase\",\n \"multiline\",\n \"source\",\n \"sticky\",\n \"unicode\",\n ]),\n ],\n [Set, new Set([\"size\"])],\n]\n\n/**\n * Get the property descriptor.\n * @param {object} object The object to get.\n * @param {string|number|symbol} name The property name to get.\n */\nfunction getPropertyDescriptor(object, name) {\n let x = object\n while ((typeof x === \"object\" || typeof x === \"function\") && x !== null) {\n const d = Object.getOwnPropertyDescriptor(x, name)\n if (d) {\n return d\n }\n x = Object.getPrototypeOf(x)\n }\n return null\n}\n\n/**\n * Check if a property is getter or not.\n * @param {object} object The object to check.\n * @param {string|number|symbol} name The property name to check.\n */\nfunction isGetter(object, name) {\n const d = getPropertyDescriptor(object, name)\n return d != null && d.get != null\n}\n\n/**\n * Get the element values of a given node list.\n * @param {Node[]} nodeList The node list to get values.\n * @param {Scope|undefined} initialScope The initial scope to find variables.\n * @returns {any[]|null} The value list if all nodes are constant. Otherwise, null.\n */\nfunction getElementValues(nodeList, initialScope) {\n const valueList = []\n\n for (let i = 0; i < nodeList.length; ++i) {\n const elementNode = nodeList[i]\n\n if (elementNode == null) {\n valueList.length = i + 1\n } else if (elementNode.type === \"SpreadElement\") {\n const argument = getStaticValueR(elementNode.argument, initialScope)\n if (argument == null) {\n return null\n }\n valueList.push(...argument.value)\n } else {\n const element = getStaticValueR(elementNode, initialScope)\n if (element == null) {\n return null\n }\n valueList.push(element.value)\n }\n }\n\n return valueList\n}\n\n/**\n * Returns whether the given variable is never written to after initialization.\n * @param {import(\"eslint\").Scope.Variable} variable\n * @returns {boolean}\n */\nfunction isEffectivelyConst(variable) {\n const refs = variable.references\n\n const inits = refs.filter((r) => r.init).length\n const reads = refs.filter((r) => r.isReadOnly()).length\n if (inits === 1 && reads + inits === refs.length) {\n // there is only one init and all other references only read\n return true\n }\n return false\n}\n\nconst operations = Object.freeze({\n ArrayExpression(node, initialScope) {\n const elements = getElementValues(node.elements, initialScope)\n return elements != null ? { value: elements } : null\n },\n\n AssignmentExpression(node, initialScope) {\n if (node.operator === \"=\") {\n return getStaticValueR(node.right, initialScope)\n }\n return null\n },\n\n //eslint-disable-next-line complexity\n BinaryExpression(node, initialScope) {\n if (node.operator === \"in\" || node.operator === \"instanceof\") {\n // Not supported.\n return null\n }\n\n const left = getStaticValueR(node.left, initialScope)\n const right = getStaticValueR(node.right, initialScope)\n if (left != null && right != null) {\n switch (node.operator) {\n case \"==\":\n return { value: left.value == right.value } //eslint-disable-line eqeqeq\n case \"!=\":\n return { value: left.value != right.value } //eslint-disable-line eqeqeq\n case \"===\":\n return { value: left.value === right.value }\n case \"!==\":\n return { value: left.value !== right.value }\n case \"<\":\n return { value: left.value < right.value }\n case \"<=\":\n return { value: left.value <= right.value }\n case \">\":\n return { value: left.value > right.value }\n case \">=\":\n return { value: left.value >= right.value }\n case \"<<\":\n return { value: left.value << right.value }\n case \">>\":\n return { value: left.value >> right.value }\n case \">>>\":\n return { value: left.value >>> right.value }\n case \"+\":\n return { value: left.value + right.value }\n case \"-\":\n return { value: left.value - right.value }\n case \"*\":\n return { value: left.value * right.value }\n case \"/\":\n return { value: left.value / right.value }\n case \"%\":\n return { value: left.value % right.value }\n case \"**\":\n return { value: left.value ** right.value }\n case \"|\":\n return { value: left.value | right.value }\n case \"^\":\n return { value: left.value ^ right.value }\n case \"&\":\n return { value: left.value & right.value }\n\n // no default\n }\n }\n\n return null\n },\n\n CallExpression(node, initialScope) {\n const calleeNode = node.callee\n const args = getElementValues(node.arguments, initialScope)\n\n if (args != null) {\n if (calleeNode.type === \"MemberExpression\") {\n if (calleeNode.property.type === \"PrivateIdentifier\") {\n return null\n }\n const object = getStaticValueR(calleeNode.object, initialScope)\n if (object != null) {\n if (\n object.value == null &&\n (object.optional || node.optional)\n ) {\n return { value: undefined, optional: true }\n }\n const property = getStaticPropertyNameValue(\n calleeNode,\n initialScope,\n )\n\n if (property != null) {\n const receiver = object.value\n const methodName = property.value\n if (callAllowed.has(receiver[methodName])) {\n return { value: receiver[methodName](...args) }\n }\n if (callPassThrough.has(receiver[methodName])) {\n return { value: args[0] }\n }\n }\n }\n } else {\n const callee = getStaticValueR(calleeNode, initialScope)\n if (callee != null) {\n if (callee.value == null && node.optional) {\n return { value: undefined, optional: true }\n }\n const func = callee.value\n if (callAllowed.has(func)) {\n return { value: func(...args) }\n }\n if (callPassThrough.has(func)) {\n return { value: args[0] }\n }\n }\n }\n }\n\n return null\n },\n\n ConditionalExpression(node, initialScope) {\n const test = getStaticValueR(node.test, initialScope)\n if (test != null) {\n return test.value\n ? getStaticValueR(node.consequent, initialScope)\n : getStaticValueR(node.alternate, initialScope)\n }\n return null\n },\n\n ExpressionStatement(node, initialScope) {\n return getStaticValueR(node.expression, initialScope)\n },\n\n Identifier(node, initialScope) {\n if (initialScope != null) {\n const variable = findVariable(initialScope, node)\n\n // Built-in globals.\n if (\n variable != null &&\n variable.defs.length === 0 &&\n builtinNames.has(variable.name) &&\n variable.name in globalObject\n ) {\n return { value: globalObject[variable.name] }\n }\n\n // Constants.\n if (variable != null && variable.defs.length === 1) {\n const def = variable.defs[0]\n if (\n def.parent &&\n def.type === \"Variable\" &&\n (def.parent.kind === \"const\" ||\n isEffectivelyConst(variable)) &&\n // TODO(mysticatea): don't support destructuring here.\n def.node.id.type === \"Identifier\"\n ) {\n return getStaticValueR(def.node.init, initialScope)\n }\n }\n }\n return null\n },\n\n Literal(node) {\n //istanbul ignore if : this is implementation-specific behavior.\n if ((node.regex != null || node.bigint != null) && node.value == null) {\n // It was a RegExp/BigInt literal, but Node.js didn't support it.\n return null\n }\n return { value: node.value }\n },\n\n LogicalExpression(node, initialScope) {\n const left = getStaticValueR(node.left, initialScope)\n if (left != null) {\n if (\n (node.operator === \"||\" && Boolean(left.value) === true) ||\n (node.operator === \"&&\" && Boolean(left.value) === false) ||\n (node.operator === \"??\" && left.value != null)\n ) {\n return left\n }\n\n const right = getStaticValueR(node.right, initialScope)\n if (right != null) {\n return right\n }\n }\n\n return null\n },\n\n MemberExpression(node, initialScope) {\n if (node.property.type === \"PrivateIdentifier\") {\n return null\n }\n const object = getStaticValueR(node.object, initialScope)\n if (object != null) {\n if (object.value == null && (object.optional || node.optional)) {\n return { value: undefined, optional: true }\n }\n const property = getStaticPropertyNameValue(node, initialScope)\n\n if (property != null) {\n if (!isGetter(object.value, property.value)) {\n return { value: object.value[property.value] }\n }\n\n for (const [classFn, allowed] of getterAllowed) {\n if (\n object.value instanceof classFn &&\n allowed.has(property.value)\n ) {\n return { value: object.value[property.value] }\n }\n }\n }\n }\n return null\n },\n\n ChainExpression(node, initialScope) {\n const expression = getStaticValueR(node.expression, initialScope)\n if (expression != null) {\n return { value: expression.value }\n }\n return null\n },\n\n NewExpression(node, initialScope) {\n const callee = getStaticValueR(node.callee, initialScope)\n const args = getElementValues(node.arguments, initialScope)\n\n if (callee != null && args != null) {\n const Func = callee.value\n if (callAllowed.has(Func)) {\n return { value: new Func(...args) }\n }\n }\n\n return null\n },\n\n ObjectExpression(node, initialScope) {\n const object = {}\n\n for (const propertyNode of node.properties) {\n if (propertyNode.type === \"Property\") {\n if (propertyNode.kind !== \"init\") {\n return null\n }\n const key = getStaticPropertyNameValue(\n propertyNode,\n initialScope,\n )\n const value = getStaticValueR(propertyNode.value, initialScope)\n if (key == null || value == null) {\n return null\n }\n object[key.value] = value.value\n } else if (\n propertyNode.type === \"SpreadElement\" ||\n propertyNode.type === \"ExperimentalSpreadProperty\"\n ) {\n const argument = getStaticValueR(\n propertyNode.argument,\n initialScope,\n )\n if (argument == null) {\n return null\n }\n Object.assign(object, argument.value)\n } else {\n return null\n }\n }\n\n return { value: object }\n },\n\n SequenceExpression(node, initialScope) {\n const last = node.expressions[node.expressions.length - 1]\n return getStaticValueR(last, initialScope)\n },\n\n TaggedTemplateExpression(node, initialScope) {\n const tag = getStaticValueR(node.tag, initialScope)\n const expressions = getElementValues(\n node.quasi.expressions,\n initialScope,\n )\n\n if (tag != null && expressions != null) {\n const func = tag.value\n const strings = node.quasi.quasis.map((q) => q.value.cooked)\n strings.raw = node.quasi.quasis.map((q) => q.value.raw)\n\n if (func === String.raw) {\n return { value: func(strings, ...expressions) }\n }\n }\n\n return null\n },\n\n TemplateLiteral(node, initialScope) {\n const expressions = getElementValues(node.expressions, initialScope)\n if (expressions != null) {\n let value = node.quasis[0].value.cooked\n for (let i = 0; i < expressions.length; ++i) {\n value += expressions[i]\n value += node.quasis[i + 1].value.cooked\n }\n return { value }\n }\n return null\n },\n\n UnaryExpression(node, initialScope) {\n if (node.operator === \"delete\") {\n // Not supported.\n return null\n }\n if (node.operator === \"void\") {\n return { value: undefined }\n }\n\n const arg = getStaticValueR(node.argument, initialScope)\n if (arg != null) {\n switch (node.operator) {\n case \"-\":\n return { value: -arg.value }\n case \"+\":\n return { value: +arg.value } //eslint-disable-line no-implicit-coercion\n case \"!\":\n return { value: !arg.value }\n case \"~\":\n return { value: ~arg.value }\n case \"typeof\":\n return { value: typeof arg.value }\n\n // no default\n }\n }\n\n return null\n },\n})\n\n/**\n * Get the value of a given node if it's a static value.\n * @param {Node} node The node to get.\n * @param {Scope|undefined} initialScope The scope to start finding variable.\n * @returns {{value:any}|{value:undefined,optional?:true}|null} The static value of the node, or `null`.\n */\nfunction getStaticValueR(node, initialScope) {\n if (node != null && Object.hasOwnProperty.call(operations, node.type)) {\n return operations[node.type](node, initialScope)\n }\n return null\n}\n\n/**\n * Get the static value of property name from a MemberExpression node or a Property node.\n * @param {Node} node The node to get.\n * @param {Scope} [initialScope] The scope to start finding variable. Optional. If the node is a computed property node and this scope was given, this checks the computed property name by the `getStringIfConstant` function with the scope, and returns the value of it.\n * @returns {{value:any}|{value:undefined,optional?:true}|null} The static value of the property name of the node, or `null`.\n */\nfunction getStaticPropertyNameValue(node, initialScope) {\n const nameNode = node.type === \"Property\" ? node.key : node.property\n\n if (node.computed) {\n return getStaticValueR(nameNode, initialScope)\n }\n\n if (nameNode.type === \"Identifier\") {\n return { value: nameNode.name }\n }\n\n if (nameNode.type === \"Literal\") {\n if (nameNode.bigint) {\n return { value: nameNode.bigint }\n }\n return { value: String(nameNode.value) }\n }\n\n return null\n}\n\n/**\n * Get the value of a given node if it's a static value.\n * @param {Node} node The node to get.\n * @param {Scope} [initialScope] The scope to start finding variable. Optional. If this scope was given, this tries to resolve identifier references which are in the given node as much as possible.\n * @returns {{value:any}|{value:undefined,optional?:true}|null} The static value of the node, or `null`.\n */\nexport function getStaticValue(node, initialScope = null) {\n try {\n return getStaticValueR(node, initialScope)\n } catch (_error) {\n return null\n }\n}\n","import { getStaticValue } from \"./get-static-value.mjs\"\n\n/**\n * Get the value of a given node if it's a literal or a template literal.\n * @param {Node} node The node to get.\n * @param {Scope} [initialScope] The scope to start finding variable. Optional. If the node is an Identifier node and this scope was given, this checks the variable of the identifier, and returns the value of it if the variable is a constant.\n * @returns {string|null} The value of the node, or `null`.\n */\nexport function getStringIfConstant(node, initialScope = null) {\n // Handle the literals that the platform doesn't support natively.\n if (node && node.type === \"Literal\" && node.value === null) {\n if (node.regex) {\n return `/${node.regex.pattern}/${node.regex.flags}`\n }\n if (node.bigint) {\n return node.bigint\n }\n }\n\n const evaluated = getStaticValue(node, initialScope)\n return evaluated && String(evaluated.value)\n}\n","import { getStringIfConstant } from \"./get-string-if-constant.mjs\"\n\n/**\n * Get the property name from a MemberExpression node or a Property node.\n * @param {Node} node The node to get.\n * @param {Scope} [initialScope] The scope to start finding variable. Optional. If the node is a computed property node and this scope was given, this checks the computed property name by the `getStringIfConstant` function with the scope, and returns the value of it.\n * @returns {string|null} The property name of the node.\n */\nexport function getPropertyName(node, initialScope) {\n switch (node.type) {\n case \"MemberExpression\":\n if (node.computed) {\n return getStringIfConstant(node.property, initialScope)\n }\n if (node.property.type === \"PrivateIdentifier\") {\n return null\n }\n return node.property.name\n\n case \"Property\":\n case \"MethodDefinition\":\n case \"PropertyDefinition\":\n if (node.computed) {\n return getStringIfConstant(node.key, initialScope)\n }\n if (node.key.type === \"Literal\") {\n return String(node.key.value)\n }\n if (node.key.type === \"PrivateIdentifier\") {\n return null\n }\n return node.key.name\n\n // no default\n }\n\n return null\n}\n","import { getPropertyName } from \"./get-property-name.mjs\"\n\n/**\n * Get the name and kind of the given function node.\n * @param {ASTNode} node - The function node to get.\n * @param {SourceCode} [sourceCode] The source code object to get the code of computed property keys.\n * @returns {string} The name and kind of the function node.\n */\n// eslint-disable-next-line complexity\nexport function getFunctionNameWithKind(node, sourceCode) {\n const parent = node.parent\n const tokens = []\n const isObjectMethod = parent.type === \"Property\" && parent.value === node\n const isClassMethod =\n parent.type === \"MethodDefinition\" && parent.value === node\n const isClassFieldMethod =\n parent.type === \"PropertyDefinition\" && parent.value === node\n\n // Modifiers.\n if (isClassMethod || isClassFieldMethod) {\n if (parent.static) {\n tokens.push(\"static\")\n }\n if (parent.key.type === \"PrivateIdentifier\") {\n tokens.push(\"private\")\n }\n }\n if (node.async) {\n tokens.push(\"async\")\n }\n if (node.generator) {\n tokens.push(\"generator\")\n }\n\n // Kinds.\n if (isObjectMethod || isClassMethod) {\n if (parent.kind === \"constructor\") {\n return \"constructor\"\n }\n if (parent.kind === \"get\") {\n tokens.push(\"getter\")\n } else if (parent.kind === \"set\") {\n tokens.push(\"setter\")\n } else {\n tokens.push(\"method\")\n }\n } else if (isClassFieldMethod) {\n tokens.push(\"method\")\n } else {\n if (node.type === \"ArrowFunctionExpression\") {\n tokens.push(\"arrow\")\n }\n tokens.push(\"function\")\n }\n\n // Names.\n if (isObjectMethod || isClassMethod || isClassFieldMethod) {\n if (parent.key.type === \"PrivateIdentifier\") {\n tokens.push(`#${parent.key.name}`)\n } else {\n const name = getPropertyName(parent)\n if (name) {\n tokens.push(`'${name}'`)\n } else if (sourceCode) {\n const keyText = sourceCode.getText(parent.key)\n if (!keyText.includes(\"\\n\")) {\n tokens.push(`[${keyText}]`)\n }\n }\n }\n } else if (node.id) {\n tokens.push(`'${node.id.name}'`)\n } else if (\n parent.type === \"VariableDeclarator\" &&\n parent.id &&\n parent.id.type === \"Identifier\"\n ) {\n tokens.push(`'${parent.id.name}'`)\n } else if (\n (parent.type === \"AssignmentExpression\" ||\n parent.type === \"AssignmentPattern\") &&\n parent.left &&\n parent.left.type === \"Identifier\"\n ) {\n tokens.push(`'${parent.left.name}'`)\n } else if (\n parent.type === \"ExportDefaultDeclaration\" &&\n parent.declaration === node\n ) {\n tokens.push(\"'default'\")\n }\n\n return tokens.join(\" \")\n}\n","import { getKeys, KEYS } from \"eslint-visitor-keys\"\n\nconst typeConversionBinaryOps = Object.freeze(\n new Set([\n \"==\",\n \"!=\",\n \"<\",\n \"<=\",\n \">\",\n \">=\",\n \"<<\",\n \">>\",\n \">>>\",\n \"+\",\n \"-\",\n \"*\",\n \"/\",\n \"%\",\n \"|\",\n \"^\",\n \"&\",\n \"in\",\n ]),\n)\nconst typeConversionUnaryOps = Object.freeze(new Set([\"-\", \"+\", \"!\", \"~\"]))\n\n/**\n * Check whether the given value is an ASTNode or not.\n * @param {any} x The value to check.\n * @returns {boolean} `true` if the value is an ASTNode.\n */\nfunction isNode(x) {\n return x !== null && typeof x === \"object\" && typeof x.type === \"string\"\n}\n\nconst visitor = Object.freeze(\n Object.assign(Object.create(null), {\n $visit(node, options, visitorKeys) {\n const { type } = node\n\n if (typeof this[type] === \"function\") {\n return this[type](node, options, visitorKeys)\n }\n\n return this.$visitChildren(node, options, visitorKeys)\n },\n\n $visitChildren(node, options, visitorKeys) {\n const { type } = node\n\n for (const key of visitorKeys[type] || getKeys(node)) {\n const value = node[key]\n\n if (Array.isArray(value)) {\n for (const element of value) {\n if (\n isNode(element) &&\n this.$visit(element, options, visitorKeys)\n ) {\n return true\n }\n }\n } else if (\n isNode(value) &&\n this.$visit(value, options, visitorKeys)\n ) {\n return true\n }\n }\n\n return false\n },\n\n ArrowFunctionExpression() {\n return false\n },\n AssignmentExpression() {\n return true\n },\n AwaitExpression() {\n return true\n },\n BinaryExpression(node, options, visitorKeys) {\n if (\n options.considerImplicitTypeConversion &&\n typeConversionBinaryOps.has(node.operator) &&\n (node.left.type !== \"Literal\" || node.right.type !== \"Literal\")\n ) {\n return true\n }\n return this.$visitChildren(node, options, visitorKeys)\n },\n CallExpression() {\n return true\n },\n FunctionExpression() {\n return false\n },\n ImportExpression() {\n return true\n },\n MemberExpression(node, options, visitorKeys) {\n if (options.considerGetters) {\n return true\n }\n if (\n options.considerImplicitTypeConversion &&\n node.computed &&\n node.property.type !== \"Literal\"\n ) {\n return true\n }\n return this.$visitChildren(node, options, visitorKeys)\n },\n MethodDefinition(node, options, visitorKeys) {\n if (\n options.considerImplicitTypeConversion &&\n node.computed &&\n node.key.type !== \"Literal\"\n ) {\n return true\n }\n return this.$visitChildren(node, options, visitorKeys)\n },\n NewExpression() {\n return true\n },\n Property(node, options, visitorKeys) {\n if (\n options.considerImplicitTypeConversion &&\n node.computed &&\n node.key.type !== \"Literal\"\n ) {\n return true\n }\n return this.$visitChildren(node, options, visitorKeys)\n },\n PropertyDefinition(node, options, visitorKeys) {\n if (\n options.considerImplicitTypeConversion &&\n node.computed &&\n node.key.type !== \"Literal\"\n ) {\n return true\n }\n return this.$visitChildren(node, options, visitorKeys)\n },\n UnaryExpression(node, options, visitorKeys) {\n if (node.operator === \"delete\") {\n return true\n }\n if (\n options.considerImplicitTypeConversion &&\n typeConversionUnaryOps.has(node.operator) &&\n node.argument.type !== \"Literal\"\n ) {\n return true\n }\n return this.$visitChildren(node, options, visitorKeys)\n },\n UpdateExpression() {\n return true\n },\n YieldExpression() {\n return true\n },\n }),\n)\n\n/**\n * Check whether a given node has any side effect or not.\n * @param {Node} node The node to get.\n * @param {SourceCode} sourceCode The source code object.\n * @param {object} [options] The option object.\n * @param {boolean} [options.considerGetters=false] If `true` then it considers member accesses as the node which has side effects.\n * @param {boolean} [options.considerImplicitTypeConversion=false] If `true` then it considers implicit type conversion as the node which has side effects.\n * @param {object} [options.visitorKeys=KEYS] The keys to traverse nodes. Use `context.getSourceCode().visitorKeys`.\n * @returns {boolean} `true` if the node has a certain side effect.\n */\nexport function hasSideEffect(\n node,\n sourceCode,\n { considerGetters = false, considerImplicitTypeConversion = false } = {},\n) {\n return visitor.$visit(\n node,\n { considerGetters, considerImplicitTypeConversion },\n sourceCode.visitorKeys || KEYS,\n )\n}\n","import { isClosingParenToken, isOpeningParenToken } from \"./token-predicate.mjs\"\n\n/**\n * Get the left parenthesis of the parent node syntax if it exists.\n * E.g., `if (a) {}` then the `(`.\n * @param {Node} node The AST node to check.\n * @param {SourceCode} sourceCode The source code object to get tokens.\n * @returns {Token|null} The left parenthesis of the parent node syntax\n */\nfunction getParentSyntaxParen(node, sourceCode) {\n const parent = node.parent\n\n switch (parent.type) {\n case \"CallExpression\":\n case \"NewExpression\":\n if (parent.arguments.length === 1 && parent.arguments[0] === node) {\n return sourceCode.getTokenAfter(\n parent.callee,\n isOpeningParenToken,\n )\n }\n return null\n\n case \"DoWhileStatement\":\n if (parent.test === node) {\n return sourceCode.getTokenAfter(\n parent.body,\n isOpeningParenToken,\n )\n }\n return null\n\n case \"IfStatement\":\n case \"WhileStatement\":\n if (parent.test === node) {\n return sourceCode.getFirstToken(parent, 1)\n }\n return null\n\n case \"ImportExpression\":\n if (parent.source === node) {\n return sourceCode.getFirstToken(parent, 1)\n }\n return null\n\n case \"SwitchStatement\":\n if (parent.discriminant === node) {\n return sourceCode.getFirstToken(parent, 1)\n }\n return null\n\n case \"WithStatement\":\n if (parent.object === node) {\n return sourceCode.getFirstToken(parent, 1)\n }\n return null\n\n default:\n return null\n }\n}\n\n/**\n * Check whether a given node is parenthesized or not.\n * @param {number} times The number of parantheses.\n * @param {Node} node The AST node to check.\n * @param {SourceCode} sourceCode The source code object to get tokens.\n * @returns {boolean} `true` if the node is parenthesized the given times.\n */\n/**\n * Check whether a given node is parenthesized or not.\n * @param {Node} node The AST node to check.\n * @param {SourceCode} sourceCode The source code object to get tokens.\n * @returns {boolean} `true` if the node is parenthesized.\n */\nexport function isParenthesized(\n timesOrNode,\n nodeOrSourceCode,\n optionalSourceCode,\n) {\n let times, node, sourceCode, maybeLeftParen, maybeRightParen\n if (typeof timesOrNode === \"number\") {\n times = timesOrNode | 0\n node = nodeOrSourceCode\n sourceCode = optionalSourceCode\n if (!(times >= 1)) {\n throw new TypeError(\"'times' should be a positive integer.\")\n }\n } else {\n times = 1\n node = timesOrNode\n sourceCode = nodeOrSourceCode\n }\n\n if (\n node == null ||\n // `Program` can't be parenthesized\n node.parent == null ||\n // `CatchClause.param` can't be parenthesized, example `try {} catch (error) {}`\n (node.parent.type === \"CatchClause\" && node.parent.param === node)\n ) {\n return false\n }\n\n maybeLeftParen = maybeRightParen = node\n do {\n maybeLeftParen = sourceCode.getTokenBefore(maybeLeftParen)\n maybeRightParen = sourceCode.getTokenAfter(maybeRightParen)\n } while (\n maybeLeftParen != null &&\n maybeRightParen != null &&\n isOpeningParenToken(maybeLeftParen) &&\n isClosingParenToken(maybeRightParen) &&\n // Avoid false positive such as `if (a) {}`\n maybeLeftParen !== getParentSyntaxParen(node, sourceCode) &&\n --times > 0\n )\n\n return times === 0\n}\n","/**\n * @author Toru Nagashima \n * See LICENSE file in root directory for full license.\n */\n\nconst placeholder = /\\$(?:[$&`']|[1-9][0-9]?)/gu\n\n/** @type {WeakMap} */\nconst internal = new WeakMap()\n\n/**\n * Check whether a given character is escaped or not.\n * @param {string} str The string to check.\n * @param {number} index The location of the character to check.\n * @returns {boolean} `true` if the character is escaped.\n */\nfunction isEscaped(str, index) {\n let escaped = false\n for (let i = index - 1; i >= 0 && str.charCodeAt(i) === 0x5c; --i) {\n escaped = !escaped\n }\n return escaped\n}\n\n/**\n * Replace a given string by a given matcher.\n * @param {PatternMatcher} matcher The pattern matcher.\n * @param {string} str The string to be replaced.\n * @param {string} replacement The new substring to replace each matched part.\n * @returns {string} The replaced string.\n */\nfunction replaceS(matcher, str, replacement) {\n const chunks = []\n let index = 0\n\n /** @type {RegExpExecArray} */\n let match = null\n\n /**\n * @param {string} key The placeholder.\n * @returns {string} The replaced string.\n */\n function replacer(key) {\n switch (key) {\n case \"$$\":\n return \"$\"\n case \"$&\":\n return match[0]\n case \"$`\":\n return str.slice(0, match.index)\n case \"$'\":\n return str.slice(match.index + match[0].length)\n default: {\n const i = key.slice(1)\n if (i in match) {\n return match[i]\n }\n return key\n }\n }\n }\n\n for (match of matcher.execAll(str)) {\n chunks.push(str.slice(index, match.index))\n chunks.push(replacement.replace(placeholder, replacer))\n index = match.index + match[0].length\n }\n chunks.push(str.slice(index))\n\n return chunks.join(\"\")\n}\n\n/**\n * Replace a given string by a given matcher.\n * @param {PatternMatcher} matcher The pattern matcher.\n * @param {string} str The string to be replaced.\n * @param {(...strs[])=>string} replace The function to replace each matched part.\n * @returns {string} The replaced string.\n */\nfunction replaceF(matcher, str, replace) {\n const chunks = []\n let index = 0\n\n for (const match of matcher.execAll(str)) {\n chunks.push(str.slice(index, match.index))\n chunks.push(String(replace(...match, match.index, match.input)))\n index = match.index + match[0].length\n }\n chunks.push(str.slice(index))\n\n return chunks.join(\"\")\n}\n\n/**\n * The class to find patterns as considering escape sequences.\n */\nexport class PatternMatcher {\n /**\n * Initialize this matcher.\n * @param {RegExp} pattern The pattern to match.\n * @param {{escaped:boolean}} options The options.\n */\n constructor(pattern, { escaped = false } = {}) {\n if (!(pattern instanceof RegExp)) {\n throw new TypeError(\"'pattern' should be a RegExp instance.\")\n }\n if (!pattern.flags.includes(\"g\")) {\n throw new Error(\"'pattern' should contains 'g' flag.\")\n }\n\n internal.set(this, {\n pattern: new RegExp(pattern.source, pattern.flags),\n escaped: Boolean(escaped),\n })\n }\n\n /**\n * Find the pattern in a given string.\n * @param {string} str The string to find.\n * @returns {IterableIterator} The iterator which iterate the matched information.\n */\n *execAll(str) {\n const { pattern, escaped } = internal.get(this)\n let match = null\n let lastIndex = 0\n\n pattern.lastIndex = 0\n while ((match = pattern.exec(str)) != null) {\n if (escaped || !isEscaped(str, match.index)) {\n lastIndex = pattern.lastIndex\n yield match\n pattern.lastIndex = lastIndex\n }\n }\n }\n\n /**\n * Check whether the pattern is found in a given string.\n * @param {string} str The string to check.\n * @returns {boolean} `true` if the pattern was found in the string.\n */\n test(str) {\n const it = this.execAll(str)\n const ret = it.next()\n return !ret.done\n }\n\n /**\n * Replace a given string.\n * @param {string} str The string to be replaced.\n * @param {(string|((...strs:string[])=>string))} replacer The string or function to replace. This is the same as the 2nd argument of `String.prototype.replace`.\n * @returns {string} The replaced string.\n */\n [Symbol.replace](str, replacer) {\n return typeof replacer === \"function\"\n ? replaceF(this, String(str), replacer)\n : replaceS(this, String(str), String(replacer))\n }\n}\n","import { findVariable } from \"./find-variable.mjs\"\nimport { getPropertyName } from \"./get-property-name.mjs\"\nimport { getStringIfConstant } from \"./get-string-if-constant.mjs\"\n\nconst IMPORT_TYPE = /^(?:Import|Export(?:All|Default|Named))Declaration$/u\nconst has = Function.call.bind(Object.hasOwnProperty)\n\nexport const READ = Symbol(\"read\")\nexport const CALL = Symbol(\"call\")\nexport const CONSTRUCT = Symbol(\"construct\")\nexport const ESM = Symbol(\"esm\")\n\nconst requireCall = { require: { [CALL]: true } }\n\n/**\n * Check whether a given variable is modified or not.\n * @param {Variable} variable The variable to check.\n * @returns {boolean} `true` if the variable is modified.\n */\nfunction isModifiedGlobal(variable) {\n return (\n variable == null ||\n variable.defs.length !== 0 ||\n variable.references.some((r) => r.isWrite())\n )\n}\n\n/**\n * Check if the value of a given node is passed through to the parent syntax as-is.\n * For example, `a` and `b` in (`a || b` and `c ? a : b`) are passed through.\n * @param {Node} node A node to check.\n * @returns {boolean} `true` if the node is passed through.\n */\nfunction isPassThrough(node) {\n const parent = node.parent\n\n switch (parent && parent.type) {\n case \"ConditionalExpression\":\n return parent.consequent === node || parent.alternate === node\n case \"LogicalExpression\":\n return true\n case \"SequenceExpression\":\n return parent.expressions[parent.expressions.length - 1] === node\n case \"ChainExpression\":\n return true\n\n default:\n return false\n }\n}\n\n/**\n * The reference tracker.\n */\nexport class ReferenceTracker {\n /**\n * Initialize this tracker.\n * @param {Scope} globalScope The global scope.\n * @param {object} [options] The options.\n * @param {\"legacy\"|\"strict\"} [options.mode=\"strict\"] The mode to determine the ImportDeclaration's behavior for CJS modules.\n * @param {string[]} [options.globalObjectNames=[\"global\",\"globalThis\",\"self\",\"window\"]] The variable names for Global Object.\n */\n constructor(\n globalScope,\n {\n mode = \"strict\",\n globalObjectNames = [\"global\", \"globalThis\", \"self\", \"window\"],\n } = {},\n ) {\n this.variableStack = []\n this.globalScope = globalScope\n this.mode = mode\n this.globalObjectNames = globalObjectNames.slice(0)\n }\n\n /**\n * Iterate the references of global variables.\n * @param {object} traceMap The trace map.\n * @returns {IterableIterator<{node:Node,path:string[],type:symbol,info:any}>} The iterator to iterate references.\n */\n *iterateGlobalReferences(traceMap) {\n for (const key of Object.keys(traceMap)) {\n const nextTraceMap = traceMap[key]\n const path = [key]\n const variable = this.globalScope.set.get(key)\n\n if (isModifiedGlobal(variable)) {\n continue\n }\n\n yield* this._iterateVariableReferences(\n variable,\n path,\n nextTraceMap,\n true,\n )\n }\n\n for (const key of this.globalObjectNames) {\n const path = []\n const variable = this.globalScope.set.get(key)\n\n if (isModifiedGlobal(variable)) {\n continue\n }\n\n yield* this._iterateVariableReferences(\n variable,\n path,\n traceMap,\n false,\n )\n }\n }\n\n /**\n * Iterate the references of CommonJS modules.\n * @param {object} traceMap The trace map.\n * @returns {IterableIterator<{node:Node,path:string[],type:symbol,info:any}>} The iterator to iterate references.\n */\n *iterateCjsReferences(traceMap) {\n for (const { node } of this.iterateGlobalReferences(requireCall)) {\n const key = getStringIfConstant(node.arguments[0])\n if (key == null || !has(traceMap, key)) {\n continue\n }\n\n const nextTraceMap = traceMap[key]\n const path = [key]\n\n if (nextTraceMap[READ]) {\n yield {\n node,\n path,\n type: READ,\n info: nextTraceMap[READ],\n }\n }\n yield* this._iteratePropertyReferences(node, path, nextTraceMap)\n }\n }\n\n /**\n * Iterate the references of ES modules.\n * @param {object} traceMap The trace map.\n * @returns {IterableIterator<{node:Node,path:string[],type:symbol,info:any}>} The iterator to iterate references.\n */\n *iterateEsmReferences(traceMap) {\n const programNode = this.globalScope.block\n\n for (const node of programNode.body) {\n if (!IMPORT_TYPE.test(node.type) || node.source == null) {\n continue\n }\n const moduleId = node.source.value\n\n if (!has(traceMap, moduleId)) {\n continue\n }\n const nextTraceMap = traceMap[moduleId]\n const path = [moduleId]\n\n if (nextTraceMap[READ]) {\n yield { node, path, type: READ, info: nextTraceMap[READ] }\n }\n\n if (node.type === \"ExportAllDeclaration\") {\n for (const key of Object.keys(nextTraceMap)) {\n const exportTraceMap = nextTraceMap[key]\n if (exportTraceMap[READ]) {\n yield {\n node,\n path: path.concat(key),\n type: READ,\n info: exportTraceMap[READ],\n }\n }\n }\n } else {\n for (const specifier of node.specifiers) {\n const esm = has(nextTraceMap, ESM)\n const it = this._iterateImportReferences(\n specifier,\n path,\n esm\n ? nextTraceMap\n : this.mode === \"legacy\"\n ? { default: nextTraceMap, ...nextTraceMap }\n : { default: nextTraceMap },\n )\n\n if (esm) {\n yield* it\n } else {\n for (const report of it) {\n report.path = report.path.filter(exceptDefault)\n if (\n report.path.length >= 2 ||\n report.type !== READ\n ) {\n yield report\n }\n }\n }\n }\n }\n }\n }\n\n /**\n * Iterate the references for a given variable.\n * @param {Variable} variable The variable to iterate that references.\n * @param {string[]} path The current path.\n * @param {object} traceMap The trace map.\n * @param {boolean} shouldReport = The flag to report those references.\n * @returns {IterableIterator<{node:Node,path:string[],type:symbol,info:any}>} The iterator to iterate references.\n */\n *_iterateVariableReferences(variable, path, traceMap, shouldReport) {\n if (this.variableStack.includes(variable)) {\n return\n }\n this.variableStack.push(variable)\n try {\n for (const reference of variable.references) {\n if (!reference.isRead()) {\n continue\n }\n const node = reference.identifier\n\n if (shouldReport && traceMap[READ]) {\n yield { node, path, type: READ, info: traceMap[READ] }\n }\n yield* this._iteratePropertyReferences(node, path, traceMap)\n }\n } finally {\n this.variableStack.pop()\n }\n }\n\n /**\n * Iterate the references for a given AST node.\n * @param rootNode The AST node to iterate references.\n * @param {string[]} path The current path.\n * @param {object} traceMap The trace map.\n * @returns {IterableIterator<{node:Node,path:string[],type:symbol,info:any}>} The iterator to iterate references.\n */\n //eslint-disable-next-line complexity\n *_iteratePropertyReferences(rootNode, path, traceMap) {\n let node = rootNode\n while (isPassThrough(node)) {\n node = node.parent\n }\n\n const parent = node.parent\n if (parent.type === \"MemberExpression\") {\n if (parent.object === node) {\n const key = getPropertyName(parent)\n if (key == null || !has(traceMap, key)) {\n return\n }\n\n path = path.concat(key) //eslint-disable-line no-param-reassign\n const nextTraceMap = traceMap[key]\n if (nextTraceMap[READ]) {\n yield {\n node: parent,\n path,\n type: READ,\n info: nextTraceMap[READ],\n }\n }\n yield* this._iteratePropertyReferences(\n parent,\n path,\n nextTraceMap,\n )\n }\n return\n }\n if (parent.type === \"CallExpression\") {\n if (parent.callee === node && traceMap[CALL]) {\n yield { node: parent, path, type: CALL, info: traceMap[CALL] }\n }\n return\n }\n if (parent.type === \"NewExpression\") {\n if (parent.callee === node && traceMap[CONSTRUCT]) {\n yield {\n node: parent,\n path,\n type: CONSTRUCT,\n info: traceMap[CONSTRUCT],\n }\n }\n return\n }\n if (parent.type === \"AssignmentExpression\") {\n if (parent.right === node) {\n yield* this._iterateLhsReferences(parent.left, path, traceMap)\n yield* this._iteratePropertyReferences(parent, path, traceMap)\n }\n return\n }\n if (parent.type === \"AssignmentPattern\") {\n if (parent.right === node) {\n yield* this._iterateLhsReferences(parent.left, path, traceMap)\n }\n return\n }\n if (parent.type === \"VariableDeclarator\") {\n if (parent.init === node) {\n yield* this._iterateLhsReferences(parent.id, path, traceMap)\n }\n }\n }\n\n /**\n * Iterate the references for a given Pattern node.\n * @param {Node} patternNode The Pattern node to iterate references.\n * @param {string[]} path The current path.\n * @param {object} traceMap The trace map.\n * @returns {IterableIterator<{node:Node,path:string[],type:symbol,info:any}>} The iterator to iterate references.\n */\n *_iterateLhsReferences(patternNode, path, traceMap) {\n if (patternNode.type === \"Identifier\") {\n const variable = findVariable(this.globalScope, patternNode)\n if (variable != null) {\n yield* this._iterateVariableReferences(\n variable,\n path,\n traceMap,\n false,\n )\n }\n return\n }\n if (patternNode.type === \"ObjectPattern\") {\n for (const property of patternNode.properties) {\n const key = getPropertyName(property)\n\n if (key == null || !has(traceMap, key)) {\n continue\n }\n\n const nextPath = path.concat(key)\n const nextTraceMap = traceMap[key]\n if (nextTraceMap[READ]) {\n yield {\n node: property,\n path: nextPath,\n type: READ,\n info: nextTraceMap[READ],\n }\n }\n yield* this._iterateLhsReferences(\n property.value,\n nextPath,\n nextTraceMap,\n )\n }\n return\n }\n if (patternNode.type === \"AssignmentPattern\") {\n yield* this._iterateLhsReferences(patternNode.left, path, traceMap)\n }\n }\n\n /**\n * Iterate the references for a given ModuleSpecifier node.\n * @param {Node} specifierNode The ModuleSpecifier node to iterate references.\n * @param {string[]} path The current path.\n * @param {object} traceMap The trace map.\n * @returns {IterableIterator<{node:Node,path:string[],type:symbol,info:any}>} The iterator to iterate references.\n */\n *_iterateImportReferences(specifierNode, path, traceMap) {\n const type = specifierNode.type\n\n if (type === \"ImportSpecifier\" || type === \"ImportDefaultSpecifier\") {\n const key =\n type === \"ImportDefaultSpecifier\"\n ? \"default\"\n : specifierNode.imported.name\n if (!has(traceMap, key)) {\n return\n }\n\n path = path.concat(key) //eslint-disable-line no-param-reassign\n const nextTraceMap = traceMap[key]\n if (nextTraceMap[READ]) {\n yield {\n node: specifierNode,\n path,\n type: READ,\n info: nextTraceMap[READ],\n }\n }\n yield* this._iterateVariableReferences(\n findVariable(this.globalScope, specifierNode.local),\n path,\n nextTraceMap,\n false,\n )\n\n return\n }\n\n if (type === \"ImportNamespaceSpecifier\") {\n yield* this._iterateVariableReferences(\n findVariable(this.globalScope, specifierNode.local),\n path,\n traceMap,\n false,\n )\n return\n }\n\n if (type === \"ExportSpecifier\") {\n const key = specifierNode.local.name\n if (!has(traceMap, key)) {\n return\n }\n\n path = path.concat(key) //eslint-disable-line no-param-reassign\n const nextTraceMap = traceMap[key]\n if (nextTraceMap[READ]) {\n yield {\n node: specifierNode,\n path,\n type: READ,\n info: nextTraceMap[READ],\n }\n }\n }\n }\n}\n\nReferenceTracker.READ = READ\nReferenceTracker.CALL = CALL\nReferenceTracker.CONSTRUCT = CONSTRUCT\nReferenceTracker.ESM = ESM\n\n/**\n * This is a predicate function for Array#filter.\n * @param {string} name A name part.\n * @param {number} index The index of the name.\n * @returns {boolean} `false` if it's default.\n */\nfunction exceptDefault(name, index) {\n return !(index === 1 && name === \"default\")\n}\n","import { findVariable } from \"./find-variable.mjs\"\nimport { getFunctionHeadLocation } from \"./get-function-head-location.mjs\"\nimport { getFunctionNameWithKind } from \"./get-function-name-with-kind.mjs\"\nimport { getInnermostScope } from \"./get-innermost-scope.mjs\"\nimport { getPropertyName } from \"./get-property-name.mjs\"\nimport { getStaticValue } from \"./get-static-value.mjs\"\nimport { getStringIfConstant } from \"./get-string-if-constant.mjs\"\nimport { hasSideEffect } from \"./has-side-effect.mjs\"\nimport { isParenthesized } from \"./is-parenthesized.mjs\"\nimport { PatternMatcher } from \"./pattern-matcher.mjs\"\nimport {\n CALL,\n CONSTRUCT,\n ESM,\n READ,\n ReferenceTracker,\n} from \"./reference-tracker.mjs\"\nimport {\n isArrowToken,\n isClosingBraceToken,\n isClosingBracketToken,\n isClosingParenToken,\n isColonToken,\n isCommaToken,\n isCommentToken,\n isNotArrowToken,\n isNotClosingBraceToken,\n isNotClosingBracketToken,\n isNotClosingParenToken,\n isNotColonToken,\n isNotCommaToken,\n isNotCommentToken,\n isNotOpeningBraceToken,\n isNotOpeningBracketToken,\n isNotOpeningParenToken,\n isNotSemicolonToken,\n isOpeningBraceToken,\n isOpeningBracketToken,\n isOpeningParenToken,\n isSemicolonToken,\n} from \"./token-predicate.mjs\"\n\nexport default {\n CALL,\n CONSTRUCT,\n ESM,\n findVariable,\n getFunctionHeadLocation,\n getFunctionNameWithKind,\n getInnermostScope,\n getPropertyName,\n getStaticValue,\n getStringIfConstant,\n hasSideEffect,\n isArrowToken,\n isClosingBraceToken,\n isClosingBracketToken,\n isClosingParenToken,\n isColonToken,\n isCommaToken,\n isCommentToken,\n isNotArrowToken,\n isNotClosingBraceToken,\n isNotClosingBracketToken,\n isNotClosingParenToken,\n isNotColonToken,\n isNotCommaToken,\n isNotCommentToken,\n isNotOpeningBraceToken,\n isNotOpeningBracketToken,\n isNotOpeningParenToken,\n isNotSemicolonToken,\n isOpeningBraceToken,\n isOpeningBracketToken,\n isOpeningParenToken,\n isParenthesized,\n isSemicolonToken,\n PatternMatcher,\n READ,\n ReferenceTracker,\n}\nexport {\n CALL,\n CONSTRUCT,\n ESM,\n findVariable,\n getFunctionHeadLocation,\n getFunctionNameWithKind,\n getInnermostScope,\n getPropertyName,\n getStaticValue,\n getStringIfConstant,\n hasSideEffect,\n isArrowToken,\n isClosingBraceToken,\n isClosingBracketToken,\n isClosingParenToken,\n isColonToken,\n isCommaToken,\n isCommentToken,\n isNotArrowToken,\n isNotClosingBraceToken,\n isNotClosingBracketToken,\n isNotClosingParenToken,\n isNotColonToken,\n isNotCommaToken,\n isNotCommentToken,\n isNotOpeningBraceToken,\n isNotOpeningBracketToken,\n isNotOpeningParenToken,\n isNotSemicolonToken,\n isOpeningBraceToken,\n isOpeningBracketToken,\n isOpeningParenToken,\n isParenthesized,\n isSemicolonToken,\n PatternMatcher,\n READ,\n ReferenceTracker,\n}\n"],"names":["getKeys","KEYS"],"mappings":"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"}
\ No newline at end of file
diff --git a/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint-community/eslint-utils/index.mjs b/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint-community/eslint-utils/index.mjs
new file mode 100644
index 0000000..54b2581
--- /dev/null
+++ b/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint-community/eslint-utils/index.mjs
@@ -0,0 +1,2027 @@
+import { getKeys, KEYS } from 'eslint-visitor-keys';
+
+/**
+ * Get the innermost scope which contains a given location.
+ * @param {Scope} initialScope The initial scope to search.
+ * @param {Node} node The location to search.
+ * @returns {Scope} The innermost scope.
+ */
+function getInnermostScope(initialScope, node) {
+ const location = node.range[0];
+
+ let scope = initialScope;
+ let found = false;
+ do {
+ found = false;
+ for (const childScope of scope.childScopes) {
+ const range = childScope.block.range;
+
+ if (range[0] <= location && location < range[1]) {
+ scope = childScope;
+ found = true;
+ break
+ }
+ }
+ } while (found)
+
+ return scope
+}
+
+/**
+ * Find the variable of a given name.
+ * @param {Scope} initialScope The scope to start finding.
+ * @param {string|Node} nameOrNode The variable name to find. If this is a Node object then it should be an Identifier node.
+ * @returns {Variable|null} The found variable or null.
+ */
+function findVariable(initialScope, nameOrNode) {
+ let name = "";
+ let scope = initialScope;
+
+ if (typeof nameOrNode === "string") {
+ name = nameOrNode;
+ } else {
+ name = nameOrNode.name;
+ scope = getInnermostScope(scope, nameOrNode);
+ }
+
+ while (scope != null) {
+ const variable = scope.set.get(name);
+ if (variable != null) {
+ return variable
+ }
+ scope = scope.upper;
+ }
+
+ return null
+}
+
+/**
+ * Negate the result of `this` calling.
+ * @param {Token} token The token to check.
+ * @returns {boolean} `true` if the result of `this(token)` is `false`.
+ */
+function negate0(token) {
+ return !this(token) //eslint-disable-line no-invalid-this
+}
+
+/**
+ * Creates the negate function of the given function.
+ * @param {function(Token):boolean} f - The function to negate.
+ * @returns {function(Token):boolean} Negated function.
+ */
+function negate(f) {
+ return negate0.bind(f)
+}
+
+/**
+ * Checks if the given token is a PunctuatorToken with the given value
+ * @param {Token} token - The token to check.
+ * @param {string} value - The value to check.
+ * @returns {boolean} `true` if the token is a PunctuatorToken with the given value.
+ */
+function isPunctuatorTokenWithValue(token, value) {
+ return token.type === "Punctuator" && token.value === value
+}
+
+/**
+ * Checks if the given token is an arrow token or not.
+ * @param {Token} token - The token to check.
+ * @returns {boolean} `true` if the token is an arrow token.
+ */
+function isArrowToken(token) {
+ return isPunctuatorTokenWithValue(token, "=>")
+}
+
+/**
+ * Checks if the given token is a comma token or not.
+ * @param {Token} token - The token to check.
+ * @returns {boolean} `true` if the token is a comma token.
+ */
+function isCommaToken(token) {
+ return isPunctuatorTokenWithValue(token, ",")
+}
+
+/**
+ * Checks if the given token is a semicolon token or not.
+ * @param {Token} token - The token to check.
+ * @returns {boolean} `true` if the token is a semicolon token.
+ */
+function isSemicolonToken(token) {
+ return isPunctuatorTokenWithValue(token, ";")
+}
+
+/**
+ * Checks if the given token is a colon token or not.
+ * @param {Token} token - The token to check.
+ * @returns {boolean} `true` if the token is a colon token.
+ */
+function isColonToken(token) {
+ return isPunctuatorTokenWithValue(token, ":")
+}
+
+/**
+ * Checks if the given token is an opening parenthesis token or not.
+ * @param {Token} token - The token to check.
+ * @returns {boolean} `true` if the token is an opening parenthesis token.
+ */
+function isOpeningParenToken(token) {
+ return isPunctuatorTokenWithValue(token, "(")
+}
+
+/**
+ * Checks if the given token is a closing parenthesis token or not.
+ * @param {Token} token - The token to check.
+ * @returns {boolean} `true` if the token is a closing parenthesis token.
+ */
+function isClosingParenToken(token) {
+ return isPunctuatorTokenWithValue(token, ")")
+}
+
+/**
+ * Checks if the given token is an opening square bracket token or not.
+ * @param {Token} token - The token to check.
+ * @returns {boolean} `true` if the token is an opening square bracket token.
+ */
+function isOpeningBracketToken(token) {
+ return isPunctuatorTokenWithValue(token, "[")
+}
+
+/**
+ * Checks if the given token is a closing square bracket token or not.
+ * @param {Token} token - The token to check.
+ * @returns {boolean} `true` if the token is a closing square bracket token.
+ */
+function isClosingBracketToken(token) {
+ return isPunctuatorTokenWithValue(token, "]")
+}
+
+/**
+ * Checks if the given token is an opening brace token or not.
+ * @param {Token} token - The token to check.
+ * @returns {boolean} `true` if the token is an opening brace token.
+ */
+function isOpeningBraceToken(token) {
+ return isPunctuatorTokenWithValue(token, "{")
+}
+
+/**
+ * Checks if the given token is a closing brace token or not.
+ * @param {Token} token - The token to check.
+ * @returns {boolean} `true` if the token is a closing brace token.
+ */
+function isClosingBraceToken(token) {
+ return isPunctuatorTokenWithValue(token, "}")
+}
+
+/**
+ * Checks if the given token is a comment token or not.
+ * @param {Token} token - The token to check.
+ * @returns {boolean} `true` if the token is a comment token.
+ */
+function isCommentToken(token) {
+ return ["Block", "Line", "Shebang"].includes(token.type)
+}
+
+const isNotArrowToken = negate(isArrowToken);
+const isNotCommaToken = negate(isCommaToken);
+const isNotSemicolonToken = negate(isSemicolonToken);
+const isNotColonToken = negate(isColonToken);
+const isNotOpeningParenToken = negate(isOpeningParenToken);
+const isNotClosingParenToken = negate(isClosingParenToken);
+const isNotOpeningBracketToken = negate(isOpeningBracketToken);
+const isNotClosingBracketToken = negate(isClosingBracketToken);
+const isNotOpeningBraceToken = negate(isOpeningBraceToken);
+const isNotClosingBraceToken = negate(isClosingBraceToken);
+const isNotCommentToken = negate(isCommentToken);
+
+/**
+ * Get the `(` token of the given function node.
+ * @param {Node} node - The function node to get.
+ * @param {SourceCode} sourceCode - The source code object to get tokens.
+ * @returns {Token} `(` token.
+ */
+function getOpeningParenOfParams(node, sourceCode) {
+ return node.id
+ ? sourceCode.getTokenAfter(node.id, isOpeningParenToken)
+ : sourceCode.getFirstToken(node, isOpeningParenToken)
+}
+
+/**
+ * Get the location of the given function node for reporting.
+ * @param {Node} node - The function node to get.
+ * @param {SourceCode} sourceCode - The source code object to get tokens.
+ * @returns {string} The location of the function node for reporting.
+ */
+function getFunctionHeadLocation(node, sourceCode) {
+ const parent = node.parent;
+ let start = null;
+ let end = null;
+
+ if (node.type === "ArrowFunctionExpression") {
+ const arrowToken = sourceCode.getTokenBefore(node.body, isArrowToken);
+
+ start = arrowToken.loc.start;
+ end = arrowToken.loc.end;
+ } else if (
+ parent.type === "Property" ||
+ parent.type === "MethodDefinition" ||
+ parent.type === "PropertyDefinition"
+ ) {
+ start = parent.loc.start;
+ end = getOpeningParenOfParams(node, sourceCode).loc.start;
+ } else {
+ start = node.loc.start;
+ end = getOpeningParenOfParams(node, sourceCode).loc.start;
+ }
+
+ return {
+ start: { ...start },
+ end: { ...end },
+ }
+}
+
+/* globals globalThis, global, self, window */
+
+const globalObject =
+ typeof globalThis !== "undefined"
+ ? globalThis
+ : typeof self !== "undefined"
+ ? self
+ : typeof window !== "undefined"
+ ? window
+ : typeof global !== "undefined"
+ ? global
+ : {};
+
+const builtinNames = Object.freeze(
+ new Set([
+ "Array",
+ "ArrayBuffer",
+ "BigInt",
+ "BigInt64Array",
+ "BigUint64Array",
+ "Boolean",
+ "DataView",
+ "Date",
+ "decodeURI",
+ "decodeURIComponent",
+ "encodeURI",
+ "encodeURIComponent",
+ "escape",
+ "Float32Array",
+ "Float64Array",
+ "Function",
+ "Infinity",
+ "Int16Array",
+ "Int32Array",
+ "Int8Array",
+ "isFinite",
+ "isNaN",
+ "isPrototypeOf",
+ "JSON",
+ "Map",
+ "Math",
+ "NaN",
+ "Number",
+ "Object",
+ "parseFloat",
+ "parseInt",
+ "Promise",
+ "Proxy",
+ "Reflect",
+ "RegExp",
+ "Set",
+ "String",
+ "Symbol",
+ "Uint16Array",
+ "Uint32Array",
+ "Uint8Array",
+ "Uint8ClampedArray",
+ "undefined",
+ "unescape",
+ "WeakMap",
+ "WeakSet",
+ ]),
+);
+const callAllowed = new Set(
+ [
+ Array.isArray,
+ Array.of,
+ Array.prototype.at,
+ Array.prototype.concat,
+ Array.prototype.entries,
+ Array.prototype.every,
+ Array.prototype.filter,
+ Array.prototype.find,
+ Array.prototype.findIndex,
+ Array.prototype.flat,
+ Array.prototype.includes,
+ Array.prototype.indexOf,
+ Array.prototype.join,
+ Array.prototype.keys,
+ Array.prototype.lastIndexOf,
+ Array.prototype.slice,
+ Array.prototype.some,
+ Array.prototype.toString,
+ Array.prototype.values,
+ typeof BigInt === "function" ? BigInt : undefined,
+ Boolean,
+ Date,
+ Date.parse,
+ decodeURI,
+ decodeURIComponent,
+ encodeURI,
+ encodeURIComponent,
+ escape,
+ isFinite,
+ isNaN,
+ isPrototypeOf,
+ Map,
+ Map.prototype.entries,
+ Map.prototype.get,
+ Map.prototype.has,
+ Map.prototype.keys,
+ Map.prototype.values,
+ ...Object.getOwnPropertyNames(Math)
+ .filter((k) => k !== "random")
+ .map((k) => Math[k])
+ .filter((f) => typeof f === "function"),
+ Number,
+ Number.isFinite,
+ Number.isNaN,
+ Number.parseFloat,
+ Number.parseInt,
+ Number.prototype.toExponential,
+ Number.prototype.toFixed,
+ Number.prototype.toPrecision,
+ Number.prototype.toString,
+ Object,
+ Object.entries,
+ Object.is,
+ Object.isExtensible,
+ Object.isFrozen,
+ Object.isSealed,
+ Object.keys,
+ Object.values,
+ parseFloat,
+ parseInt,
+ RegExp,
+ Set,
+ Set.prototype.entries,
+ Set.prototype.has,
+ Set.prototype.keys,
+ Set.prototype.values,
+ String,
+ String.fromCharCode,
+ String.fromCodePoint,
+ String.raw,
+ String.prototype.at,
+ String.prototype.charAt,
+ String.prototype.charCodeAt,
+ String.prototype.codePointAt,
+ String.prototype.concat,
+ String.prototype.endsWith,
+ String.prototype.includes,
+ String.prototype.indexOf,
+ String.prototype.lastIndexOf,
+ String.prototype.normalize,
+ String.prototype.padEnd,
+ String.prototype.padStart,
+ String.prototype.slice,
+ String.prototype.startsWith,
+ String.prototype.substr,
+ String.prototype.substring,
+ String.prototype.toLowerCase,
+ String.prototype.toString,
+ String.prototype.toUpperCase,
+ String.prototype.trim,
+ String.prototype.trimEnd,
+ String.prototype.trimLeft,
+ String.prototype.trimRight,
+ String.prototype.trimStart,
+ Symbol.for,
+ Symbol.keyFor,
+ unescape,
+ ].filter((f) => typeof f === "function"),
+);
+const callPassThrough = new Set([
+ Object.freeze,
+ Object.preventExtensions,
+ Object.seal,
+]);
+
+/** @type {ReadonlyArray]>} */
+const getterAllowed = [
+ [Map, new Set(["size"])],
+ [
+ RegExp,
+ new Set([
+ "dotAll",
+ "flags",
+ "global",
+ "hasIndices",
+ "ignoreCase",
+ "multiline",
+ "source",
+ "sticky",
+ "unicode",
+ ]),
+ ],
+ [Set, new Set(["size"])],
+];
+
+/**
+ * Get the property descriptor.
+ * @param {object} object The object to get.
+ * @param {string|number|symbol} name The property name to get.
+ */
+function getPropertyDescriptor(object, name) {
+ let x = object;
+ while ((typeof x === "object" || typeof x === "function") && x !== null) {
+ const d = Object.getOwnPropertyDescriptor(x, name);
+ if (d) {
+ return d
+ }
+ x = Object.getPrototypeOf(x);
+ }
+ return null
+}
+
+/**
+ * Check if a property is getter or not.
+ * @param {object} object The object to check.
+ * @param {string|number|symbol} name The property name to check.
+ */
+function isGetter(object, name) {
+ const d = getPropertyDescriptor(object, name);
+ return d != null && d.get != null
+}
+
+/**
+ * Get the element values of a given node list.
+ * @param {Node[]} nodeList The node list to get values.
+ * @param {Scope|undefined} initialScope The initial scope to find variables.
+ * @returns {any[]|null} The value list if all nodes are constant. Otherwise, null.
+ */
+function getElementValues(nodeList, initialScope) {
+ const valueList = [];
+
+ for (let i = 0; i < nodeList.length; ++i) {
+ const elementNode = nodeList[i];
+
+ if (elementNode == null) {
+ valueList.length = i + 1;
+ } else if (elementNode.type === "SpreadElement") {
+ const argument = getStaticValueR(elementNode.argument, initialScope);
+ if (argument == null) {
+ return null
+ }
+ valueList.push(...argument.value);
+ } else {
+ const element = getStaticValueR(elementNode, initialScope);
+ if (element == null) {
+ return null
+ }
+ valueList.push(element.value);
+ }
+ }
+
+ return valueList
+}
+
+/**
+ * Returns whether the given variable is never written to after initialization.
+ * @param {import("eslint").Scope.Variable} variable
+ * @returns {boolean}
+ */
+function isEffectivelyConst(variable) {
+ const refs = variable.references;
+
+ const inits = refs.filter((r) => r.init).length;
+ const reads = refs.filter((r) => r.isReadOnly()).length;
+ if (inits === 1 && reads + inits === refs.length) {
+ // there is only one init and all other references only read
+ return true
+ }
+ return false
+}
+
+const operations = Object.freeze({
+ ArrayExpression(node, initialScope) {
+ const elements = getElementValues(node.elements, initialScope);
+ return elements != null ? { value: elements } : null
+ },
+
+ AssignmentExpression(node, initialScope) {
+ if (node.operator === "=") {
+ return getStaticValueR(node.right, initialScope)
+ }
+ return null
+ },
+
+ //eslint-disable-next-line complexity
+ BinaryExpression(node, initialScope) {
+ if (node.operator === "in" || node.operator === "instanceof") {
+ // Not supported.
+ return null
+ }
+
+ const left = getStaticValueR(node.left, initialScope);
+ const right = getStaticValueR(node.right, initialScope);
+ if (left != null && right != null) {
+ switch (node.operator) {
+ case "==":
+ return { value: left.value == right.value } //eslint-disable-line eqeqeq
+ case "!=":
+ return { value: left.value != right.value } //eslint-disable-line eqeqeq
+ case "===":
+ return { value: left.value === right.value }
+ case "!==":
+ return { value: left.value !== right.value }
+ case "<":
+ return { value: left.value < right.value }
+ case "<=":
+ return { value: left.value <= right.value }
+ case ">":
+ return { value: left.value > right.value }
+ case ">=":
+ return { value: left.value >= right.value }
+ case "<<":
+ return { value: left.value << right.value }
+ case ">>":
+ return { value: left.value >> right.value }
+ case ">>>":
+ return { value: left.value >>> right.value }
+ case "+":
+ return { value: left.value + right.value }
+ case "-":
+ return { value: left.value - right.value }
+ case "*":
+ return { value: left.value * right.value }
+ case "/":
+ return { value: left.value / right.value }
+ case "%":
+ return { value: left.value % right.value }
+ case "**":
+ return { value: left.value ** right.value }
+ case "|":
+ return { value: left.value | right.value }
+ case "^":
+ return { value: left.value ^ right.value }
+ case "&":
+ return { value: left.value & right.value }
+
+ // no default
+ }
+ }
+
+ return null
+ },
+
+ CallExpression(node, initialScope) {
+ const calleeNode = node.callee;
+ const args = getElementValues(node.arguments, initialScope);
+
+ if (args != null) {
+ if (calleeNode.type === "MemberExpression") {
+ if (calleeNode.property.type === "PrivateIdentifier") {
+ return null
+ }
+ const object = getStaticValueR(calleeNode.object, initialScope);
+ if (object != null) {
+ if (
+ object.value == null &&
+ (object.optional || node.optional)
+ ) {
+ return { value: undefined, optional: true }
+ }
+ const property = getStaticPropertyNameValue(
+ calleeNode,
+ initialScope,
+ );
+
+ if (property != null) {
+ const receiver = object.value;
+ const methodName = property.value;
+ if (callAllowed.has(receiver[methodName])) {
+ return { value: receiver[methodName](...args) }
+ }
+ if (callPassThrough.has(receiver[methodName])) {
+ return { value: args[0] }
+ }
+ }
+ }
+ } else {
+ const callee = getStaticValueR(calleeNode, initialScope);
+ if (callee != null) {
+ if (callee.value == null && node.optional) {
+ return { value: undefined, optional: true }
+ }
+ const func = callee.value;
+ if (callAllowed.has(func)) {
+ return { value: func(...args) }
+ }
+ if (callPassThrough.has(func)) {
+ return { value: args[0] }
+ }
+ }
+ }
+ }
+
+ return null
+ },
+
+ ConditionalExpression(node, initialScope) {
+ const test = getStaticValueR(node.test, initialScope);
+ if (test != null) {
+ return test.value
+ ? getStaticValueR(node.consequent, initialScope)
+ : getStaticValueR(node.alternate, initialScope)
+ }
+ return null
+ },
+
+ ExpressionStatement(node, initialScope) {
+ return getStaticValueR(node.expression, initialScope)
+ },
+
+ Identifier(node, initialScope) {
+ if (initialScope != null) {
+ const variable = findVariable(initialScope, node);
+
+ // Built-in globals.
+ if (
+ variable != null &&
+ variable.defs.length === 0 &&
+ builtinNames.has(variable.name) &&
+ variable.name in globalObject
+ ) {
+ return { value: globalObject[variable.name] }
+ }
+
+ // Constants.
+ if (variable != null && variable.defs.length === 1) {
+ const def = variable.defs[0];
+ if (
+ def.parent &&
+ def.type === "Variable" &&
+ (def.parent.kind === "const" ||
+ isEffectivelyConst(variable)) &&
+ // TODO(mysticatea): don't support destructuring here.
+ def.node.id.type === "Identifier"
+ ) {
+ return getStaticValueR(def.node.init, initialScope)
+ }
+ }
+ }
+ return null
+ },
+
+ Literal(node) {
+ //istanbul ignore if : this is implementation-specific behavior.
+ if ((node.regex != null || node.bigint != null) && node.value == null) {
+ // It was a RegExp/BigInt literal, but Node.js didn't support it.
+ return null
+ }
+ return { value: node.value }
+ },
+
+ LogicalExpression(node, initialScope) {
+ const left = getStaticValueR(node.left, initialScope);
+ if (left != null) {
+ if (
+ (node.operator === "||" && Boolean(left.value) === true) ||
+ (node.operator === "&&" && Boolean(left.value) === false) ||
+ (node.operator === "??" && left.value != null)
+ ) {
+ return left
+ }
+
+ const right = getStaticValueR(node.right, initialScope);
+ if (right != null) {
+ return right
+ }
+ }
+
+ return null
+ },
+
+ MemberExpression(node, initialScope) {
+ if (node.property.type === "PrivateIdentifier") {
+ return null
+ }
+ const object = getStaticValueR(node.object, initialScope);
+ if (object != null) {
+ if (object.value == null && (object.optional || node.optional)) {
+ return { value: undefined, optional: true }
+ }
+ const property = getStaticPropertyNameValue(node, initialScope);
+
+ if (property != null) {
+ if (!isGetter(object.value, property.value)) {
+ return { value: object.value[property.value] }
+ }
+
+ for (const [classFn, allowed] of getterAllowed) {
+ if (
+ object.value instanceof classFn &&
+ allowed.has(property.value)
+ ) {
+ return { value: object.value[property.value] }
+ }
+ }
+ }
+ }
+ return null
+ },
+
+ ChainExpression(node, initialScope) {
+ const expression = getStaticValueR(node.expression, initialScope);
+ if (expression != null) {
+ return { value: expression.value }
+ }
+ return null
+ },
+
+ NewExpression(node, initialScope) {
+ const callee = getStaticValueR(node.callee, initialScope);
+ const args = getElementValues(node.arguments, initialScope);
+
+ if (callee != null && args != null) {
+ const Func = callee.value;
+ if (callAllowed.has(Func)) {
+ return { value: new Func(...args) }
+ }
+ }
+
+ return null
+ },
+
+ ObjectExpression(node, initialScope) {
+ const object = {};
+
+ for (const propertyNode of node.properties) {
+ if (propertyNode.type === "Property") {
+ if (propertyNode.kind !== "init") {
+ return null
+ }
+ const key = getStaticPropertyNameValue(
+ propertyNode,
+ initialScope,
+ );
+ const value = getStaticValueR(propertyNode.value, initialScope);
+ if (key == null || value == null) {
+ return null
+ }
+ object[key.value] = value.value;
+ } else if (
+ propertyNode.type === "SpreadElement" ||
+ propertyNode.type === "ExperimentalSpreadProperty"
+ ) {
+ const argument = getStaticValueR(
+ propertyNode.argument,
+ initialScope,
+ );
+ if (argument == null) {
+ return null
+ }
+ Object.assign(object, argument.value);
+ } else {
+ return null
+ }
+ }
+
+ return { value: object }
+ },
+
+ SequenceExpression(node, initialScope) {
+ const last = node.expressions[node.expressions.length - 1];
+ return getStaticValueR(last, initialScope)
+ },
+
+ TaggedTemplateExpression(node, initialScope) {
+ const tag = getStaticValueR(node.tag, initialScope);
+ const expressions = getElementValues(
+ node.quasi.expressions,
+ initialScope,
+ );
+
+ if (tag != null && expressions != null) {
+ const func = tag.value;
+ const strings = node.quasi.quasis.map((q) => q.value.cooked);
+ strings.raw = node.quasi.quasis.map((q) => q.value.raw);
+
+ if (func === String.raw) {
+ return { value: func(strings, ...expressions) }
+ }
+ }
+
+ return null
+ },
+
+ TemplateLiteral(node, initialScope) {
+ const expressions = getElementValues(node.expressions, initialScope);
+ if (expressions != null) {
+ let value = node.quasis[0].value.cooked;
+ for (let i = 0; i < expressions.length; ++i) {
+ value += expressions[i];
+ value += node.quasis[i + 1].value.cooked;
+ }
+ return { value }
+ }
+ return null
+ },
+
+ UnaryExpression(node, initialScope) {
+ if (node.operator === "delete") {
+ // Not supported.
+ return null
+ }
+ if (node.operator === "void") {
+ return { value: undefined }
+ }
+
+ const arg = getStaticValueR(node.argument, initialScope);
+ if (arg != null) {
+ switch (node.operator) {
+ case "-":
+ return { value: -arg.value }
+ case "+":
+ return { value: +arg.value } //eslint-disable-line no-implicit-coercion
+ case "!":
+ return { value: !arg.value }
+ case "~":
+ return { value: ~arg.value }
+ case "typeof":
+ return { value: typeof arg.value }
+
+ // no default
+ }
+ }
+
+ return null
+ },
+});
+
+/**
+ * Get the value of a given node if it's a static value.
+ * @param {Node} node The node to get.
+ * @param {Scope|undefined} initialScope The scope to start finding variable.
+ * @returns {{value:any}|{value:undefined,optional?:true}|null} The static value of the node, or `null`.
+ */
+function getStaticValueR(node, initialScope) {
+ if (node != null && Object.hasOwnProperty.call(operations, node.type)) {
+ return operations[node.type](node, initialScope)
+ }
+ return null
+}
+
+/**
+ * Get the static value of property name from a MemberExpression node or a Property node.
+ * @param {Node} node The node to get.
+ * @param {Scope} [initialScope] The scope to start finding variable. Optional. If the node is a computed property node and this scope was given, this checks the computed property name by the `getStringIfConstant` function with the scope, and returns the value of it.
+ * @returns {{value:any}|{value:undefined,optional?:true}|null} The static value of the property name of the node, or `null`.
+ */
+function getStaticPropertyNameValue(node, initialScope) {
+ const nameNode = node.type === "Property" ? node.key : node.property;
+
+ if (node.computed) {
+ return getStaticValueR(nameNode, initialScope)
+ }
+
+ if (nameNode.type === "Identifier") {
+ return { value: nameNode.name }
+ }
+
+ if (nameNode.type === "Literal") {
+ if (nameNode.bigint) {
+ return { value: nameNode.bigint }
+ }
+ return { value: String(nameNode.value) }
+ }
+
+ return null
+}
+
+/**
+ * Get the value of a given node if it's a static value.
+ * @param {Node} node The node to get.
+ * @param {Scope} [initialScope] The scope to start finding variable. Optional. If this scope was given, this tries to resolve identifier references which are in the given node as much as possible.
+ * @returns {{value:any}|{value:undefined,optional?:true}|null} The static value of the node, or `null`.
+ */
+function getStaticValue(node, initialScope = null) {
+ try {
+ return getStaticValueR(node, initialScope)
+ } catch (_error) {
+ return null
+ }
+}
+
+/**
+ * Get the value of a given node if it's a literal or a template literal.
+ * @param {Node} node The node to get.
+ * @param {Scope} [initialScope] The scope to start finding variable. Optional. If the node is an Identifier node and this scope was given, this checks the variable of the identifier, and returns the value of it if the variable is a constant.
+ * @returns {string|null} The value of the node, or `null`.
+ */
+function getStringIfConstant(node, initialScope = null) {
+ // Handle the literals that the platform doesn't support natively.
+ if (node && node.type === "Literal" && node.value === null) {
+ if (node.regex) {
+ return `/${node.regex.pattern}/${node.regex.flags}`
+ }
+ if (node.bigint) {
+ return node.bigint
+ }
+ }
+
+ const evaluated = getStaticValue(node, initialScope);
+ return evaluated && String(evaluated.value)
+}
+
+/**
+ * Get the property name from a MemberExpression node or a Property node.
+ * @param {Node} node The node to get.
+ * @param {Scope} [initialScope] The scope to start finding variable. Optional. If the node is a computed property node and this scope was given, this checks the computed property name by the `getStringIfConstant` function with the scope, and returns the value of it.
+ * @returns {string|null} The property name of the node.
+ */
+function getPropertyName(node, initialScope) {
+ switch (node.type) {
+ case "MemberExpression":
+ if (node.computed) {
+ return getStringIfConstant(node.property, initialScope)
+ }
+ if (node.property.type === "PrivateIdentifier") {
+ return null
+ }
+ return node.property.name
+
+ case "Property":
+ case "MethodDefinition":
+ case "PropertyDefinition":
+ if (node.computed) {
+ return getStringIfConstant(node.key, initialScope)
+ }
+ if (node.key.type === "Literal") {
+ return String(node.key.value)
+ }
+ if (node.key.type === "PrivateIdentifier") {
+ return null
+ }
+ return node.key.name
+
+ // no default
+ }
+
+ return null
+}
+
+/**
+ * Get the name and kind of the given function node.
+ * @param {ASTNode} node - The function node to get.
+ * @param {SourceCode} [sourceCode] The source code object to get the code of computed property keys.
+ * @returns {string} The name and kind of the function node.
+ */
+// eslint-disable-next-line complexity
+function getFunctionNameWithKind(node, sourceCode) {
+ const parent = node.parent;
+ const tokens = [];
+ const isObjectMethod = parent.type === "Property" && parent.value === node;
+ const isClassMethod =
+ parent.type === "MethodDefinition" && parent.value === node;
+ const isClassFieldMethod =
+ parent.type === "PropertyDefinition" && parent.value === node;
+
+ // Modifiers.
+ if (isClassMethod || isClassFieldMethod) {
+ if (parent.static) {
+ tokens.push("static");
+ }
+ if (parent.key.type === "PrivateIdentifier") {
+ tokens.push("private");
+ }
+ }
+ if (node.async) {
+ tokens.push("async");
+ }
+ if (node.generator) {
+ tokens.push("generator");
+ }
+
+ // Kinds.
+ if (isObjectMethod || isClassMethod) {
+ if (parent.kind === "constructor") {
+ return "constructor"
+ }
+ if (parent.kind === "get") {
+ tokens.push("getter");
+ } else if (parent.kind === "set") {
+ tokens.push("setter");
+ } else {
+ tokens.push("method");
+ }
+ } else if (isClassFieldMethod) {
+ tokens.push("method");
+ } else {
+ if (node.type === "ArrowFunctionExpression") {
+ tokens.push("arrow");
+ }
+ tokens.push("function");
+ }
+
+ // Names.
+ if (isObjectMethod || isClassMethod || isClassFieldMethod) {
+ if (parent.key.type === "PrivateIdentifier") {
+ tokens.push(`#${parent.key.name}`);
+ } else {
+ const name = getPropertyName(parent);
+ if (name) {
+ tokens.push(`'${name}'`);
+ } else if (sourceCode) {
+ const keyText = sourceCode.getText(parent.key);
+ if (!keyText.includes("\n")) {
+ tokens.push(`[${keyText}]`);
+ }
+ }
+ }
+ } else if (node.id) {
+ tokens.push(`'${node.id.name}'`);
+ } else if (
+ parent.type === "VariableDeclarator" &&
+ parent.id &&
+ parent.id.type === "Identifier"
+ ) {
+ tokens.push(`'${parent.id.name}'`);
+ } else if (
+ (parent.type === "AssignmentExpression" ||
+ parent.type === "AssignmentPattern") &&
+ parent.left &&
+ parent.left.type === "Identifier"
+ ) {
+ tokens.push(`'${parent.left.name}'`);
+ } else if (
+ parent.type === "ExportDefaultDeclaration" &&
+ parent.declaration === node
+ ) {
+ tokens.push("'default'");
+ }
+
+ return tokens.join(" ")
+}
+
+const typeConversionBinaryOps = Object.freeze(
+ new Set([
+ "==",
+ "!=",
+ "<",
+ "<=",
+ ">",
+ ">=",
+ "<<",
+ ">>",
+ ">>>",
+ "+",
+ "-",
+ "*",
+ "/",
+ "%",
+ "|",
+ "^",
+ "&",
+ "in",
+ ]),
+);
+const typeConversionUnaryOps = Object.freeze(new Set(["-", "+", "!", "~"]));
+
+/**
+ * Check whether the given value is an ASTNode or not.
+ * @param {any} x The value to check.
+ * @returns {boolean} `true` if the value is an ASTNode.
+ */
+function isNode(x) {
+ return x !== null && typeof x === "object" && typeof x.type === "string"
+}
+
+const visitor = Object.freeze(
+ Object.assign(Object.create(null), {
+ $visit(node, options, visitorKeys) {
+ const { type } = node;
+
+ if (typeof this[type] === "function") {
+ return this[type](node, options, visitorKeys)
+ }
+
+ return this.$visitChildren(node, options, visitorKeys)
+ },
+
+ $visitChildren(node, options, visitorKeys) {
+ const { type } = node;
+
+ for (const key of visitorKeys[type] || getKeys(node)) {
+ const value = node[key];
+
+ if (Array.isArray(value)) {
+ for (const element of value) {
+ if (
+ isNode(element) &&
+ this.$visit(element, options, visitorKeys)
+ ) {
+ return true
+ }
+ }
+ } else if (
+ isNode(value) &&
+ this.$visit(value, options, visitorKeys)
+ ) {
+ return true
+ }
+ }
+
+ return false
+ },
+
+ ArrowFunctionExpression() {
+ return false
+ },
+ AssignmentExpression() {
+ return true
+ },
+ AwaitExpression() {
+ return true
+ },
+ BinaryExpression(node, options, visitorKeys) {
+ if (
+ options.considerImplicitTypeConversion &&
+ typeConversionBinaryOps.has(node.operator) &&
+ (node.left.type !== "Literal" || node.right.type !== "Literal")
+ ) {
+ return true
+ }
+ return this.$visitChildren(node, options, visitorKeys)
+ },
+ CallExpression() {
+ return true
+ },
+ FunctionExpression() {
+ return false
+ },
+ ImportExpression() {
+ return true
+ },
+ MemberExpression(node, options, visitorKeys) {
+ if (options.considerGetters) {
+ return true
+ }
+ if (
+ options.considerImplicitTypeConversion &&
+ node.computed &&
+ node.property.type !== "Literal"
+ ) {
+ return true
+ }
+ return this.$visitChildren(node, options, visitorKeys)
+ },
+ MethodDefinition(node, options, visitorKeys) {
+ if (
+ options.considerImplicitTypeConversion &&
+ node.computed &&
+ node.key.type !== "Literal"
+ ) {
+ return true
+ }
+ return this.$visitChildren(node, options, visitorKeys)
+ },
+ NewExpression() {
+ return true
+ },
+ Property(node, options, visitorKeys) {
+ if (
+ options.considerImplicitTypeConversion &&
+ node.computed &&
+ node.key.type !== "Literal"
+ ) {
+ return true
+ }
+ return this.$visitChildren(node, options, visitorKeys)
+ },
+ PropertyDefinition(node, options, visitorKeys) {
+ if (
+ options.considerImplicitTypeConversion &&
+ node.computed &&
+ node.key.type !== "Literal"
+ ) {
+ return true
+ }
+ return this.$visitChildren(node, options, visitorKeys)
+ },
+ UnaryExpression(node, options, visitorKeys) {
+ if (node.operator === "delete") {
+ return true
+ }
+ if (
+ options.considerImplicitTypeConversion &&
+ typeConversionUnaryOps.has(node.operator) &&
+ node.argument.type !== "Literal"
+ ) {
+ return true
+ }
+ return this.$visitChildren(node, options, visitorKeys)
+ },
+ UpdateExpression() {
+ return true
+ },
+ YieldExpression() {
+ return true
+ },
+ }),
+);
+
+/**
+ * Check whether a given node has any side effect or not.
+ * @param {Node} node The node to get.
+ * @param {SourceCode} sourceCode The source code object.
+ * @param {object} [options] The option object.
+ * @param {boolean} [options.considerGetters=false] If `true` then it considers member accesses as the node which has side effects.
+ * @param {boolean} [options.considerImplicitTypeConversion=false] If `true` then it considers implicit type conversion as the node which has side effects.
+ * @param {object} [options.visitorKeys=KEYS] The keys to traverse nodes. Use `context.getSourceCode().visitorKeys`.
+ * @returns {boolean} `true` if the node has a certain side effect.
+ */
+function hasSideEffect(
+ node,
+ sourceCode,
+ { considerGetters = false, considerImplicitTypeConversion = false } = {},
+) {
+ return visitor.$visit(
+ node,
+ { considerGetters, considerImplicitTypeConversion },
+ sourceCode.visitorKeys || KEYS,
+ )
+}
+
+/**
+ * Get the left parenthesis of the parent node syntax if it exists.
+ * E.g., `if (a) {}` then the `(`.
+ * @param {Node} node The AST node to check.
+ * @param {SourceCode} sourceCode The source code object to get tokens.
+ * @returns {Token|null} The left parenthesis of the parent node syntax
+ */
+function getParentSyntaxParen(node, sourceCode) {
+ const parent = node.parent;
+
+ switch (parent.type) {
+ case "CallExpression":
+ case "NewExpression":
+ if (parent.arguments.length === 1 && parent.arguments[0] === node) {
+ return sourceCode.getTokenAfter(
+ parent.callee,
+ isOpeningParenToken,
+ )
+ }
+ return null
+
+ case "DoWhileStatement":
+ if (parent.test === node) {
+ return sourceCode.getTokenAfter(
+ parent.body,
+ isOpeningParenToken,
+ )
+ }
+ return null
+
+ case "IfStatement":
+ case "WhileStatement":
+ if (parent.test === node) {
+ return sourceCode.getFirstToken(parent, 1)
+ }
+ return null
+
+ case "ImportExpression":
+ if (parent.source === node) {
+ return sourceCode.getFirstToken(parent, 1)
+ }
+ return null
+
+ case "SwitchStatement":
+ if (parent.discriminant === node) {
+ return sourceCode.getFirstToken(parent, 1)
+ }
+ return null
+
+ case "WithStatement":
+ if (parent.object === node) {
+ return sourceCode.getFirstToken(parent, 1)
+ }
+ return null
+
+ default:
+ return null
+ }
+}
+
+/**
+ * Check whether a given node is parenthesized or not.
+ * @param {number} times The number of parantheses.
+ * @param {Node} node The AST node to check.
+ * @param {SourceCode} sourceCode The source code object to get tokens.
+ * @returns {boolean} `true` if the node is parenthesized the given times.
+ */
+/**
+ * Check whether a given node is parenthesized or not.
+ * @param {Node} node The AST node to check.
+ * @param {SourceCode} sourceCode The source code object to get tokens.
+ * @returns {boolean} `true` if the node is parenthesized.
+ */
+function isParenthesized(
+ timesOrNode,
+ nodeOrSourceCode,
+ optionalSourceCode,
+) {
+ let times, node, sourceCode, maybeLeftParen, maybeRightParen;
+ if (typeof timesOrNode === "number") {
+ times = timesOrNode | 0;
+ node = nodeOrSourceCode;
+ sourceCode = optionalSourceCode;
+ if (!(times >= 1)) {
+ throw new TypeError("'times' should be a positive integer.")
+ }
+ } else {
+ times = 1;
+ node = timesOrNode;
+ sourceCode = nodeOrSourceCode;
+ }
+
+ if (
+ node == null ||
+ // `Program` can't be parenthesized
+ node.parent == null ||
+ // `CatchClause.param` can't be parenthesized, example `try {} catch (error) {}`
+ (node.parent.type === "CatchClause" && node.parent.param === node)
+ ) {
+ return false
+ }
+
+ maybeLeftParen = maybeRightParen = node;
+ do {
+ maybeLeftParen = sourceCode.getTokenBefore(maybeLeftParen);
+ maybeRightParen = sourceCode.getTokenAfter(maybeRightParen);
+ } while (
+ maybeLeftParen != null &&
+ maybeRightParen != null &&
+ isOpeningParenToken(maybeLeftParen) &&
+ isClosingParenToken(maybeRightParen) &&
+ // Avoid false positive such as `if (a) {}`
+ maybeLeftParen !== getParentSyntaxParen(node, sourceCode) &&
+ --times > 0
+ )
+
+ return times === 0
+}
+
+/**
+ * @author Toru Nagashima
+ * See LICENSE file in root directory for full license.
+ */
+
+const placeholder = /\$(?:[$&`']|[1-9][0-9]?)/gu;
+
+/** @type {WeakMap} */
+const internal = new WeakMap();
+
+/**
+ * Check whether a given character is escaped or not.
+ * @param {string} str The string to check.
+ * @param {number} index The location of the character to check.
+ * @returns {boolean} `true` if the character is escaped.
+ */
+function isEscaped(str, index) {
+ let escaped = false;
+ for (let i = index - 1; i >= 0 && str.charCodeAt(i) === 0x5c; --i) {
+ escaped = !escaped;
+ }
+ return escaped
+}
+
+/**
+ * Replace a given string by a given matcher.
+ * @param {PatternMatcher} matcher The pattern matcher.
+ * @param {string} str The string to be replaced.
+ * @param {string} replacement The new substring to replace each matched part.
+ * @returns {string} The replaced string.
+ */
+function replaceS(matcher, str, replacement) {
+ const chunks = [];
+ let index = 0;
+
+ /** @type {RegExpExecArray} */
+ let match = null;
+
+ /**
+ * @param {string} key The placeholder.
+ * @returns {string} The replaced string.
+ */
+ function replacer(key) {
+ switch (key) {
+ case "$$":
+ return "$"
+ case "$&":
+ return match[0]
+ case "$`":
+ return str.slice(0, match.index)
+ case "$'":
+ return str.slice(match.index + match[0].length)
+ default: {
+ const i = key.slice(1);
+ if (i in match) {
+ return match[i]
+ }
+ return key
+ }
+ }
+ }
+
+ for (match of matcher.execAll(str)) {
+ chunks.push(str.slice(index, match.index));
+ chunks.push(replacement.replace(placeholder, replacer));
+ index = match.index + match[0].length;
+ }
+ chunks.push(str.slice(index));
+
+ return chunks.join("")
+}
+
+/**
+ * Replace a given string by a given matcher.
+ * @param {PatternMatcher} matcher The pattern matcher.
+ * @param {string} str The string to be replaced.
+ * @param {(...strs[])=>string} replace The function to replace each matched part.
+ * @returns {string} The replaced string.
+ */
+function replaceF(matcher, str, replace) {
+ const chunks = [];
+ let index = 0;
+
+ for (const match of matcher.execAll(str)) {
+ chunks.push(str.slice(index, match.index));
+ chunks.push(String(replace(...match, match.index, match.input)));
+ index = match.index + match[0].length;
+ }
+ chunks.push(str.slice(index));
+
+ return chunks.join("")
+}
+
+/**
+ * The class to find patterns as considering escape sequences.
+ */
+class PatternMatcher {
+ /**
+ * Initialize this matcher.
+ * @param {RegExp} pattern The pattern to match.
+ * @param {{escaped:boolean}} options The options.
+ */
+ constructor(pattern, { escaped = false } = {}) {
+ if (!(pattern instanceof RegExp)) {
+ throw new TypeError("'pattern' should be a RegExp instance.")
+ }
+ if (!pattern.flags.includes("g")) {
+ throw new Error("'pattern' should contains 'g' flag.")
+ }
+
+ internal.set(this, {
+ pattern: new RegExp(pattern.source, pattern.flags),
+ escaped: Boolean(escaped),
+ });
+ }
+
+ /**
+ * Find the pattern in a given string.
+ * @param {string} str The string to find.
+ * @returns {IterableIterator} The iterator which iterate the matched information.
+ */
+ *execAll(str) {
+ const { pattern, escaped } = internal.get(this);
+ let match = null;
+ let lastIndex = 0;
+
+ pattern.lastIndex = 0;
+ while ((match = pattern.exec(str)) != null) {
+ if (escaped || !isEscaped(str, match.index)) {
+ lastIndex = pattern.lastIndex;
+ yield match;
+ pattern.lastIndex = lastIndex;
+ }
+ }
+ }
+
+ /**
+ * Check whether the pattern is found in a given string.
+ * @param {string} str The string to check.
+ * @returns {boolean} `true` if the pattern was found in the string.
+ */
+ test(str) {
+ const it = this.execAll(str);
+ const ret = it.next();
+ return !ret.done
+ }
+
+ /**
+ * Replace a given string.
+ * @param {string} str The string to be replaced.
+ * @param {(string|((...strs:string[])=>string))} replacer The string or function to replace. This is the same as the 2nd argument of `String.prototype.replace`.
+ * @returns {string} The replaced string.
+ */
+ [Symbol.replace](str, replacer) {
+ return typeof replacer === "function"
+ ? replaceF(this, String(str), replacer)
+ : replaceS(this, String(str), String(replacer))
+ }
+}
+
+const IMPORT_TYPE = /^(?:Import|Export(?:All|Default|Named))Declaration$/u;
+const has = Function.call.bind(Object.hasOwnProperty);
+
+const READ = Symbol("read");
+const CALL = Symbol("call");
+const CONSTRUCT = Symbol("construct");
+const ESM = Symbol("esm");
+
+const requireCall = { require: { [CALL]: true } };
+
+/**
+ * Check whether a given variable is modified or not.
+ * @param {Variable} variable The variable to check.
+ * @returns {boolean} `true` if the variable is modified.
+ */
+function isModifiedGlobal(variable) {
+ return (
+ variable == null ||
+ variable.defs.length !== 0 ||
+ variable.references.some((r) => r.isWrite())
+ )
+}
+
+/**
+ * Check if the value of a given node is passed through to the parent syntax as-is.
+ * For example, `a` and `b` in (`a || b` and `c ? a : b`) are passed through.
+ * @param {Node} node A node to check.
+ * @returns {boolean} `true` if the node is passed through.
+ */
+function isPassThrough(node) {
+ const parent = node.parent;
+
+ switch (parent && parent.type) {
+ case "ConditionalExpression":
+ return parent.consequent === node || parent.alternate === node
+ case "LogicalExpression":
+ return true
+ case "SequenceExpression":
+ return parent.expressions[parent.expressions.length - 1] === node
+ case "ChainExpression":
+ return true
+
+ default:
+ return false
+ }
+}
+
+/**
+ * The reference tracker.
+ */
+class ReferenceTracker {
+ /**
+ * Initialize this tracker.
+ * @param {Scope} globalScope The global scope.
+ * @param {object} [options] The options.
+ * @param {"legacy"|"strict"} [options.mode="strict"] The mode to determine the ImportDeclaration's behavior for CJS modules.
+ * @param {string[]} [options.globalObjectNames=["global","globalThis","self","window"]] The variable names for Global Object.
+ */
+ constructor(
+ globalScope,
+ {
+ mode = "strict",
+ globalObjectNames = ["global", "globalThis", "self", "window"],
+ } = {},
+ ) {
+ this.variableStack = [];
+ this.globalScope = globalScope;
+ this.mode = mode;
+ this.globalObjectNames = globalObjectNames.slice(0);
+ }
+
+ /**
+ * Iterate the references of global variables.
+ * @param {object} traceMap The trace map.
+ * @returns {IterableIterator<{node:Node,path:string[],type:symbol,info:any}>} The iterator to iterate references.
+ */
+ *iterateGlobalReferences(traceMap) {
+ for (const key of Object.keys(traceMap)) {
+ const nextTraceMap = traceMap[key];
+ const path = [key];
+ const variable = this.globalScope.set.get(key);
+
+ if (isModifiedGlobal(variable)) {
+ continue
+ }
+
+ yield* this._iterateVariableReferences(
+ variable,
+ path,
+ nextTraceMap,
+ true,
+ );
+ }
+
+ for (const key of this.globalObjectNames) {
+ const path = [];
+ const variable = this.globalScope.set.get(key);
+
+ if (isModifiedGlobal(variable)) {
+ continue
+ }
+
+ yield* this._iterateVariableReferences(
+ variable,
+ path,
+ traceMap,
+ false,
+ );
+ }
+ }
+
+ /**
+ * Iterate the references of CommonJS modules.
+ * @param {object} traceMap The trace map.
+ * @returns {IterableIterator<{node:Node,path:string[],type:symbol,info:any}>} The iterator to iterate references.
+ */
+ *iterateCjsReferences(traceMap) {
+ for (const { node } of this.iterateGlobalReferences(requireCall)) {
+ const key = getStringIfConstant(node.arguments[0]);
+ if (key == null || !has(traceMap, key)) {
+ continue
+ }
+
+ const nextTraceMap = traceMap[key];
+ const path = [key];
+
+ if (nextTraceMap[READ]) {
+ yield {
+ node,
+ path,
+ type: READ,
+ info: nextTraceMap[READ],
+ };
+ }
+ yield* this._iteratePropertyReferences(node, path, nextTraceMap);
+ }
+ }
+
+ /**
+ * Iterate the references of ES modules.
+ * @param {object} traceMap The trace map.
+ * @returns {IterableIterator<{node:Node,path:string[],type:symbol,info:any}>} The iterator to iterate references.
+ */
+ *iterateEsmReferences(traceMap) {
+ const programNode = this.globalScope.block;
+
+ for (const node of programNode.body) {
+ if (!IMPORT_TYPE.test(node.type) || node.source == null) {
+ continue
+ }
+ const moduleId = node.source.value;
+
+ if (!has(traceMap, moduleId)) {
+ continue
+ }
+ const nextTraceMap = traceMap[moduleId];
+ const path = [moduleId];
+
+ if (nextTraceMap[READ]) {
+ yield { node, path, type: READ, info: nextTraceMap[READ] };
+ }
+
+ if (node.type === "ExportAllDeclaration") {
+ for (const key of Object.keys(nextTraceMap)) {
+ const exportTraceMap = nextTraceMap[key];
+ if (exportTraceMap[READ]) {
+ yield {
+ node,
+ path: path.concat(key),
+ type: READ,
+ info: exportTraceMap[READ],
+ };
+ }
+ }
+ } else {
+ for (const specifier of node.specifiers) {
+ const esm = has(nextTraceMap, ESM);
+ const it = this._iterateImportReferences(
+ specifier,
+ path,
+ esm
+ ? nextTraceMap
+ : this.mode === "legacy"
+ ? { default: nextTraceMap, ...nextTraceMap }
+ : { default: nextTraceMap },
+ );
+
+ if (esm) {
+ yield* it;
+ } else {
+ for (const report of it) {
+ report.path = report.path.filter(exceptDefault);
+ if (
+ report.path.length >= 2 ||
+ report.type !== READ
+ ) {
+ yield report;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * Iterate the references for a given variable.
+ * @param {Variable} variable The variable to iterate that references.
+ * @param {string[]} path The current path.
+ * @param {object} traceMap The trace map.
+ * @param {boolean} shouldReport = The flag to report those references.
+ * @returns {IterableIterator<{node:Node,path:string[],type:symbol,info:any}>} The iterator to iterate references.
+ */
+ *_iterateVariableReferences(variable, path, traceMap, shouldReport) {
+ if (this.variableStack.includes(variable)) {
+ return
+ }
+ this.variableStack.push(variable);
+ try {
+ for (const reference of variable.references) {
+ if (!reference.isRead()) {
+ continue
+ }
+ const node = reference.identifier;
+
+ if (shouldReport && traceMap[READ]) {
+ yield { node, path, type: READ, info: traceMap[READ] };
+ }
+ yield* this._iteratePropertyReferences(node, path, traceMap);
+ }
+ } finally {
+ this.variableStack.pop();
+ }
+ }
+
+ /**
+ * Iterate the references for a given AST node.
+ * @param rootNode The AST node to iterate references.
+ * @param {string[]} path The current path.
+ * @param {object} traceMap The trace map.
+ * @returns {IterableIterator<{node:Node,path:string[],type:symbol,info:any}>} The iterator to iterate references.
+ */
+ //eslint-disable-next-line complexity
+ *_iteratePropertyReferences(rootNode, path, traceMap) {
+ let node = rootNode;
+ while (isPassThrough(node)) {
+ node = node.parent;
+ }
+
+ const parent = node.parent;
+ if (parent.type === "MemberExpression") {
+ if (parent.object === node) {
+ const key = getPropertyName(parent);
+ if (key == null || !has(traceMap, key)) {
+ return
+ }
+
+ path = path.concat(key); //eslint-disable-line no-param-reassign
+ const nextTraceMap = traceMap[key];
+ if (nextTraceMap[READ]) {
+ yield {
+ node: parent,
+ path,
+ type: READ,
+ info: nextTraceMap[READ],
+ };
+ }
+ yield* this._iteratePropertyReferences(
+ parent,
+ path,
+ nextTraceMap,
+ );
+ }
+ return
+ }
+ if (parent.type === "CallExpression") {
+ if (parent.callee === node && traceMap[CALL]) {
+ yield { node: parent, path, type: CALL, info: traceMap[CALL] };
+ }
+ return
+ }
+ if (parent.type === "NewExpression") {
+ if (parent.callee === node && traceMap[CONSTRUCT]) {
+ yield {
+ node: parent,
+ path,
+ type: CONSTRUCT,
+ info: traceMap[CONSTRUCT],
+ };
+ }
+ return
+ }
+ if (parent.type === "AssignmentExpression") {
+ if (parent.right === node) {
+ yield* this._iterateLhsReferences(parent.left, path, traceMap);
+ yield* this._iteratePropertyReferences(parent, path, traceMap);
+ }
+ return
+ }
+ if (parent.type === "AssignmentPattern") {
+ if (parent.right === node) {
+ yield* this._iterateLhsReferences(parent.left, path, traceMap);
+ }
+ return
+ }
+ if (parent.type === "VariableDeclarator") {
+ if (parent.init === node) {
+ yield* this._iterateLhsReferences(parent.id, path, traceMap);
+ }
+ }
+ }
+
+ /**
+ * Iterate the references for a given Pattern node.
+ * @param {Node} patternNode The Pattern node to iterate references.
+ * @param {string[]} path The current path.
+ * @param {object} traceMap The trace map.
+ * @returns {IterableIterator<{node:Node,path:string[],type:symbol,info:any}>} The iterator to iterate references.
+ */
+ *_iterateLhsReferences(patternNode, path, traceMap) {
+ if (patternNode.type === "Identifier") {
+ const variable = findVariable(this.globalScope, patternNode);
+ if (variable != null) {
+ yield* this._iterateVariableReferences(
+ variable,
+ path,
+ traceMap,
+ false,
+ );
+ }
+ return
+ }
+ if (patternNode.type === "ObjectPattern") {
+ for (const property of patternNode.properties) {
+ const key = getPropertyName(property);
+
+ if (key == null || !has(traceMap, key)) {
+ continue
+ }
+
+ const nextPath = path.concat(key);
+ const nextTraceMap = traceMap[key];
+ if (nextTraceMap[READ]) {
+ yield {
+ node: property,
+ path: nextPath,
+ type: READ,
+ info: nextTraceMap[READ],
+ };
+ }
+ yield* this._iterateLhsReferences(
+ property.value,
+ nextPath,
+ nextTraceMap,
+ );
+ }
+ return
+ }
+ if (patternNode.type === "AssignmentPattern") {
+ yield* this._iterateLhsReferences(patternNode.left, path, traceMap);
+ }
+ }
+
+ /**
+ * Iterate the references for a given ModuleSpecifier node.
+ * @param {Node} specifierNode The ModuleSpecifier node to iterate references.
+ * @param {string[]} path The current path.
+ * @param {object} traceMap The trace map.
+ * @returns {IterableIterator<{node:Node,path:string[],type:symbol,info:any}>} The iterator to iterate references.
+ */
+ *_iterateImportReferences(specifierNode, path, traceMap) {
+ const type = specifierNode.type;
+
+ if (type === "ImportSpecifier" || type === "ImportDefaultSpecifier") {
+ const key =
+ type === "ImportDefaultSpecifier"
+ ? "default"
+ : specifierNode.imported.name;
+ if (!has(traceMap, key)) {
+ return
+ }
+
+ path = path.concat(key); //eslint-disable-line no-param-reassign
+ const nextTraceMap = traceMap[key];
+ if (nextTraceMap[READ]) {
+ yield {
+ node: specifierNode,
+ path,
+ type: READ,
+ info: nextTraceMap[READ],
+ };
+ }
+ yield* this._iterateVariableReferences(
+ findVariable(this.globalScope, specifierNode.local),
+ path,
+ nextTraceMap,
+ false,
+ );
+
+ return
+ }
+
+ if (type === "ImportNamespaceSpecifier") {
+ yield* this._iterateVariableReferences(
+ findVariable(this.globalScope, specifierNode.local),
+ path,
+ traceMap,
+ false,
+ );
+ return
+ }
+
+ if (type === "ExportSpecifier") {
+ const key = specifierNode.local.name;
+ if (!has(traceMap, key)) {
+ return
+ }
+
+ path = path.concat(key); //eslint-disable-line no-param-reassign
+ const nextTraceMap = traceMap[key];
+ if (nextTraceMap[READ]) {
+ yield {
+ node: specifierNode,
+ path,
+ type: READ,
+ info: nextTraceMap[READ],
+ };
+ }
+ }
+ }
+}
+
+ReferenceTracker.READ = READ;
+ReferenceTracker.CALL = CALL;
+ReferenceTracker.CONSTRUCT = CONSTRUCT;
+ReferenceTracker.ESM = ESM;
+
+/**
+ * This is a predicate function for Array#filter.
+ * @param {string} name A name part.
+ * @param {number} index The index of the name.
+ * @returns {boolean} `false` if it's default.
+ */
+function exceptDefault(name, index) {
+ return !(index === 1 && name === "default")
+}
+
+var index = {
+ CALL,
+ CONSTRUCT,
+ ESM,
+ findVariable,
+ getFunctionHeadLocation,
+ getFunctionNameWithKind,
+ getInnermostScope,
+ getPropertyName,
+ getStaticValue,
+ getStringIfConstant,
+ hasSideEffect,
+ isArrowToken,
+ isClosingBraceToken,
+ isClosingBracketToken,
+ isClosingParenToken,
+ isColonToken,
+ isCommaToken,
+ isCommentToken,
+ isNotArrowToken,
+ isNotClosingBraceToken,
+ isNotClosingBracketToken,
+ isNotClosingParenToken,
+ isNotColonToken,
+ isNotCommaToken,
+ isNotCommentToken,
+ isNotOpeningBraceToken,
+ isNotOpeningBracketToken,
+ isNotOpeningParenToken,
+ isNotSemicolonToken,
+ isOpeningBraceToken,
+ isOpeningBracketToken,
+ isOpeningParenToken,
+ isParenthesized,
+ isSemicolonToken,
+ PatternMatcher,
+ READ,
+ ReferenceTracker,
+};
+
+export { CALL, CONSTRUCT, ESM, PatternMatcher, READ, ReferenceTracker, index as default, findVariable, getFunctionHeadLocation, getFunctionNameWithKind, getInnermostScope, getPropertyName, getStaticValue, getStringIfConstant, hasSideEffect, isArrowToken, isClosingBraceToken, isClosingBracketToken, isClosingParenToken, isColonToken, isCommaToken, isCommentToken, isNotArrowToken, isNotClosingBraceToken, isNotClosingBracketToken, isNotClosingParenToken, isNotColonToken, isNotCommaToken, isNotCommentToken, isNotOpeningBraceToken, isNotOpeningBracketToken, isNotOpeningParenToken, isNotSemicolonToken, isOpeningBraceToken, isOpeningBracketToken, isOpeningParenToken, isParenthesized, isSemicolonToken };
+//# sourceMappingURL=index.mjs.map
diff --git a/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint-community/eslint-utils/index.mjs.map b/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint-community/eslint-utils/index.mjs.map
new file mode 100644
index 0000000..24ffb8e
--- /dev/null
+++ b/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint-community/eslint-utils/index.mjs.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.mjs","sources":["src/get-innermost-scope.mjs","src/find-variable.mjs","src/token-predicate.mjs","src/get-function-head-location.mjs","src/get-static-value.mjs","src/get-string-if-constant.mjs","src/get-property-name.mjs","src/get-function-name-with-kind.mjs","src/has-side-effect.mjs","src/is-parenthesized.mjs","src/pattern-matcher.mjs","src/reference-tracker.mjs","src/index.mjs"],"sourcesContent":["/**\n * Get the innermost scope which contains a given location.\n * @param {Scope} initialScope The initial scope to search.\n * @param {Node} node The location to search.\n * @returns {Scope} The innermost scope.\n */\nexport function getInnermostScope(initialScope, node) {\n const location = node.range[0]\n\n let scope = initialScope\n let found = false\n do {\n found = false\n for (const childScope of scope.childScopes) {\n const range = childScope.block.range\n\n if (range[0] <= location && location < range[1]) {\n scope = childScope\n found = true\n break\n }\n }\n } while (found)\n\n return scope\n}\n","import { getInnermostScope } from \"./get-innermost-scope.mjs\"\n\n/**\n * Find the variable of a given name.\n * @param {Scope} initialScope The scope to start finding.\n * @param {string|Node} nameOrNode The variable name to find. If this is a Node object then it should be an Identifier node.\n * @returns {Variable|null} The found variable or null.\n */\nexport function findVariable(initialScope, nameOrNode) {\n let name = \"\"\n let scope = initialScope\n\n if (typeof nameOrNode === \"string\") {\n name = nameOrNode\n } else {\n name = nameOrNode.name\n scope = getInnermostScope(scope, nameOrNode)\n }\n\n while (scope != null) {\n const variable = scope.set.get(name)\n if (variable != null) {\n return variable\n }\n scope = scope.upper\n }\n\n return null\n}\n","/**\n * Negate the result of `this` calling.\n * @param {Token} token The token to check.\n * @returns {boolean} `true` if the result of `this(token)` is `false`.\n */\nfunction negate0(token) {\n return !this(token) //eslint-disable-line no-invalid-this\n}\n\n/**\n * Creates the negate function of the given function.\n * @param {function(Token):boolean} f - The function to negate.\n * @returns {function(Token):boolean} Negated function.\n */\nfunction negate(f) {\n return negate0.bind(f)\n}\n\n/**\n * Checks if the given token is a PunctuatorToken with the given value\n * @param {Token} token - The token to check.\n * @param {string} value - The value to check.\n * @returns {boolean} `true` if the token is a PunctuatorToken with the given value.\n */\nfunction isPunctuatorTokenWithValue(token, value) {\n return token.type === \"Punctuator\" && token.value === value\n}\n\n/**\n * Checks if the given token is an arrow token or not.\n * @param {Token} token - The token to check.\n * @returns {boolean} `true` if the token is an arrow token.\n */\nexport function isArrowToken(token) {\n return isPunctuatorTokenWithValue(token, \"=>\")\n}\n\n/**\n * Checks if the given token is a comma token or not.\n * @param {Token} token - The token to check.\n * @returns {boolean} `true` if the token is a comma token.\n */\nexport function isCommaToken(token) {\n return isPunctuatorTokenWithValue(token, \",\")\n}\n\n/**\n * Checks if the given token is a semicolon token or not.\n * @param {Token} token - The token to check.\n * @returns {boolean} `true` if the token is a semicolon token.\n */\nexport function isSemicolonToken(token) {\n return isPunctuatorTokenWithValue(token, \";\")\n}\n\n/**\n * Checks if the given token is a colon token or not.\n * @param {Token} token - The token to check.\n * @returns {boolean} `true` if the token is a colon token.\n */\nexport function isColonToken(token) {\n return isPunctuatorTokenWithValue(token, \":\")\n}\n\n/**\n * Checks if the given token is an opening parenthesis token or not.\n * @param {Token} token - The token to check.\n * @returns {boolean} `true` if the token is an opening parenthesis token.\n */\nexport function isOpeningParenToken(token) {\n return isPunctuatorTokenWithValue(token, \"(\")\n}\n\n/**\n * Checks if the given token is a closing parenthesis token or not.\n * @param {Token} token - The token to check.\n * @returns {boolean} `true` if the token is a closing parenthesis token.\n */\nexport function isClosingParenToken(token) {\n return isPunctuatorTokenWithValue(token, \")\")\n}\n\n/**\n * Checks if the given token is an opening square bracket token or not.\n * @param {Token} token - The token to check.\n * @returns {boolean} `true` if the token is an opening square bracket token.\n */\nexport function isOpeningBracketToken(token) {\n return isPunctuatorTokenWithValue(token, \"[\")\n}\n\n/**\n * Checks if the given token is a closing square bracket token or not.\n * @param {Token} token - The token to check.\n * @returns {boolean} `true` if the token is a closing square bracket token.\n */\nexport function isClosingBracketToken(token) {\n return isPunctuatorTokenWithValue(token, \"]\")\n}\n\n/**\n * Checks if the given token is an opening brace token or not.\n * @param {Token} token - The token to check.\n * @returns {boolean} `true` if the token is an opening brace token.\n */\nexport function isOpeningBraceToken(token) {\n return isPunctuatorTokenWithValue(token, \"{\")\n}\n\n/**\n * Checks if the given token is a closing brace token or not.\n * @param {Token} token - The token to check.\n * @returns {boolean} `true` if the token is a closing brace token.\n */\nexport function isClosingBraceToken(token) {\n return isPunctuatorTokenWithValue(token, \"}\")\n}\n\n/**\n * Checks if the given token is a comment token or not.\n * @param {Token} token - The token to check.\n * @returns {boolean} `true` if the token is a comment token.\n */\nexport function isCommentToken(token) {\n return [\"Block\", \"Line\", \"Shebang\"].includes(token.type)\n}\n\nexport const isNotArrowToken = negate(isArrowToken)\nexport const isNotCommaToken = negate(isCommaToken)\nexport const isNotSemicolonToken = negate(isSemicolonToken)\nexport const isNotColonToken = negate(isColonToken)\nexport const isNotOpeningParenToken = negate(isOpeningParenToken)\nexport const isNotClosingParenToken = negate(isClosingParenToken)\nexport const isNotOpeningBracketToken = negate(isOpeningBracketToken)\nexport const isNotClosingBracketToken = negate(isClosingBracketToken)\nexport const isNotOpeningBraceToken = negate(isOpeningBraceToken)\nexport const isNotClosingBraceToken = negate(isClosingBraceToken)\nexport const isNotCommentToken = negate(isCommentToken)\n","import { isArrowToken, isOpeningParenToken } from \"./token-predicate.mjs\"\n\n/**\n * Get the `(` token of the given function node.\n * @param {Node} node - The function node to get.\n * @param {SourceCode} sourceCode - The source code object to get tokens.\n * @returns {Token} `(` token.\n */\nfunction getOpeningParenOfParams(node, sourceCode) {\n return node.id\n ? sourceCode.getTokenAfter(node.id, isOpeningParenToken)\n : sourceCode.getFirstToken(node, isOpeningParenToken)\n}\n\n/**\n * Get the location of the given function node for reporting.\n * @param {Node} node - The function node to get.\n * @param {SourceCode} sourceCode - The source code object to get tokens.\n * @returns {string} The location of the function node for reporting.\n */\nexport function getFunctionHeadLocation(node, sourceCode) {\n const parent = node.parent\n let start = null\n let end = null\n\n if (node.type === \"ArrowFunctionExpression\") {\n const arrowToken = sourceCode.getTokenBefore(node.body, isArrowToken)\n\n start = arrowToken.loc.start\n end = arrowToken.loc.end\n } else if (\n parent.type === \"Property\" ||\n parent.type === \"MethodDefinition\" ||\n parent.type === \"PropertyDefinition\"\n ) {\n start = parent.loc.start\n end = getOpeningParenOfParams(node, sourceCode).loc.start\n } else {\n start = node.loc.start\n end = getOpeningParenOfParams(node, sourceCode).loc.start\n }\n\n return {\n start: { ...start },\n end: { ...end },\n }\n}\n","/* globals globalThis, global, self, window */\n\nimport { findVariable } from \"./find-variable.mjs\"\n\nconst globalObject =\n typeof globalThis !== \"undefined\"\n ? globalThis\n : typeof self !== \"undefined\"\n ? self\n : typeof window !== \"undefined\"\n ? window\n : typeof global !== \"undefined\"\n ? global\n : {}\n\nconst builtinNames = Object.freeze(\n new Set([\n \"Array\",\n \"ArrayBuffer\",\n \"BigInt\",\n \"BigInt64Array\",\n \"BigUint64Array\",\n \"Boolean\",\n \"DataView\",\n \"Date\",\n \"decodeURI\",\n \"decodeURIComponent\",\n \"encodeURI\",\n \"encodeURIComponent\",\n \"escape\",\n \"Float32Array\",\n \"Float64Array\",\n \"Function\",\n \"Infinity\",\n \"Int16Array\",\n \"Int32Array\",\n \"Int8Array\",\n \"isFinite\",\n \"isNaN\",\n \"isPrototypeOf\",\n \"JSON\",\n \"Map\",\n \"Math\",\n \"NaN\",\n \"Number\",\n \"Object\",\n \"parseFloat\",\n \"parseInt\",\n \"Promise\",\n \"Proxy\",\n \"Reflect\",\n \"RegExp\",\n \"Set\",\n \"String\",\n \"Symbol\",\n \"Uint16Array\",\n \"Uint32Array\",\n \"Uint8Array\",\n \"Uint8ClampedArray\",\n \"undefined\",\n \"unescape\",\n \"WeakMap\",\n \"WeakSet\",\n ]),\n)\nconst callAllowed = new Set(\n [\n Array.isArray,\n Array.of,\n Array.prototype.at,\n Array.prototype.concat,\n Array.prototype.entries,\n Array.prototype.every,\n Array.prototype.filter,\n Array.prototype.find,\n Array.prototype.findIndex,\n Array.prototype.flat,\n Array.prototype.includes,\n Array.prototype.indexOf,\n Array.prototype.join,\n Array.prototype.keys,\n Array.prototype.lastIndexOf,\n Array.prototype.slice,\n Array.prototype.some,\n Array.prototype.toString,\n Array.prototype.values,\n typeof BigInt === \"function\" ? BigInt : undefined,\n Boolean,\n Date,\n Date.parse,\n decodeURI,\n decodeURIComponent,\n encodeURI,\n encodeURIComponent,\n escape,\n isFinite,\n isNaN,\n isPrototypeOf,\n Map,\n Map.prototype.entries,\n Map.prototype.get,\n Map.prototype.has,\n Map.prototype.keys,\n Map.prototype.values,\n ...Object.getOwnPropertyNames(Math)\n .filter((k) => k !== \"random\")\n .map((k) => Math[k])\n .filter((f) => typeof f === \"function\"),\n Number,\n Number.isFinite,\n Number.isNaN,\n Number.parseFloat,\n Number.parseInt,\n Number.prototype.toExponential,\n Number.prototype.toFixed,\n Number.prototype.toPrecision,\n Number.prototype.toString,\n Object,\n Object.entries,\n Object.is,\n Object.isExtensible,\n Object.isFrozen,\n Object.isSealed,\n Object.keys,\n Object.values,\n parseFloat,\n parseInt,\n RegExp,\n Set,\n Set.prototype.entries,\n Set.prototype.has,\n Set.prototype.keys,\n Set.prototype.values,\n String,\n String.fromCharCode,\n String.fromCodePoint,\n String.raw,\n String.prototype.at,\n String.prototype.charAt,\n String.prototype.charCodeAt,\n String.prototype.codePointAt,\n String.prototype.concat,\n String.prototype.endsWith,\n String.prototype.includes,\n String.prototype.indexOf,\n String.prototype.lastIndexOf,\n String.prototype.normalize,\n String.prototype.padEnd,\n String.prototype.padStart,\n String.prototype.slice,\n String.prototype.startsWith,\n String.prototype.substr,\n String.prototype.substring,\n String.prototype.toLowerCase,\n String.prototype.toString,\n String.prototype.toUpperCase,\n String.prototype.trim,\n String.prototype.trimEnd,\n String.prototype.trimLeft,\n String.prototype.trimRight,\n String.prototype.trimStart,\n Symbol.for,\n Symbol.keyFor,\n unescape,\n ].filter((f) => typeof f === \"function\"),\n)\nconst callPassThrough = new Set([\n Object.freeze,\n Object.preventExtensions,\n Object.seal,\n])\n\n/** @type {ReadonlyArray]>} */\nconst getterAllowed = [\n [Map, new Set([\"size\"])],\n [\n RegExp,\n new Set([\n \"dotAll\",\n \"flags\",\n \"global\",\n \"hasIndices\",\n \"ignoreCase\",\n \"multiline\",\n \"source\",\n \"sticky\",\n \"unicode\",\n ]),\n ],\n [Set, new Set([\"size\"])],\n]\n\n/**\n * Get the property descriptor.\n * @param {object} object The object to get.\n * @param {string|number|symbol} name The property name to get.\n */\nfunction getPropertyDescriptor(object, name) {\n let x = object\n while ((typeof x === \"object\" || typeof x === \"function\") && x !== null) {\n const d = Object.getOwnPropertyDescriptor(x, name)\n if (d) {\n return d\n }\n x = Object.getPrototypeOf(x)\n }\n return null\n}\n\n/**\n * Check if a property is getter or not.\n * @param {object} object The object to check.\n * @param {string|number|symbol} name The property name to check.\n */\nfunction isGetter(object, name) {\n const d = getPropertyDescriptor(object, name)\n return d != null && d.get != null\n}\n\n/**\n * Get the element values of a given node list.\n * @param {Node[]} nodeList The node list to get values.\n * @param {Scope|undefined} initialScope The initial scope to find variables.\n * @returns {any[]|null} The value list if all nodes are constant. Otherwise, null.\n */\nfunction getElementValues(nodeList, initialScope) {\n const valueList = []\n\n for (let i = 0; i < nodeList.length; ++i) {\n const elementNode = nodeList[i]\n\n if (elementNode == null) {\n valueList.length = i + 1\n } else if (elementNode.type === \"SpreadElement\") {\n const argument = getStaticValueR(elementNode.argument, initialScope)\n if (argument == null) {\n return null\n }\n valueList.push(...argument.value)\n } else {\n const element = getStaticValueR(elementNode, initialScope)\n if (element == null) {\n return null\n }\n valueList.push(element.value)\n }\n }\n\n return valueList\n}\n\n/**\n * Returns whether the given variable is never written to after initialization.\n * @param {import(\"eslint\").Scope.Variable} variable\n * @returns {boolean}\n */\nfunction isEffectivelyConst(variable) {\n const refs = variable.references\n\n const inits = refs.filter((r) => r.init).length\n const reads = refs.filter((r) => r.isReadOnly()).length\n if (inits === 1 && reads + inits === refs.length) {\n // there is only one init and all other references only read\n return true\n }\n return false\n}\n\nconst operations = Object.freeze({\n ArrayExpression(node, initialScope) {\n const elements = getElementValues(node.elements, initialScope)\n return elements != null ? { value: elements } : null\n },\n\n AssignmentExpression(node, initialScope) {\n if (node.operator === \"=\") {\n return getStaticValueR(node.right, initialScope)\n }\n return null\n },\n\n //eslint-disable-next-line complexity\n BinaryExpression(node, initialScope) {\n if (node.operator === \"in\" || node.operator === \"instanceof\") {\n // Not supported.\n return null\n }\n\n const left = getStaticValueR(node.left, initialScope)\n const right = getStaticValueR(node.right, initialScope)\n if (left != null && right != null) {\n switch (node.operator) {\n case \"==\":\n return { value: left.value == right.value } //eslint-disable-line eqeqeq\n case \"!=\":\n return { value: left.value != right.value } //eslint-disable-line eqeqeq\n case \"===\":\n return { value: left.value === right.value }\n case \"!==\":\n return { value: left.value !== right.value }\n case \"<\":\n return { value: left.value < right.value }\n case \"<=\":\n return { value: left.value <= right.value }\n case \">\":\n return { value: left.value > right.value }\n case \">=\":\n return { value: left.value >= right.value }\n case \"<<\":\n return { value: left.value << right.value }\n case \">>\":\n return { value: left.value >> right.value }\n case \">>>\":\n return { value: left.value >>> right.value }\n case \"+\":\n return { value: left.value + right.value }\n case \"-\":\n return { value: left.value - right.value }\n case \"*\":\n return { value: left.value * right.value }\n case \"/\":\n return { value: left.value / right.value }\n case \"%\":\n return { value: left.value % right.value }\n case \"**\":\n return { value: left.value ** right.value }\n case \"|\":\n return { value: left.value | right.value }\n case \"^\":\n return { value: left.value ^ right.value }\n case \"&\":\n return { value: left.value & right.value }\n\n // no default\n }\n }\n\n return null\n },\n\n CallExpression(node, initialScope) {\n const calleeNode = node.callee\n const args = getElementValues(node.arguments, initialScope)\n\n if (args != null) {\n if (calleeNode.type === \"MemberExpression\") {\n if (calleeNode.property.type === \"PrivateIdentifier\") {\n return null\n }\n const object = getStaticValueR(calleeNode.object, initialScope)\n if (object != null) {\n if (\n object.value == null &&\n (object.optional || node.optional)\n ) {\n return { value: undefined, optional: true }\n }\n const property = getStaticPropertyNameValue(\n calleeNode,\n initialScope,\n )\n\n if (property != null) {\n const receiver = object.value\n const methodName = property.value\n if (callAllowed.has(receiver[methodName])) {\n return { value: receiver[methodName](...args) }\n }\n if (callPassThrough.has(receiver[methodName])) {\n return { value: args[0] }\n }\n }\n }\n } else {\n const callee = getStaticValueR(calleeNode, initialScope)\n if (callee != null) {\n if (callee.value == null && node.optional) {\n return { value: undefined, optional: true }\n }\n const func = callee.value\n if (callAllowed.has(func)) {\n return { value: func(...args) }\n }\n if (callPassThrough.has(func)) {\n return { value: args[0] }\n }\n }\n }\n }\n\n return null\n },\n\n ConditionalExpression(node, initialScope) {\n const test = getStaticValueR(node.test, initialScope)\n if (test != null) {\n return test.value\n ? getStaticValueR(node.consequent, initialScope)\n : getStaticValueR(node.alternate, initialScope)\n }\n return null\n },\n\n ExpressionStatement(node, initialScope) {\n return getStaticValueR(node.expression, initialScope)\n },\n\n Identifier(node, initialScope) {\n if (initialScope != null) {\n const variable = findVariable(initialScope, node)\n\n // Built-in globals.\n if (\n variable != null &&\n variable.defs.length === 0 &&\n builtinNames.has(variable.name) &&\n variable.name in globalObject\n ) {\n return { value: globalObject[variable.name] }\n }\n\n // Constants.\n if (variable != null && variable.defs.length === 1) {\n const def = variable.defs[0]\n if (\n def.parent &&\n def.type === \"Variable\" &&\n (def.parent.kind === \"const\" ||\n isEffectivelyConst(variable)) &&\n // TODO(mysticatea): don't support destructuring here.\n def.node.id.type === \"Identifier\"\n ) {\n return getStaticValueR(def.node.init, initialScope)\n }\n }\n }\n return null\n },\n\n Literal(node) {\n //istanbul ignore if : this is implementation-specific behavior.\n if ((node.regex != null || node.bigint != null) && node.value == null) {\n // It was a RegExp/BigInt literal, but Node.js didn't support it.\n return null\n }\n return { value: node.value }\n },\n\n LogicalExpression(node, initialScope) {\n const left = getStaticValueR(node.left, initialScope)\n if (left != null) {\n if (\n (node.operator === \"||\" && Boolean(left.value) === true) ||\n (node.operator === \"&&\" && Boolean(left.value) === false) ||\n (node.operator === \"??\" && left.value != null)\n ) {\n return left\n }\n\n const right = getStaticValueR(node.right, initialScope)\n if (right != null) {\n return right\n }\n }\n\n return null\n },\n\n MemberExpression(node, initialScope) {\n if (node.property.type === \"PrivateIdentifier\") {\n return null\n }\n const object = getStaticValueR(node.object, initialScope)\n if (object != null) {\n if (object.value == null && (object.optional || node.optional)) {\n return { value: undefined, optional: true }\n }\n const property = getStaticPropertyNameValue(node, initialScope)\n\n if (property != null) {\n if (!isGetter(object.value, property.value)) {\n return { value: object.value[property.value] }\n }\n\n for (const [classFn, allowed] of getterAllowed) {\n if (\n object.value instanceof classFn &&\n allowed.has(property.value)\n ) {\n return { value: object.value[property.value] }\n }\n }\n }\n }\n return null\n },\n\n ChainExpression(node, initialScope) {\n const expression = getStaticValueR(node.expression, initialScope)\n if (expression != null) {\n return { value: expression.value }\n }\n return null\n },\n\n NewExpression(node, initialScope) {\n const callee = getStaticValueR(node.callee, initialScope)\n const args = getElementValues(node.arguments, initialScope)\n\n if (callee != null && args != null) {\n const Func = callee.value\n if (callAllowed.has(Func)) {\n return { value: new Func(...args) }\n }\n }\n\n return null\n },\n\n ObjectExpression(node, initialScope) {\n const object = {}\n\n for (const propertyNode of node.properties) {\n if (propertyNode.type === \"Property\") {\n if (propertyNode.kind !== \"init\") {\n return null\n }\n const key = getStaticPropertyNameValue(\n propertyNode,\n initialScope,\n )\n const value = getStaticValueR(propertyNode.value, initialScope)\n if (key == null || value == null) {\n return null\n }\n object[key.value] = value.value\n } else if (\n propertyNode.type === \"SpreadElement\" ||\n propertyNode.type === \"ExperimentalSpreadProperty\"\n ) {\n const argument = getStaticValueR(\n propertyNode.argument,\n initialScope,\n )\n if (argument == null) {\n return null\n }\n Object.assign(object, argument.value)\n } else {\n return null\n }\n }\n\n return { value: object }\n },\n\n SequenceExpression(node, initialScope) {\n const last = node.expressions[node.expressions.length - 1]\n return getStaticValueR(last, initialScope)\n },\n\n TaggedTemplateExpression(node, initialScope) {\n const tag = getStaticValueR(node.tag, initialScope)\n const expressions = getElementValues(\n node.quasi.expressions,\n initialScope,\n )\n\n if (tag != null && expressions != null) {\n const func = tag.value\n const strings = node.quasi.quasis.map((q) => q.value.cooked)\n strings.raw = node.quasi.quasis.map((q) => q.value.raw)\n\n if (func === String.raw) {\n return { value: func(strings, ...expressions) }\n }\n }\n\n return null\n },\n\n TemplateLiteral(node, initialScope) {\n const expressions = getElementValues(node.expressions, initialScope)\n if (expressions != null) {\n let value = node.quasis[0].value.cooked\n for (let i = 0; i < expressions.length; ++i) {\n value += expressions[i]\n value += node.quasis[i + 1].value.cooked\n }\n return { value }\n }\n return null\n },\n\n UnaryExpression(node, initialScope) {\n if (node.operator === \"delete\") {\n // Not supported.\n return null\n }\n if (node.operator === \"void\") {\n return { value: undefined }\n }\n\n const arg = getStaticValueR(node.argument, initialScope)\n if (arg != null) {\n switch (node.operator) {\n case \"-\":\n return { value: -arg.value }\n case \"+\":\n return { value: +arg.value } //eslint-disable-line no-implicit-coercion\n case \"!\":\n return { value: !arg.value }\n case \"~\":\n return { value: ~arg.value }\n case \"typeof\":\n return { value: typeof arg.value }\n\n // no default\n }\n }\n\n return null\n },\n})\n\n/**\n * Get the value of a given node if it's a static value.\n * @param {Node} node The node to get.\n * @param {Scope|undefined} initialScope The scope to start finding variable.\n * @returns {{value:any}|{value:undefined,optional?:true}|null} The static value of the node, or `null`.\n */\nfunction getStaticValueR(node, initialScope) {\n if (node != null && Object.hasOwnProperty.call(operations, node.type)) {\n return operations[node.type](node, initialScope)\n }\n return null\n}\n\n/**\n * Get the static value of property name from a MemberExpression node or a Property node.\n * @param {Node} node The node to get.\n * @param {Scope} [initialScope] The scope to start finding variable. Optional. If the node is a computed property node and this scope was given, this checks the computed property name by the `getStringIfConstant` function with the scope, and returns the value of it.\n * @returns {{value:any}|{value:undefined,optional?:true}|null} The static value of the property name of the node, or `null`.\n */\nfunction getStaticPropertyNameValue(node, initialScope) {\n const nameNode = node.type === \"Property\" ? node.key : node.property\n\n if (node.computed) {\n return getStaticValueR(nameNode, initialScope)\n }\n\n if (nameNode.type === \"Identifier\") {\n return { value: nameNode.name }\n }\n\n if (nameNode.type === \"Literal\") {\n if (nameNode.bigint) {\n return { value: nameNode.bigint }\n }\n return { value: String(nameNode.value) }\n }\n\n return null\n}\n\n/**\n * Get the value of a given node if it's a static value.\n * @param {Node} node The node to get.\n * @param {Scope} [initialScope] The scope to start finding variable. Optional. If this scope was given, this tries to resolve identifier references which are in the given node as much as possible.\n * @returns {{value:any}|{value:undefined,optional?:true}|null} The static value of the node, or `null`.\n */\nexport function getStaticValue(node, initialScope = null) {\n try {\n return getStaticValueR(node, initialScope)\n } catch (_error) {\n return null\n }\n}\n","import { getStaticValue } from \"./get-static-value.mjs\"\n\n/**\n * Get the value of a given node if it's a literal or a template literal.\n * @param {Node} node The node to get.\n * @param {Scope} [initialScope] The scope to start finding variable. Optional. If the node is an Identifier node and this scope was given, this checks the variable of the identifier, and returns the value of it if the variable is a constant.\n * @returns {string|null} The value of the node, or `null`.\n */\nexport function getStringIfConstant(node, initialScope = null) {\n // Handle the literals that the platform doesn't support natively.\n if (node && node.type === \"Literal\" && node.value === null) {\n if (node.regex) {\n return `/${node.regex.pattern}/${node.regex.flags}`\n }\n if (node.bigint) {\n return node.bigint\n }\n }\n\n const evaluated = getStaticValue(node, initialScope)\n return evaluated && String(evaluated.value)\n}\n","import { getStringIfConstant } from \"./get-string-if-constant.mjs\"\n\n/**\n * Get the property name from a MemberExpression node or a Property node.\n * @param {Node} node The node to get.\n * @param {Scope} [initialScope] The scope to start finding variable. Optional. If the node is a computed property node and this scope was given, this checks the computed property name by the `getStringIfConstant` function with the scope, and returns the value of it.\n * @returns {string|null} The property name of the node.\n */\nexport function getPropertyName(node, initialScope) {\n switch (node.type) {\n case \"MemberExpression\":\n if (node.computed) {\n return getStringIfConstant(node.property, initialScope)\n }\n if (node.property.type === \"PrivateIdentifier\") {\n return null\n }\n return node.property.name\n\n case \"Property\":\n case \"MethodDefinition\":\n case \"PropertyDefinition\":\n if (node.computed) {\n return getStringIfConstant(node.key, initialScope)\n }\n if (node.key.type === \"Literal\") {\n return String(node.key.value)\n }\n if (node.key.type === \"PrivateIdentifier\") {\n return null\n }\n return node.key.name\n\n // no default\n }\n\n return null\n}\n","import { getPropertyName } from \"./get-property-name.mjs\"\n\n/**\n * Get the name and kind of the given function node.\n * @param {ASTNode} node - The function node to get.\n * @param {SourceCode} [sourceCode] The source code object to get the code of computed property keys.\n * @returns {string} The name and kind of the function node.\n */\n// eslint-disable-next-line complexity\nexport function getFunctionNameWithKind(node, sourceCode) {\n const parent = node.parent\n const tokens = []\n const isObjectMethod = parent.type === \"Property\" && parent.value === node\n const isClassMethod =\n parent.type === \"MethodDefinition\" && parent.value === node\n const isClassFieldMethod =\n parent.type === \"PropertyDefinition\" && parent.value === node\n\n // Modifiers.\n if (isClassMethod || isClassFieldMethod) {\n if (parent.static) {\n tokens.push(\"static\")\n }\n if (parent.key.type === \"PrivateIdentifier\") {\n tokens.push(\"private\")\n }\n }\n if (node.async) {\n tokens.push(\"async\")\n }\n if (node.generator) {\n tokens.push(\"generator\")\n }\n\n // Kinds.\n if (isObjectMethod || isClassMethod) {\n if (parent.kind === \"constructor\") {\n return \"constructor\"\n }\n if (parent.kind === \"get\") {\n tokens.push(\"getter\")\n } else if (parent.kind === \"set\") {\n tokens.push(\"setter\")\n } else {\n tokens.push(\"method\")\n }\n } else if (isClassFieldMethod) {\n tokens.push(\"method\")\n } else {\n if (node.type === \"ArrowFunctionExpression\") {\n tokens.push(\"arrow\")\n }\n tokens.push(\"function\")\n }\n\n // Names.\n if (isObjectMethod || isClassMethod || isClassFieldMethod) {\n if (parent.key.type === \"PrivateIdentifier\") {\n tokens.push(`#${parent.key.name}`)\n } else {\n const name = getPropertyName(parent)\n if (name) {\n tokens.push(`'${name}'`)\n } else if (sourceCode) {\n const keyText = sourceCode.getText(parent.key)\n if (!keyText.includes(\"\\n\")) {\n tokens.push(`[${keyText}]`)\n }\n }\n }\n } else if (node.id) {\n tokens.push(`'${node.id.name}'`)\n } else if (\n parent.type === \"VariableDeclarator\" &&\n parent.id &&\n parent.id.type === \"Identifier\"\n ) {\n tokens.push(`'${parent.id.name}'`)\n } else if (\n (parent.type === \"AssignmentExpression\" ||\n parent.type === \"AssignmentPattern\") &&\n parent.left &&\n parent.left.type === \"Identifier\"\n ) {\n tokens.push(`'${parent.left.name}'`)\n } else if (\n parent.type === \"ExportDefaultDeclaration\" &&\n parent.declaration === node\n ) {\n tokens.push(\"'default'\")\n }\n\n return tokens.join(\" \")\n}\n","import { getKeys, KEYS } from \"eslint-visitor-keys\"\n\nconst typeConversionBinaryOps = Object.freeze(\n new Set([\n \"==\",\n \"!=\",\n \"<\",\n \"<=\",\n \">\",\n \">=\",\n \"<<\",\n \">>\",\n \">>>\",\n \"+\",\n \"-\",\n \"*\",\n \"/\",\n \"%\",\n \"|\",\n \"^\",\n \"&\",\n \"in\",\n ]),\n)\nconst typeConversionUnaryOps = Object.freeze(new Set([\"-\", \"+\", \"!\", \"~\"]))\n\n/**\n * Check whether the given value is an ASTNode or not.\n * @param {any} x The value to check.\n * @returns {boolean} `true` if the value is an ASTNode.\n */\nfunction isNode(x) {\n return x !== null && typeof x === \"object\" && typeof x.type === \"string\"\n}\n\nconst visitor = Object.freeze(\n Object.assign(Object.create(null), {\n $visit(node, options, visitorKeys) {\n const { type } = node\n\n if (typeof this[type] === \"function\") {\n return this[type](node, options, visitorKeys)\n }\n\n return this.$visitChildren(node, options, visitorKeys)\n },\n\n $visitChildren(node, options, visitorKeys) {\n const { type } = node\n\n for (const key of visitorKeys[type] || getKeys(node)) {\n const value = node[key]\n\n if (Array.isArray(value)) {\n for (const element of value) {\n if (\n isNode(element) &&\n this.$visit(element, options, visitorKeys)\n ) {\n return true\n }\n }\n } else if (\n isNode(value) &&\n this.$visit(value, options, visitorKeys)\n ) {\n return true\n }\n }\n\n return false\n },\n\n ArrowFunctionExpression() {\n return false\n },\n AssignmentExpression() {\n return true\n },\n AwaitExpression() {\n return true\n },\n BinaryExpression(node, options, visitorKeys) {\n if (\n options.considerImplicitTypeConversion &&\n typeConversionBinaryOps.has(node.operator) &&\n (node.left.type !== \"Literal\" || node.right.type !== \"Literal\")\n ) {\n return true\n }\n return this.$visitChildren(node, options, visitorKeys)\n },\n CallExpression() {\n return true\n },\n FunctionExpression() {\n return false\n },\n ImportExpression() {\n return true\n },\n MemberExpression(node, options, visitorKeys) {\n if (options.considerGetters) {\n return true\n }\n if (\n options.considerImplicitTypeConversion &&\n node.computed &&\n node.property.type !== \"Literal\"\n ) {\n return true\n }\n return this.$visitChildren(node, options, visitorKeys)\n },\n MethodDefinition(node, options, visitorKeys) {\n if (\n options.considerImplicitTypeConversion &&\n node.computed &&\n node.key.type !== \"Literal\"\n ) {\n return true\n }\n return this.$visitChildren(node, options, visitorKeys)\n },\n NewExpression() {\n return true\n },\n Property(node, options, visitorKeys) {\n if (\n options.considerImplicitTypeConversion &&\n node.computed &&\n node.key.type !== \"Literal\"\n ) {\n return true\n }\n return this.$visitChildren(node, options, visitorKeys)\n },\n PropertyDefinition(node, options, visitorKeys) {\n if (\n options.considerImplicitTypeConversion &&\n node.computed &&\n node.key.type !== \"Literal\"\n ) {\n return true\n }\n return this.$visitChildren(node, options, visitorKeys)\n },\n UnaryExpression(node, options, visitorKeys) {\n if (node.operator === \"delete\") {\n return true\n }\n if (\n options.considerImplicitTypeConversion &&\n typeConversionUnaryOps.has(node.operator) &&\n node.argument.type !== \"Literal\"\n ) {\n return true\n }\n return this.$visitChildren(node, options, visitorKeys)\n },\n UpdateExpression() {\n return true\n },\n YieldExpression() {\n return true\n },\n }),\n)\n\n/**\n * Check whether a given node has any side effect or not.\n * @param {Node} node The node to get.\n * @param {SourceCode} sourceCode The source code object.\n * @param {object} [options] The option object.\n * @param {boolean} [options.considerGetters=false] If `true` then it considers member accesses as the node which has side effects.\n * @param {boolean} [options.considerImplicitTypeConversion=false] If `true` then it considers implicit type conversion as the node which has side effects.\n * @param {object} [options.visitorKeys=KEYS] The keys to traverse nodes. Use `context.getSourceCode().visitorKeys`.\n * @returns {boolean} `true` if the node has a certain side effect.\n */\nexport function hasSideEffect(\n node,\n sourceCode,\n { considerGetters = false, considerImplicitTypeConversion = false } = {},\n) {\n return visitor.$visit(\n node,\n { considerGetters, considerImplicitTypeConversion },\n sourceCode.visitorKeys || KEYS,\n )\n}\n","import { isClosingParenToken, isOpeningParenToken } from \"./token-predicate.mjs\"\n\n/**\n * Get the left parenthesis of the parent node syntax if it exists.\n * E.g., `if (a) {}` then the `(`.\n * @param {Node} node The AST node to check.\n * @param {SourceCode} sourceCode The source code object to get tokens.\n * @returns {Token|null} The left parenthesis of the parent node syntax\n */\nfunction getParentSyntaxParen(node, sourceCode) {\n const parent = node.parent\n\n switch (parent.type) {\n case \"CallExpression\":\n case \"NewExpression\":\n if (parent.arguments.length === 1 && parent.arguments[0] === node) {\n return sourceCode.getTokenAfter(\n parent.callee,\n isOpeningParenToken,\n )\n }\n return null\n\n case \"DoWhileStatement\":\n if (parent.test === node) {\n return sourceCode.getTokenAfter(\n parent.body,\n isOpeningParenToken,\n )\n }\n return null\n\n case \"IfStatement\":\n case \"WhileStatement\":\n if (parent.test === node) {\n return sourceCode.getFirstToken(parent, 1)\n }\n return null\n\n case \"ImportExpression\":\n if (parent.source === node) {\n return sourceCode.getFirstToken(parent, 1)\n }\n return null\n\n case \"SwitchStatement\":\n if (parent.discriminant === node) {\n return sourceCode.getFirstToken(parent, 1)\n }\n return null\n\n case \"WithStatement\":\n if (parent.object === node) {\n return sourceCode.getFirstToken(parent, 1)\n }\n return null\n\n default:\n return null\n }\n}\n\n/**\n * Check whether a given node is parenthesized or not.\n * @param {number} times The number of parantheses.\n * @param {Node} node The AST node to check.\n * @param {SourceCode} sourceCode The source code object to get tokens.\n * @returns {boolean} `true` if the node is parenthesized the given times.\n */\n/**\n * Check whether a given node is parenthesized or not.\n * @param {Node} node The AST node to check.\n * @param {SourceCode} sourceCode The source code object to get tokens.\n * @returns {boolean} `true` if the node is parenthesized.\n */\nexport function isParenthesized(\n timesOrNode,\n nodeOrSourceCode,\n optionalSourceCode,\n) {\n let times, node, sourceCode, maybeLeftParen, maybeRightParen\n if (typeof timesOrNode === \"number\") {\n times = timesOrNode | 0\n node = nodeOrSourceCode\n sourceCode = optionalSourceCode\n if (!(times >= 1)) {\n throw new TypeError(\"'times' should be a positive integer.\")\n }\n } else {\n times = 1\n node = timesOrNode\n sourceCode = nodeOrSourceCode\n }\n\n if (\n node == null ||\n // `Program` can't be parenthesized\n node.parent == null ||\n // `CatchClause.param` can't be parenthesized, example `try {} catch (error) {}`\n (node.parent.type === \"CatchClause\" && node.parent.param === node)\n ) {\n return false\n }\n\n maybeLeftParen = maybeRightParen = node\n do {\n maybeLeftParen = sourceCode.getTokenBefore(maybeLeftParen)\n maybeRightParen = sourceCode.getTokenAfter(maybeRightParen)\n } while (\n maybeLeftParen != null &&\n maybeRightParen != null &&\n isOpeningParenToken(maybeLeftParen) &&\n isClosingParenToken(maybeRightParen) &&\n // Avoid false positive such as `if (a) {}`\n maybeLeftParen !== getParentSyntaxParen(node, sourceCode) &&\n --times > 0\n )\n\n return times === 0\n}\n","/**\n * @author Toru Nagashima \n * See LICENSE file in root directory for full license.\n */\n\nconst placeholder = /\\$(?:[$&`']|[1-9][0-9]?)/gu\n\n/** @type {WeakMap} */\nconst internal = new WeakMap()\n\n/**\n * Check whether a given character is escaped or not.\n * @param {string} str The string to check.\n * @param {number} index The location of the character to check.\n * @returns {boolean} `true` if the character is escaped.\n */\nfunction isEscaped(str, index) {\n let escaped = false\n for (let i = index - 1; i >= 0 && str.charCodeAt(i) === 0x5c; --i) {\n escaped = !escaped\n }\n return escaped\n}\n\n/**\n * Replace a given string by a given matcher.\n * @param {PatternMatcher} matcher The pattern matcher.\n * @param {string} str The string to be replaced.\n * @param {string} replacement The new substring to replace each matched part.\n * @returns {string} The replaced string.\n */\nfunction replaceS(matcher, str, replacement) {\n const chunks = []\n let index = 0\n\n /** @type {RegExpExecArray} */\n let match = null\n\n /**\n * @param {string} key The placeholder.\n * @returns {string} The replaced string.\n */\n function replacer(key) {\n switch (key) {\n case \"$$\":\n return \"$\"\n case \"$&\":\n return match[0]\n case \"$`\":\n return str.slice(0, match.index)\n case \"$'\":\n return str.slice(match.index + match[0].length)\n default: {\n const i = key.slice(1)\n if (i in match) {\n return match[i]\n }\n return key\n }\n }\n }\n\n for (match of matcher.execAll(str)) {\n chunks.push(str.slice(index, match.index))\n chunks.push(replacement.replace(placeholder, replacer))\n index = match.index + match[0].length\n }\n chunks.push(str.slice(index))\n\n return chunks.join(\"\")\n}\n\n/**\n * Replace a given string by a given matcher.\n * @param {PatternMatcher} matcher The pattern matcher.\n * @param {string} str The string to be replaced.\n * @param {(...strs[])=>string} replace The function to replace each matched part.\n * @returns {string} The replaced string.\n */\nfunction replaceF(matcher, str, replace) {\n const chunks = []\n let index = 0\n\n for (const match of matcher.execAll(str)) {\n chunks.push(str.slice(index, match.index))\n chunks.push(String(replace(...match, match.index, match.input)))\n index = match.index + match[0].length\n }\n chunks.push(str.slice(index))\n\n return chunks.join(\"\")\n}\n\n/**\n * The class to find patterns as considering escape sequences.\n */\nexport class PatternMatcher {\n /**\n * Initialize this matcher.\n * @param {RegExp} pattern The pattern to match.\n * @param {{escaped:boolean}} options The options.\n */\n constructor(pattern, { escaped = false } = {}) {\n if (!(pattern instanceof RegExp)) {\n throw new TypeError(\"'pattern' should be a RegExp instance.\")\n }\n if (!pattern.flags.includes(\"g\")) {\n throw new Error(\"'pattern' should contains 'g' flag.\")\n }\n\n internal.set(this, {\n pattern: new RegExp(pattern.source, pattern.flags),\n escaped: Boolean(escaped),\n })\n }\n\n /**\n * Find the pattern in a given string.\n * @param {string} str The string to find.\n * @returns {IterableIterator} The iterator which iterate the matched information.\n */\n *execAll(str) {\n const { pattern, escaped } = internal.get(this)\n let match = null\n let lastIndex = 0\n\n pattern.lastIndex = 0\n while ((match = pattern.exec(str)) != null) {\n if (escaped || !isEscaped(str, match.index)) {\n lastIndex = pattern.lastIndex\n yield match\n pattern.lastIndex = lastIndex\n }\n }\n }\n\n /**\n * Check whether the pattern is found in a given string.\n * @param {string} str The string to check.\n * @returns {boolean} `true` if the pattern was found in the string.\n */\n test(str) {\n const it = this.execAll(str)\n const ret = it.next()\n return !ret.done\n }\n\n /**\n * Replace a given string.\n * @param {string} str The string to be replaced.\n * @param {(string|((...strs:string[])=>string))} replacer The string or function to replace. This is the same as the 2nd argument of `String.prototype.replace`.\n * @returns {string} The replaced string.\n */\n [Symbol.replace](str, replacer) {\n return typeof replacer === \"function\"\n ? replaceF(this, String(str), replacer)\n : replaceS(this, String(str), String(replacer))\n }\n}\n","import { findVariable } from \"./find-variable.mjs\"\nimport { getPropertyName } from \"./get-property-name.mjs\"\nimport { getStringIfConstant } from \"./get-string-if-constant.mjs\"\n\nconst IMPORT_TYPE = /^(?:Import|Export(?:All|Default|Named))Declaration$/u\nconst has = Function.call.bind(Object.hasOwnProperty)\n\nexport const READ = Symbol(\"read\")\nexport const CALL = Symbol(\"call\")\nexport const CONSTRUCT = Symbol(\"construct\")\nexport const ESM = Symbol(\"esm\")\n\nconst requireCall = { require: { [CALL]: true } }\n\n/**\n * Check whether a given variable is modified or not.\n * @param {Variable} variable The variable to check.\n * @returns {boolean} `true` if the variable is modified.\n */\nfunction isModifiedGlobal(variable) {\n return (\n variable == null ||\n variable.defs.length !== 0 ||\n variable.references.some((r) => r.isWrite())\n )\n}\n\n/**\n * Check if the value of a given node is passed through to the parent syntax as-is.\n * For example, `a` and `b` in (`a || b` and `c ? a : b`) are passed through.\n * @param {Node} node A node to check.\n * @returns {boolean} `true` if the node is passed through.\n */\nfunction isPassThrough(node) {\n const parent = node.parent\n\n switch (parent && parent.type) {\n case \"ConditionalExpression\":\n return parent.consequent === node || parent.alternate === node\n case \"LogicalExpression\":\n return true\n case \"SequenceExpression\":\n return parent.expressions[parent.expressions.length - 1] === node\n case \"ChainExpression\":\n return true\n\n default:\n return false\n }\n}\n\n/**\n * The reference tracker.\n */\nexport class ReferenceTracker {\n /**\n * Initialize this tracker.\n * @param {Scope} globalScope The global scope.\n * @param {object} [options] The options.\n * @param {\"legacy\"|\"strict\"} [options.mode=\"strict\"] The mode to determine the ImportDeclaration's behavior for CJS modules.\n * @param {string[]} [options.globalObjectNames=[\"global\",\"globalThis\",\"self\",\"window\"]] The variable names for Global Object.\n */\n constructor(\n globalScope,\n {\n mode = \"strict\",\n globalObjectNames = [\"global\", \"globalThis\", \"self\", \"window\"],\n } = {},\n ) {\n this.variableStack = []\n this.globalScope = globalScope\n this.mode = mode\n this.globalObjectNames = globalObjectNames.slice(0)\n }\n\n /**\n * Iterate the references of global variables.\n * @param {object} traceMap The trace map.\n * @returns {IterableIterator<{node:Node,path:string[],type:symbol,info:any}>} The iterator to iterate references.\n */\n *iterateGlobalReferences(traceMap) {\n for (const key of Object.keys(traceMap)) {\n const nextTraceMap = traceMap[key]\n const path = [key]\n const variable = this.globalScope.set.get(key)\n\n if (isModifiedGlobal(variable)) {\n continue\n }\n\n yield* this._iterateVariableReferences(\n variable,\n path,\n nextTraceMap,\n true,\n )\n }\n\n for (const key of this.globalObjectNames) {\n const path = []\n const variable = this.globalScope.set.get(key)\n\n if (isModifiedGlobal(variable)) {\n continue\n }\n\n yield* this._iterateVariableReferences(\n variable,\n path,\n traceMap,\n false,\n )\n }\n }\n\n /**\n * Iterate the references of CommonJS modules.\n * @param {object} traceMap The trace map.\n * @returns {IterableIterator<{node:Node,path:string[],type:symbol,info:any}>} The iterator to iterate references.\n */\n *iterateCjsReferences(traceMap) {\n for (const { node } of this.iterateGlobalReferences(requireCall)) {\n const key = getStringIfConstant(node.arguments[0])\n if (key == null || !has(traceMap, key)) {\n continue\n }\n\n const nextTraceMap = traceMap[key]\n const path = [key]\n\n if (nextTraceMap[READ]) {\n yield {\n node,\n path,\n type: READ,\n info: nextTraceMap[READ],\n }\n }\n yield* this._iteratePropertyReferences(node, path, nextTraceMap)\n }\n }\n\n /**\n * Iterate the references of ES modules.\n * @param {object} traceMap The trace map.\n * @returns {IterableIterator<{node:Node,path:string[],type:symbol,info:any}>} The iterator to iterate references.\n */\n *iterateEsmReferences(traceMap) {\n const programNode = this.globalScope.block\n\n for (const node of programNode.body) {\n if (!IMPORT_TYPE.test(node.type) || node.source == null) {\n continue\n }\n const moduleId = node.source.value\n\n if (!has(traceMap, moduleId)) {\n continue\n }\n const nextTraceMap = traceMap[moduleId]\n const path = [moduleId]\n\n if (nextTraceMap[READ]) {\n yield { node, path, type: READ, info: nextTraceMap[READ] }\n }\n\n if (node.type === \"ExportAllDeclaration\") {\n for (const key of Object.keys(nextTraceMap)) {\n const exportTraceMap = nextTraceMap[key]\n if (exportTraceMap[READ]) {\n yield {\n node,\n path: path.concat(key),\n type: READ,\n info: exportTraceMap[READ],\n }\n }\n }\n } else {\n for (const specifier of node.specifiers) {\n const esm = has(nextTraceMap, ESM)\n const it = this._iterateImportReferences(\n specifier,\n path,\n esm\n ? nextTraceMap\n : this.mode === \"legacy\"\n ? { default: nextTraceMap, ...nextTraceMap }\n : { default: nextTraceMap },\n )\n\n if (esm) {\n yield* it\n } else {\n for (const report of it) {\n report.path = report.path.filter(exceptDefault)\n if (\n report.path.length >= 2 ||\n report.type !== READ\n ) {\n yield report\n }\n }\n }\n }\n }\n }\n }\n\n /**\n * Iterate the references for a given variable.\n * @param {Variable} variable The variable to iterate that references.\n * @param {string[]} path The current path.\n * @param {object} traceMap The trace map.\n * @param {boolean} shouldReport = The flag to report those references.\n * @returns {IterableIterator<{node:Node,path:string[],type:symbol,info:any}>} The iterator to iterate references.\n */\n *_iterateVariableReferences(variable, path, traceMap, shouldReport) {\n if (this.variableStack.includes(variable)) {\n return\n }\n this.variableStack.push(variable)\n try {\n for (const reference of variable.references) {\n if (!reference.isRead()) {\n continue\n }\n const node = reference.identifier\n\n if (shouldReport && traceMap[READ]) {\n yield { node, path, type: READ, info: traceMap[READ] }\n }\n yield* this._iteratePropertyReferences(node, path, traceMap)\n }\n } finally {\n this.variableStack.pop()\n }\n }\n\n /**\n * Iterate the references for a given AST node.\n * @param rootNode The AST node to iterate references.\n * @param {string[]} path The current path.\n * @param {object} traceMap The trace map.\n * @returns {IterableIterator<{node:Node,path:string[],type:symbol,info:any}>} The iterator to iterate references.\n */\n //eslint-disable-next-line complexity\n *_iteratePropertyReferences(rootNode, path, traceMap) {\n let node = rootNode\n while (isPassThrough(node)) {\n node = node.parent\n }\n\n const parent = node.parent\n if (parent.type === \"MemberExpression\") {\n if (parent.object === node) {\n const key = getPropertyName(parent)\n if (key == null || !has(traceMap, key)) {\n return\n }\n\n path = path.concat(key) //eslint-disable-line no-param-reassign\n const nextTraceMap = traceMap[key]\n if (nextTraceMap[READ]) {\n yield {\n node: parent,\n path,\n type: READ,\n info: nextTraceMap[READ],\n }\n }\n yield* this._iteratePropertyReferences(\n parent,\n path,\n nextTraceMap,\n )\n }\n return\n }\n if (parent.type === \"CallExpression\") {\n if (parent.callee === node && traceMap[CALL]) {\n yield { node: parent, path, type: CALL, info: traceMap[CALL] }\n }\n return\n }\n if (parent.type === \"NewExpression\") {\n if (parent.callee === node && traceMap[CONSTRUCT]) {\n yield {\n node: parent,\n path,\n type: CONSTRUCT,\n info: traceMap[CONSTRUCT],\n }\n }\n return\n }\n if (parent.type === \"AssignmentExpression\") {\n if (parent.right === node) {\n yield* this._iterateLhsReferences(parent.left, path, traceMap)\n yield* this._iteratePropertyReferences(parent, path, traceMap)\n }\n return\n }\n if (parent.type === \"AssignmentPattern\") {\n if (parent.right === node) {\n yield* this._iterateLhsReferences(parent.left, path, traceMap)\n }\n return\n }\n if (parent.type === \"VariableDeclarator\") {\n if (parent.init === node) {\n yield* this._iterateLhsReferences(parent.id, path, traceMap)\n }\n }\n }\n\n /**\n * Iterate the references for a given Pattern node.\n * @param {Node} patternNode The Pattern node to iterate references.\n * @param {string[]} path The current path.\n * @param {object} traceMap The trace map.\n * @returns {IterableIterator<{node:Node,path:string[],type:symbol,info:any}>} The iterator to iterate references.\n */\n *_iterateLhsReferences(patternNode, path, traceMap) {\n if (patternNode.type === \"Identifier\") {\n const variable = findVariable(this.globalScope, patternNode)\n if (variable != null) {\n yield* this._iterateVariableReferences(\n variable,\n path,\n traceMap,\n false,\n )\n }\n return\n }\n if (patternNode.type === \"ObjectPattern\") {\n for (const property of patternNode.properties) {\n const key = getPropertyName(property)\n\n if (key == null || !has(traceMap, key)) {\n continue\n }\n\n const nextPath = path.concat(key)\n const nextTraceMap = traceMap[key]\n if (nextTraceMap[READ]) {\n yield {\n node: property,\n path: nextPath,\n type: READ,\n info: nextTraceMap[READ],\n }\n }\n yield* this._iterateLhsReferences(\n property.value,\n nextPath,\n nextTraceMap,\n )\n }\n return\n }\n if (patternNode.type === \"AssignmentPattern\") {\n yield* this._iterateLhsReferences(patternNode.left, path, traceMap)\n }\n }\n\n /**\n * Iterate the references for a given ModuleSpecifier node.\n * @param {Node} specifierNode The ModuleSpecifier node to iterate references.\n * @param {string[]} path The current path.\n * @param {object} traceMap The trace map.\n * @returns {IterableIterator<{node:Node,path:string[],type:symbol,info:any}>} The iterator to iterate references.\n */\n *_iterateImportReferences(specifierNode, path, traceMap) {\n const type = specifierNode.type\n\n if (type === \"ImportSpecifier\" || type === \"ImportDefaultSpecifier\") {\n const key =\n type === \"ImportDefaultSpecifier\"\n ? \"default\"\n : specifierNode.imported.name\n if (!has(traceMap, key)) {\n return\n }\n\n path = path.concat(key) //eslint-disable-line no-param-reassign\n const nextTraceMap = traceMap[key]\n if (nextTraceMap[READ]) {\n yield {\n node: specifierNode,\n path,\n type: READ,\n info: nextTraceMap[READ],\n }\n }\n yield* this._iterateVariableReferences(\n findVariable(this.globalScope, specifierNode.local),\n path,\n nextTraceMap,\n false,\n )\n\n return\n }\n\n if (type === \"ImportNamespaceSpecifier\") {\n yield* this._iterateVariableReferences(\n findVariable(this.globalScope, specifierNode.local),\n path,\n traceMap,\n false,\n )\n return\n }\n\n if (type === \"ExportSpecifier\") {\n const key = specifierNode.local.name\n if (!has(traceMap, key)) {\n return\n }\n\n path = path.concat(key) //eslint-disable-line no-param-reassign\n const nextTraceMap = traceMap[key]\n if (nextTraceMap[READ]) {\n yield {\n node: specifierNode,\n path,\n type: READ,\n info: nextTraceMap[READ],\n }\n }\n }\n }\n}\n\nReferenceTracker.READ = READ\nReferenceTracker.CALL = CALL\nReferenceTracker.CONSTRUCT = CONSTRUCT\nReferenceTracker.ESM = ESM\n\n/**\n * This is a predicate function for Array#filter.\n * @param {string} name A name part.\n * @param {number} index The index of the name.\n * @returns {boolean} `false` if it's default.\n */\nfunction exceptDefault(name, index) {\n return !(index === 1 && name === \"default\")\n}\n","import { findVariable } from \"./find-variable.mjs\"\nimport { getFunctionHeadLocation } from \"./get-function-head-location.mjs\"\nimport { getFunctionNameWithKind } from \"./get-function-name-with-kind.mjs\"\nimport { getInnermostScope } from \"./get-innermost-scope.mjs\"\nimport { getPropertyName } from \"./get-property-name.mjs\"\nimport { getStaticValue } from \"./get-static-value.mjs\"\nimport { getStringIfConstant } from \"./get-string-if-constant.mjs\"\nimport { hasSideEffect } from \"./has-side-effect.mjs\"\nimport { isParenthesized } from \"./is-parenthesized.mjs\"\nimport { PatternMatcher } from \"./pattern-matcher.mjs\"\nimport {\n CALL,\n CONSTRUCT,\n ESM,\n READ,\n ReferenceTracker,\n} from \"./reference-tracker.mjs\"\nimport {\n isArrowToken,\n isClosingBraceToken,\n isClosingBracketToken,\n isClosingParenToken,\n isColonToken,\n isCommaToken,\n isCommentToken,\n isNotArrowToken,\n isNotClosingBraceToken,\n isNotClosingBracketToken,\n isNotClosingParenToken,\n isNotColonToken,\n isNotCommaToken,\n isNotCommentToken,\n isNotOpeningBraceToken,\n isNotOpeningBracketToken,\n isNotOpeningParenToken,\n isNotSemicolonToken,\n isOpeningBraceToken,\n isOpeningBracketToken,\n isOpeningParenToken,\n isSemicolonToken,\n} from \"./token-predicate.mjs\"\n\nexport default {\n CALL,\n CONSTRUCT,\n ESM,\n findVariable,\n getFunctionHeadLocation,\n getFunctionNameWithKind,\n getInnermostScope,\n getPropertyName,\n getStaticValue,\n getStringIfConstant,\n hasSideEffect,\n isArrowToken,\n isClosingBraceToken,\n isClosingBracketToken,\n isClosingParenToken,\n isColonToken,\n isCommaToken,\n isCommentToken,\n isNotArrowToken,\n isNotClosingBraceToken,\n isNotClosingBracketToken,\n isNotClosingParenToken,\n isNotColonToken,\n isNotCommaToken,\n isNotCommentToken,\n isNotOpeningBraceToken,\n isNotOpeningBracketToken,\n isNotOpeningParenToken,\n isNotSemicolonToken,\n isOpeningBraceToken,\n isOpeningBracketToken,\n isOpeningParenToken,\n isParenthesized,\n isSemicolonToken,\n PatternMatcher,\n READ,\n ReferenceTracker,\n}\nexport {\n CALL,\n CONSTRUCT,\n ESM,\n findVariable,\n getFunctionHeadLocation,\n getFunctionNameWithKind,\n getInnermostScope,\n getPropertyName,\n getStaticValue,\n getStringIfConstant,\n hasSideEffect,\n isArrowToken,\n isClosingBraceToken,\n isClosingBracketToken,\n isClosingParenToken,\n isColonToken,\n isCommaToken,\n isCommentToken,\n isNotArrowToken,\n isNotClosingBraceToken,\n isNotClosingBracketToken,\n isNotClosingParenToken,\n isNotColonToken,\n isNotCommaToken,\n isNotCommentToken,\n isNotOpeningBraceToken,\n isNotOpeningBracketToken,\n isNotOpeningParenToken,\n isNotSemicolonToken,\n isOpeningBraceToken,\n isOpeningBracketToken,\n isOpeningParenToken,\n isParenthesized,\n isSemicolonToken,\n PatternMatcher,\n READ,\n ReferenceTracker,\n}\n"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint-community/eslint-utils/package.json b/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint-community/eslint-utils/package.json
new file mode 100644
index 0000000..c4ee587
--- /dev/null
+++ b/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint-community/eslint-utils/package.json
@@ -0,0 +1,73 @@
+{
+ "name": "@eslint-community/eslint-utils",
+ "version": "4.4.0",
+ "description": "Utilities for ESLint plugins.",
+ "keywords": [
+ "eslint"
+ ],
+ "homepage": "https://github.com/eslint-community/eslint-utils#readme",
+ "bugs": {
+ "url": "https://github.com/eslint-community/eslint-utils/issues"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/eslint-community/eslint-utils"
+ },
+ "license": "MIT",
+ "author": "Toru Nagashima",
+ "sideEffects": false,
+ "exports": {
+ ".": {
+ "import": "./index.mjs",
+ "require": "./index.js"
+ },
+ "./package.json": "./package.json"
+ },
+ "main": "index",
+ "module": "index.mjs",
+ "files": [
+ "index.*"
+ ],
+ "scripts": {
+ "prebuild": "npm run -s clean",
+ "build": "rollup -c",
+ "clean": "rimraf .nyc_output coverage index.*",
+ "coverage": "opener ./coverage/lcov-report/index.html",
+ "docs:build": "vitepress build docs",
+ "docs:watch": "vitepress dev docs",
+ "format": "npm run -s format:prettier -- --write",
+ "format:prettier": "prettier .",
+ "format:check": "npm run -s format:prettier -- --check",
+ "lint": "eslint .",
+ "test": "c8 mocha --reporter dot \"test/*.mjs\"",
+ "preversion": "npm test && npm run -s build",
+ "postversion": "git push && git push --tags",
+ "prewatch": "npm run -s clean",
+ "watch": "warun \"{src,test}/**/*.mjs\" -- npm run -s test:mocha"
+ },
+ "dependencies": {
+ "eslint-visitor-keys": "^3.3.0"
+ },
+ "devDependencies": {
+ "@eslint-community/eslint-plugin-mysticatea": "^15.2.0",
+ "c8": "^7.12.0",
+ "dot-prop": "^6.0.1",
+ "eslint": "^8.28.0",
+ "mocha": "^9.2.2",
+ "npm-run-all": "^4.1.5",
+ "opener": "^1.5.2",
+ "prettier": "2.8.4",
+ "rimraf": "^3.0.2",
+ "rollup": "^2.79.1",
+ "rollup-plugin-sourcemaps": "^0.6.3",
+ "semver": "^7.3.8",
+ "vitepress": "^1.0.0-alpha.40",
+ "warun": "^1.0.0"
+ },
+ "peerDependencies": {
+ "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ }
+}
diff --git a/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint-community/regexpp/LICENSE b/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint-community/regexpp/LICENSE
new file mode 100644
index 0000000..883ee1f
--- /dev/null
+++ b/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint-community/regexpp/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2018 Toru Nagashima
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint-community/regexpp/README.md b/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint-community/regexpp/README.md
new file mode 100644
index 0000000..9728af5
--- /dev/null
+++ b/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint-community/regexpp/README.md
@@ -0,0 +1,177 @@
+# @eslint-community/regexpp
+
+[![npm version](https://img.shields.io/npm/v/@eslint-community/regexpp.svg)](https://www.npmjs.com/package/@eslint-community/regexpp)
+[![Downloads/month](https://img.shields.io/npm/dm/@eslint-community/regexpp.svg)](http://www.npmtrends.com/@eslint-community/regexpp)
+[![Build Status](https://github.com/eslint-community/regexpp/workflows/CI/badge.svg)](https://github.com/eslint-community/regexpp/actions)
+[![codecov](https://codecov.io/gh/eslint-community/regexpp/branch/main/graph/badge.svg)](https://codecov.io/gh/eslint-community/regexpp)
+
+A regular expression parser for ECMAScript.
+
+## 💿 Installation
+
+```bash
+$ npm install @eslint-community/regexpp
+```
+
+- require Node@^12.0.0 || ^14.0.0 || >=16.0.0.
+
+## 📖 Usage
+
+```ts
+import {
+ AST,
+ RegExpParser,
+ RegExpValidator,
+ RegExpVisitor,
+ parseRegExpLiteral,
+ validateRegExpLiteral,
+ visitRegExpAST
+} from "@eslint-community/regexpp"
+```
+
+### parseRegExpLiteral(source, options?)
+
+Parse a given regular expression literal then make AST object.
+
+This is equivalent to `new RegExpParser(options).parseLiteral(source)`.
+
+- **Parameters:**
+ - `source` (`string | RegExp`) The source code to parse.
+ - `options?` ([`RegExpParser.Options`]) The options to parse.
+- **Return:**
+ - The AST of the regular expression.
+
+### validateRegExpLiteral(source, options?)
+
+Validate a given regular expression literal.
+
+This is equivalent to `new RegExpValidator(options).validateLiteral(source)`.
+
+- **Parameters:**
+ - `source` (`string`) The source code to validate.
+ - `options?` ([`RegExpValidator.Options`]) The options to validate.
+
+### visitRegExpAST(ast, handlers)
+
+Visit each node of a given AST.
+
+This is equivalent to `new RegExpVisitor(handlers).visit(ast)`.
+
+- **Parameters:**
+ - `ast` ([`AST.Node`]) The AST to visit.
+ - `handlers` ([`RegExpVisitor.Handlers`]) The callbacks.
+
+### RegExpParser
+
+#### new RegExpParser(options?)
+
+- **Parameters:**
+ - `options?` ([`RegExpParser.Options`]) The options to parse.
+
+#### parser.parseLiteral(source, start?, end?)
+
+Parse a regular expression literal.
+
+- **Parameters:**
+ - `source` (`string`) The source code to parse. E.g. `"/abc/g"`.
+ - `start?` (`number`) The start index in the source code. Default is `0`.
+ - `end?` (`number`) The end index in the source code. Default is `source.length`.
+- **Return:**
+ - The AST of the regular expression.
+
+#### parser.parsePattern(source, start?, end?, flags?)
+
+Parse a regular expression pattern.
+
+- **Parameters:**
+ - `source` (`string`) The source code to parse. E.g. `"abc"`.
+ - `start?` (`number`) The start index in the source code. Default is `0`.
+ - `end?` (`number`) The end index in the source code. Default is `source.length`.
+ - `flags?` (`{ unicode?: boolean, unicodeSets?: boolean }`) The flags to enable Unicode mode, and Unicode Set mode.
+- **Return:**
+ - The AST of the regular expression pattern.
+
+#### parser.parseFlags(source, start?, end?)
+
+Parse a regular expression flags.
+
+- **Parameters:**
+ - `source` (`string`) The source code to parse. E.g. `"gim"`.
+ - `start?` (`number`) The start index in the source code. Default is `0`.
+ - `end?` (`number`) The end index in the source code. Default is `source.length`.
+- **Return:**
+ - The AST of the regular expression flags.
+
+### RegExpValidator
+
+#### new RegExpValidator(options)
+
+- **Parameters:**
+ - `options` ([`RegExpValidator.Options`]) The options to validate.
+
+#### validator.validateLiteral(source, start, end)
+
+Validate a regular expression literal.
+
+- **Parameters:**
+ - `source` (`string`) The source code to validate.
+ - `start?` (`number`) The start index in the source code. Default is `0`.
+ - `end?` (`number`) The end index in the source code. Default is `source.length`.
+
+#### validator.validatePattern(source, start, end, flags)
+
+Validate a regular expression pattern.
+
+- **Parameters:**
+ - `source` (`string`) The source code to validate.
+ - `start?` (`number`) The start index in the source code. Default is `0`.
+ - `end?` (`number`) The end index in the source code. Default is `source.length`.
+ - `flags?` (`{ unicode?: boolean, unicodeSets?: boolean }`) The flags to enable Unicode mode, and Unicode Set mode.
+
+#### validator.validateFlags(source, start, end)
+
+Validate a regular expression flags.
+
+- **Parameters:**
+ - `source` (`string`) The source code to validate.
+ - `start?` (`number`) The start index in the source code. Default is `0`.
+ - `end?` (`number`) The end index in the source code. Default is `source.length`.
+
+### RegExpVisitor
+
+#### new RegExpVisitor(handlers)
+
+- **Parameters:**
+ - `handlers` ([`RegExpVisitor.Handlers`]) The callbacks.
+
+#### visitor.visit(ast)
+
+Validate a regular expression literal.
+
+- **Parameters:**
+ - `ast` ([`AST.Node`]) The AST to visit.
+
+## 📰 Changelog
+
+- [GitHub Releases](https://github.com/eslint-community/regexpp/releases)
+
+## 🍻 Contributing
+
+Welcome contributing!
+
+Please use GitHub's Issues/PRs.
+
+### Development Tools
+
+- `npm test` runs tests and measures coverage.
+- `npm run build` compiles TypeScript source code to `index.js`, `index.js.map`, and `index.d.ts`.
+- `npm run clean` removes the temporary files which are created by `npm test` and `npm run build`.
+- `npm run lint` runs ESLint.
+- `npm run update:test` updates test fixtures.
+- `npm run update:ids` updates `src/unicode/ids.ts`.
+- `npm run watch` runs tests with `--watch` option.
+
+[`AST.Node`]: src/ast.ts#L4
+[`RegExpParser.Options`]: src/parser.ts#L743
+[`RegExpValidator.Options`]: src/validator.ts#L220
+[`RegExpVisitor.Handlers`]: src/visitor.ts#L291
diff --git a/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint-community/regexpp/index.d.ts b/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint-community/regexpp/index.d.ts
new file mode 100644
index 0000000..7ce7edb
--- /dev/null
+++ b/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint-community/regexpp/index.d.ts
@@ -0,0 +1,1044 @@
+// Generated by dts-bundle v0.7.3
+
+declare module "@eslint-community/regexpp" {
+ import * as AST from "@eslint-community/regexpp/ast";
+ import { RegExpParser } from "@eslint-community/regexpp/parser";
+ import { RegExpValidator } from "@eslint-community/regexpp/validator";
+ import { RegExpVisitor } from "@eslint-community/regexpp/visitor";
+ export { AST, RegExpParser, RegExpValidator };
+ /**
+ * Parse a given regular expression literal then make AST object.
+ * @param source The source code to parse.
+ * @param options The options to parse.
+ * @returns The AST of the regular expression.
+ */
+ export function parseRegExpLiteral(
+ source: RegExp | string,
+ options?: RegExpParser.Options
+ ): AST.RegExpLiteral;
+ /**
+ * Validate a given regular expression literal.
+ * @param source The source code to validate.
+ * @param options The options to validate.
+ */
+ export function validateRegExpLiteral(
+ source: string,
+ options?: RegExpValidator.Options
+ ): void;
+ export function visitRegExpAST(
+ node: AST.Node,
+ handlers: RegExpVisitor.Handlers
+ ): void;
+}
+
+declare module "@eslint-community/regexpp/ast" {
+ /**
+ * The type which includes all nodes.
+ */
+ export type Node = BranchNode | LeafNode;
+ /**
+ * The type which includes all branch nodes.
+ */
+ export type BranchNode =
+ | Alternative
+ | CapturingGroup
+ | CharacterClass
+ | CharacterClassRange
+ | ClassIntersection
+ | ClassStringDisjunction
+ | ClassSubtraction
+ | ExpressionCharacterClass
+ | Group
+ | LookaroundAssertion
+ | Pattern
+ | Quantifier
+ | RegExpLiteral
+ | StringAlternative;
+ /**
+ * The type which includes all leaf nodes.
+ */
+ export type LeafNode =
+ | Backreference
+ | BoundaryAssertion
+ | Character
+ | CharacterSet
+ | Flags;
+ /**
+ * The type which includes all atom nodes.
+ */
+ export type Element = Assertion | QuantifiableElement | Quantifier;
+ /**
+ * The type which includes all atom nodes that Quantifier node can have as children.
+ */
+ export type QuantifiableElement =
+ | Backreference
+ | CapturingGroup
+ | Character
+ | CharacterClass
+ | CharacterSet
+ | ExpressionCharacterClass
+ | Group
+ | LookaheadAssertion;
+ /**
+ * The type which includes all character class atom nodes.
+ */
+ export type CharacterClassElement =
+ | ClassRangesCharacterClassElement
+ | UnicodeSetsCharacterClassElement;
+ export type ClassRangesCharacterClassElement =
+ | Character
+ | CharacterClassRange
+ | CharacterUnicodePropertyCharacterSet
+ | EscapeCharacterSet;
+ export type UnicodeSetsCharacterClassElement =
+ | Character
+ | CharacterClassRange
+ | ClassStringDisjunction
+ | EscapeCharacterSet
+ | ExpressionCharacterClass
+ | UnicodePropertyCharacterSet
+ | UnicodeSetsCharacterClass;
+ /**
+ * The type which defines common properties for all node types.
+ */
+ export interface NodeBase {
+ /** The node type. */
+ type: Node["type"];
+ /** The parent node. */
+ parent: Node["parent"];
+ /** The 0-based index that this node starts. */
+ start: number;
+ /** The 0-based index that this node ends. */
+ end: number;
+ /** The raw text of this node. */
+ raw: string;
+ }
+ /**
+ * The root node.
+ */
+ export interface RegExpLiteral extends NodeBase {
+ type: "RegExpLiteral";
+ parent: null;
+ pattern: Pattern;
+ flags: Flags;
+ }
+ /**
+ * The pattern.
+ */
+ export interface Pattern extends NodeBase {
+ type: "Pattern";
+ parent: RegExpLiteral | null;
+ alternatives: Alternative[];
+ }
+ /**
+ * The alternative.
+ * E.g. `a|b`
+ */
+ export interface Alternative extends NodeBase {
+ type: "Alternative";
+ parent: CapturingGroup | Group | LookaroundAssertion | Pattern;
+ elements: Element[];
+ }
+ /**
+ * The uncapturing group.
+ * E.g. `(?:ab)`
+ */
+ export interface Group extends NodeBase {
+ type: "Group";
+ parent: Alternative | Quantifier;
+ alternatives: Alternative[];
+ }
+ /**
+ * The capturing group.
+ * E.g. `(ab)`, `(?ab)`
+ */
+ export interface CapturingGroup extends NodeBase {
+ type: "CapturingGroup";
+ parent: Alternative | Quantifier;
+ name: string | null;
+ alternatives: Alternative[];
+ references: Backreference[];
+ }
+ /**
+ * The lookaround assertion.
+ */
+ export type LookaroundAssertion = LookaheadAssertion | LookbehindAssertion;
+ /**
+ * The lookahead assertion.
+ * E.g. `(?=ab)`, `(?!ab)`
+ */
+ export interface LookaheadAssertion extends NodeBase {
+ type: "Assertion";
+ parent: Alternative | Quantifier;
+ kind: "lookahead";
+ negate: boolean;
+ alternatives: Alternative[];
+ }
+ /**
+ * The lookbehind assertion.
+ * E.g. `(?<=ab)`, `(?`
+ */
+ export interface Backreference extends NodeBase {
+ type: "Backreference";
+ parent: Alternative | Quantifier;
+ ref: number | string;
+ resolved: CapturingGroup;
+ }
+ /**
+ * The flags.
+ */
+ export interface Flags extends NodeBase {
+ type: "Flags";
+ parent: RegExpLiteral | null;
+ dotAll: boolean;
+ global: boolean;
+ hasIndices: boolean;
+ ignoreCase: boolean;
+ multiline: boolean;
+ sticky: boolean;
+ unicode: boolean;
+ unicodeSets: boolean;
+ }
+ export {};
+}
+
+declare module "@eslint-community/regexpp/parser" {
+ import type {
+ Flags,
+ RegExpLiteral,
+ Pattern,
+ } from "@eslint-community/regexpp/ast";
+ import type { EcmaVersion } from "@eslint-community/regexpp/ecma-versions";
+ export namespace RegExpParser {
+ /**
+ * The options for RegExpParser construction.
+ */
+ interface Options {
+ /**
+ * The flag to disable Annex B syntax. Default is `false`.
+ */
+ strict?: boolean;
+ /**
+ * ECMAScript version. Default is `2024`.
+ * - `2015` added `u` and `y` flags.
+ * - `2018` added `s` flag, Named Capturing Group, Lookbehind Assertion,
+ * and Unicode Property Escape.
+ * - `2019`, `2020`, and `2021` added more valid Unicode Property Escapes.
+ * - `2022` added `d` flag.
+ * - `2023` added more valid Unicode Property Escapes.
+ * - `2024` added `v` flag.
+ */
+ ecmaVersion?: EcmaVersion;
+ }
+ }
+ export class RegExpParser {
+ /**
+ * Initialize this parser.
+ * @param options The options of parser.
+ */
+ constructor(options?: RegExpParser.Options);
+ /**
+ * Parse a regular expression literal. E.g. "/abc/g"
+ * @param source The source code to parse.
+ * @param start The start index in the source code.
+ * @param end The end index in the source code.
+ * @returns The AST of the given regular expression.
+ */
+ parseLiteral(source: string, start?: number, end?: number): RegExpLiteral;
+ /**
+ * Parse a regular expression flags. E.g. "gim"
+ * @param source The source code to parse.
+ * @param start The start index in the source code.
+ * @param end The end index in the source code.
+ * @returns The AST of the given flags.
+ */
+ parseFlags(source: string, start?: number, end?: number): Flags;
+ /**
+ * Parse a regular expression pattern. E.g. "abc"
+ * @param source The source code to parse.
+ * @param start The start index in the source code.
+ * @param end The end index in the source code.
+ * @param flags The flags.
+ * @returns The AST of the given pattern.
+ */
+ parsePattern(
+ source: string,
+ start?: number,
+ end?: number,
+ flags?: {
+ unicode?: boolean;
+ unicodeSets?: boolean;
+ }
+ ): Pattern;
+ /**
+ * @deprecated Backward compatibility
+ * Use object `flags` instead of boolean `uFlag`.
+ *
+ * @param source The source code to parse.
+ * @param start The start index in the source code.
+ * @param end The end index in the source code.
+ * @param uFlag The flag to set unicode mode.
+ * @returns The AST of the given pattern.
+ */
+ parsePattern(
+ source: string,
+ start?: number,
+ end?: number,
+ uFlag?: boolean
+ ): Pattern;
+ }
+}
+
+declare module "@eslint-community/regexpp/validator" {
+ import type { EcmaVersion } from "@eslint-community/regexpp/ecma-versions";
+ export type RegExpValidatorSourceContext = {
+ readonly source: string;
+ readonly start: number;
+ readonly end: number;
+ readonly kind: "flags" | "literal" | "pattern";
+ };
+ export namespace RegExpValidator {
+ /**
+ * The options for RegExpValidator construction.
+ */
+ interface Options {
+ /**
+ * The flag to disable Annex B syntax. Default is `false`.
+ */
+ strict?: boolean;
+ /**
+ * ECMAScript version. Default is `2024`.
+ * - `2015` added `u` and `y` flags.
+ * - `2018` added `s` flag, Named Capturing Group, Lookbehind Assertion,
+ * and Unicode Property Escape.
+ * - `2019`, `2020`, and `2021` added more valid Unicode Property Escapes.
+ * - `2022` added `d` flag.
+ * - `2023` added more valid Unicode Property Escapes.
+ * - `2024` added `v` flag.
+ */
+ ecmaVersion?: EcmaVersion;
+ /**
+ * A function that is called when the validator entered a RegExp literal.
+ * @param start The 0-based index of the first character.
+ */
+ onLiteralEnter?: (start: number) => void;
+ /**
+ * A function that is called when the validator left a RegExp literal.
+ * @param start The 0-based index of the first character.
+ * @param end The next 0-based index of the last character.
+ */
+ onLiteralLeave?: (start: number, end: number) => void;
+ /**
+ * A function that is called when the validator found flags.
+ * @param start The 0-based index of the first character.
+ * @param end The next 0-based index of the last character.
+ * @param flags.global `g` flag.
+ * @param flags.ignoreCase `i` flag.
+ * @param flags.multiline `m` flag.
+ * @param flags.unicode `u` flag.
+ * @param flags.sticky `y` flag.
+ * @param flags.dotAll `s` flag.
+ * @param flags.hasIndices `d` flag.
+ * @param flags.unicodeSets `v` flag.
+ */
+ onRegExpFlags?: (
+ start: number,
+ end: number,
+ flags: {
+ global: boolean;
+ ignoreCase: boolean;
+ multiline: boolean;
+ unicode: boolean;
+ sticky: boolean;
+ dotAll: boolean;
+ hasIndices: boolean;
+ unicodeSets: boolean;
+ }
+ ) => void;
+ /**
+ * A function that is called when the validator found flags.
+ * @param start The 0-based index of the first character.
+ * @param end The next 0-based index of the last character.
+ * @param global `g` flag.
+ * @param ignoreCase `i` flag.
+ * @param multiline `m` flag.
+ * @param unicode `u` flag.
+ * @param sticky `y` flag.
+ * @param dotAll `s` flag.
+ * @param hasIndices `d` flag.
+ *
+ * @deprecated Use `onRegExpFlags` instead.
+ */
+ onFlags?: (
+ start: number,
+ end: number,
+ global: boolean,
+ ignoreCase: boolean,
+ multiline: boolean,
+ unicode: boolean,
+ sticky: boolean,
+ dotAll: boolean,
+ hasIndices: boolean
+ ) => void;
+ /**
+ * A function that is called when the validator entered a pattern.
+ * @param start The 0-based index of the first character.
+ */
+ onPatternEnter?: (start: number) => void;
+ /**
+ * A function that is called when the validator left a pattern.
+ * @param start The 0-based index of the first character.
+ * @param end The next 0-based index of the last character.
+ */
+ onPatternLeave?: (start: number, end: number) => void;
+ /**
+ * A function that is called when the validator entered a disjunction.
+ * @param start The 0-based index of the first character.
+ */
+ onDisjunctionEnter?: (start: number) => void;
+ /**
+ * A function that is called when the validator left a disjunction.
+ * @param start The 0-based index of the first character.
+ * @param end The next 0-based index of the last character.
+ */
+ onDisjunctionLeave?: (start: number, end: number) => void;
+ /**
+ * A function that is called when the validator entered an alternative.
+ * @param start The 0-based index of the first character.
+ * @param index The 0-based index of alternatives in a disjunction.
+ */
+ onAlternativeEnter?: (start: number, index: number) => void;
+ /**
+ * A function that is called when the validator left an alternative.
+ * @param start The 0-based index of the first character.
+ * @param end The next 0-based index of the last character.
+ * @param index The 0-based index of alternatives in a disjunction.
+ */
+ onAlternativeLeave?: (start: number, end: number, index: number) => void;
+ /**
+ * A function that is called when the validator entered an uncapturing group.
+ * @param start The 0-based index of the first character.
+ */
+ onGroupEnter?: (start: number) => void;
+ /**
+ * A function that is called when the validator left an uncapturing group.
+ * @param start The 0-based index of the first character.
+ * @param end The next 0-based index of the last character.
+ */
+ onGroupLeave?: (start: number, end: number) => void;
+ /**
+ * A function that is called when the validator entered a capturing group.
+ * @param start The 0-based index of the first character.
+ * @param name The group name.
+ */
+ onCapturingGroupEnter?: (start: number, name: string | null) => void;
+ /**
+ * A function that is called when the validator left a capturing group.
+ * @param start The 0-based index of the first character.
+ * @param end The next 0-based index of the last character.
+ * @param name The group name.
+ */
+ onCapturingGroupLeave?: (
+ start: number,
+ end: number,
+ name: string | null
+ ) => void;
+ /**
+ * A function that is called when the validator found a quantifier.
+ * @param start The 0-based index of the first character.
+ * @param end The next 0-based index of the last character.
+ * @param min The minimum number of repeating.
+ * @param max The maximum number of repeating.
+ * @param greedy The flag to choose the longest matching.
+ */
+ onQuantifier?: (
+ start: number,
+ end: number,
+ min: number,
+ max: number,
+ greedy: boolean
+ ) => void;
+ /**
+ * A function that is called when the validator entered a lookahead/lookbehind assertion.
+ * @param start The 0-based index of the first character.
+ * @param kind The kind of the assertion.
+ * @param negate The flag which represents that the assertion is negative.
+ */
+ onLookaroundAssertionEnter?: (
+ start: number,
+ kind: "lookahead" | "lookbehind",
+ negate: boolean
+ ) => void;
+ /**
+ * A function that is called when the validator left a lookahead/lookbehind assertion.
+ * @param start The 0-based index of the first character.
+ * @param end The next 0-based index of the last character.
+ * @param kind The kind of the assertion.
+ * @param negate The flag which represents that the assertion is negative.
+ */
+ onLookaroundAssertionLeave?: (
+ start: number,
+ end: number,
+ kind: "lookahead" | "lookbehind",
+ negate: boolean
+ ) => void;
+ /**
+ * A function that is called when the validator found an edge boundary assertion.
+ * @param start The 0-based index of the first character.
+ * @param end The next 0-based index of the last character.
+ * @param kind The kind of the assertion.
+ */
+ onEdgeAssertion?: (
+ start: number,
+ end: number,
+ kind: "end" | "start"
+ ) => void;
+ /**
+ * A function that is called when the validator found a word boundary assertion.
+ * @param start The 0-based index of the first character.
+ * @param end The next 0-based index of the last character.
+ * @param kind The kind of the assertion.
+ * @param negate The flag which represents that the assertion is negative.
+ */
+ onWordBoundaryAssertion?: (
+ start: number,
+ end: number,
+ kind: "word",
+ negate: boolean
+ ) => void;
+ /**
+ * A function that is called when the validator found a dot.
+ * @param start The 0-based index of the first character.
+ * @param end The next 0-based index of the last character.
+ * @param kind The kind of the character set.
+ */
+ onAnyCharacterSet?: (start: number, end: number, kind: "any") => void;
+ /**
+ * A function that is called when the validator found a character set escape.
+ * @param start The 0-based index of the first character.
+ * @param end The next 0-based index of the last character.
+ * @param kind The kind of the character set.
+ * @param negate The flag which represents that the character set is negative.
+ */
+ onEscapeCharacterSet?: (
+ start: number,
+ end: number,
+ kind: "digit" | "space" | "word",
+ negate: boolean
+ ) => void;
+ /**
+ * A function that is called when the validator found a Unicode proerty escape.
+ * @param start The 0-based index of the first character.
+ * @param end The next 0-based index of the last character.
+ * @param kind The kind of the character set.
+ * @param key The property name.
+ * @param value The property value.
+ * @param negate The flag which represents that the character set is negative.
+ * @param strings If true, the given property is property of strings.
+ */
+ onUnicodePropertyCharacterSet?: (
+ start: number,
+ end: number,
+ kind: "property",
+ key: string,
+ value: string | null,
+ negate: boolean,
+ strings: boolean
+ ) => void;
+ /**
+ * A function that is called when the validator found a character.
+ * @param start The 0-based index of the first character.
+ * @param end The next 0-based index of the last character.
+ * @param value The code point of the character.
+ */
+ onCharacter?: (start: number, end: number, value: number) => void;
+ /**
+ * A function that is called when the validator found a backreference.
+ * @param start The 0-based index of the first character.
+ * @param end The next 0-based index of the last character.
+ * @param ref The key of the referred capturing group.
+ */
+ onBackreference?: (
+ start: number,
+ end: number,
+ ref: number | string
+ ) => void;
+ /**
+ * A function that is called when the validator entered a character class.
+ * @param start The 0-based index of the first character.
+ * @param negate The flag which represents that the character class is negative.
+ * @param unicodeSets `true` if unicodeSets mode.
+ */
+ onCharacterClassEnter?: (
+ start: number,
+ negate: boolean,
+ unicodeSets: boolean
+ ) => void;
+ /**
+ * A function that is called when the validator left a character class.
+ * @param start The 0-based index of the first character.
+ * @param end The next 0-based index of the last character.
+ * @param negate The flag which represents that the character class is negative.
+ */
+ onCharacterClassLeave?: (
+ start: number,
+ end: number,
+ negate: boolean
+ ) => void;
+ /**
+ * A function that is called when the validator found a character class range.
+ * @param start The 0-based index of the first character.
+ * @param end The next 0-based index of the last character.
+ * @param min The minimum code point of the range.
+ * @param max The maximum code point of the range.
+ */
+ onCharacterClassRange?: (
+ start: number,
+ end: number,
+ min: number,
+ max: number
+ ) => void;
+ /**
+ * A function that is called when the validator found a class intersection.
+ * @param start The 0-based index of the first character.
+ * @param end The next 0-based index of the last character.
+ */
+ onClassIntersection?: (start: number, end: number) => void;
+ /**
+ * A function that is called when the validator found a class subtraction.
+ * @param start The 0-based index of the first character.
+ * @param end The next 0-based index of the last character.
+ */
+ onClassSubtraction?: (start: number, end: number) => void;
+ /**
+ * A function that is called when the validator entered a class string disjunction.
+ * @param start The 0-based index of the first character.
+ */
+ onClassStringDisjunctionEnter?: (start: number) => void;
+ /**
+ * A function that is called when the validator left a class string disjunction.
+ * @param start The 0-based index of the first character.
+ * @param end The next 0-based index of the last character.
+ */
+ onClassStringDisjunctionLeave?: (start: number, end: number) => void;
+ /**
+ * A function that is called when the validator entered a string alternative.
+ * @param start The 0-based index of the first character.
+ * @param index The 0-based index of alternatives in a disjunction.
+ */
+ onStringAlternativeEnter?: (start: number, index: number) => void;
+ /**
+ * A function that is called when the validator left a string alternative.
+ * @param start The 0-based index of the first character.
+ * @param end The next 0-based index of the last character.
+ * @param index The 0-based index of alternatives in a disjunction.
+ */
+ onStringAlternativeLeave?: (
+ start: number,
+ end: number,
+ index: number
+ ) => void;
+ }
+ }
+ /**
+ * The regular expression validator.
+ */
+ export class RegExpValidator {
+ /**
+ * Initialize this validator.
+ * @param options The options of validator.
+ */
+ constructor(options?: RegExpValidator.Options);
+ /**
+ * Validate a regular expression literal. E.g. "/abc/g"
+ * @param source The source code to validate.
+ * @param start The start index in the source code.
+ * @param end The end index in the source code.
+ */
+ validateLiteral(source: string, start?: number, end?: number): void;
+ /**
+ * Validate a regular expression flags. E.g. "gim"
+ * @param source The source code to validate.
+ * @param start The start index in the source code.
+ * @param end The end index in the source code.
+ */
+ validateFlags(source: string, start?: number, end?: number): void;
+ /**
+ * Validate a regular expression pattern. E.g. "abc"
+ * @param source The source code to validate.
+ * @param start The start index in the source code.
+ * @param end The end index in the source code.
+ * @param flags The flags.
+ */
+ validatePattern(
+ source: string,
+ start?: number,
+ end?: number,
+ flags?: {
+ unicode?: boolean;
+ unicodeSets?: boolean;
+ }
+ ): void;
+ /**
+ * @deprecated Backward compatibility
+ * Use object `flags` instead of boolean `uFlag`.
+ * @param source The source code to validate.
+ * @param start The start index in the source code.
+ * @param end The end index in the source code.
+ * @param uFlag The flag to set unicode mode.
+ */
+ validatePattern(
+ source: string,
+ start?: number,
+ end?: number,
+ uFlag?: boolean
+ ): void;
+ }
+}
+
+declare module "@eslint-community/regexpp/visitor" {
+ import type {
+ Alternative,
+ Assertion,
+ Backreference,
+ CapturingGroup,
+ Character,
+ CharacterClass,
+ CharacterClassRange,
+ CharacterSet,
+ ClassIntersection,
+ ClassStringDisjunction,
+ ClassSubtraction,
+ ExpressionCharacterClass,
+ Flags,
+ Group,
+ Node,
+ Pattern,
+ Quantifier,
+ RegExpLiteral,
+ StringAlternative,
+ } from "@eslint-community/regexpp/ast";
+ /**
+ * The visitor to walk on AST.
+ */
+ export class RegExpVisitor {
+ /**
+ * Initialize this visitor.
+ * @param handlers Callbacks for each node.
+ */
+ constructor(handlers: RegExpVisitor.Handlers);
+ /**
+ * Visit a given node and descendant nodes.
+ * @param node The root node to visit tree.
+ */
+ visit(node: Node): void;
+ }
+ export namespace RegExpVisitor {
+ interface Handlers {
+ onAlternativeEnter?: (node: Alternative) => void;
+ onAlternativeLeave?: (node: Alternative) => void;
+ onAssertionEnter?: (node: Assertion) => void;
+ onAssertionLeave?: (node: Assertion) => void;
+ onBackreferenceEnter?: (node: Backreference) => void;
+ onBackreferenceLeave?: (node: Backreference) => void;
+ onCapturingGroupEnter?: (node: CapturingGroup) => void;
+ onCapturingGroupLeave?: (node: CapturingGroup) => void;
+ onCharacterEnter?: (node: Character) => void;
+ onCharacterLeave?: (node: Character) => void;
+ onCharacterClassEnter?: (node: CharacterClass) => void;
+ onCharacterClassLeave?: (node: CharacterClass) => void;
+ onCharacterClassRangeEnter?: (node: CharacterClassRange) => void;
+ onCharacterClassRangeLeave?: (node: CharacterClassRange) => void;
+ onCharacterSetEnter?: (node: CharacterSet) => void;
+ onCharacterSetLeave?: (node: CharacterSet) => void;
+ onClassIntersectionEnter?: (node: ClassIntersection) => void;
+ onClassIntersectionLeave?: (node: ClassIntersection) => void;
+ onClassStringDisjunctionEnter?: (node: ClassStringDisjunction) => void;
+ onClassStringDisjunctionLeave?: (node: ClassStringDisjunction) => void;
+ onClassSubtractionEnter?: (node: ClassSubtraction) => void;
+ onClassSubtractionLeave?: (node: ClassSubtraction) => void;
+ onExpressionCharacterClassEnter?: (
+ node: ExpressionCharacterClass
+ ) => void;
+ onExpressionCharacterClassLeave?: (
+ node: ExpressionCharacterClass
+ ) => void;
+ onFlagsEnter?: (node: Flags) => void;
+ onFlagsLeave?: (node: Flags) => void;
+ onGroupEnter?: (node: Group) => void;
+ onGroupLeave?: (node: Group) => void;
+ onPatternEnter?: (node: Pattern) => void;
+ onPatternLeave?: (node: Pattern) => void;
+ onQuantifierEnter?: (node: Quantifier) => void;
+ onQuantifierLeave?: (node: Quantifier) => void;
+ onRegExpLiteralEnter?: (node: RegExpLiteral) => void;
+ onRegExpLiteralLeave?: (node: RegExpLiteral) => void;
+ onStringAlternativeEnter?: (node: StringAlternative) => void;
+ onStringAlternativeLeave?: (node: StringAlternative) => void;
+ }
+ }
+}
+
+declare module "@eslint-community/regexpp/ecma-versions" {
+ export type EcmaVersion =
+ | 5
+ | 2015
+ | 2016
+ | 2017
+ | 2018
+ | 2019
+ | 2020
+ | 2021
+ | 2022
+ | 2023
+ | 2024;
+ export const latestEcmaVersion = 2024;
+}
diff --git a/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint-community/regexpp/index.js b/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint-community/regexpp/index.js
new file mode 100644
index 0000000..28fa5a1
--- /dev/null
+++ b/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint-community/regexpp/index.js
@@ -0,0 +1,2752 @@
+'use strict';
+
+Object.defineProperty(exports, '__esModule', { value: true });
+
+var ast = /*#__PURE__*/Object.freeze({
+ __proto__: null
+});
+
+const latestEcmaVersion = 2024;
+
+let largeIdStartRanges = undefined;
+let largeIdContinueRanges = undefined;
+function isIdStart(cp) {
+ if (cp < 0x41)
+ return false;
+ if (cp < 0x5b)
+ return true;
+ if (cp < 0x61)
+ return false;
+ if (cp < 0x7b)
+ return true;
+ return isLargeIdStart(cp);
+}
+function isIdContinue(cp) {
+ if (cp < 0x30)
+ return false;
+ if (cp < 0x3a)
+ return true;
+ if (cp < 0x41)
+ return false;
+ if (cp < 0x5b)
+ return true;
+ if (cp === 0x5f)
+ return true;
+ if (cp < 0x61)
+ return false;
+ if (cp < 0x7b)
+ return true;
+ return isLargeIdStart(cp) || isLargeIdContinue(cp);
+}
+function isLargeIdStart(cp) {
+ return isInRange(cp, largeIdStartRanges !== null && largeIdStartRanges !== void 0 ? largeIdStartRanges : (largeIdStartRanges = initLargeIdStartRanges()));
+}
+function isLargeIdContinue(cp) {
+ return isInRange(cp, largeIdContinueRanges !== null && largeIdContinueRanges !== void 0 ? largeIdContinueRanges : (largeIdContinueRanges = initLargeIdContinueRanges()));
+}
+function initLargeIdStartRanges() {
+ return restoreRanges("4q 0 b 0 5 0 6 m 2 u 2 cp 5 b f 4 8 0 2 0 3m 4 2 1 3 3 2 0 7 0 2 2 2 0 2 j 2 2a 2 3u 9 4l 2 11 3 0 7 14 20 q 5 3 1a 16 10 1 2 2q 2 0 g 1 8 1 b 2 3 0 h 0 2 t u 2g c 0 p w a 1 5 0 6 l 5 0 a 0 4 0 o o 8 a 6 n 2 5 i 15 1n 1h 4 0 j 0 8 9 g f 5 7 3 1 3 l 2 6 2 0 4 3 4 0 h 0 e 1 2 2 f 1 b 0 9 5 5 1 3 l 2 6 2 1 2 1 2 1 w 3 2 0 k 2 h 8 2 2 2 l 2 6 2 1 2 4 4 0 j 0 g 1 o 0 c 7 3 1 3 l 2 6 2 1 2 4 4 0 v 1 2 2 g 0 i 0 2 5 4 2 2 3 4 1 2 0 2 1 4 1 4 2 4 b n 0 1h 7 2 2 2 m 2 f 4 0 r 2 3 0 3 1 v 0 5 7 2 2 2 m 2 9 2 4 4 0 w 1 2 1 g 1 i 8 2 2 2 14 3 0 h 0 6 2 9 2 p 5 6 h 4 n 2 8 2 0 3 6 1n 1b 2 1 d 6 1n 1 2 0 2 4 2 n 2 0 2 9 2 1 a 0 3 4 2 0 m 3 x 0 1s 7 2 z s 4 38 16 l 0 h 5 5 3 4 0 4 1 8 2 5 c d 0 i 11 2 0 6 0 3 16 2 98 2 3 3 6 2 0 2 3 3 14 2 3 3 w 2 3 3 6 2 0 2 3 3 e 2 1k 2 3 3 1u 12 f h 2d 3 5 4 h7 3 g 2 p 6 22 4 a 8 h e i f h f c 2 2 g 1f 10 0 5 0 1w 2g 8 14 2 0 6 1x b u 1e t 3 4 c 17 5 p 1j m a 1g 2b 0 2m 1a i 7 1j t e 1 b 17 r z 16 2 b z 3 8 8 16 3 2 16 3 2 5 2 1 4 0 6 5b 1t 7p 3 5 3 11 3 5 3 7 2 0 2 0 2 0 2 u 3 1g 2 6 2 0 4 2 2 6 4 3 3 5 5 c 6 2 2 6 39 0 e 0 h c 2u 0 5 0 3 9 2 0 3 5 7 0 2 0 2 0 2 f 3 3 6 4 5 0 i 14 22g 6c 7 3 4 1 d 11 2 0 6 0 3 1j 8 0 h m a 6 2 6 2 6 2 6 2 6 2 6 2 6 2 6 fb 2 q 8 8 4 3 4 5 2d 5 4 2 2h 2 3 6 16 2 2l i v 1d f e9 533 1t h3g 1w 19 3 7g 4 f b 1 l 1a h u 3 27 14 8 3 2u 3 1r 6 1 2 0 2 4 p f 2 2 2 3 2 m u 1f f 1d 1r 5 4 0 2 1 c r b m q s 8 1a t 0 h 4 2 9 b 4 2 14 o 2 2 7 l m 4 0 4 1d 2 0 4 1 3 4 3 0 2 0 p 2 3 a 8 2 d 5 3 5 3 5 a 6 2 6 2 16 2 d 7 36 u 8mb d m 5 1c 6it a5 3 2x 13 6 d 4 6 0 2 9 2 c 2 4 2 0 2 1 2 1 2 2z y a2 j 1r 3 1h 15 b 39 4 2 3q 11 p 7 p c 2g 4 5 3 5 3 5 3 2 10 b 2 p 2 i 2 1 2 e 3 d z 3e 1y 1g 7g s 4 1c 1c v e t 6 11 b t 3 z 5 7 2 4 17 4d j z 5 z 5 13 9 1f d a 2 e 2 6 2 1 2 a 2 e 2 6 2 1 1w 8m a l b 7 p 5 2 15 2 8 1y 5 3 0 2 17 2 1 4 0 3 m b m a u 1u i 2 1 b l b p 1z 1j 7 1 1t 0 g 3 2 2 2 s 17 s 4 s 10 7 2 r s 1h b l b i e h 33 20 1k 1e e 1e e z 9p 15 7 1 27 s b 0 9 l 17 h 1b k s m d 1g 1m 1 3 0 e 18 x o r z u 0 3 0 9 y 4 0 d 1b f 3 m 0 2 0 10 h 2 o k 1 1s 6 2 0 2 3 2 e 2 9 8 1a 13 7 3 1 3 l 2 6 2 1 2 4 4 0 j 0 d 4 4f 1g j 3 l 2 v 1b l 1 2 0 55 1a 16 3 11 1b l 0 1o 16 e 0 20 q 12 6 56 17 39 1r w 7 3 0 3 7 2 1 2 n g 0 2 0 2n 7 3 12 h 0 2 0 t 0 b 13 8 0 m 0 c 19 k 0 j 20 7c 8 2 10 i 0 1e t 35 6 2 1 2 11 m 0 q 5 2 1 2 v f 0 94 i g 0 2 c 2 x 3h 0 28 pl 2v 32 i 5f 219 2o g tr i 5 33u g6 6nu fs 8 u i 26 i t j 1b h 3 w k 6 i j5 1r 3l 22 6 0 1v c 1t 1 2 0 t 4qf 9 yd 17 8 6w8 3 2 6 2 1 2 82 g 0 u 2 3 0 f 3 9 az 1s5 2y 6 c 4 8 8 9 4mf 2c 2 1y 2 1 3 0 3 1 3 3 2 b 2 0 2 6 2 1s 2 3 3 7 2 6 2 r 2 3 2 4 2 0 4 6 2 9f 3 o 2 o 2 u 2 o 2 u 2 o 2 u 2 o 2 u 2 o 2 7 1f9 u 7 5 7a 1p 43 18 b 6 h 0 8y t j 17 dh r l1 6 2 3 2 1 2 e 2 5g 1o 1v 8 0 xh 3 2 q 2 1 2 0 3 0 2 9 2 3 2 0 2 0 7 0 5 0 2 0 2 0 2 2 2 1 2 0 3 0 2 0 2 0 2 0 2 0 2 1 2 0 3 3 2 6 2 3 2 3 2 0 2 9 2 g 6 2 2 4 2 g 3et wyn x 37d 7 65 3 4g1 f 5rk 2e8 f1 15v 3t6 6 38f");
+}
+function initLargeIdContinueRanges() {
+ return restoreRanges("53 0 g9 33 o 0 70 4 7e 18 2 0 2 1 2 1 2 0 21 a 1d u 7 0 2u 6 3 5 3 1 2 3 3 9 o 0 v q 2k a g 9 y 8 a 0 p 3 2 8 2 2 2 4 18 2 1p 7 17 n 2 w 1j 2 2 h 2 6 b 1 3 9 i 2 1l 0 2 6 3 1 3 2 a 0 b 1 3 9 f 0 3 2 1l 0 2 4 5 1 3 2 4 0 l b 4 0 c 2 1l 0 2 7 2 2 2 2 l 1 3 9 b 5 2 2 1l 0 2 6 3 1 3 2 8 2 b 1 3 9 j 0 1o 4 4 2 2 3 a 0 f 9 h 4 1k 0 2 6 2 2 2 3 8 1 c 1 3 9 i 2 1l 0 2 6 2 2 2 3 8 1 c 1 3 9 4 0 d 3 1k 1 2 6 2 2 2 3 a 0 b 1 3 9 i 2 1z 0 5 5 2 0 2 7 7 9 3 1 1q 0 3 6 d 7 2 9 2g 0 3 8 c 6 2 9 1r 1 7 9 c 0 2 0 2 0 5 1 1e j 2 1 6 a 2 z a 0 2t j 2 9 d 3 5 2 2 2 3 6 4 3 e b 2 e jk 2 a 8 pt 3 t 2 u 1 v 1 1t v a 0 3 9 y 2 2 a 40 0 3b b 5 b b 9 3l a 1p 4 1m 9 2 s 3 a 7 9 n d 2 f 1e 4 1c g c 9 i 8 d 2 v c 3 9 19 d 1d j 9 9 7 9 3b 2 2 k 5 0 7 0 3 2 5j 1r g0 1 k 0 3g c 5 0 4 b 2db 2 3y 0 2p v ff 5 2y 1 n7q 9 1y 0 5 9 x 1 29 1 7l 0 4 0 5 0 o 4 5 0 2c 1 1f h b 9 7 h e a t 7 q c 19 3 1c d g 9 c 0 b 9 1c d d 0 9 1 3 9 y 2 1f 0 2 2 3 1 6 1 2 0 16 4 6 1 6l 7 2 1 3 9 fmt 0 ki f h f 4 1 p 2 5d 9 12 0 ji 0 6b 0 46 4 86 9 120 2 2 1 6 3 15 2 5 0 4m 1 fy 3 9 9 aa 1 29 2 1z a 1e 3 3f 2 1i e w a 3 1 b 3 1a a 8 0 1a 9 7 2 11 d 2 9 6 1 19 0 d 2 1d d 9 3 2 b 2b b 7 0 3 0 4e b 6 9 7 3 1k 1 2 6 3 1 3 2 a 0 b 1 3 6 4 4 5d h a 9 5 0 2a j d 9 5y 6 3 8 s 1 2b g g 9 2a c 9 9 2c e 5 9 6r e 4m 9 1z 5 2 1 3 3 2 0 2 1 d 9 3c 6 3 6 4 0 t 9 15 6 2 3 9 0 a a 1b f ba 7 2 7 h 9 1l l 2 d 3f 5 4 0 2 1 2 6 2 0 9 9 1d 4 2 1 2 4 9 9 96 3 a 1 2 0 1d 6 4 4 e 9 44n 0 7 e aob 9 2f 9 13 4 1o 6 q 9 s6 0 2 1i 8 3 2a 0 c 1 f58 1 3mq 19 3 m f3 4 4 5 9 7 3 6 v 3 45 2 13e 1d e9 1i 5 1d 9 0 f 0 n 4 2 e 11t 6 2 g 3 6 2 1 2 4 2t 0 4h 6 a 9 9x 0 1q d dv d rb 6 32 6 6 9 3o7 9 gvt3 6n");
+}
+function isInRange(cp, ranges) {
+ let l = 0, r = (ranges.length / 2) | 0, i = 0, min = 0, max = 0;
+ while (l < r) {
+ i = ((l + r) / 2) | 0;
+ min = ranges[2 * i];
+ max = ranges[2 * i + 1];
+ if (cp < min) {
+ r = i;
+ }
+ else if (cp > max) {
+ l = i + 1;
+ }
+ else {
+ return true;
+ }
+ }
+ return false;
+}
+function restoreRanges(data) {
+ let last = 0;
+ return data.split(" ").map((s) => (last += parseInt(s, 36) | 0));
+}
+
+class DataSet {
+ constructor(raw2018, raw2019, raw2020, raw2021, raw2022, raw2023, raw2024) {
+ this._raw2018 = raw2018;
+ this._raw2019 = raw2019;
+ this._raw2020 = raw2020;
+ this._raw2021 = raw2021;
+ this._raw2022 = raw2022;
+ this._raw2023 = raw2023;
+ this._raw2024 = raw2024;
+ }
+ get es2018() {
+ var _a;
+ return ((_a = this._set2018) !== null && _a !== void 0 ? _a : (this._set2018 = new Set(this._raw2018.split(" "))));
+ }
+ get es2019() {
+ var _a;
+ return ((_a = this._set2019) !== null && _a !== void 0 ? _a : (this._set2019 = new Set(this._raw2019.split(" "))));
+ }
+ get es2020() {
+ var _a;
+ return ((_a = this._set2020) !== null && _a !== void 0 ? _a : (this._set2020 = new Set(this._raw2020.split(" "))));
+ }
+ get es2021() {
+ var _a;
+ return ((_a = this._set2021) !== null && _a !== void 0 ? _a : (this._set2021 = new Set(this._raw2021.split(" "))));
+ }
+ get es2022() {
+ var _a;
+ return ((_a = this._set2022) !== null && _a !== void 0 ? _a : (this._set2022 = new Set(this._raw2022.split(" "))));
+ }
+ get es2023() {
+ var _a;
+ return ((_a = this._set2023) !== null && _a !== void 0 ? _a : (this._set2023 = new Set(this._raw2023.split(" "))));
+ }
+ get es2024() {
+ var _a;
+ return ((_a = this._set2024) !== null && _a !== void 0 ? _a : (this._set2024 = new Set(this._raw2024.split(" "))));
+ }
+}
+const gcNameSet = new Set(["General_Category", "gc"]);
+const scNameSet = new Set(["Script", "Script_Extensions", "sc", "scx"]);
+const gcValueSets = new DataSet("C Cased_Letter Cc Cf Close_Punctuation Cn Co Combining_Mark Connector_Punctuation Control Cs Currency_Symbol Dash_Punctuation Decimal_Number Enclosing_Mark Final_Punctuation Format Initial_Punctuation L LC Letter Letter_Number Line_Separator Ll Lm Lo Lowercase_Letter Lt Lu M Mark Math_Symbol Mc Me Mn Modifier_Letter Modifier_Symbol N Nd Nl No Nonspacing_Mark Number Open_Punctuation Other Other_Letter Other_Number Other_Punctuation Other_Symbol P Paragraph_Separator Pc Pd Pe Pf Pi Po Private_Use Ps Punctuation S Sc Separator Sk Sm So Space_Separator Spacing_Mark Surrogate Symbol Titlecase_Letter Unassigned Uppercase_Letter Z Zl Zp Zs cntrl digit punct", "", "", "", "", "", "");
+const scValueSets = new DataSet("Adlam Adlm Aghb Ahom Anatolian_Hieroglyphs Arab Arabic Armenian Armi Armn Avestan Avst Bali Balinese Bamu Bamum Bass Bassa_Vah Batak Batk Beng Bengali Bhaiksuki Bhks Bopo Bopomofo Brah Brahmi Brai Braille Bugi Buginese Buhd Buhid Cakm Canadian_Aboriginal Cans Cari Carian Caucasian_Albanian Chakma Cham Cher Cherokee Common Copt Coptic Cprt Cuneiform Cypriot Cyrillic Cyrl Deseret Deva Devanagari Dsrt Dupl Duployan Egyp Egyptian_Hieroglyphs Elba Elbasan Ethi Ethiopic Geor Georgian Glag Glagolitic Gonm Goth Gothic Gran Grantha Greek Grek Gujarati Gujr Gurmukhi Guru Han Hang Hangul Hani Hano Hanunoo Hatr Hatran Hebr Hebrew Hira Hiragana Hluw Hmng Hung Imperial_Aramaic Inherited Inscriptional_Pahlavi Inscriptional_Parthian Ital Java Javanese Kaithi Kali Kana Kannada Katakana Kayah_Li Khar Kharoshthi Khmer Khmr Khoj Khojki Khudawadi Knda Kthi Lana Lao Laoo Latin Latn Lepc Lepcha Limb Limbu Lina Linb Linear_A Linear_B Lisu Lyci Lycian Lydi Lydian Mahajani Mahj Malayalam Mand Mandaic Mani Manichaean Marc Marchen Masaram_Gondi Meetei_Mayek Mend Mende_Kikakui Merc Mero Meroitic_Cursive Meroitic_Hieroglyphs Miao Mlym Modi Mong Mongolian Mro Mroo Mtei Mult Multani Myanmar Mymr Nabataean Narb Nbat New_Tai_Lue Newa Nko Nkoo Nshu Nushu Ogam Ogham Ol_Chiki Olck Old_Hungarian Old_Italic Old_North_Arabian Old_Permic Old_Persian Old_South_Arabian Old_Turkic Oriya Orkh Orya Osage Osge Osma Osmanya Pahawh_Hmong Palm Palmyrene Pau_Cin_Hau Pauc Perm Phag Phags_Pa Phli Phlp Phnx Phoenician Plrd Prti Psalter_Pahlavi Qaac Qaai Rejang Rjng Runic Runr Samaritan Samr Sarb Saur Saurashtra Sgnw Sharada Shavian Shaw Shrd Sidd Siddham SignWriting Sind Sinh Sinhala Sora Sora_Sompeng Soyo Soyombo Sund Sundanese Sylo Syloti_Nagri Syrc Syriac Tagalog Tagb Tagbanwa Tai_Le Tai_Tham Tai_Viet Takr Takri Tale Talu Tamil Taml Tang Tangut Tavt Telu Telugu Tfng Tglg Thaa Thaana Thai Tibetan Tibt Tifinagh Tirh Tirhuta Ugar Ugaritic Vai Vaii Wara Warang_Citi Xpeo Xsux Yi Yiii Zanabazar_Square Zanb Zinh Zyyy", "Dogr Dogra Gong Gunjala_Gondi Hanifi_Rohingya Maka Makasar Medefaidrin Medf Old_Sogdian Rohg Sogd Sogdian Sogo", "Elym Elymaic Hmnp Nand Nandinagari Nyiakeng_Puachue_Hmong Wancho Wcho", "Chorasmian Chrs Diak Dives_Akuru Khitan_Small_Script Kits Yezi Yezidi", "Cpmn Cypro_Minoan Old_Uyghur Ougr Tangsa Tnsa Toto Vith Vithkuqi", "Hrkt Katakana_Or_Hiragana Kawi Nag_Mundari Nagm Unknown Zzzz", "");
+const binPropertySets = new DataSet("AHex ASCII ASCII_Hex_Digit Alpha Alphabetic Any Assigned Bidi_C Bidi_Control Bidi_M Bidi_Mirrored CI CWCF CWCM CWKCF CWL CWT CWU Case_Ignorable Cased Changes_When_Casefolded Changes_When_Casemapped Changes_When_Lowercased Changes_When_NFKC_Casefolded Changes_When_Titlecased Changes_When_Uppercased DI Dash Default_Ignorable_Code_Point Dep Deprecated Dia Diacritic Emoji Emoji_Component Emoji_Modifier Emoji_Modifier_Base Emoji_Presentation Ext Extender Gr_Base Gr_Ext Grapheme_Base Grapheme_Extend Hex Hex_Digit IDC IDS IDSB IDST IDS_Binary_Operator IDS_Trinary_Operator ID_Continue ID_Start Ideo Ideographic Join_C Join_Control LOE Logical_Order_Exception Lower Lowercase Math NChar Noncharacter_Code_Point Pat_Syn Pat_WS Pattern_Syntax Pattern_White_Space QMark Quotation_Mark RI Radical Regional_Indicator SD STerm Sentence_Terminal Soft_Dotted Term Terminal_Punctuation UIdeo Unified_Ideograph Upper Uppercase VS Variation_Selector White_Space XIDC XIDS XID_Continue XID_Start space", "Extended_Pictographic", "", "EBase EComp EMod EPres ExtPict", "", "", "");
+function isValidUnicodeProperty(version, name, value) {
+ if (gcNameSet.has(name)) {
+ return version >= 2018 && gcValueSets.es2018.has(value);
+ }
+ if (scNameSet.has(name)) {
+ return ((version >= 2018 && scValueSets.es2018.has(value)) ||
+ (version >= 2019 && scValueSets.es2019.has(value)) ||
+ (version >= 2020 && scValueSets.es2020.has(value)) ||
+ (version >= 2021 && scValueSets.es2021.has(value)) ||
+ (version >= 2022 && scValueSets.es2022.has(value)) ||
+ (version >= 2023 && scValueSets.es2023.has(value)));
+ }
+ return false;
+}
+function isValidLoneUnicodeProperty(version, value) {
+ return ((version >= 2018 && binPropertySets.es2018.has(value)) ||
+ (version >= 2019 && binPropertySets.es2019.has(value)) ||
+ (version >= 2021 && binPropertySets.es2021.has(value)));
+}
+
+const BACKSPACE = 0x08;
+const CHARACTER_TABULATION = 0x09;
+const LINE_FEED = 0x0a;
+const LINE_TABULATION = 0x0b;
+const FORM_FEED = 0x0c;
+const CARRIAGE_RETURN = 0x0d;
+const EXCLAMATION_MARK = 0x21;
+const NUMBER_SIGN = 0x23;
+const DOLLAR_SIGN = 0x24;
+const PERCENT_SIGN = 0x25;
+const AMPERSAND = 0x26;
+const LEFT_PARENTHESIS = 0x28;
+const RIGHT_PARENTHESIS = 0x29;
+const ASTERISK = 0x2a;
+const PLUS_SIGN = 0x2b;
+const COMMA = 0x2c;
+const HYPHEN_MINUS = 0x2d;
+const FULL_STOP = 0x2e;
+const SOLIDUS = 0x2f;
+const DIGIT_ZERO = 0x30;
+const DIGIT_ONE = 0x31;
+const DIGIT_SEVEN = 0x37;
+const DIGIT_NINE = 0x39;
+const COLON = 0x3a;
+const SEMICOLON = 0x3b;
+const LESS_THAN_SIGN = 0x3c;
+const EQUALS_SIGN = 0x3d;
+const GREATER_THAN_SIGN = 0x3e;
+const QUESTION_MARK = 0x3f;
+const COMMERCIAL_AT = 0x40;
+const LATIN_CAPITAL_LETTER_A = 0x41;
+const LATIN_CAPITAL_LETTER_B = 0x42;
+const LATIN_CAPITAL_LETTER_D = 0x44;
+const LATIN_CAPITAL_LETTER_F = 0x46;
+const LATIN_CAPITAL_LETTER_P = 0x50;
+const LATIN_CAPITAL_LETTER_S = 0x53;
+const LATIN_CAPITAL_LETTER_W = 0x57;
+const LATIN_CAPITAL_LETTER_Z = 0x5a;
+const LOW_LINE = 0x5f;
+const LATIN_SMALL_LETTER_A = 0x61;
+const LATIN_SMALL_LETTER_B = 0x62;
+const LATIN_SMALL_LETTER_C = 0x63;
+const LATIN_SMALL_LETTER_D = 0x64;
+const LATIN_SMALL_LETTER_F = 0x66;
+const LATIN_SMALL_LETTER_G = 0x67;
+const LATIN_SMALL_LETTER_I = 0x69;
+const LATIN_SMALL_LETTER_K = 0x6b;
+const LATIN_SMALL_LETTER_M = 0x6d;
+const LATIN_SMALL_LETTER_N = 0x6e;
+const LATIN_SMALL_LETTER_P = 0x70;
+const LATIN_SMALL_LETTER_Q = 0x71;
+const LATIN_SMALL_LETTER_R = 0x72;
+const LATIN_SMALL_LETTER_S = 0x73;
+const LATIN_SMALL_LETTER_T = 0x74;
+const LATIN_SMALL_LETTER_U = 0x75;
+const LATIN_SMALL_LETTER_V = 0x76;
+const LATIN_SMALL_LETTER_W = 0x77;
+const LATIN_SMALL_LETTER_X = 0x78;
+const LATIN_SMALL_LETTER_Y = 0x79;
+const LATIN_SMALL_LETTER_Z = 0x7a;
+const LEFT_SQUARE_BRACKET = 0x5b;
+const REVERSE_SOLIDUS = 0x5c;
+const RIGHT_SQUARE_BRACKET = 0x5d;
+const CIRCUMFLEX_ACCENT = 0x5e;
+const GRAVE_ACCENT = 0x60;
+const LEFT_CURLY_BRACKET = 0x7b;
+const VERTICAL_LINE = 0x7c;
+const RIGHT_CURLY_BRACKET = 0x7d;
+const TILDE = 0x7e;
+const ZERO_WIDTH_NON_JOINER = 0x200c;
+const ZERO_WIDTH_JOINER = 0x200d;
+const LINE_SEPARATOR = 0x2028;
+const PARAGRAPH_SEPARATOR = 0x2029;
+const MIN_CODE_POINT = 0x00;
+const MAX_CODE_POINT = 0x10ffff;
+function isLatinLetter(code) {
+ return ((code >= LATIN_CAPITAL_LETTER_A && code <= LATIN_CAPITAL_LETTER_Z) ||
+ (code >= LATIN_SMALL_LETTER_A && code <= LATIN_SMALL_LETTER_Z));
+}
+function isDecimalDigit(code) {
+ return code >= DIGIT_ZERO && code <= DIGIT_NINE;
+}
+function isOctalDigit(code) {
+ return code >= DIGIT_ZERO && code <= DIGIT_SEVEN;
+}
+function isHexDigit(code) {
+ return ((code >= DIGIT_ZERO && code <= DIGIT_NINE) ||
+ (code >= LATIN_CAPITAL_LETTER_A && code <= LATIN_CAPITAL_LETTER_F) ||
+ (code >= LATIN_SMALL_LETTER_A && code <= LATIN_SMALL_LETTER_F));
+}
+function isLineTerminator(code) {
+ return (code === LINE_FEED ||
+ code === CARRIAGE_RETURN ||
+ code === LINE_SEPARATOR ||
+ code === PARAGRAPH_SEPARATOR);
+}
+function isValidUnicode(code) {
+ return code >= MIN_CODE_POINT && code <= MAX_CODE_POINT;
+}
+function digitToInt(code) {
+ if (code >= LATIN_SMALL_LETTER_A && code <= LATIN_SMALL_LETTER_F) {
+ return code - LATIN_SMALL_LETTER_A + 10;
+ }
+ if (code >= LATIN_CAPITAL_LETTER_A && code <= LATIN_CAPITAL_LETTER_F) {
+ return code - LATIN_CAPITAL_LETTER_A + 10;
+ }
+ return code - DIGIT_ZERO;
+}
+function isLeadSurrogate(code) {
+ return code >= 0xd800 && code <= 0xdbff;
+}
+function isTrailSurrogate(code) {
+ return code >= 0xdc00 && code <= 0xdfff;
+}
+function combineSurrogatePair(lead, trail) {
+ return (lead - 0xd800) * 0x400 + (trail - 0xdc00) + 0x10000;
+}
+
+const legacyImpl = {
+ at(s, end, i) {
+ return i < end ? s.charCodeAt(i) : -1;
+ },
+ width(c) {
+ return 1;
+ },
+};
+const unicodeImpl = {
+ at(s, end, i) {
+ return i < end ? s.codePointAt(i) : -1;
+ },
+ width(c) {
+ return c > 0xffff ? 2 : 1;
+ },
+};
+class Reader {
+ constructor() {
+ this._impl = legacyImpl;
+ this._s = "";
+ this._i = 0;
+ this._end = 0;
+ this._cp1 = -1;
+ this._w1 = 1;
+ this._cp2 = -1;
+ this._w2 = 1;
+ this._cp3 = -1;
+ this._w3 = 1;
+ this._cp4 = -1;
+ }
+ get source() {
+ return this._s;
+ }
+ get index() {
+ return this._i;
+ }
+ get currentCodePoint() {
+ return this._cp1;
+ }
+ get nextCodePoint() {
+ return this._cp2;
+ }
+ get nextCodePoint2() {
+ return this._cp3;
+ }
+ get nextCodePoint3() {
+ return this._cp4;
+ }
+ reset(source, start, end, uFlag) {
+ this._impl = uFlag ? unicodeImpl : legacyImpl;
+ this._s = source;
+ this._end = end;
+ this.rewind(start);
+ }
+ rewind(index) {
+ const impl = this._impl;
+ this._i = index;
+ this._cp1 = impl.at(this._s, this._end, index);
+ this._w1 = impl.width(this._cp1);
+ this._cp2 = impl.at(this._s, this._end, index + this._w1);
+ this._w2 = impl.width(this._cp2);
+ this._cp3 = impl.at(this._s, this._end, index + this._w1 + this._w2);
+ this._w3 = impl.width(this._cp3);
+ this._cp4 = impl.at(this._s, this._end, index + this._w1 + this._w2 + this._w3);
+ }
+ advance() {
+ if (this._cp1 !== -1) {
+ const impl = this._impl;
+ this._i += this._w1;
+ this._cp1 = this._cp2;
+ this._w1 = this._w2;
+ this._cp2 = this._cp3;
+ this._w2 = impl.width(this._cp2);
+ this._cp3 = this._cp4;
+ this._w3 = impl.width(this._cp3);
+ this._cp4 = impl.at(this._s, this._end, this._i + this._w1 + this._w2 + this._w3);
+ }
+ }
+ eat(cp) {
+ if (this._cp1 === cp) {
+ this.advance();
+ return true;
+ }
+ return false;
+ }
+ eat2(cp1, cp2) {
+ if (this._cp1 === cp1 && this._cp2 === cp2) {
+ this.advance();
+ this.advance();
+ return true;
+ }
+ return false;
+ }
+ eat3(cp1, cp2, cp3) {
+ if (this._cp1 === cp1 && this._cp2 === cp2 && this._cp3 === cp3) {
+ this.advance();
+ this.advance();
+ this.advance();
+ return true;
+ }
+ return false;
+ }
+}
+
+class RegExpSyntaxError extends SyntaxError {
+ constructor(srcCtx, flags, index, message) {
+ let source = "";
+ if (srcCtx.kind === "literal") {
+ const literal = srcCtx.source.slice(srcCtx.start, srcCtx.end);
+ if (literal) {
+ source = `: ${literal}`;
+ }
+ }
+ else if (srcCtx.kind === "pattern") {
+ const pattern = srcCtx.source.slice(srcCtx.start, srcCtx.end);
+ const flagsText = `${flags.unicode ? "u" : ""}${flags.unicodeSets ? "v" : ""}`;
+ source = `: /${pattern}/${flagsText}`;
+ }
+ super(`Invalid regular expression${source}: ${message}`);
+ this.index = index;
+ }
+}
+
+const binPropertyOfStringSets = new Set([
+ "Basic_Emoji",
+ "Emoji_Keycap_Sequence",
+ "RGI_Emoji_Modifier_Sequence",
+ "RGI_Emoji_Flag_Sequence",
+ "RGI_Emoji_Tag_Sequence",
+ "RGI_Emoji_ZWJ_Sequence",
+ "RGI_Emoji",
+]);
+function isValidLoneUnicodePropertyOfString(version, value) {
+ return version >= 2024 && binPropertyOfStringSets.has(value);
+}
+
+const SYNTAX_CHARACTER = new Set([
+ CIRCUMFLEX_ACCENT,
+ DOLLAR_SIGN,
+ REVERSE_SOLIDUS,
+ FULL_STOP,
+ ASTERISK,
+ PLUS_SIGN,
+ QUESTION_MARK,
+ LEFT_PARENTHESIS,
+ RIGHT_PARENTHESIS,
+ LEFT_SQUARE_BRACKET,
+ RIGHT_SQUARE_BRACKET,
+ LEFT_CURLY_BRACKET,
+ RIGHT_CURLY_BRACKET,
+ VERTICAL_LINE,
+]);
+const CLASS_SET_RESERVED_DOUBLE_PUNCTUATOR_CHARACTER = new Set([
+ AMPERSAND,
+ EXCLAMATION_MARK,
+ NUMBER_SIGN,
+ DOLLAR_SIGN,
+ PERCENT_SIGN,
+ ASTERISK,
+ PLUS_SIGN,
+ COMMA,
+ FULL_STOP,
+ COLON,
+ SEMICOLON,
+ LESS_THAN_SIGN,
+ EQUALS_SIGN,
+ GREATER_THAN_SIGN,
+ QUESTION_MARK,
+ COMMERCIAL_AT,
+ CIRCUMFLEX_ACCENT,
+ GRAVE_ACCENT,
+ TILDE,
+]);
+const CLASS_SET_SYNTAX_CHARACTER = new Set([
+ LEFT_PARENTHESIS,
+ RIGHT_PARENTHESIS,
+ LEFT_SQUARE_BRACKET,
+ RIGHT_SQUARE_BRACKET,
+ LEFT_CURLY_BRACKET,
+ RIGHT_CURLY_BRACKET,
+ SOLIDUS,
+ HYPHEN_MINUS,
+ REVERSE_SOLIDUS,
+ VERTICAL_LINE,
+]);
+const CLASS_SET_RESERVED_PUNCTUATOR = new Set([
+ AMPERSAND,
+ HYPHEN_MINUS,
+ EXCLAMATION_MARK,
+ NUMBER_SIGN,
+ PERCENT_SIGN,
+ COMMA,
+ COLON,
+ SEMICOLON,
+ LESS_THAN_SIGN,
+ EQUALS_SIGN,
+ GREATER_THAN_SIGN,
+ COMMERCIAL_AT,
+ GRAVE_ACCENT,
+ TILDE,
+]);
+function isSyntaxCharacter(cp) {
+ return SYNTAX_CHARACTER.has(cp);
+}
+function isClassSetReservedDoublePunctuatorCharacter(cp) {
+ return CLASS_SET_RESERVED_DOUBLE_PUNCTUATOR_CHARACTER.has(cp);
+}
+function isClassSetSyntaxCharacter(cp) {
+ return CLASS_SET_SYNTAX_CHARACTER.has(cp);
+}
+function isClassSetReservedPunctuator(cp) {
+ return CLASS_SET_RESERVED_PUNCTUATOR.has(cp);
+}
+function isIdentifierStartChar(cp) {
+ return isIdStart(cp) || cp === DOLLAR_SIGN || cp === LOW_LINE;
+}
+function isIdentifierPartChar(cp) {
+ return (isIdContinue(cp) ||
+ cp === DOLLAR_SIGN ||
+ cp === ZERO_WIDTH_NON_JOINER ||
+ cp === ZERO_WIDTH_JOINER);
+}
+function isUnicodePropertyNameCharacter(cp) {
+ return isLatinLetter(cp) || cp === LOW_LINE;
+}
+function isUnicodePropertyValueCharacter(cp) {
+ return isUnicodePropertyNameCharacter(cp) || isDecimalDigit(cp);
+}
+class RegExpValidator {
+ constructor(options) {
+ this._reader = new Reader();
+ this._unicodeMode = false;
+ this._unicodeSetsMode = false;
+ this._nFlag = false;
+ this._lastIntValue = 0;
+ this._lastRange = {
+ min: 0,
+ max: Number.POSITIVE_INFINITY,
+ };
+ this._lastStrValue = "";
+ this._lastAssertionIsQuantifiable = false;
+ this._numCapturingParens = 0;
+ this._groupNames = new Set();
+ this._backreferenceNames = new Set();
+ this._srcCtx = null;
+ this._options = options !== null && options !== void 0 ? options : {};
+ }
+ validateLiteral(source, start = 0, end = source.length) {
+ this._srcCtx = { source, start, end, kind: "literal" };
+ this._unicodeSetsMode = this._unicodeMode = this._nFlag = false;
+ this.reset(source, start, end);
+ this.onLiteralEnter(start);
+ if (this.eat(SOLIDUS) && this.eatRegExpBody() && this.eat(SOLIDUS)) {
+ const flagStart = this.index;
+ const unicode = source.includes("u", flagStart);
+ const unicodeSets = source.includes("v", flagStart);
+ this.validateFlagsInternal(source, flagStart, end);
+ this.validatePatternInternal(source, start + 1, flagStart - 1, {
+ unicode,
+ unicodeSets,
+ });
+ }
+ else if (start >= end) {
+ this.raise("Empty");
+ }
+ else {
+ const c = String.fromCodePoint(this.currentCodePoint);
+ this.raise(`Unexpected character '${c}'`);
+ }
+ this.onLiteralLeave(start, end);
+ }
+ validateFlags(source, start = 0, end = source.length) {
+ this._srcCtx = { source, start, end, kind: "flags" };
+ this.validateFlagsInternal(source, start, end);
+ }
+ validatePattern(source, start = 0, end = source.length, uFlagOrFlags = undefined) {
+ this._srcCtx = { source, start, end, kind: "pattern" };
+ this.validatePatternInternal(source, start, end, uFlagOrFlags);
+ }
+ validatePatternInternal(source, start = 0, end = source.length, uFlagOrFlags = undefined) {
+ const mode = this._parseFlagsOptionToMode(uFlagOrFlags, end);
+ this._unicodeMode = mode.unicodeMode;
+ this._nFlag = mode.nFlag;
+ this._unicodeSetsMode = mode.unicodeSetsMode;
+ this.reset(source, start, end);
+ this.consumePattern();
+ if (!this._nFlag &&
+ this.ecmaVersion >= 2018 &&
+ this._groupNames.size > 0) {
+ this._nFlag = true;
+ this.rewind(start);
+ this.consumePattern();
+ }
+ }
+ validateFlagsInternal(source, start, end) {
+ const existingFlags = new Set();
+ let global = false;
+ let ignoreCase = false;
+ let multiline = false;
+ let sticky = false;
+ let unicode = false;
+ let dotAll = false;
+ let hasIndices = false;
+ let unicodeSets = false;
+ for (let i = start; i < end; ++i) {
+ const flag = source.charCodeAt(i);
+ if (existingFlags.has(flag)) {
+ this.raise(`Duplicated flag '${source[i]}'`, { index: start });
+ }
+ existingFlags.add(flag);
+ if (flag === LATIN_SMALL_LETTER_G) {
+ global = true;
+ }
+ else if (flag === LATIN_SMALL_LETTER_I) {
+ ignoreCase = true;
+ }
+ else if (flag === LATIN_SMALL_LETTER_M) {
+ multiline = true;
+ }
+ else if (flag === LATIN_SMALL_LETTER_U &&
+ this.ecmaVersion >= 2015) {
+ unicode = true;
+ }
+ else if (flag === LATIN_SMALL_LETTER_Y &&
+ this.ecmaVersion >= 2015) {
+ sticky = true;
+ }
+ else if (flag === LATIN_SMALL_LETTER_S &&
+ this.ecmaVersion >= 2018) {
+ dotAll = true;
+ }
+ else if (flag === LATIN_SMALL_LETTER_D &&
+ this.ecmaVersion >= 2022) {
+ hasIndices = true;
+ }
+ else if (flag === LATIN_SMALL_LETTER_V &&
+ this.ecmaVersion >= 2024) {
+ unicodeSets = true;
+ }
+ else {
+ this.raise(`Invalid flag '${source[i]}'`, { index: start });
+ }
+ }
+ this.onRegExpFlags(start, end, {
+ global,
+ ignoreCase,
+ multiline,
+ unicode,
+ sticky,
+ dotAll,
+ hasIndices,
+ unicodeSets,
+ });
+ }
+ _parseFlagsOptionToMode(uFlagOrFlags, sourceEnd) {
+ let unicode = false;
+ let unicodeSets = false;
+ if (uFlagOrFlags && this.ecmaVersion >= 2015) {
+ if (typeof uFlagOrFlags === "object") {
+ unicode = Boolean(uFlagOrFlags.unicode);
+ if (this.ecmaVersion >= 2024) {
+ unicodeSets = Boolean(uFlagOrFlags.unicodeSets);
+ }
+ }
+ else {
+ unicode = uFlagOrFlags;
+ }
+ }
+ if (unicode && unicodeSets) {
+ this.raise("Invalid regular expression flags", {
+ index: sourceEnd + 1,
+ unicode,
+ unicodeSets,
+ });
+ }
+ const unicodeMode = unicode || unicodeSets;
+ const nFlag = (unicode && this.ecmaVersion >= 2018) ||
+ unicodeSets ||
+ Boolean(this._options.strict && this.ecmaVersion >= 2023);
+ const unicodeSetsMode = unicodeSets;
+ return { unicodeMode, nFlag, unicodeSetsMode };
+ }
+ get strict() {
+ return Boolean(this._options.strict) || this._unicodeMode;
+ }
+ get ecmaVersion() {
+ var _a;
+ return (_a = this._options.ecmaVersion) !== null && _a !== void 0 ? _a : latestEcmaVersion;
+ }
+ onLiteralEnter(start) {
+ if (this._options.onLiteralEnter) {
+ this._options.onLiteralEnter(start);
+ }
+ }
+ onLiteralLeave(start, end) {
+ if (this._options.onLiteralLeave) {
+ this._options.onLiteralLeave(start, end);
+ }
+ }
+ onRegExpFlags(start, end, flags) {
+ if (this._options.onRegExpFlags) {
+ this._options.onRegExpFlags(start, end, flags);
+ }
+ if (this._options.onFlags) {
+ this._options.onFlags(start, end, flags.global, flags.ignoreCase, flags.multiline, flags.unicode, flags.sticky, flags.dotAll, flags.hasIndices);
+ }
+ }
+ onPatternEnter(start) {
+ if (this._options.onPatternEnter) {
+ this._options.onPatternEnter(start);
+ }
+ }
+ onPatternLeave(start, end) {
+ if (this._options.onPatternLeave) {
+ this._options.onPatternLeave(start, end);
+ }
+ }
+ onDisjunctionEnter(start) {
+ if (this._options.onDisjunctionEnter) {
+ this._options.onDisjunctionEnter(start);
+ }
+ }
+ onDisjunctionLeave(start, end) {
+ if (this._options.onDisjunctionLeave) {
+ this._options.onDisjunctionLeave(start, end);
+ }
+ }
+ onAlternativeEnter(start, index) {
+ if (this._options.onAlternativeEnter) {
+ this._options.onAlternativeEnter(start, index);
+ }
+ }
+ onAlternativeLeave(start, end, index) {
+ if (this._options.onAlternativeLeave) {
+ this._options.onAlternativeLeave(start, end, index);
+ }
+ }
+ onGroupEnter(start) {
+ if (this._options.onGroupEnter) {
+ this._options.onGroupEnter(start);
+ }
+ }
+ onGroupLeave(start, end) {
+ if (this._options.onGroupLeave) {
+ this._options.onGroupLeave(start, end);
+ }
+ }
+ onCapturingGroupEnter(start, name) {
+ if (this._options.onCapturingGroupEnter) {
+ this._options.onCapturingGroupEnter(start, name);
+ }
+ }
+ onCapturingGroupLeave(start, end, name) {
+ if (this._options.onCapturingGroupLeave) {
+ this._options.onCapturingGroupLeave(start, end, name);
+ }
+ }
+ onQuantifier(start, end, min, max, greedy) {
+ if (this._options.onQuantifier) {
+ this._options.onQuantifier(start, end, min, max, greedy);
+ }
+ }
+ onLookaroundAssertionEnter(start, kind, negate) {
+ if (this._options.onLookaroundAssertionEnter) {
+ this._options.onLookaroundAssertionEnter(start, kind, negate);
+ }
+ }
+ onLookaroundAssertionLeave(start, end, kind, negate) {
+ if (this._options.onLookaroundAssertionLeave) {
+ this._options.onLookaroundAssertionLeave(start, end, kind, negate);
+ }
+ }
+ onEdgeAssertion(start, end, kind) {
+ if (this._options.onEdgeAssertion) {
+ this._options.onEdgeAssertion(start, end, kind);
+ }
+ }
+ onWordBoundaryAssertion(start, end, kind, negate) {
+ if (this._options.onWordBoundaryAssertion) {
+ this._options.onWordBoundaryAssertion(start, end, kind, negate);
+ }
+ }
+ onAnyCharacterSet(start, end, kind) {
+ if (this._options.onAnyCharacterSet) {
+ this._options.onAnyCharacterSet(start, end, kind);
+ }
+ }
+ onEscapeCharacterSet(start, end, kind, negate) {
+ if (this._options.onEscapeCharacterSet) {
+ this._options.onEscapeCharacterSet(start, end, kind, negate);
+ }
+ }
+ onUnicodePropertyCharacterSet(start, end, kind, key, value, negate, strings) {
+ if (this._options.onUnicodePropertyCharacterSet) {
+ this._options.onUnicodePropertyCharacterSet(start, end, kind, key, value, negate, strings);
+ }
+ }
+ onCharacter(start, end, value) {
+ if (this._options.onCharacter) {
+ this._options.onCharacter(start, end, value);
+ }
+ }
+ onBackreference(start, end, ref) {
+ if (this._options.onBackreference) {
+ this._options.onBackreference(start, end, ref);
+ }
+ }
+ onCharacterClassEnter(start, negate, unicodeSets) {
+ if (this._options.onCharacterClassEnter) {
+ this._options.onCharacterClassEnter(start, negate, unicodeSets);
+ }
+ }
+ onCharacterClassLeave(start, end, negate) {
+ if (this._options.onCharacterClassLeave) {
+ this._options.onCharacterClassLeave(start, end, negate);
+ }
+ }
+ onCharacterClassRange(start, end, min, max) {
+ if (this._options.onCharacterClassRange) {
+ this._options.onCharacterClassRange(start, end, min, max);
+ }
+ }
+ onClassIntersection(start, end) {
+ if (this._options.onClassIntersection) {
+ this._options.onClassIntersection(start, end);
+ }
+ }
+ onClassSubtraction(start, end) {
+ if (this._options.onClassSubtraction) {
+ this._options.onClassSubtraction(start, end);
+ }
+ }
+ onClassStringDisjunctionEnter(start) {
+ if (this._options.onClassStringDisjunctionEnter) {
+ this._options.onClassStringDisjunctionEnter(start);
+ }
+ }
+ onClassStringDisjunctionLeave(start, end) {
+ if (this._options.onClassStringDisjunctionLeave) {
+ this._options.onClassStringDisjunctionLeave(start, end);
+ }
+ }
+ onStringAlternativeEnter(start, index) {
+ if (this._options.onStringAlternativeEnter) {
+ this._options.onStringAlternativeEnter(start, index);
+ }
+ }
+ onStringAlternativeLeave(start, end, index) {
+ if (this._options.onStringAlternativeLeave) {
+ this._options.onStringAlternativeLeave(start, end, index);
+ }
+ }
+ get index() {
+ return this._reader.index;
+ }
+ get currentCodePoint() {
+ return this._reader.currentCodePoint;
+ }
+ get nextCodePoint() {
+ return this._reader.nextCodePoint;
+ }
+ get nextCodePoint2() {
+ return this._reader.nextCodePoint2;
+ }
+ get nextCodePoint3() {
+ return this._reader.nextCodePoint3;
+ }
+ reset(source, start, end) {
+ this._reader.reset(source, start, end, this._unicodeMode);
+ }
+ rewind(index) {
+ this._reader.rewind(index);
+ }
+ advance() {
+ this._reader.advance();
+ }
+ eat(cp) {
+ return this._reader.eat(cp);
+ }
+ eat2(cp1, cp2) {
+ return this._reader.eat2(cp1, cp2);
+ }
+ eat3(cp1, cp2, cp3) {
+ return this._reader.eat3(cp1, cp2, cp3);
+ }
+ raise(message, context) {
+ var _a, _b, _c;
+ throw new RegExpSyntaxError(this._srcCtx, {
+ unicode: (_a = context === null || context === void 0 ? void 0 : context.unicode) !== null && _a !== void 0 ? _a : (this._unicodeMode && !this._unicodeSetsMode),
+ unicodeSets: (_b = context === null || context === void 0 ? void 0 : context.unicodeSets) !== null && _b !== void 0 ? _b : this._unicodeSetsMode,
+ }, (_c = context === null || context === void 0 ? void 0 : context.index) !== null && _c !== void 0 ? _c : this.index, message);
+ }
+ eatRegExpBody() {
+ const start = this.index;
+ let inClass = false;
+ let escaped = false;
+ for (;;) {
+ const cp = this.currentCodePoint;
+ if (cp === -1 || isLineTerminator(cp)) {
+ const kind = inClass ? "character class" : "regular expression";
+ this.raise(`Unterminated ${kind}`);
+ }
+ if (escaped) {
+ escaped = false;
+ }
+ else if (cp === REVERSE_SOLIDUS) {
+ escaped = true;
+ }
+ else if (cp === LEFT_SQUARE_BRACKET) {
+ inClass = true;
+ }
+ else if (cp === RIGHT_SQUARE_BRACKET) {
+ inClass = false;
+ }
+ else if ((cp === SOLIDUS && !inClass) ||
+ (cp === ASTERISK && this.index === start)) {
+ break;
+ }
+ this.advance();
+ }
+ return this.index !== start;
+ }
+ consumePattern() {
+ const start = this.index;
+ this._numCapturingParens = this.countCapturingParens();
+ this._groupNames.clear();
+ this._backreferenceNames.clear();
+ this.onPatternEnter(start);
+ this.consumeDisjunction();
+ const cp = this.currentCodePoint;
+ if (this.currentCodePoint !== -1) {
+ if (cp === RIGHT_PARENTHESIS) {
+ this.raise("Unmatched ')'");
+ }
+ if (cp === REVERSE_SOLIDUS) {
+ this.raise("\\ at end of pattern");
+ }
+ if (cp === RIGHT_SQUARE_BRACKET || cp === RIGHT_CURLY_BRACKET) {
+ this.raise("Lone quantifier brackets");
+ }
+ const c = String.fromCodePoint(cp);
+ this.raise(`Unexpected character '${c}'`);
+ }
+ for (const name of this._backreferenceNames) {
+ if (!this._groupNames.has(name)) {
+ this.raise("Invalid named capture referenced");
+ }
+ }
+ this.onPatternLeave(start, this.index);
+ }
+ countCapturingParens() {
+ const start = this.index;
+ let inClass = false;
+ let escaped = false;
+ let count = 0;
+ let cp = 0;
+ while ((cp = this.currentCodePoint) !== -1) {
+ if (escaped) {
+ escaped = false;
+ }
+ else if (cp === REVERSE_SOLIDUS) {
+ escaped = true;
+ }
+ else if (cp === LEFT_SQUARE_BRACKET) {
+ inClass = true;
+ }
+ else if (cp === RIGHT_SQUARE_BRACKET) {
+ inClass = false;
+ }
+ else if (cp === LEFT_PARENTHESIS &&
+ !inClass &&
+ (this.nextCodePoint !== QUESTION_MARK ||
+ (this.nextCodePoint2 === LESS_THAN_SIGN &&
+ this.nextCodePoint3 !== EQUALS_SIGN &&
+ this.nextCodePoint3 !== EXCLAMATION_MARK))) {
+ count += 1;
+ }
+ this.advance();
+ }
+ this.rewind(start);
+ return count;
+ }
+ consumeDisjunction() {
+ const start = this.index;
+ let i = 0;
+ this.onDisjunctionEnter(start);
+ do {
+ this.consumeAlternative(i++);
+ } while (this.eat(VERTICAL_LINE));
+ if (this.consumeQuantifier(true)) {
+ this.raise("Nothing to repeat");
+ }
+ if (this.eat(LEFT_CURLY_BRACKET)) {
+ this.raise("Lone quantifier brackets");
+ }
+ this.onDisjunctionLeave(start, this.index);
+ }
+ consumeAlternative(i) {
+ const start = this.index;
+ this.onAlternativeEnter(start, i);
+ while (this.currentCodePoint !== -1 && this.consumeTerm()) {
+ }
+ this.onAlternativeLeave(start, this.index, i);
+ }
+ consumeTerm() {
+ if (this._unicodeMode || this.strict) {
+ return (this.consumeAssertion() ||
+ (this.consumeAtom() && this.consumeOptionalQuantifier()));
+ }
+ return ((this.consumeAssertion() &&
+ (!this._lastAssertionIsQuantifiable ||
+ this.consumeOptionalQuantifier())) ||
+ (this.consumeExtendedAtom() && this.consumeOptionalQuantifier()));
+ }
+ consumeOptionalQuantifier() {
+ this.consumeQuantifier();
+ return true;
+ }
+ consumeAssertion() {
+ const start = this.index;
+ this._lastAssertionIsQuantifiable = false;
+ if (this.eat(CIRCUMFLEX_ACCENT)) {
+ this.onEdgeAssertion(start, this.index, "start");
+ return true;
+ }
+ if (this.eat(DOLLAR_SIGN)) {
+ this.onEdgeAssertion(start, this.index, "end");
+ return true;
+ }
+ if (this.eat2(REVERSE_SOLIDUS, LATIN_CAPITAL_LETTER_B)) {
+ this.onWordBoundaryAssertion(start, this.index, "word", true);
+ return true;
+ }
+ if (this.eat2(REVERSE_SOLIDUS, LATIN_SMALL_LETTER_B)) {
+ this.onWordBoundaryAssertion(start, this.index, "word", false);
+ return true;
+ }
+ if (this.eat2(LEFT_PARENTHESIS, QUESTION_MARK)) {
+ const lookbehind = this.ecmaVersion >= 2018 && this.eat(LESS_THAN_SIGN);
+ let negate = false;
+ if (this.eat(EQUALS_SIGN) ||
+ (negate = this.eat(EXCLAMATION_MARK))) {
+ const kind = lookbehind ? "lookbehind" : "lookahead";
+ this.onLookaroundAssertionEnter(start, kind, negate);
+ this.consumeDisjunction();
+ if (!this.eat(RIGHT_PARENTHESIS)) {
+ this.raise("Unterminated group");
+ }
+ this._lastAssertionIsQuantifiable = !lookbehind && !this.strict;
+ this.onLookaroundAssertionLeave(start, this.index, kind, negate);
+ return true;
+ }
+ this.rewind(start);
+ }
+ return false;
+ }
+ consumeQuantifier(noConsume = false) {
+ const start = this.index;
+ let min = 0;
+ let max = 0;
+ let greedy = false;
+ if (this.eat(ASTERISK)) {
+ min = 0;
+ max = Number.POSITIVE_INFINITY;
+ }
+ else if (this.eat(PLUS_SIGN)) {
+ min = 1;
+ max = Number.POSITIVE_INFINITY;
+ }
+ else if (this.eat(QUESTION_MARK)) {
+ min = 0;
+ max = 1;
+ }
+ else if (this.eatBracedQuantifier(noConsume)) {
+ ({ min, max } = this._lastRange);
+ }
+ else {
+ return false;
+ }
+ greedy = !this.eat(QUESTION_MARK);
+ if (!noConsume) {
+ this.onQuantifier(start, this.index, min, max, greedy);
+ }
+ return true;
+ }
+ eatBracedQuantifier(noError) {
+ const start = this.index;
+ if (this.eat(LEFT_CURLY_BRACKET)) {
+ if (this.eatDecimalDigits()) {
+ const min = this._lastIntValue;
+ let max = min;
+ if (this.eat(COMMA)) {
+ max = this.eatDecimalDigits()
+ ? this._lastIntValue
+ : Number.POSITIVE_INFINITY;
+ }
+ if (this.eat(RIGHT_CURLY_BRACKET)) {
+ if (!noError && max < min) {
+ this.raise("numbers out of order in {} quantifier");
+ }
+ this._lastRange = { min, max };
+ return true;
+ }
+ }
+ if (!noError && (this._unicodeMode || this.strict)) {
+ this.raise("Incomplete quantifier");
+ }
+ this.rewind(start);
+ }
+ return false;
+ }
+ consumeAtom() {
+ return (this.consumePatternCharacter() ||
+ this.consumeDot() ||
+ this.consumeReverseSolidusAtomEscape() ||
+ Boolean(this.consumeCharacterClass()) ||
+ this.consumeUncapturingGroup() ||
+ this.consumeCapturingGroup());
+ }
+ consumeDot() {
+ if (this.eat(FULL_STOP)) {
+ this.onAnyCharacterSet(this.index - 1, this.index, "any");
+ return true;
+ }
+ return false;
+ }
+ consumeReverseSolidusAtomEscape() {
+ const start = this.index;
+ if (this.eat(REVERSE_SOLIDUS)) {
+ if (this.consumeAtomEscape()) {
+ return true;
+ }
+ this.rewind(start);
+ }
+ return false;
+ }
+ consumeUncapturingGroup() {
+ const start = this.index;
+ if (this.eat3(LEFT_PARENTHESIS, QUESTION_MARK, COLON)) {
+ this.onGroupEnter(start);
+ this.consumeDisjunction();
+ if (!this.eat(RIGHT_PARENTHESIS)) {
+ this.raise("Unterminated group");
+ }
+ this.onGroupLeave(start, this.index);
+ return true;
+ }
+ return false;
+ }
+ consumeCapturingGroup() {
+ const start = this.index;
+ if (this.eat(LEFT_PARENTHESIS)) {
+ let name = null;
+ if (this.ecmaVersion >= 2018) {
+ if (this.consumeGroupSpecifier()) {
+ name = this._lastStrValue;
+ }
+ }
+ else if (this.currentCodePoint === QUESTION_MARK) {
+ this.raise("Invalid group");
+ }
+ this.onCapturingGroupEnter(start, name);
+ this.consumeDisjunction();
+ if (!this.eat(RIGHT_PARENTHESIS)) {
+ this.raise("Unterminated group");
+ }
+ this.onCapturingGroupLeave(start, this.index, name);
+ return true;
+ }
+ return false;
+ }
+ consumeExtendedAtom() {
+ return (this.consumeDot() ||
+ this.consumeReverseSolidusAtomEscape() ||
+ this.consumeReverseSolidusFollowedByC() ||
+ Boolean(this.consumeCharacterClass()) ||
+ this.consumeUncapturingGroup() ||
+ this.consumeCapturingGroup() ||
+ this.consumeInvalidBracedQuantifier() ||
+ this.consumeExtendedPatternCharacter());
+ }
+ consumeReverseSolidusFollowedByC() {
+ const start = this.index;
+ if (this.currentCodePoint === REVERSE_SOLIDUS &&
+ this.nextCodePoint === LATIN_SMALL_LETTER_C) {
+ this._lastIntValue = this.currentCodePoint;
+ this.advance();
+ this.onCharacter(start, this.index, REVERSE_SOLIDUS);
+ return true;
+ }
+ return false;
+ }
+ consumeInvalidBracedQuantifier() {
+ if (this.eatBracedQuantifier(true)) {
+ this.raise("Nothing to repeat");
+ }
+ return false;
+ }
+ consumePatternCharacter() {
+ const start = this.index;
+ const cp = this.currentCodePoint;
+ if (cp !== -1 && !isSyntaxCharacter(cp)) {
+ this.advance();
+ this.onCharacter(start, this.index, cp);
+ return true;
+ }
+ return false;
+ }
+ consumeExtendedPatternCharacter() {
+ const start = this.index;
+ const cp = this.currentCodePoint;
+ if (cp !== -1 &&
+ cp !== CIRCUMFLEX_ACCENT &&
+ cp !== DOLLAR_SIGN &&
+ cp !== REVERSE_SOLIDUS &&
+ cp !== FULL_STOP &&
+ cp !== ASTERISK &&
+ cp !== PLUS_SIGN &&
+ cp !== QUESTION_MARK &&
+ cp !== LEFT_PARENTHESIS &&
+ cp !== RIGHT_PARENTHESIS &&
+ cp !== LEFT_SQUARE_BRACKET &&
+ cp !== VERTICAL_LINE) {
+ this.advance();
+ this.onCharacter(start, this.index, cp);
+ return true;
+ }
+ return false;
+ }
+ consumeGroupSpecifier() {
+ if (this.eat(QUESTION_MARK)) {
+ if (this.eatGroupName()) {
+ if (!this._groupNames.has(this._lastStrValue)) {
+ this._groupNames.add(this._lastStrValue);
+ return true;
+ }
+ this.raise("Duplicate capture group name");
+ }
+ this.raise("Invalid group");
+ }
+ return false;
+ }
+ consumeAtomEscape() {
+ if (this.consumeBackreference() ||
+ this.consumeCharacterClassEscape() ||
+ this.consumeCharacterEscape() ||
+ (this._nFlag && this.consumeKGroupName())) {
+ return true;
+ }
+ if (this.strict || this._unicodeMode) {
+ this.raise("Invalid escape");
+ }
+ return false;
+ }
+ consumeBackreference() {
+ const start = this.index;
+ if (this.eatDecimalEscape()) {
+ const n = this._lastIntValue;
+ if (n <= this._numCapturingParens) {
+ this.onBackreference(start - 1, this.index, n);
+ return true;
+ }
+ if (this.strict || this._unicodeMode) {
+ this.raise("Invalid escape");
+ }
+ this.rewind(start);
+ }
+ return false;
+ }
+ consumeCharacterClassEscape() {
+ var _a;
+ const start = this.index;
+ if (this.eat(LATIN_SMALL_LETTER_D)) {
+ this._lastIntValue = -1;
+ this.onEscapeCharacterSet(start - 1, this.index, "digit", false);
+ return {};
+ }
+ if (this.eat(LATIN_CAPITAL_LETTER_D)) {
+ this._lastIntValue = -1;
+ this.onEscapeCharacterSet(start - 1, this.index, "digit", true);
+ return {};
+ }
+ if (this.eat(LATIN_SMALL_LETTER_S)) {
+ this._lastIntValue = -1;
+ this.onEscapeCharacterSet(start - 1, this.index, "space", false);
+ return {};
+ }
+ if (this.eat(LATIN_CAPITAL_LETTER_S)) {
+ this._lastIntValue = -1;
+ this.onEscapeCharacterSet(start - 1, this.index, "space", true);
+ return {};
+ }
+ if (this.eat(LATIN_SMALL_LETTER_W)) {
+ this._lastIntValue = -1;
+ this.onEscapeCharacterSet(start - 1, this.index, "word", false);
+ return {};
+ }
+ if (this.eat(LATIN_CAPITAL_LETTER_W)) {
+ this._lastIntValue = -1;
+ this.onEscapeCharacterSet(start - 1, this.index, "word", true);
+ return {};
+ }
+ let negate = false;
+ if (this._unicodeMode &&
+ this.ecmaVersion >= 2018 &&
+ (this.eat(LATIN_SMALL_LETTER_P) ||
+ (negate = this.eat(LATIN_CAPITAL_LETTER_P)))) {
+ this._lastIntValue = -1;
+ let result = null;
+ if (this.eat(LEFT_CURLY_BRACKET) &&
+ (result = this.eatUnicodePropertyValueExpression()) &&
+ this.eat(RIGHT_CURLY_BRACKET)) {
+ if (negate && result.strings) {
+ this.raise("Invalid property name");
+ }
+ this.onUnicodePropertyCharacterSet(start - 1, this.index, "property", result.key, result.value, negate, (_a = result.strings) !== null && _a !== void 0 ? _a : false);
+ return { mayContainStrings: result.strings };
+ }
+ this.raise("Invalid property name");
+ }
+ return null;
+ }
+ consumeCharacterEscape() {
+ const start = this.index;
+ if (this.eatControlEscape() ||
+ this.eatCControlLetter() ||
+ this.eatZero() ||
+ this.eatHexEscapeSequence() ||
+ this.eatRegExpUnicodeEscapeSequence() ||
+ (!this.strict &&
+ !this._unicodeMode &&
+ this.eatLegacyOctalEscapeSequence()) ||
+ this.eatIdentityEscape()) {
+ this.onCharacter(start - 1, this.index, this._lastIntValue);
+ return true;
+ }
+ return false;
+ }
+ consumeKGroupName() {
+ const start = this.index;
+ if (this.eat(LATIN_SMALL_LETTER_K)) {
+ if (this.eatGroupName()) {
+ const groupName = this._lastStrValue;
+ this._backreferenceNames.add(groupName);
+ this.onBackreference(start - 1, this.index, groupName);
+ return true;
+ }
+ this.raise("Invalid named reference");
+ }
+ return false;
+ }
+ consumeCharacterClass() {
+ const start = this.index;
+ if (this.eat(LEFT_SQUARE_BRACKET)) {
+ const negate = this.eat(CIRCUMFLEX_ACCENT);
+ this.onCharacterClassEnter(start, negate, this._unicodeSetsMode);
+ const result = this.consumeClassContents();
+ if (!this.eat(RIGHT_SQUARE_BRACKET)) {
+ if (this.currentCodePoint === -1) {
+ this.raise("Unterminated character class");
+ }
+ this.raise("Invalid character in character class");
+ }
+ if (negate && result.mayContainStrings) {
+ this.raise("Negated character class may contain strings");
+ }
+ this.onCharacterClassLeave(start, this.index, negate);
+ return result;
+ }
+ return null;
+ }
+ consumeClassContents() {
+ if (this._unicodeSetsMode) {
+ if (this.currentCodePoint === RIGHT_SQUARE_BRACKET) {
+ return {};
+ }
+ const result = this.consumeClassSetExpression();
+ return result;
+ }
+ const strict = this.strict || this._unicodeMode;
+ for (;;) {
+ const rangeStart = this.index;
+ if (!this.consumeClassAtom()) {
+ break;
+ }
+ const min = this._lastIntValue;
+ if (!this.eat(HYPHEN_MINUS)) {
+ continue;
+ }
+ this.onCharacter(this.index - 1, this.index, HYPHEN_MINUS);
+ if (!this.consumeClassAtom()) {
+ break;
+ }
+ const max = this._lastIntValue;
+ if (min === -1 || max === -1) {
+ if (strict) {
+ this.raise("Invalid character class");
+ }
+ continue;
+ }
+ if (min > max) {
+ this.raise("Range out of order in character class");
+ }
+ this.onCharacterClassRange(rangeStart, this.index, min, max);
+ }
+ return {};
+ }
+ consumeClassAtom() {
+ const start = this.index;
+ const cp = this.currentCodePoint;
+ if (cp !== -1 &&
+ cp !== REVERSE_SOLIDUS &&
+ cp !== RIGHT_SQUARE_BRACKET) {
+ this.advance();
+ this._lastIntValue = cp;
+ this.onCharacter(start, this.index, this._lastIntValue);
+ return true;
+ }
+ if (this.eat(REVERSE_SOLIDUS)) {
+ if (this.consumeClassEscape()) {
+ return true;
+ }
+ if (!this.strict &&
+ this.currentCodePoint === LATIN_SMALL_LETTER_C) {
+ this._lastIntValue = REVERSE_SOLIDUS;
+ this.onCharacter(start, this.index, this._lastIntValue);
+ return true;
+ }
+ if (this.strict || this._unicodeMode) {
+ this.raise("Invalid escape");
+ }
+ this.rewind(start);
+ }
+ return false;
+ }
+ consumeClassEscape() {
+ const start = this.index;
+ if (this.eat(LATIN_SMALL_LETTER_B)) {
+ this._lastIntValue = BACKSPACE;
+ this.onCharacter(start - 1, this.index, this._lastIntValue);
+ return true;
+ }
+ if (this._unicodeMode && this.eat(HYPHEN_MINUS)) {
+ this._lastIntValue = HYPHEN_MINUS;
+ this.onCharacter(start - 1, this.index, this._lastIntValue);
+ return true;
+ }
+ let cp = 0;
+ if (!this.strict &&
+ !this._unicodeMode &&
+ this.currentCodePoint === LATIN_SMALL_LETTER_C &&
+ (isDecimalDigit((cp = this.nextCodePoint)) || cp === LOW_LINE)) {
+ this.advance();
+ this.advance();
+ this._lastIntValue = cp % 0x20;
+ this.onCharacter(start - 1, this.index, this._lastIntValue);
+ return true;
+ }
+ return (Boolean(this.consumeCharacterClassEscape()) ||
+ this.consumeCharacterEscape());
+ }
+ consumeClassSetExpression() {
+ const start = this.index;
+ let mayContainStrings = false;
+ let result = null;
+ if (this.consumeClassSetCharacter()) {
+ if (this.consumeClassSetRangeFromOperator(start)) {
+ this.consumeClassUnionRight({});
+ return {};
+ }
+ mayContainStrings = false;
+ }
+ else if ((result = this.consumeClassSetOperand())) {
+ mayContainStrings = result.mayContainStrings;
+ }
+ else {
+ const cp = this.currentCodePoint;
+ if (cp === REVERSE_SOLIDUS) {
+ this.advance();
+ this.raise("Invalid escape");
+ }
+ if (cp === this.nextCodePoint &&
+ isClassSetReservedDoublePunctuatorCharacter(cp)) {
+ this.raise("Invalid set operation in character class");
+ }
+ this.raise("Invalid character in character class");
+ }
+ if (this.eat2(AMPERSAND, AMPERSAND)) {
+ while (this.currentCodePoint !== AMPERSAND &&
+ (result = this.consumeClassSetOperand())) {
+ this.onClassIntersection(start, this.index);
+ if (!result.mayContainStrings) {
+ mayContainStrings = false;
+ }
+ if (this.eat2(AMPERSAND, AMPERSAND)) {
+ continue;
+ }
+ return { mayContainStrings };
+ }
+ this.raise("Invalid character in character class");
+ }
+ if (this.eat2(HYPHEN_MINUS, HYPHEN_MINUS)) {
+ while (this.consumeClassSetOperand()) {
+ this.onClassSubtraction(start, this.index);
+ if (this.eat2(HYPHEN_MINUS, HYPHEN_MINUS)) {
+ continue;
+ }
+ return { mayContainStrings };
+ }
+ this.raise("Invalid character in character class");
+ }
+ return this.consumeClassUnionRight({ mayContainStrings });
+ }
+ consumeClassUnionRight(leftResult) {
+ let mayContainStrings = leftResult.mayContainStrings;
+ for (;;) {
+ const start = this.index;
+ if (this.consumeClassSetCharacter()) {
+ this.consumeClassSetRangeFromOperator(start);
+ continue;
+ }
+ const result = this.consumeClassSetOperand();
+ if (result) {
+ if (result.mayContainStrings) {
+ mayContainStrings = true;
+ }
+ continue;
+ }
+ break;
+ }
+ return { mayContainStrings };
+ }
+ consumeClassSetRangeFromOperator(start) {
+ const currentStart = this.index;
+ const min = this._lastIntValue;
+ if (this.eat(HYPHEN_MINUS)) {
+ if (this.consumeClassSetCharacter()) {
+ const max = this._lastIntValue;
+ if (min === -1 || max === -1) {
+ this.raise("Invalid character class");
+ }
+ if (min > max) {
+ this.raise("Range out of order in character class");
+ }
+ this.onCharacterClassRange(start, this.index, min, max);
+ return true;
+ }
+ this.rewind(currentStart);
+ }
+ return false;
+ }
+ consumeClassSetOperand() {
+ let result = null;
+ if ((result = this.consumeNestedClass())) {
+ return result;
+ }
+ if ((result = this.consumeClassStringDisjunction())) {
+ return result;
+ }
+ if (this.consumeClassSetCharacter()) {
+ return {};
+ }
+ return null;
+ }
+ consumeNestedClass() {
+ const start = this.index;
+ if (this.eat(LEFT_SQUARE_BRACKET)) {
+ const negate = this.eat(CIRCUMFLEX_ACCENT);
+ this.onCharacterClassEnter(start, negate, true);
+ const result = this.consumeClassContents();
+ if (!this.eat(RIGHT_SQUARE_BRACKET)) {
+ this.raise("Unterminated character class");
+ }
+ if (negate && result.mayContainStrings) {
+ this.raise("Negated character class may contain strings");
+ }
+ this.onCharacterClassLeave(start, this.index, negate);
+ return result;
+ }
+ if (this.eat(REVERSE_SOLIDUS)) {
+ const result = this.consumeCharacterClassEscape();
+ if (result) {
+ return result;
+ }
+ this.rewind(start);
+ }
+ return null;
+ }
+ consumeClassStringDisjunction() {
+ const start = this.index;
+ if (this.eat3(REVERSE_SOLIDUS, LATIN_SMALL_LETTER_Q, LEFT_CURLY_BRACKET)) {
+ this.onClassStringDisjunctionEnter(start);
+ let i = 0;
+ let mayContainStrings = false;
+ do {
+ if (this.consumeClassString(i++).mayContainStrings) {
+ mayContainStrings = true;
+ }
+ } while (this.eat(VERTICAL_LINE));
+ if (this.eat(RIGHT_CURLY_BRACKET)) {
+ this.onClassStringDisjunctionLeave(start, this.index);
+ return { mayContainStrings };
+ }
+ this.raise("Unterminated class string disjunction");
+ }
+ return null;
+ }
+ consumeClassString(i) {
+ const start = this.index;
+ let count = 0;
+ this.onStringAlternativeEnter(start, i);
+ while (this.currentCodePoint !== -1 &&
+ this.consumeClassSetCharacter()) {
+ count++;
+ }
+ this.onStringAlternativeLeave(start, this.index, i);
+ return { mayContainStrings: count !== 1 };
+ }
+ consumeClassSetCharacter() {
+ const start = this.index;
+ const cp = this.currentCodePoint;
+ if (cp !== this.nextCodePoint ||
+ !isClassSetReservedDoublePunctuatorCharacter(cp)) {
+ if (cp !== -1 && !isClassSetSyntaxCharacter(cp)) {
+ this._lastIntValue = cp;
+ this.advance();
+ this.onCharacter(start, this.index, this._lastIntValue);
+ return true;
+ }
+ }
+ if (this.eat(REVERSE_SOLIDUS)) {
+ if (this.consumeCharacterEscape()) {
+ return true;
+ }
+ if (isClassSetReservedPunctuator(this.currentCodePoint)) {
+ this._lastIntValue = this.currentCodePoint;
+ this.advance();
+ this.onCharacter(start, this.index, this._lastIntValue);
+ return true;
+ }
+ if (this.eat(LATIN_SMALL_LETTER_B)) {
+ this._lastIntValue = BACKSPACE;
+ this.onCharacter(start, this.index, this._lastIntValue);
+ return true;
+ }
+ this.rewind(start);
+ }
+ return false;
+ }
+ eatGroupName() {
+ if (this.eat(LESS_THAN_SIGN)) {
+ if (this.eatRegExpIdentifierName() && this.eat(GREATER_THAN_SIGN)) {
+ return true;
+ }
+ this.raise("Invalid capture group name");
+ }
+ return false;
+ }
+ eatRegExpIdentifierName() {
+ if (this.eatRegExpIdentifierStart()) {
+ this._lastStrValue = String.fromCodePoint(this._lastIntValue);
+ while (this.eatRegExpIdentifierPart()) {
+ this._lastStrValue += String.fromCodePoint(this._lastIntValue);
+ }
+ return true;
+ }
+ return false;
+ }
+ eatRegExpIdentifierStart() {
+ const start = this.index;
+ const forceUFlag = !this._unicodeMode && this.ecmaVersion >= 2020;
+ let cp = this.currentCodePoint;
+ this.advance();
+ if (cp === REVERSE_SOLIDUS &&
+ this.eatRegExpUnicodeEscapeSequence(forceUFlag)) {
+ cp = this._lastIntValue;
+ }
+ else if (forceUFlag &&
+ isLeadSurrogate(cp) &&
+ isTrailSurrogate(this.currentCodePoint)) {
+ cp = combineSurrogatePair(cp, this.currentCodePoint);
+ this.advance();
+ }
+ if (isIdentifierStartChar(cp)) {
+ this._lastIntValue = cp;
+ return true;
+ }
+ if (this.index !== start) {
+ this.rewind(start);
+ }
+ return false;
+ }
+ eatRegExpIdentifierPart() {
+ const start = this.index;
+ const forceUFlag = !this._unicodeMode && this.ecmaVersion >= 2020;
+ let cp = this.currentCodePoint;
+ this.advance();
+ if (cp === REVERSE_SOLIDUS &&
+ this.eatRegExpUnicodeEscapeSequence(forceUFlag)) {
+ cp = this._lastIntValue;
+ }
+ else if (forceUFlag &&
+ isLeadSurrogate(cp) &&
+ isTrailSurrogate(this.currentCodePoint)) {
+ cp = combineSurrogatePair(cp, this.currentCodePoint);
+ this.advance();
+ }
+ if (isIdentifierPartChar(cp)) {
+ this._lastIntValue = cp;
+ return true;
+ }
+ if (this.index !== start) {
+ this.rewind(start);
+ }
+ return false;
+ }
+ eatCControlLetter() {
+ const start = this.index;
+ if (this.eat(LATIN_SMALL_LETTER_C)) {
+ if (this.eatControlLetter()) {
+ return true;
+ }
+ this.rewind(start);
+ }
+ return false;
+ }
+ eatZero() {
+ if (this.currentCodePoint === DIGIT_ZERO &&
+ !isDecimalDigit(this.nextCodePoint)) {
+ this._lastIntValue = 0;
+ this.advance();
+ return true;
+ }
+ return false;
+ }
+ eatControlEscape() {
+ if (this.eat(LATIN_SMALL_LETTER_F)) {
+ this._lastIntValue = FORM_FEED;
+ return true;
+ }
+ if (this.eat(LATIN_SMALL_LETTER_N)) {
+ this._lastIntValue = LINE_FEED;
+ return true;
+ }
+ if (this.eat(LATIN_SMALL_LETTER_R)) {
+ this._lastIntValue = CARRIAGE_RETURN;
+ return true;
+ }
+ if (this.eat(LATIN_SMALL_LETTER_T)) {
+ this._lastIntValue = CHARACTER_TABULATION;
+ return true;
+ }
+ if (this.eat(LATIN_SMALL_LETTER_V)) {
+ this._lastIntValue = LINE_TABULATION;
+ return true;
+ }
+ return false;
+ }
+ eatControlLetter() {
+ const cp = this.currentCodePoint;
+ if (isLatinLetter(cp)) {
+ this.advance();
+ this._lastIntValue = cp % 0x20;
+ return true;
+ }
+ return false;
+ }
+ eatRegExpUnicodeEscapeSequence(forceUFlag = false) {
+ const start = this.index;
+ const uFlag = forceUFlag || this._unicodeMode;
+ if (this.eat(LATIN_SMALL_LETTER_U)) {
+ if ((uFlag && this.eatRegExpUnicodeSurrogatePairEscape()) ||
+ this.eatFixedHexDigits(4) ||
+ (uFlag && this.eatRegExpUnicodeCodePointEscape())) {
+ return true;
+ }
+ if (this.strict || uFlag) {
+ this.raise("Invalid unicode escape");
+ }
+ this.rewind(start);
+ }
+ return false;
+ }
+ eatRegExpUnicodeSurrogatePairEscape() {
+ const start = this.index;
+ if (this.eatFixedHexDigits(4)) {
+ const lead = this._lastIntValue;
+ if (isLeadSurrogate(lead) &&
+ this.eat(REVERSE_SOLIDUS) &&
+ this.eat(LATIN_SMALL_LETTER_U) &&
+ this.eatFixedHexDigits(4)) {
+ const trail = this._lastIntValue;
+ if (isTrailSurrogate(trail)) {
+ this._lastIntValue = combineSurrogatePair(lead, trail);
+ return true;
+ }
+ }
+ this.rewind(start);
+ }
+ return false;
+ }
+ eatRegExpUnicodeCodePointEscape() {
+ const start = this.index;
+ if (this.eat(LEFT_CURLY_BRACKET) &&
+ this.eatHexDigits() &&
+ this.eat(RIGHT_CURLY_BRACKET) &&
+ isValidUnicode(this._lastIntValue)) {
+ return true;
+ }
+ this.rewind(start);
+ return false;
+ }
+ eatIdentityEscape() {
+ const cp = this.currentCodePoint;
+ if (this.isValidIdentityEscape(cp)) {
+ this._lastIntValue = cp;
+ this.advance();
+ return true;
+ }
+ return false;
+ }
+ isValidIdentityEscape(cp) {
+ if (cp === -1) {
+ return false;
+ }
+ if (this._unicodeMode) {
+ return isSyntaxCharacter(cp) || cp === SOLIDUS;
+ }
+ if (this.strict) {
+ return !isIdContinue(cp);
+ }
+ if (this._nFlag) {
+ return !(cp === LATIN_SMALL_LETTER_C || cp === LATIN_SMALL_LETTER_K);
+ }
+ return cp !== LATIN_SMALL_LETTER_C;
+ }
+ eatDecimalEscape() {
+ this._lastIntValue = 0;
+ let cp = this.currentCodePoint;
+ if (cp >= DIGIT_ONE && cp <= DIGIT_NINE) {
+ do {
+ this._lastIntValue = 10 * this._lastIntValue + (cp - DIGIT_ZERO);
+ this.advance();
+ } while ((cp = this.currentCodePoint) >= DIGIT_ZERO &&
+ cp <= DIGIT_NINE);
+ return true;
+ }
+ return false;
+ }
+ eatUnicodePropertyValueExpression() {
+ const start = this.index;
+ if (this.eatUnicodePropertyName() && this.eat(EQUALS_SIGN)) {
+ const key = this._lastStrValue;
+ if (this.eatUnicodePropertyValue()) {
+ const value = this._lastStrValue;
+ if (isValidUnicodeProperty(this.ecmaVersion, key, value)) {
+ return {
+ key,
+ value: value || null,
+ };
+ }
+ this.raise("Invalid property name");
+ }
+ }
+ this.rewind(start);
+ if (this.eatLoneUnicodePropertyNameOrValue()) {
+ const nameOrValue = this._lastStrValue;
+ if (isValidUnicodeProperty(this.ecmaVersion, "General_Category", nameOrValue)) {
+ return {
+ key: "General_Category",
+ value: nameOrValue || null,
+ };
+ }
+ if (isValidLoneUnicodeProperty(this.ecmaVersion, nameOrValue)) {
+ return {
+ key: nameOrValue,
+ value: null,
+ };
+ }
+ if (this._unicodeSetsMode &&
+ isValidLoneUnicodePropertyOfString(this.ecmaVersion, nameOrValue)) {
+ return {
+ key: nameOrValue,
+ value: null,
+ strings: true,
+ };
+ }
+ this.raise("Invalid property name");
+ }
+ return null;
+ }
+ eatUnicodePropertyName() {
+ this._lastStrValue = "";
+ while (isUnicodePropertyNameCharacter(this.currentCodePoint)) {
+ this._lastStrValue += String.fromCodePoint(this.currentCodePoint);
+ this.advance();
+ }
+ return this._lastStrValue !== "";
+ }
+ eatUnicodePropertyValue() {
+ this._lastStrValue = "";
+ while (isUnicodePropertyValueCharacter(this.currentCodePoint)) {
+ this._lastStrValue += String.fromCodePoint(this.currentCodePoint);
+ this.advance();
+ }
+ return this._lastStrValue !== "";
+ }
+ eatLoneUnicodePropertyNameOrValue() {
+ return this.eatUnicodePropertyValue();
+ }
+ eatHexEscapeSequence() {
+ const start = this.index;
+ if (this.eat(LATIN_SMALL_LETTER_X)) {
+ if (this.eatFixedHexDigits(2)) {
+ return true;
+ }
+ if (this._unicodeMode || this.strict) {
+ this.raise("Invalid escape");
+ }
+ this.rewind(start);
+ }
+ return false;
+ }
+ eatDecimalDigits() {
+ const start = this.index;
+ this._lastIntValue = 0;
+ while (isDecimalDigit(this.currentCodePoint)) {
+ this._lastIntValue =
+ 10 * this._lastIntValue + digitToInt(this.currentCodePoint);
+ this.advance();
+ }
+ return this.index !== start;
+ }
+ eatHexDigits() {
+ const start = this.index;
+ this._lastIntValue = 0;
+ while (isHexDigit(this.currentCodePoint)) {
+ this._lastIntValue =
+ 16 * this._lastIntValue + digitToInt(this.currentCodePoint);
+ this.advance();
+ }
+ return this.index !== start;
+ }
+ eatLegacyOctalEscapeSequence() {
+ if (this.eatOctalDigit()) {
+ const n1 = this._lastIntValue;
+ if (this.eatOctalDigit()) {
+ const n2 = this._lastIntValue;
+ if (n1 <= 3 && this.eatOctalDigit()) {
+ this._lastIntValue = n1 * 64 + n2 * 8 + this._lastIntValue;
+ }
+ else {
+ this._lastIntValue = n1 * 8 + n2;
+ }
+ }
+ else {
+ this._lastIntValue = n1;
+ }
+ return true;
+ }
+ return false;
+ }
+ eatOctalDigit() {
+ const cp = this.currentCodePoint;
+ if (isOctalDigit(cp)) {
+ this.advance();
+ this._lastIntValue = cp - DIGIT_ZERO;
+ return true;
+ }
+ this._lastIntValue = 0;
+ return false;
+ }
+ eatFixedHexDigits(length) {
+ const start = this.index;
+ this._lastIntValue = 0;
+ for (let i = 0; i < length; ++i) {
+ const cp = this.currentCodePoint;
+ if (!isHexDigit(cp)) {
+ this.rewind(start);
+ return false;
+ }
+ this._lastIntValue = 16 * this._lastIntValue + digitToInt(cp);
+ this.advance();
+ }
+ return true;
+ }
+}
+
+const DUMMY_PATTERN = {};
+const DUMMY_FLAGS = {};
+const DUMMY_CAPTURING_GROUP = {};
+function isClassSetOperand(node) {
+ return (node.type === "Character" ||
+ node.type === "CharacterSet" ||
+ node.type === "CharacterClass" ||
+ node.type === "ExpressionCharacterClass" ||
+ node.type === "ClassStringDisjunction");
+}
+class RegExpParserState {
+ constructor(options) {
+ var _a;
+ this._node = DUMMY_PATTERN;
+ this._expressionBuffer = null;
+ this._flags = DUMMY_FLAGS;
+ this._backreferences = [];
+ this._capturingGroups = [];
+ this.source = "";
+ this.strict = Boolean(options === null || options === void 0 ? void 0 : options.strict);
+ this.ecmaVersion = (_a = options === null || options === void 0 ? void 0 : options.ecmaVersion) !== null && _a !== void 0 ? _a : latestEcmaVersion;
+ }
+ get pattern() {
+ if (this._node.type !== "Pattern") {
+ throw new Error("UnknownError");
+ }
+ return this._node;
+ }
+ get flags() {
+ if (this._flags.type !== "Flags") {
+ throw new Error("UnknownError");
+ }
+ return this._flags;
+ }
+ onRegExpFlags(start, end, { global, ignoreCase, multiline, unicode, sticky, dotAll, hasIndices, unicodeSets, }) {
+ this._flags = {
+ type: "Flags",
+ parent: null,
+ start,
+ end,
+ raw: this.source.slice(start, end),
+ global,
+ ignoreCase,
+ multiline,
+ unicode,
+ sticky,
+ dotAll,
+ hasIndices,
+ unicodeSets,
+ };
+ }
+ onPatternEnter(start) {
+ this._node = {
+ type: "Pattern",
+ parent: null,
+ start,
+ end: start,
+ raw: "",
+ alternatives: [],
+ };
+ this._backreferences.length = 0;
+ this._capturingGroups.length = 0;
+ }
+ onPatternLeave(start, end) {
+ this._node.end = end;
+ this._node.raw = this.source.slice(start, end);
+ for (const reference of this._backreferences) {
+ const ref = reference.ref;
+ const group = typeof ref === "number"
+ ? this._capturingGroups[ref - 1]
+ : this._capturingGroups.find((g) => g.name === ref);
+ reference.resolved = group;
+ group.references.push(reference);
+ }
+ }
+ onAlternativeEnter(start) {
+ const parent = this._node;
+ if (parent.type !== "Assertion" &&
+ parent.type !== "CapturingGroup" &&
+ parent.type !== "Group" &&
+ parent.type !== "Pattern") {
+ throw new Error("UnknownError");
+ }
+ this._node = {
+ type: "Alternative",
+ parent,
+ start,
+ end: start,
+ raw: "",
+ elements: [],
+ };
+ parent.alternatives.push(this._node);
+ }
+ onAlternativeLeave(start, end) {
+ const node = this._node;
+ if (node.type !== "Alternative") {
+ throw new Error("UnknownError");
+ }
+ node.end = end;
+ node.raw = this.source.slice(start, end);
+ this._node = node.parent;
+ }
+ onGroupEnter(start) {
+ const parent = this._node;
+ if (parent.type !== "Alternative") {
+ throw new Error("UnknownError");
+ }
+ this._node = {
+ type: "Group",
+ parent,
+ start,
+ end: start,
+ raw: "",
+ alternatives: [],
+ };
+ parent.elements.push(this._node);
+ }
+ onGroupLeave(start, end) {
+ const node = this._node;
+ if (node.type !== "Group" || node.parent.type !== "Alternative") {
+ throw new Error("UnknownError");
+ }
+ node.end = end;
+ node.raw = this.source.slice(start, end);
+ this._node = node.parent;
+ }
+ onCapturingGroupEnter(start, name) {
+ const parent = this._node;
+ if (parent.type !== "Alternative") {
+ throw new Error("UnknownError");
+ }
+ this._node = {
+ type: "CapturingGroup",
+ parent,
+ start,
+ end: start,
+ raw: "",
+ name,
+ alternatives: [],
+ references: [],
+ };
+ parent.elements.push(this._node);
+ this._capturingGroups.push(this._node);
+ }
+ onCapturingGroupLeave(start, end) {
+ const node = this._node;
+ if (node.type !== "CapturingGroup" ||
+ node.parent.type !== "Alternative") {
+ throw new Error("UnknownError");
+ }
+ node.end = end;
+ node.raw = this.source.slice(start, end);
+ this._node = node.parent;
+ }
+ onQuantifier(start, end, min, max, greedy) {
+ const parent = this._node;
+ if (parent.type !== "Alternative") {
+ throw new Error("UnknownError");
+ }
+ const element = parent.elements.pop();
+ if (element == null ||
+ element.type === "Quantifier" ||
+ (element.type === "Assertion" && element.kind !== "lookahead")) {
+ throw new Error("UnknownError");
+ }
+ const node = {
+ type: "Quantifier",
+ parent,
+ start: element.start,
+ end,
+ raw: this.source.slice(element.start, end),
+ min,
+ max,
+ greedy,
+ element,
+ };
+ parent.elements.push(node);
+ element.parent = node;
+ }
+ onLookaroundAssertionEnter(start, kind, negate) {
+ const parent = this._node;
+ if (parent.type !== "Alternative") {
+ throw new Error("UnknownError");
+ }
+ const node = (this._node = {
+ type: "Assertion",
+ parent,
+ start,
+ end: start,
+ raw: "",
+ kind,
+ negate,
+ alternatives: [],
+ });
+ parent.elements.push(node);
+ }
+ onLookaroundAssertionLeave(start, end) {
+ const node = this._node;
+ if (node.type !== "Assertion" || node.parent.type !== "Alternative") {
+ throw new Error("UnknownError");
+ }
+ node.end = end;
+ node.raw = this.source.slice(start, end);
+ this._node = node.parent;
+ }
+ onEdgeAssertion(start, end, kind) {
+ const parent = this._node;
+ if (parent.type !== "Alternative") {
+ throw new Error("UnknownError");
+ }
+ parent.elements.push({
+ type: "Assertion",
+ parent,
+ start,
+ end,
+ raw: this.source.slice(start, end),
+ kind,
+ });
+ }
+ onWordBoundaryAssertion(start, end, kind, negate) {
+ const parent = this._node;
+ if (parent.type !== "Alternative") {
+ throw new Error("UnknownError");
+ }
+ parent.elements.push({
+ type: "Assertion",
+ parent,
+ start,
+ end,
+ raw: this.source.slice(start, end),
+ kind,
+ negate,
+ });
+ }
+ onAnyCharacterSet(start, end, kind) {
+ const parent = this._node;
+ if (parent.type !== "Alternative") {
+ throw new Error("UnknownError");
+ }
+ parent.elements.push({
+ type: "CharacterSet",
+ parent,
+ start,
+ end,
+ raw: this.source.slice(start, end),
+ kind,
+ });
+ }
+ onEscapeCharacterSet(start, end, kind, negate) {
+ const parent = this._node;
+ if (parent.type !== "Alternative" && parent.type !== "CharacterClass") {
+ throw new Error("UnknownError");
+ }
+ parent.elements.push({
+ type: "CharacterSet",
+ parent,
+ start,
+ end,
+ raw: this.source.slice(start, end),
+ kind,
+ negate,
+ });
+ }
+ onUnicodePropertyCharacterSet(start, end, kind, key, value, negate, strings) {
+ const parent = this._node;
+ if (parent.type !== "Alternative" && parent.type !== "CharacterClass") {
+ throw new Error("UnknownError");
+ }
+ const base = {
+ type: "CharacterSet",
+ start,
+ end,
+ raw: this.source.slice(start, end),
+ kind,
+ key,
+ };
+ if (strings) {
+ if ((parent.type === "CharacterClass" && !parent.unicodeSets) ||
+ negate ||
+ value !== null) {
+ throw new Error("UnknownError");
+ }
+ parent.elements.push(Object.assign(Object.assign({}, base), { parent, strings, value, negate }));
+ }
+ else {
+ parent.elements.push(Object.assign(Object.assign({}, base), { parent, strings, value, negate }));
+ }
+ }
+ onCharacter(start, end, value) {
+ const parent = this._node;
+ if (parent.type !== "Alternative" &&
+ parent.type !== "CharacterClass" &&
+ parent.type !== "StringAlternative") {
+ throw new Error("UnknownError");
+ }
+ parent.elements.push({
+ type: "Character",
+ parent,
+ start,
+ end,
+ raw: this.source.slice(start, end),
+ value,
+ });
+ }
+ onBackreference(start, end, ref) {
+ const parent = this._node;
+ if (parent.type !== "Alternative") {
+ throw new Error("UnknownError");
+ }
+ const node = {
+ type: "Backreference",
+ parent,
+ start,
+ end,
+ raw: this.source.slice(start, end),
+ ref,
+ resolved: DUMMY_CAPTURING_GROUP,
+ };
+ parent.elements.push(node);
+ this._backreferences.push(node);
+ }
+ onCharacterClassEnter(start, negate, unicodeSets) {
+ const parent = this._node;
+ const base = {
+ type: "CharacterClass",
+ parent,
+ start,
+ end: start,
+ raw: "",
+ unicodeSets,
+ negate,
+ elements: [],
+ };
+ if (parent.type === "Alternative") {
+ const node = Object.assign(Object.assign({}, base), { parent });
+ this._node = node;
+ parent.elements.push(node);
+ }
+ else if (parent.type === "CharacterClass" &&
+ parent.unicodeSets &&
+ unicodeSets) {
+ const node = Object.assign(Object.assign({}, base), { parent,
+ unicodeSets });
+ this._node = node;
+ parent.elements.push(node);
+ }
+ else {
+ throw new Error("UnknownError");
+ }
+ }
+ onCharacterClassLeave(start, end) {
+ const node = this._node;
+ if (node.type !== "CharacterClass" ||
+ (node.parent.type !== "Alternative" &&
+ node.parent.type !== "CharacterClass")) {
+ throw new Error("UnknownError");
+ }
+ const parent = node.parent;
+ node.end = end;
+ node.raw = this.source.slice(start, end);
+ this._node = parent;
+ const expression = this._expressionBuffer;
+ if ((expression === null || expression === void 0 ? void 0 : expression.parent) !== node) {
+ return;
+ }
+ if (node.elements.length > 0) {
+ throw new Error("UnknownError");
+ }
+ this._expressionBuffer = null;
+ const newNode = {
+ type: "ExpressionCharacterClass",
+ parent,
+ start: node.start,
+ end: node.end,
+ raw: node.raw,
+ negate: node.negate,
+ expression,
+ };
+ expression.parent = newNode;
+ if (node !== parent.elements.pop()) {
+ throw new Error("UnknownError");
+ }
+ parent.elements.push(newNode);
+ }
+ onCharacterClassRange(start, end) {
+ const parent = this._node;
+ if (parent.type !== "CharacterClass") {
+ throw new Error("UnknownError");
+ }
+ const elements = parent.elements;
+ const max = elements.pop();
+ if (!max || max.type !== "Character") {
+ throw new Error("UnknownError");
+ }
+ if (!parent.unicodeSets) {
+ const hyphen = elements.pop();
+ if (!hyphen ||
+ hyphen.type !== "Character" ||
+ hyphen.value !== HYPHEN_MINUS) {
+ throw new Error("UnknownError");
+ }
+ }
+ const min = elements.pop();
+ if (!min || min.type !== "Character") {
+ throw new Error("UnknownError");
+ }
+ const node = {
+ type: "CharacterClassRange",
+ parent,
+ start,
+ end,
+ raw: this.source.slice(start, end),
+ min,
+ max,
+ };
+ min.parent = node;
+ max.parent = node;
+ elements.push(node);
+ }
+ onClassIntersection(start, end) {
+ var _a;
+ const parent = this._node;
+ if (parent.type !== "CharacterClass" || !parent.unicodeSets) {
+ throw new Error("UnknownError");
+ }
+ const right = parent.elements.pop();
+ const left = (_a = this._expressionBuffer) !== null && _a !== void 0 ? _a : parent.elements.pop();
+ if (!left ||
+ !right ||
+ left.type === "ClassSubtraction" ||
+ (left.type !== "ClassIntersection" && !isClassSetOperand(left)) ||
+ !isClassSetOperand(right)) {
+ throw new Error("UnknownError");
+ }
+ const node = {
+ type: "ClassIntersection",
+ parent: parent,
+ start,
+ end,
+ raw: this.source.slice(start, end),
+ left,
+ right,
+ };
+ left.parent = node;
+ right.parent = node;
+ this._expressionBuffer = node;
+ }
+ onClassSubtraction(start, end) {
+ var _a;
+ const parent = this._node;
+ if (parent.type !== "CharacterClass" || !parent.unicodeSets) {
+ throw new Error("UnknownError");
+ }
+ const right = parent.elements.pop();
+ const left = (_a = this._expressionBuffer) !== null && _a !== void 0 ? _a : parent.elements.pop();
+ if (!left ||
+ !right ||
+ left.type === "ClassIntersection" ||
+ (left.type !== "ClassSubtraction" && !isClassSetOperand(left)) ||
+ !isClassSetOperand(right)) {
+ throw new Error("UnknownError");
+ }
+ const node = {
+ type: "ClassSubtraction",
+ parent: parent,
+ start,
+ end,
+ raw: this.source.slice(start, end),
+ left,
+ right,
+ };
+ left.parent = node;
+ right.parent = node;
+ this._expressionBuffer = node;
+ }
+ onClassStringDisjunctionEnter(start) {
+ const parent = this._node;
+ if (parent.type !== "CharacterClass" || !parent.unicodeSets) {
+ throw new Error("UnknownError");
+ }
+ this._node = {
+ type: "ClassStringDisjunction",
+ parent,
+ start,
+ end: start,
+ raw: "",
+ alternatives: [],
+ };
+ parent.elements.push(this._node);
+ }
+ onClassStringDisjunctionLeave(start, end) {
+ const node = this._node;
+ if (node.type !== "ClassStringDisjunction" ||
+ node.parent.type !== "CharacterClass") {
+ throw new Error("UnknownError");
+ }
+ node.end = end;
+ node.raw = this.source.slice(start, end);
+ this._node = node.parent;
+ }
+ onStringAlternativeEnter(start) {
+ const parent = this._node;
+ if (parent.type !== "ClassStringDisjunction") {
+ throw new Error("UnknownError");
+ }
+ this._node = {
+ type: "StringAlternative",
+ parent,
+ start,
+ end: start,
+ raw: "",
+ elements: [],
+ };
+ parent.alternatives.push(this._node);
+ }
+ onStringAlternativeLeave(start, end) {
+ const node = this._node;
+ if (node.type !== "StringAlternative") {
+ throw new Error("UnknownError");
+ }
+ node.end = end;
+ node.raw = this.source.slice(start, end);
+ this._node = node.parent;
+ }
+}
+class RegExpParser {
+ constructor(options) {
+ this._state = new RegExpParserState(options);
+ this._validator = new RegExpValidator(this._state);
+ }
+ parseLiteral(source, start = 0, end = source.length) {
+ this._state.source = source;
+ this._validator.validateLiteral(source, start, end);
+ const pattern = this._state.pattern;
+ const flags = this._state.flags;
+ const literal = {
+ type: "RegExpLiteral",
+ parent: null,
+ start,
+ end,
+ raw: source,
+ pattern,
+ flags,
+ };
+ pattern.parent = literal;
+ flags.parent = literal;
+ return literal;
+ }
+ parseFlags(source, start = 0, end = source.length) {
+ this._state.source = source;
+ this._validator.validateFlags(source, start, end);
+ return this._state.flags;
+ }
+ parsePattern(source, start = 0, end = source.length, uFlagOrFlags = undefined) {
+ this._state.source = source;
+ this._validator.validatePattern(source, start, end, uFlagOrFlags);
+ return this._state.pattern;
+ }
+}
+
+class RegExpVisitor {
+ constructor(handlers) {
+ this._handlers = handlers;
+ }
+ visit(node) {
+ switch (node.type) {
+ case "Alternative":
+ this.visitAlternative(node);
+ break;
+ case "Assertion":
+ this.visitAssertion(node);
+ break;
+ case "Backreference":
+ this.visitBackreference(node);
+ break;
+ case "CapturingGroup":
+ this.visitCapturingGroup(node);
+ break;
+ case "Character":
+ this.visitCharacter(node);
+ break;
+ case "CharacterClass":
+ this.visitCharacterClass(node);
+ break;
+ case "CharacterClassRange":
+ this.visitCharacterClassRange(node);
+ break;
+ case "CharacterSet":
+ this.visitCharacterSet(node);
+ break;
+ case "ClassIntersection":
+ this.visitClassIntersection(node);
+ break;
+ case "ClassStringDisjunction":
+ this.visitClassStringDisjunction(node);
+ break;
+ case "ClassSubtraction":
+ this.visitClassSubtraction(node);
+ break;
+ case "ExpressionCharacterClass":
+ this.visitExpressionCharacterClass(node);
+ break;
+ case "Flags":
+ this.visitFlags(node);
+ break;
+ case "Group":
+ this.visitGroup(node);
+ break;
+ case "Pattern":
+ this.visitPattern(node);
+ break;
+ case "Quantifier":
+ this.visitQuantifier(node);
+ break;
+ case "RegExpLiteral":
+ this.visitRegExpLiteral(node);
+ break;
+ case "StringAlternative":
+ this.visitStringAlternative(node);
+ break;
+ default:
+ throw new Error(`Unknown type: ${node.type}`);
+ }
+ }
+ visitAlternative(node) {
+ if (this._handlers.onAlternativeEnter) {
+ this._handlers.onAlternativeEnter(node);
+ }
+ node.elements.forEach(this.visit, this);
+ if (this._handlers.onAlternativeLeave) {
+ this._handlers.onAlternativeLeave(node);
+ }
+ }
+ visitAssertion(node) {
+ if (this._handlers.onAssertionEnter) {
+ this._handlers.onAssertionEnter(node);
+ }
+ if (node.kind === "lookahead" || node.kind === "lookbehind") {
+ node.alternatives.forEach(this.visit, this);
+ }
+ if (this._handlers.onAssertionLeave) {
+ this._handlers.onAssertionLeave(node);
+ }
+ }
+ visitBackreference(node) {
+ if (this._handlers.onBackreferenceEnter) {
+ this._handlers.onBackreferenceEnter(node);
+ }
+ if (this._handlers.onBackreferenceLeave) {
+ this._handlers.onBackreferenceLeave(node);
+ }
+ }
+ visitCapturingGroup(node) {
+ if (this._handlers.onCapturingGroupEnter) {
+ this._handlers.onCapturingGroupEnter(node);
+ }
+ node.alternatives.forEach(this.visit, this);
+ if (this._handlers.onCapturingGroupLeave) {
+ this._handlers.onCapturingGroupLeave(node);
+ }
+ }
+ visitCharacter(node) {
+ if (this._handlers.onCharacterEnter) {
+ this._handlers.onCharacterEnter(node);
+ }
+ if (this._handlers.onCharacterLeave) {
+ this._handlers.onCharacterLeave(node);
+ }
+ }
+ visitCharacterClass(node) {
+ if (this._handlers.onCharacterClassEnter) {
+ this._handlers.onCharacterClassEnter(node);
+ }
+ node.elements.forEach(this.visit, this);
+ if (this._handlers.onCharacterClassLeave) {
+ this._handlers.onCharacterClassLeave(node);
+ }
+ }
+ visitCharacterClassRange(node) {
+ if (this._handlers.onCharacterClassRangeEnter) {
+ this._handlers.onCharacterClassRangeEnter(node);
+ }
+ this.visitCharacter(node.min);
+ this.visitCharacter(node.max);
+ if (this._handlers.onCharacterClassRangeLeave) {
+ this._handlers.onCharacterClassRangeLeave(node);
+ }
+ }
+ visitCharacterSet(node) {
+ if (this._handlers.onCharacterSetEnter) {
+ this._handlers.onCharacterSetEnter(node);
+ }
+ if (this._handlers.onCharacterSetLeave) {
+ this._handlers.onCharacterSetLeave(node);
+ }
+ }
+ visitClassIntersection(node) {
+ if (this._handlers.onClassIntersectionEnter) {
+ this._handlers.onClassIntersectionEnter(node);
+ }
+ this.visit(node.left);
+ this.visit(node.right);
+ if (this._handlers.onClassIntersectionLeave) {
+ this._handlers.onClassIntersectionLeave(node);
+ }
+ }
+ visitClassStringDisjunction(node) {
+ if (this._handlers.onClassStringDisjunctionEnter) {
+ this._handlers.onClassStringDisjunctionEnter(node);
+ }
+ node.alternatives.forEach(this.visit, this);
+ if (this._handlers.onClassStringDisjunctionLeave) {
+ this._handlers.onClassStringDisjunctionLeave(node);
+ }
+ }
+ visitClassSubtraction(node) {
+ if (this._handlers.onClassSubtractionEnter) {
+ this._handlers.onClassSubtractionEnter(node);
+ }
+ this.visit(node.left);
+ this.visit(node.right);
+ if (this._handlers.onClassSubtractionLeave) {
+ this._handlers.onClassSubtractionLeave(node);
+ }
+ }
+ visitExpressionCharacterClass(node) {
+ if (this._handlers.onExpressionCharacterClassEnter) {
+ this._handlers.onExpressionCharacterClassEnter(node);
+ }
+ this.visit(node.expression);
+ if (this._handlers.onExpressionCharacterClassLeave) {
+ this._handlers.onExpressionCharacterClassLeave(node);
+ }
+ }
+ visitFlags(node) {
+ if (this._handlers.onFlagsEnter) {
+ this._handlers.onFlagsEnter(node);
+ }
+ if (this._handlers.onFlagsLeave) {
+ this._handlers.onFlagsLeave(node);
+ }
+ }
+ visitGroup(node) {
+ if (this._handlers.onGroupEnter) {
+ this._handlers.onGroupEnter(node);
+ }
+ node.alternatives.forEach(this.visit, this);
+ if (this._handlers.onGroupLeave) {
+ this._handlers.onGroupLeave(node);
+ }
+ }
+ visitPattern(node) {
+ if (this._handlers.onPatternEnter) {
+ this._handlers.onPatternEnter(node);
+ }
+ node.alternatives.forEach(this.visit, this);
+ if (this._handlers.onPatternLeave) {
+ this._handlers.onPatternLeave(node);
+ }
+ }
+ visitQuantifier(node) {
+ if (this._handlers.onQuantifierEnter) {
+ this._handlers.onQuantifierEnter(node);
+ }
+ this.visit(node.element);
+ if (this._handlers.onQuantifierLeave) {
+ this._handlers.onQuantifierLeave(node);
+ }
+ }
+ visitRegExpLiteral(node) {
+ if (this._handlers.onRegExpLiteralEnter) {
+ this._handlers.onRegExpLiteralEnter(node);
+ }
+ this.visitPattern(node.pattern);
+ this.visitFlags(node.flags);
+ if (this._handlers.onRegExpLiteralLeave) {
+ this._handlers.onRegExpLiteralLeave(node);
+ }
+ }
+ visitStringAlternative(node) {
+ if (this._handlers.onStringAlternativeEnter) {
+ this._handlers.onStringAlternativeEnter(node);
+ }
+ node.elements.forEach(this.visit, this);
+ if (this._handlers.onStringAlternativeLeave) {
+ this._handlers.onStringAlternativeLeave(node);
+ }
+ }
+}
+
+function parseRegExpLiteral(source, options) {
+ return new RegExpParser(options).parseLiteral(String(source));
+}
+function validateRegExpLiteral(source, options) {
+ new RegExpValidator(options).validateLiteral(source);
+}
+function visitRegExpAST(node, handlers) {
+ new RegExpVisitor(handlers).visit(node);
+}
+
+exports.AST = ast;
+exports.RegExpParser = RegExpParser;
+exports.RegExpValidator = RegExpValidator;
+exports.parseRegExpLiteral = parseRegExpLiteral;
+exports.validateRegExpLiteral = validateRegExpLiteral;
+exports.visitRegExpAST = visitRegExpAST;
+//# sourceMappingURL=index.js.map
diff --git a/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint-community/regexpp/index.js.map b/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint-community/regexpp/index.js.map
new file mode 100644
index 0000000..cf18a15
--- /dev/null
+++ b/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint-community/regexpp/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js.map","sources":[".temp/src/ecma-versions.ts",".temp/unicode/src/unicode/ids.ts",".temp/unicode/src/unicode/properties.ts",".temp/unicode/src/unicode/index.ts",".temp/src/reader.ts",".temp/src/regexp-syntax-error.ts",".temp/unicode/src/unicode/properties-of-strings.ts",".temp/src/validator.ts",".temp/src/parser.ts",".temp/src/visitor.ts",".temp/src/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint-community/regexpp/index.mjs b/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint-community/regexpp/index.mjs
new file mode 100644
index 0000000..c3ab305
--- /dev/null
+++ b/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint-community/regexpp/index.mjs
@@ -0,0 +1,2743 @@
+var ast = /*#__PURE__*/Object.freeze({
+ __proto__: null
+});
+
+const latestEcmaVersion = 2024;
+
+let largeIdStartRanges = undefined;
+let largeIdContinueRanges = undefined;
+function isIdStart(cp) {
+ if (cp < 0x41)
+ return false;
+ if (cp < 0x5b)
+ return true;
+ if (cp < 0x61)
+ return false;
+ if (cp < 0x7b)
+ return true;
+ return isLargeIdStart(cp);
+}
+function isIdContinue(cp) {
+ if (cp < 0x30)
+ return false;
+ if (cp < 0x3a)
+ return true;
+ if (cp < 0x41)
+ return false;
+ if (cp < 0x5b)
+ return true;
+ if (cp === 0x5f)
+ return true;
+ if (cp < 0x61)
+ return false;
+ if (cp < 0x7b)
+ return true;
+ return isLargeIdStart(cp) || isLargeIdContinue(cp);
+}
+function isLargeIdStart(cp) {
+ return isInRange(cp, largeIdStartRanges !== null && largeIdStartRanges !== void 0 ? largeIdStartRanges : (largeIdStartRanges = initLargeIdStartRanges()));
+}
+function isLargeIdContinue(cp) {
+ return isInRange(cp, largeIdContinueRanges !== null && largeIdContinueRanges !== void 0 ? largeIdContinueRanges : (largeIdContinueRanges = initLargeIdContinueRanges()));
+}
+function initLargeIdStartRanges() {
+ return restoreRanges("4q 0 b 0 5 0 6 m 2 u 2 cp 5 b f 4 8 0 2 0 3m 4 2 1 3 3 2 0 7 0 2 2 2 0 2 j 2 2a 2 3u 9 4l 2 11 3 0 7 14 20 q 5 3 1a 16 10 1 2 2q 2 0 g 1 8 1 b 2 3 0 h 0 2 t u 2g c 0 p w a 1 5 0 6 l 5 0 a 0 4 0 o o 8 a 6 n 2 5 i 15 1n 1h 4 0 j 0 8 9 g f 5 7 3 1 3 l 2 6 2 0 4 3 4 0 h 0 e 1 2 2 f 1 b 0 9 5 5 1 3 l 2 6 2 1 2 1 2 1 w 3 2 0 k 2 h 8 2 2 2 l 2 6 2 1 2 4 4 0 j 0 g 1 o 0 c 7 3 1 3 l 2 6 2 1 2 4 4 0 v 1 2 2 g 0 i 0 2 5 4 2 2 3 4 1 2 0 2 1 4 1 4 2 4 b n 0 1h 7 2 2 2 m 2 f 4 0 r 2 3 0 3 1 v 0 5 7 2 2 2 m 2 9 2 4 4 0 w 1 2 1 g 1 i 8 2 2 2 14 3 0 h 0 6 2 9 2 p 5 6 h 4 n 2 8 2 0 3 6 1n 1b 2 1 d 6 1n 1 2 0 2 4 2 n 2 0 2 9 2 1 a 0 3 4 2 0 m 3 x 0 1s 7 2 z s 4 38 16 l 0 h 5 5 3 4 0 4 1 8 2 5 c d 0 i 11 2 0 6 0 3 16 2 98 2 3 3 6 2 0 2 3 3 14 2 3 3 w 2 3 3 6 2 0 2 3 3 e 2 1k 2 3 3 1u 12 f h 2d 3 5 4 h7 3 g 2 p 6 22 4 a 8 h e i f h f c 2 2 g 1f 10 0 5 0 1w 2g 8 14 2 0 6 1x b u 1e t 3 4 c 17 5 p 1j m a 1g 2b 0 2m 1a i 7 1j t e 1 b 17 r z 16 2 b z 3 8 8 16 3 2 16 3 2 5 2 1 4 0 6 5b 1t 7p 3 5 3 11 3 5 3 7 2 0 2 0 2 0 2 u 3 1g 2 6 2 0 4 2 2 6 4 3 3 5 5 c 6 2 2 6 39 0 e 0 h c 2u 0 5 0 3 9 2 0 3 5 7 0 2 0 2 0 2 f 3 3 6 4 5 0 i 14 22g 6c 7 3 4 1 d 11 2 0 6 0 3 1j 8 0 h m a 6 2 6 2 6 2 6 2 6 2 6 2 6 2 6 fb 2 q 8 8 4 3 4 5 2d 5 4 2 2h 2 3 6 16 2 2l i v 1d f e9 533 1t h3g 1w 19 3 7g 4 f b 1 l 1a h u 3 27 14 8 3 2u 3 1r 6 1 2 0 2 4 p f 2 2 2 3 2 m u 1f f 1d 1r 5 4 0 2 1 c r b m q s 8 1a t 0 h 4 2 9 b 4 2 14 o 2 2 7 l m 4 0 4 1d 2 0 4 1 3 4 3 0 2 0 p 2 3 a 8 2 d 5 3 5 3 5 a 6 2 6 2 16 2 d 7 36 u 8mb d m 5 1c 6it a5 3 2x 13 6 d 4 6 0 2 9 2 c 2 4 2 0 2 1 2 1 2 2z y a2 j 1r 3 1h 15 b 39 4 2 3q 11 p 7 p c 2g 4 5 3 5 3 5 3 2 10 b 2 p 2 i 2 1 2 e 3 d z 3e 1y 1g 7g s 4 1c 1c v e t 6 11 b t 3 z 5 7 2 4 17 4d j z 5 z 5 13 9 1f d a 2 e 2 6 2 1 2 a 2 e 2 6 2 1 1w 8m a l b 7 p 5 2 15 2 8 1y 5 3 0 2 17 2 1 4 0 3 m b m a u 1u i 2 1 b l b p 1z 1j 7 1 1t 0 g 3 2 2 2 s 17 s 4 s 10 7 2 r s 1h b l b i e h 33 20 1k 1e e 1e e z 9p 15 7 1 27 s b 0 9 l 17 h 1b k s m d 1g 1m 1 3 0 e 18 x o r z u 0 3 0 9 y 4 0 d 1b f 3 m 0 2 0 10 h 2 o k 1 1s 6 2 0 2 3 2 e 2 9 8 1a 13 7 3 1 3 l 2 6 2 1 2 4 4 0 j 0 d 4 4f 1g j 3 l 2 v 1b l 1 2 0 55 1a 16 3 11 1b l 0 1o 16 e 0 20 q 12 6 56 17 39 1r w 7 3 0 3 7 2 1 2 n g 0 2 0 2n 7 3 12 h 0 2 0 t 0 b 13 8 0 m 0 c 19 k 0 j 20 7c 8 2 10 i 0 1e t 35 6 2 1 2 11 m 0 q 5 2 1 2 v f 0 94 i g 0 2 c 2 x 3h 0 28 pl 2v 32 i 5f 219 2o g tr i 5 33u g6 6nu fs 8 u i 26 i t j 1b h 3 w k 6 i j5 1r 3l 22 6 0 1v c 1t 1 2 0 t 4qf 9 yd 17 8 6w8 3 2 6 2 1 2 82 g 0 u 2 3 0 f 3 9 az 1s5 2y 6 c 4 8 8 9 4mf 2c 2 1y 2 1 3 0 3 1 3 3 2 b 2 0 2 6 2 1s 2 3 3 7 2 6 2 r 2 3 2 4 2 0 4 6 2 9f 3 o 2 o 2 u 2 o 2 u 2 o 2 u 2 o 2 u 2 o 2 7 1f9 u 7 5 7a 1p 43 18 b 6 h 0 8y t j 17 dh r l1 6 2 3 2 1 2 e 2 5g 1o 1v 8 0 xh 3 2 q 2 1 2 0 3 0 2 9 2 3 2 0 2 0 7 0 5 0 2 0 2 0 2 2 2 1 2 0 3 0 2 0 2 0 2 0 2 0 2 1 2 0 3 3 2 6 2 3 2 3 2 0 2 9 2 g 6 2 2 4 2 g 3et wyn x 37d 7 65 3 4g1 f 5rk 2e8 f1 15v 3t6 6 38f");
+}
+function initLargeIdContinueRanges() {
+ return restoreRanges("53 0 g9 33 o 0 70 4 7e 18 2 0 2 1 2 1 2 0 21 a 1d u 7 0 2u 6 3 5 3 1 2 3 3 9 o 0 v q 2k a g 9 y 8 a 0 p 3 2 8 2 2 2 4 18 2 1p 7 17 n 2 w 1j 2 2 h 2 6 b 1 3 9 i 2 1l 0 2 6 3 1 3 2 a 0 b 1 3 9 f 0 3 2 1l 0 2 4 5 1 3 2 4 0 l b 4 0 c 2 1l 0 2 7 2 2 2 2 l 1 3 9 b 5 2 2 1l 0 2 6 3 1 3 2 8 2 b 1 3 9 j 0 1o 4 4 2 2 3 a 0 f 9 h 4 1k 0 2 6 2 2 2 3 8 1 c 1 3 9 i 2 1l 0 2 6 2 2 2 3 8 1 c 1 3 9 4 0 d 3 1k 1 2 6 2 2 2 3 a 0 b 1 3 9 i 2 1z 0 5 5 2 0 2 7 7 9 3 1 1q 0 3 6 d 7 2 9 2g 0 3 8 c 6 2 9 1r 1 7 9 c 0 2 0 2 0 5 1 1e j 2 1 6 a 2 z a 0 2t j 2 9 d 3 5 2 2 2 3 6 4 3 e b 2 e jk 2 a 8 pt 3 t 2 u 1 v 1 1t v a 0 3 9 y 2 2 a 40 0 3b b 5 b b 9 3l a 1p 4 1m 9 2 s 3 a 7 9 n d 2 f 1e 4 1c g c 9 i 8 d 2 v c 3 9 19 d 1d j 9 9 7 9 3b 2 2 k 5 0 7 0 3 2 5j 1r g0 1 k 0 3g c 5 0 4 b 2db 2 3y 0 2p v ff 5 2y 1 n7q 9 1y 0 5 9 x 1 29 1 7l 0 4 0 5 0 o 4 5 0 2c 1 1f h b 9 7 h e a t 7 q c 19 3 1c d g 9 c 0 b 9 1c d d 0 9 1 3 9 y 2 1f 0 2 2 3 1 6 1 2 0 16 4 6 1 6l 7 2 1 3 9 fmt 0 ki f h f 4 1 p 2 5d 9 12 0 ji 0 6b 0 46 4 86 9 120 2 2 1 6 3 15 2 5 0 4m 1 fy 3 9 9 aa 1 29 2 1z a 1e 3 3f 2 1i e w a 3 1 b 3 1a a 8 0 1a 9 7 2 11 d 2 9 6 1 19 0 d 2 1d d 9 3 2 b 2b b 7 0 3 0 4e b 6 9 7 3 1k 1 2 6 3 1 3 2 a 0 b 1 3 6 4 4 5d h a 9 5 0 2a j d 9 5y 6 3 8 s 1 2b g g 9 2a c 9 9 2c e 5 9 6r e 4m 9 1z 5 2 1 3 3 2 0 2 1 d 9 3c 6 3 6 4 0 t 9 15 6 2 3 9 0 a a 1b f ba 7 2 7 h 9 1l l 2 d 3f 5 4 0 2 1 2 6 2 0 9 9 1d 4 2 1 2 4 9 9 96 3 a 1 2 0 1d 6 4 4 e 9 44n 0 7 e aob 9 2f 9 13 4 1o 6 q 9 s6 0 2 1i 8 3 2a 0 c 1 f58 1 3mq 19 3 m f3 4 4 5 9 7 3 6 v 3 45 2 13e 1d e9 1i 5 1d 9 0 f 0 n 4 2 e 11t 6 2 g 3 6 2 1 2 4 2t 0 4h 6 a 9 9x 0 1q d dv d rb 6 32 6 6 9 3o7 9 gvt3 6n");
+}
+function isInRange(cp, ranges) {
+ let l = 0, r = (ranges.length / 2) | 0, i = 0, min = 0, max = 0;
+ while (l < r) {
+ i = ((l + r) / 2) | 0;
+ min = ranges[2 * i];
+ max = ranges[2 * i + 1];
+ if (cp < min) {
+ r = i;
+ }
+ else if (cp > max) {
+ l = i + 1;
+ }
+ else {
+ return true;
+ }
+ }
+ return false;
+}
+function restoreRanges(data) {
+ let last = 0;
+ return data.split(" ").map((s) => (last += parseInt(s, 36) | 0));
+}
+
+class DataSet {
+ constructor(raw2018, raw2019, raw2020, raw2021, raw2022, raw2023, raw2024) {
+ this._raw2018 = raw2018;
+ this._raw2019 = raw2019;
+ this._raw2020 = raw2020;
+ this._raw2021 = raw2021;
+ this._raw2022 = raw2022;
+ this._raw2023 = raw2023;
+ this._raw2024 = raw2024;
+ }
+ get es2018() {
+ var _a;
+ return ((_a = this._set2018) !== null && _a !== void 0 ? _a : (this._set2018 = new Set(this._raw2018.split(" "))));
+ }
+ get es2019() {
+ var _a;
+ return ((_a = this._set2019) !== null && _a !== void 0 ? _a : (this._set2019 = new Set(this._raw2019.split(" "))));
+ }
+ get es2020() {
+ var _a;
+ return ((_a = this._set2020) !== null && _a !== void 0 ? _a : (this._set2020 = new Set(this._raw2020.split(" "))));
+ }
+ get es2021() {
+ var _a;
+ return ((_a = this._set2021) !== null && _a !== void 0 ? _a : (this._set2021 = new Set(this._raw2021.split(" "))));
+ }
+ get es2022() {
+ var _a;
+ return ((_a = this._set2022) !== null && _a !== void 0 ? _a : (this._set2022 = new Set(this._raw2022.split(" "))));
+ }
+ get es2023() {
+ var _a;
+ return ((_a = this._set2023) !== null && _a !== void 0 ? _a : (this._set2023 = new Set(this._raw2023.split(" "))));
+ }
+ get es2024() {
+ var _a;
+ return ((_a = this._set2024) !== null && _a !== void 0 ? _a : (this._set2024 = new Set(this._raw2024.split(" "))));
+ }
+}
+const gcNameSet = new Set(["General_Category", "gc"]);
+const scNameSet = new Set(["Script", "Script_Extensions", "sc", "scx"]);
+const gcValueSets = new DataSet("C Cased_Letter Cc Cf Close_Punctuation Cn Co Combining_Mark Connector_Punctuation Control Cs Currency_Symbol Dash_Punctuation Decimal_Number Enclosing_Mark Final_Punctuation Format Initial_Punctuation L LC Letter Letter_Number Line_Separator Ll Lm Lo Lowercase_Letter Lt Lu M Mark Math_Symbol Mc Me Mn Modifier_Letter Modifier_Symbol N Nd Nl No Nonspacing_Mark Number Open_Punctuation Other Other_Letter Other_Number Other_Punctuation Other_Symbol P Paragraph_Separator Pc Pd Pe Pf Pi Po Private_Use Ps Punctuation S Sc Separator Sk Sm So Space_Separator Spacing_Mark Surrogate Symbol Titlecase_Letter Unassigned Uppercase_Letter Z Zl Zp Zs cntrl digit punct", "", "", "", "", "", "");
+const scValueSets = new DataSet("Adlam Adlm Aghb Ahom Anatolian_Hieroglyphs Arab Arabic Armenian Armi Armn Avestan Avst Bali Balinese Bamu Bamum Bass Bassa_Vah Batak Batk Beng Bengali Bhaiksuki Bhks Bopo Bopomofo Brah Brahmi Brai Braille Bugi Buginese Buhd Buhid Cakm Canadian_Aboriginal Cans Cari Carian Caucasian_Albanian Chakma Cham Cher Cherokee Common Copt Coptic Cprt Cuneiform Cypriot Cyrillic Cyrl Deseret Deva Devanagari Dsrt Dupl Duployan Egyp Egyptian_Hieroglyphs Elba Elbasan Ethi Ethiopic Geor Georgian Glag Glagolitic Gonm Goth Gothic Gran Grantha Greek Grek Gujarati Gujr Gurmukhi Guru Han Hang Hangul Hani Hano Hanunoo Hatr Hatran Hebr Hebrew Hira Hiragana Hluw Hmng Hung Imperial_Aramaic Inherited Inscriptional_Pahlavi Inscriptional_Parthian Ital Java Javanese Kaithi Kali Kana Kannada Katakana Kayah_Li Khar Kharoshthi Khmer Khmr Khoj Khojki Khudawadi Knda Kthi Lana Lao Laoo Latin Latn Lepc Lepcha Limb Limbu Lina Linb Linear_A Linear_B Lisu Lyci Lycian Lydi Lydian Mahajani Mahj Malayalam Mand Mandaic Mani Manichaean Marc Marchen Masaram_Gondi Meetei_Mayek Mend Mende_Kikakui Merc Mero Meroitic_Cursive Meroitic_Hieroglyphs Miao Mlym Modi Mong Mongolian Mro Mroo Mtei Mult Multani Myanmar Mymr Nabataean Narb Nbat New_Tai_Lue Newa Nko Nkoo Nshu Nushu Ogam Ogham Ol_Chiki Olck Old_Hungarian Old_Italic Old_North_Arabian Old_Permic Old_Persian Old_South_Arabian Old_Turkic Oriya Orkh Orya Osage Osge Osma Osmanya Pahawh_Hmong Palm Palmyrene Pau_Cin_Hau Pauc Perm Phag Phags_Pa Phli Phlp Phnx Phoenician Plrd Prti Psalter_Pahlavi Qaac Qaai Rejang Rjng Runic Runr Samaritan Samr Sarb Saur Saurashtra Sgnw Sharada Shavian Shaw Shrd Sidd Siddham SignWriting Sind Sinh Sinhala Sora Sora_Sompeng Soyo Soyombo Sund Sundanese Sylo Syloti_Nagri Syrc Syriac Tagalog Tagb Tagbanwa Tai_Le Tai_Tham Tai_Viet Takr Takri Tale Talu Tamil Taml Tang Tangut Tavt Telu Telugu Tfng Tglg Thaa Thaana Thai Tibetan Tibt Tifinagh Tirh Tirhuta Ugar Ugaritic Vai Vaii Wara Warang_Citi Xpeo Xsux Yi Yiii Zanabazar_Square Zanb Zinh Zyyy", "Dogr Dogra Gong Gunjala_Gondi Hanifi_Rohingya Maka Makasar Medefaidrin Medf Old_Sogdian Rohg Sogd Sogdian Sogo", "Elym Elymaic Hmnp Nand Nandinagari Nyiakeng_Puachue_Hmong Wancho Wcho", "Chorasmian Chrs Diak Dives_Akuru Khitan_Small_Script Kits Yezi Yezidi", "Cpmn Cypro_Minoan Old_Uyghur Ougr Tangsa Tnsa Toto Vith Vithkuqi", "Hrkt Katakana_Or_Hiragana Kawi Nag_Mundari Nagm Unknown Zzzz", "");
+const binPropertySets = new DataSet("AHex ASCII ASCII_Hex_Digit Alpha Alphabetic Any Assigned Bidi_C Bidi_Control Bidi_M Bidi_Mirrored CI CWCF CWCM CWKCF CWL CWT CWU Case_Ignorable Cased Changes_When_Casefolded Changes_When_Casemapped Changes_When_Lowercased Changes_When_NFKC_Casefolded Changes_When_Titlecased Changes_When_Uppercased DI Dash Default_Ignorable_Code_Point Dep Deprecated Dia Diacritic Emoji Emoji_Component Emoji_Modifier Emoji_Modifier_Base Emoji_Presentation Ext Extender Gr_Base Gr_Ext Grapheme_Base Grapheme_Extend Hex Hex_Digit IDC IDS IDSB IDST IDS_Binary_Operator IDS_Trinary_Operator ID_Continue ID_Start Ideo Ideographic Join_C Join_Control LOE Logical_Order_Exception Lower Lowercase Math NChar Noncharacter_Code_Point Pat_Syn Pat_WS Pattern_Syntax Pattern_White_Space QMark Quotation_Mark RI Radical Regional_Indicator SD STerm Sentence_Terminal Soft_Dotted Term Terminal_Punctuation UIdeo Unified_Ideograph Upper Uppercase VS Variation_Selector White_Space XIDC XIDS XID_Continue XID_Start space", "Extended_Pictographic", "", "EBase EComp EMod EPres ExtPict", "", "", "");
+function isValidUnicodeProperty(version, name, value) {
+ if (gcNameSet.has(name)) {
+ return version >= 2018 && gcValueSets.es2018.has(value);
+ }
+ if (scNameSet.has(name)) {
+ return ((version >= 2018 && scValueSets.es2018.has(value)) ||
+ (version >= 2019 && scValueSets.es2019.has(value)) ||
+ (version >= 2020 && scValueSets.es2020.has(value)) ||
+ (version >= 2021 && scValueSets.es2021.has(value)) ||
+ (version >= 2022 && scValueSets.es2022.has(value)) ||
+ (version >= 2023 && scValueSets.es2023.has(value)));
+ }
+ return false;
+}
+function isValidLoneUnicodeProperty(version, value) {
+ return ((version >= 2018 && binPropertySets.es2018.has(value)) ||
+ (version >= 2019 && binPropertySets.es2019.has(value)) ||
+ (version >= 2021 && binPropertySets.es2021.has(value)));
+}
+
+const BACKSPACE = 0x08;
+const CHARACTER_TABULATION = 0x09;
+const LINE_FEED = 0x0a;
+const LINE_TABULATION = 0x0b;
+const FORM_FEED = 0x0c;
+const CARRIAGE_RETURN = 0x0d;
+const EXCLAMATION_MARK = 0x21;
+const NUMBER_SIGN = 0x23;
+const DOLLAR_SIGN = 0x24;
+const PERCENT_SIGN = 0x25;
+const AMPERSAND = 0x26;
+const LEFT_PARENTHESIS = 0x28;
+const RIGHT_PARENTHESIS = 0x29;
+const ASTERISK = 0x2a;
+const PLUS_SIGN = 0x2b;
+const COMMA = 0x2c;
+const HYPHEN_MINUS = 0x2d;
+const FULL_STOP = 0x2e;
+const SOLIDUS = 0x2f;
+const DIGIT_ZERO = 0x30;
+const DIGIT_ONE = 0x31;
+const DIGIT_SEVEN = 0x37;
+const DIGIT_NINE = 0x39;
+const COLON = 0x3a;
+const SEMICOLON = 0x3b;
+const LESS_THAN_SIGN = 0x3c;
+const EQUALS_SIGN = 0x3d;
+const GREATER_THAN_SIGN = 0x3e;
+const QUESTION_MARK = 0x3f;
+const COMMERCIAL_AT = 0x40;
+const LATIN_CAPITAL_LETTER_A = 0x41;
+const LATIN_CAPITAL_LETTER_B = 0x42;
+const LATIN_CAPITAL_LETTER_D = 0x44;
+const LATIN_CAPITAL_LETTER_F = 0x46;
+const LATIN_CAPITAL_LETTER_P = 0x50;
+const LATIN_CAPITAL_LETTER_S = 0x53;
+const LATIN_CAPITAL_LETTER_W = 0x57;
+const LATIN_CAPITAL_LETTER_Z = 0x5a;
+const LOW_LINE = 0x5f;
+const LATIN_SMALL_LETTER_A = 0x61;
+const LATIN_SMALL_LETTER_B = 0x62;
+const LATIN_SMALL_LETTER_C = 0x63;
+const LATIN_SMALL_LETTER_D = 0x64;
+const LATIN_SMALL_LETTER_F = 0x66;
+const LATIN_SMALL_LETTER_G = 0x67;
+const LATIN_SMALL_LETTER_I = 0x69;
+const LATIN_SMALL_LETTER_K = 0x6b;
+const LATIN_SMALL_LETTER_M = 0x6d;
+const LATIN_SMALL_LETTER_N = 0x6e;
+const LATIN_SMALL_LETTER_P = 0x70;
+const LATIN_SMALL_LETTER_Q = 0x71;
+const LATIN_SMALL_LETTER_R = 0x72;
+const LATIN_SMALL_LETTER_S = 0x73;
+const LATIN_SMALL_LETTER_T = 0x74;
+const LATIN_SMALL_LETTER_U = 0x75;
+const LATIN_SMALL_LETTER_V = 0x76;
+const LATIN_SMALL_LETTER_W = 0x77;
+const LATIN_SMALL_LETTER_X = 0x78;
+const LATIN_SMALL_LETTER_Y = 0x79;
+const LATIN_SMALL_LETTER_Z = 0x7a;
+const LEFT_SQUARE_BRACKET = 0x5b;
+const REVERSE_SOLIDUS = 0x5c;
+const RIGHT_SQUARE_BRACKET = 0x5d;
+const CIRCUMFLEX_ACCENT = 0x5e;
+const GRAVE_ACCENT = 0x60;
+const LEFT_CURLY_BRACKET = 0x7b;
+const VERTICAL_LINE = 0x7c;
+const RIGHT_CURLY_BRACKET = 0x7d;
+const TILDE = 0x7e;
+const ZERO_WIDTH_NON_JOINER = 0x200c;
+const ZERO_WIDTH_JOINER = 0x200d;
+const LINE_SEPARATOR = 0x2028;
+const PARAGRAPH_SEPARATOR = 0x2029;
+const MIN_CODE_POINT = 0x00;
+const MAX_CODE_POINT = 0x10ffff;
+function isLatinLetter(code) {
+ return ((code >= LATIN_CAPITAL_LETTER_A && code <= LATIN_CAPITAL_LETTER_Z) ||
+ (code >= LATIN_SMALL_LETTER_A && code <= LATIN_SMALL_LETTER_Z));
+}
+function isDecimalDigit(code) {
+ return code >= DIGIT_ZERO && code <= DIGIT_NINE;
+}
+function isOctalDigit(code) {
+ return code >= DIGIT_ZERO && code <= DIGIT_SEVEN;
+}
+function isHexDigit(code) {
+ return ((code >= DIGIT_ZERO && code <= DIGIT_NINE) ||
+ (code >= LATIN_CAPITAL_LETTER_A && code <= LATIN_CAPITAL_LETTER_F) ||
+ (code >= LATIN_SMALL_LETTER_A && code <= LATIN_SMALL_LETTER_F));
+}
+function isLineTerminator(code) {
+ return (code === LINE_FEED ||
+ code === CARRIAGE_RETURN ||
+ code === LINE_SEPARATOR ||
+ code === PARAGRAPH_SEPARATOR);
+}
+function isValidUnicode(code) {
+ return code >= MIN_CODE_POINT && code <= MAX_CODE_POINT;
+}
+function digitToInt(code) {
+ if (code >= LATIN_SMALL_LETTER_A && code <= LATIN_SMALL_LETTER_F) {
+ return code - LATIN_SMALL_LETTER_A + 10;
+ }
+ if (code >= LATIN_CAPITAL_LETTER_A && code <= LATIN_CAPITAL_LETTER_F) {
+ return code - LATIN_CAPITAL_LETTER_A + 10;
+ }
+ return code - DIGIT_ZERO;
+}
+function isLeadSurrogate(code) {
+ return code >= 0xd800 && code <= 0xdbff;
+}
+function isTrailSurrogate(code) {
+ return code >= 0xdc00 && code <= 0xdfff;
+}
+function combineSurrogatePair(lead, trail) {
+ return (lead - 0xd800) * 0x400 + (trail - 0xdc00) + 0x10000;
+}
+
+const legacyImpl = {
+ at(s, end, i) {
+ return i < end ? s.charCodeAt(i) : -1;
+ },
+ width(c) {
+ return 1;
+ },
+};
+const unicodeImpl = {
+ at(s, end, i) {
+ return i < end ? s.codePointAt(i) : -1;
+ },
+ width(c) {
+ return c > 0xffff ? 2 : 1;
+ },
+};
+class Reader {
+ constructor() {
+ this._impl = legacyImpl;
+ this._s = "";
+ this._i = 0;
+ this._end = 0;
+ this._cp1 = -1;
+ this._w1 = 1;
+ this._cp2 = -1;
+ this._w2 = 1;
+ this._cp3 = -1;
+ this._w3 = 1;
+ this._cp4 = -1;
+ }
+ get source() {
+ return this._s;
+ }
+ get index() {
+ return this._i;
+ }
+ get currentCodePoint() {
+ return this._cp1;
+ }
+ get nextCodePoint() {
+ return this._cp2;
+ }
+ get nextCodePoint2() {
+ return this._cp3;
+ }
+ get nextCodePoint3() {
+ return this._cp4;
+ }
+ reset(source, start, end, uFlag) {
+ this._impl = uFlag ? unicodeImpl : legacyImpl;
+ this._s = source;
+ this._end = end;
+ this.rewind(start);
+ }
+ rewind(index) {
+ const impl = this._impl;
+ this._i = index;
+ this._cp1 = impl.at(this._s, this._end, index);
+ this._w1 = impl.width(this._cp1);
+ this._cp2 = impl.at(this._s, this._end, index + this._w1);
+ this._w2 = impl.width(this._cp2);
+ this._cp3 = impl.at(this._s, this._end, index + this._w1 + this._w2);
+ this._w3 = impl.width(this._cp3);
+ this._cp4 = impl.at(this._s, this._end, index + this._w1 + this._w2 + this._w3);
+ }
+ advance() {
+ if (this._cp1 !== -1) {
+ const impl = this._impl;
+ this._i += this._w1;
+ this._cp1 = this._cp2;
+ this._w1 = this._w2;
+ this._cp2 = this._cp3;
+ this._w2 = impl.width(this._cp2);
+ this._cp3 = this._cp4;
+ this._w3 = impl.width(this._cp3);
+ this._cp4 = impl.at(this._s, this._end, this._i + this._w1 + this._w2 + this._w3);
+ }
+ }
+ eat(cp) {
+ if (this._cp1 === cp) {
+ this.advance();
+ return true;
+ }
+ return false;
+ }
+ eat2(cp1, cp2) {
+ if (this._cp1 === cp1 && this._cp2 === cp2) {
+ this.advance();
+ this.advance();
+ return true;
+ }
+ return false;
+ }
+ eat3(cp1, cp2, cp3) {
+ if (this._cp1 === cp1 && this._cp2 === cp2 && this._cp3 === cp3) {
+ this.advance();
+ this.advance();
+ this.advance();
+ return true;
+ }
+ return false;
+ }
+}
+
+class RegExpSyntaxError extends SyntaxError {
+ constructor(srcCtx, flags, index, message) {
+ let source = "";
+ if (srcCtx.kind === "literal") {
+ const literal = srcCtx.source.slice(srcCtx.start, srcCtx.end);
+ if (literal) {
+ source = `: ${literal}`;
+ }
+ }
+ else if (srcCtx.kind === "pattern") {
+ const pattern = srcCtx.source.slice(srcCtx.start, srcCtx.end);
+ const flagsText = `${flags.unicode ? "u" : ""}${flags.unicodeSets ? "v" : ""}`;
+ source = `: /${pattern}/${flagsText}`;
+ }
+ super(`Invalid regular expression${source}: ${message}`);
+ this.index = index;
+ }
+}
+
+const binPropertyOfStringSets = new Set([
+ "Basic_Emoji",
+ "Emoji_Keycap_Sequence",
+ "RGI_Emoji_Modifier_Sequence",
+ "RGI_Emoji_Flag_Sequence",
+ "RGI_Emoji_Tag_Sequence",
+ "RGI_Emoji_ZWJ_Sequence",
+ "RGI_Emoji",
+]);
+function isValidLoneUnicodePropertyOfString(version, value) {
+ return version >= 2024 && binPropertyOfStringSets.has(value);
+}
+
+const SYNTAX_CHARACTER = new Set([
+ CIRCUMFLEX_ACCENT,
+ DOLLAR_SIGN,
+ REVERSE_SOLIDUS,
+ FULL_STOP,
+ ASTERISK,
+ PLUS_SIGN,
+ QUESTION_MARK,
+ LEFT_PARENTHESIS,
+ RIGHT_PARENTHESIS,
+ LEFT_SQUARE_BRACKET,
+ RIGHT_SQUARE_BRACKET,
+ LEFT_CURLY_BRACKET,
+ RIGHT_CURLY_BRACKET,
+ VERTICAL_LINE,
+]);
+const CLASS_SET_RESERVED_DOUBLE_PUNCTUATOR_CHARACTER = new Set([
+ AMPERSAND,
+ EXCLAMATION_MARK,
+ NUMBER_SIGN,
+ DOLLAR_SIGN,
+ PERCENT_SIGN,
+ ASTERISK,
+ PLUS_SIGN,
+ COMMA,
+ FULL_STOP,
+ COLON,
+ SEMICOLON,
+ LESS_THAN_SIGN,
+ EQUALS_SIGN,
+ GREATER_THAN_SIGN,
+ QUESTION_MARK,
+ COMMERCIAL_AT,
+ CIRCUMFLEX_ACCENT,
+ GRAVE_ACCENT,
+ TILDE,
+]);
+const CLASS_SET_SYNTAX_CHARACTER = new Set([
+ LEFT_PARENTHESIS,
+ RIGHT_PARENTHESIS,
+ LEFT_SQUARE_BRACKET,
+ RIGHT_SQUARE_BRACKET,
+ LEFT_CURLY_BRACKET,
+ RIGHT_CURLY_BRACKET,
+ SOLIDUS,
+ HYPHEN_MINUS,
+ REVERSE_SOLIDUS,
+ VERTICAL_LINE,
+]);
+const CLASS_SET_RESERVED_PUNCTUATOR = new Set([
+ AMPERSAND,
+ HYPHEN_MINUS,
+ EXCLAMATION_MARK,
+ NUMBER_SIGN,
+ PERCENT_SIGN,
+ COMMA,
+ COLON,
+ SEMICOLON,
+ LESS_THAN_SIGN,
+ EQUALS_SIGN,
+ GREATER_THAN_SIGN,
+ COMMERCIAL_AT,
+ GRAVE_ACCENT,
+ TILDE,
+]);
+function isSyntaxCharacter(cp) {
+ return SYNTAX_CHARACTER.has(cp);
+}
+function isClassSetReservedDoublePunctuatorCharacter(cp) {
+ return CLASS_SET_RESERVED_DOUBLE_PUNCTUATOR_CHARACTER.has(cp);
+}
+function isClassSetSyntaxCharacter(cp) {
+ return CLASS_SET_SYNTAX_CHARACTER.has(cp);
+}
+function isClassSetReservedPunctuator(cp) {
+ return CLASS_SET_RESERVED_PUNCTUATOR.has(cp);
+}
+function isIdentifierStartChar(cp) {
+ return isIdStart(cp) || cp === DOLLAR_SIGN || cp === LOW_LINE;
+}
+function isIdentifierPartChar(cp) {
+ return (isIdContinue(cp) ||
+ cp === DOLLAR_SIGN ||
+ cp === ZERO_WIDTH_NON_JOINER ||
+ cp === ZERO_WIDTH_JOINER);
+}
+function isUnicodePropertyNameCharacter(cp) {
+ return isLatinLetter(cp) || cp === LOW_LINE;
+}
+function isUnicodePropertyValueCharacter(cp) {
+ return isUnicodePropertyNameCharacter(cp) || isDecimalDigit(cp);
+}
+class RegExpValidator {
+ constructor(options) {
+ this._reader = new Reader();
+ this._unicodeMode = false;
+ this._unicodeSetsMode = false;
+ this._nFlag = false;
+ this._lastIntValue = 0;
+ this._lastRange = {
+ min: 0,
+ max: Number.POSITIVE_INFINITY,
+ };
+ this._lastStrValue = "";
+ this._lastAssertionIsQuantifiable = false;
+ this._numCapturingParens = 0;
+ this._groupNames = new Set();
+ this._backreferenceNames = new Set();
+ this._srcCtx = null;
+ this._options = options !== null && options !== void 0 ? options : {};
+ }
+ validateLiteral(source, start = 0, end = source.length) {
+ this._srcCtx = { source, start, end, kind: "literal" };
+ this._unicodeSetsMode = this._unicodeMode = this._nFlag = false;
+ this.reset(source, start, end);
+ this.onLiteralEnter(start);
+ if (this.eat(SOLIDUS) && this.eatRegExpBody() && this.eat(SOLIDUS)) {
+ const flagStart = this.index;
+ const unicode = source.includes("u", flagStart);
+ const unicodeSets = source.includes("v", flagStart);
+ this.validateFlagsInternal(source, flagStart, end);
+ this.validatePatternInternal(source, start + 1, flagStart - 1, {
+ unicode,
+ unicodeSets,
+ });
+ }
+ else if (start >= end) {
+ this.raise("Empty");
+ }
+ else {
+ const c = String.fromCodePoint(this.currentCodePoint);
+ this.raise(`Unexpected character '${c}'`);
+ }
+ this.onLiteralLeave(start, end);
+ }
+ validateFlags(source, start = 0, end = source.length) {
+ this._srcCtx = { source, start, end, kind: "flags" };
+ this.validateFlagsInternal(source, start, end);
+ }
+ validatePattern(source, start = 0, end = source.length, uFlagOrFlags = undefined) {
+ this._srcCtx = { source, start, end, kind: "pattern" };
+ this.validatePatternInternal(source, start, end, uFlagOrFlags);
+ }
+ validatePatternInternal(source, start = 0, end = source.length, uFlagOrFlags = undefined) {
+ const mode = this._parseFlagsOptionToMode(uFlagOrFlags, end);
+ this._unicodeMode = mode.unicodeMode;
+ this._nFlag = mode.nFlag;
+ this._unicodeSetsMode = mode.unicodeSetsMode;
+ this.reset(source, start, end);
+ this.consumePattern();
+ if (!this._nFlag &&
+ this.ecmaVersion >= 2018 &&
+ this._groupNames.size > 0) {
+ this._nFlag = true;
+ this.rewind(start);
+ this.consumePattern();
+ }
+ }
+ validateFlagsInternal(source, start, end) {
+ const existingFlags = new Set();
+ let global = false;
+ let ignoreCase = false;
+ let multiline = false;
+ let sticky = false;
+ let unicode = false;
+ let dotAll = false;
+ let hasIndices = false;
+ let unicodeSets = false;
+ for (let i = start; i < end; ++i) {
+ const flag = source.charCodeAt(i);
+ if (existingFlags.has(flag)) {
+ this.raise(`Duplicated flag '${source[i]}'`, { index: start });
+ }
+ existingFlags.add(flag);
+ if (flag === LATIN_SMALL_LETTER_G) {
+ global = true;
+ }
+ else if (flag === LATIN_SMALL_LETTER_I) {
+ ignoreCase = true;
+ }
+ else if (flag === LATIN_SMALL_LETTER_M) {
+ multiline = true;
+ }
+ else if (flag === LATIN_SMALL_LETTER_U &&
+ this.ecmaVersion >= 2015) {
+ unicode = true;
+ }
+ else if (flag === LATIN_SMALL_LETTER_Y &&
+ this.ecmaVersion >= 2015) {
+ sticky = true;
+ }
+ else if (flag === LATIN_SMALL_LETTER_S &&
+ this.ecmaVersion >= 2018) {
+ dotAll = true;
+ }
+ else if (flag === LATIN_SMALL_LETTER_D &&
+ this.ecmaVersion >= 2022) {
+ hasIndices = true;
+ }
+ else if (flag === LATIN_SMALL_LETTER_V &&
+ this.ecmaVersion >= 2024) {
+ unicodeSets = true;
+ }
+ else {
+ this.raise(`Invalid flag '${source[i]}'`, { index: start });
+ }
+ }
+ this.onRegExpFlags(start, end, {
+ global,
+ ignoreCase,
+ multiline,
+ unicode,
+ sticky,
+ dotAll,
+ hasIndices,
+ unicodeSets,
+ });
+ }
+ _parseFlagsOptionToMode(uFlagOrFlags, sourceEnd) {
+ let unicode = false;
+ let unicodeSets = false;
+ if (uFlagOrFlags && this.ecmaVersion >= 2015) {
+ if (typeof uFlagOrFlags === "object") {
+ unicode = Boolean(uFlagOrFlags.unicode);
+ if (this.ecmaVersion >= 2024) {
+ unicodeSets = Boolean(uFlagOrFlags.unicodeSets);
+ }
+ }
+ else {
+ unicode = uFlagOrFlags;
+ }
+ }
+ if (unicode && unicodeSets) {
+ this.raise("Invalid regular expression flags", {
+ index: sourceEnd + 1,
+ unicode,
+ unicodeSets,
+ });
+ }
+ const unicodeMode = unicode || unicodeSets;
+ const nFlag = (unicode && this.ecmaVersion >= 2018) ||
+ unicodeSets ||
+ Boolean(this._options.strict && this.ecmaVersion >= 2023);
+ const unicodeSetsMode = unicodeSets;
+ return { unicodeMode, nFlag, unicodeSetsMode };
+ }
+ get strict() {
+ return Boolean(this._options.strict) || this._unicodeMode;
+ }
+ get ecmaVersion() {
+ var _a;
+ return (_a = this._options.ecmaVersion) !== null && _a !== void 0 ? _a : latestEcmaVersion;
+ }
+ onLiteralEnter(start) {
+ if (this._options.onLiteralEnter) {
+ this._options.onLiteralEnter(start);
+ }
+ }
+ onLiteralLeave(start, end) {
+ if (this._options.onLiteralLeave) {
+ this._options.onLiteralLeave(start, end);
+ }
+ }
+ onRegExpFlags(start, end, flags) {
+ if (this._options.onRegExpFlags) {
+ this._options.onRegExpFlags(start, end, flags);
+ }
+ if (this._options.onFlags) {
+ this._options.onFlags(start, end, flags.global, flags.ignoreCase, flags.multiline, flags.unicode, flags.sticky, flags.dotAll, flags.hasIndices);
+ }
+ }
+ onPatternEnter(start) {
+ if (this._options.onPatternEnter) {
+ this._options.onPatternEnter(start);
+ }
+ }
+ onPatternLeave(start, end) {
+ if (this._options.onPatternLeave) {
+ this._options.onPatternLeave(start, end);
+ }
+ }
+ onDisjunctionEnter(start) {
+ if (this._options.onDisjunctionEnter) {
+ this._options.onDisjunctionEnter(start);
+ }
+ }
+ onDisjunctionLeave(start, end) {
+ if (this._options.onDisjunctionLeave) {
+ this._options.onDisjunctionLeave(start, end);
+ }
+ }
+ onAlternativeEnter(start, index) {
+ if (this._options.onAlternativeEnter) {
+ this._options.onAlternativeEnter(start, index);
+ }
+ }
+ onAlternativeLeave(start, end, index) {
+ if (this._options.onAlternativeLeave) {
+ this._options.onAlternativeLeave(start, end, index);
+ }
+ }
+ onGroupEnter(start) {
+ if (this._options.onGroupEnter) {
+ this._options.onGroupEnter(start);
+ }
+ }
+ onGroupLeave(start, end) {
+ if (this._options.onGroupLeave) {
+ this._options.onGroupLeave(start, end);
+ }
+ }
+ onCapturingGroupEnter(start, name) {
+ if (this._options.onCapturingGroupEnter) {
+ this._options.onCapturingGroupEnter(start, name);
+ }
+ }
+ onCapturingGroupLeave(start, end, name) {
+ if (this._options.onCapturingGroupLeave) {
+ this._options.onCapturingGroupLeave(start, end, name);
+ }
+ }
+ onQuantifier(start, end, min, max, greedy) {
+ if (this._options.onQuantifier) {
+ this._options.onQuantifier(start, end, min, max, greedy);
+ }
+ }
+ onLookaroundAssertionEnter(start, kind, negate) {
+ if (this._options.onLookaroundAssertionEnter) {
+ this._options.onLookaroundAssertionEnter(start, kind, negate);
+ }
+ }
+ onLookaroundAssertionLeave(start, end, kind, negate) {
+ if (this._options.onLookaroundAssertionLeave) {
+ this._options.onLookaroundAssertionLeave(start, end, kind, negate);
+ }
+ }
+ onEdgeAssertion(start, end, kind) {
+ if (this._options.onEdgeAssertion) {
+ this._options.onEdgeAssertion(start, end, kind);
+ }
+ }
+ onWordBoundaryAssertion(start, end, kind, negate) {
+ if (this._options.onWordBoundaryAssertion) {
+ this._options.onWordBoundaryAssertion(start, end, kind, negate);
+ }
+ }
+ onAnyCharacterSet(start, end, kind) {
+ if (this._options.onAnyCharacterSet) {
+ this._options.onAnyCharacterSet(start, end, kind);
+ }
+ }
+ onEscapeCharacterSet(start, end, kind, negate) {
+ if (this._options.onEscapeCharacterSet) {
+ this._options.onEscapeCharacterSet(start, end, kind, negate);
+ }
+ }
+ onUnicodePropertyCharacterSet(start, end, kind, key, value, negate, strings) {
+ if (this._options.onUnicodePropertyCharacterSet) {
+ this._options.onUnicodePropertyCharacterSet(start, end, kind, key, value, negate, strings);
+ }
+ }
+ onCharacter(start, end, value) {
+ if (this._options.onCharacter) {
+ this._options.onCharacter(start, end, value);
+ }
+ }
+ onBackreference(start, end, ref) {
+ if (this._options.onBackreference) {
+ this._options.onBackreference(start, end, ref);
+ }
+ }
+ onCharacterClassEnter(start, negate, unicodeSets) {
+ if (this._options.onCharacterClassEnter) {
+ this._options.onCharacterClassEnter(start, negate, unicodeSets);
+ }
+ }
+ onCharacterClassLeave(start, end, negate) {
+ if (this._options.onCharacterClassLeave) {
+ this._options.onCharacterClassLeave(start, end, negate);
+ }
+ }
+ onCharacterClassRange(start, end, min, max) {
+ if (this._options.onCharacterClassRange) {
+ this._options.onCharacterClassRange(start, end, min, max);
+ }
+ }
+ onClassIntersection(start, end) {
+ if (this._options.onClassIntersection) {
+ this._options.onClassIntersection(start, end);
+ }
+ }
+ onClassSubtraction(start, end) {
+ if (this._options.onClassSubtraction) {
+ this._options.onClassSubtraction(start, end);
+ }
+ }
+ onClassStringDisjunctionEnter(start) {
+ if (this._options.onClassStringDisjunctionEnter) {
+ this._options.onClassStringDisjunctionEnter(start);
+ }
+ }
+ onClassStringDisjunctionLeave(start, end) {
+ if (this._options.onClassStringDisjunctionLeave) {
+ this._options.onClassStringDisjunctionLeave(start, end);
+ }
+ }
+ onStringAlternativeEnter(start, index) {
+ if (this._options.onStringAlternativeEnter) {
+ this._options.onStringAlternativeEnter(start, index);
+ }
+ }
+ onStringAlternativeLeave(start, end, index) {
+ if (this._options.onStringAlternativeLeave) {
+ this._options.onStringAlternativeLeave(start, end, index);
+ }
+ }
+ get index() {
+ return this._reader.index;
+ }
+ get currentCodePoint() {
+ return this._reader.currentCodePoint;
+ }
+ get nextCodePoint() {
+ return this._reader.nextCodePoint;
+ }
+ get nextCodePoint2() {
+ return this._reader.nextCodePoint2;
+ }
+ get nextCodePoint3() {
+ return this._reader.nextCodePoint3;
+ }
+ reset(source, start, end) {
+ this._reader.reset(source, start, end, this._unicodeMode);
+ }
+ rewind(index) {
+ this._reader.rewind(index);
+ }
+ advance() {
+ this._reader.advance();
+ }
+ eat(cp) {
+ return this._reader.eat(cp);
+ }
+ eat2(cp1, cp2) {
+ return this._reader.eat2(cp1, cp2);
+ }
+ eat3(cp1, cp2, cp3) {
+ return this._reader.eat3(cp1, cp2, cp3);
+ }
+ raise(message, context) {
+ var _a, _b, _c;
+ throw new RegExpSyntaxError(this._srcCtx, {
+ unicode: (_a = context === null || context === void 0 ? void 0 : context.unicode) !== null && _a !== void 0 ? _a : (this._unicodeMode && !this._unicodeSetsMode),
+ unicodeSets: (_b = context === null || context === void 0 ? void 0 : context.unicodeSets) !== null && _b !== void 0 ? _b : this._unicodeSetsMode,
+ }, (_c = context === null || context === void 0 ? void 0 : context.index) !== null && _c !== void 0 ? _c : this.index, message);
+ }
+ eatRegExpBody() {
+ const start = this.index;
+ let inClass = false;
+ let escaped = false;
+ for (;;) {
+ const cp = this.currentCodePoint;
+ if (cp === -1 || isLineTerminator(cp)) {
+ const kind = inClass ? "character class" : "regular expression";
+ this.raise(`Unterminated ${kind}`);
+ }
+ if (escaped) {
+ escaped = false;
+ }
+ else if (cp === REVERSE_SOLIDUS) {
+ escaped = true;
+ }
+ else if (cp === LEFT_SQUARE_BRACKET) {
+ inClass = true;
+ }
+ else if (cp === RIGHT_SQUARE_BRACKET) {
+ inClass = false;
+ }
+ else if ((cp === SOLIDUS && !inClass) ||
+ (cp === ASTERISK && this.index === start)) {
+ break;
+ }
+ this.advance();
+ }
+ return this.index !== start;
+ }
+ consumePattern() {
+ const start = this.index;
+ this._numCapturingParens = this.countCapturingParens();
+ this._groupNames.clear();
+ this._backreferenceNames.clear();
+ this.onPatternEnter(start);
+ this.consumeDisjunction();
+ const cp = this.currentCodePoint;
+ if (this.currentCodePoint !== -1) {
+ if (cp === RIGHT_PARENTHESIS) {
+ this.raise("Unmatched ')'");
+ }
+ if (cp === REVERSE_SOLIDUS) {
+ this.raise("\\ at end of pattern");
+ }
+ if (cp === RIGHT_SQUARE_BRACKET || cp === RIGHT_CURLY_BRACKET) {
+ this.raise("Lone quantifier brackets");
+ }
+ const c = String.fromCodePoint(cp);
+ this.raise(`Unexpected character '${c}'`);
+ }
+ for (const name of this._backreferenceNames) {
+ if (!this._groupNames.has(name)) {
+ this.raise("Invalid named capture referenced");
+ }
+ }
+ this.onPatternLeave(start, this.index);
+ }
+ countCapturingParens() {
+ const start = this.index;
+ let inClass = false;
+ let escaped = false;
+ let count = 0;
+ let cp = 0;
+ while ((cp = this.currentCodePoint) !== -1) {
+ if (escaped) {
+ escaped = false;
+ }
+ else if (cp === REVERSE_SOLIDUS) {
+ escaped = true;
+ }
+ else if (cp === LEFT_SQUARE_BRACKET) {
+ inClass = true;
+ }
+ else if (cp === RIGHT_SQUARE_BRACKET) {
+ inClass = false;
+ }
+ else if (cp === LEFT_PARENTHESIS &&
+ !inClass &&
+ (this.nextCodePoint !== QUESTION_MARK ||
+ (this.nextCodePoint2 === LESS_THAN_SIGN &&
+ this.nextCodePoint3 !== EQUALS_SIGN &&
+ this.nextCodePoint3 !== EXCLAMATION_MARK))) {
+ count += 1;
+ }
+ this.advance();
+ }
+ this.rewind(start);
+ return count;
+ }
+ consumeDisjunction() {
+ const start = this.index;
+ let i = 0;
+ this.onDisjunctionEnter(start);
+ do {
+ this.consumeAlternative(i++);
+ } while (this.eat(VERTICAL_LINE));
+ if (this.consumeQuantifier(true)) {
+ this.raise("Nothing to repeat");
+ }
+ if (this.eat(LEFT_CURLY_BRACKET)) {
+ this.raise("Lone quantifier brackets");
+ }
+ this.onDisjunctionLeave(start, this.index);
+ }
+ consumeAlternative(i) {
+ const start = this.index;
+ this.onAlternativeEnter(start, i);
+ while (this.currentCodePoint !== -1 && this.consumeTerm()) {
+ }
+ this.onAlternativeLeave(start, this.index, i);
+ }
+ consumeTerm() {
+ if (this._unicodeMode || this.strict) {
+ return (this.consumeAssertion() ||
+ (this.consumeAtom() && this.consumeOptionalQuantifier()));
+ }
+ return ((this.consumeAssertion() &&
+ (!this._lastAssertionIsQuantifiable ||
+ this.consumeOptionalQuantifier())) ||
+ (this.consumeExtendedAtom() && this.consumeOptionalQuantifier()));
+ }
+ consumeOptionalQuantifier() {
+ this.consumeQuantifier();
+ return true;
+ }
+ consumeAssertion() {
+ const start = this.index;
+ this._lastAssertionIsQuantifiable = false;
+ if (this.eat(CIRCUMFLEX_ACCENT)) {
+ this.onEdgeAssertion(start, this.index, "start");
+ return true;
+ }
+ if (this.eat(DOLLAR_SIGN)) {
+ this.onEdgeAssertion(start, this.index, "end");
+ return true;
+ }
+ if (this.eat2(REVERSE_SOLIDUS, LATIN_CAPITAL_LETTER_B)) {
+ this.onWordBoundaryAssertion(start, this.index, "word", true);
+ return true;
+ }
+ if (this.eat2(REVERSE_SOLIDUS, LATIN_SMALL_LETTER_B)) {
+ this.onWordBoundaryAssertion(start, this.index, "word", false);
+ return true;
+ }
+ if (this.eat2(LEFT_PARENTHESIS, QUESTION_MARK)) {
+ const lookbehind = this.ecmaVersion >= 2018 && this.eat(LESS_THAN_SIGN);
+ let negate = false;
+ if (this.eat(EQUALS_SIGN) ||
+ (negate = this.eat(EXCLAMATION_MARK))) {
+ const kind = lookbehind ? "lookbehind" : "lookahead";
+ this.onLookaroundAssertionEnter(start, kind, negate);
+ this.consumeDisjunction();
+ if (!this.eat(RIGHT_PARENTHESIS)) {
+ this.raise("Unterminated group");
+ }
+ this._lastAssertionIsQuantifiable = !lookbehind && !this.strict;
+ this.onLookaroundAssertionLeave(start, this.index, kind, negate);
+ return true;
+ }
+ this.rewind(start);
+ }
+ return false;
+ }
+ consumeQuantifier(noConsume = false) {
+ const start = this.index;
+ let min = 0;
+ let max = 0;
+ let greedy = false;
+ if (this.eat(ASTERISK)) {
+ min = 0;
+ max = Number.POSITIVE_INFINITY;
+ }
+ else if (this.eat(PLUS_SIGN)) {
+ min = 1;
+ max = Number.POSITIVE_INFINITY;
+ }
+ else if (this.eat(QUESTION_MARK)) {
+ min = 0;
+ max = 1;
+ }
+ else if (this.eatBracedQuantifier(noConsume)) {
+ ({ min, max } = this._lastRange);
+ }
+ else {
+ return false;
+ }
+ greedy = !this.eat(QUESTION_MARK);
+ if (!noConsume) {
+ this.onQuantifier(start, this.index, min, max, greedy);
+ }
+ return true;
+ }
+ eatBracedQuantifier(noError) {
+ const start = this.index;
+ if (this.eat(LEFT_CURLY_BRACKET)) {
+ if (this.eatDecimalDigits()) {
+ const min = this._lastIntValue;
+ let max = min;
+ if (this.eat(COMMA)) {
+ max = this.eatDecimalDigits()
+ ? this._lastIntValue
+ : Number.POSITIVE_INFINITY;
+ }
+ if (this.eat(RIGHT_CURLY_BRACKET)) {
+ if (!noError && max < min) {
+ this.raise("numbers out of order in {} quantifier");
+ }
+ this._lastRange = { min, max };
+ return true;
+ }
+ }
+ if (!noError && (this._unicodeMode || this.strict)) {
+ this.raise("Incomplete quantifier");
+ }
+ this.rewind(start);
+ }
+ return false;
+ }
+ consumeAtom() {
+ return (this.consumePatternCharacter() ||
+ this.consumeDot() ||
+ this.consumeReverseSolidusAtomEscape() ||
+ Boolean(this.consumeCharacterClass()) ||
+ this.consumeUncapturingGroup() ||
+ this.consumeCapturingGroup());
+ }
+ consumeDot() {
+ if (this.eat(FULL_STOP)) {
+ this.onAnyCharacterSet(this.index - 1, this.index, "any");
+ return true;
+ }
+ return false;
+ }
+ consumeReverseSolidusAtomEscape() {
+ const start = this.index;
+ if (this.eat(REVERSE_SOLIDUS)) {
+ if (this.consumeAtomEscape()) {
+ return true;
+ }
+ this.rewind(start);
+ }
+ return false;
+ }
+ consumeUncapturingGroup() {
+ const start = this.index;
+ if (this.eat3(LEFT_PARENTHESIS, QUESTION_MARK, COLON)) {
+ this.onGroupEnter(start);
+ this.consumeDisjunction();
+ if (!this.eat(RIGHT_PARENTHESIS)) {
+ this.raise("Unterminated group");
+ }
+ this.onGroupLeave(start, this.index);
+ return true;
+ }
+ return false;
+ }
+ consumeCapturingGroup() {
+ const start = this.index;
+ if (this.eat(LEFT_PARENTHESIS)) {
+ let name = null;
+ if (this.ecmaVersion >= 2018) {
+ if (this.consumeGroupSpecifier()) {
+ name = this._lastStrValue;
+ }
+ }
+ else if (this.currentCodePoint === QUESTION_MARK) {
+ this.raise("Invalid group");
+ }
+ this.onCapturingGroupEnter(start, name);
+ this.consumeDisjunction();
+ if (!this.eat(RIGHT_PARENTHESIS)) {
+ this.raise("Unterminated group");
+ }
+ this.onCapturingGroupLeave(start, this.index, name);
+ return true;
+ }
+ return false;
+ }
+ consumeExtendedAtom() {
+ return (this.consumeDot() ||
+ this.consumeReverseSolidusAtomEscape() ||
+ this.consumeReverseSolidusFollowedByC() ||
+ Boolean(this.consumeCharacterClass()) ||
+ this.consumeUncapturingGroup() ||
+ this.consumeCapturingGroup() ||
+ this.consumeInvalidBracedQuantifier() ||
+ this.consumeExtendedPatternCharacter());
+ }
+ consumeReverseSolidusFollowedByC() {
+ const start = this.index;
+ if (this.currentCodePoint === REVERSE_SOLIDUS &&
+ this.nextCodePoint === LATIN_SMALL_LETTER_C) {
+ this._lastIntValue = this.currentCodePoint;
+ this.advance();
+ this.onCharacter(start, this.index, REVERSE_SOLIDUS);
+ return true;
+ }
+ return false;
+ }
+ consumeInvalidBracedQuantifier() {
+ if (this.eatBracedQuantifier(true)) {
+ this.raise("Nothing to repeat");
+ }
+ return false;
+ }
+ consumePatternCharacter() {
+ const start = this.index;
+ const cp = this.currentCodePoint;
+ if (cp !== -1 && !isSyntaxCharacter(cp)) {
+ this.advance();
+ this.onCharacter(start, this.index, cp);
+ return true;
+ }
+ return false;
+ }
+ consumeExtendedPatternCharacter() {
+ const start = this.index;
+ const cp = this.currentCodePoint;
+ if (cp !== -1 &&
+ cp !== CIRCUMFLEX_ACCENT &&
+ cp !== DOLLAR_SIGN &&
+ cp !== REVERSE_SOLIDUS &&
+ cp !== FULL_STOP &&
+ cp !== ASTERISK &&
+ cp !== PLUS_SIGN &&
+ cp !== QUESTION_MARK &&
+ cp !== LEFT_PARENTHESIS &&
+ cp !== RIGHT_PARENTHESIS &&
+ cp !== LEFT_SQUARE_BRACKET &&
+ cp !== VERTICAL_LINE) {
+ this.advance();
+ this.onCharacter(start, this.index, cp);
+ return true;
+ }
+ return false;
+ }
+ consumeGroupSpecifier() {
+ if (this.eat(QUESTION_MARK)) {
+ if (this.eatGroupName()) {
+ if (!this._groupNames.has(this._lastStrValue)) {
+ this._groupNames.add(this._lastStrValue);
+ return true;
+ }
+ this.raise("Duplicate capture group name");
+ }
+ this.raise("Invalid group");
+ }
+ return false;
+ }
+ consumeAtomEscape() {
+ if (this.consumeBackreference() ||
+ this.consumeCharacterClassEscape() ||
+ this.consumeCharacterEscape() ||
+ (this._nFlag && this.consumeKGroupName())) {
+ return true;
+ }
+ if (this.strict || this._unicodeMode) {
+ this.raise("Invalid escape");
+ }
+ return false;
+ }
+ consumeBackreference() {
+ const start = this.index;
+ if (this.eatDecimalEscape()) {
+ const n = this._lastIntValue;
+ if (n <= this._numCapturingParens) {
+ this.onBackreference(start - 1, this.index, n);
+ return true;
+ }
+ if (this.strict || this._unicodeMode) {
+ this.raise("Invalid escape");
+ }
+ this.rewind(start);
+ }
+ return false;
+ }
+ consumeCharacterClassEscape() {
+ var _a;
+ const start = this.index;
+ if (this.eat(LATIN_SMALL_LETTER_D)) {
+ this._lastIntValue = -1;
+ this.onEscapeCharacterSet(start - 1, this.index, "digit", false);
+ return {};
+ }
+ if (this.eat(LATIN_CAPITAL_LETTER_D)) {
+ this._lastIntValue = -1;
+ this.onEscapeCharacterSet(start - 1, this.index, "digit", true);
+ return {};
+ }
+ if (this.eat(LATIN_SMALL_LETTER_S)) {
+ this._lastIntValue = -1;
+ this.onEscapeCharacterSet(start - 1, this.index, "space", false);
+ return {};
+ }
+ if (this.eat(LATIN_CAPITAL_LETTER_S)) {
+ this._lastIntValue = -1;
+ this.onEscapeCharacterSet(start - 1, this.index, "space", true);
+ return {};
+ }
+ if (this.eat(LATIN_SMALL_LETTER_W)) {
+ this._lastIntValue = -1;
+ this.onEscapeCharacterSet(start - 1, this.index, "word", false);
+ return {};
+ }
+ if (this.eat(LATIN_CAPITAL_LETTER_W)) {
+ this._lastIntValue = -1;
+ this.onEscapeCharacterSet(start - 1, this.index, "word", true);
+ return {};
+ }
+ let negate = false;
+ if (this._unicodeMode &&
+ this.ecmaVersion >= 2018 &&
+ (this.eat(LATIN_SMALL_LETTER_P) ||
+ (negate = this.eat(LATIN_CAPITAL_LETTER_P)))) {
+ this._lastIntValue = -1;
+ let result = null;
+ if (this.eat(LEFT_CURLY_BRACKET) &&
+ (result = this.eatUnicodePropertyValueExpression()) &&
+ this.eat(RIGHT_CURLY_BRACKET)) {
+ if (negate && result.strings) {
+ this.raise("Invalid property name");
+ }
+ this.onUnicodePropertyCharacterSet(start - 1, this.index, "property", result.key, result.value, negate, (_a = result.strings) !== null && _a !== void 0 ? _a : false);
+ return { mayContainStrings: result.strings };
+ }
+ this.raise("Invalid property name");
+ }
+ return null;
+ }
+ consumeCharacterEscape() {
+ const start = this.index;
+ if (this.eatControlEscape() ||
+ this.eatCControlLetter() ||
+ this.eatZero() ||
+ this.eatHexEscapeSequence() ||
+ this.eatRegExpUnicodeEscapeSequence() ||
+ (!this.strict &&
+ !this._unicodeMode &&
+ this.eatLegacyOctalEscapeSequence()) ||
+ this.eatIdentityEscape()) {
+ this.onCharacter(start - 1, this.index, this._lastIntValue);
+ return true;
+ }
+ return false;
+ }
+ consumeKGroupName() {
+ const start = this.index;
+ if (this.eat(LATIN_SMALL_LETTER_K)) {
+ if (this.eatGroupName()) {
+ const groupName = this._lastStrValue;
+ this._backreferenceNames.add(groupName);
+ this.onBackreference(start - 1, this.index, groupName);
+ return true;
+ }
+ this.raise("Invalid named reference");
+ }
+ return false;
+ }
+ consumeCharacterClass() {
+ const start = this.index;
+ if (this.eat(LEFT_SQUARE_BRACKET)) {
+ const negate = this.eat(CIRCUMFLEX_ACCENT);
+ this.onCharacterClassEnter(start, negate, this._unicodeSetsMode);
+ const result = this.consumeClassContents();
+ if (!this.eat(RIGHT_SQUARE_BRACKET)) {
+ if (this.currentCodePoint === -1) {
+ this.raise("Unterminated character class");
+ }
+ this.raise("Invalid character in character class");
+ }
+ if (negate && result.mayContainStrings) {
+ this.raise("Negated character class may contain strings");
+ }
+ this.onCharacterClassLeave(start, this.index, negate);
+ return result;
+ }
+ return null;
+ }
+ consumeClassContents() {
+ if (this._unicodeSetsMode) {
+ if (this.currentCodePoint === RIGHT_SQUARE_BRACKET) {
+ return {};
+ }
+ const result = this.consumeClassSetExpression();
+ return result;
+ }
+ const strict = this.strict || this._unicodeMode;
+ for (;;) {
+ const rangeStart = this.index;
+ if (!this.consumeClassAtom()) {
+ break;
+ }
+ const min = this._lastIntValue;
+ if (!this.eat(HYPHEN_MINUS)) {
+ continue;
+ }
+ this.onCharacter(this.index - 1, this.index, HYPHEN_MINUS);
+ if (!this.consumeClassAtom()) {
+ break;
+ }
+ const max = this._lastIntValue;
+ if (min === -1 || max === -1) {
+ if (strict) {
+ this.raise("Invalid character class");
+ }
+ continue;
+ }
+ if (min > max) {
+ this.raise("Range out of order in character class");
+ }
+ this.onCharacterClassRange(rangeStart, this.index, min, max);
+ }
+ return {};
+ }
+ consumeClassAtom() {
+ const start = this.index;
+ const cp = this.currentCodePoint;
+ if (cp !== -1 &&
+ cp !== REVERSE_SOLIDUS &&
+ cp !== RIGHT_SQUARE_BRACKET) {
+ this.advance();
+ this._lastIntValue = cp;
+ this.onCharacter(start, this.index, this._lastIntValue);
+ return true;
+ }
+ if (this.eat(REVERSE_SOLIDUS)) {
+ if (this.consumeClassEscape()) {
+ return true;
+ }
+ if (!this.strict &&
+ this.currentCodePoint === LATIN_SMALL_LETTER_C) {
+ this._lastIntValue = REVERSE_SOLIDUS;
+ this.onCharacter(start, this.index, this._lastIntValue);
+ return true;
+ }
+ if (this.strict || this._unicodeMode) {
+ this.raise("Invalid escape");
+ }
+ this.rewind(start);
+ }
+ return false;
+ }
+ consumeClassEscape() {
+ const start = this.index;
+ if (this.eat(LATIN_SMALL_LETTER_B)) {
+ this._lastIntValue = BACKSPACE;
+ this.onCharacter(start - 1, this.index, this._lastIntValue);
+ return true;
+ }
+ if (this._unicodeMode && this.eat(HYPHEN_MINUS)) {
+ this._lastIntValue = HYPHEN_MINUS;
+ this.onCharacter(start - 1, this.index, this._lastIntValue);
+ return true;
+ }
+ let cp = 0;
+ if (!this.strict &&
+ !this._unicodeMode &&
+ this.currentCodePoint === LATIN_SMALL_LETTER_C &&
+ (isDecimalDigit((cp = this.nextCodePoint)) || cp === LOW_LINE)) {
+ this.advance();
+ this.advance();
+ this._lastIntValue = cp % 0x20;
+ this.onCharacter(start - 1, this.index, this._lastIntValue);
+ return true;
+ }
+ return (Boolean(this.consumeCharacterClassEscape()) ||
+ this.consumeCharacterEscape());
+ }
+ consumeClassSetExpression() {
+ const start = this.index;
+ let mayContainStrings = false;
+ let result = null;
+ if (this.consumeClassSetCharacter()) {
+ if (this.consumeClassSetRangeFromOperator(start)) {
+ this.consumeClassUnionRight({});
+ return {};
+ }
+ mayContainStrings = false;
+ }
+ else if ((result = this.consumeClassSetOperand())) {
+ mayContainStrings = result.mayContainStrings;
+ }
+ else {
+ const cp = this.currentCodePoint;
+ if (cp === REVERSE_SOLIDUS) {
+ this.advance();
+ this.raise("Invalid escape");
+ }
+ if (cp === this.nextCodePoint &&
+ isClassSetReservedDoublePunctuatorCharacter(cp)) {
+ this.raise("Invalid set operation in character class");
+ }
+ this.raise("Invalid character in character class");
+ }
+ if (this.eat2(AMPERSAND, AMPERSAND)) {
+ while (this.currentCodePoint !== AMPERSAND &&
+ (result = this.consumeClassSetOperand())) {
+ this.onClassIntersection(start, this.index);
+ if (!result.mayContainStrings) {
+ mayContainStrings = false;
+ }
+ if (this.eat2(AMPERSAND, AMPERSAND)) {
+ continue;
+ }
+ return { mayContainStrings };
+ }
+ this.raise("Invalid character in character class");
+ }
+ if (this.eat2(HYPHEN_MINUS, HYPHEN_MINUS)) {
+ while (this.consumeClassSetOperand()) {
+ this.onClassSubtraction(start, this.index);
+ if (this.eat2(HYPHEN_MINUS, HYPHEN_MINUS)) {
+ continue;
+ }
+ return { mayContainStrings };
+ }
+ this.raise("Invalid character in character class");
+ }
+ return this.consumeClassUnionRight({ mayContainStrings });
+ }
+ consumeClassUnionRight(leftResult) {
+ let mayContainStrings = leftResult.mayContainStrings;
+ for (;;) {
+ const start = this.index;
+ if (this.consumeClassSetCharacter()) {
+ this.consumeClassSetRangeFromOperator(start);
+ continue;
+ }
+ const result = this.consumeClassSetOperand();
+ if (result) {
+ if (result.mayContainStrings) {
+ mayContainStrings = true;
+ }
+ continue;
+ }
+ break;
+ }
+ return { mayContainStrings };
+ }
+ consumeClassSetRangeFromOperator(start) {
+ const currentStart = this.index;
+ const min = this._lastIntValue;
+ if (this.eat(HYPHEN_MINUS)) {
+ if (this.consumeClassSetCharacter()) {
+ const max = this._lastIntValue;
+ if (min === -1 || max === -1) {
+ this.raise("Invalid character class");
+ }
+ if (min > max) {
+ this.raise("Range out of order in character class");
+ }
+ this.onCharacterClassRange(start, this.index, min, max);
+ return true;
+ }
+ this.rewind(currentStart);
+ }
+ return false;
+ }
+ consumeClassSetOperand() {
+ let result = null;
+ if ((result = this.consumeNestedClass())) {
+ return result;
+ }
+ if ((result = this.consumeClassStringDisjunction())) {
+ return result;
+ }
+ if (this.consumeClassSetCharacter()) {
+ return {};
+ }
+ return null;
+ }
+ consumeNestedClass() {
+ const start = this.index;
+ if (this.eat(LEFT_SQUARE_BRACKET)) {
+ const negate = this.eat(CIRCUMFLEX_ACCENT);
+ this.onCharacterClassEnter(start, negate, true);
+ const result = this.consumeClassContents();
+ if (!this.eat(RIGHT_SQUARE_BRACKET)) {
+ this.raise("Unterminated character class");
+ }
+ if (negate && result.mayContainStrings) {
+ this.raise("Negated character class may contain strings");
+ }
+ this.onCharacterClassLeave(start, this.index, negate);
+ return result;
+ }
+ if (this.eat(REVERSE_SOLIDUS)) {
+ const result = this.consumeCharacterClassEscape();
+ if (result) {
+ return result;
+ }
+ this.rewind(start);
+ }
+ return null;
+ }
+ consumeClassStringDisjunction() {
+ const start = this.index;
+ if (this.eat3(REVERSE_SOLIDUS, LATIN_SMALL_LETTER_Q, LEFT_CURLY_BRACKET)) {
+ this.onClassStringDisjunctionEnter(start);
+ let i = 0;
+ let mayContainStrings = false;
+ do {
+ if (this.consumeClassString(i++).mayContainStrings) {
+ mayContainStrings = true;
+ }
+ } while (this.eat(VERTICAL_LINE));
+ if (this.eat(RIGHT_CURLY_BRACKET)) {
+ this.onClassStringDisjunctionLeave(start, this.index);
+ return { mayContainStrings };
+ }
+ this.raise("Unterminated class string disjunction");
+ }
+ return null;
+ }
+ consumeClassString(i) {
+ const start = this.index;
+ let count = 0;
+ this.onStringAlternativeEnter(start, i);
+ while (this.currentCodePoint !== -1 &&
+ this.consumeClassSetCharacter()) {
+ count++;
+ }
+ this.onStringAlternativeLeave(start, this.index, i);
+ return { mayContainStrings: count !== 1 };
+ }
+ consumeClassSetCharacter() {
+ const start = this.index;
+ const cp = this.currentCodePoint;
+ if (cp !== this.nextCodePoint ||
+ !isClassSetReservedDoublePunctuatorCharacter(cp)) {
+ if (cp !== -1 && !isClassSetSyntaxCharacter(cp)) {
+ this._lastIntValue = cp;
+ this.advance();
+ this.onCharacter(start, this.index, this._lastIntValue);
+ return true;
+ }
+ }
+ if (this.eat(REVERSE_SOLIDUS)) {
+ if (this.consumeCharacterEscape()) {
+ return true;
+ }
+ if (isClassSetReservedPunctuator(this.currentCodePoint)) {
+ this._lastIntValue = this.currentCodePoint;
+ this.advance();
+ this.onCharacter(start, this.index, this._lastIntValue);
+ return true;
+ }
+ if (this.eat(LATIN_SMALL_LETTER_B)) {
+ this._lastIntValue = BACKSPACE;
+ this.onCharacter(start, this.index, this._lastIntValue);
+ return true;
+ }
+ this.rewind(start);
+ }
+ return false;
+ }
+ eatGroupName() {
+ if (this.eat(LESS_THAN_SIGN)) {
+ if (this.eatRegExpIdentifierName() && this.eat(GREATER_THAN_SIGN)) {
+ return true;
+ }
+ this.raise("Invalid capture group name");
+ }
+ return false;
+ }
+ eatRegExpIdentifierName() {
+ if (this.eatRegExpIdentifierStart()) {
+ this._lastStrValue = String.fromCodePoint(this._lastIntValue);
+ while (this.eatRegExpIdentifierPart()) {
+ this._lastStrValue += String.fromCodePoint(this._lastIntValue);
+ }
+ return true;
+ }
+ return false;
+ }
+ eatRegExpIdentifierStart() {
+ const start = this.index;
+ const forceUFlag = !this._unicodeMode && this.ecmaVersion >= 2020;
+ let cp = this.currentCodePoint;
+ this.advance();
+ if (cp === REVERSE_SOLIDUS &&
+ this.eatRegExpUnicodeEscapeSequence(forceUFlag)) {
+ cp = this._lastIntValue;
+ }
+ else if (forceUFlag &&
+ isLeadSurrogate(cp) &&
+ isTrailSurrogate(this.currentCodePoint)) {
+ cp = combineSurrogatePair(cp, this.currentCodePoint);
+ this.advance();
+ }
+ if (isIdentifierStartChar(cp)) {
+ this._lastIntValue = cp;
+ return true;
+ }
+ if (this.index !== start) {
+ this.rewind(start);
+ }
+ return false;
+ }
+ eatRegExpIdentifierPart() {
+ const start = this.index;
+ const forceUFlag = !this._unicodeMode && this.ecmaVersion >= 2020;
+ let cp = this.currentCodePoint;
+ this.advance();
+ if (cp === REVERSE_SOLIDUS &&
+ this.eatRegExpUnicodeEscapeSequence(forceUFlag)) {
+ cp = this._lastIntValue;
+ }
+ else if (forceUFlag &&
+ isLeadSurrogate(cp) &&
+ isTrailSurrogate(this.currentCodePoint)) {
+ cp = combineSurrogatePair(cp, this.currentCodePoint);
+ this.advance();
+ }
+ if (isIdentifierPartChar(cp)) {
+ this._lastIntValue = cp;
+ return true;
+ }
+ if (this.index !== start) {
+ this.rewind(start);
+ }
+ return false;
+ }
+ eatCControlLetter() {
+ const start = this.index;
+ if (this.eat(LATIN_SMALL_LETTER_C)) {
+ if (this.eatControlLetter()) {
+ return true;
+ }
+ this.rewind(start);
+ }
+ return false;
+ }
+ eatZero() {
+ if (this.currentCodePoint === DIGIT_ZERO &&
+ !isDecimalDigit(this.nextCodePoint)) {
+ this._lastIntValue = 0;
+ this.advance();
+ return true;
+ }
+ return false;
+ }
+ eatControlEscape() {
+ if (this.eat(LATIN_SMALL_LETTER_F)) {
+ this._lastIntValue = FORM_FEED;
+ return true;
+ }
+ if (this.eat(LATIN_SMALL_LETTER_N)) {
+ this._lastIntValue = LINE_FEED;
+ return true;
+ }
+ if (this.eat(LATIN_SMALL_LETTER_R)) {
+ this._lastIntValue = CARRIAGE_RETURN;
+ return true;
+ }
+ if (this.eat(LATIN_SMALL_LETTER_T)) {
+ this._lastIntValue = CHARACTER_TABULATION;
+ return true;
+ }
+ if (this.eat(LATIN_SMALL_LETTER_V)) {
+ this._lastIntValue = LINE_TABULATION;
+ return true;
+ }
+ return false;
+ }
+ eatControlLetter() {
+ const cp = this.currentCodePoint;
+ if (isLatinLetter(cp)) {
+ this.advance();
+ this._lastIntValue = cp % 0x20;
+ return true;
+ }
+ return false;
+ }
+ eatRegExpUnicodeEscapeSequence(forceUFlag = false) {
+ const start = this.index;
+ const uFlag = forceUFlag || this._unicodeMode;
+ if (this.eat(LATIN_SMALL_LETTER_U)) {
+ if ((uFlag && this.eatRegExpUnicodeSurrogatePairEscape()) ||
+ this.eatFixedHexDigits(4) ||
+ (uFlag && this.eatRegExpUnicodeCodePointEscape())) {
+ return true;
+ }
+ if (this.strict || uFlag) {
+ this.raise("Invalid unicode escape");
+ }
+ this.rewind(start);
+ }
+ return false;
+ }
+ eatRegExpUnicodeSurrogatePairEscape() {
+ const start = this.index;
+ if (this.eatFixedHexDigits(4)) {
+ const lead = this._lastIntValue;
+ if (isLeadSurrogate(lead) &&
+ this.eat(REVERSE_SOLIDUS) &&
+ this.eat(LATIN_SMALL_LETTER_U) &&
+ this.eatFixedHexDigits(4)) {
+ const trail = this._lastIntValue;
+ if (isTrailSurrogate(trail)) {
+ this._lastIntValue = combineSurrogatePair(lead, trail);
+ return true;
+ }
+ }
+ this.rewind(start);
+ }
+ return false;
+ }
+ eatRegExpUnicodeCodePointEscape() {
+ const start = this.index;
+ if (this.eat(LEFT_CURLY_BRACKET) &&
+ this.eatHexDigits() &&
+ this.eat(RIGHT_CURLY_BRACKET) &&
+ isValidUnicode(this._lastIntValue)) {
+ return true;
+ }
+ this.rewind(start);
+ return false;
+ }
+ eatIdentityEscape() {
+ const cp = this.currentCodePoint;
+ if (this.isValidIdentityEscape(cp)) {
+ this._lastIntValue = cp;
+ this.advance();
+ return true;
+ }
+ return false;
+ }
+ isValidIdentityEscape(cp) {
+ if (cp === -1) {
+ return false;
+ }
+ if (this._unicodeMode) {
+ return isSyntaxCharacter(cp) || cp === SOLIDUS;
+ }
+ if (this.strict) {
+ return !isIdContinue(cp);
+ }
+ if (this._nFlag) {
+ return !(cp === LATIN_SMALL_LETTER_C || cp === LATIN_SMALL_LETTER_K);
+ }
+ return cp !== LATIN_SMALL_LETTER_C;
+ }
+ eatDecimalEscape() {
+ this._lastIntValue = 0;
+ let cp = this.currentCodePoint;
+ if (cp >= DIGIT_ONE && cp <= DIGIT_NINE) {
+ do {
+ this._lastIntValue = 10 * this._lastIntValue + (cp - DIGIT_ZERO);
+ this.advance();
+ } while ((cp = this.currentCodePoint) >= DIGIT_ZERO &&
+ cp <= DIGIT_NINE);
+ return true;
+ }
+ return false;
+ }
+ eatUnicodePropertyValueExpression() {
+ const start = this.index;
+ if (this.eatUnicodePropertyName() && this.eat(EQUALS_SIGN)) {
+ const key = this._lastStrValue;
+ if (this.eatUnicodePropertyValue()) {
+ const value = this._lastStrValue;
+ if (isValidUnicodeProperty(this.ecmaVersion, key, value)) {
+ return {
+ key,
+ value: value || null,
+ };
+ }
+ this.raise("Invalid property name");
+ }
+ }
+ this.rewind(start);
+ if (this.eatLoneUnicodePropertyNameOrValue()) {
+ const nameOrValue = this._lastStrValue;
+ if (isValidUnicodeProperty(this.ecmaVersion, "General_Category", nameOrValue)) {
+ return {
+ key: "General_Category",
+ value: nameOrValue || null,
+ };
+ }
+ if (isValidLoneUnicodeProperty(this.ecmaVersion, nameOrValue)) {
+ return {
+ key: nameOrValue,
+ value: null,
+ };
+ }
+ if (this._unicodeSetsMode &&
+ isValidLoneUnicodePropertyOfString(this.ecmaVersion, nameOrValue)) {
+ return {
+ key: nameOrValue,
+ value: null,
+ strings: true,
+ };
+ }
+ this.raise("Invalid property name");
+ }
+ return null;
+ }
+ eatUnicodePropertyName() {
+ this._lastStrValue = "";
+ while (isUnicodePropertyNameCharacter(this.currentCodePoint)) {
+ this._lastStrValue += String.fromCodePoint(this.currentCodePoint);
+ this.advance();
+ }
+ return this._lastStrValue !== "";
+ }
+ eatUnicodePropertyValue() {
+ this._lastStrValue = "";
+ while (isUnicodePropertyValueCharacter(this.currentCodePoint)) {
+ this._lastStrValue += String.fromCodePoint(this.currentCodePoint);
+ this.advance();
+ }
+ return this._lastStrValue !== "";
+ }
+ eatLoneUnicodePropertyNameOrValue() {
+ return this.eatUnicodePropertyValue();
+ }
+ eatHexEscapeSequence() {
+ const start = this.index;
+ if (this.eat(LATIN_SMALL_LETTER_X)) {
+ if (this.eatFixedHexDigits(2)) {
+ return true;
+ }
+ if (this._unicodeMode || this.strict) {
+ this.raise("Invalid escape");
+ }
+ this.rewind(start);
+ }
+ return false;
+ }
+ eatDecimalDigits() {
+ const start = this.index;
+ this._lastIntValue = 0;
+ while (isDecimalDigit(this.currentCodePoint)) {
+ this._lastIntValue =
+ 10 * this._lastIntValue + digitToInt(this.currentCodePoint);
+ this.advance();
+ }
+ return this.index !== start;
+ }
+ eatHexDigits() {
+ const start = this.index;
+ this._lastIntValue = 0;
+ while (isHexDigit(this.currentCodePoint)) {
+ this._lastIntValue =
+ 16 * this._lastIntValue + digitToInt(this.currentCodePoint);
+ this.advance();
+ }
+ return this.index !== start;
+ }
+ eatLegacyOctalEscapeSequence() {
+ if (this.eatOctalDigit()) {
+ const n1 = this._lastIntValue;
+ if (this.eatOctalDigit()) {
+ const n2 = this._lastIntValue;
+ if (n1 <= 3 && this.eatOctalDigit()) {
+ this._lastIntValue = n1 * 64 + n2 * 8 + this._lastIntValue;
+ }
+ else {
+ this._lastIntValue = n1 * 8 + n2;
+ }
+ }
+ else {
+ this._lastIntValue = n1;
+ }
+ return true;
+ }
+ return false;
+ }
+ eatOctalDigit() {
+ const cp = this.currentCodePoint;
+ if (isOctalDigit(cp)) {
+ this.advance();
+ this._lastIntValue = cp - DIGIT_ZERO;
+ return true;
+ }
+ this._lastIntValue = 0;
+ return false;
+ }
+ eatFixedHexDigits(length) {
+ const start = this.index;
+ this._lastIntValue = 0;
+ for (let i = 0; i < length; ++i) {
+ const cp = this.currentCodePoint;
+ if (!isHexDigit(cp)) {
+ this.rewind(start);
+ return false;
+ }
+ this._lastIntValue = 16 * this._lastIntValue + digitToInt(cp);
+ this.advance();
+ }
+ return true;
+ }
+}
+
+const DUMMY_PATTERN = {};
+const DUMMY_FLAGS = {};
+const DUMMY_CAPTURING_GROUP = {};
+function isClassSetOperand(node) {
+ return (node.type === "Character" ||
+ node.type === "CharacterSet" ||
+ node.type === "CharacterClass" ||
+ node.type === "ExpressionCharacterClass" ||
+ node.type === "ClassStringDisjunction");
+}
+class RegExpParserState {
+ constructor(options) {
+ var _a;
+ this._node = DUMMY_PATTERN;
+ this._expressionBuffer = null;
+ this._flags = DUMMY_FLAGS;
+ this._backreferences = [];
+ this._capturingGroups = [];
+ this.source = "";
+ this.strict = Boolean(options === null || options === void 0 ? void 0 : options.strict);
+ this.ecmaVersion = (_a = options === null || options === void 0 ? void 0 : options.ecmaVersion) !== null && _a !== void 0 ? _a : latestEcmaVersion;
+ }
+ get pattern() {
+ if (this._node.type !== "Pattern") {
+ throw new Error("UnknownError");
+ }
+ return this._node;
+ }
+ get flags() {
+ if (this._flags.type !== "Flags") {
+ throw new Error("UnknownError");
+ }
+ return this._flags;
+ }
+ onRegExpFlags(start, end, { global, ignoreCase, multiline, unicode, sticky, dotAll, hasIndices, unicodeSets, }) {
+ this._flags = {
+ type: "Flags",
+ parent: null,
+ start,
+ end,
+ raw: this.source.slice(start, end),
+ global,
+ ignoreCase,
+ multiline,
+ unicode,
+ sticky,
+ dotAll,
+ hasIndices,
+ unicodeSets,
+ };
+ }
+ onPatternEnter(start) {
+ this._node = {
+ type: "Pattern",
+ parent: null,
+ start,
+ end: start,
+ raw: "",
+ alternatives: [],
+ };
+ this._backreferences.length = 0;
+ this._capturingGroups.length = 0;
+ }
+ onPatternLeave(start, end) {
+ this._node.end = end;
+ this._node.raw = this.source.slice(start, end);
+ for (const reference of this._backreferences) {
+ const ref = reference.ref;
+ const group = typeof ref === "number"
+ ? this._capturingGroups[ref - 1]
+ : this._capturingGroups.find((g) => g.name === ref);
+ reference.resolved = group;
+ group.references.push(reference);
+ }
+ }
+ onAlternativeEnter(start) {
+ const parent = this._node;
+ if (parent.type !== "Assertion" &&
+ parent.type !== "CapturingGroup" &&
+ parent.type !== "Group" &&
+ parent.type !== "Pattern") {
+ throw new Error("UnknownError");
+ }
+ this._node = {
+ type: "Alternative",
+ parent,
+ start,
+ end: start,
+ raw: "",
+ elements: [],
+ };
+ parent.alternatives.push(this._node);
+ }
+ onAlternativeLeave(start, end) {
+ const node = this._node;
+ if (node.type !== "Alternative") {
+ throw new Error("UnknownError");
+ }
+ node.end = end;
+ node.raw = this.source.slice(start, end);
+ this._node = node.parent;
+ }
+ onGroupEnter(start) {
+ const parent = this._node;
+ if (parent.type !== "Alternative") {
+ throw new Error("UnknownError");
+ }
+ this._node = {
+ type: "Group",
+ parent,
+ start,
+ end: start,
+ raw: "",
+ alternatives: [],
+ };
+ parent.elements.push(this._node);
+ }
+ onGroupLeave(start, end) {
+ const node = this._node;
+ if (node.type !== "Group" || node.parent.type !== "Alternative") {
+ throw new Error("UnknownError");
+ }
+ node.end = end;
+ node.raw = this.source.slice(start, end);
+ this._node = node.parent;
+ }
+ onCapturingGroupEnter(start, name) {
+ const parent = this._node;
+ if (parent.type !== "Alternative") {
+ throw new Error("UnknownError");
+ }
+ this._node = {
+ type: "CapturingGroup",
+ parent,
+ start,
+ end: start,
+ raw: "",
+ name,
+ alternatives: [],
+ references: [],
+ };
+ parent.elements.push(this._node);
+ this._capturingGroups.push(this._node);
+ }
+ onCapturingGroupLeave(start, end) {
+ const node = this._node;
+ if (node.type !== "CapturingGroup" ||
+ node.parent.type !== "Alternative") {
+ throw new Error("UnknownError");
+ }
+ node.end = end;
+ node.raw = this.source.slice(start, end);
+ this._node = node.parent;
+ }
+ onQuantifier(start, end, min, max, greedy) {
+ const parent = this._node;
+ if (parent.type !== "Alternative") {
+ throw new Error("UnknownError");
+ }
+ const element = parent.elements.pop();
+ if (element == null ||
+ element.type === "Quantifier" ||
+ (element.type === "Assertion" && element.kind !== "lookahead")) {
+ throw new Error("UnknownError");
+ }
+ const node = {
+ type: "Quantifier",
+ parent,
+ start: element.start,
+ end,
+ raw: this.source.slice(element.start, end),
+ min,
+ max,
+ greedy,
+ element,
+ };
+ parent.elements.push(node);
+ element.parent = node;
+ }
+ onLookaroundAssertionEnter(start, kind, negate) {
+ const parent = this._node;
+ if (parent.type !== "Alternative") {
+ throw new Error("UnknownError");
+ }
+ const node = (this._node = {
+ type: "Assertion",
+ parent,
+ start,
+ end: start,
+ raw: "",
+ kind,
+ negate,
+ alternatives: [],
+ });
+ parent.elements.push(node);
+ }
+ onLookaroundAssertionLeave(start, end) {
+ const node = this._node;
+ if (node.type !== "Assertion" || node.parent.type !== "Alternative") {
+ throw new Error("UnknownError");
+ }
+ node.end = end;
+ node.raw = this.source.slice(start, end);
+ this._node = node.parent;
+ }
+ onEdgeAssertion(start, end, kind) {
+ const parent = this._node;
+ if (parent.type !== "Alternative") {
+ throw new Error("UnknownError");
+ }
+ parent.elements.push({
+ type: "Assertion",
+ parent,
+ start,
+ end,
+ raw: this.source.slice(start, end),
+ kind,
+ });
+ }
+ onWordBoundaryAssertion(start, end, kind, negate) {
+ const parent = this._node;
+ if (parent.type !== "Alternative") {
+ throw new Error("UnknownError");
+ }
+ parent.elements.push({
+ type: "Assertion",
+ parent,
+ start,
+ end,
+ raw: this.source.slice(start, end),
+ kind,
+ negate,
+ });
+ }
+ onAnyCharacterSet(start, end, kind) {
+ const parent = this._node;
+ if (parent.type !== "Alternative") {
+ throw new Error("UnknownError");
+ }
+ parent.elements.push({
+ type: "CharacterSet",
+ parent,
+ start,
+ end,
+ raw: this.source.slice(start, end),
+ kind,
+ });
+ }
+ onEscapeCharacterSet(start, end, kind, negate) {
+ const parent = this._node;
+ if (parent.type !== "Alternative" && parent.type !== "CharacterClass") {
+ throw new Error("UnknownError");
+ }
+ parent.elements.push({
+ type: "CharacterSet",
+ parent,
+ start,
+ end,
+ raw: this.source.slice(start, end),
+ kind,
+ negate,
+ });
+ }
+ onUnicodePropertyCharacterSet(start, end, kind, key, value, negate, strings) {
+ const parent = this._node;
+ if (parent.type !== "Alternative" && parent.type !== "CharacterClass") {
+ throw new Error("UnknownError");
+ }
+ const base = {
+ type: "CharacterSet",
+ start,
+ end,
+ raw: this.source.slice(start, end),
+ kind,
+ key,
+ };
+ if (strings) {
+ if ((parent.type === "CharacterClass" && !parent.unicodeSets) ||
+ negate ||
+ value !== null) {
+ throw new Error("UnknownError");
+ }
+ parent.elements.push(Object.assign(Object.assign({}, base), { parent, strings, value, negate }));
+ }
+ else {
+ parent.elements.push(Object.assign(Object.assign({}, base), { parent, strings, value, negate }));
+ }
+ }
+ onCharacter(start, end, value) {
+ const parent = this._node;
+ if (parent.type !== "Alternative" &&
+ parent.type !== "CharacterClass" &&
+ parent.type !== "StringAlternative") {
+ throw new Error("UnknownError");
+ }
+ parent.elements.push({
+ type: "Character",
+ parent,
+ start,
+ end,
+ raw: this.source.slice(start, end),
+ value,
+ });
+ }
+ onBackreference(start, end, ref) {
+ const parent = this._node;
+ if (parent.type !== "Alternative") {
+ throw new Error("UnknownError");
+ }
+ const node = {
+ type: "Backreference",
+ parent,
+ start,
+ end,
+ raw: this.source.slice(start, end),
+ ref,
+ resolved: DUMMY_CAPTURING_GROUP,
+ };
+ parent.elements.push(node);
+ this._backreferences.push(node);
+ }
+ onCharacterClassEnter(start, negate, unicodeSets) {
+ const parent = this._node;
+ const base = {
+ type: "CharacterClass",
+ parent,
+ start,
+ end: start,
+ raw: "",
+ unicodeSets,
+ negate,
+ elements: [],
+ };
+ if (parent.type === "Alternative") {
+ const node = Object.assign(Object.assign({}, base), { parent });
+ this._node = node;
+ parent.elements.push(node);
+ }
+ else if (parent.type === "CharacterClass" &&
+ parent.unicodeSets &&
+ unicodeSets) {
+ const node = Object.assign(Object.assign({}, base), { parent,
+ unicodeSets });
+ this._node = node;
+ parent.elements.push(node);
+ }
+ else {
+ throw new Error("UnknownError");
+ }
+ }
+ onCharacterClassLeave(start, end) {
+ const node = this._node;
+ if (node.type !== "CharacterClass" ||
+ (node.parent.type !== "Alternative" &&
+ node.parent.type !== "CharacterClass")) {
+ throw new Error("UnknownError");
+ }
+ const parent = node.parent;
+ node.end = end;
+ node.raw = this.source.slice(start, end);
+ this._node = parent;
+ const expression = this._expressionBuffer;
+ if ((expression === null || expression === void 0 ? void 0 : expression.parent) !== node) {
+ return;
+ }
+ if (node.elements.length > 0) {
+ throw new Error("UnknownError");
+ }
+ this._expressionBuffer = null;
+ const newNode = {
+ type: "ExpressionCharacterClass",
+ parent,
+ start: node.start,
+ end: node.end,
+ raw: node.raw,
+ negate: node.negate,
+ expression,
+ };
+ expression.parent = newNode;
+ if (node !== parent.elements.pop()) {
+ throw new Error("UnknownError");
+ }
+ parent.elements.push(newNode);
+ }
+ onCharacterClassRange(start, end) {
+ const parent = this._node;
+ if (parent.type !== "CharacterClass") {
+ throw new Error("UnknownError");
+ }
+ const elements = parent.elements;
+ const max = elements.pop();
+ if (!max || max.type !== "Character") {
+ throw new Error("UnknownError");
+ }
+ if (!parent.unicodeSets) {
+ const hyphen = elements.pop();
+ if (!hyphen ||
+ hyphen.type !== "Character" ||
+ hyphen.value !== HYPHEN_MINUS) {
+ throw new Error("UnknownError");
+ }
+ }
+ const min = elements.pop();
+ if (!min || min.type !== "Character") {
+ throw new Error("UnknownError");
+ }
+ const node = {
+ type: "CharacterClassRange",
+ parent,
+ start,
+ end,
+ raw: this.source.slice(start, end),
+ min,
+ max,
+ };
+ min.parent = node;
+ max.parent = node;
+ elements.push(node);
+ }
+ onClassIntersection(start, end) {
+ var _a;
+ const parent = this._node;
+ if (parent.type !== "CharacterClass" || !parent.unicodeSets) {
+ throw new Error("UnknownError");
+ }
+ const right = parent.elements.pop();
+ const left = (_a = this._expressionBuffer) !== null && _a !== void 0 ? _a : parent.elements.pop();
+ if (!left ||
+ !right ||
+ left.type === "ClassSubtraction" ||
+ (left.type !== "ClassIntersection" && !isClassSetOperand(left)) ||
+ !isClassSetOperand(right)) {
+ throw new Error("UnknownError");
+ }
+ const node = {
+ type: "ClassIntersection",
+ parent: parent,
+ start,
+ end,
+ raw: this.source.slice(start, end),
+ left,
+ right,
+ };
+ left.parent = node;
+ right.parent = node;
+ this._expressionBuffer = node;
+ }
+ onClassSubtraction(start, end) {
+ var _a;
+ const parent = this._node;
+ if (parent.type !== "CharacterClass" || !parent.unicodeSets) {
+ throw new Error("UnknownError");
+ }
+ const right = parent.elements.pop();
+ const left = (_a = this._expressionBuffer) !== null && _a !== void 0 ? _a : parent.elements.pop();
+ if (!left ||
+ !right ||
+ left.type === "ClassIntersection" ||
+ (left.type !== "ClassSubtraction" && !isClassSetOperand(left)) ||
+ !isClassSetOperand(right)) {
+ throw new Error("UnknownError");
+ }
+ const node = {
+ type: "ClassSubtraction",
+ parent: parent,
+ start,
+ end,
+ raw: this.source.slice(start, end),
+ left,
+ right,
+ };
+ left.parent = node;
+ right.parent = node;
+ this._expressionBuffer = node;
+ }
+ onClassStringDisjunctionEnter(start) {
+ const parent = this._node;
+ if (parent.type !== "CharacterClass" || !parent.unicodeSets) {
+ throw new Error("UnknownError");
+ }
+ this._node = {
+ type: "ClassStringDisjunction",
+ parent,
+ start,
+ end: start,
+ raw: "",
+ alternatives: [],
+ };
+ parent.elements.push(this._node);
+ }
+ onClassStringDisjunctionLeave(start, end) {
+ const node = this._node;
+ if (node.type !== "ClassStringDisjunction" ||
+ node.parent.type !== "CharacterClass") {
+ throw new Error("UnknownError");
+ }
+ node.end = end;
+ node.raw = this.source.slice(start, end);
+ this._node = node.parent;
+ }
+ onStringAlternativeEnter(start) {
+ const parent = this._node;
+ if (parent.type !== "ClassStringDisjunction") {
+ throw new Error("UnknownError");
+ }
+ this._node = {
+ type: "StringAlternative",
+ parent,
+ start,
+ end: start,
+ raw: "",
+ elements: [],
+ };
+ parent.alternatives.push(this._node);
+ }
+ onStringAlternativeLeave(start, end) {
+ const node = this._node;
+ if (node.type !== "StringAlternative") {
+ throw new Error("UnknownError");
+ }
+ node.end = end;
+ node.raw = this.source.slice(start, end);
+ this._node = node.parent;
+ }
+}
+class RegExpParser {
+ constructor(options) {
+ this._state = new RegExpParserState(options);
+ this._validator = new RegExpValidator(this._state);
+ }
+ parseLiteral(source, start = 0, end = source.length) {
+ this._state.source = source;
+ this._validator.validateLiteral(source, start, end);
+ const pattern = this._state.pattern;
+ const flags = this._state.flags;
+ const literal = {
+ type: "RegExpLiteral",
+ parent: null,
+ start,
+ end,
+ raw: source,
+ pattern,
+ flags,
+ };
+ pattern.parent = literal;
+ flags.parent = literal;
+ return literal;
+ }
+ parseFlags(source, start = 0, end = source.length) {
+ this._state.source = source;
+ this._validator.validateFlags(source, start, end);
+ return this._state.flags;
+ }
+ parsePattern(source, start = 0, end = source.length, uFlagOrFlags = undefined) {
+ this._state.source = source;
+ this._validator.validatePattern(source, start, end, uFlagOrFlags);
+ return this._state.pattern;
+ }
+}
+
+class RegExpVisitor {
+ constructor(handlers) {
+ this._handlers = handlers;
+ }
+ visit(node) {
+ switch (node.type) {
+ case "Alternative":
+ this.visitAlternative(node);
+ break;
+ case "Assertion":
+ this.visitAssertion(node);
+ break;
+ case "Backreference":
+ this.visitBackreference(node);
+ break;
+ case "CapturingGroup":
+ this.visitCapturingGroup(node);
+ break;
+ case "Character":
+ this.visitCharacter(node);
+ break;
+ case "CharacterClass":
+ this.visitCharacterClass(node);
+ break;
+ case "CharacterClassRange":
+ this.visitCharacterClassRange(node);
+ break;
+ case "CharacterSet":
+ this.visitCharacterSet(node);
+ break;
+ case "ClassIntersection":
+ this.visitClassIntersection(node);
+ break;
+ case "ClassStringDisjunction":
+ this.visitClassStringDisjunction(node);
+ break;
+ case "ClassSubtraction":
+ this.visitClassSubtraction(node);
+ break;
+ case "ExpressionCharacterClass":
+ this.visitExpressionCharacterClass(node);
+ break;
+ case "Flags":
+ this.visitFlags(node);
+ break;
+ case "Group":
+ this.visitGroup(node);
+ break;
+ case "Pattern":
+ this.visitPattern(node);
+ break;
+ case "Quantifier":
+ this.visitQuantifier(node);
+ break;
+ case "RegExpLiteral":
+ this.visitRegExpLiteral(node);
+ break;
+ case "StringAlternative":
+ this.visitStringAlternative(node);
+ break;
+ default:
+ throw new Error(`Unknown type: ${node.type}`);
+ }
+ }
+ visitAlternative(node) {
+ if (this._handlers.onAlternativeEnter) {
+ this._handlers.onAlternativeEnter(node);
+ }
+ node.elements.forEach(this.visit, this);
+ if (this._handlers.onAlternativeLeave) {
+ this._handlers.onAlternativeLeave(node);
+ }
+ }
+ visitAssertion(node) {
+ if (this._handlers.onAssertionEnter) {
+ this._handlers.onAssertionEnter(node);
+ }
+ if (node.kind === "lookahead" || node.kind === "lookbehind") {
+ node.alternatives.forEach(this.visit, this);
+ }
+ if (this._handlers.onAssertionLeave) {
+ this._handlers.onAssertionLeave(node);
+ }
+ }
+ visitBackreference(node) {
+ if (this._handlers.onBackreferenceEnter) {
+ this._handlers.onBackreferenceEnter(node);
+ }
+ if (this._handlers.onBackreferenceLeave) {
+ this._handlers.onBackreferenceLeave(node);
+ }
+ }
+ visitCapturingGroup(node) {
+ if (this._handlers.onCapturingGroupEnter) {
+ this._handlers.onCapturingGroupEnter(node);
+ }
+ node.alternatives.forEach(this.visit, this);
+ if (this._handlers.onCapturingGroupLeave) {
+ this._handlers.onCapturingGroupLeave(node);
+ }
+ }
+ visitCharacter(node) {
+ if (this._handlers.onCharacterEnter) {
+ this._handlers.onCharacterEnter(node);
+ }
+ if (this._handlers.onCharacterLeave) {
+ this._handlers.onCharacterLeave(node);
+ }
+ }
+ visitCharacterClass(node) {
+ if (this._handlers.onCharacterClassEnter) {
+ this._handlers.onCharacterClassEnter(node);
+ }
+ node.elements.forEach(this.visit, this);
+ if (this._handlers.onCharacterClassLeave) {
+ this._handlers.onCharacterClassLeave(node);
+ }
+ }
+ visitCharacterClassRange(node) {
+ if (this._handlers.onCharacterClassRangeEnter) {
+ this._handlers.onCharacterClassRangeEnter(node);
+ }
+ this.visitCharacter(node.min);
+ this.visitCharacter(node.max);
+ if (this._handlers.onCharacterClassRangeLeave) {
+ this._handlers.onCharacterClassRangeLeave(node);
+ }
+ }
+ visitCharacterSet(node) {
+ if (this._handlers.onCharacterSetEnter) {
+ this._handlers.onCharacterSetEnter(node);
+ }
+ if (this._handlers.onCharacterSetLeave) {
+ this._handlers.onCharacterSetLeave(node);
+ }
+ }
+ visitClassIntersection(node) {
+ if (this._handlers.onClassIntersectionEnter) {
+ this._handlers.onClassIntersectionEnter(node);
+ }
+ this.visit(node.left);
+ this.visit(node.right);
+ if (this._handlers.onClassIntersectionLeave) {
+ this._handlers.onClassIntersectionLeave(node);
+ }
+ }
+ visitClassStringDisjunction(node) {
+ if (this._handlers.onClassStringDisjunctionEnter) {
+ this._handlers.onClassStringDisjunctionEnter(node);
+ }
+ node.alternatives.forEach(this.visit, this);
+ if (this._handlers.onClassStringDisjunctionLeave) {
+ this._handlers.onClassStringDisjunctionLeave(node);
+ }
+ }
+ visitClassSubtraction(node) {
+ if (this._handlers.onClassSubtractionEnter) {
+ this._handlers.onClassSubtractionEnter(node);
+ }
+ this.visit(node.left);
+ this.visit(node.right);
+ if (this._handlers.onClassSubtractionLeave) {
+ this._handlers.onClassSubtractionLeave(node);
+ }
+ }
+ visitExpressionCharacterClass(node) {
+ if (this._handlers.onExpressionCharacterClassEnter) {
+ this._handlers.onExpressionCharacterClassEnter(node);
+ }
+ this.visit(node.expression);
+ if (this._handlers.onExpressionCharacterClassLeave) {
+ this._handlers.onExpressionCharacterClassLeave(node);
+ }
+ }
+ visitFlags(node) {
+ if (this._handlers.onFlagsEnter) {
+ this._handlers.onFlagsEnter(node);
+ }
+ if (this._handlers.onFlagsLeave) {
+ this._handlers.onFlagsLeave(node);
+ }
+ }
+ visitGroup(node) {
+ if (this._handlers.onGroupEnter) {
+ this._handlers.onGroupEnter(node);
+ }
+ node.alternatives.forEach(this.visit, this);
+ if (this._handlers.onGroupLeave) {
+ this._handlers.onGroupLeave(node);
+ }
+ }
+ visitPattern(node) {
+ if (this._handlers.onPatternEnter) {
+ this._handlers.onPatternEnter(node);
+ }
+ node.alternatives.forEach(this.visit, this);
+ if (this._handlers.onPatternLeave) {
+ this._handlers.onPatternLeave(node);
+ }
+ }
+ visitQuantifier(node) {
+ if (this._handlers.onQuantifierEnter) {
+ this._handlers.onQuantifierEnter(node);
+ }
+ this.visit(node.element);
+ if (this._handlers.onQuantifierLeave) {
+ this._handlers.onQuantifierLeave(node);
+ }
+ }
+ visitRegExpLiteral(node) {
+ if (this._handlers.onRegExpLiteralEnter) {
+ this._handlers.onRegExpLiteralEnter(node);
+ }
+ this.visitPattern(node.pattern);
+ this.visitFlags(node.flags);
+ if (this._handlers.onRegExpLiteralLeave) {
+ this._handlers.onRegExpLiteralLeave(node);
+ }
+ }
+ visitStringAlternative(node) {
+ if (this._handlers.onStringAlternativeEnter) {
+ this._handlers.onStringAlternativeEnter(node);
+ }
+ node.elements.forEach(this.visit, this);
+ if (this._handlers.onStringAlternativeLeave) {
+ this._handlers.onStringAlternativeLeave(node);
+ }
+ }
+}
+
+function parseRegExpLiteral(source, options) {
+ return new RegExpParser(options).parseLiteral(String(source));
+}
+function validateRegExpLiteral(source, options) {
+ new RegExpValidator(options).validateLiteral(source);
+}
+function visitRegExpAST(node, handlers) {
+ new RegExpVisitor(handlers).visit(node);
+}
+
+export { ast as AST, RegExpParser, RegExpValidator, parseRegExpLiteral, validateRegExpLiteral, visitRegExpAST };
+//# sourceMappingURL=index.mjs.map
diff --git a/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint-community/regexpp/index.mjs.map b/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint-community/regexpp/index.mjs.map
new file mode 100644
index 0000000..a40c1a4
--- /dev/null
+++ b/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint-community/regexpp/index.mjs.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.mjs.map","sources":[".temp/src/ecma-versions.ts",".temp/unicode/src/unicode/ids.ts",".temp/unicode/src/unicode/properties.ts",".temp/unicode/src/unicode/index.ts",".temp/src/reader.ts",".temp/src/regexp-syntax-error.ts",".temp/unicode/src/unicode/properties-of-strings.ts",".temp/src/validator.ts",".temp/src/parser.ts",".temp/src/visitor.ts",".temp/src/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint-community/regexpp/package.json b/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint-community/regexpp/package.json
new file mode 100644
index 0000000..47d6c8d
--- /dev/null
+++ b/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint-community/regexpp/package.json
@@ -0,0 +1,93 @@
+{
+ "name": "@eslint-community/regexpp",
+ "version": "4.8.1",
+ "description": "Regular expression parser for ECMAScript.",
+ "keywords": [
+ "regexp",
+ "regular",
+ "expression",
+ "parser",
+ "validator",
+ "ast",
+ "abstract",
+ "syntax",
+ "tree",
+ "ecmascript",
+ "es2015",
+ "es2016",
+ "es2017",
+ "es2018",
+ "es2019",
+ "es2020",
+ "es2021",
+ "annexB"
+ ],
+ "homepage": "https://github.com/eslint-community/regexpp#readme",
+ "bugs": {
+ "url": "https://github.com/eslint-community/regexpp/issues"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/eslint-community/regexpp"
+ },
+ "license": "MIT",
+ "author": "Toru Nagashima",
+ "exports": {
+ ".": {
+ "types": "./index.d.ts",
+ "import": "./index.mjs",
+ "default": "./index.js"
+ },
+ "./package.json": "./package.json"
+ },
+ "main": "index",
+ "files": [
+ "index.*"
+ ],
+ "scripts": {
+ "prebuild": "npm run -s clean",
+ "build": "run-s build:*",
+ "build:tsc": "tsc --module es2015",
+ "build:rollup": "rollup -c",
+ "build:dts": "npm run -s build:tsc -- --removeComments false && dts-bundle --name @eslint-community/regexpp --main .temp/index.d.ts --out ../index.d.ts && prettier --write index.d.ts",
+ "clean": "rimraf .temp index.*",
+ "lint": "eslint . --ext .ts",
+ "test": "nyc _mocha \"test/*.ts\" --reporter dot --timeout 10000",
+ "debug": "mocha --require ts-node/register/transpile-only \"test/*.ts\" --reporter dot --timeout 10000",
+ "update:test": "ts-node scripts/update-fixtures.ts",
+ "update:unicode": "run-s update:unicode:*",
+ "update:unicode:ids": "ts-node scripts/update-unicode-ids.ts",
+ "update:unicode:props": "ts-node scripts/update-unicode-properties.ts",
+ "update:test262:extract": "ts-node -T scripts/extract-test262.ts",
+ "preversion": "npm test && npm run -s build",
+ "postversion": "git push && git push --tags",
+ "prewatch": "npm run -s clean",
+ "watch": "_mocha \"test/*.ts\" --require ts-node/register --reporter dot --timeout 10000 --watch-extensions ts --watch --growl"
+ },
+ "dependencies": {},
+ "devDependencies": {
+ "@eslint-community/eslint-plugin-mysticatea": "^15.3.0",
+ "@rollup/plugin-node-resolve": "^14.1.0",
+ "@types/eslint": "^8.4.10",
+ "@types/jsdom": "^16.2.15",
+ "@types/mocha": "^9.1.1",
+ "@types/node": "^12.20.55",
+ "dts-bundle": "^0.7.3",
+ "eslint": "^8.31.0",
+ "js-tokens": "^8.0.1",
+ "jsdom": "^19.0.0",
+ "mocha": "^9.2.2",
+ "npm-run-all": "^4.1.5",
+ "nyc": "^14.1.1",
+ "rimraf": "^3.0.2",
+ "rollup": "^2.79.1",
+ "rollup-plugin-sourcemaps": "^0.6.3",
+ "test262": "git+https://github.com/tc39/test262.git",
+ "test262-stream": "^1.4.0",
+ "ts-node": "^10.9.1",
+ "typescript": "~5.0.2"
+ },
+ "engines": {
+ "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
+ }
+}
diff --git a/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint/eslintrc/LICENSE b/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint/eslintrc/LICENSE
new file mode 100644
index 0000000..b607bb3
--- /dev/null
+++ b/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint/eslintrc/LICENSE
@@ -0,0 +1,19 @@
+Copyright OpenJS Foundation and other contributors,
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint/eslintrc/README.md b/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint/eslintrc/README.md
new file mode 100644
index 0000000..9d81617
--- /dev/null
+++ b/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint/eslintrc/README.md
@@ -0,0 +1,71 @@
+# ESLintRC Library
+
+This repository contains the legacy ESLintRC configuration file format for ESLint. This package is not intended for use outside of the ESLint ecosystem. It is ESLint-specific and not intended for use in other programs.
+
+**Note:** This package is frozen except for critical bug fixes as ESLint moves to a new config system.
+
+## Installation
+
+You can install the package as follows:
+
+```
+npm install @eslint/eslintrc --save-dev
+
+# or
+
+yarn add @eslint/eslintrc -D
+```
+
+## Usage
+
+The primary class in this package is `FlatCompat`, which is a utility to translate ESLintRC-style configs into flat configs. Here's how you use it inside of your `eslint.config.js` file:
+
+```js
+import { FlatCompat } from "@eslint/eslintrc";
+import js from "@eslint/js";
+import path from "path";
+import { fileURLToPath } from "url";
+
+// mimic CommonJS variables -- not needed if using CommonJS
+const __filename = fileURLToPath(import.meta.url);
+const __dirname = path.dirname(__filename);
+
+const compat = new FlatCompat({
+ baseDirectory: __dirname, // optional; default: process.cwd()
+ resolvePluginsRelativeTo: __dirname, // optional
+ recommendedConfig: js.configs.recommended, // optional
+ allConfig: js.configs.all, // optional
+});
+
+export default [
+
+ // mimic ESLintRC-style extends
+ ...compat.extends("standard", "example"),
+
+ // mimic environments
+ ...compat.env({
+ es2020: true,
+ node: true
+ }),
+
+ // mimic plugins
+ ...compat.plugins("airbnb", "react"),
+
+ // translate an entire config
+ ...compat.config({
+ plugins: ["airbnb", "react"],
+ extends: "standard",
+ env: {
+ es2020: true,
+ node: true
+ },
+ rules: {
+ semi: "error"
+ }
+ })
+];
+```
+
+## License
+
+MIT License
diff --git a/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint/eslintrc/conf/config-schema.js b/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint/eslintrc/conf/config-schema.js
new file mode 100644
index 0000000..ada90e1
--- /dev/null
+++ b/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint/eslintrc/conf/config-schema.js
@@ -0,0 +1,79 @@
+/**
+ * @fileoverview Defines a schema for configs.
+ * @author Sylvan Mably
+ */
+
+const baseConfigProperties = {
+ $schema: { type: "string" },
+ env: { type: "object" },
+ extends: { $ref: "#/definitions/stringOrStrings" },
+ globals: { type: "object" },
+ overrides: {
+ type: "array",
+ items: { $ref: "#/definitions/overrideConfig" },
+ additionalItems: false
+ },
+ parser: { type: ["string", "null"] },
+ parserOptions: { type: "object" },
+ plugins: { type: "array" },
+ processor: { type: "string" },
+ rules: { type: "object" },
+ settings: { type: "object" },
+ noInlineConfig: { type: "boolean" },
+ reportUnusedDisableDirectives: { type: "boolean" },
+
+ ecmaFeatures: { type: "object" } // deprecated; logs a warning when used
+};
+
+const configSchema = {
+ definitions: {
+ stringOrStrings: {
+ oneOf: [
+ { type: "string" },
+ {
+ type: "array",
+ items: { type: "string" },
+ additionalItems: false
+ }
+ ]
+ },
+ stringOrStringsRequired: {
+ oneOf: [
+ { type: "string" },
+ {
+ type: "array",
+ items: { type: "string" },
+ additionalItems: false,
+ minItems: 1
+ }
+ ]
+ },
+
+ // Config at top-level.
+ objectConfig: {
+ type: "object",
+ properties: {
+ root: { type: "boolean" },
+ ignorePatterns: { $ref: "#/definitions/stringOrStrings" },
+ ...baseConfigProperties
+ },
+ additionalProperties: false
+ },
+
+ // Config in `overrides`.
+ overrideConfig: {
+ type: "object",
+ properties: {
+ excludedFiles: { $ref: "#/definitions/stringOrStrings" },
+ files: { $ref: "#/definitions/stringOrStringsRequired" },
+ ...baseConfigProperties
+ },
+ required: ["files"],
+ additionalProperties: false
+ }
+ },
+
+ $ref: "#/definitions/objectConfig"
+};
+
+export default configSchema;
diff --git a/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint/eslintrc/conf/environments.js b/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint/eslintrc/conf/environments.js
new file mode 100644
index 0000000..50d1b1d
--- /dev/null
+++ b/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint/eslintrc/conf/environments.js
@@ -0,0 +1,215 @@
+/**
+ * @fileoverview Defines environment settings and globals.
+ * @author Elan Shanker
+ */
+
+//------------------------------------------------------------------------------
+// Requirements
+//------------------------------------------------------------------------------
+
+import globals from "globals";
+
+//------------------------------------------------------------------------------
+// Helpers
+//------------------------------------------------------------------------------
+
+/**
+ * Get the object that has difference.
+ * @param {Record} current The newer object.
+ * @param {Record} prev The older object.
+ * @returns {Record} The difference object.
+ */
+function getDiff(current, prev) {
+ const retv = {};
+
+ for (const [key, value] of Object.entries(current)) {
+ if (!Object.hasOwnProperty.call(prev, key)) {
+ retv[key] = value;
+ }
+ }
+
+ return retv;
+}
+
+const newGlobals2015 = getDiff(globals.es2015, globals.es5); // 19 variables such as Promise, Map, ...
+const newGlobals2017 = {
+ Atomics: false,
+ SharedArrayBuffer: false
+};
+const newGlobals2020 = {
+ BigInt: false,
+ BigInt64Array: false,
+ BigUint64Array: false,
+ globalThis: false
+};
+
+const newGlobals2021 = {
+ AggregateError: false,
+ FinalizationRegistry: false,
+ WeakRef: false
+};
+
+//------------------------------------------------------------------------------
+// Public Interface
+//------------------------------------------------------------------------------
+
+/** @type {Map} */
+export default new Map(Object.entries({
+
+ // Language
+ builtin: {
+ globals: globals.es5
+ },
+ es6: {
+ globals: newGlobals2015,
+ parserOptions: {
+ ecmaVersion: 6
+ }
+ },
+ es2015: {
+ globals: newGlobals2015,
+ parserOptions: {
+ ecmaVersion: 6
+ }
+ },
+ es2016: {
+ globals: newGlobals2015,
+ parserOptions: {
+ ecmaVersion: 7
+ }
+ },
+ es2017: {
+ globals: { ...newGlobals2015, ...newGlobals2017 },
+ parserOptions: {
+ ecmaVersion: 8
+ }
+ },
+ es2018: {
+ globals: { ...newGlobals2015, ...newGlobals2017 },
+ parserOptions: {
+ ecmaVersion: 9
+ }
+ },
+ es2019: {
+ globals: { ...newGlobals2015, ...newGlobals2017 },
+ parserOptions: {
+ ecmaVersion: 10
+ }
+ },
+ es2020: {
+ globals: { ...newGlobals2015, ...newGlobals2017, ...newGlobals2020 },
+ parserOptions: {
+ ecmaVersion: 11
+ }
+ },
+ es2021: {
+ globals: { ...newGlobals2015, ...newGlobals2017, ...newGlobals2020, ...newGlobals2021 },
+ parserOptions: {
+ ecmaVersion: 12
+ }
+ },
+ es2022: {
+ globals: { ...newGlobals2015, ...newGlobals2017, ...newGlobals2020, ...newGlobals2021 },
+ parserOptions: {
+ ecmaVersion: 13
+ }
+ },
+ es2023: {
+ globals: { ...newGlobals2015, ...newGlobals2017, ...newGlobals2020, ...newGlobals2021 },
+ parserOptions: {
+ ecmaVersion: 14
+ }
+ },
+ es2024: {
+ globals: { ...newGlobals2015, ...newGlobals2017, ...newGlobals2020, ...newGlobals2021 },
+ parserOptions: {
+ ecmaVersion: 15
+ }
+ },
+
+ // Platforms
+ browser: {
+ globals: globals.browser
+ },
+ node: {
+ globals: globals.node,
+ parserOptions: {
+ ecmaFeatures: {
+ globalReturn: true
+ }
+ }
+ },
+ "shared-node-browser": {
+ globals: globals["shared-node-browser"]
+ },
+ worker: {
+ globals: globals.worker
+ },
+ serviceworker: {
+ globals: globals.serviceworker
+ },
+
+ // Frameworks
+ commonjs: {
+ globals: globals.commonjs,
+ parserOptions: {
+ ecmaFeatures: {
+ globalReturn: true
+ }
+ }
+ },
+ amd: {
+ globals: globals.amd
+ },
+ mocha: {
+ globals: globals.mocha
+ },
+ jasmine: {
+ globals: globals.jasmine
+ },
+ jest: {
+ globals: globals.jest
+ },
+ phantomjs: {
+ globals: globals.phantomjs
+ },
+ jquery: {
+ globals: globals.jquery
+ },
+ qunit: {
+ globals: globals.qunit
+ },
+ prototypejs: {
+ globals: globals.prototypejs
+ },
+ shelljs: {
+ globals: globals.shelljs
+ },
+ meteor: {
+ globals: globals.meteor
+ },
+ mongo: {
+ globals: globals.mongo
+ },
+ protractor: {
+ globals: globals.protractor
+ },
+ applescript: {
+ globals: globals.applescript
+ },
+ nashorn: {
+ globals: globals.nashorn
+ },
+ atomtest: {
+ globals: globals.atomtest
+ },
+ embertest: {
+ globals: globals.embertest
+ },
+ webextensions: {
+ globals: globals.webextensions
+ },
+ greasemonkey: {
+ globals: globals.greasemonkey
+ }
+}));
diff --git a/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint/eslintrc/dist/eslintrc-universal.cjs b/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint/eslintrc/dist/eslintrc-universal.cjs
new file mode 100644
index 0000000..64e6666
--- /dev/null
+++ b/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint/eslintrc/dist/eslintrc-universal.cjs
@@ -0,0 +1,1104 @@
+'use strict';
+
+Object.defineProperty(exports, '__esModule', { value: true });
+
+var util = require('util');
+var path = require('path');
+var Ajv = require('ajv');
+var globals = require('globals');
+
+function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
+
+var util__default = /*#__PURE__*/_interopDefaultLegacy(util);
+var path__default = /*#__PURE__*/_interopDefaultLegacy(path);
+var Ajv__default = /*#__PURE__*/_interopDefaultLegacy(Ajv);
+var globals__default = /*#__PURE__*/_interopDefaultLegacy(globals);
+
+/**
+ * @fileoverview Config file operations. This file must be usable in the browser,
+ * so no Node-specific code can be here.
+ * @author Nicholas C. Zakas
+ */
+
+//------------------------------------------------------------------------------
+// Private
+//------------------------------------------------------------------------------
+
+const RULE_SEVERITY_STRINGS = ["off", "warn", "error"],
+ RULE_SEVERITY = RULE_SEVERITY_STRINGS.reduce((map, value, index) => {
+ map[value] = index;
+ return map;
+ }, {}),
+ VALID_SEVERITIES = [0, 1, 2, "off", "warn", "error"];
+
+//------------------------------------------------------------------------------
+// Public Interface
+//------------------------------------------------------------------------------
+
+/**
+ * Normalizes the severity value of a rule's configuration to a number
+ * @param {(number|string|[number, ...*]|[string, ...*])} ruleConfig A rule's configuration value, generally
+ * received from the user. A valid config value is either 0, 1, 2, the string "off" (treated the same as 0),
+ * the string "warn" (treated the same as 1), the string "error" (treated the same as 2), or an array
+ * whose first element is one of the above values. Strings are matched case-insensitively.
+ * @returns {(0|1|2)} The numeric severity value if the config value was valid, otherwise 0.
+ */
+function getRuleSeverity(ruleConfig) {
+ const severityValue = Array.isArray(ruleConfig) ? ruleConfig[0] : ruleConfig;
+
+ if (severityValue === 0 || severityValue === 1 || severityValue === 2) {
+ return severityValue;
+ }
+
+ if (typeof severityValue === "string") {
+ return RULE_SEVERITY[severityValue.toLowerCase()] || 0;
+ }
+
+ return 0;
+}
+
+/**
+ * Converts old-style severity settings (0, 1, 2) into new-style
+ * severity settings (off, warn, error) for all rules. Assumption is that severity
+ * values have already been validated as correct.
+ * @param {Object} config The config object to normalize.
+ * @returns {void}
+ */
+function normalizeToStrings(config) {
+
+ if (config.rules) {
+ Object.keys(config.rules).forEach(ruleId => {
+ const ruleConfig = config.rules[ruleId];
+
+ if (typeof ruleConfig === "number") {
+ config.rules[ruleId] = RULE_SEVERITY_STRINGS[ruleConfig] || RULE_SEVERITY_STRINGS[0];
+ } else if (Array.isArray(ruleConfig) && typeof ruleConfig[0] === "number") {
+ ruleConfig[0] = RULE_SEVERITY_STRINGS[ruleConfig[0]] || RULE_SEVERITY_STRINGS[0];
+ }
+ });
+ }
+}
+
+/**
+ * Determines if the severity for the given rule configuration represents an error.
+ * @param {int|string|Array} ruleConfig The configuration for an individual rule.
+ * @returns {boolean} True if the rule represents an error, false if not.
+ */
+function isErrorSeverity(ruleConfig) {
+ return getRuleSeverity(ruleConfig) === 2;
+}
+
+/**
+ * Checks whether a given config has valid severity or not.
+ * @param {number|string|Array} ruleConfig The configuration for an individual rule.
+ * @returns {boolean} `true` if the configuration has valid severity.
+ */
+function isValidSeverity(ruleConfig) {
+ let severity = Array.isArray(ruleConfig) ? ruleConfig[0] : ruleConfig;
+
+ if (typeof severity === "string") {
+ severity = severity.toLowerCase();
+ }
+ return VALID_SEVERITIES.indexOf(severity) !== -1;
+}
+
+/**
+ * Checks whether every rule of a given config has valid severity or not.
+ * @param {Object} config The configuration for rules.
+ * @returns {boolean} `true` if the configuration has valid severity.
+ */
+function isEverySeverityValid(config) {
+ return Object.keys(config).every(ruleId => isValidSeverity(config[ruleId]));
+}
+
+/**
+ * Normalizes a value for a global in a config
+ * @param {(boolean|string|null)} configuredValue The value given for a global in configuration or in
+ * a global directive comment
+ * @returns {("readable"|"writeable"|"off")} The value normalized as a string
+ * @throws Error if global value is invalid
+ */
+function normalizeConfigGlobal(configuredValue) {
+ switch (configuredValue) {
+ case "off":
+ return "off";
+
+ case true:
+ case "true":
+ case "writeable":
+ case "writable":
+ return "writable";
+
+ case null:
+ case false:
+ case "false":
+ case "readable":
+ case "readonly":
+ return "readonly";
+
+ default:
+ throw new Error(`'${configuredValue}' is not a valid configuration for a global (use 'readonly', 'writable', or 'off')`);
+ }
+}
+
+var ConfigOps = {
+ __proto__: null,
+ getRuleSeverity: getRuleSeverity,
+ normalizeToStrings: normalizeToStrings,
+ isErrorSeverity: isErrorSeverity,
+ isValidSeverity: isValidSeverity,
+ isEverySeverityValid: isEverySeverityValid,
+ normalizeConfigGlobal: normalizeConfigGlobal
+};
+
+/**
+ * @fileoverview Provide the function that emits deprecation warnings.
+ * @author Toru Nagashima
+ */
+
+//------------------------------------------------------------------------------
+// Private
+//------------------------------------------------------------------------------
+
+// Defitions for deprecation warnings.
+const deprecationWarningMessages = {
+ ESLINT_LEGACY_ECMAFEATURES:
+ "The 'ecmaFeatures' config file property is deprecated and has no effect.",
+ ESLINT_PERSONAL_CONFIG_LOAD:
+ "'~/.eslintrc.*' config files have been deprecated. " +
+ "Please use a config file per project or the '--config' option.",
+ ESLINT_PERSONAL_CONFIG_SUPPRESS:
+ "'~/.eslintrc.*' config files have been deprecated. " +
+ "Please remove it or add 'root:true' to the config files in your " +
+ "projects in order to avoid loading '~/.eslintrc.*' accidentally."
+};
+
+const sourceFileErrorCache = new Set();
+
+/**
+ * Emits a deprecation warning containing a given filepath. A new deprecation warning is emitted
+ * for each unique file path, but repeated invocations with the same file path have no effect.
+ * No warnings are emitted if the `--no-deprecation` or `--no-warnings` Node runtime flags are active.
+ * @param {string} source The name of the configuration source to report the warning for.
+ * @param {string} errorCode The warning message to show.
+ * @returns {void}
+ */
+function emitDeprecationWarning(source, errorCode) {
+ const cacheKey = JSON.stringify({ source, errorCode });
+
+ if (sourceFileErrorCache.has(cacheKey)) {
+ return;
+ }
+ sourceFileErrorCache.add(cacheKey);
+
+ const rel = path__default["default"].relative(process.cwd(), source);
+ const message = deprecationWarningMessages[errorCode];
+
+ process.emitWarning(
+ `${message} (found in "${rel}")`,
+ "DeprecationWarning",
+ errorCode
+ );
+}
+
+/**
+ * @fileoverview The instance of Ajv validator.
+ * @author Evgeny Poberezkin
+ */
+
+//-----------------------------------------------------------------------------
+// Helpers
+//-----------------------------------------------------------------------------
+
+/*
+ * Copied from ajv/lib/refs/json-schema-draft-04.json
+ * The MIT License (MIT)
+ * Copyright (c) 2015-2017 Evgeny Poberezkin
+ */
+const metaSchema = {
+ id: "http://json-schema.org/draft-04/schema#",
+ $schema: "http://json-schema.org/draft-04/schema#",
+ description: "Core schema meta-schema",
+ definitions: {
+ schemaArray: {
+ type: "array",
+ minItems: 1,
+ items: { $ref: "#" }
+ },
+ positiveInteger: {
+ type: "integer",
+ minimum: 0
+ },
+ positiveIntegerDefault0: {
+ allOf: [{ $ref: "#/definitions/positiveInteger" }, { default: 0 }]
+ },
+ simpleTypes: {
+ enum: ["array", "boolean", "integer", "null", "number", "object", "string"]
+ },
+ stringArray: {
+ type: "array",
+ items: { type: "string" },
+ minItems: 1,
+ uniqueItems: true
+ }
+ },
+ type: "object",
+ properties: {
+ id: {
+ type: "string"
+ },
+ $schema: {
+ type: "string"
+ },
+ title: {
+ type: "string"
+ },
+ description: {
+ type: "string"
+ },
+ default: { },
+ multipleOf: {
+ type: "number",
+ minimum: 0,
+ exclusiveMinimum: true
+ },
+ maximum: {
+ type: "number"
+ },
+ exclusiveMaximum: {
+ type: "boolean",
+ default: false
+ },
+ minimum: {
+ type: "number"
+ },
+ exclusiveMinimum: {
+ type: "boolean",
+ default: false
+ },
+ maxLength: { $ref: "#/definitions/positiveInteger" },
+ minLength: { $ref: "#/definitions/positiveIntegerDefault0" },
+ pattern: {
+ type: "string",
+ format: "regex"
+ },
+ additionalItems: {
+ anyOf: [
+ { type: "boolean" },
+ { $ref: "#" }
+ ],
+ default: { }
+ },
+ items: {
+ anyOf: [
+ { $ref: "#" },
+ { $ref: "#/definitions/schemaArray" }
+ ],
+ default: { }
+ },
+ maxItems: { $ref: "#/definitions/positiveInteger" },
+ minItems: { $ref: "#/definitions/positiveIntegerDefault0" },
+ uniqueItems: {
+ type: "boolean",
+ default: false
+ },
+ maxProperties: { $ref: "#/definitions/positiveInteger" },
+ minProperties: { $ref: "#/definitions/positiveIntegerDefault0" },
+ required: { $ref: "#/definitions/stringArray" },
+ additionalProperties: {
+ anyOf: [
+ { type: "boolean" },
+ { $ref: "#" }
+ ],
+ default: { }
+ },
+ definitions: {
+ type: "object",
+ additionalProperties: { $ref: "#" },
+ default: { }
+ },
+ properties: {
+ type: "object",
+ additionalProperties: { $ref: "#" },
+ default: { }
+ },
+ patternProperties: {
+ type: "object",
+ additionalProperties: { $ref: "#" },
+ default: { }
+ },
+ dependencies: {
+ type: "object",
+ additionalProperties: {
+ anyOf: [
+ { $ref: "#" },
+ { $ref: "#/definitions/stringArray" }
+ ]
+ }
+ },
+ enum: {
+ type: "array",
+ minItems: 1,
+ uniqueItems: true
+ },
+ type: {
+ anyOf: [
+ { $ref: "#/definitions/simpleTypes" },
+ {
+ type: "array",
+ items: { $ref: "#/definitions/simpleTypes" },
+ minItems: 1,
+ uniqueItems: true
+ }
+ ]
+ },
+ format: { type: "string" },
+ allOf: { $ref: "#/definitions/schemaArray" },
+ anyOf: { $ref: "#/definitions/schemaArray" },
+ oneOf: { $ref: "#/definitions/schemaArray" },
+ not: { $ref: "#" }
+ },
+ dependencies: {
+ exclusiveMaximum: ["maximum"],
+ exclusiveMinimum: ["minimum"]
+ },
+ default: { }
+};
+
+//------------------------------------------------------------------------------
+// Public Interface
+//------------------------------------------------------------------------------
+
+var ajvOrig = (additionalOptions = {}) => {
+ const ajv = new Ajv__default["default"]({
+ meta: false,
+ useDefaults: true,
+ validateSchema: false,
+ missingRefs: "ignore",
+ verbose: true,
+ schemaId: "auto",
+ ...additionalOptions
+ });
+
+ ajv.addMetaSchema(metaSchema);
+ // eslint-disable-next-line no-underscore-dangle
+ ajv._opts.defaultMeta = metaSchema.id;
+
+ return ajv;
+};
+
+/**
+ * @fileoverview Defines a schema for configs.
+ * @author Sylvan Mably
+ */
+
+const baseConfigProperties = {
+ $schema: { type: "string" },
+ env: { type: "object" },
+ extends: { $ref: "#/definitions/stringOrStrings" },
+ globals: { type: "object" },
+ overrides: {
+ type: "array",
+ items: { $ref: "#/definitions/overrideConfig" },
+ additionalItems: false
+ },
+ parser: { type: ["string", "null"] },
+ parserOptions: { type: "object" },
+ plugins: { type: "array" },
+ processor: { type: "string" },
+ rules: { type: "object" },
+ settings: { type: "object" },
+ noInlineConfig: { type: "boolean" },
+ reportUnusedDisableDirectives: { type: "boolean" },
+
+ ecmaFeatures: { type: "object" } // deprecated; logs a warning when used
+};
+
+const configSchema = {
+ definitions: {
+ stringOrStrings: {
+ oneOf: [
+ { type: "string" },
+ {
+ type: "array",
+ items: { type: "string" },
+ additionalItems: false
+ }
+ ]
+ },
+ stringOrStringsRequired: {
+ oneOf: [
+ { type: "string" },
+ {
+ type: "array",
+ items: { type: "string" },
+ additionalItems: false,
+ minItems: 1
+ }
+ ]
+ },
+
+ // Config at top-level.
+ objectConfig: {
+ type: "object",
+ properties: {
+ root: { type: "boolean" },
+ ignorePatterns: { $ref: "#/definitions/stringOrStrings" },
+ ...baseConfigProperties
+ },
+ additionalProperties: false
+ },
+
+ // Config in `overrides`.
+ overrideConfig: {
+ type: "object",
+ properties: {
+ excludedFiles: { $ref: "#/definitions/stringOrStrings" },
+ files: { $ref: "#/definitions/stringOrStringsRequired" },
+ ...baseConfigProperties
+ },
+ required: ["files"],
+ additionalProperties: false
+ }
+ },
+
+ $ref: "#/definitions/objectConfig"
+};
+
+/**
+ * @fileoverview Defines environment settings and globals.
+ * @author Elan Shanker
+ */
+
+//------------------------------------------------------------------------------
+// Helpers
+//------------------------------------------------------------------------------
+
+/**
+ * Get the object that has difference.
+ * @param {Record} current The newer object.
+ * @param {Record} prev The older object.
+ * @returns {Record} The difference object.
+ */
+function getDiff(current, prev) {
+ const retv = {};
+
+ for (const [key, value] of Object.entries(current)) {
+ if (!Object.hasOwnProperty.call(prev, key)) {
+ retv[key] = value;
+ }
+ }
+
+ return retv;
+}
+
+const newGlobals2015 = getDiff(globals__default["default"].es2015, globals__default["default"].es5); // 19 variables such as Promise, Map, ...
+const newGlobals2017 = {
+ Atomics: false,
+ SharedArrayBuffer: false
+};
+const newGlobals2020 = {
+ BigInt: false,
+ BigInt64Array: false,
+ BigUint64Array: false,
+ globalThis: false
+};
+
+const newGlobals2021 = {
+ AggregateError: false,
+ FinalizationRegistry: false,
+ WeakRef: false
+};
+
+//------------------------------------------------------------------------------
+// Public Interface
+//------------------------------------------------------------------------------
+
+/** @type {Map} */
+var environments = new Map(Object.entries({
+
+ // Language
+ builtin: {
+ globals: globals__default["default"].es5
+ },
+ es6: {
+ globals: newGlobals2015,
+ parserOptions: {
+ ecmaVersion: 6
+ }
+ },
+ es2015: {
+ globals: newGlobals2015,
+ parserOptions: {
+ ecmaVersion: 6
+ }
+ },
+ es2016: {
+ globals: newGlobals2015,
+ parserOptions: {
+ ecmaVersion: 7
+ }
+ },
+ es2017: {
+ globals: { ...newGlobals2015, ...newGlobals2017 },
+ parserOptions: {
+ ecmaVersion: 8
+ }
+ },
+ es2018: {
+ globals: { ...newGlobals2015, ...newGlobals2017 },
+ parserOptions: {
+ ecmaVersion: 9
+ }
+ },
+ es2019: {
+ globals: { ...newGlobals2015, ...newGlobals2017 },
+ parserOptions: {
+ ecmaVersion: 10
+ }
+ },
+ es2020: {
+ globals: { ...newGlobals2015, ...newGlobals2017, ...newGlobals2020 },
+ parserOptions: {
+ ecmaVersion: 11
+ }
+ },
+ es2021: {
+ globals: { ...newGlobals2015, ...newGlobals2017, ...newGlobals2020, ...newGlobals2021 },
+ parserOptions: {
+ ecmaVersion: 12
+ }
+ },
+ es2022: {
+ globals: { ...newGlobals2015, ...newGlobals2017, ...newGlobals2020, ...newGlobals2021 },
+ parserOptions: {
+ ecmaVersion: 13
+ }
+ },
+ es2023: {
+ globals: { ...newGlobals2015, ...newGlobals2017, ...newGlobals2020, ...newGlobals2021 },
+ parserOptions: {
+ ecmaVersion: 14
+ }
+ },
+ es2024: {
+ globals: { ...newGlobals2015, ...newGlobals2017, ...newGlobals2020, ...newGlobals2021 },
+ parserOptions: {
+ ecmaVersion: 15
+ }
+ },
+
+ // Platforms
+ browser: {
+ globals: globals__default["default"].browser
+ },
+ node: {
+ globals: globals__default["default"].node,
+ parserOptions: {
+ ecmaFeatures: {
+ globalReturn: true
+ }
+ }
+ },
+ "shared-node-browser": {
+ globals: globals__default["default"]["shared-node-browser"]
+ },
+ worker: {
+ globals: globals__default["default"].worker
+ },
+ serviceworker: {
+ globals: globals__default["default"].serviceworker
+ },
+
+ // Frameworks
+ commonjs: {
+ globals: globals__default["default"].commonjs,
+ parserOptions: {
+ ecmaFeatures: {
+ globalReturn: true
+ }
+ }
+ },
+ amd: {
+ globals: globals__default["default"].amd
+ },
+ mocha: {
+ globals: globals__default["default"].mocha
+ },
+ jasmine: {
+ globals: globals__default["default"].jasmine
+ },
+ jest: {
+ globals: globals__default["default"].jest
+ },
+ phantomjs: {
+ globals: globals__default["default"].phantomjs
+ },
+ jquery: {
+ globals: globals__default["default"].jquery
+ },
+ qunit: {
+ globals: globals__default["default"].qunit
+ },
+ prototypejs: {
+ globals: globals__default["default"].prototypejs
+ },
+ shelljs: {
+ globals: globals__default["default"].shelljs
+ },
+ meteor: {
+ globals: globals__default["default"].meteor
+ },
+ mongo: {
+ globals: globals__default["default"].mongo
+ },
+ protractor: {
+ globals: globals__default["default"].protractor
+ },
+ applescript: {
+ globals: globals__default["default"].applescript
+ },
+ nashorn: {
+ globals: globals__default["default"].nashorn
+ },
+ atomtest: {
+ globals: globals__default["default"].atomtest
+ },
+ embertest: {
+ globals: globals__default["default"].embertest
+ },
+ webextensions: {
+ globals: globals__default["default"].webextensions
+ },
+ greasemonkey: {
+ globals: globals__default["default"].greasemonkey
+ }
+}));
+
+/**
+ * @fileoverview Validates configs.
+ * @author Brandon Mills
+ */
+
+const ajv = ajvOrig();
+
+const ruleValidators = new WeakMap();
+const noop = Function.prototype;
+
+//------------------------------------------------------------------------------
+// Private
+//------------------------------------------------------------------------------
+let validateSchema;
+const severityMap = {
+ error: 2,
+ warn: 1,
+ off: 0
+};
+
+const validated = new WeakSet();
+
+//-----------------------------------------------------------------------------
+// Exports
+//-----------------------------------------------------------------------------
+
+class ConfigValidator {
+ constructor({ builtInRules = new Map() } = {}) {
+ this.builtInRules = builtInRules;
+ }
+
+ /**
+ * Gets a complete options schema for a rule.
+ * @param {{create: Function, schema: (Array|null)}} rule A new-style rule object
+ * @returns {Object} JSON Schema for the rule's options.
+ */
+ getRuleOptionsSchema(rule) {
+ if (!rule) {
+ return null;
+ }
+
+ const schema = rule.schema || rule.meta && rule.meta.schema;
+
+ // Given a tuple of schemas, insert warning level at the beginning
+ if (Array.isArray(schema)) {
+ if (schema.length) {
+ return {
+ type: "array",
+ items: schema,
+ minItems: 0,
+ maxItems: schema.length
+ };
+ }
+ return {
+ type: "array",
+ minItems: 0,
+ maxItems: 0
+ };
+
+ }
+
+ // Given a full schema, leave it alone
+ return schema || null;
+ }
+
+ /**
+ * Validates a rule's severity and returns the severity value. Throws an error if the severity is invalid.
+ * @param {options} options The given options for the rule.
+ * @returns {number|string} The rule's severity value
+ */
+ validateRuleSeverity(options) {
+ const severity = Array.isArray(options) ? options[0] : options;
+ const normSeverity = typeof severity === "string" ? severityMap[severity.toLowerCase()] : severity;
+
+ if (normSeverity === 0 || normSeverity === 1 || normSeverity === 2) {
+ return normSeverity;
+ }
+
+ throw new Error(`\tSeverity should be one of the following: 0 = off, 1 = warn, 2 = error (you passed '${util__default["default"].inspect(severity).replace(/'/gu, "\"").replace(/\n/gu, "")}').\n`);
+
+ }
+
+ /**
+ * Validates the non-severity options passed to a rule, based on its schema.
+ * @param {{create: Function}} rule The rule to validate
+ * @param {Array} localOptions The options for the rule, excluding severity
+ * @returns {void}
+ */
+ validateRuleSchema(rule, localOptions) {
+ if (!ruleValidators.has(rule)) {
+ const schema = this.getRuleOptionsSchema(rule);
+
+ if (schema) {
+ ruleValidators.set(rule, ajv.compile(schema));
+ }
+ }
+
+ const validateRule = ruleValidators.get(rule);
+
+ if (validateRule) {
+ validateRule(localOptions);
+ if (validateRule.errors) {
+ throw new Error(validateRule.errors.map(
+ error => `\tValue ${JSON.stringify(error.data)} ${error.message}.\n`
+ ).join(""));
+ }
+ }
+ }
+
+ /**
+ * Validates a rule's options against its schema.
+ * @param {{create: Function}|null} rule The rule that the config is being validated for
+ * @param {string} ruleId The rule's unique name.
+ * @param {Array|number} options The given options for the rule.
+ * @param {string|null} source The name of the configuration source to report in any errors. If null or undefined,
+ * no source is prepended to the message.
+ * @returns {void}
+ */
+ validateRuleOptions(rule, ruleId, options, source = null) {
+ try {
+ const severity = this.validateRuleSeverity(options);
+
+ if (severity !== 0) {
+ this.validateRuleSchema(rule, Array.isArray(options) ? options.slice(1) : []);
+ }
+ } catch (err) {
+ const enhancedMessage = `Configuration for rule "${ruleId}" is invalid:\n${err.message}`;
+
+ if (typeof source === "string") {
+ throw new Error(`${source}:\n\t${enhancedMessage}`);
+ } else {
+ throw new Error(enhancedMessage);
+ }
+ }
+ }
+
+ /**
+ * Validates an environment object
+ * @param {Object} environment The environment config object to validate.
+ * @param {string} source The name of the configuration source to report in any errors.
+ * @param {function(envId:string): Object} [getAdditionalEnv] A map from strings to loaded environments.
+ * @returns {void}
+ */
+ validateEnvironment(
+ environment,
+ source,
+ getAdditionalEnv = noop
+ ) {
+
+ // not having an environment is ok
+ if (!environment) {
+ return;
+ }
+
+ Object.keys(environment).forEach(id => {
+ const env = getAdditionalEnv(id) || environments.get(id) || null;
+
+ if (!env) {
+ const message = `${source}:\n\tEnvironment key "${id}" is unknown\n`;
+
+ throw new Error(message);
+ }
+ });
+ }
+
+ /**
+ * Validates a rules config object
+ * @param {Object} rulesConfig The rules config object to validate.
+ * @param {string} source The name of the configuration source to report in any errors.
+ * @param {function(ruleId:string): Object} getAdditionalRule A map from strings to loaded rules
+ * @returns {void}
+ */
+ validateRules(
+ rulesConfig,
+ source,
+ getAdditionalRule = noop
+ ) {
+ if (!rulesConfig) {
+ return;
+ }
+
+ Object.keys(rulesConfig).forEach(id => {
+ const rule = getAdditionalRule(id) || this.builtInRules.get(id) || null;
+
+ this.validateRuleOptions(rule, id, rulesConfig[id], source);
+ });
+ }
+
+ /**
+ * Validates a `globals` section of a config file
+ * @param {Object} globalsConfig The `globals` section
+ * @param {string|null} source The name of the configuration source to report in the event of an error.
+ * @returns {void}
+ */
+ validateGlobals(globalsConfig, source = null) {
+ if (!globalsConfig) {
+ return;
+ }
+
+ Object.entries(globalsConfig)
+ .forEach(([configuredGlobal, configuredValue]) => {
+ try {
+ normalizeConfigGlobal(configuredValue);
+ } catch (err) {
+ throw new Error(`ESLint configuration of global '${configuredGlobal}' in ${source} is invalid:\n${err.message}`);
+ }
+ });
+ }
+
+ /**
+ * Validate `processor` configuration.
+ * @param {string|undefined} processorName The processor name.
+ * @param {string} source The name of config file.
+ * @param {function(id:string): Processor} getProcessor The getter of defined processors.
+ * @returns {void}
+ */
+ validateProcessor(processorName, source, getProcessor) {
+ if (processorName && !getProcessor(processorName)) {
+ throw new Error(`ESLint configuration of processor in '${source}' is invalid: '${processorName}' was not found.`);
+ }
+ }
+
+ /**
+ * Formats an array of schema validation errors.
+ * @param {Array} errors An array of error messages to format.
+ * @returns {string} Formatted error message
+ */
+ formatErrors(errors) {
+ return errors.map(error => {
+ if (error.keyword === "additionalProperties") {
+ const formattedPropertyPath = error.dataPath.length ? `${error.dataPath.slice(1)}.${error.params.additionalProperty}` : error.params.additionalProperty;
+
+ return `Unexpected top-level property "${formattedPropertyPath}"`;
+ }
+ if (error.keyword === "type") {
+ const formattedField = error.dataPath.slice(1);
+ const formattedExpectedType = Array.isArray(error.schema) ? error.schema.join("/") : error.schema;
+ const formattedValue = JSON.stringify(error.data);
+
+ return `Property "${formattedField}" is the wrong type (expected ${formattedExpectedType} but got \`${formattedValue}\`)`;
+ }
+
+ const field = error.dataPath[0] === "." ? error.dataPath.slice(1) : error.dataPath;
+
+ return `"${field}" ${error.message}. Value: ${JSON.stringify(error.data)}`;
+ }).map(message => `\t- ${message}.\n`).join("");
+ }
+
+ /**
+ * Validates the top level properties of the config object.
+ * @param {Object} config The config object to validate.
+ * @param {string} source The name of the configuration source to report in any errors.
+ * @returns {void}
+ */
+ validateConfigSchema(config, source = null) {
+ validateSchema = validateSchema || ajv.compile(configSchema);
+
+ if (!validateSchema(config)) {
+ throw new Error(`ESLint configuration in ${source} is invalid:\n${this.formatErrors(validateSchema.errors)}`);
+ }
+
+ if (Object.hasOwnProperty.call(config, "ecmaFeatures")) {
+ emitDeprecationWarning(source, "ESLINT_LEGACY_ECMAFEATURES");
+ }
+ }
+
+ /**
+ * Validates an entire config object.
+ * @param {Object} config The config object to validate.
+ * @param {string} source The name of the configuration source to report in any errors.
+ * @param {function(ruleId:string): Object} [getAdditionalRule] A map from strings to loaded rules.
+ * @param {function(envId:string): Object} [getAdditionalEnv] A map from strings to loaded envs.
+ * @returns {void}
+ */
+ validate(config, source, getAdditionalRule, getAdditionalEnv) {
+ this.validateConfigSchema(config, source);
+ this.validateRules(config.rules, source, getAdditionalRule);
+ this.validateEnvironment(config.env, source, getAdditionalEnv);
+ this.validateGlobals(config.globals, source);
+
+ for (const override of config.overrides || []) {
+ this.validateRules(override.rules, source, getAdditionalRule);
+ this.validateEnvironment(override.env, source, getAdditionalEnv);
+ this.validateGlobals(config.globals, source);
+ }
+ }
+
+ /**
+ * Validate config array object.
+ * @param {ConfigArray} configArray The config array to validate.
+ * @returns {void}
+ */
+ validateConfigArray(configArray) {
+ const getPluginEnv = Map.prototype.get.bind(configArray.pluginEnvironments);
+ const getPluginProcessor = Map.prototype.get.bind(configArray.pluginProcessors);
+ const getPluginRule = Map.prototype.get.bind(configArray.pluginRules);
+
+ // Validate.
+ for (const element of configArray) {
+ if (validated.has(element)) {
+ continue;
+ }
+ validated.add(element);
+
+ this.validateEnvironment(element.env, element.name, getPluginEnv);
+ this.validateGlobals(element.globals, element.name);
+ this.validateProcessor(element.processor, element.name, getPluginProcessor);
+ this.validateRules(element.rules, element.name, getPluginRule);
+ }
+ }
+
+}
+
+/**
+ * @fileoverview Common helpers for naming of plugins, formatters and configs
+ */
+
+const NAMESPACE_REGEX = /^@.*\//iu;
+
+/**
+ * Brings package name to correct format based on prefix
+ * @param {string} name The name of the package.
+ * @param {string} prefix Can be either "eslint-plugin", "eslint-config" or "eslint-formatter"
+ * @returns {string} Normalized name of the package
+ * @private
+ */
+function normalizePackageName(name, prefix) {
+ let normalizedName = name;
+
+ /**
+ * On Windows, name can come in with Windows slashes instead of Unix slashes.
+ * Normalize to Unix first to avoid errors later on.
+ * https://github.com/eslint/eslint/issues/5644
+ */
+ if (normalizedName.includes("\\")) {
+ normalizedName = normalizedName.replace(/\\/gu, "/");
+ }
+
+ if (normalizedName.charAt(0) === "@") {
+
+ /**
+ * it's a scoped package
+ * package name is the prefix, or just a username
+ */
+ const scopedPackageShortcutRegex = new RegExp(`^(@[^/]+)(?:/(?:${prefix})?)?$`, "u"),
+ scopedPackageNameRegex = new RegExp(`^${prefix}(-|$)`, "u");
+
+ if (scopedPackageShortcutRegex.test(normalizedName)) {
+ normalizedName = normalizedName.replace(scopedPackageShortcutRegex, `$1/${prefix}`);
+ } else if (!scopedPackageNameRegex.test(normalizedName.split("/")[1])) {
+
+ /**
+ * for scoped packages, insert the prefix after the first / unless
+ * the path is already @scope/eslint or @scope/eslint-xxx-yyy
+ */
+ normalizedName = normalizedName.replace(/^@([^/]+)\/(.*)$/u, `@$1/${prefix}-$2`);
+ }
+ } else if (!normalizedName.startsWith(`${prefix}-`)) {
+ normalizedName = `${prefix}-${normalizedName}`;
+ }
+
+ return normalizedName;
+}
+
+/**
+ * Removes the prefix from a fullname.
+ * @param {string} fullname The term which may have the prefix.
+ * @param {string} prefix The prefix to remove.
+ * @returns {string} The term without prefix.
+ */
+function getShorthandName(fullname, prefix) {
+ if (fullname[0] === "@") {
+ let matchResult = new RegExp(`^(@[^/]+)/${prefix}$`, "u").exec(fullname);
+
+ if (matchResult) {
+ return matchResult[1];
+ }
+
+ matchResult = new RegExp(`^(@[^/]+)/${prefix}-(.+)$`, "u").exec(fullname);
+ if (matchResult) {
+ return `${matchResult[1]}/${matchResult[2]}`;
+ }
+ } else if (fullname.startsWith(`${prefix}-`)) {
+ return fullname.slice(prefix.length + 1);
+ }
+
+ return fullname;
+}
+
+/**
+ * Gets the scope (namespace) of a term.
+ * @param {string} term The term which may have the namespace.
+ * @returns {string} The namespace of the term if it has one.
+ */
+function getNamespaceFromTerm(term) {
+ const match = term.match(NAMESPACE_REGEX);
+
+ return match ? match[0] : "";
+}
+
+var naming = {
+ __proto__: null,
+ normalizePackageName: normalizePackageName,
+ getShorthandName: getShorthandName,
+ getNamespaceFromTerm: getNamespaceFromTerm
+};
+
+/**
+ * @fileoverview Package exports for @eslint/eslintrc
+ * @author Nicholas C. Zakas
+ */
+
+//-----------------------------------------------------------------------------
+// Exports
+//-----------------------------------------------------------------------------
+
+const Legacy = {
+ environments,
+
+ // shared
+ ConfigOps,
+ ConfigValidator,
+ naming
+};
+
+exports.Legacy = Legacy;
+//# sourceMappingURL=eslintrc-universal.cjs.map
diff --git a/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint/eslintrc/dist/eslintrc-universal.cjs.map b/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint/eslintrc/dist/eslintrc-universal.cjs.map
new file mode 100644
index 0000000..12895a6
--- /dev/null
+++ b/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint/eslintrc/dist/eslintrc-universal.cjs.map
@@ -0,0 +1 @@
+{"version":3,"file":"eslintrc-universal.cjs","sources":["../lib/shared/config-ops.js","../lib/shared/deprecation-warnings.js","../lib/shared/ajv.js","../conf/config-schema.js","../conf/environments.js","../lib/shared/config-validator.js","../lib/shared/naming.js","../lib/index-universal.js"],"sourcesContent":["/**\n * @fileoverview Config file operations. This file must be usable in the browser,\n * so no Node-specific code can be here.\n * @author Nicholas C. Zakas\n */\n\n//------------------------------------------------------------------------------\n// Private\n//------------------------------------------------------------------------------\n\nconst RULE_SEVERITY_STRINGS = [\"off\", \"warn\", \"error\"],\n RULE_SEVERITY = RULE_SEVERITY_STRINGS.reduce((map, value, index) => {\n map[value] = index;\n return map;\n }, {}),\n VALID_SEVERITIES = [0, 1, 2, \"off\", \"warn\", \"error\"];\n\n//------------------------------------------------------------------------------\n// Public Interface\n//------------------------------------------------------------------------------\n\n/**\n * Normalizes the severity value of a rule's configuration to a number\n * @param {(number|string|[number, ...*]|[string, ...*])} ruleConfig A rule's configuration value, generally\n * received from the user. A valid config value is either 0, 1, 2, the string \"off\" (treated the same as 0),\n * the string \"warn\" (treated the same as 1), the string \"error\" (treated the same as 2), or an array\n * whose first element is one of the above values. Strings are matched case-insensitively.\n * @returns {(0|1|2)} The numeric severity value if the config value was valid, otherwise 0.\n */\nfunction getRuleSeverity(ruleConfig) {\n const severityValue = Array.isArray(ruleConfig) ? ruleConfig[0] : ruleConfig;\n\n if (severityValue === 0 || severityValue === 1 || severityValue === 2) {\n return severityValue;\n }\n\n if (typeof severityValue === \"string\") {\n return RULE_SEVERITY[severityValue.toLowerCase()] || 0;\n }\n\n return 0;\n}\n\n/**\n * Converts old-style severity settings (0, 1, 2) into new-style\n * severity settings (off, warn, error) for all rules. Assumption is that severity\n * values have already been validated as correct.\n * @param {Object} config The config object to normalize.\n * @returns {void}\n */\nfunction normalizeToStrings(config) {\n\n if (config.rules) {\n Object.keys(config.rules).forEach(ruleId => {\n const ruleConfig = config.rules[ruleId];\n\n if (typeof ruleConfig === \"number\") {\n config.rules[ruleId] = RULE_SEVERITY_STRINGS[ruleConfig] || RULE_SEVERITY_STRINGS[0];\n } else if (Array.isArray(ruleConfig) && typeof ruleConfig[0] === \"number\") {\n ruleConfig[0] = RULE_SEVERITY_STRINGS[ruleConfig[0]] || RULE_SEVERITY_STRINGS[0];\n }\n });\n }\n}\n\n/**\n * Determines if the severity for the given rule configuration represents an error.\n * @param {int|string|Array} ruleConfig The configuration for an individual rule.\n * @returns {boolean} True if the rule represents an error, false if not.\n */\nfunction isErrorSeverity(ruleConfig) {\n return getRuleSeverity(ruleConfig) === 2;\n}\n\n/**\n * Checks whether a given config has valid severity or not.\n * @param {number|string|Array} ruleConfig The configuration for an individual rule.\n * @returns {boolean} `true` if the configuration has valid severity.\n */\nfunction isValidSeverity(ruleConfig) {\n let severity = Array.isArray(ruleConfig) ? ruleConfig[0] : ruleConfig;\n\n if (typeof severity === \"string\") {\n severity = severity.toLowerCase();\n }\n return VALID_SEVERITIES.indexOf(severity) !== -1;\n}\n\n/**\n * Checks whether every rule of a given config has valid severity or not.\n * @param {Object} config The configuration for rules.\n * @returns {boolean} `true` if the configuration has valid severity.\n */\nfunction isEverySeverityValid(config) {\n return Object.keys(config).every(ruleId => isValidSeverity(config[ruleId]));\n}\n\n/**\n * Normalizes a value for a global in a config\n * @param {(boolean|string|null)} configuredValue The value given for a global in configuration or in\n * a global directive comment\n * @returns {(\"readable\"|\"writeable\"|\"off\")} The value normalized as a string\n * @throws Error if global value is invalid\n */\nfunction normalizeConfigGlobal(configuredValue) {\n switch (configuredValue) {\n case \"off\":\n return \"off\";\n\n case true:\n case \"true\":\n case \"writeable\":\n case \"writable\":\n return \"writable\";\n\n case null:\n case false:\n case \"false\":\n case \"readable\":\n case \"readonly\":\n return \"readonly\";\n\n default:\n throw new Error(`'${configuredValue}' is not a valid configuration for a global (use 'readonly', 'writable', or 'off')`);\n }\n}\n\nexport {\n getRuleSeverity,\n normalizeToStrings,\n isErrorSeverity,\n isValidSeverity,\n isEverySeverityValid,\n normalizeConfigGlobal\n};\n","/**\n * @fileoverview Provide the function that emits deprecation warnings.\n * @author Toru Nagashima \n */\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nimport path from \"path\";\n\n//------------------------------------------------------------------------------\n// Private\n//------------------------------------------------------------------------------\n\n// Defitions for deprecation warnings.\nconst deprecationWarningMessages = {\n ESLINT_LEGACY_ECMAFEATURES:\n \"The 'ecmaFeatures' config file property is deprecated and has no effect.\",\n ESLINT_PERSONAL_CONFIG_LOAD:\n \"'~/.eslintrc.*' config files have been deprecated. \" +\n \"Please use a config file per project or the '--config' option.\",\n ESLINT_PERSONAL_CONFIG_SUPPRESS:\n \"'~/.eslintrc.*' config files have been deprecated. \" +\n \"Please remove it or add 'root:true' to the config files in your \" +\n \"projects in order to avoid loading '~/.eslintrc.*' accidentally.\"\n};\n\nconst sourceFileErrorCache = new Set();\n\n/**\n * Emits a deprecation warning containing a given filepath. A new deprecation warning is emitted\n * for each unique file path, but repeated invocations with the same file path have no effect.\n * No warnings are emitted if the `--no-deprecation` or `--no-warnings` Node runtime flags are active.\n * @param {string} source The name of the configuration source to report the warning for.\n * @param {string} errorCode The warning message to show.\n * @returns {void}\n */\nfunction emitDeprecationWarning(source, errorCode) {\n const cacheKey = JSON.stringify({ source, errorCode });\n\n if (sourceFileErrorCache.has(cacheKey)) {\n return;\n }\n sourceFileErrorCache.add(cacheKey);\n\n const rel = path.relative(process.cwd(), source);\n const message = deprecationWarningMessages[errorCode];\n\n process.emitWarning(\n `${message} (found in \"${rel}\")`,\n \"DeprecationWarning\",\n errorCode\n );\n}\n\n//------------------------------------------------------------------------------\n// Public Interface\n//------------------------------------------------------------------------------\n\nexport {\n emitDeprecationWarning\n};\n","/**\n * @fileoverview The instance of Ajv validator.\n * @author Evgeny Poberezkin\n */\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nimport Ajv from \"ajv\";\n\n//-----------------------------------------------------------------------------\n// Helpers\n//-----------------------------------------------------------------------------\n\n/*\n * Copied from ajv/lib/refs/json-schema-draft-04.json\n * The MIT License (MIT)\n * Copyright (c) 2015-2017 Evgeny Poberezkin\n */\nconst metaSchema = {\n id: \"http://json-schema.org/draft-04/schema#\",\n $schema: \"http://json-schema.org/draft-04/schema#\",\n description: \"Core schema meta-schema\",\n definitions: {\n schemaArray: {\n type: \"array\",\n minItems: 1,\n items: { $ref: \"#\" }\n },\n positiveInteger: {\n type: \"integer\",\n minimum: 0\n },\n positiveIntegerDefault0: {\n allOf: [{ $ref: \"#/definitions/positiveInteger\" }, { default: 0 }]\n },\n simpleTypes: {\n enum: [\"array\", \"boolean\", \"integer\", \"null\", \"number\", \"object\", \"string\"]\n },\n stringArray: {\n type: \"array\",\n items: { type: \"string\" },\n minItems: 1,\n uniqueItems: true\n }\n },\n type: \"object\",\n properties: {\n id: {\n type: \"string\"\n },\n $schema: {\n type: \"string\"\n },\n title: {\n type: \"string\"\n },\n description: {\n type: \"string\"\n },\n default: { },\n multipleOf: {\n type: \"number\",\n minimum: 0,\n exclusiveMinimum: true\n },\n maximum: {\n type: \"number\"\n },\n exclusiveMaximum: {\n type: \"boolean\",\n default: false\n },\n minimum: {\n type: \"number\"\n },\n exclusiveMinimum: {\n type: \"boolean\",\n default: false\n },\n maxLength: { $ref: \"#/definitions/positiveInteger\" },\n minLength: { $ref: \"#/definitions/positiveIntegerDefault0\" },\n pattern: {\n type: \"string\",\n format: \"regex\"\n },\n additionalItems: {\n anyOf: [\n { type: \"boolean\" },\n { $ref: \"#\" }\n ],\n default: { }\n },\n items: {\n anyOf: [\n { $ref: \"#\" },\n { $ref: \"#/definitions/schemaArray\" }\n ],\n default: { }\n },\n maxItems: { $ref: \"#/definitions/positiveInteger\" },\n minItems: { $ref: \"#/definitions/positiveIntegerDefault0\" },\n uniqueItems: {\n type: \"boolean\",\n default: false\n },\n maxProperties: { $ref: \"#/definitions/positiveInteger\" },\n minProperties: { $ref: \"#/definitions/positiveIntegerDefault0\" },\n required: { $ref: \"#/definitions/stringArray\" },\n additionalProperties: {\n anyOf: [\n { type: \"boolean\" },\n { $ref: \"#\" }\n ],\n default: { }\n },\n definitions: {\n type: \"object\",\n additionalProperties: { $ref: \"#\" },\n default: { }\n },\n properties: {\n type: \"object\",\n additionalProperties: { $ref: \"#\" },\n default: { }\n },\n patternProperties: {\n type: \"object\",\n additionalProperties: { $ref: \"#\" },\n default: { }\n },\n dependencies: {\n type: \"object\",\n additionalProperties: {\n anyOf: [\n { $ref: \"#\" },\n { $ref: \"#/definitions/stringArray\" }\n ]\n }\n },\n enum: {\n type: \"array\",\n minItems: 1,\n uniqueItems: true\n },\n type: {\n anyOf: [\n { $ref: \"#/definitions/simpleTypes\" },\n {\n type: \"array\",\n items: { $ref: \"#/definitions/simpleTypes\" },\n minItems: 1,\n uniqueItems: true\n }\n ]\n },\n format: { type: \"string\" },\n allOf: { $ref: \"#/definitions/schemaArray\" },\n anyOf: { $ref: \"#/definitions/schemaArray\" },\n oneOf: { $ref: \"#/definitions/schemaArray\" },\n not: { $ref: \"#\" }\n },\n dependencies: {\n exclusiveMaximum: [\"maximum\"],\n exclusiveMinimum: [\"minimum\"]\n },\n default: { }\n};\n\n//------------------------------------------------------------------------------\n// Public Interface\n//------------------------------------------------------------------------------\n\nexport default (additionalOptions = {}) => {\n const ajv = new Ajv({\n meta: false,\n useDefaults: true,\n validateSchema: false,\n missingRefs: \"ignore\",\n verbose: true,\n schemaId: \"auto\",\n ...additionalOptions\n });\n\n ajv.addMetaSchema(metaSchema);\n // eslint-disable-next-line no-underscore-dangle\n ajv._opts.defaultMeta = metaSchema.id;\n\n return ajv;\n};\n","/**\n * @fileoverview Defines a schema for configs.\n * @author Sylvan Mably\n */\n\nconst baseConfigProperties = {\n $schema: { type: \"string\" },\n env: { type: \"object\" },\n extends: { $ref: \"#/definitions/stringOrStrings\" },\n globals: { type: \"object\" },\n overrides: {\n type: \"array\",\n items: { $ref: \"#/definitions/overrideConfig\" },\n additionalItems: false\n },\n parser: { type: [\"string\", \"null\"] },\n parserOptions: { type: \"object\" },\n plugins: { type: \"array\" },\n processor: { type: \"string\" },\n rules: { type: \"object\" },\n settings: { type: \"object\" },\n noInlineConfig: { type: \"boolean\" },\n reportUnusedDisableDirectives: { type: \"boolean\" },\n\n ecmaFeatures: { type: \"object\" } // deprecated; logs a warning when used\n};\n\nconst configSchema = {\n definitions: {\n stringOrStrings: {\n oneOf: [\n { type: \"string\" },\n {\n type: \"array\",\n items: { type: \"string\" },\n additionalItems: false\n }\n ]\n },\n stringOrStringsRequired: {\n oneOf: [\n { type: \"string\" },\n {\n type: \"array\",\n items: { type: \"string\" },\n additionalItems: false,\n minItems: 1\n }\n ]\n },\n\n // Config at top-level.\n objectConfig: {\n type: \"object\",\n properties: {\n root: { type: \"boolean\" },\n ignorePatterns: { $ref: \"#/definitions/stringOrStrings\" },\n ...baseConfigProperties\n },\n additionalProperties: false\n },\n\n // Config in `overrides`.\n overrideConfig: {\n type: \"object\",\n properties: {\n excludedFiles: { $ref: \"#/definitions/stringOrStrings\" },\n files: { $ref: \"#/definitions/stringOrStringsRequired\" },\n ...baseConfigProperties\n },\n required: [\"files\"],\n additionalProperties: false\n }\n },\n\n $ref: \"#/definitions/objectConfig\"\n};\n\nexport default configSchema;\n","/**\n * @fileoverview Defines environment settings and globals.\n * @author Elan Shanker\n */\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nimport globals from \"globals\";\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\n/**\n * Get the object that has difference.\n * @param {Record} current The newer object.\n * @param {Record} prev The older object.\n * @returns {Record} The difference object.\n */\nfunction getDiff(current, prev) {\n const retv = {};\n\n for (const [key, value] of Object.entries(current)) {\n if (!Object.hasOwnProperty.call(prev, key)) {\n retv[key] = value;\n }\n }\n\n return retv;\n}\n\nconst newGlobals2015 = getDiff(globals.es2015, globals.es5); // 19 variables such as Promise, Map, ...\nconst newGlobals2017 = {\n Atomics: false,\n SharedArrayBuffer: false\n};\nconst newGlobals2020 = {\n BigInt: false,\n BigInt64Array: false,\n BigUint64Array: false,\n globalThis: false\n};\n\nconst newGlobals2021 = {\n AggregateError: false,\n FinalizationRegistry: false,\n WeakRef: false\n};\n\n//------------------------------------------------------------------------------\n// Public Interface\n//------------------------------------------------------------------------------\n\n/** @type {Map} */\nexport default new Map(Object.entries({\n\n // Language\n builtin: {\n globals: globals.es5\n },\n es6: {\n globals: newGlobals2015,\n parserOptions: {\n ecmaVersion: 6\n }\n },\n es2015: {\n globals: newGlobals2015,\n parserOptions: {\n ecmaVersion: 6\n }\n },\n es2016: {\n globals: newGlobals2015,\n parserOptions: {\n ecmaVersion: 7\n }\n },\n es2017: {\n globals: { ...newGlobals2015, ...newGlobals2017 },\n parserOptions: {\n ecmaVersion: 8\n }\n },\n es2018: {\n globals: { ...newGlobals2015, ...newGlobals2017 },\n parserOptions: {\n ecmaVersion: 9\n }\n },\n es2019: {\n globals: { ...newGlobals2015, ...newGlobals2017 },\n parserOptions: {\n ecmaVersion: 10\n }\n },\n es2020: {\n globals: { ...newGlobals2015, ...newGlobals2017, ...newGlobals2020 },\n parserOptions: {\n ecmaVersion: 11\n }\n },\n es2021: {\n globals: { ...newGlobals2015, ...newGlobals2017, ...newGlobals2020, ...newGlobals2021 },\n parserOptions: {\n ecmaVersion: 12\n }\n },\n es2022: {\n globals: { ...newGlobals2015, ...newGlobals2017, ...newGlobals2020, ...newGlobals2021 },\n parserOptions: {\n ecmaVersion: 13\n }\n },\n es2023: {\n globals: { ...newGlobals2015, ...newGlobals2017, ...newGlobals2020, ...newGlobals2021 },\n parserOptions: {\n ecmaVersion: 14\n }\n },\n es2024: {\n globals: { ...newGlobals2015, ...newGlobals2017, ...newGlobals2020, ...newGlobals2021 },\n parserOptions: {\n ecmaVersion: 15\n }\n },\n\n // Platforms\n browser: {\n globals: globals.browser\n },\n node: {\n globals: globals.node,\n parserOptions: {\n ecmaFeatures: {\n globalReturn: true\n }\n }\n },\n \"shared-node-browser\": {\n globals: globals[\"shared-node-browser\"]\n },\n worker: {\n globals: globals.worker\n },\n serviceworker: {\n globals: globals.serviceworker\n },\n\n // Frameworks\n commonjs: {\n globals: globals.commonjs,\n parserOptions: {\n ecmaFeatures: {\n globalReturn: true\n }\n }\n },\n amd: {\n globals: globals.amd\n },\n mocha: {\n globals: globals.mocha\n },\n jasmine: {\n globals: globals.jasmine\n },\n jest: {\n globals: globals.jest\n },\n phantomjs: {\n globals: globals.phantomjs\n },\n jquery: {\n globals: globals.jquery\n },\n qunit: {\n globals: globals.qunit\n },\n prototypejs: {\n globals: globals.prototypejs\n },\n shelljs: {\n globals: globals.shelljs\n },\n meteor: {\n globals: globals.meteor\n },\n mongo: {\n globals: globals.mongo\n },\n protractor: {\n globals: globals.protractor\n },\n applescript: {\n globals: globals.applescript\n },\n nashorn: {\n globals: globals.nashorn\n },\n atomtest: {\n globals: globals.atomtest\n },\n embertest: {\n globals: globals.embertest\n },\n webextensions: {\n globals: globals.webextensions\n },\n greasemonkey: {\n globals: globals.greasemonkey\n }\n}));\n","/**\n * @fileoverview Validates configs.\n * @author Brandon Mills\n */\n\n/* eslint class-methods-use-this: \"off\" */\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nimport util from \"util\";\nimport * as ConfigOps from \"./config-ops.js\";\nimport { emitDeprecationWarning } from \"./deprecation-warnings.js\";\nimport ajvOrig from \"./ajv.js\";\nimport configSchema from \"../../conf/config-schema.js\";\nimport BuiltInEnvironments from \"../../conf/environments.js\";\n\nconst ajv = ajvOrig();\n\nconst ruleValidators = new WeakMap();\nconst noop = Function.prototype;\n\n//------------------------------------------------------------------------------\n// Private\n//------------------------------------------------------------------------------\nlet validateSchema;\nconst severityMap = {\n error: 2,\n warn: 1,\n off: 0\n};\n\nconst validated = new WeakSet();\n\n//-----------------------------------------------------------------------------\n// Exports\n//-----------------------------------------------------------------------------\n\nexport default class ConfigValidator {\n constructor({ builtInRules = new Map() } = {}) {\n this.builtInRules = builtInRules;\n }\n\n /**\n * Gets a complete options schema for a rule.\n * @param {{create: Function, schema: (Array|null)}} rule A new-style rule object\n * @returns {Object} JSON Schema for the rule's options.\n */\n getRuleOptionsSchema(rule) {\n if (!rule) {\n return null;\n }\n\n const schema = rule.schema || rule.meta && rule.meta.schema;\n\n // Given a tuple of schemas, insert warning level at the beginning\n if (Array.isArray(schema)) {\n if (schema.length) {\n return {\n type: \"array\",\n items: schema,\n minItems: 0,\n maxItems: schema.length\n };\n }\n return {\n type: \"array\",\n minItems: 0,\n maxItems: 0\n };\n\n }\n\n // Given a full schema, leave it alone\n return schema || null;\n }\n\n /**\n * Validates a rule's severity and returns the severity value. Throws an error if the severity is invalid.\n * @param {options} options The given options for the rule.\n * @returns {number|string} The rule's severity value\n */\n validateRuleSeverity(options) {\n const severity = Array.isArray(options) ? options[0] : options;\n const normSeverity = typeof severity === \"string\" ? severityMap[severity.toLowerCase()] : severity;\n\n if (normSeverity === 0 || normSeverity === 1 || normSeverity === 2) {\n return normSeverity;\n }\n\n throw new Error(`\\tSeverity should be one of the following: 0 = off, 1 = warn, 2 = error (you passed '${util.inspect(severity).replace(/'/gu, \"\\\"\").replace(/\\n/gu, \"\")}').\\n`);\n\n }\n\n /**\n * Validates the non-severity options passed to a rule, based on its schema.\n * @param {{create: Function}} rule The rule to validate\n * @param {Array} localOptions The options for the rule, excluding severity\n * @returns {void}\n */\n validateRuleSchema(rule, localOptions) {\n if (!ruleValidators.has(rule)) {\n const schema = this.getRuleOptionsSchema(rule);\n\n if (schema) {\n ruleValidators.set(rule, ajv.compile(schema));\n }\n }\n\n const validateRule = ruleValidators.get(rule);\n\n if (validateRule) {\n validateRule(localOptions);\n if (validateRule.errors) {\n throw new Error(validateRule.errors.map(\n error => `\\tValue ${JSON.stringify(error.data)} ${error.message}.\\n`\n ).join(\"\"));\n }\n }\n }\n\n /**\n * Validates a rule's options against its schema.\n * @param {{create: Function}|null} rule The rule that the config is being validated for\n * @param {string} ruleId The rule's unique name.\n * @param {Array|number} options The given options for the rule.\n * @param {string|null} source The name of the configuration source to report in any errors. If null or undefined,\n * no source is prepended to the message.\n * @returns {void}\n */\n validateRuleOptions(rule, ruleId, options, source = null) {\n try {\n const severity = this.validateRuleSeverity(options);\n\n if (severity !== 0) {\n this.validateRuleSchema(rule, Array.isArray(options) ? options.slice(1) : []);\n }\n } catch (err) {\n const enhancedMessage = `Configuration for rule \"${ruleId}\" is invalid:\\n${err.message}`;\n\n if (typeof source === \"string\") {\n throw new Error(`${source}:\\n\\t${enhancedMessage}`);\n } else {\n throw new Error(enhancedMessage);\n }\n }\n }\n\n /**\n * Validates an environment object\n * @param {Object} environment The environment config object to validate.\n * @param {string} source The name of the configuration source to report in any errors.\n * @param {function(envId:string): Object} [getAdditionalEnv] A map from strings to loaded environments.\n * @returns {void}\n */\n validateEnvironment(\n environment,\n source,\n getAdditionalEnv = noop\n ) {\n\n // not having an environment is ok\n if (!environment) {\n return;\n }\n\n Object.keys(environment).forEach(id => {\n const env = getAdditionalEnv(id) || BuiltInEnvironments.get(id) || null;\n\n if (!env) {\n const message = `${source}:\\n\\tEnvironment key \"${id}\" is unknown\\n`;\n\n throw new Error(message);\n }\n });\n }\n\n /**\n * Validates a rules config object\n * @param {Object} rulesConfig The rules config object to validate.\n * @param {string} source The name of the configuration source to report in any errors.\n * @param {function(ruleId:string): Object} getAdditionalRule A map from strings to loaded rules\n * @returns {void}\n */\n validateRules(\n rulesConfig,\n source,\n getAdditionalRule = noop\n ) {\n if (!rulesConfig) {\n return;\n }\n\n Object.keys(rulesConfig).forEach(id => {\n const rule = getAdditionalRule(id) || this.builtInRules.get(id) || null;\n\n this.validateRuleOptions(rule, id, rulesConfig[id], source);\n });\n }\n\n /**\n * Validates a `globals` section of a config file\n * @param {Object} globalsConfig The `globals` section\n * @param {string|null} source The name of the configuration source to report in the event of an error.\n * @returns {void}\n */\n validateGlobals(globalsConfig, source = null) {\n if (!globalsConfig) {\n return;\n }\n\n Object.entries(globalsConfig)\n .forEach(([configuredGlobal, configuredValue]) => {\n try {\n ConfigOps.normalizeConfigGlobal(configuredValue);\n } catch (err) {\n throw new Error(`ESLint configuration of global '${configuredGlobal}' in ${source} is invalid:\\n${err.message}`);\n }\n });\n }\n\n /**\n * Validate `processor` configuration.\n * @param {string|undefined} processorName The processor name.\n * @param {string} source The name of config file.\n * @param {function(id:string): Processor} getProcessor The getter of defined processors.\n * @returns {void}\n */\n validateProcessor(processorName, source, getProcessor) {\n if (processorName && !getProcessor(processorName)) {\n throw new Error(`ESLint configuration of processor in '${source}' is invalid: '${processorName}' was not found.`);\n }\n }\n\n /**\n * Formats an array of schema validation errors.\n * @param {Array} errors An array of error messages to format.\n * @returns {string} Formatted error message\n */\n formatErrors(errors) {\n return errors.map(error => {\n if (error.keyword === \"additionalProperties\") {\n const formattedPropertyPath = error.dataPath.length ? `${error.dataPath.slice(1)}.${error.params.additionalProperty}` : error.params.additionalProperty;\n\n return `Unexpected top-level property \"${formattedPropertyPath}\"`;\n }\n if (error.keyword === \"type\") {\n const formattedField = error.dataPath.slice(1);\n const formattedExpectedType = Array.isArray(error.schema) ? error.schema.join(\"/\") : error.schema;\n const formattedValue = JSON.stringify(error.data);\n\n return `Property \"${formattedField}\" is the wrong type (expected ${formattedExpectedType} but got \\`${formattedValue}\\`)`;\n }\n\n const field = error.dataPath[0] === \".\" ? error.dataPath.slice(1) : error.dataPath;\n\n return `\"${field}\" ${error.message}. Value: ${JSON.stringify(error.data)}`;\n }).map(message => `\\t- ${message}.\\n`).join(\"\");\n }\n\n /**\n * Validates the top level properties of the config object.\n * @param {Object} config The config object to validate.\n * @param {string} source The name of the configuration source to report in any errors.\n * @returns {void}\n */\n validateConfigSchema(config, source = null) {\n validateSchema = validateSchema || ajv.compile(configSchema);\n\n if (!validateSchema(config)) {\n throw new Error(`ESLint configuration in ${source} is invalid:\\n${this.formatErrors(validateSchema.errors)}`);\n }\n\n if (Object.hasOwnProperty.call(config, \"ecmaFeatures\")) {\n emitDeprecationWarning(source, \"ESLINT_LEGACY_ECMAFEATURES\");\n }\n }\n\n /**\n * Validates an entire config object.\n * @param {Object} config The config object to validate.\n * @param {string} source The name of the configuration source to report in any errors.\n * @param {function(ruleId:string): Object} [getAdditionalRule] A map from strings to loaded rules.\n * @param {function(envId:string): Object} [getAdditionalEnv] A map from strings to loaded envs.\n * @returns {void}\n */\n validate(config, source, getAdditionalRule, getAdditionalEnv) {\n this.validateConfigSchema(config, source);\n this.validateRules(config.rules, source, getAdditionalRule);\n this.validateEnvironment(config.env, source, getAdditionalEnv);\n this.validateGlobals(config.globals, source);\n\n for (const override of config.overrides || []) {\n this.validateRules(override.rules, source, getAdditionalRule);\n this.validateEnvironment(override.env, source, getAdditionalEnv);\n this.validateGlobals(config.globals, source);\n }\n }\n\n /**\n * Validate config array object.\n * @param {ConfigArray} configArray The config array to validate.\n * @returns {void}\n */\n validateConfigArray(configArray) {\n const getPluginEnv = Map.prototype.get.bind(configArray.pluginEnvironments);\n const getPluginProcessor = Map.prototype.get.bind(configArray.pluginProcessors);\n const getPluginRule = Map.prototype.get.bind(configArray.pluginRules);\n\n // Validate.\n for (const element of configArray) {\n if (validated.has(element)) {\n continue;\n }\n validated.add(element);\n\n this.validateEnvironment(element.env, element.name, getPluginEnv);\n this.validateGlobals(element.globals, element.name);\n this.validateProcessor(element.processor, element.name, getPluginProcessor);\n this.validateRules(element.rules, element.name, getPluginRule);\n }\n }\n\n}\n","/**\n * @fileoverview Common helpers for naming of plugins, formatters and configs\n */\n\nconst NAMESPACE_REGEX = /^@.*\\//iu;\n\n/**\n * Brings package name to correct format based on prefix\n * @param {string} name The name of the package.\n * @param {string} prefix Can be either \"eslint-plugin\", \"eslint-config\" or \"eslint-formatter\"\n * @returns {string} Normalized name of the package\n * @private\n */\nfunction normalizePackageName(name, prefix) {\n let normalizedName = name;\n\n /**\n * On Windows, name can come in with Windows slashes instead of Unix slashes.\n * Normalize to Unix first to avoid errors later on.\n * https://github.com/eslint/eslint/issues/5644\n */\n if (normalizedName.includes(\"\\\\\")) {\n normalizedName = normalizedName.replace(/\\\\/gu, \"/\");\n }\n\n if (normalizedName.charAt(0) === \"@\") {\n\n /**\n * it's a scoped package\n * package name is the prefix, or just a username\n */\n const scopedPackageShortcutRegex = new RegExp(`^(@[^/]+)(?:/(?:${prefix})?)?$`, \"u\"),\n scopedPackageNameRegex = new RegExp(`^${prefix}(-|$)`, \"u\");\n\n if (scopedPackageShortcutRegex.test(normalizedName)) {\n normalizedName = normalizedName.replace(scopedPackageShortcutRegex, `$1/${prefix}`);\n } else if (!scopedPackageNameRegex.test(normalizedName.split(\"/\")[1])) {\n\n /**\n * for scoped packages, insert the prefix after the first / unless\n * the path is already @scope/eslint or @scope/eslint-xxx-yyy\n */\n normalizedName = normalizedName.replace(/^@([^/]+)\\/(.*)$/u, `@$1/${prefix}-$2`);\n }\n } else if (!normalizedName.startsWith(`${prefix}-`)) {\n normalizedName = `${prefix}-${normalizedName}`;\n }\n\n return normalizedName;\n}\n\n/**\n * Removes the prefix from a fullname.\n * @param {string} fullname The term which may have the prefix.\n * @param {string} prefix The prefix to remove.\n * @returns {string} The term without prefix.\n */\nfunction getShorthandName(fullname, prefix) {\n if (fullname[0] === \"@\") {\n let matchResult = new RegExp(`^(@[^/]+)/${prefix}$`, \"u\").exec(fullname);\n\n if (matchResult) {\n return matchResult[1];\n }\n\n matchResult = new RegExp(`^(@[^/]+)/${prefix}-(.+)$`, \"u\").exec(fullname);\n if (matchResult) {\n return `${matchResult[1]}/${matchResult[2]}`;\n }\n } else if (fullname.startsWith(`${prefix}-`)) {\n return fullname.slice(prefix.length + 1);\n }\n\n return fullname;\n}\n\n/**\n * Gets the scope (namespace) of a term.\n * @param {string} term The term which may have the namespace.\n * @returns {string} The namespace of the term if it has one.\n */\nfunction getNamespaceFromTerm(term) {\n const match = term.match(NAMESPACE_REGEX);\n\n return match ? match[0] : \"\";\n}\n\n//------------------------------------------------------------------------------\n// Public Interface\n//------------------------------------------------------------------------------\n\nexport {\n normalizePackageName,\n getShorthandName,\n getNamespaceFromTerm\n};\n","/**\n * @fileoverview Package exports for @eslint/eslintrc\n * @author Nicholas C. Zakas\n */\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nimport * as ConfigOps from \"./shared/config-ops.js\";\nimport ConfigValidator from \"./shared/config-validator.js\";\nimport * as naming from \"./shared/naming.js\";\nimport environments from \"../conf/environments.js\";\n\n//-----------------------------------------------------------------------------\n// Exports\n//-----------------------------------------------------------------------------\n\nconst Legacy = {\n environments,\n\n // shared\n ConfigOps,\n ConfigValidator,\n naming\n};\n\nexport {\n Legacy\n};\n"],"names":["path","Ajv","globals","util","BuiltInEnvironments","ConfigOps.normalizeConfigGlobal"],"mappings":"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"}
\ No newline at end of file
diff --git a/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint/eslintrc/dist/eslintrc.cjs b/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint/eslintrc/dist/eslintrc.cjs
new file mode 100644
index 0000000..9902a90
--- /dev/null
+++ b/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint/eslintrc/dist/eslintrc.cjs
@@ -0,0 +1,4333 @@
+'use strict';
+
+Object.defineProperty(exports, '__esModule', { value: true });
+
+var debugOrig = require('debug');
+var fs = require('fs');
+var importFresh = require('import-fresh');
+var Module = require('module');
+var path = require('path');
+var stripComments = require('strip-json-comments');
+var assert = require('assert');
+var ignore = require('ignore');
+var util = require('util');
+var minimatch = require('minimatch');
+var Ajv = require('ajv');
+var globals = require('globals');
+var os = require('os');
+
+function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
+
+var debugOrig__default = /*#__PURE__*/_interopDefaultLegacy(debugOrig);
+var fs__default = /*#__PURE__*/_interopDefaultLegacy(fs);
+var importFresh__default = /*#__PURE__*/_interopDefaultLegacy(importFresh);
+var Module__default = /*#__PURE__*/_interopDefaultLegacy(Module);
+var path__default = /*#__PURE__*/_interopDefaultLegacy(path);
+var stripComments__default = /*#__PURE__*/_interopDefaultLegacy(stripComments);
+var assert__default = /*#__PURE__*/_interopDefaultLegacy(assert);
+var ignore__default = /*#__PURE__*/_interopDefaultLegacy(ignore);
+var util__default = /*#__PURE__*/_interopDefaultLegacy(util);
+var minimatch__default = /*#__PURE__*/_interopDefaultLegacy(minimatch);
+var Ajv__default = /*#__PURE__*/_interopDefaultLegacy(Ajv);
+var globals__default = /*#__PURE__*/_interopDefaultLegacy(globals);
+var os__default = /*#__PURE__*/_interopDefaultLegacy(os);
+
+/**
+ * @fileoverview `IgnorePattern` class.
+ *
+ * `IgnorePattern` class has the set of glob patterns and the base path.
+ *
+ * It provides two static methods.
+ *
+ * - `IgnorePattern.createDefaultIgnore(cwd)`
+ * Create the default predicate function.
+ * - `IgnorePattern.createIgnore(ignorePatterns)`
+ * Create the predicate function from multiple `IgnorePattern` objects.
+ *
+ * It provides two properties and a method.
+ *
+ * - `patterns`
+ * The glob patterns that ignore to lint.
+ * - `basePath`
+ * The base path of the glob patterns. If absolute paths existed in the
+ * glob patterns, those are handled as relative paths to the base path.
+ * - `getPatternsRelativeTo(basePath)`
+ * Get `patterns` as modified for a given base path. It modifies the
+ * absolute paths in the patterns as prepending the difference of two base
+ * paths.
+ *
+ * `ConfigArrayFactory` creates `IgnorePattern` objects when it processes
+ * `ignorePatterns` properties.
+ *
+ * @author Toru Nagashima
+ */
+
+const debug$3 = debugOrig__default["default"]("eslintrc:ignore-pattern");
+
+/** @typedef {ReturnType} Ignore */
+
+//------------------------------------------------------------------------------
+// Helpers
+//------------------------------------------------------------------------------
+
+/**
+ * Get the path to the common ancestor directory of given paths.
+ * @param {string[]} sourcePaths The paths to calculate the common ancestor.
+ * @returns {string} The path to the common ancestor directory.
+ */
+function getCommonAncestorPath(sourcePaths) {
+ let result = sourcePaths[0];
+
+ for (let i = 1; i < sourcePaths.length; ++i) {
+ const a = result;
+ const b = sourcePaths[i];
+
+ // Set the shorter one (it's the common ancestor if one includes the other).
+ result = a.length < b.length ? a : b;
+
+ // Set the common ancestor.
+ for (let j = 0, lastSepPos = 0; j < a.length && j < b.length; ++j) {
+ if (a[j] !== b[j]) {
+ result = a.slice(0, lastSepPos);
+ break;
+ }
+ if (a[j] === path__default["default"].sep) {
+ lastSepPos = j;
+ }
+ }
+ }
+
+ let resolvedResult = result || path__default["default"].sep;
+
+ // if Windows common ancestor is root of drive must have trailing slash to be absolute.
+ if (resolvedResult && resolvedResult.endsWith(":") && process.platform === "win32") {
+ resolvedResult += path__default["default"].sep;
+ }
+ return resolvedResult;
+}
+
+/**
+ * Make relative path.
+ * @param {string} from The source path to get relative path.
+ * @param {string} to The destination path to get relative path.
+ * @returns {string} The relative path.
+ */
+function relative(from, to) {
+ const relPath = path__default["default"].relative(from, to);
+
+ if (path__default["default"].sep === "/") {
+ return relPath;
+ }
+ return relPath.split(path__default["default"].sep).join("/");
+}
+
+/**
+ * Get the trailing slash if existed.
+ * @param {string} filePath The path to check.
+ * @returns {string} The trailing slash if existed.
+ */
+function dirSuffix(filePath) {
+ const isDir = (
+ filePath.endsWith(path__default["default"].sep) ||
+ (process.platform === "win32" && filePath.endsWith("/"))
+ );
+
+ return isDir ? "/" : "";
+}
+
+const DefaultPatterns = Object.freeze(["/**/node_modules/*"]);
+const DotPatterns = Object.freeze([".*", "!.eslintrc.*", "!../"]);
+
+//------------------------------------------------------------------------------
+// Public
+//------------------------------------------------------------------------------
+
+class IgnorePattern {
+
+ /**
+ * The default patterns.
+ * @type {string[]}
+ */
+ static get DefaultPatterns() {
+ return DefaultPatterns;
+ }
+
+ /**
+ * Create the default predicate function.
+ * @param {string} cwd The current working directory.
+ * @returns {((filePath:string, dot:boolean) => boolean) & {basePath:string; patterns:string[]}}
+ * The preficate function.
+ * The first argument is an absolute path that is checked.
+ * The second argument is the flag to not ignore dotfiles.
+ * If the predicate function returned `true`, it means the path should be ignored.
+ */
+ static createDefaultIgnore(cwd) {
+ return this.createIgnore([new IgnorePattern(DefaultPatterns, cwd)]);
+ }
+
+ /**
+ * Create the predicate function from multiple `IgnorePattern` objects.
+ * @param {IgnorePattern[]} ignorePatterns The list of ignore patterns.
+ * @returns {((filePath:string, dot?:boolean) => boolean) & {basePath:string; patterns:string[]}}
+ * The preficate function.
+ * The first argument is an absolute path that is checked.
+ * The second argument is the flag to not ignore dotfiles.
+ * If the predicate function returned `true`, it means the path should be ignored.
+ */
+ static createIgnore(ignorePatterns) {
+ debug$3("Create with: %o", ignorePatterns);
+
+ const basePath = getCommonAncestorPath(ignorePatterns.map(p => p.basePath));
+ const patterns = [].concat(
+ ...ignorePatterns.map(p => p.getPatternsRelativeTo(basePath))
+ );
+ const ig = ignore__default["default"]({ allowRelativePaths: true }).add([...DotPatterns, ...patterns]);
+ const dotIg = ignore__default["default"]({ allowRelativePaths: true }).add(patterns);
+
+ debug$3(" processed: %o", { basePath, patterns });
+
+ return Object.assign(
+ (filePath, dot = false) => {
+ assert__default["default"](path__default["default"].isAbsolute(filePath), "'filePath' should be an absolute path.");
+ const relPathRaw = relative(basePath, filePath);
+ const relPath = relPathRaw && (relPathRaw + dirSuffix(filePath));
+ const adoptedIg = dot ? dotIg : ig;
+ const result = relPath !== "" && adoptedIg.ignores(relPath);
+
+ debug$3("Check", { filePath, dot, relativePath: relPath, result });
+ return result;
+ },
+ { basePath, patterns }
+ );
+ }
+
+ /**
+ * Initialize a new `IgnorePattern` instance.
+ * @param {string[]} patterns The glob patterns that ignore to lint.
+ * @param {string} basePath The base path of `patterns`.
+ */
+ constructor(patterns, basePath) {
+ assert__default["default"](path__default["default"].isAbsolute(basePath), "'basePath' should be an absolute path.");
+
+ /**
+ * The glob patterns that ignore to lint.
+ * @type {string[]}
+ */
+ this.patterns = patterns;
+
+ /**
+ * The base path of `patterns`.
+ * @type {string}
+ */
+ this.basePath = basePath;
+
+ /**
+ * If `true` then patterns which don't start with `/` will match the paths to the outside of `basePath`. Defaults to `false`.
+ *
+ * It's set `true` for `.eslintignore`, `package.json`, and `--ignore-path` for backward compatibility.
+ * It's `false` as-is for `ignorePatterns` property in config files.
+ * @type {boolean}
+ */
+ this.loose = false;
+ }
+
+ /**
+ * Get `patterns` as modified for a given base path. It modifies the
+ * absolute paths in the patterns as prepending the difference of two base
+ * paths.
+ * @param {string} newBasePath The base path.
+ * @returns {string[]} Modifired patterns.
+ */
+ getPatternsRelativeTo(newBasePath) {
+ assert__default["default"](path__default["default"].isAbsolute(newBasePath), "'newBasePath' should be an absolute path.");
+ const { basePath, loose, patterns } = this;
+
+ if (newBasePath === basePath) {
+ return patterns;
+ }
+ const prefix = `/${relative(newBasePath, basePath)}`;
+
+ return patterns.map(pattern => {
+ const negative = pattern.startsWith("!");
+ const head = negative ? "!" : "";
+ const body = negative ? pattern.slice(1) : pattern;
+
+ if (body.startsWith("/") || body.startsWith("../")) {
+ return `${head}${prefix}${body}`;
+ }
+ return loose ? pattern : `${head}${prefix}/**/${body}`;
+ });
+ }
+}
+
+/**
+ * @fileoverview `ExtractedConfig` class.
+ *
+ * `ExtractedConfig` class expresses a final configuration for a specific file.
+ *
+ * It provides one method.
+ *
+ * - `toCompatibleObjectAsConfigFileContent()`
+ * Convert this configuration to the compatible object as the content of
+ * config files. It converts the loaded parser and plugins to strings.
+ * `CLIEngine#getConfigForFile(filePath)` method uses this method.
+ *
+ * `ConfigArray#extractConfig(filePath)` creates a `ExtractedConfig` instance.
+ *
+ * @author Toru Nagashima
+ */
+
+// For VSCode intellisense
+/** @typedef {import("../../shared/types").ConfigData} ConfigData */
+/** @typedef {import("../../shared/types").GlobalConf} GlobalConf */
+/** @typedef {import("../../shared/types").SeverityConf} SeverityConf */
+/** @typedef {import("./config-dependency").DependentParser} DependentParser */
+/** @typedef {import("./config-dependency").DependentPlugin} DependentPlugin */
+
+/**
+ * Check if `xs` starts with `ys`.
+ * @template T
+ * @param {T[]} xs The array to check.
+ * @param {T[]} ys The array that may be the first part of `xs`.
+ * @returns {boolean} `true` if `xs` starts with `ys`.
+ */
+function startsWith(xs, ys) {
+ return xs.length >= ys.length && ys.every((y, i) => y === xs[i]);
+}
+
+/**
+ * The class for extracted config data.
+ */
+class ExtractedConfig {
+ constructor() {
+
+ /**
+ * The config name what `noInlineConfig` setting came from.
+ * @type {string}
+ */
+ this.configNameOfNoInlineConfig = "";
+
+ /**
+ * Environments.
+ * @type {Record}
+ */
+ this.env = {};
+
+ /**
+ * Global variables.
+ * @type {Record}
+ */
+ this.globals = {};
+
+ /**
+ * The glob patterns that ignore to lint.
+ * @type {(((filePath:string, dot?:boolean) => boolean) & { basePath:string; patterns:string[] }) | undefined}
+ */
+ this.ignores = void 0;
+
+ /**
+ * The flag that disables directive comments.
+ * @type {boolean|undefined}
+ */
+ this.noInlineConfig = void 0;
+
+ /**
+ * Parser definition.
+ * @type {DependentParser|null}
+ */
+ this.parser = null;
+
+ /**
+ * Options for the parser.
+ * @type {Object}
+ */
+ this.parserOptions = {};
+
+ /**
+ * Plugin definitions.
+ * @type {Record}
+ */
+ this.plugins = {};
+
+ /**
+ * Processor ID.
+ * @type {string|null}
+ */
+ this.processor = null;
+
+ /**
+ * The flag that reports unused `eslint-disable` directive comments.
+ * @type {boolean|undefined}
+ */
+ this.reportUnusedDisableDirectives = void 0;
+
+ /**
+ * Rule settings.
+ * @type {Record}
+ */
+ this.rules = {};
+
+ /**
+ * Shared settings.
+ * @type {Object}
+ */
+ this.settings = {};
+ }
+
+ /**
+ * Convert this config to the compatible object as a config file content.
+ * @returns {ConfigData} The converted object.
+ */
+ toCompatibleObjectAsConfigFileContent() {
+ const {
+ /* eslint-disable no-unused-vars */
+ configNameOfNoInlineConfig: _ignore1,
+ processor: _ignore2,
+ /* eslint-enable no-unused-vars */
+ ignores,
+ ...config
+ } = this;
+
+ config.parser = config.parser && config.parser.filePath;
+ config.plugins = Object.keys(config.plugins).filter(Boolean).reverse();
+ config.ignorePatterns = ignores ? ignores.patterns : [];
+
+ // Strip the default patterns from `ignorePatterns`.
+ if (startsWith(config.ignorePatterns, IgnorePattern.DefaultPatterns)) {
+ config.ignorePatterns =
+ config.ignorePatterns.slice(IgnorePattern.DefaultPatterns.length);
+ }
+
+ return config;
+ }
+}
+
+/**
+ * @fileoverview `ConfigArray` class.
+ *
+ * `ConfigArray` class expresses the full of a configuration. It has the entry
+ * config file, base config files that were extended, loaded parsers, and loaded
+ * plugins.
+ *
+ * `ConfigArray` class provides three properties and two methods.
+ *
+ * - `pluginEnvironments`
+ * - `pluginProcessors`
+ * - `pluginRules`
+ * The `Map` objects that contain the members of all plugins that this
+ * config array contains. Those map objects don't have mutation methods.
+ * Those keys are the member ID such as `pluginId/memberName`.
+ * - `isRoot()`
+ * If `true` then this configuration has `root:true` property.
+ * - `extractConfig(filePath)`
+ * Extract the final configuration for a given file. This means merging
+ * every config array element which that `criteria` property matched. The
+ * `filePath` argument must be an absolute path.
+ *
+ * `ConfigArrayFactory` provides the loading logic of config files.
+ *
+ * @author Toru Nagashima
+ */
+
+//------------------------------------------------------------------------------
+// Helpers
+//------------------------------------------------------------------------------
+
+// Define types for VSCode IntelliSense.
+/** @typedef {import("../../shared/types").Environment} Environment */
+/** @typedef {import("../../shared/types").GlobalConf} GlobalConf */
+/** @typedef {import("../../shared/types").RuleConf} RuleConf */
+/** @typedef {import("../../shared/types").Rule} Rule */
+/** @typedef {import("../../shared/types").Plugin} Plugin */
+/** @typedef {import("../../shared/types").Processor} Processor */
+/** @typedef {import("./config-dependency").DependentParser} DependentParser */
+/** @typedef {import("./config-dependency").DependentPlugin} DependentPlugin */
+/** @typedef {import("./override-tester")["OverrideTester"]} OverrideTester */
+
+/**
+ * @typedef {Object} ConfigArrayElement
+ * @property {string} name The name of this config element.
+ * @property {string} filePath The path to the source file of this config element.
+ * @property {InstanceType|null} criteria The tester for the `files` and `excludedFiles` of this config element.
+ * @property {Record|undefined} env The environment settings.
+ * @property {Record|undefined} globals The global variable settings.
+ * @property {IgnorePattern|undefined} ignorePattern The ignore patterns.
+ * @property {boolean|undefined} noInlineConfig The flag that disables directive comments.
+ * @property {DependentParser|undefined} parser The parser loader.
+ * @property {Object|undefined} parserOptions The parser options.
+ * @property {Record|undefined} plugins The plugin loaders.
+ * @property {string|undefined} processor The processor name to refer plugin's processor.
+ * @property {boolean|undefined} reportUnusedDisableDirectives The flag to report unused `eslint-disable` comments.
+ * @property {boolean|undefined} root The flag to express root.
+ * @property {Record|undefined} rules The rule settings
+ * @property {Object|undefined} settings The shared settings.
+ * @property {"config" | "ignore" | "implicit-processor"} type The element type.
+ */
+
+/**
+ * @typedef {Object} ConfigArrayInternalSlots
+ * @property {Map} cache The cache to extract configs.
+ * @property {ReadonlyMap|null} envMap The map from environment ID to environment definition.
+ * @property {ReadonlyMap|null} processorMap The map from processor ID to environment definition.
+ * @property {ReadonlyMap|null} ruleMap The map from rule ID to rule definition.
+ */
+
+/** @type {WeakMap} */
+const internalSlotsMap$2 = new class extends WeakMap {
+ get(key) {
+ let value = super.get(key);
+
+ if (!value) {
+ value = {
+ cache: new Map(),
+ envMap: null,
+ processorMap: null,
+ ruleMap: null
+ };
+ super.set(key, value);
+ }
+
+ return value;
+ }
+}();
+
+/**
+ * Get the indices which are matched to a given file.
+ * @param {ConfigArrayElement[]} elements The elements.
+ * @param {string} filePath The path to a target file.
+ * @returns {number[]} The indices.
+ */
+function getMatchedIndices(elements, filePath) {
+ const indices = [];
+
+ for (let i = elements.length - 1; i >= 0; --i) {
+ const element = elements[i];
+
+ if (!element.criteria || (filePath && element.criteria.test(filePath))) {
+ indices.push(i);
+ }
+ }
+
+ return indices;
+}
+
+/**
+ * Check if a value is a non-null object.
+ * @param {any} x The value to check.
+ * @returns {boolean} `true` if the value is a non-null object.
+ */
+function isNonNullObject(x) {
+ return typeof x === "object" && x !== null;
+}
+
+/**
+ * Merge two objects.
+ *
+ * Assign every property values of `y` to `x` if `x` doesn't have the property.
+ * If `x`'s property value is an object, it does recursive.
+ * @param {Object} target The destination to merge
+ * @param {Object|undefined} source The source to merge.
+ * @returns {void}
+ */
+function mergeWithoutOverwrite(target, source) {
+ if (!isNonNullObject(source)) {
+ return;
+ }
+
+ for (const key of Object.keys(source)) {
+ if (key === "__proto__") {
+ continue;
+ }
+
+ if (isNonNullObject(target[key])) {
+ mergeWithoutOverwrite(target[key], source[key]);
+ } else if (target[key] === void 0) {
+ if (isNonNullObject(source[key])) {
+ target[key] = Array.isArray(source[key]) ? [] : {};
+ mergeWithoutOverwrite(target[key], source[key]);
+ } else if (source[key] !== void 0) {
+ target[key] = source[key];
+ }
+ }
+ }
+}
+
+/**
+ * The error for plugin conflicts.
+ */
+class PluginConflictError extends Error {
+
+ /**
+ * Initialize this error object.
+ * @param {string} pluginId The plugin ID.
+ * @param {{filePath:string, importerName:string}[]} plugins The resolved plugins.
+ */
+ constructor(pluginId, plugins) {
+ super(`Plugin "${pluginId}" was conflicted between ${plugins.map(p => `"${p.importerName}"`).join(" and ")}.`);
+ this.messageTemplate = "plugin-conflict";
+ this.messageData = { pluginId, plugins };
+ }
+}
+
+/**
+ * Merge plugins.
+ * `target`'s definition is prior to `source`'s.
+ * @param {Record} target The destination to merge
+ * @param {Record|undefined} source The source to merge.
+ * @returns {void}
+ */
+function mergePlugins(target, source) {
+ if (!isNonNullObject(source)) {
+ return;
+ }
+
+ for (const key of Object.keys(source)) {
+ if (key === "__proto__") {
+ continue;
+ }
+ const targetValue = target[key];
+ const sourceValue = source[key];
+
+ // Adopt the plugin which was found at first.
+ if (targetValue === void 0) {
+ if (sourceValue.error) {
+ throw sourceValue.error;
+ }
+ target[key] = sourceValue;
+ } else if (sourceValue.filePath !== targetValue.filePath) {
+ throw new PluginConflictError(key, [
+ {
+ filePath: targetValue.filePath,
+ importerName: targetValue.importerName
+ },
+ {
+ filePath: sourceValue.filePath,
+ importerName: sourceValue.importerName
+ }
+ ]);
+ }
+ }
+}
+
+/**
+ * Merge rule configs.
+ * `target`'s definition is prior to `source`'s.
+ * @param {Record} target The destination to merge
+ * @param {Record|undefined} source The source to merge.
+ * @returns {void}
+ */
+function mergeRuleConfigs(target, source) {
+ if (!isNonNullObject(source)) {
+ return;
+ }
+
+ for (const key of Object.keys(source)) {
+ if (key === "__proto__") {
+ continue;
+ }
+ const targetDef = target[key];
+ const sourceDef = source[key];
+
+ // Adopt the rule config which was found at first.
+ if (targetDef === void 0) {
+ if (Array.isArray(sourceDef)) {
+ target[key] = [...sourceDef];
+ } else {
+ target[key] = [sourceDef];
+ }
+
+ /*
+ * If the first found rule config is severity only and the current rule
+ * config has options, merge the severity and the options.
+ */
+ } else if (
+ targetDef.length === 1 &&
+ Array.isArray(sourceDef) &&
+ sourceDef.length >= 2
+ ) {
+ targetDef.push(...sourceDef.slice(1));
+ }
+ }
+}
+
+/**
+ * Create the extracted config.
+ * @param {ConfigArray} instance The config elements.
+ * @param {number[]} indices The indices to use.
+ * @returns {ExtractedConfig} The extracted config.
+ */
+function createConfig(instance, indices) {
+ const config = new ExtractedConfig();
+ const ignorePatterns = [];
+
+ // Merge elements.
+ for (const index of indices) {
+ const element = instance[index];
+
+ // Adopt the parser which was found at first.
+ if (!config.parser && element.parser) {
+ if (element.parser.error) {
+ throw element.parser.error;
+ }
+ config.parser = element.parser;
+ }
+
+ // Adopt the processor which was found at first.
+ if (!config.processor && element.processor) {
+ config.processor = element.processor;
+ }
+
+ // Adopt the noInlineConfig which was found at first.
+ if (config.noInlineConfig === void 0 && element.noInlineConfig !== void 0) {
+ config.noInlineConfig = element.noInlineConfig;
+ config.configNameOfNoInlineConfig = element.name;
+ }
+
+ // Adopt the reportUnusedDisableDirectives which was found at first.
+ if (config.reportUnusedDisableDirectives === void 0 && element.reportUnusedDisableDirectives !== void 0) {
+ config.reportUnusedDisableDirectives = element.reportUnusedDisableDirectives;
+ }
+
+ // Collect ignorePatterns
+ if (element.ignorePattern) {
+ ignorePatterns.push(element.ignorePattern);
+ }
+
+ // Merge others.
+ mergeWithoutOverwrite(config.env, element.env);
+ mergeWithoutOverwrite(config.globals, element.globals);
+ mergeWithoutOverwrite(config.parserOptions, element.parserOptions);
+ mergeWithoutOverwrite(config.settings, element.settings);
+ mergePlugins(config.plugins, element.plugins);
+ mergeRuleConfigs(config.rules, element.rules);
+ }
+
+ // Create the predicate function for ignore patterns.
+ if (ignorePatterns.length > 0) {
+ config.ignores = IgnorePattern.createIgnore(ignorePatterns.reverse());
+ }
+
+ return config;
+}
+
+/**
+ * Collect definitions.
+ * @template T, U
+ * @param {string} pluginId The plugin ID for prefix.
+ * @param {Record} defs The definitions to collect.
+ * @param {Map} map The map to output.
+ * @param {function(T): U} [normalize] The normalize function for each value.
+ * @returns {void}
+ */
+function collect(pluginId, defs, map, normalize) {
+ if (defs) {
+ const prefix = pluginId && `${pluginId}/`;
+
+ for (const [key, value] of Object.entries(defs)) {
+ map.set(
+ `${prefix}${key}`,
+ normalize ? normalize(value) : value
+ );
+ }
+ }
+}
+
+/**
+ * Normalize a rule definition.
+ * @param {Function|Rule} rule The rule definition to normalize.
+ * @returns {Rule} The normalized rule definition.
+ */
+function normalizePluginRule(rule) {
+ return typeof rule === "function" ? { create: rule } : rule;
+}
+
+/**
+ * Delete the mutation methods from a given map.
+ * @param {Map} map The map object to delete.
+ * @returns {void}
+ */
+function deleteMutationMethods(map) {
+ Object.defineProperties(map, {
+ clear: { configurable: true, value: void 0 },
+ delete: { configurable: true, value: void 0 },
+ set: { configurable: true, value: void 0 }
+ });
+}
+
+/**
+ * Create `envMap`, `processorMap`, `ruleMap` with the plugins in the config array.
+ * @param {ConfigArrayElement[]} elements The config elements.
+ * @param {ConfigArrayInternalSlots} slots The internal slots.
+ * @returns {void}
+ */
+function initPluginMemberMaps(elements, slots) {
+ const processed = new Set();
+
+ slots.envMap = new Map();
+ slots.processorMap = new Map();
+ slots.ruleMap = new Map();
+
+ for (const element of elements) {
+ if (!element.plugins) {
+ continue;
+ }
+
+ for (const [pluginId, value] of Object.entries(element.plugins)) {
+ const plugin = value.definition;
+
+ if (!plugin || processed.has(pluginId)) {
+ continue;
+ }
+ processed.add(pluginId);
+
+ collect(pluginId, plugin.environments, slots.envMap);
+ collect(pluginId, plugin.processors, slots.processorMap);
+ collect(pluginId, plugin.rules, slots.ruleMap, normalizePluginRule);
+ }
+ }
+
+ deleteMutationMethods(slots.envMap);
+ deleteMutationMethods(slots.processorMap);
+ deleteMutationMethods(slots.ruleMap);
+}
+
+/**
+ * Create `envMap`, `processorMap`, `ruleMap` with the plugins in the config array.
+ * @param {ConfigArray} instance The config elements.
+ * @returns {ConfigArrayInternalSlots} The extracted config.
+ */
+function ensurePluginMemberMaps(instance) {
+ const slots = internalSlotsMap$2.get(instance);
+
+ if (!slots.ruleMap) {
+ initPluginMemberMaps(instance, slots);
+ }
+
+ return slots;
+}
+
+//------------------------------------------------------------------------------
+// Public Interface
+//------------------------------------------------------------------------------
+
+/**
+ * The Config Array.
+ *
+ * `ConfigArray` instance contains all settings, parsers, and plugins.
+ * You need to call `ConfigArray#extractConfig(filePath)` method in order to
+ * extract, merge and get only the config data which is related to an arbitrary
+ * file.
+ * @extends {Array}
+ */
+class ConfigArray extends Array {
+
+ /**
+ * Get the plugin environments.
+ * The returned map cannot be mutated.
+ * @type {ReadonlyMap} The plugin environments.
+ */
+ get pluginEnvironments() {
+ return ensurePluginMemberMaps(this).envMap;
+ }
+
+ /**
+ * Get the plugin processors.
+ * The returned map cannot be mutated.
+ * @type {ReadonlyMap} The plugin processors.
+ */
+ get pluginProcessors() {
+ return ensurePluginMemberMaps(this).processorMap;
+ }
+
+ /**
+ * Get the plugin rules.
+ * The returned map cannot be mutated.
+ * @returns {ReadonlyMap} The plugin rules.
+ */
+ get pluginRules() {
+ return ensurePluginMemberMaps(this).ruleMap;
+ }
+
+ /**
+ * Check if this config has `root` flag.
+ * @returns {boolean} `true` if this config array is root.
+ */
+ isRoot() {
+ for (let i = this.length - 1; i >= 0; --i) {
+ const root = this[i].root;
+
+ if (typeof root === "boolean") {
+ return root;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Extract the config data which is related to a given file.
+ * @param {string} filePath The absolute path to the target file.
+ * @returns {ExtractedConfig} The extracted config data.
+ */
+ extractConfig(filePath) {
+ const { cache } = internalSlotsMap$2.get(this);
+ const indices = getMatchedIndices(this, filePath);
+ const cacheKey = indices.join(",");
+
+ if (!cache.has(cacheKey)) {
+ cache.set(cacheKey, createConfig(this, indices));
+ }
+
+ return cache.get(cacheKey);
+ }
+
+ /**
+ * Check if a given path is an additional lint target.
+ * @param {string} filePath The absolute path to the target file.
+ * @returns {boolean} `true` if the file is an additional lint target.
+ */
+ isAdditionalTargetPath(filePath) {
+ for (const { criteria, type } of this) {
+ if (
+ type === "config" &&
+ criteria &&
+ !criteria.endsWithWildcard &&
+ criteria.test(filePath)
+ ) {
+ return true;
+ }
+ }
+ return false;
+ }
+}
+
+/**
+ * Get the used extracted configs.
+ * CLIEngine will use this method to collect used deprecated rules.
+ * @param {ConfigArray} instance The config array object to get.
+ * @returns {ExtractedConfig[]} The used extracted configs.
+ * @private
+ */
+function getUsedExtractedConfigs(instance) {
+ const { cache } = internalSlotsMap$2.get(instance);
+
+ return Array.from(cache.values());
+}
+
+/**
+ * @fileoverview `ConfigDependency` class.
+ *
+ * `ConfigDependency` class expresses a loaded parser or plugin.
+ *
+ * If the parser or plugin was loaded successfully, it has `definition` property
+ * and `filePath` property. Otherwise, it has `error` property.
+ *
+ * When `JSON.stringify()` converted a `ConfigDependency` object to a JSON, it
+ * omits `definition` property.
+ *
+ * `ConfigArrayFactory` creates `ConfigDependency` objects when it loads parsers
+ * or plugins.
+ *
+ * @author Toru Nagashima
+ */
+
+/**
+ * The class is to store parsers or plugins.
+ * This class hides the loaded object from `JSON.stringify()` and `console.log`.
+ * @template T
+ */
+class ConfigDependency {
+
+ /**
+ * Initialize this instance.
+ * @param {Object} data The dependency data.
+ * @param {T} [data.definition] The dependency if the loading succeeded.
+ * @param {Error} [data.error] The error object if the loading failed.
+ * @param {string} [data.filePath] The actual path to the dependency if the loading succeeded.
+ * @param {string} data.id The ID of this dependency.
+ * @param {string} data.importerName The name of the config file which loads this dependency.
+ * @param {string} data.importerPath The path to the config file which loads this dependency.
+ */
+ constructor({
+ definition = null,
+ error = null,
+ filePath = null,
+ id,
+ importerName,
+ importerPath
+ }) {
+
+ /**
+ * The loaded dependency if the loading succeeded.
+ * @type {T|null}
+ */
+ this.definition = definition;
+
+ /**
+ * The error object if the loading failed.
+ * @type {Error|null}
+ */
+ this.error = error;
+
+ /**
+ * The loaded dependency if the loading succeeded.
+ * @type {string|null}
+ */
+ this.filePath = filePath;
+
+ /**
+ * The ID of this dependency.
+ * @type {string}
+ */
+ this.id = id;
+
+ /**
+ * The name of the config file which loads this dependency.
+ * @type {string}
+ */
+ this.importerName = importerName;
+
+ /**
+ * The path to the config file which loads this dependency.
+ * @type {string}
+ */
+ this.importerPath = importerPath;
+ }
+
+ // eslint-disable-next-line jsdoc/require-description
+ /**
+ * @returns {Object} a JSON compatible object.
+ */
+ toJSON() {
+ const obj = this[util__default["default"].inspect.custom]();
+
+ // Display `error.message` (`Error#message` is unenumerable).
+ if (obj.error instanceof Error) {
+ obj.error = { ...obj.error, message: obj.error.message };
+ }
+
+ return obj;
+ }
+
+ // eslint-disable-next-line jsdoc/require-description
+ /**
+ * @returns {Object} an object to display by `console.log()`.
+ */
+ [util__default["default"].inspect.custom]() {
+ const {
+ definition: _ignore, // eslint-disable-line no-unused-vars
+ ...obj
+ } = this;
+
+ return obj;
+ }
+}
+
+/**
+ * @fileoverview `OverrideTester` class.
+ *
+ * `OverrideTester` class handles `files` property and `excludedFiles` property
+ * of `overrides` config.
+ *
+ * It provides one method.
+ *
+ * - `test(filePath)`
+ * Test if a file path matches the pair of `files` property and
+ * `excludedFiles` property. The `filePath` argument must be an absolute
+ * path.
+ *
+ * `ConfigArrayFactory` creates `OverrideTester` objects when it processes
+ * `overrides` properties.
+ *
+ * @author Toru Nagashima
+ */
+
+const { Minimatch } = minimatch__default["default"];
+
+const minimatchOpts = { dot: true, matchBase: true };
+
+/**
+ * @typedef {Object} Pattern
+ * @property {InstanceType[] | null} includes The positive matchers.
+ * @property {InstanceType[] | null} excludes The negative matchers.
+ */
+
+/**
+ * Normalize a given pattern to an array.
+ * @param {string|string[]|undefined} patterns A glob pattern or an array of glob patterns.
+ * @returns {string[]|null} Normalized patterns.
+ * @private
+ */
+function normalizePatterns(patterns) {
+ if (Array.isArray(patterns)) {
+ return patterns.filter(Boolean);
+ }
+ if (typeof patterns === "string" && patterns) {
+ return [patterns];
+ }
+ return [];
+}
+
+/**
+ * Create the matchers of given patterns.
+ * @param {string[]} patterns The patterns.
+ * @returns {InstanceType[] | null} The matchers.
+ */
+function toMatcher(patterns) {
+ if (patterns.length === 0) {
+ return null;
+ }
+ return patterns.map(pattern => {
+ if (/^\.[/\\]/u.test(pattern)) {
+ return new Minimatch(
+ pattern.slice(2),
+
+ // `./*.js` should not match with `subdir/foo.js`
+ { ...minimatchOpts, matchBase: false }
+ );
+ }
+ return new Minimatch(pattern, minimatchOpts);
+ });
+}
+
+/**
+ * Convert a given matcher to string.
+ * @param {Pattern} matchers The matchers.
+ * @returns {string} The string expression of the matcher.
+ */
+function patternToJson({ includes, excludes }) {
+ return {
+ includes: includes && includes.map(m => m.pattern),
+ excludes: excludes && excludes.map(m => m.pattern)
+ };
+}
+
+/**
+ * The class to test given paths are matched by the patterns.
+ */
+class OverrideTester {
+
+ /**
+ * Create a tester with given criteria.
+ * If there are no criteria, returns `null`.
+ * @param {string|string[]} files The glob patterns for included files.
+ * @param {string|string[]} excludedFiles The glob patterns for excluded files.
+ * @param {string} basePath The path to the base directory to test paths.
+ * @returns {OverrideTester|null} The created instance or `null`.
+ */
+ static create(files, excludedFiles, basePath) {
+ const includePatterns = normalizePatterns(files);
+ const excludePatterns = normalizePatterns(excludedFiles);
+ let endsWithWildcard = false;
+
+ if (includePatterns.length === 0) {
+ return null;
+ }
+
+ // Rejects absolute paths or relative paths to parents.
+ for (const pattern of includePatterns) {
+ if (path__default["default"].isAbsolute(pattern) || pattern.includes("..")) {
+ throw new Error(`Invalid override pattern (expected relative path not containing '..'): ${pattern}`);
+ }
+ if (pattern.endsWith("*")) {
+ endsWithWildcard = true;
+ }
+ }
+ for (const pattern of excludePatterns) {
+ if (path__default["default"].isAbsolute(pattern) || pattern.includes("..")) {
+ throw new Error(`Invalid override pattern (expected relative path not containing '..'): ${pattern}`);
+ }
+ }
+
+ const includes = toMatcher(includePatterns);
+ const excludes = toMatcher(excludePatterns);
+
+ return new OverrideTester(
+ [{ includes, excludes }],
+ basePath,
+ endsWithWildcard
+ );
+ }
+
+ /**
+ * Combine two testers by logical and.
+ * If either of the testers was `null`, returns the other tester.
+ * The `basePath` property of the two must be the same value.
+ * @param {OverrideTester|null} a A tester.
+ * @param {OverrideTester|null} b Another tester.
+ * @returns {OverrideTester|null} Combined tester.
+ */
+ static and(a, b) {
+ if (!b) {
+ return a && new OverrideTester(
+ a.patterns,
+ a.basePath,
+ a.endsWithWildcard
+ );
+ }
+ if (!a) {
+ return new OverrideTester(
+ b.patterns,
+ b.basePath,
+ b.endsWithWildcard
+ );
+ }
+
+ assert__default["default"].strictEqual(a.basePath, b.basePath);
+ return new OverrideTester(
+ a.patterns.concat(b.patterns),
+ a.basePath,
+ a.endsWithWildcard || b.endsWithWildcard
+ );
+ }
+
+ /**
+ * Initialize this instance.
+ * @param {Pattern[]} patterns The matchers.
+ * @param {string} basePath The base path.
+ * @param {boolean} endsWithWildcard If `true` then a pattern ends with `*`.
+ */
+ constructor(patterns, basePath, endsWithWildcard = false) {
+
+ /** @type {Pattern[]} */
+ this.patterns = patterns;
+
+ /** @type {string} */
+ this.basePath = basePath;
+
+ /** @type {boolean} */
+ this.endsWithWildcard = endsWithWildcard;
+ }
+
+ /**
+ * Test if a given path is matched or not.
+ * @param {string} filePath The absolute path to the target file.
+ * @returns {boolean} `true` if the path was matched.
+ */
+ test(filePath) {
+ if (typeof filePath !== "string" || !path__default["default"].isAbsolute(filePath)) {
+ throw new Error(`'filePath' should be an absolute path, but got ${filePath}.`);
+ }
+ const relativePath = path__default["default"].relative(this.basePath, filePath);
+
+ return this.patterns.every(({ includes, excludes }) => (
+ (!includes || includes.some(m => m.match(relativePath))) &&
+ (!excludes || !excludes.some(m => m.match(relativePath)))
+ ));
+ }
+
+ // eslint-disable-next-line jsdoc/require-description
+ /**
+ * @returns {Object} a JSON compatible object.
+ */
+ toJSON() {
+ if (this.patterns.length === 1) {
+ return {
+ ...patternToJson(this.patterns[0]),
+ basePath: this.basePath
+ };
+ }
+ return {
+ AND: this.patterns.map(patternToJson),
+ basePath: this.basePath
+ };
+ }
+
+ // eslint-disable-next-line jsdoc/require-description
+ /**
+ * @returns {Object} an object to display by `console.log()`.
+ */
+ [util__default["default"].inspect.custom]() {
+ return this.toJSON();
+ }
+}
+
+/**
+ * @fileoverview `ConfigArray` class.
+ * @author Toru Nagashima
+ */
+
+/**
+ * @fileoverview Config file operations. This file must be usable in the browser,
+ * so no Node-specific code can be here.
+ * @author Nicholas C. Zakas
+ */
+
+//------------------------------------------------------------------------------
+// Private
+//------------------------------------------------------------------------------
+
+const RULE_SEVERITY_STRINGS = ["off", "warn", "error"],
+ RULE_SEVERITY = RULE_SEVERITY_STRINGS.reduce((map, value, index) => {
+ map[value] = index;
+ return map;
+ }, {}),
+ VALID_SEVERITIES = [0, 1, 2, "off", "warn", "error"];
+
+//------------------------------------------------------------------------------
+// Public Interface
+//------------------------------------------------------------------------------
+
+/**
+ * Normalizes the severity value of a rule's configuration to a number
+ * @param {(number|string|[number, ...*]|[string, ...*])} ruleConfig A rule's configuration value, generally
+ * received from the user. A valid config value is either 0, 1, 2, the string "off" (treated the same as 0),
+ * the string "warn" (treated the same as 1), the string "error" (treated the same as 2), or an array
+ * whose first element is one of the above values. Strings are matched case-insensitively.
+ * @returns {(0|1|2)} The numeric severity value if the config value was valid, otherwise 0.
+ */
+function getRuleSeverity(ruleConfig) {
+ const severityValue = Array.isArray(ruleConfig) ? ruleConfig[0] : ruleConfig;
+
+ if (severityValue === 0 || severityValue === 1 || severityValue === 2) {
+ return severityValue;
+ }
+
+ if (typeof severityValue === "string") {
+ return RULE_SEVERITY[severityValue.toLowerCase()] || 0;
+ }
+
+ return 0;
+}
+
+/**
+ * Converts old-style severity settings (0, 1, 2) into new-style
+ * severity settings (off, warn, error) for all rules. Assumption is that severity
+ * values have already been validated as correct.
+ * @param {Object} config The config object to normalize.
+ * @returns {void}
+ */
+function normalizeToStrings(config) {
+
+ if (config.rules) {
+ Object.keys(config.rules).forEach(ruleId => {
+ const ruleConfig = config.rules[ruleId];
+
+ if (typeof ruleConfig === "number") {
+ config.rules[ruleId] = RULE_SEVERITY_STRINGS[ruleConfig] || RULE_SEVERITY_STRINGS[0];
+ } else if (Array.isArray(ruleConfig) && typeof ruleConfig[0] === "number") {
+ ruleConfig[0] = RULE_SEVERITY_STRINGS[ruleConfig[0]] || RULE_SEVERITY_STRINGS[0];
+ }
+ });
+ }
+}
+
+/**
+ * Determines if the severity for the given rule configuration represents an error.
+ * @param {int|string|Array} ruleConfig The configuration for an individual rule.
+ * @returns {boolean} True if the rule represents an error, false if not.
+ */
+function isErrorSeverity(ruleConfig) {
+ return getRuleSeverity(ruleConfig) === 2;
+}
+
+/**
+ * Checks whether a given config has valid severity or not.
+ * @param {number|string|Array} ruleConfig The configuration for an individual rule.
+ * @returns {boolean} `true` if the configuration has valid severity.
+ */
+function isValidSeverity(ruleConfig) {
+ let severity = Array.isArray(ruleConfig) ? ruleConfig[0] : ruleConfig;
+
+ if (typeof severity === "string") {
+ severity = severity.toLowerCase();
+ }
+ return VALID_SEVERITIES.indexOf(severity) !== -1;
+}
+
+/**
+ * Checks whether every rule of a given config has valid severity or not.
+ * @param {Object} config The configuration for rules.
+ * @returns {boolean} `true` if the configuration has valid severity.
+ */
+function isEverySeverityValid(config) {
+ return Object.keys(config).every(ruleId => isValidSeverity(config[ruleId]));
+}
+
+/**
+ * Normalizes a value for a global in a config
+ * @param {(boolean|string|null)} configuredValue The value given for a global in configuration or in
+ * a global directive comment
+ * @returns {("readable"|"writeable"|"off")} The value normalized as a string
+ * @throws Error if global value is invalid
+ */
+function normalizeConfigGlobal(configuredValue) {
+ switch (configuredValue) {
+ case "off":
+ return "off";
+
+ case true:
+ case "true":
+ case "writeable":
+ case "writable":
+ return "writable";
+
+ case null:
+ case false:
+ case "false":
+ case "readable":
+ case "readonly":
+ return "readonly";
+
+ default:
+ throw new Error(`'${configuredValue}' is not a valid configuration for a global (use 'readonly', 'writable', or 'off')`);
+ }
+}
+
+var ConfigOps = {
+ __proto__: null,
+ getRuleSeverity: getRuleSeverity,
+ normalizeToStrings: normalizeToStrings,
+ isErrorSeverity: isErrorSeverity,
+ isValidSeverity: isValidSeverity,
+ isEverySeverityValid: isEverySeverityValid,
+ normalizeConfigGlobal: normalizeConfigGlobal
+};
+
+/**
+ * @fileoverview Provide the function that emits deprecation warnings.
+ * @author Toru Nagashima
+ */
+
+//------------------------------------------------------------------------------
+// Private
+//------------------------------------------------------------------------------
+
+// Defitions for deprecation warnings.
+const deprecationWarningMessages = {
+ ESLINT_LEGACY_ECMAFEATURES:
+ "The 'ecmaFeatures' config file property is deprecated and has no effect.",
+ ESLINT_PERSONAL_CONFIG_LOAD:
+ "'~/.eslintrc.*' config files have been deprecated. " +
+ "Please use a config file per project or the '--config' option.",
+ ESLINT_PERSONAL_CONFIG_SUPPRESS:
+ "'~/.eslintrc.*' config files have been deprecated. " +
+ "Please remove it or add 'root:true' to the config files in your " +
+ "projects in order to avoid loading '~/.eslintrc.*' accidentally."
+};
+
+const sourceFileErrorCache = new Set();
+
+/**
+ * Emits a deprecation warning containing a given filepath. A new deprecation warning is emitted
+ * for each unique file path, but repeated invocations with the same file path have no effect.
+ * No warnings are emitted if the `--no-deprecation` or `--no-warnings` Node runtime flags are active.
+ * @param {string} source The name of the configuration source to report the warning for.
+ * @param {string} errorCode The warning message to show.
+ * @returns {void}
+ */
+function emitDeprecationWarning(source, errorCode) {
+ const cacheKey = JSON.stringify({ source, errorCode });
+
+ if (sourceFileErrorCache.has(cacheKey)) {
+ return;
+ }
+ sourceFileErrorCache.add(cacheKey);
+
+ const rel = path__default["default"].relative(process.cwd(), source);
+ const message = deprecationWarningMessages[errorCode];
+
+ process.emitWarning(
+ `${message} (found in "${rel}")`,
+ "DeprecationWarning",
+ errorCode
+ );
+}
+
+/**
+ * @fileoverview The instance of Ajv validator.
+ * @author Evgeny Poberezkin
+ */
+
+//-----------------------------------------------------------------------------
+// Helpers
+//-----------------------------------------------------------------------------
+
+/*
+ * Copied from ajv/lib/refs/json-schema-draft-04.json
+ * The MIT License (MIT)
+ * Copyright (c) 2015-2017 Evgeny Poberezkin
+ */
+const metaSchema = {
+ id: "http://json-schema.org/draft-04/schema#",
+ $schema: "http://json-schema.org/draft-04/schema#",
+ description: "Core schema meta-schema",
+ definitions: {
+ schemaArray: {
+ type: "array",
+ minItems: 1,
+ items: { $ref: "#" }
+ },
+ positiveInteger: {
+ type: "integer",
+ minimum: 0
+ },
+ positiveIntegerDefault0: {
+ allOf: [{ $ref: "#/definitions/positiveInteger" }, { default: 0 }]
+ },
+ simpleTypes: {
+ enum: ["array", "boolean", "integer", "null", "number", "object", "string"]
+ },
+ stringArray: {
+ type: "array",
+ items: { type: "string" },
+ minItems: 1,
+ uniqueItems: true
+ }
+ },
+ type: "object",
+ properties: {
+ id: {
+ type: "string"
+ },
+ $schema: {
+ type: "string"
+ },
+ title: {
+ type: "string"
+ },
+ description: {
+ type: "string"
+ },
+ default: { },
+ multipleOf: {
+ type: "number",
+ minimum: 0,
+ exclusiveMinimum: true
+ },
+ maximum: {
+ type: "number"
+ },
+ exclusiveMaximum: {
+ type: "boolean",
+ default: false
+ },
+ minimum: {
+ type: "number"
+ },
+ exclusiveMinimum: {
+ type: "boolean",
+ default: false
+ },
+ maxLength: { $ref: "#/definitions/positiveInteger" },
+ minLength: { $ref: "#/definitions/positiveIntegerDefault0" },
+ pattern: {
+ type: "string",
+ format: "regex"
+ },
+ additionalItems: {
+ anyOf: [
+ { type: "boolean" },
+ { $ref: "#" }
+ ],
+ default: { }
+ },
+ items: {
+ anyOf: [
+ { $ref: "#" },
+ { $ref: "#/definitions/schemaArray" }
+ ],
+ default: { }
+ },
+ maxItems: { $ref: "#/definitions/positiveInteger" },
+ minItems: { $ref: "#/definitions/positiveIntegerDefault0" },
+ uniqueItems: {
+ type: "boolean",
+ default: false
+ },
+ maxProperties: { $ref: "#/definitions/positiveInteger" },
+ minProperties: { $ref: "#/definitions/positiveIntegerDefault0" },
+ required: { $ref: "#/definitions/stringArray" },
+ additionalProperties: {
+ anyOf: [
+ { type: "boolean" },
+ { $ref: "#" }
+ ],
+ default: { }
+ },
+ definitions: {
+ type: "object",
+ additionalProperties: { $ref: "#" },
+ default: { }
+ },
+ properties: {
+ type: "object",
+ additionalProperties: { $ref: "#" },
+ default: { }
+ },
+ patternProperties: {
+ type: "object",
+ additionalProperties: { $ref: "#" },
+ default: { }
+ },
+ dependencies: {
+ type: "object",
+ additionalProperties: {
+ anyOf: [
+ { $ref: "#" },
+ { $ref: "#/definitions/stringArray" }
+ ]
+ }
+ },
+ enum: {
+ type: "array",
+ minItems: 1,
+ uniqueItems: true
+ },
+ type: {
+ anyOf: [
+ { $ref: "#/definitions/simpleTypes" },
+ {
+ type: "array",
+ items: { $ref: "#/definitions/simpleTypes" },
+ minItems: 1,
+ uniqueItems: true
+ }
+ ]
+ },
+ format: { type: "string" },
+ allOf: { $ref: "#/definitions/schemaArray" },
+ anyOf: { $ref: "#/definitions/schemaArray" },
+ oneOf: { $ref: "#/definitions/schemaArray" },
+ not: { $ref: "#" }
+ },
+ dependencies: {
+ exclusiveMaximum: ["maximum"],
+ exclusiveMinimum: ["minimum"]
+ },
+ default: { }
+};
+
+//------------------------------------------------------------------------------
+// Public Interface
+//------------------------------------------------------------------------------
+
+var ajvOrig = (additionalOptions = {}) => {
+ const ajv = new Ajv__default["default"]({
+ meta: false,
+ useDefaults: true,
+ validateSchema: false,
+ missingRefs: "ignore",
+ verbose: true,
+ schemaId: "auto",
+ ...additionalOptions
+ });
+
+ ajv.addMetaSchema(metaSchema);
+ // eslint-disable-next-line no-underscore-dangle
+ ajv._opts.defaultMeta = metaSchema.id;
+
+ return ajv;
+};
+
+/**
+ * @fileoverview Defines a schema for configs.
+ * @author Sylvan Mably
+ */
+
+const baseConfigProperties = {
+ $schema: { type: "string" },
+ env: { type: "object" },
+ extends: { $ref: "#/definitions/stringOrStrings" },
+ globals: { type: "object" },
+ overrides: {
+ type: "array",
+ items: { $ref: "#/definitions/overrideConfig" },
+ additionalItems: false
+ },
+ parser: { type: ["string", "null"] },
+ parserOptions: { type: "object" },
+ plugins: { type: "array" },
+ processor: { type: "string" },
+ rules: { type: "object" },
+ settings: { type: "object" },
+ noInlineConfig: { type: "boolean" },
+ reportUnusedDisableDirectives: { type: "boolean" },
+
+ ecmaFeatures: { type: "object" } // deprecated; logs a warning when used
+};
+
+const configSchema = {
+ definitions: {
+ stringOrStrings: {
+ oneOf: [
+ { type: "string" },
+ {
+ type: "array",
+ items: { type: "string" },
+ additionalItems: false
+ }
+ ]
+ },
+ stringOrStringsRequired: {
+ oneOf: [
+ { type: "string" },
+ {
+ type: "array",
+ items: { type: "string" },
+ additionalItems: false,
+ minItems: 1
+ }
+ ]
+ },
+
+ // Config at top-level.
+ objectConfig: {
+ type: "object",
+ properties: {
+ root: { type: "boolean" },
+ ignorePatterns: { $ref: "#/definitions/stringOrStrings" },
+ ...baseConfigProperties
+ },
+ additionalProperties: false
+ },
+
+ // Config in `overrides`.
+ overrideConfig: {
+ type: "object",
+ properties: {
+ excludedFiles: { $ref: "#/definitions/stringOrStrings" },
+ files: { $ref: "#/definitions/stringOrStringsRequired" },
+ ...baseConfigProperties
+ },
+ required: ["files"],
+ additionalProperties: false
+ }
+ },
+
+ $ref: "#/definitions/objectConfig"
+};
+
+/**
+ * @fileoverview Defines environment settings and globals.
+ * @author Elan Shanker
+ */
+
+//------------------------------------------------------------------------------
+// Helpers
+//------------------------------------------------------------------------------
+
+/**
+ * Get the object that has difference.
+ * @param {Record} current The newer object.
+ * @param {Record} prev The older object.
+ * @returns {Record} The difference object.
+ */
+function getDiff(current, prev) {
+ const retv = {};
+
+ for (const [key, value] of Object.entries(current)) {
+ if (!Object.hasOwnProperty.call(prev, key)) {
+ retv[key] = value;
+ }
+ }
+
+ return retv;
+}
+
+const newGlobals2015 = getDiff(globals__default["default"].es2015, globals__default["default"].es5); // 19 variables such as Promise, Map, ...
+const newGlobals2017 = {
+ Atomics: false,
+ SharedArrayBuffer: false
+};
+const newGlobals2020 = {
+ BigInt: false,
+ BigInt64Array: false,
+ BigUint64Array: false,
+ globalThis: false
+};
+
+const newGlobals2021 = {
+ AggregateError: false,
+ FinalizationRegistry: false,
+ WeakRef: false
+};
+
+//------------------------------------------------------------------------------
+// Public Interface
+//------------------------------------------------------------------------------
+
+/** @type {Map} */
+var environments = new Map(Object.entries({
+
+ // Language
+ builtin: {
+ globals: globals__default["default"].es5
+ },
+ es6: {
+ globals: newGlobals2015,
+ parserOptions: {
+ ecmaVersion: 6
+ }
+ },
+ es2015: {
+ globals: newGlobals2015,
+ parserOptions: {
+ ecmaVersion: 6
+ }
+ },
+ es2016: {
+ globals: newGlobals2015,
+ parserOptions: {
+ ecmaVersion: 7
+ }
+ },
+ es2017: {
+ globals: { ...newGlobals2015, ...newGlobals2017 },
+ parserOptions: {
+ ecmaVersion: 8
+ }
+ },
+ es2018: {
+ globals: { ...newGlobals2015, ...newGlobals2017 },
+ parserOptions: {
+ ecmaVersion: 9
+ }
+ },
+ es2019: {
+ globals: { ...newGlobals2015, ...newGlobals2017 },
+ parserOptions: {
+ ecmaVersion: 10
+ }
+ },
+ es2020: {
+ globals: { ...newGlobals2015, ...newGlobals2017, ...newGlobals2020 },
+ parserOptions: {
+ ecmaVersion: 11
+ }
+ },
+ es2021: {
+ globals: { ...newGlobals2015, ...newGlobals2017, ...newGlobals2020, ...newGlobals2021 },
+ parserOptions: {
+ ecmaVersion: 12
+ }
+ },
+ es2022: {
+ globals: { ...newGlobals2015, ...newGlobals2017, ...newGlobals2020, ...newGlobals2021 },
+ parserOptions: {
+ ecmaVersion: 13
+ }
+ },
+ es2023: {
+ globals: { ...newGlobals2015, ...newGlobals2017, ...newGlobals2020, ...newGlobals2021 },
+ parserOptions: {
+ ecmaVersion: 14
+ }
+ },
+ es2024: {
+ globals: { ...newGlobals2015, ...newGlobals2017, ...newGlobals2020, ...newGlobals2021 },
+ parserOptions: {
+ ecmaVersion: 15
+ }
+ },
+
+ // Platforms
+ browser: {
+ globals: globals__default["default"].browser
+ },
+ node: {
+ globals: globals__default["default"].node,
+ parserOptions: {
+ ecmaFeatures: {
+ globalReturn: true
+ }
+ }
+ },
+ "shared-node-browser": {
+ globals: globals__default["default"]["shared-node-browser"]
+ },
+ worker: {
+ globals: globals__default["default"].worker
+ },
+ serviceworker: {
+ globals: globals__default["default"].serviceworker
+ },
+
+ // Frameworks
+ commonjs: {
+ globals: globals__default["default"].commonjs,
+ parserOptions: {
+ ecmaFeatures: {
+ globalReturn: true
+ }
+ }
+ },
+ amd: {
+ globals: globals__default["default"].amd
+ },
+ mocha: {
+ globals: globals__default["default"].mocha
+ },
+ jasmine: {
+ globals: globals__default["default"].jasmine
+ },
+ jest: {
+ globals: globals__default["default"].jest
+ },
+ phantomjs: {
+ globals: globals__default["default"].phantomjs
+ },
+ jquery: {
+ globals: globals__default["default"].jquery
+ },
+ qunit: {
+ globals: globals__default["default"].qunit
+ },
+ prototypejs: {
+ globals: globals__default["default"].prototypejs
+ },
+ shelljs: {
+ globals: globals__default["default"].shelljs
+ },
+ meteor: {
+ globals: globals__default["default"].meteor
+ },
+ mongo: {
+ globals: globals__default["default"].mongo
+ },
+ protractor: {
+ globals: globals__default["default"].protractor
+ },
+ applescript: {
+ globals: globals__default["default"].applescript
+ },
+ nashorn: {
+ globals: globals__default["default"].nashorn
+ },
+ atomtest: {
+ globals: globals__default["default"].atomtest
+ },
+ embertest: {
+ globals: globals__default["default"].embertest
+ },
+ webextensions: {
+ globals: globals__default["default"].webextensions
+ },
+ greasemonkey: {
+ globals: globals__default["default"].greasemonkey
+ }
+}));
+
+/**
+ * @fileoverview Validates configs.
+ * @author Brandon Mills
+ */
+
+const ajv = ajvOrig();
+
+const ruleValidators = new WeakMap();
+const noop = Function.prototype;
+
+//------------------------------------------------------------------------------
+// Private
+//------------------------------------------------------------------------------
+let validateSchema;
+const severityMap = {
+ error: 2,
+ warn: 1,
+ off: 0
+};
+
+const validated = new WeakSet();
+
+//-----------------------------------------------------------------------------
+// Exports
+//-----------------------------------------------------------------------------
+
+class ConfigValidator {
+ constructor({ builtInRules = new Map() } = {}) {
+ this.builtInRules = builtInRules;
+ }
+
+ /**
+ * Gets a complete options schema for a rule.
+ * @param {{create: Function, schema: (Array|null)}} rule A new-style rule object
+ * @returns {Object} JSON Schema for the rule's options.
+ */
+ getRuleOptionsSchema(rule) {
+ if (!rule) {
+ return null;
+ }
+
+ const schema = rule.schema || rule.meta && rule.meta.schema;
+
+ // Given a tuple of schemas, insert warning level at the beginning
+ if (Array.isArray(schema)) {
+ if (schema.length) {
+ return {
+ type: "array",
+ items: schema,
+ minItems: 0,
+ maxItems: schema.length
+ };
+ }
+ return {
+ type: "array",
+ minItems: 0,
+ maxItems: 0
+ };
+
+ }
+
+ // Given a full schema, leave it alone
+ return schema || null;
+ }
+
+ /**
+ * Validates a rule's severity and returns the severity value. Throws an error if the severity is invalid.
+ * @param {options} options The given options for the rule.
+ * @returns {number|string} The rule's severity value
+ */
+ validateRuleSeverity(options) {
+ const severity = Array.isArray(options) ? options[0] : options;
+ const normSeverity = typeof severity === "string" ? severityMap[severity.toLowerCase()] : severity;
+
+ if (normSeverity === 0 || normSeverity === 1 || normSeverity === 2) {
+ return normSeverity;
+ }
+
+ throw new Error(`\tSeverity should be one of the following: 0 = off, 1 = warn, 2 = error (you passed '${util__default["default"].inspect(severity).replace(/'/gu, "\"").replace(/\n/gu, "")}').\n`);
+
+ }
+
+ /**
+ * Validates the non-severity options passed to a rule, based on its schema.
+ * @param {{create: Function}} rule The rule to validate
+ * @param {Array} localOptions The options for the rule, excluding severity
+ * @returns {void}
+ */
+ validateRuleSchema(rule, localOptions) {
+ if (!ruleValidators.has(rule)) {
+ const schema = this.getRuleOptionsSchema(rule);
+
+ if (schema) {
+ ruleValidators.set(rule, ajv.compile(schema));
+ }
+ }
+
+ const validateRule = ruleValidators.get(rule);
+
+ if (validateRule) {
+ validateRule(localOptions);
+ if (validateRule.errors) {
+ throw new Error(validateRule.errors.map(
+ error => `\tValue ${JSON.stringify(error.data)} ${error.message}.\n`
+ ).join(""));
+ }
+ }
+ }
+
+ /**
+ * Validates a rule's options against its schema.
+ * @param {{create: Function}|null} rule The rule that the config is being validated for
+ * @param {string} ruleId The rule's unique name.
+ * @param {Array|number} options The given options for the rule.
+ * @param {string|null} source The name of the configuration source to report in any errors. If null or undefined,
+ * no source is prepended to the message.
+ * @returns {void}
+ */
+ validateRuleOptions(rule, ruleId, options, source = null) {
+ try {
+ const severity = this.validateRuleSeverity(options);
+
+ if (severity !== 0) {
+ this.validateRuleSchema(rule, Array.isArray(options) ? options.slice(1) : []);
+ }
+ } catch (err) {
+ const enhancedMessage = `Configuration for rule "${ruleId}" is invalid:\n${err.message}`;
+
+ if (typeof source === "string") {
+ throw new Error(`${source}:\n\t${enhancedMessage}`);
+ } else {
+ throw new Error(enhancedMessage);
+ }
+ }
+ }
+
+ /**
+ * Validates an environment object
+ * @param {Object} environment The environment config object to validate.
+ * @param {string} source The name of the configuration source to report in any errors.
+ * @param {function(envId:string): Object} [getAdditionalEnv] A map from strings to loaded environments.
+ * @returns {void}
+ */
+ validateEnvironment(
+ environment,
+ source,
+ getAdditionalEnv = noop
+ ) {
+
+ // not having an environment is ok
+ if (!environment) {
+ return;
+ }
+
+ Object.keys(environment).forEach(id => {
+ const env = getAdditionalEnv(id) || environments.get(id) || null;
+
+ if (!env) {
+ const message = `${source}:\n\tEnvironment key "${id}" is unknown\n`;
+
+ throw new Error(message);
+ }
+ });
+ }
+
+ /**
+ * Validates a rules config object
+ * @param {Object} rulesConfig The rules config object to validate.
+ * @param {string} source The name of the configuration source to report in any errors.
+ * @param {function(ruleId:string): Object} getAdditionalRule A map from strings to loaded rules
+ * @returns {void}
+ */
+ validateRules(
+ rulesConfig,
+ source,
+ getAdditionalRule = noop
+ ) {
+ if (!rulesConfig) {
+ return;
+ }
+
+ Object.keys(rulesConfig).forEach(id => {
+ const rule = getAdditionalRule(id) || this.builtInRules.get(id) || null;
+
+ this.validateRuleOptions(rule, id, rulesConfig[id], source);
+ });
+ }
+
+ /**
+ * Validates a `globals` section of a config file
+ * @param {Object} globalsConfig The `globals` section
+ * @param {string|null} source The name of the configuration source to report in the event of an error.
+ * @returns {void}
+ */
+ validateGlobals(globalsConfig, source = null) {
+ if (!globalsConfig) {
+ return;
+ }
+
+ Object.entries(globalsConfig)
+ .forEach(([configuredGlobal, configuredValue]) => {
+ try {
+ normalizeConfigGlobal(configuredValue);
+ } catch (err) {
+ throw new Error(`ESLint configuration of global '${configuredGlobal}' in ${source} is invalid:\n${err.message}`);
+ }
+ });
+ }
+
+ /**
+ * Validate `processor` configuration.
+ * @param {string|undefined} processorName The processor name.
+ * @param {string} source The name of config file.
+ * @param {function(id:string): Processor} getProcessor The getter of defined processors.
+ * @returns {void}
+ */
+ validateProcessor(processorName, source, getProcessor) {
+ if (processorName && !getProcessor(processorName)) {
+ throw new Error(`ESLint configuration of processor in '${source}' is invalid: '${processorName}' was not found.`);
+ }
+ }
+
+ /**
+ * Formats an array of schema validation errors.
+ * @param {Array} errors An array of error messages to format.
+ * @returns {string} Formatted error message
+ */
+ formatErrors(errors) {
+ return errors.map(error => {
+ if (error.keyword === "additionalProperties") {
+ const formattedPropertyPath = error.dataPath.length ? `${error.dataPath.slice(1)}.${error.params.additionalProperty}` : error.params.additionalProperty;
+
+ return `Unexpected top-level property "${formattedPropertyPath}"`;
+ }
+ if (error.keyword === "type") {
+ const formattedField = error.dataPath.slice(1);
+ const formattedExpectedType = Array.isArray(error.schema) ? error.schema.join("/") : error.schema;
+ const formattedValue = JSON.stringify(error.data);
+
+ return `Property "${formattedField}" is the wrong type (expected ${formattedExpectedType} but got \`${formattedValue}\`)`;
+ }
+
+ const field = error.dataPath[0] === "." ? error.dataPath.slice(1) : error.dataPath;
+
+ return `"${field}" ${error.message}. Value: ${JSON.stringify(error.data)}`;
+ }).map(message => `\t- ${message}.\n`).join("");
+ }
+
+ /**
+ * Validates the top level properties of the config object.
+ * @param {Object} config The config object to validate.
+ * @param {string} source The name of the configuration source to report in any errors.
+ * @returns {void}
+ */
+ validateConfigSchema(config, source = null) {
+ validateSchema = validateSchema || ajv.compile(configSchema);
+
+ if (!validateSchema(config)) {
+ throw new Error(`ESLint configuration in ${source} is invalid:\n${this.formatErrors(validateSchema.errors)}`);
+ }
+
+ if (Object.hasOwnProperty.call(config, "ecmaFeatures")) {
+ emitDeprecationWarning(source, "ESLINT_LEGACY_ECMAFEATURES");
+ }
+ }
+
+ /**
+ * Validates an entire config object.
+ * @param {Object} config The config object to validate.
+ * @param {string} source The name of the configuration source to report in any errors.
+ * @param {function(ruleId:string): Object} [getAdditionalRule] A map from strings to loaded rules.
+ * @param {function(envId:string): Object} [getAdditionalEnv] A map from strings to loaded envs.
+ * @returns {void}
+ */
+ validate(config, source, getAdditionalRule, getAdditionalEnv) {
+ this.validateConfigSchema(config, source);
+ this.validateRules(config.rules, source, getAdditionalRule);
+ this.validateEnvironment(config.env, source, getAdditionalEnv);
+ this.validateGlobals(config.globals, source);
+
+ for (const override of config.overrides || []) {
+ this.validateRules(override.rules, source, getAdditionalRule);
+ this.validateEnvironment(override.env, source, getAdditionalEnv);
+ this.validateGlobals(config.globals, source);
+ }
+ }
+
+ /**
+ * Validate config array object.
+ * @param {ConfigArray} configArray The config array to validate.
+ * @returns {void}
+ */
+ validateConfigArray(configArray) {
+ const getPluginEnv = Map.prototype.get.bind(configArray.pluginEnvironments);
+ const getPluginProcessor = Map.prototype.get.bind(configArray.pluginProcessors);
+ const getPluginRule = Map.prototype.get.bind(configArray.pluginRules);
+
+ // Validate.
+ for (const element of configArray) {
+ if (validated.has(element)) {
+ continue;
+ }
+ validated.add(element);
+
+ this.validateEnvironment(element.env, element.name, getPluginEnv);
+ this.validateGlobals(element.globals, element.name);
+ this.validateProcessor(element.processor, element.name, getPluginProcessor);
+ this.validateRules(element.rules, element.name, getPluginRule);
+ }
+ }
+
+}
+
+/**
+ * @fileoverview Common helpers for naming of plugins, formatters and configs
+ */
+
+const NAMESPACE_REGEX = /^@.*\//iu;
+
+/**
+ * Brings package name to correct format based on prefix
+ * @param {string} name The name of the package.
+ * @param {string} prefix Can be either "eslint-plugin", "eslint-config" or "eslint-formatter"
+ * @returns {string} Normalized name of the package
+ * @private
+ */
+function normalizePackageName(name, prefix) {
+ let normalizedName = name;
+
+ /**
+ * On Windows, name can come in with Windows slashes instead of Unix slashes.
+ * Normalize to Unix first to avoid errors later on.
+ * https://github.com/eslint/eslint/issues/5644
+ */
+ if (normalizedName.includes("\\")) {
+ normalizedName = normalizedName.replace(/\\/gu, "/");
+ }
+
+ if (normalizedName.charAt(0) === "@") {
+
+ /**
+ * it's a scoped package
+ * package name is the prefix, or just a username
+ */
+ const scopedPackageShortcutRegex = new RegExp(`^(@[^/]+)(?:/(?:${prefix})?)?$`, "u"),
+ scopedPackageNameRegex = new RegExp(`^${prefix}(-|$)`, "u");
+
+ if (scopedPackageShortcutRegex.test(normalizedName)) {
+ normalizedName = normalizedName.replace(scopedPackageShortcutRegex, `$1/${prefix}`);
+ } else if (!scopedPackageNameRegex.test(normalizedName.split("/")[1])) {
+
+ /**
+ * for scoped packages, insert the prefix after the first / unless
+ * the path is already @scope/eslint or @scope/eslint-xxx-yyy
+ */
+ normalizedName = normalizedName.replace(/^@([^/]+)\/(.*)$/u, `@$1/${prefix}-$2`);
+ }
+ } else if (!normalizedName.startsWith(`${prefix}-`)) {
+ normalizedName = `${prefix}-${normalizedName}`;
+ }
+
+ return normalizedName;
+}
+
+/**
+ * Removes the prefix from a fullname.
+ * @param {string} fullname The term which may have the prefix.
+ * @param {string} prefix The prefix to remove.
+ * @returns {string} The term without prefix.
+ */
+function getShorthandName(fullname, prefix) {
+ if (fullname[0] === "@") {
+ let matchResult = new RegExp(`^(@[^/]+)/${prefix}$`, "u").exec(fullname);
+
+ if (matchResult) {
+ return matchResult[1];
+ }
+
+ matchResult = new RegExp(`^(@[^/]+)/${prefix}-(.+)$`, "u").exec(fullname);
+ if (matchResult) {
+ return `${matchResult[1]}/${matchResult[2]}`;
+ }
+ } else if (fullname.startsWith(`${prefix}-`)) {
+ return fullname.slice(prefix.length + 1);
+ }
+
+ return fullname;
+}
+
+/**
+ * Gets the scope (namespace) of a term.
+ * @param {string} term The term which may have the namespace.
+ * @returns {string} The namespace of the term if it has one.
+ */
+function getNamespaceFromTerm(term) {
+ const match = term.match(NAMESPACE_REGEX);
+
+ return match ? match[0] : "";
+}
+
+var naming = {
+ __proto__: null,
+ normalizePackageName: normalizePackageName,
+ getShorthandName: getShorthandName,
+ getNamespaceFromTerm: getNamespaceFromTerm
+};
+
+/**
+ * Utility for resolving a module relative to another module
+ * @author Teddy Katz
+ */
+
+/*
+ * `Module.createRequire` is added in v12.2.0. It supports URL as well.
+ * We only support the case where the argument is a filepath, not a URL.
+ */
+const createRequire = Module__default["default"].createRequire;
+
+/**
+ * Resolves a Node module relative to another module
+ * @param {string} moduleName The name of a Node module, or a path to a Node module.
+ * @param {string} relativeToPath An absolute path indicating the module that `moduleName` should be resolved relative to. This must be
+ * a file rather than a directory, but the file need not actually exist.
+ * @returns {string} The absolute path that would result from calling `require.resolve(moduleName)` in a file located at `relativeToPath`
+ */
+function resolve(moduleName, relativeToPath) {
+ try {
+ return createRequire(relativeToPath).resolve(moduleName);
+ } catch (error) {
+
+ // This `if` block is for older Node.js than 12.0.0. We can remove this block in the future.
+ if (
+ typeof error === "object" &&
+ error !== null &&
+ error.code === "MODULE_NOT_FOUND" &&
+ !error.requireStack &&
+ error.message.includes(moduleName)
+ ) {
+ error.message += `\nRequire stack:\n- ${relativeToPath}`;
+ }
+ throw error;
+ }
+}
+
+var ModuleResolver = {
+ __proto__: null,
+ resolve: resolve
+};
+
+/**
+ * @fileoverview The factory of `ConfigArray` objects.
+ *
+ * This class provides methods to create `ConfigArray` instance.
+ *
+ * - `create(configData, options)`
+ * Create a `ConfigArray` instance from a config data. This is to handle CLI
+ * options except `--config`.
+ * - `loadFile(filePath, options)`
+ * Create a `ConfigArray` instance from a config file. This is to handle
+ * `--config` option. If the file was not found, throws the following error:
+ * - If the filename was `*.js`, a `MODULE_NOT_FOUND` error.
+ * - If the filename was `package.json`, an IO error or an
+ * `ESLINT_CONFIG_FIELD_NOT_FOUND` error.
+ * - Otherwise, an IO error such as `ENOENT`.
+ * - `loadInDirectory(directoryPath, options)`
+ * Create a `ConfigArray` instance from a config file which is on a given
+ * directory. This tries to load `.eslintrc.*` or `package.json`. If not
+ * found, returns an empty `ConfigArray`.
+ * - `loadESLintIgnore(filePath)`
+ * Create a `ConfigArray` instance from a config file that is `.eslintignore`
+ * format. This is to handle `--ignore-path` option.
+ * - `loadDefaultESLintIgnore()`
+ * Create a `ConfigArray` instance from `.eslintignore` or `package.json` in
+ * the current working directory.
+ *
+ * `ConfigArrayFactory` class has the responsibility that loads configuration
+ * files, including loading `extends`, `parser`, and `plugins`. The created
+ * `ConfigArray` instance has the loaded `extends`, `parser`, and `plugins`.
+ *
+ * But this class doesn't handle cascading. `CascadingConfigArrayFactory` class
+ * handles cascading and hierarchy.
+ *
+ * @author Toru Nagashima
+ */
+
+const require$1 = Module.createRequire(require('url').pathToFileURL(__filename).toString());
+
+const debug$2 = debugOrig__default["default"]("eslintrc:config-array-factory");
+
+//------------------------------------------------------------------------------
+// Helpers
+//------------------------------------------------------------------------------
+
+const configFilenames = [
+ ".eslintrc.js",
+ ".eslintrc.cjs",
+ ".eslintrc.yaml",
+ ".eslintrc.yml",
+ ".eslintrc.json",
+ ".eslintrc",
+ "package.json"
+];
+
+// Define types for VSCode IntelliSense.
+/** @typedef {import("./shared/types").ConfigData} ConfigData */
+/** @typedef {import("./shared/types").OverrideConfigData} OverrideConfigData */
+/** @typedef {import("./shared/types").Parser} Parser */
+/** @typedef {import("./shared/types").Plugin} Plugin */
+/** @typedef {import("./shared/types").Rule} Rule */
+/** @typedef {import("./config-array/config-dependency").DependentParser} DependentParser */
+/** @typedef {import("./config-array/config-dependency").DependentPlugin} DependentPlugin */
+/** @typedef {ConfigArray[0]} ConfigArrayElement */
+
+/**
+ * @typedef {Object} ConfigArrayFactoryOptions
+ * @property {Map} [additionalPluginPool] The map for additional plugins.
+ * @property {string} [cwd] The path to the current working directory.
+ * @property {string} [resolvePluginsRelativeTo] A path to the directory that plugins should be resolved from. Defaults to `cwd`.
+ * @property {Map} builtInRules The rules that are built in to ESLint.
+ * @property {Object} [resolver=ModuleResolver] The module resolver object.
+ * @property {string} eslintAllPath The path to the definitions for eslint:all.
+ * @property {Function} getEslintAllConfig Returns the config data for eslint:all.
+ * @property {string} eslintRecommendedPath The path to the definitions for eslint:recommended.
+ * @property {Function} getEslintRecommendedConfig Returns the config data for eslint:recommended.
+ */
+
+/**
+ * @typedef {Object} ConfigArrayFactoryInternalSlots
+ * @property {Map} additionalPluginPool The map for additional plugins.
+ * @property {string} cwd The path to the current working directory.
+ * @property {string | undefined} resolvePluginsRelativeTo An absolute path the the directory that plugins should be resolved from.
+ * @property {Map} builtInRules The rules that are built in to ESLint.
+ * @property {Object} [resolver=ModuleResolver] The module resolver object.
+ * @property {string} eslintAllPath The path to the definitions for eslint:all.
+ * @property {Function} getEslintAllConfig Returns the config data for eslint:all.
+ * @property {string} eslintRecommendedPath The path to the definitions for eslint:recommended.
+ * @property {Function} getEslintRecommendedConfig Returns the config data for eslint:recommended.
+ */
+
+/**
+ * @typedef {Object} ConfigArrayFactoryLoadingContext
+ * @property {string} filePath The path to the current configuration.
+ * @property {string} matchBasePath The base path to resolve relative paths in `overrides[].files`, `overrides[].excludedFiles`, and `ignorePatterns`.
+ * @property {string} name The name of the current configuration.
+ * @property {string} pluginBasePath The base path to resolve plugins.
+ * @property {"config" | "ignore" | "implicit-processor"} type The type of the current configuration. This is `"config"` in normal. This is `"ignore"` if it came from `.eslintignore`. This is `"implicit-processor"` if it came from legacy file-extension processors.
+ */
+
+/**
+ * @typedef {Object} ConfigArrayFactoryLoadingContext
+ * @property {string} filePath The path to the current configuration.
+ * @property {string} matchBasePath The base path to resolve relative paths in `overrides[].files`, `overrides[].excludedFiles`, and `ignorePatterns`.
+ * @property {string} name The name of the current configuration.
+ * @property {"config" | "ignore" | "implicit-processor"} type The type of the current configuration. This is `"config"` in normal. This is `"ignore"` if it came from `.eslintignore`. This is `"implicit-processor"` if it came from legacy file-extension processors.
+ */
+
+/** @type {WeakMap} */
+const internalSlotsMap$1 = new WeakMap();
+
+/** @type {WeakMap} */
+const normalizedPlugins = new WeakMap();
+
+/**
+ * Check if a given string is a file path.
+ * @param {string} nameOrPath A module name or file path.
+ * @returns {boolean} `true` if the `nameOrPath` is a file path.
+ */
+function isFilePath(nameOrPath) {
+ return (
+ /^\.{1,2}[/\\]/u.test(nameOrPath) ||
+ path__default["default"].isAbsolute(nameOrPath)
+ );
+}
+
+/**
+ * Convenience wrapper for synchronously reading file contents.
+ * @param {string} filePath The filename to read.
+ * @returns {string} The file contents, with the BOM removed.
+ * @private
+ */
+function readFile(filePath) {
+ return fs__default["default"].readFileSync(filePath, "utf8").replace(/^\ufeff/u, "");
+}
+
+/**
+ * Loads a YAML configuration from a file.
+ * @param {string} filePath The filename to load.
+ * @returns {ConfigData} The configuration object from the file.
+ * @throws {Error} If the file cannot be read.
+ * @private
+ */
+function loadYAMLConfigFile(filePath) {
+ debug$2(`Loading YAML config file: ${filePath}`);
+
+ // lazy load YAML to improve performance when not used
+ const yaml = require$1("js-yaml");
+
+ try {
+
+ // empty YAML file can be null, so always use
+ return yaml.load(readFile(filePath)) || {};
+ } catch (e) {
+ debug$2(`Error reading YAML file: ${filePath}`);
+ e.message = `Cannot read config file: ${filePath}\nError: ${e.message}`;
+ throw e;
+ }
+}
+
+/**
+ * Loads a JSON configuration from a file.
+ * @param {string} filePath The filename to load.
+ * @returns {ConfigData} The configuration object from the file.
+ * @throws {Error} If the file cannot be read.
+ * @private
+ */
+function loadJSONConfigFile(filePath) {
+ debug$2(`Loading JSON config file: ${filePath}`);
+
+ try {
+ return JSON.parse(stripComments__default["default"](readFile(filePath)));
+ } catch (e) {
+ debug$2(`Error reading JSON file: ${filePath}`);
+ e.message = `Cannot read config file: ${filePath}\nError: ${e.message}`;
+ e.messageTemplate = "failed-to-read-json";
+ e.messageData = {
+ path: filePath,
+ message: e.message
+ };
+ throw e;
+ }
+}
+
+/**
+ * Loads a legacy (.eslintrc) configuration from a file.
+ * @param {string} filePath The filename to load.
+ * @returns {ConfigData} The configuration object from the file.
+ * @throws {Error} If the file cannot be read.
+ * @private
+ */
+function loadLegacyConfigFile(filePath) {
+ debug$2(`Loading legacy config file: ${filePath}`);
+
+ // lazy load YAML to improve performance when not used
+ const yaml = require$1("js-yaml");
+
+ try {
+ return yaml.load(stripComments__default["default"](readFile(filePath))) || /* istanbul ignore next */ {};
+ } catch (e) {
+ debug$2("Error reading YAML file: %s\n%o", filePath, e);
+ e.message = `Cannot read config file: ${filePath}\nError: ${e.message}`;
+ throw e;
+ }
+}
+
+/**
+ * Loads a JavaScript configuration from a file.
+ * @param {string} filePath The filename to load.
+ * @returns {ConfigData} The configuration object from the file.
+ * @throws {Error} If the file cannot be read.
+ * @private
+ */
+function loadJSConfigFile(filePath) {
+ debug$2(`Loading JS config file: ${filePath}`);
+ try {
+ return importFresh__default["default"](filePath);
+ } catch (e) {
+ debug$2(`Error reading JavaScript file: ${filePath}`);
+ e.message = `Cannot read config file: ${filePath}\nError: ${e.message}`;
+ throw e;
+ }
+}
+
+/**
+ * Loads a configuration from a package.json file.
+ * @param {string} filePath The filename to load.
+ * @returns {ConfigData} The configuration object from the file.
+ * @throws {Error} If the file cannot be read.
+ * @private
+ */
+function loadPackageJSONConfigFile(filePath) {
+ debug$2(`Loading package.json config file: ${filePath}`);
+ try {
+ const packageData = loadJSONConfigFile(filePath);
+
+ if (!Object.hasOwnProperty.call(packageData, "eslintConfig")) {
+ throw Object.assign(
+ new Error("package.json file doesn't have 'eslintConfig' field."),
+ { code: "ESLINT_CONFIG_FIELD_NOT_FOUND" }
+ );
+ }
+
+ return packageData.eslintConfig;
+ } catch (e) {
+ debug$2(`Error reading package.json file: ${filePath}`);
+ e.message = `Cannot read config file: ${filePath}\nError: ${e.message}`;
+ throw e;
+ }
+}
+
+/**
+ * Loads a `.eslintignore` from a file.
+ * @param {string} filePath The filename to load.
+ * @returns {string[]} The ignore patterns from the file.
+ * @private
+ */
+function loadESLintIgnoreFile(filePath) {
+ debug$2(`Loading .eslintignore file: ${filePath}`);
+
+ try {
+ return readFile(filePath)
+ .split(/\r?\n/gu)
+ .filter(line => line.trim() !== "" && !line.startsWith("#"));
+ } catch (e) {
+ debug$2(`Error reading .eslintignore file: ${filePath}`);
+ e.message = `Cannot read .eslintignore file: ${filePath}\nError: ${e.message}`;
+ throw e;
+ }
+}
+
+/**
+ * Creates an error to notify about a missing config to extend from.
+ * @param {string} configName The name of the missing config.
+ * @param {string} importerName The name of the config that imported the missing config
+ * @param {string} messageTemplate The text template to source error strings from.
+ * @returns {Error} The error object to throw
+ * @private
+ */
+function configInvalidError(configName, importerName, messageTemplate) {
+ return Object.assign(
+ new Error(`Failed to load config "${configName}" to extend from.`),
+ {
+ messageTemplate,
+ messageData: { configName, importerName }
+ }
+ );
+}
+
+/**
+ * Loads a configuration file regardless of the source. Inspects the file path
+ * to determine the correctly way to load the config file.
+ * @param {string} filePath The path to the configuration.
+ * @returns {ConfigData|null} The configuration information.
+ * @private
+ */
+function loadConfigFile(filePath) {
+ switch (path__default["default"].extname(filePath)) {
+ case ".js":
+ case ".cjs":
+ return loadJSConfigFile(filePath);
+
+ case ".json":
+ if (path__default["default"].basename(filePath) === "package.json") {
+ return loadPackageJSONConfigFile(filePath);
+ }
+ return loadJSONConfigFile(filePath);
+
+ case ".yaml":
+ case ".yml":
+ return loadYAMLConfigFile(filePath);
+
+ default:
+ return loadLegacyConfigFile(filePath);
+ }
+}
+
+/**
+ * Write debug log.
+ * @param {string} request The requested module name.
+ * @param {string} relativeTo The file path to resolve the request relative to.
+ * @param {string} filePath The resolved file path.
+ * @returns {void}
+ */
+function writeDebugLogForLoading(request, relativeTo, filePath) {
+ /* istanbul ignore next */
+ if (debug$2.enabled) {
+ let nameAndVersion = null;
+
+ try {
+ const packageJsonPath = resolve(
+ `${request}/package.json`,
+ relativeTo
+ );
+ const { version = "unknown" } = require$1(packageJsonPath);
+
+ nameAndVersion = `${request}@${version}`;
+ } catch (error) {
+ debug$2("package.json was not found:", error.message);
+ nameAndVersion = request;
+ }
+
+ debug$2("Loaded: %s (%s)", nameAndVersion, filePath);
+ }
+}
+
+/**
+ * Create a new context with default values.
+ * @param {ConfigArrayFactoryInternalSlots} slots The internal slots.
+ * @param {"config" | "ignore" | "implicit-processor" | undefined} providedType The type of the current configuration. Default is `"config"`.
+ * @param {string | undefined} providedName The name of the current configuration. Default is the relative path from `cwd` to `filePath`.
+ * @param {string | undefined} providedFilePath The path to the current configuration. Default is empty string.
+ * @param {string | undefined} providedMatchBasePath The type of the current configuration. Default is the directory of `filePath` or `cwd`.
+ * @returns {ConfigArrayFactoryLoadingContext} The created context.
+ */
+function createContext(
+ { cwd, resolvePluginsRelativeTo },
+ providedType,
+ providedName,
+ providedFilePath,
+ providedMatchBasePath
+) {
+ const filePath = providedFilePath
+ ? path__default["default"].resolve(cwd, providedFilePath)
+ : "";
+ const matchBasePath =
+ (providedMatchBasePath && path__default["default"].resolve(cwd, providedMatchBasePath)) ||
+ (filePath && path__default["default"].dirname(filePath)) ||
+ cwd;
+ const name =
+ providedName ||
+ (filePath && path__default["default"].relative(cwd, filePath)) ||
+ "";
+ const pluginBasePath =
+ resolvePluginsRelativeTo ||
+ (filePath && path__default["default"].dirname(filePath)) ||
+ cwd;
+ const type = providedType || "config";
+
+ return { filePath, matchBasePath, name, pluginBasePath, type };
+}
+
+/**
+ * Normalize a given plugin.
+ * - Ensure the object to have four properties: configs, environments, processors, and rules.
+ * - Ensure the object to not have other properties.
+ * @param {Plugin} plugin The plugin to normalize.
+ * @returns {Plugin} The normalized plugin.
+ */
+function normalizePlugin(plugin) {
+
+ // first check the cache
+ let normalizedPlugin = normalizedPlugins.get(plugin);
+
+ if (normalizedPlugin) {
+ return normalizedPlugin;
+ }
+
+ normalizedPlugin = {
+ configs: plugin.configs || {},
+ environments: plugin.environments || {},
+ processors: plugin.processors || {},
+ rules: plugin.rules || {}
+ };
+
+ // save the reference for later
+ normalizedPlugins.set(plugin, normalizedPlugin);
+
+ return normalizedPlugin;
+}
+
+//------------------------------------------------------------------------------
+// Public Interface
+//------------------------------------------------------------------------------
+
+/**
+ * The factory of `ConfigArray` objects.
+ */
+class ConfigArrayFactory {
+
+ /**
+ * Initialize this instance.
+ * @param {ConfigArrayFactoryOptions} [options] The map for additional plugins.
+ */
+ constructor({
+ additionalPluginPool = new Map(),
+ cwd = process.cwd(),
+ resolvePluginsRelativeTo,
+ builtInRules,
+ resolver = ModuleResolver,
+ eslintAllPath,
+ getEslintAllConfig,
+ eslintRecommendedPath,
+ getEslintRecommendedConfig
+ } = {}) {
+ internalSlotsMap$1.set(this, {
+ additionalPluginPool,
+ cwd,
+ resolvePluginsRelativeTo:
+ resolvePluginsRelativeTo &&
+ path__default["default"].resolve(cwd, resolvePluginsRelativeTo),
+ builtInRules,
+ resolver,
+ eslintAllPath,
+ getEslintAllConfig,
+ eslintRecommendedPath,
+ getEslintRecommendedConfig
+ });
+ }
+
+ /**
+ * Create `ConfigArray` instance from a config data.
+ * @param {ConfigData|null} configData The config data to create.
+ * @param {Object} [options] The options.
+ * @param {string} [options.basePath] The base path to resolve relative paths in `overrides[].files`, `overrides[].excludedFiles`, and `ignorePatterns`.
+ * @param {string} [options.filePath] The path to this config data.
+ * @param {string} [options.name] The config name.
+ * @returns {ConfigArray} Loaded config.
+ */
+ create(configData, { basePath, filePath, name } = {}) {
+ if (!configData) {
+ return new ConfigArray();
+ }
+
+ const slots = internalSlotsMap$1.get(this);
+ const ctx = createContext(slots, "config", name, filePath, basePath);
+ const elements = this._normalizeConfigData(configData, ctx);
+
+ return new ConfigArray(...elements);
+ }
+
+ /**
+ * Load a config file.
+ * @param {string} filePath The path to a config file.
+ * @param {Object} [options] The options.
+ * @param {string} [options.basePath] The base path to resolve relative paths in `overrides[].files`, `overrides[].excludedFiles`, and `ignorePatterns`.
+ * @param {string} [options.name] The config name.
+ * @returns {ConfigArray} Loaded config.
+ */
+ loadFile(filePath, { basePath, name } = {}) {
+ const slots = internalSlotsMap$1.get(this);
+ const ctx = createContext(slots, "config", name, filePath, basePath);
+
+ return new ConfigArray(...this._loadConfigData(ctx));
+ }
+
+ /**
+ * Load the config file on a given directory if exists.
+ * @param {string} directoryPath The path to a directory.
+ * @param {Object} [options] The options.
+ * @param {string} [options.basePath] The base path to resolve relative paths in `overrides[].files`, `overrides[].excludedFiles`, and `ignorePatterns`.
+ * @param {string} [options.name] The config name.
+ * @returns {ConfigArray} Loaded config. An empty `ConfigArray` if any config doesn't exist.
+ */
+ loadInDirectory(directoryPath, { basePath, name } = {}) {
+ const slots = internalSlotsMap$1.get(this);
+
+ for (const filename of configFilenames) {
+ const ctx = createContext(
+ slots,
+ "config",
+ name,
+ path__default["default"].join(directoryPath, filename),
+ basePath
+ );
+
+ if (fs__default["default"].existsSync(ctx.filePath) && fs__default["default"].statSync(ctx.filePath).isFile()) {
+ let configData;
+
+ try {
+ configData = loadConfigFile(ctx.filePath);
+ } catch (error) {
+ if (!error || error.code !== "ESLINT_CONFIG_FIELD_NOT_FOUND") {
+ throw error;
+ }
+ }
+
+ if (configData) {
+ debug$2(`Config file found: ${ctx.filePath}`);
+ return new ConfigArray(
+ ...this._normalizeConfigData(configData, ctx)
+ );
+ }
+ }
+ }
+
+ debug$2(`Config file not found on ${directoryPath}`);
+ return new ConfigArray();
+ }
+
+ /**
+ * Check if a config file on a given directory exists or not.
+ * @param {string} directoryPath The path to a directory.
+ * @returns {string | null} The path to the found config file. If not found then null.
+ */
+ static getPathToConfigFileInDirectory(directoryPath) {
+ for (const filename of configFilenames) {
+ const filePath = path__default["default"].join(directoryPath, filename);
+
+ if (fs__default["default"].existsSync(filePath)) {
+ if (filename === "package.json") {
+ try {
+ loadPackageJSONConfigFile(filePath);
+ return filePath;
+ } catch { /* ignore */ }
+ } else {
+ return filePath;
+ }
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Load `.eslintignore` file.
+ * @param {string} filePath The path to a `.eslintignore` file to load.
+ * @returns {ConfigArray} Loaded config. An empty `ConfigArray` if any config doesn't exist.
+ */
+ loadESLintIgnore(filePath) {
+ const slots = internalSlotsMap$1.get(this);
+ const ctx = createContext(
+ slots,
+ "ignore",
+ void 0,
+ filePath,
+ slots.cwd
+ );
+ const ignorePatterns = loadESLintIgnoreFile(ctx.filePath);
+
+ return new ConfigArray(
+ ...this._normalizeESLintIgnoreData(ignorePatterns, ctx)
+ );
+ }
+
+ /**
+ * Load `.eslintignore` file in the current working directory.
+ * @returns {ConfigArray} Loaded config. An empty `ConfigArray` if any config doesn't exist.
+ */
+ loadDefaultESLintIgnore() {
+ const slots = internalSlotsMap$1.get(this);
+ const eslintIgnorePath = path__default["default"].resolve(slots.cwd, ".eslintignore");
+ const packageJsonPath = path__default["default"].resolve(slots.cwd, "package.json");
+
+ if (fs__default["default"].existsSync(eslintIgnorePath)) {
+ return this.loadESLintIgnore(eslintIgnorePath);
+ }
+ if (fs__default["default"].existsSync(packageJsonPath)) {
+ const data = loadJSONConfigFile(packageJsonPath);
+
+ if (Object.hasOwnProperty.call(data, "eslintIgnore")) {
+ if (!Array.isArray(data.eslintIgnore)) {
+ throw new Error("Package.json eslintIgnore property requires an array of paths");
+ }
+ const ctx = createContext(
+ slots,
+ "ignore",
+ "eslintIgnore in package.json",
+ packageJsonPath,
+ slots.cwd
+ );
+
+ return new ConfigArray(
+ ...this._normalizeESLintIgnoreData(data.eslintIgnore, ctx)
+ );
+ }
+ }
+
+ return new ConfigArray();
+ }
+
+ /**
+ * Load a given config file.
+ * @param {ConfigArrayFactoryLoadingContext} ctx The loading context.
+ * @returns {IterableIterator} Loaded config.
+ * @private
+ */
+ _loadConfigData(ctx) {
+ return this._normalizeConfigData(loadConfigFile(ctx.filePath), ctx);
+ }
+
+ /**
+ * Normalize a given `.eslintignore` data to config array elements.
+ * @param {string[]} ignorePatterns The patterns to ignore files.
+ * @param {ConfigArrayFactoryLoadingContext} ctx The loading context.
+ * @returns {IterableIterator} The normalized config.
+ * @private
+ */
+ *_normalizeESLintIgnoreData(ignorePatterns, ctx) {
+ const elements = this._normalizeObjectConfigData(
+ { ignorePatterns },
+ ctx
+ );
+
+ // Set `ignorePattern.loose` flag for backward compatibility.
+ for (const element of elements) {
+ if (element.ignorePattern) {
+ element.ignorePattern.loose = true;
+ }
+ yield element;
+ }
+ }
+
+ /**
+ * Normalize a given config to an array.
+ * @param {ConfigData} configData The config data to normalize.
+ * @param {ConfigArrayFactoryLoadingContext} ctx The loading context.
+ * @returns {IterableIterator} The normalized config.
+ * @private
+ */
+ _normalizeConfigData(configData, ctx) {
+ const validator = new ConfigValidator();
+
+ validator.validateConfigSchema(configData, ctx.name || ctx.filePath);
+ return this._normalizeObjectConfigData(configData, ctx);
+ }
+
+ /**
+ * Normalize a given config to an array.
+ * @param {ConfigData|OverrideConfigData} configData The config data to normalize.
+ * @param {ConfigArrayFactoryLoadingContext} ctx The loading context.
+ * @returns {IterableIterator} The normalized config.
+ * @private
+ */
+ *_normalizeObjectConfigData(configData, ctx) {
+ const { files, excludedFiles, ...configBody } = configData;
+ const criteria = OverrideTester.create(
+ files,
+ excludedFiles,
+ ctx.matchBasePath
+ );
+ const elements = this._normalizeObjectConfigDataBody(configBody, ctx);
+
+ // Apply the criteria to every element.
+ for (const element of elements) {
+
+ /*
+ * Merge the criteria.
+ * This is for the `overrides` entries that came from the
+ * configurations of `overrides[].extends`.
+ */
+ element.criteria = OverrideTester.and(criteria, element.criteria);
+
+ /*
+ * Remove `root` property to ignore `root` settings which came from
+ * `extends` in `overrides`.
+ */
+ if (element.criteria) {
+ element.root = void 0;
+ }
+
+ yield element;
+ }
+ }
+
+ /**
+ * Normalize a given config to an array.
+ * @param {ConfigData} configData The config data to normalize.
+ * @param {ConfigArrayFactoryLoadingContext} ctx The loading context.
+ * @returns {IterableIterator} The normalized config.
+ * @private
+ */
+ *_normalizeObjectConfigDataBody(
+ {
+ env,
+ extends: extend,
+ globals,
+ ignorePatterns,
+ noInlineConfig,
+ parser: parserName,
+ parserOptions,
+ plugins: pluginList,
+ processor,
+ reportUnusedDisableDirectives,
+ root,
+ rules,
+ settings,
+ overrides: overrideList = []
+ },
+ ctx
+ ) {
+ const extendList = Array.isArray(extend) ? extend : [extend];
+ const ignorePattern = ignorePatterns && new IgnorePattern(
+ Array.isArray(ignorePatterns) ? ignorePatterns : [ignorePatterns],
+ ctx.matchBasePath
+ );
+
+ // Flatten `extends`.
+ for (const extendName of extendList.filter(Boolean)) {
+ yield* this._loadExtends(extendName, ctx);
+ }
+
+ // Load parser & plugins.
+ const parser = parserName && this._loadParser(parserName, ctx);
+ const plugins = pluginList && this._loadPlugins(pluginList, ctx);
+
+ // Yield pseudo config data for file extension processors.
+ if (plugins) {
+ yield* this._takeFileExtensionProcessors(plugins, ctx);
+ }
+
+ // Yield the config data except `extends` and `overrides`.
+ yield {
+
+ // Debug information.
+ type: ctx.type,
+ name: ctx.name,
+ filePath: ctx.filePath,
+
+ // Config data.
+ criteria: null,
+ env,
+ globals,
+ ignorePattern,
+ noInlineConfig,
+ parser,
+ parserOptions,
+ plugins,
+ processor,
+ reportUnusedDisableDirectives,
+ root,
+ rules,
+ settings
+ };
+
+ // Flatten `overries`.
+ for (let i = 0; i < overrideList.length; ++i) {
+ yield* this._normalizeObjectConfigData(
+ overrideList[i],
+ { ...ctx, name: `${ctx.name}#overrides[${i}]` }
+ );
+ }
+ }
+
+ /**
+ * Load configs of an element in `extends`.
+ * @param {string} extendName The name of a base config.
+ * @param {ConfigArrayFactoryLoadingContext} ctx The loading context.
+ * @returns {IterableIterator} The normalized config.
+ * @private
+ */
+ _loadExtends(extendName, ctx) {
+ debug$2("Loading {extends:%j} relative to %s", extendName, ctx.filePath);
+ try {
+ if (extendName.startsWith("eslint:")) {
+ return this._loadExtendedBuiltInConfig(extendName, ctx);
+ }
+ if (extendName.startsWith("plugin:")) {
+ return this._loadExtendedPluginConfig(extendName, ctx);
+ }
+ return this._loadExtendedShareableConfig(extendName, ctx);
+ } catch (error) {
+ error.message += `\nReferenced from: ${ctx.filePath || ctx.name}`;
+ throw error;
+ }
+ }
+
+ /**
+ * Load configs of an element in `extends`.
+ * @param {string} extendName The name of a base config.
+ * @param {ConfigArrayFactoryLoadingContext} ctx The loading context.
+ * @returns {IterableIterator} The normalized config.
+ * @private
+ */
+ _loadExtendedBuiltInConfig(extendName, ctx) {
+ const {
+ eslintAllPath,
+ getEslintAllConfig,
+ eslintRecommendedPath,
+ getEslintRecommendedConfig
+ } = internalSlotsMap$1.get(this);
+
+ if (extendName === "eslint:recommended") {
+ const name = `${ctx.name} » ${extendName}`;
+
+ if (getEslintRecommendedConfig) {
+ if (typeof getEslintRecommendedConfig !== "function") {
+ throw new Error(`getEslintRecommendedConfig must be a function instead of '${getEslintRecommendedConfig}'`);
+ }
+ return this._normalizeConfigData(getEslintRecommendedConfig(), { ...ctx, name, filePath: "" });
+ }
+ return this._loadConfigData({
+ ...ctx,
+ name,
+ filePath: eslintRecommendedPath
+ });
+ }
+ if (extendName === "eslint:all") {
+ const name = `${ctx.name} » ${extendName}`;
+
+ if (getEslintAllConfig) {
+ if (typeof getEslintAllConfig !== "function") {
+ throw new Error(`getEslintAllConfig must be a function instead of '${getEslintAllConfig}'`);
+ }
+ return this._normalizeConfigData(getEslintAllConfig(), { ...ctx, name, filePath: "" });
+ }
+ return this._loadConfigData({
+ ...ctx,
+ name,
+ filePath: eslintAllPath
+ });
+ }
+
+ throw configInvalidError(extendName, ctx.name, "extend-config-missing");
+ }
+
+ /**
+ * Load configs of an element in `extends`.
+ * @param {string} extendName The name of a base config.
+ * @param {ConfigArrayFactoryLoadingContext} ctx The loading context.
+ * @returns {IterableIterator} The normalized config.
+ * @private
+ */
+ _loadExtendedPluginConfig(extendName, ctx) {
+ const slashIndex = extendName.lastIndexOf("/");
+
+ if (slashIndex === -1) {
+ throw configInvalidError(extendName, ctx.filePath, "plugin-invalid");
+ }
+
+ const pluginName = extendName.slice("plugin:".length, slashIndex);
+ const configName = extendName.slice(slashIndex + 1);
+
+ if (isFilePath(pluginName)) {
+ throw new Error("'extends' cannot use a file path for plugins.");
+ }
+
+ const plugin = this._loadPlugin(pluginName, ctx);
+ const configData =
+ plugin.definition &&
+ plugin.definition.configs[configName];
+
+ if (configData) {
+ return this._normalizeConfigData(configData, {
+ ...ctx,
+ filePath: plugin.filePath || ctx.filePath,
+ name: `${ctx.name} » plugin:${plugin.id}/${configName}`
+ });
+ }
+
+ throw plugin.error || configInvalidError(extendName, ctx.filePath, "extend-config-missing");
+ }
+
+ /**
+ * Load configs of an element in `extends`.
+ * @param {string} extendName The name of a base config.
+ * @param {ConfigArrayFactoryLoadingContext} ctx The loading context.
+ * @returns {IterableIterator} The normalized config.
+ * @private
+ */
+ _loadExtendedShareableConfig(extendName, ctx) {
+ const { cwd, resolver } = internalSlotsMap$1.get(this);
+ const relativeTo = ctx.filePath || path__default["default"].join(cwd, "__placeholder__.js");
+ let request;
+
+ if (isFilePath(extendName)) {
+ request = extendName;
+ } else if (extendName.startsWith(".")) {
+ request = `./${extendName}`; // For backward compatibility. A ton of tests depended on this behavior.
+ } else {
+ request = normalizePackageName(
+ extendName,
+ "eslint-config"
+ );
+ }
+
+ let filePath;
+
+ try {
+ filePath = resolver.resolve(request, relativeTo);
+ } catch (error) {
+ /* istanbul ignore else */
+ if (error && error.code === "MODULE_NOT_FOUND") {
+ throw configInvalidError(extendName, ctx.filePath, "extend-config-missing");
+ }
+ throw error;
+ }
+
+ writeDebugLogForLoading(request, relativeTo, filePath);
+ return this._loadConfigData({
+ ...ctx,
+ filePath,
+ name: `${ctx.name} » ${request}`
+ });
+ }
+
+ /**
+ * Load given plugins.
+ * @param {string[]} names The plugin names to load.
+ * @param {ConfigArrayFactoryLoadingContext} ctx The loading context.
+ * @returns {Record} The loaded parser.
+ * @private
+ */
+ _loadPlugins(names, ctx) {
+ return names.reduce((map, name) => {
+ if (isFilePath(name)) {
+ throw new Error("Plugins array cannot includes file paths.");
+ }
+ const plugin = this._loadPlugin(name, ctx);
+
+ map[plugin.id] = plugin;
+
+ return map;
+ }, {});
+ }
+
+ /**
+ * Load a given parser.
+ * @param {string} nameOrPath The package name or the path to a parser file.
+ * @param {ConfigArrayFactoryLoadingContext} ctx The loading context.
+ * @returns {DependentParser} The loaded parser.
+ */
+ _loadParser(nameOrPath, ctx) {
+ debug$2("Loading parser %j from %s", nameOrPath, ctx.filePath);
+
+ const { cwd, resolver } = internalSlotsMap$1.get(this);
+ const relativeTo = ctx.filePath || path__default["default"].join(cwd, "__placeholder__.js");
+
+ try {
+ const filePath = resolver.resolve(nameOrPath, relativeTo);
+
+ writeDebugLogForLoading(nameOrPath, relativeTo, filePath);
+
+ return new ConfigDependency({
+ definition: require$1(filePath),
+ filePath,
+ id: nameOrPath,
+ importerName: ctx.name,
+ importerPath: ctx.filePath
+ });
+ } catch (error) {
+
+ // If the parser name is "espree", load the espree of ESLint.
+ if (nameOrPath === "espree") {
+ debug$2("Fallback espree.");
+ return new ConfigDependency({
+ definition: require$1("espree"),
+ filePath: require$1.resolve("espree"),
+ id: nameOrPath,
+ importerName: ctx.name,
+ importerPath: ctx.filePath
+ });
+ }
+
+ debug$2("Failed to load parser '%s' declared in '%s'.", nameOrPath, ctx.name);
+ error.message = `Failed to load parser '${nameOrPath}' declared in '${ctx.name}': ${error.message}`;
+
+ return new ConfigDependency({
+ error,
+ id: nameOrPath,
+ importerName: ctx.name,
+ importerPath: ctx.filePath
+ });
+ }
+ }
+
+ /**
+ * Load a given plugin.
+ * @param {string} name The plugin name to load.
+ * @param {ConfigArrayFactoryLoadingContext} ctx The loading context.
+ * @returns {DependentPlugin} The loaded plugin.
+ * @private
+ */
+ _loadPlugin(name, ctx) {
+ debug$2("Loading plugin %j from %s", name, ctx.filePath);
+
+ const { additionalPluginPool, resolver } = internalSlotsMap$1.get(this);
+ const request = normalizePackageName(name, "eslint-plugin");
+ const id = getShorthandName(request, "eslint-plugin");
+ const relativeTo = path__default["default"].join(ctx.pluginBasePath, "__placeholder__.js");
+
+ if (name.match(/\s+/u)) {
+ const error = Object.assign(
+ new Error(`Whitespace found in plugin name '${name}'`),
+ {
+ messageTemplate: "whitespace-found",
+ messageData: { pluginName: request }
+ }
+ );
+
+ return new ConfigDependency({
+ error,
+ id,
+ importerName: ctx.name,
+ importerPath: ctx.filePath
+ });
+ }
+
+ // Check for additional pool.
+ const plugin =
+ additionalPluginPool.get(request) ||
+ additionalPluginPool.get(id);
+
+ if (plugin) {
+ return new ConfigDependency({
+ definition: normalizePlugin(plugin),
+ filePath: "", // It's unknown where the plugin came from.
+ id,
+ importerName: ctx.name,
+ importerPath: ctx.filePath
+ });
+ }
+
+ let filePath;
+ let error;
+
+ try {
+ filePath = resolver.resolve(request, relativeTo);
+ } catch (resolveError) {
+ error = resolveError;
+ /* istanbul ignore else */
+ if (error && error.code === "MODULE_NOT_FOUND") {
+ error.messageTemplate = "plugin-missing";
+ error.messageData = {
+ pluginName: request,
+ resolvePluginsRelativeTo: ctx.pluginBasePath,
+ importerName: ctx.name
+ };
+ }
+ }
+
+ if (filePath) {
+ try {
+ writeDebugLogForLoading(request, relativeTo, filePath);
+
+ const startTime = Date.now();
+ const pluginDefinition = require$1(filePath);
+
+ debug$2(`Plugin ${filePath} loaded in: ${Date.now() - startTime}ms`);
+
+ return new ConfigDependency({
+ definition: normalizePlugin(pluginDefinition),
+ filePath,
+ id,
+ importerName: ctx.name,
+ importerPath: ctx.filePath
+ });
+ } catch (loadError) {
+ error = loadError;
+ }
+ }
+
+ debug$2("Failed to load plugin '%s' declared in '%s'.", name, ctx.name);
+ error.message = `Failed to load plugin '${name}' declared in '${ctx.name}': ${error.message}`;
+ return new ConfigDependency({
+ error,
+ id,
+ importerName: ctx.name,
+ importerPath: ctx.filePath
+ });
+ }
+
+ /**
+ * Take file expression processors as config array elements.
+ * @param {Record} plugins The plugin definitions.
+ * @param {ConfigArrayFactoryLoadingContext} ctx The loading context.
+ * @returns {IterableIterator} The config array elements of file expression processors.
+ * @private
+ */
+ *_takeFileExtensionProcessors(plugins, ctx) {
+ for (const pluginId of Object.keys(plugins)) {
+ const processors =
+ plugins[pluginId] &&
+ plugins[pluginId].definition &&
+ plugins[pluginId].definition.processors;
+
+ if (!processors) {
+ continue;
+ }
+
+ for (const processorId of Object.keys(processors)) {
+ if (processorId.startsWith(".")) {
+ yield* this._normalizeObjectConfigData(
+ {
+ files: [`*${processorId}`],
+ processor: `${pluginId}/${processorId}`
+ },
+ {
+ ...ctx,
+ type: "implicit-processor",
+ name: `${ctx.name}#processors["${pluginId}/${processorId}"]`
+ }
+ );
+ }
+ }
+ }
+ }
+}
+
+/**
+ * @fileoverview `CascadingConfigArrayFactory` class.
+ *
+ * `CascadingConfigArrayFactory` class has a responsibility:
+ *
+ * 1. Handles cascading of config files.
+ *
+ * It provides two methods:
+ *
+ * - `getConfigArrayForFile(filePath)`
+ * Get the corresponded configuration of a given file. This method doesn't
+ * throw even if the given file didn't exist.
+ * - `clearCache()`
+ * Clear the internal cache. You have to call this method when
+ * `additionalPluginPool` was updated if `baseConfig` or `cliConfig` depends
+ * on the additional plugins. (`CLIEngine#addPlugin()` method calls this.)
+ *
+ * @author Toru Nagashima
+ */
+
+const debug$1 = debugOrig__default["default"]("eslintrc:cascading-config-array-factory");
+
+//------------------------------------------------------------------------------
+// Helpers
+//------------------------------------------------------------------------------
+
+// Define types for VSCode IntelliSense.
+/** @typedef {import("./shared/types").ConfigData} ConfigData */
+/** @typedef {import("./shared/types").Parser} Parser */
+/** @typedef {import("./shared/types").Plugin} Plugin */
+/** @typedef {import("./shared/types").Rule} Rule */
+/** @typedef {ReturnType} ConfigArray */
+
+/**
+ * @typedef {Object} CascadingConfigArrayFactoryOptions
+ * @property {Map} [additionalPluginPool] The map for additional plugins.
+ * @property {ConfigData} [baseConfig] The config by `baseConfig` option.
+ * @property {ConfigData} [cliConfig] The config by CLI options (`--env`, `--global`, `--ignore-pattern`, `--parser`, `--parser-options`, `--plugin`, and `--rule`). CLI options overwrite the setting in config files.
+ * @property {string} [cwd] The base directory to start lookup.
+ * @property {string} [ignorePath] The path to the alternative file of `.eslintignore`.
+ * @property {string[]} [rulePaths] The value of `--rulesdir` option.
+ * @property {string} [specificConfigPath] The value of `--config` option.
+ * @property {boolean} [useEslintrc] if `false` then it doesn't load config files.
+ * @property {Function} loadRules The function to use to load rules.
+ * @property {Map} builtInRules The rules that are built in to ESLint.
+ * @property {Object} [resolver=ModuleResolver] The module resolver object.
+ * @property {string} eslintAllPath The path to the definitions for eslint:all.
+ * @property {Function} getEslintAllConfig Returns the config data for eslint:all.
+ * @property {string} eslintRecommendedPath The path to the definitions for eslint:recommended.
+ * @property {Function} getEslintRecommendedConfig Returns the config data for eslint:recommended.
+ */
+
+/**
+ * @typedef {Object} CascadingConfigArrayFactoryInternalSlots
+ * @property {ConfigArray} baseConfigArray The config array of `baseConfig` option.
+ * @property {ConfigData} baseConfigData The config data of `baseConfig` option. This is used to reset `baseConfigArray`.
+ * @property {ConfigArray} cliConfigArray The config array of CLI options.
+ * @property {ConfigData} cliConfigData The config data of CLI options. This is used to reset `cliConfigArray`.
+ * @property {ConfigArrayFactory} configArrayFactory The factory for config arrays.
+ * @property {Map} configCache The cache from directory paths to config arrays.
+ * @property {string} cwd The base directory to start lookup.
+ * @property {WeakMap} finalizeCache The cache from config arrays to finalized config arrays.
+ * @property {string} [ignorePath] The path to the alternative file of `.eslintignore`.
+ * @property {string[]|null} rulePaths The value of `--rulesdir` option. This is used to reset `baseConfigArray`.
+ * @property {string|null} specificConfigPath The value of `--config` option. This is used to reset `cliConfigArray`.
+ * @property {boolean} useEslintrc if `false` then it doesn't load config files.
+ * @property {Function} loadRules The function to use to load rules.
+ * @property {Map} builtInRules The rules that are built in to ESLint.
+ * @property {Object} [resolver=ModuleResolver] The module resolver object.
+ * @property {string} eslintAllPath The path to the definitions for eslint:all.
+ * @property {Function} getEslintAllConfig Returns the config data for eslint:all.
+ * @property {string} eslintRecommendedPath The path to the definitions for eslint:recommended.
+ * @property {Function} getEslintRecommendedConfig Returns the config data for eslint:recommended.
+ */
+
+/** @type {WeakMap} */
+const internalSlotsMap = new WeakMap();
+
+/**
+ * Create the config array from `baseConfig` and `rulePaths`.
+ * @param {CascadingConfigArrayFactoryInternalSlots} slots The slots.
+ * @returns {ConfigArray} The config array of the base configs.
+ */
+function createBaseConfigArray({
+ configArrayFactory,
+ baseConfigData,
+ rulePaths,
+ cwd,
+ loadRules
+}) {
+ const baseConfigArray = configArrayFactory.create(
+ baseConfigData,
+ { name: "BaseConfig" }
+ );
+
+ /*
+ * Create the config array element for the default ignore patterns.
+ * This element has `ignorePattern` property that ignores the default
+ * patterns in the current working directory.
+ */
+ baseConfigArray.unshift(configArrayFactory.create(
+ { ignorePatterns: IgnorePattern.DefaultPatterns },
+ { name: "DefaultIgnorePattern" }
+ )[0]);
+
+ /*
+ * Load rules `--rulesdir` option as a pseudo plugin.
+ * Use a pseudo plugin to define rules of `--rulesdir`, so we can validate
+ * the rule's options with only information in the config array.
+ */
+ if (rulePaths && rulePaths.length > 0) {
+ baseConfigArray.push({
+ type: "config",
+ name: "--rulesdir",
+ filePath: "",
+ plugins: {
+ "": new ConfigDependency({
+ definition: {
+ rules: rulePaths.reduce(
+ (map, rulesPath) => Object.assign(
+ map,
+ loadRules(rulesPath, cwd)
+ ),
+ {}
+ )
+ },
+ filePath: "",
+ id: "",
+ importerName: "--rulesdir",
+ importerPath: ""
+ })
+ }
+ });
+ }
+
+ return baseConfigArray;
+}
+
+/**
+ * Create the config array from CLI options.
+ * @param {CascadingConfigArrayFactoryInternalSlots} slots The slots.
+ * @returns {ConfigArray} The config array of the base configs.
+ */
+function createCLIConfigArray({
+ cliConfigData,
+ configArrayFactory,
+ cwd,
+ ignorePath,
+ specificConfigPath
+}) {
+ const cliConfigArray = configArrayFactory.create(
+ cliConfigData,
+ { name: "CLIOptions" }
+ );
+
+ cliConfigArray.unshift(
+ ...(ignorePath
+ ? configArrayFactory.loadESLintIgnore(ignorePath)
+ : configArrayFactory.loadDefaultESLintIgnore())
+ );
+
+ if (specificConfigPath) {
+ cliConfigArray.unshift(
+ ...configArrayFactory.loadFile(
+ specificConfigPath,
+ { name: "--config", basePath: cwd }
+ )
+ );
+ }
+
+ return cliConfigArray;
+}
+
+/**
+ * The error type when there are files matched by a glob, but all of them have been ignored.
+ */
+class ConfigurationNotFoundError extends Error {
+
+ // eslint-disable-next-line jsdoc/require-description
+ /**
+ * @param {string} directoryPath The directory path.
+ */
+ constructor(directoryPath) {
+ super(`No ESLint configuration found in ${directoryPath}.`);
+ this.messageTemplate = "no-config-found";
+ this.messageData = { directoryPath };
+ }
+}
+
+/**
+ * This class provides the functionality that enumerates every file which is
+ * matched by given glob patterns and that configuration.
+ */
+class CascadingConfigArrayFactory {
+
+ /**
+ * Initialize this enumerator.
+ * @param {CascadingConfigArrayFactoryOptions} options The options.
+ */
+ constructor({
+ additionalPluginPool = new Map(),
+ baseConfig: baseConfigData = null,
+ cliConfig: cliConfigData = null,
+ cwd = process.cwd(),
+ ignorePath,
+ resolvePluginsRelativeTo,
+ rulePaths = [],
+ specificConfigPath = null,
+ useEslintrc = true,
+ builtInRules = new Map(),
+ loadRules,
+ resolver,
+ eslintRecommendedPath,
+ getEslintRecommendedConfig,
+ eslintAllPath,
+ getEslintAllConfig
+ } = {}) {
+ const configArrayFactory = new ConfigArrayFactory({
+ additionalPluginPool,
+ cwd,
+ resolvePluginsRelativeTo,
+ builtInRules,
+ resolver,
+ eslintRecommendedPath,
+ getEslintRecommendedConfig,
+ eslintAllPath,
+ getEslintAllConfig
+ });
+
+ internalSlotsMap.set(this, {
+ baseConfigArray: createBaseConfigArray({
+ baseConfigData,
+ configArrayFactory,
+ cwd,
+ rulePaths,
+ loadRules
+ }),
+ baseConfigData,
+ cliConfigArray: createCLIConfigArray({
+ cliConfigData,
+ configArrayFactory,
+ cwd,
+ ignorePath,
+ specificConfigPath
+ }),
+ cliConfigData,
+ configArrayFactory,
+ configCache: new Map(),
+ cwd,
+ finalizeCache: new WeakMap(),
+ ignorePath,
+ rulePaths,
+ specificConfigPath,
+ useEslintrc,
+ builtInRules,
+ loadRules
+ });
+ }
+
+ /**
+ * The path to the current working directory.
+ * This is used by tests.
+ * @type {string}
+ */
+ get cwd() {
+ const { cwd } = internalSlotsMap.get(this);
+
+ return cwd;
+ }
+
+ /**
+ * Get the config array of a given file.
+ * If `filePath` was not given, it returns the config which contains only
+ * `baseConfigData` and `cliConfigData`.
+ * @param {string} [filePath] The file path to a file.
+ * @param {Object} [options] The options.
+ * @param {boolean} [options.ignoreNotFoundError] If `true` then it doesn't throw `ConfigurationNotFoundError`.
+ * @returns {ConfigArray} The config array of the file.
+ */
+ getConfigArrayForFile(filePath, { ignoreNotFoundError = false } = {}) {
+ const {
+ baseConfigArray,
+ cliConfigArray,
+ cwd
+ } = internalSlotsMap.get(this);
+
+ if (!filePath) {
+ return new ConfigArray(...baseConfigArray, ...cliConfigArray);
+ }
+
+ const directoryPath = path__default["default"].dirname(path__default["default"].resolve(cwd, filePath));
+
+ debug$1(`Load config files for ${directoryPath}.`);
+
+ return this._finalizeConfigArray(
+ this._loadConfigInAncestors(directoryPath),
+ directoryPath,
+ ignoreNotFoundError
+ );
+ }
+
+ /**
+ * Set the config data to override all configs.
+ * Require to call `clearCache()` method after this method is called.
+ * @param {ConfigData} configData The config data to override all configs.
+ * @returns {void}
+ */
+ setOverrideConfig(configData) {
+ const slots = internalSlotsMap.get(this);
+
+ slots.cliConfigData = configData;
+ }
+
+ /**
+ * Clear config cache.
+ * @returns {void}
+ */
+ clearCache() {
+ const slots = internalSlotsMap.get(this);
+
+ slots.baseConfigArray = createBaseConfigArray(slots);
+ slots.cliConfigArray = createCLIConfigArray(slots);
+ slots.configCache.clear();
+ }
+
+ /**
+ * Load and normalize config files from the ancestor directories.
+ * @param {string} directoryPath The path to a leaf directory.
+ * @param {boolean} configsExistInSubdirs `true` if configurations exist in subdirectories.
+ * @returns {ConfigArray} The loaded config.
+ * @private
+ */
+ _loadConfigInAncestors(directoryPath, configsExistInSubdirs = false) {
+ const {
+ baseConfigArray,
+ configArrayFactory,
+ configCache,
+ cwd,
+ useEslintrc
+ } = internalSlotsMap.get(this);
+
+ if (!useEslintrc) {
+ return baseConfigArray;
+ }
+
+ let configArray = configCache.get(directoryPath);
+
+ // Hit cache.
+ if (configArray) {
+ debug$1(`Cache hit: ${directoryPath}.`);
+ return configArray;
+ }
+ debug$1(`No cache found: ${directoryPath}.`);
+
+ const homePath = os__default["default"].homedir();
+
+ // Consider this is root.
+ if (directoryPath === homePath && cwd !== homePath) {
+ debug$1("Stop traversing because of considered root.");
+ if (configsExistInSubdirs) {
+ const filePath = ConfigArrayFactory.getPathToConfigFileInDirectory(directoryPath);
+
+ if (filePath) {
+ emitDeprecationWarning(
+ filePath,
+ "ESLINT_PERSONAL_CONFIG_SUPPRESS"
+ );
+ }
+ }
+ return this._cacheConfig(directoryPath, baseConfigArray);
+ }
+
+ // Load the config on this directory.
+ try {
+ configArray = configArrayFactory.loadInDirectory(directoryPath);
+ } catch (error) {
+ /* istanbul ignore next */
+ if (error.code === "EACCES") {
+ debug$1("Stop traversing because of 'EACCES' error.");
+ return this._cacheConfig(directoryPath, baseConfigArray);
+ }
+ throw error;
+ }
+
+ if (configArray.length > 0 && configArray.isRoot()) {
+ debug$1("Stop traversing because of 'root:true'.");
+ configArray.unshift(...baseConfigArray);
+ return this._cacheConfig(directoryPath, configArray);
+ }
+
+ // Load from the ancestors and merge it.
+ const parentPath = path__default["default"].dirname(directoryPath);
+ const parentConfigArray = parentPath && parentPath !== directoryPath
+ ? this._loadConfigInAncestors(
+ parentPath,
+ configsExistInSubdirs || configArray.length > 0
+ )
+ : baseConfigArray;
+
+ if (configArray.length > 0) {
+ configArray.unshift(...parentConfigArray);
+ } else {
+ configArray = parentConfigArray;
+ }
+
+ // Cache and return.
+ return this._cacheConfig(directoryPath, configArray);
+ }
+
+ /**
+ * Freeze and cache a given config.
+ * @param {string} directoryPath The path to a directory as a cache key.
+ * @param {ConfigArray} configArray The config array as a cache value.
+ * @returns {ConfigArray} The `configArray` (frozen).
+ */
+ _cacheConfig(directoryPath, configArray) {
+ const { configCache } = internalSlotsMap.get(this);
+
+ Object.freeze(configArray);
+ configCache.set(directoryPath, configArray);
+
+ return configArray;
+ }
+
+ /**
+ * Finalize a given config array.
+ * Concatenate `--config` and other CLI options.
+ * @param {ConfigArray} configArray The parent config array.
+ * @param {string} directoryPath The path to the leaf directory to find config files.
+ * @param {boolean} ignoreNotFoundError If `true` then it doesn't throw `ConfigurationNotFoundError`.
+ * @returns {ConfigArray} The loaded config.
+ * @private
+ */
+ _finalizeConfigArray(configArray, directoryPath, ignoreNotFoundError) {
+ const {
+ cliConfigArray,
+ configArrayFactory,
+ finalizeCache,
+ useEslintrc,
+ builtInRules
+ } = internalSlotsMap.get(this);
+
+ let finalConfigArray = finalizeCache.get(configArray);
+
+ if (!finalConfigArray) {
+ finalConfigArray = configArray;
+
+ // Load the personal config if there are no regular config files.
+ if (
+ useEslintrc &&
+ configArray.every(c => !c.filePath) &&
+ cliConfigArray.every(c => !c.filePath) // `--config` option can be a file.
+ ) {
+ const homePath = os__default["default"].homedir();
+
+ debug$1("Loading the config file of the home directory:", homePath);
+
+ const personalConfigArray = configArrayFactory.loadInDirectory(
+ homePath,
+ { name: "PersonalConfig" }
+ );
+
+ if (
+ personalConfigArray.length > 0 &&
+ !directoryPath.startsWith(homePath)
+ ) {
+ const lastElement =
+ personalConfigArray[personalConfigArray.length - 1];
+
+ emitDeprecationWarning(
+ lastElement.filePath,
+ "ESLINT_PERSONAL_CONFIG_LOAD"
+ );
+ }
+
+ finalConfigArray = finalConfigArray.concat(personalConfigArray);
+ }
+
+ // Apply CLI options.
+ if (cliConfigArray.length > 0) {
+ finalConfigArray = finalConfigArray.concat(cliConfigArray);
+ }
+
+ // Validate rule settings and environments.
+ const validator = new ConfigValidator({
+ builtInRules
+ });
+
+ validator.validateConfigArray(finalConfigArray);
+
+ // Cache it.
+ Object.freeze(finalConfigArray);
+ finalizeCache.set(configArray, finalConfigArray);
+
+ debug$1(
+ "Configuration was determined: %o on %s",
+ finalConfigArray,
+ directoryPath
+ );
+ }
+
+ // At least one element (the default ignore patterns) exists.
+ if (!ignoreNotFoundError && useEslintrc && finalConfigArray.length <= 1) {
+ throw new ConfigurationNotFoundError(directoryPath);
+ }
+
+ return finalConfigArray;
+ }
+}
+
+/**
+ * @fileoverview Compatibility class for flat config.
+ * @author Nicholas C. Zakas
+ */
+
+//-----------------------------------------------------------------------------
+// Helpers
+//-----------------------------------------------------------------------------
+
+/** @typedef {import("../../shared/types").Environment} Environment */
+/** @typedef {import("../../shared/types").Processor} Processor */
+
+const debug = debugOrig__default["default"]("eslintrc:flat-compat");
+const cafactory = Symbol("cafactory");
+
+/**
+ * Translates an ESLintRC-style config object into a flag-config-style config
+ * object.
+ * @param {Object} eslintrcConfig An ESLintRC-style config object.
+ * @param {Object} options Options to help translate the config.
+ * @param {string} options.resolveConfigRelativeTo To the directory to resolve
+ * configs from.
+ * @param {string} options.resolvePluginsRelativeTo The directory to resolve
+ * plugins from.
+ * @param {ReadOnlyMap} options.pluginEnvironments A map of plugin environment
+ * names to objects.
+ * @param {ReadOnlyMap} options.pluginProcessors A map of plugin processor
+ * names to objects.
+ * @returns {Object} A flag-config-style config object.
+ */
+function translateESLintRC(eslintrcConfig, {
+ resolveConfigRelativeTo,
+ resolvePluginsRelativeTo,
+ pluginEnvironments,
+ pluginProcessors
+}) {
+
+ const flatConfig = {};
+ const configs = [];
+ const languageOptions = {};
+ const linterOptions = {};
+ const keysToCopy = ["settings", "rules", "processor"];
+ const languageOptionsKeysToCopy = ["globals", "parser", "parserOptions"];
+ const linterOptionsKeysToCopy = ["noInlineConfig", "reportUnusedDisableDirectives"];
+
+ // copy over simple translations
+ for (const key of keysToCopy) {
+ if (key in eslintrcConfig && typeof eslintrcConfig[key] !== "undefined") {
+ flatConfig[key] = eslintrcConfig[key];
+ }
+ }
+
+ // copy over languageOptions
+ for (const key of languageOptionsKeysToCopy) {
+ if (key in eslintrcConfig && typeof eslintrcConfig[key] !== "undefined") {
+
+ // create the languageOptions key in the flat config
+ flatConfig.languageOptions = languageOptions;
+
+ if (key === "parser") {
+ debug(`Resolving parser '${languageOptions[key]}' relative to ${resolveConfigRelativeTo}`);
+
+ if (eslintrcConfig[key].error) {
+ throw eslintrcConfig[key].error;
+ }
+
+ languageOptions[key] = eslintrcConfig[key].definition;
+ continue;
+ }
+
+ // clone any object values that are in the eslintrc config
+ if (eslintrcConfig[key] && typeof eslintrcConfig[key] === "object") {
+ languageOptions[key] = {
+ ...eslintrcConfig[key]
+ };
+ } else {
+ languageOptions[key] = eslintrcConfig[key];
+ }
+ }
+ }
+
+ // copy over linterOptions
+ for (const key of linterOptionsKeysToCopy) {
+ if (key in eslintrcConfig && typeof eslintrcConfig[key] !== "undefined") {
+ flatConfig.linterOptions = linterOptions;
+ linterOptions[key] = eslintrcConfig[key];
+ }
+ }
+
+ // move ecmaVersion a level up
+ if (languageOptions.parserOptions) {
+
+ if ("ecmaVersion" in languageOptions.parserOptions) {
+ languageOptions.ecmaVersion = languageOptions.parserOptions.ecmaVersion;
+ delete languageOptions.parserOptions.ecmaVersion;
+ }
+
+ if ("sourceType" in languageOptions.parserOptions) {
+ languageOptions.sourceType = languageOptions.parserOptions.sourceType;
+ delete languageOptions.parserOptions.sourceType;
+ }
+
+ // check to see if we even need parserOptions anymore and remove it if not
+ if (Object.keys(languageOptions.parserOptions).length === 0) {
+ delete languageOptions.parserOptions;
+ }
+ }
+
+ // overrides
+ if (eslintrcConfig.criteria) {
+ flatConfig.files = [absoluteFilePath => eslintrcConfig.criteria.test(absoluteFilePath)];
+ }
+
+ // translate plugins
+ if (eslintrcConfig.plugins && typeof eslintrcConfig.plugins === "object") {
+ debug(`Translating plugins: ${eslintrcConfig.plugins}`);
+
+ flatConfig.plugins = {};
+
+ for (const pluginName of Object.keys(eslintrcConfig.plugins)) {
+
+ debug(`Translating plugin: ${pluginName}`);
+ debug(`Resolving plugin '${pluginName} relative to ${resolvePluginsRelativeTo}`);
+
+ const { definition: plugin, error } = eslintrcConfig.plugins[pluginName];
+
+ if (error) {
+ throw error;
+ }
+
+ flatConfig.plugins[pluginName] = plugin;
+
+ // create a config for any processors
+ if (plugin.processors) {
+ for (const processorName of Object.keys(plugin.processors)) {
+ if (processorName.startsWith(".")) {
+ debug(`Assigning processor: ${pluginName}/${processorName}`);
+
+ configs.unshift({
+ files: [`**/*${processorName}`],
+ processor: pluginProcessors.get(`${pluginName}/${processorName}`)
+ });
+ }
+
+ }
+ }
+ }
+ }
+
+ // translate env - must come after plugins
+ if (eslintrcConfig.env && typeof eslintrcConfig.env === "object") {
+ for (const envName of Object.keys(eslintrcConfig.env)) {
+
+ // only add environments that are true
+ if (eslintrcConfig.env[envName]) {
+ debug(`Translating environment: ${envName}`);
+
+ if (environments.has(envName)) {
+
+ // built-in environments should be defined first
+ configs.unshift(...translateESLintRC({
+ criteria: eslintrcConfig.criteria,
+ ...environments.get(envName)
+ }, {
+ resolveConfigRelativeTo,
+ resolvePluginsRelativeTo
+ }));
+ } else if (pluginEnvironments.has(envName)) {
+
+ // if the environment comes from a plugin, it should come after the plugin config
+ configs.push(...translateESLintRC({
+ criteria: eslintrcConfig.criteria,
+ ...pluginEnvironments.get(envName)
+ }, {
+ resolveConfigRelativeTo,
+ resolvePluginsRelativeTo
+ }));
+ }
+ }
+ }
+ }
+
+ // only add if there are actually keys in the config
+ if (Object.keys(flatConfig).length > 0) {
+ configs.push(flatConfig);
+ }
+
+ return configs;
+}
+
+
+//-----------------------------------------------------------------------------
+// Exports
+//-----------------------------------------------------------------------------
+
+/**
+ * A compatibility class for working with configs.
+ */
+class FlatCompat {
+
+ constructor({
+ baseDirectory = process.cwd(),
+ resolvePluginsRelativeTo = baseDirectory,
+ recommendedConfig,
+ allConfig
+ } = {}) {
+ this.baseDirectory = baseDirectory;
+ this.resolvePluginsRelativeTo = resolvePluginsRelativeTo;
+ this[cafactory] = new ConfigArrayFactory({
+ cwd: baseDirectory,
+ resolvePluginsRelativeTo,
+ getEslintAllConfig: () => {
+
+ if (!allConfig) {
+ throw new TypeError("Missing parameter 'allConfig' in FlatCompat constructor.");
+ }
+
+ return allConfig;
+ },
+ getEslintRecommendedConfig: () => {
+
+ if (!recommendedConfig) {
+ throw new TypeError("Missing parameter 'recommendedConfig' in FlatCompat constructor.");
+ }
+
+ return recommendedConfig;
+ }
+ });
+ }
+
+ /**
+ * Translates an ESLintRC-style config into a flag-config-style config.
+ * @param {Object} eslintrcConfig The ESLintRC-style config object.
+ * @returns {Object} A flag-config-style config object.
+ */
+ config(eslintrcConfig) {
+ const eslintrcArray = this[cafactory].create(eslintrcConfig, {
+ basePath: this.baseDirectory
+ });
+
+ const flatArray = [];
+ let hasIgnorePatterns = false;
+
+ eslintrcArray.forEach(configData => {
+ if (configData.type === "config") {
+ hasIgnorePatterns = hasIgnorePatterns || configData.ignorePattern;
+ flatArray.push(...translateESLintRC(configData, {
+ resolveConfigRelativeTo: path__default["default"].join(this.baseDirectory, "__placeholder.js"),
+ resolvePluginsRelativeTo: path__default["default"].join(this.resolvePluginsRelativeTo, "__placeholder.js"),
+ pluginEnvironments: eslintrcArray.pluginEnvironments,
+ pluginProcessors: eslintrcArray.pluginProcessors
+ }));
+ }
+ });
+
+ // combine ignorePatterns to emulate ESLintRC behavior better
+ if (hasIgnorePatterns) {
+ flatArray.unshift({
+ ignores: [filePath => {
+
+ // Compute the final config for this file.
+ // This filters config array elements by `files`/`excludedFiles` then merges the elements.
+ const finalConfig = eslintrcArray.extractConfig(filePath);
+
+ // Test the `ignorePattern` properties of the final config.
+ return Boolean(finalConfig.ignores) && finalConfig.ignores(filePath);
+ }]
+ });
+ }
+
+ return flatArray;
+ }
+
+ /**
+ * Translates the `env` section of an ESLintRC-style config.
+ * @param {Object} envConfig The `env` section of an ESLintRC config.
+ * @returns {Object[]} An array of flag-config objects representing the environments.
+ */
+ env(envConfig) {
+ return this.config({
+ env: envConfig
+ });
+ }
+
+ /**
+ * Translates the `extends` section of an ESLintRC-style config.
+ * @param {...string} configsToExtend The names of the configs to load.
+ * @returns {Object[]} An array of flag-config objects representing the config.
+ */
+ extends(...configsToExtend) {
+ return this.config({
+ extends: configsToExtend
+ });
+ }
+
+ /**
+ * Translates the `plugins` section of an ESLintRC-style config.
+ * @param {...string} plugins The names of the plugins to load.
+ * @returns {Object[]} An array of flag-config objects representing the plugins.
+ */
+ plugins(...plugins) {
+ return this.config({
+ plugins
+ });
+ }
+}
+
+/**
+ * @fileoverview Package exports for @eslint/eslintrc
+ * @author Nicholas C. Zakas
+ */
+
+//-----------------------------------------------------------------------------
+// Exports
+//-----------------------------------------------------------------------------
+
+const Legacy = {
+ ConfigArray,
+ createConfigArrayFactoryContext: createContext,
+ CascadingConfigArrayFactory,
+ ConfigArrayFactory,
+ ConfigDependency,
+ ExtractedConfig,
+ IgnorePattern,
+ OverrideTester,
+ getUsedExtractedConfigs,
+ environments,
+
+ // shared
+ ConfigOps,
+ ConfigValidator,
+ ModuleResolver,
+ naming
+};
+
+exports.FlatCompat = FlatCompat;
+exports.Legacy = Legacy;
+//# sourceMappingURL=eslintrc.cjs.map
diff --git a/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint/eslintrc/dist/eslintrc.cjs.map b/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint/eslintrc/dist/eslintrc.cjs.map
new file mode 100644
index 0000000..c3012ce
--- /dev/null
+++ b/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint/eslintrc/dist/eslintrc.cjs.map
@@ -0,0 +1 @@
+{"version":3,"file":"eslintrc.cjs","sources":["../lib/config-array/ignore-pattern.js","../lib/config-array/extracted-config.js","../lib/config-array/config-array.js","../lib/config-array/config-dependency.js","../lib/config-array/override-tester.js","../lib/config-array/index.js","../lib/shared/config-ops.js","../lib/shared/deprecation-warnings.js","../lib/shared/ajv.js","../conf/config-schema.js","../conf/environments.js","../lib/shared/config-validator.js","../lib/shared/naming.js","../lib/shared/relative-module-resolver.js","../lib/config-array-factory.js","../lib/cascading-config-array-factory.js","../lib/flat-compat.js","../lib/index.js"],"sourcesContent":["/**\n * @fileoverview `IgnorePattern` class.\n *\n * `IgnorePattern` class has the set of glob patterns and the base path.\n *\n * It provides two static methods.\n *\n * - `IgnorePattern.createDefaultIgnore(cwd)`\n * Create the default predicate function.\n * - `IgnorePattern.createIgnore(ignorePatterns)`\n * Create the predicate function from multiple `IgnorePattern` objects.\n *\n * It provides two properties and a method.\n *\n * - `patterns`\n * The glob patterns that ignore to lint.\n * - `basePath`\n * The base path of the glob patterns. If absolute paths existed in the\n * glob patterns, those are handled as relative paths to the base path.\n * - `getPatternsRelativeTo(basePath)`\n * Get `patterns` as modified for a given base path. It modifies the\n * absolute paths in the patterns as prepending the difference of two base\n * paths.\n *\n * `ConfigArrayFactory` creates `IgnorePattern` objects when it processes\n * `ignorePatterns` properties.\n *\n * @author Toru Nagashima \n */\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nimport assert from \"assert\";\nimport path from \"path\";\nimport ignore from \"ignore\";\nimport debugOrig from \"debug\";\n\nconst debug = debugOrig(\"eslintrc:ignore-pattern\");\n\n/** @typedef {ReturnType} Ignore */\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\n/**\n * Get the path to the common ancestor directory of given paths.\n * @param {string[]} sourcePaths The paths to calculate the common ancestor.\n * @returns {string} The path to the common ancestor directory.\n */\nfunction getCommonAncestorPath(sourcePaths) {\n let result = sourcePaths[0];\n\n for (let i = 1; i < sourcePaths.length; ++i) {\n const a = result;\n const b = sourcePaths[i];\n\n // Set the shorter one (it's the common ancestor if one includes the other).\n result = a.length < b.length ? a : b;\n\n // Set the common ancestor.\n for (let j = 0, lastSepPos = 0; j < a.length && j < b.length; ++j) {\n if (a[j] !== b[j]) {\n result = a.slice(0, lastSepPos);\n break;\n }\n if (a[j] === path.sep) {\n lastSepPos = j;\n }\n }\n }\n\n let resolvedResult = result || path.sep;\n\n // if Windows common ancestor is root of drive must have trailing slash to be absolute.\n if (resolvedResult && resolvedResult.endsWith(\":\") && process.platform === \"win32\") {\n resolvedResult += path.sep;\n }\n return resolvedResult;\n}\n\n/**\n * Make relative path.\n * @param {string} from The source path to get relative path.\n * @param {string} to The destination path to get relative path.\n * @returns {string} The relative path.\n */\nfunction relative(from, to) {\n const relPath = path.relative(from, to);\n\n if (path.sep === \"/\") {\n return relPath;\n }\n return relPath.split(path.sep).join(\"/\");\n}\n\n/**\n * Get the trailing slash if existed.\n * @param {string} filePath The path to check.\n * @returns {string} The trailing slash if existed.\n */\nfunction dirSuffix(filePath) {\n const isDir = (\n filePath.endsWith(path.sep) ||\n (process.platform === \"win32\" && filePath.endsWith(\"/\"))\n );\n\n return isDir ? \"/\" : \"\";\n}\n\nconst DefaultPatterns = Object.freeze([\"/**/node_modules/*\"]);\nconst DotPatterns = Object.freeze([\".*\", \"!.eslintrc.*\", \"!../\"]);\n\n//------------------------------------------------------------------------------\n// Public\n//------------------------------------------------------------------------------\n\nclass IgnorePattern {\n\n /**\n * The default patterns.\n * @type {string[]}\n */\n static get DefaultPatterns() {\n return DefaultPatterns;\n }\n\n /**\n * Create the default predicate function.\n * @param {string} cwd The current working directory.\n * @returns {((filePath:string, dot:boolean) => boolean) & {basePath:string; patterns:string[]}}\n * The preficate function.\n * The first argument is an absolute path that is checked.\n * The second argument is the flag to not ignore dotfiles.\n * If the predicate function returned `true`, it means the path should be ignored.\n */\n static createDefaultIgnore(cwd) {\n return this.createIgnore([new IgnorePattern(DefaultPatterns, cwd)]);\n }\n\n /**\n * Create the predicate function from multiple `IgnorePattern` objects.\n * @param {IgnorePattern[]} ignorePatterns The list of ignore patterns.\n * @returns {((filePath:string, dot?:boolean) => boolean) & {basePath:string; patterns:string[]}}\n * The preficate function.\n * The first argument is an absolute path that is checked.\n * The second argument is the flag to not ignore dotfiles.\n * If the predicate function returned `true`, it means the path should be ignored.\n */\n static createIgnore(ignorePatterns) {\n debug(\"Create with: %o\", ignorePatterns);\n\n const basePath = getCommonAncestorPath(ignorePatterns.map(p => p.basePath));\n const patterns = [].concat(\n ...ignorePatterns.map(p => p.getPatternsRelativeTo(basePath))\n );\n const ig = ignore({ allowRelativePaths: true }).add([...DotPatterns, ...patterns]);\n const dotIg = ignore({ allowRelativePaths: true }).add(patterns);\n\n debug(\" processed: %o\", { basePath, patterns });\n\n return Object.assign(\n (filePath, dot = false) => {\n assert(path.isAbsolute(filePath), \"'filePath' should be an absolute path.\");\n const relPathRaw = relative(basePath, filePath);\n const relPath = relPathRaw && (relPathRaw + dirSuffix(filePath));\n const adoptedIg = dot ? dotIg : ig;\n const result = relPath !== \"\" && adoptedIg.ignores(relPath);\n\n debug(\"Check\", { filePath, dot, relativePath: relPath, result });\n return result;\n },\n { basePath, patterns }\n );\n }\n\n /**\n * Initialize a new `IgnorePattern` instance.\n * @param {string[]} patterns The glob patterns that ignore to lint.\n * @param {string} basePath The base path of `patterns`.\n */\n constructor(patterns, basePath) {\n assert(path.isAbsolute(basePath), \"'basePath' should be an absolute path.\");\n\n /**\n * The glob patterns that ignore to lint.\n * @type {string[]}\n */\n this.patterns = patterns;\n\n /**\n * The base path of `patterns`.\n * @type {string}\n */\n this.basePath = basePath;\n\n /**\n * If `true` then patterns which don't start with `/` will match the paths to the outside of `basePath`. Defaults to `false`.\n *\n * It's set `true` for `.eslintignore`, `package.json`, and `--ignore-path` for backward compatibility.\n * It's `false` as-is for `ignorePatterns` property in config files.\n * @type {boolean}\n */\n this.loose = false;\n }\n\n /**\n * Get `patterns` as modified for a given base path. It modifies the\n * absolute paths in the patterns as prepending the difference of two base\n * paths.\n * @param {string} newBasePath The base path.\n * @returns {string[]} Modifired patterns.\n */\n getPatternsRelativeTo(newBasePath) {\n assert(path.isAbsolute(newBasePath), \"'newBasePath' should be an absolute path.\");\n const { basePath, loose, patterns } = this;\n\n if (newBasePath === basePath) {\n return patterns;\n }\n const prefix = `/${relative(newBasePath, basePath)}`;\n\n return patterns.map(pattern => {\n const negative = pattern.startsWith(\"!\");\n const head = negative ? \"!\" : \"\";\n const body = negative ? pattern.slice(1) : pattern;\n\n if (body.startsWith(\"/\") || body.startsWith(\"../\")) {\n return `${head}${prefix}${body}`;\n }\n return loose ? pattern : `${head}${prefix}/**/${body}`;\n });\n }\n}\n\nexport { IgnorePattern };\n","/**\n * @fileoverview `ExtractedConfig` class.\n *\n * `ExtractedConfig` class expresses a final configuration for a specific file.\n *\n * It provides one method.\n *\n * - `toCompatibleObjectAsConfigFileContent()`\n * Convert this configuration to the compatible object as the content of\n * config files. It converts the loaded parser and plugins to strings.\n * `CLIEngine#getConfigForFile(filePath)` method uses this method.\n *\n * `ConfigArray#extractConfig(filePath)` creates a `ExtractedConfig` instance.\n *\n * @author Toru Nagashima \n */\n\nimport { IgnorePattern } from \"./ignore-pattern.js\";\n\n// For VSCode intellisense\n/** @typedef {import(\"../../shared/types\").ConfigData} ConfigData */\n/** @typedef {import(\"../../shared/types\").GlobalConf} GlobalConf */\n/** @typedef {import(\"../../shared/types\").SeverityConf} SeverityConf */\n/** @typedef {import(\"./config-dependency\").DependentParser} DependentParser */\n/** @typedef {import(\"./config-dependency\").DependentPlugin} DependentPlugin */\n\n/**\n * Check if `xs` starts with `ys`.\n * @template T\n * @param {T[]} xs The array to check.\n * @param {T[]} ys The array that may be the first part of `xs`.\n * @returns {boolean} `true` if `xs` starts with `ys`.\n */\nfunction startsWith(xs, ys) {\n return xs.length >= ys.length && ys.every((y, i) => y === xs[i]);\n}\n\n/**\n * The class for extracted config data.\n */\nclass ExtractedConfig {\n constructor() {\n\n /**\n * The config name what `noInlineConfig` setting came from.\n * @type {string}\n */\n this.configNameOfNoInlineConfig = \"\";\n\n /**\n * Environments.\n * @type {Record}\n */\n this.env = {};\n\n /**\n * Global variables.\n * @type {Record}\n */\n this.globals = {};\n\n /**\n * The glob patterns that ignore to lint.\n * @type {(((filePath:string, dot?:boolean) => boolean) & { basePath:string; patterns:string[] }) | undefined}\n */\n this.ignores = void 0;\n\n /**\n * The flag that disables directive comments.\n * @type {boolean|undefined}\n */\n this.noInlineConfig = void 0;\n\n /**\n * Parser definition.\n * @type {DependentParser|null}\n */\n this.parser = null;\n\n /**\n * Options for the parser.\n * @type {Object}\n */\n this.parserOptions = {};\n\n /**\n * Plugin definitions.\n * @type {Record}\n */\n this.plugins = {};\n\n /**\n * Processor ID.\n * @type {string|null}\n */\n this.processor = null;\n\n /**\n * The flag that reports unused `eslint-disable` directive comments.\n * @type {boolean|undefined}\n */\n this.reportUnusedDisableDirectives = void 0;\n\n /**\n * Rule settings.\n * @type {Record}\n */\n this.rules = {};\n\n /**\n * Shared settings.\n * @type {Object}\n */\n this.settings = {};\n }\n\n /**\n * Convert this config to the compatible object as a config file content.\n * @returns {ConfigData} The converted object.\n */\n toCompatibleObjectAsConfigFileContent() {\n const {\n /* eslint-disable no-unused-vars */\n configNameOfNoInlineConfig: _ignore1,\n processor: _ignore2,\n /* eslint-enable no-unused-vars */\n ignores,\n ...config\n } = this;\n\n config.parser = config.parser && config.parser.filePath;\n config.plugins = Object.keys(config.plugins).filter(Boolean).reverse();\n config.ignorePatterns = ignores ? ignores.patterns : [];\n\n // Strip the default patterns from `ignorePatterns`.\n if (startsWith(config.ignorePatterns, IgnorePattern.DefaultPatterns)) {\n config.ignorePatterns =\n config.ignorePatterns.slice(IgnorePattern.DefaultPatterns.length);\n }\n\n return config;\n }\n}\n\nexport { ExtractedConfig };\n","/**\n * @fileoverview `ConfigArray` class.\n *\n * `ConfigArray` class expresses the full of a configuration. It has the entry\n * config file, base config files that were extended, loaded parsers, and loaded\n * plugins.\n *\n * `ConfigArray` class provides three properties and two methods.\n *\n * - `pluginEnvironments`\n * - `pluginProcessors`\n * - `pluginRules`\n * The `Map` objects that contain the members of all plugins that this\n * config array contains. Those map objects don't have mutation methods.\n * Those keys are the member ID such as `pluginId/memberName`.\n * - `isRoot()`\n * If `true` then this configuration has `root:true` property.\n * - `extractConfig(filePath)`\n * Extract the final configuration for a given file. This means merging\n * every config array element which that `criteria` property matched. The\n * `filePath` argument must be an absolute path.\n *\n * `ConfigArrayFactory` provides the loading logic of config files.\n *\n * @author Toru Nagashima \n */\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nimport { ExtractedConfig } from \"./extracted-config.js\";\nimport { IgnorePattern } from \"./ignore-pattern.js\";\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\n// Define types for VSCode IntelliSense.\n/** @typedef {import(\"../../shared/types\").Environment} Environment */\n/** @typedef {import(\"../../shared/types\").GlobalConf} GlobalConf */\n/** @typedef {import(\"../../shared/types\").RuleConf} RuleConf */\n/** @typedef {import(\"../../shared/types\").Rule} Rule */\n/** @typedef {import(\"../../shared/types\").Plugin} Plugin */\n/** @typedef {import(\"../../shared/types\").Processor} Processor */\n/** @typedef {import(\"./config-dependency\").DependentParser} DependentParser */\n/** @typedef {import(\"./config-dependency\").DependentPlugin} DependentPlugin */\n/** @typedef {import(\"./override-tester\")[\"OverrideTester\"]} OverrideTester */\n\n/**\n * @typedef {Object} ConfigArrayElement\n * @property {string} name The name of this config element.\n * @property {string} filePath The path to the source file of this config element.\n * @property {InstanceType|null} criteria The tester for the `files` and `excludedFiles` of this config element.\n * @property {Record|undefined} env The environment settings.\n * @property {Record|undefined} globals The global variable settings.\n * @property {IgnorePattern|undefined} ignorePattern The ignore patterns.\n * @property {boolean|undefined} noInlineConfig The flag that disables directive comments.\n * @property {DependentParser|undefined} parser The parser loader.\n * @property {Object|undefined} parserOptions The parser options.\n * @property {Record|undefined} plugins The plugin loaders.\n * @property {string|undefined} processor The processor name to refer plugin's processor.\n * @property {boolean|undefined} reportUnusedDisableDirectives The flag to report unused `eslint-disable` comments.\n * @property {boolean|undefined} root The flag to express root.\n * @property {Record|undefined} rules The rule settings\n * @property {Object|undefined} settings The shared settings.\n * @property {\"config\" | \"ignore\" | \"implicit-processor\"} type The element type.\n */\n\n/**\n * @typedef {Object} ConfigArrayInternalSlots\n * @property {Map} cache The cache to extract configs.\n * @property {ReadonlyMap|null} envMap The map from environment ID to environment definition.\n * @property {ReadonlyMap|null} processorMap The map from processor ID to environment definition.\n * @property {ReadonlyMap|null} ruleMap The map from rule ID to rule definition.\n */\n\n/** @type {WeakMap} */\nconst internalSlotsMap = new class extends WeakMap {\n get(key) {\n let value = super.get(key);\n\n if (!value) {\n value = {\n cache: new Map(),\n envMap: null,\n processorMap: null,\n ruleMap: null\n };\n super.set(key, value);\n }\n\n return value;\n }\n}();\n\n/**\n * Get the indices which are matched to a given file.\n * @param {ConfigArrayElement[]} elements The elements.\n * @param {string} filePath The path to a target file.\n * @returns {number[]} The indices.\n */\nfunction getMatchedIndices(elements, filePath) {\n const indices = [];\n\n for (let i = elements.length - 1; i >= 0; --i) {\n const element = elements[i];\n\n if (!element.criteria || (filePath && element.criteria.test(filePath))) {\n indices.push(i);\n }\n }\n\n return indices;\n}\n\n/**\n * Check if a value is a non-null object.\n * @param {any} x The value to check.\n * @returns {boolean} `true` if the value is a non-null object.\n */\nfunction isNonNullObject(x) {\n return typeof x === \"object\" && x !== null;\n}\n\n/**\n * Merge two objects.\n *\n * Assign every property values of `y` to `x` if `x` doesn't have the property.\n * If `x`'s property value is an object, it does recursive.\n * @param {Object} target The destination to merge\n * @param {Object|undefined} source The source to merge.\n * @returns {void}\n */\nfunction mergeWithoutOverwrite(target, source) {\n if (!isNonNullObject(source)) {\n return;\n }\n\n for (const key of Object.keys(source)) {\n if (key === \"__proto__\") {\n continue;\n }\n\n if (isNonNullObject(target[key])) {\n mergeWithoutOverwrite(target[key], source[key]);\n } else if (target[key] === void 0) {\n if (isNonNullObject(source[key])) {\n target[key] = Array.isArray(source[key]) ? [] : {};\n mergeWithoutOverwrite(target[key], source[key]);\n } else if (source[key] !== void 0) {\n target[key] = source[key];\n }\n }\n }\n}\n\n/**\n * The error for plugin conflicts.\n */\nclass PluginConflictError extends Error {\n\n /**\n * Initialize this error object.\n * @param {string} pluginId The plugin ID.\n * @param {{filePath:string, importerName:string}[]} plugins The resolved plugins.\n */\n constructor(pluginId, plugins) {\n super(`Plugin \"${pluginId}\" was conflicted between ${plugins.map(p => `\"${p.importerName}\"`).join(\" and \")}.`);\n this.messageTemplate = \"plugin-conflict\";\n this.messageData = { pluginId, plugins };\n }\n}\n\n/**\n * Merge plugins.\n * `target`'s definition is prior to `source`'s.\n * @param {Record} target The destination to merge\n * @param {Record|undefined} source The source to merge.\n * @returns {void}\n */\nfunction mergePlugins(target, source) {\n if (!isNonNullObject(source)) {\n return;\n }\n\n for (const key of Object.keys(source)) {\n if (key === \"__proto__\") {\n continue;\n }\n const targetValue = target[key];\n const sourceValue = source[key];\n\n // Adopt the plugin which was found at first.\n if (targetValue === void 0) {\n if (sourceValue.error) {\n throw sourceValue.error;\n }\n target[key] = sourceValue;\n } else if (sourceValue.filePath !== targetValue.filePath) {\n throw new PluginConflictError(key, [\n {\n filePath: targetValue.filePath,\n importerName: targetValue.importerName\n },\n {\n filePath: sourceValue.filePath,\n importerName: sourceValue.importerName\n }\n ]);\n }\n }\n}\n\n/**\n * Merge rule configs.\n * `target`'s definition is prior to `source`'s.\n * @param {Record} target The destination to merge\n * @param {Record|undefined} source The source to merge.\n * @returns {void}\n */\nfunction mergeRuleConfigs(target, source) {\n if (!isNonNullObject(source)) {\n return;\n }\n\n for (const key of Object.keys(source)) {\n if (key === \"__proto__\") {\n continue;\n }\n const targetDef = target[key];\n const sourceDef = source[key];\n\n // Adopt the rule config which was found at first.\n if (targetDef === void 0) {\n if (Array.isArray(sourceDef)) {\n target[key] = [...sourceDef];\n } else {\n target[key] = [sourceDef];\n }\n\n /*\n * If the first found rule config is severity only and the current rule\n * config has options, merge the severity and the options.\n */\n } else if (\n targetDef.length === 1 &&\n Array.isArray(sourceDef) &&\n sourceDef.length >= 2\n ) {\n targetDef.push(...sourceDef.slice(1));\n }\n }\n}\n\n/**\n * Create the extracted config.\n * @param {ConfigArray} instance The config elements.\n * @param {number[]} indices The indices to use.\n * @returns {ExtractedConfig} The extracted config.\n */\nfunction createConfig(instance, indices) {\n const config = new ExtractedConfig();\n const ignorePatterns = [];\n\n // Merge elements.\n for (const index of indices) {\n const element = instance[index];\n\n // Adopt the parser which was found at first.\n if (!config.parser && element.parser) {\n if (element.parser.error) {\n throw element.parser.error;\n }\n config.parser = element.parser;\n }\n\n // Adopt the processor which was found at first.\n if (!config.processor && element.processor) {\n config.processor = element.processor;\n }\n\n // Adopt the noInlineConfig which was found at first.\n if (config.noInlineConfig === void 0 && element.noInlineConfig !== void 0) {\n config.noInlineConfig = element.noInlineConfig;\n config.configNameOfNoInlineConfig = element.name;\n }\n\n // Adopt the reportUnusedDisableDirectives which was found at first.\n if (config.reportUnusedDisableDirectives === void 0 && element.reportUnusedDisableDirectives !== void 0) {\n config.reportUnusedDisableDirectives = element.reportUnusedDisableDirectives;\n }\n\n // Collect ignorePatterns\n if (element.ignorePattern) {\n ignorePatterns.push(element.ignorePattern);\n }\n\n // Merge others.\n mergeWithoutOverwrite(config.env, element.env);\n mergeWithoutOverwrite(config.globals, element.globals);\n mergeWithoutOverwrite(config.parserOptions, element.parserOptions);\n mergeWithoutOverwrite(config.settings, element.settings);\n mergePlugins(config.plugins, element.plugins);\n mergeRuleConfigs(config.rules, element.rules);\n }\n\n // Create the predicate function for ignore patterns.\n if (ignorePatterns.length > 0) {\n config.ignores = IgnorePattern.createIgnore(ignorePatterns.reverse());\n }\n\n return config;\n}\n\n/**\n * Collect definitions.\n * @template T, U\n * @param {string} pluginId The plugin ID for prefix.\n * @param {Record} defs The definitions to collect.\n * @param {Map} map The map to output.\n * @param {function(T): U} [normalize] The normalize function for each value.\n * @returns {void}\n */\nfunction collect(pluginId, defs, map, normalize) {\n if (defs) {\n const prefix = pluginId && `${pluginId}/`;\n\n for (const [key, value] of Object.entries(defs)) {\n map.set(\n `${prefix}${key}`,\n normalize ? normalize(value) : value\n );\n }\n }\n}\n\n/**\n * Normalize a rule definition.\n * @param {Function|Rule} rule The rule definition to normalize.\n * @returns {Rule} The normalized rule definition.\n */\nfunction normalizePluginRule(rule) {\n return typeof rule === \"function\" ? { create: rule } : rule;\n}\n\n/**\n * Delete the mutation methods from a given map.\n * @param {Map} map The map object to delete.\n * @returns {void}\n */\nfunction deleteMutationMethods(map) {\n Object.defineProperties(map, {\n clear: { configurable: true, value: void 0 },\n delete: { configurable: true, value: void 0 },\n set: { configurable: true, value: void 0 }\n });\n}\n\n/**\n * Create `envMap`, `processorMap`, `ruleMap` with the plugins in the config array.\n * @param {ConfigArrayElement[]} elements The config elements.\n * @param {ConfigArrayInternalSlots} slots The internal slots.\n * @returns {void}\n */\nfunction initPluginMemberMaps(elements, slots) {\n const processed = new Set();\n\n slots.envMap = new Map();\n slots.processorMap = new Map();\n slots.ruleMap = new Map();\n\n for (const element of elements) {\n if (!element.plugins) {\n continue;\n }\n\n for (const [pluginId, value] of Object.entries(element.plugins)) {\n const plugin = value.definition;\n\n if (!plugin || processed.has(pluginId)) {\n continue;\n }\n processed.add(pluginId);\n\n collect(pluginId, plugin.environments, slots.envMap);\n collect(pluginId, plugin.processors, slots.processorMap);\n collect(pluginId, plugin.rules, slots.ruleMap, normalizePluginRule);\n }\n }\n\n deleteMutationMethods(slots.envMap);\n deleteMutationMethods(slots.processorMap);\n deleteMutationMethods(slots.ruleMap);\n}\n\n/**\n * Create `envMap`, `processorMap`, `ruleMap` with the plugins in the config array.\n * @param {ConfigArray} instance The config elements.\n * @returns {ConfigArrayInternalSlots} The extracted config.\n */\nfunction ensurePluginMemberMaps(instance) {\n const slots = internalSlotsMap.get(instance);\n\n if (!slots.ruleMap) {\n initPluginMemberMaps(instance, slots);\n }\n\n return slots;\n}\n\n//------------------------------------------------------------------------------\n// Public Interface\n//------------------------------------------------------------------------------\n\n/**\n * The Config Array.\n *\n * `ConfigArray` instance contains all settings, parsers, and plugins.\n * You need to call `ConfigArray#extractConfig(filePath)` method in order to\n * extract, merge and get only the config data which is related to an arbitrary\n * file.\n * @extends {Array}\n */\nclass ConfigArray extends Array {\n\n /**\n * Get the plugin environments.\n * The returned map cannot be mutated.\n * @type {ReadonlyMap} The plugin environments.\n */\n get pluginEnvironments() {\n return ensurePluginMemberMaps(this).envMap;\n }\n\n /**\n * Get the plugin processors.\n * The returned map cannot be mutated.\n * @type {ReadonlyMap} The plugin processors.\n */\n get pluginProcessors() {\n return ensurePluginMemberMaps(this).processorMap;\n }\n\n /**\n * Get the plugin rules.\n * The returned map cannot be mutated.\n * @returns {ReadonlyMap} The plugin rules.\n */\n get pluginRules() {\n return ensurePluginMemberMaps(this).ruleMap;\n }\n\n /**\n * Check if this config has `root` flag.\n * @returns {boolean} `true` if this config array is root.\n */\n isRoot() {\n for (let i = this.length - 1; i >= 0; --i) {\n const root = this[i].root;\n\n if (typeof root === \"boolean\") {\n return root;\n }\n }\n return false;\n }\n\n /**\n * Extract the config data which is related to a given file.\n * @param {string} filePath The absolute path to the target file.\n * @returns {ExtractedConfig} The extracted config data.\n */\n extractConfig(filePath) {\n const { cache } = internalSlotsMap.get(this);\n const indices = getMatchedIndices(this, filePath);\n const cacheKey = indices.join(\",\");\n\n if (!cache.has(cacheKey)) {\n cache.set(cacheKey, createConfig(this, indices));\n }\n\n return cache.get(cacheKey);\n }\n\n /**\n * Check if a given path is an additional lint target.\n * @param {string} filePath The absolute path to the target file.\n * @returns {boolean} `true` if the file is an additional lint target.\n */\n isAdditionalTargetPath(filePath) {\n for (const { criteria, type } of this) {\n if (\n type === \"config\" &&\n criteria &&\n !criteria.endsWithWildcard &&\n criteria.test(filePath)\n ) {\n return true;\n }\n }\n return false;\n }\n}\n\n/**\n * Get the used extracted configs.\n * CLIEngine will use this method to collect used deprecated rules.\n * @param {ConfigArray} instance The config array object to get.\n * @returns {ExtractedConfig[]} The used extracted configs.\n * @private\n */\nfunction getUsedExtractedConfigs(instance) {\n const { cache } = internalSlotsMap.get(instance);\n\n return Array.from(cache.values());\n}\n\n\nexport {\n ConfigArray,\n getUsedExtractedConfigs\n};\n","/**\n * @fileoverview `ConfigDependency` class.\n *\n * `ConfigDependency` class expresses a loaded parser or plugin.\n *\n * If the parser or plugin was loaded successfully, it has `definition` property\n * and `filePath` property. Otherwise, it has `error` property.\n *\n * When `JSON.stringify()` converted a `ConfigDependency` object to a JSON, it\n * omits `definition` property.\n *\n * `ConfigArrayFactory` creates `ConfigDependency` objects when it loads parsers\n * or plugins.\n *\n * @author Toru Nagashima \n */\n\nimport util from \"util\";\n\n/**\n * The class is to store parsers or plugins.\n * This class hides the loaded object from `JSON.stringify()` and `console.log`.\n * @template T\n */\nclass ConfigDependency {\n\n /**\n * Initialize this instance.\n * @param {Object} data The dependency data.\n * @param {T} [data.definition] The dependency if the loading succeeded.\n * @param {Error} [data.error] The error object if the loading failed.\n * @param {string} [data.filePath] The actual path to the dependency if the loading succeeded.\n * @param {string} data.id The ID of this dependency.\n * @param {string} data.importerName The name of the config file which loads this dependency.\n * @param {string} data.importerPath The path to the config file which loads this dependency.\n */\n constructor({\n definition = null,\n error = null,\n filePath = null,\n id,\n importerName,\n importerPath\n }) {\n\n /**\n * The loaded dependency if the loading succeeded.\n * @type {T|null}\n */\n this.definition = definition;\n\n /**\n * The error object if the loading failed.\n * @type {Error|null}\n */\n this.error = error;\n\n /**\n * The loaded dependency if the loading succeeded.\n * @type {string|null}\n */\n this.filePath = filePath;\n\n /**\n * The ID of this dependency.\n * @type {string}\n */\n this.id = id;\n\n /**\n * The name of the config file which loads this dependency.\n * @type {string}\n */\n this.importerName = importerName;\n\n /**\n * The path to the config file which loads this dependency.\n * @type {string}\n */\n this.importerPath = importerPath;\n }\n\n // eslint-disable-next-line jsdoc/require-description\n /**\n * @returns {Object} a JSON compatible object.\n */\n toJSON() {\n const obj = this[util.inspect.custom]();\n\n // Display `error.message` (`Error#message` is unenumerable).\n if (obj.error instanceof Error) {\n obj.error = { ...obj.error, message: obj.error.message };\n }\n\n return obj;\n }\n\n // eslint-disable-next-line jsdoc/require-description\n /**\n * @returns {Object} an object to display by `console.log()`.\n */\n [util.inspect.custom]() {\n const {\n definition: _ignore, // eslint-disable-line no-unused-vars\n ...obj\n } = this;\n\n return obj;\n }\n}\n\n/** @typedef {ConfigDependency} DependentParser */\n/** @typedef {ConfigDependency} DependentPlugin */\n\nexport { ConfigDependency };\n","/**\n * @fileoverview `OverrideTester` class.\n *\n * `OverrideTester` class handles `files` property and `excludedFiles` property\n * of `overrides` config.\n *\n * It provides one method.\n *\n * - `test(filePath)`\n * Test if a file path matches the pair of `files` property and\n * `excludedFiles` property. The `filePath` argument must be an absolute\n * path.\n *\n * `ConfigArrayFactory` creates `OverrideTester` objects when it processes\n * `overrides` properties.\n *\n * @author Toru Nagashima \n */\n\nimport assert from \"assert\";\nimport path from \"path\";\nimport util from \"util\";\nimport minimatch from \"minimatch\";\n\nconst { Minimatch } = minimatch;\n\nconst minimatchOpts = { dot: true, matchBase: true };\n\n/**\n * @typedef {Object} Pattern\n * @property {InstanceType[] | null} includes The positive matchers.\n * @property {InstanceType[] | null} excludes The negative matchers.\n */\n\n/**\n * Normalize a given pattern to an array.\n * @param {string|string[]|undefined} patterns A glob pattern or an array of glob patterns.\n * @returns {string[]|null} Normalized patterns.\n * @private\n */\nfunction normalizePatterns(patterns) {\n if (Array.isArray(patterns)) {\n return patterns.filter(Boolean);\n }\n if (typeof patterns === \"string\" && patterns) {\n return [patterns];\n }\n return [];\n}\n\n/**\n * Create the matchers of given patterns.\n * @param {string[]} patterns The patterns.\n * @returns {InstanceType[] | null} The matchers.\n */\nfunction toMatcher(patterns) {\n if (patterns.length === 0) {\n return null;\n }\n return patterns.map(pattern => {\n if (/^\\.[/\\\\]/u.test(pattern)) {\n return new Minimatch(\n pattern.slice(2),\n\n // `./*.js` should not match with `subdir/foo.js`\n { ...minimatchOpts, matchBase: false }\n );\n }\n return new Minimatch(pattern, minimatchOpts);\n });\n}\n\n/**\n * Convert a given matcher to string.\n * @param {Pattern} matchers The matchers.\n * @returns {string} The string expression of the matcher.\n */\nfunction patternToJson({ includes, excludes }) {\n return {\n includes: includes && includes.map(m => m.pattern),\n excludes: excludes && excludes.map(m => m.pattern)\n };\n}\n\n/**\n * The class to test given paths are matched by the patterns.\n */\nclass OverrideTester {\n\n /**\n * Create a tester with given criteria.\n * If there are no criteria, returns `null`.\n * @param {string|string[]} files The glob patterns for included files.\n * @param {string|string[]} excludedFiles The glob patterns for excluded files.\n * @param {string} basePath The path to the base directory to test paths.\n * @returns {OverrideTester|null} The created instance or `null`.\n */\n static create(files, excludedFiles, basePath) {\n const includePatterns = normalizePatterns(files);\n const excludePatterns = normalizePatterns(excludedFiles);\n let endsWithWildcard = false;\n\n if (includePatterns.length === 0) {\n return null;\n }\n\n // Rejects absolute paths or relative paths to parents.\n for (const pattern of includePatterns) {\n if (path.isAbsolute(pattern) || pattern.includes(\"..\")) {\n throw new Error(`Invalid override pattern (expected relative path not containing '..'): ${pattern}`);\n }\n if (pattern.endsWith(\"*\")) {\n endsWithWildcard = true;\n }\n }\n for (const pattern of excludePatterns) {\n if (path.isAbsolute(pattern) || pattern.includes(\"..\")) {\n throw new Error(`Invalid override pattern (expected relative path not containing '..'): ${pattern}`);\n }\n }\n\n const includes = toMatcher(includePatterns);\n const excludes = toMatcher(excludePatterns);\n\n return new OverrideTester(\n [{ includes, excludes }],\n basePath,\n endsWithWildcard\n );\n }\n\n /**\n * Combine two testers by logical and.\n * If either of the testers was `null`, returns the other tester.\n * The `basePath` property of the two must be the same value.\n * @param {OverrideTester|null} a A tester.\n * @param {OverrideTester|null} b Another tester.\n * @returns {OverrideTester|null} Combined tester.\n */\n static and(a, b) {\n if (!b) {\n return a && new OverrideTester(\n a.patterns,\n a.basePath,\n a.endsWithWildcard\n );\n }\n if (!a) {\n return new OverrideTester(\n b.patterns,\n b.basePath,\n b.endsWithWildcard\n );\n }\n\n assert.strictEqual(a.basePath, b.basePath);\n return new OverrideTester(\n a.patterns.concat(b.patterns),\n a.basePath,\n a.endsWithWildcard || b.endsWithWildcard\n );\n }\n\n /**\n * Initialize this instance.\n * @param {Pattern[]} patterns The matchers.\n * @param {string} basePath The base path.\n * @param {boolean} endsWithWildcard If `true` then a pattern ends with `*`.\n */\n constructor(patterns, basePath, endsWithWildcard = false) {\n\n /** @type {Pattern[]} */\n this.patterns = patterns;\n\n /** @type {string} */\n this.basePath = basePath;\n\n /** @type {boolean} */\n this.endsWithWildcard = endsWithWildcard;\n }\n\n /**\n * Test if a given path is matched or not.\n * @param {string} filePath The absolute path to the target file.\n * @returns {boolean} `true` if the path was matched.\n */\n test(filePath) {\n if (typeof filePath !== \"string\" || !path.isAbsolute(filePath)) {\n throw new Error(`'filePath' should be an absolute path, but got ${filePath}.`);\n }\n const relativePath = path.relative(this.basePath, filePath);\n\n return this.patterns.every(({ includes, excludes }) => (\n (!includes || includes.some(m => m.match(relativePath))) &&\n (!excludes || !excludes.some(m => m.match(relativePath)))\n ));\n }\n\n // eslint-disable-next-line jsdoc/require-description\n /**\n * @returns {Object} a JSON compatible object.\n */\n toJSON() {\n if (this.patterns.length === 1) {\n return {\n ...patternToJson(this.patterns[0]),\n basePath: this.basePath\n };\n }\n return {\n AND: this.patterns.map(patternToJson),\n basePath: this.basePath\n };\n }\n\n // eslint-disable-next-line jsdoc/require-description\n /**\n * @returns {Object} an object to display by `console.log()`.\n */\n [util.inspect.custom]() {\n return this.toJSON();\n }\n}\n\nexport { OverrideTester };\n","/**\n * @fileoverview `ConfigArray` class.\n * @author Toru Nagashima \n */\n\nimport { ConfigArray, getUsedExtractedConfigs } from \"./config-array.js\";\nimport { ConfigDependency } from \"./config-dependency.js\";\nimport { ExtractedConfig } from \"./extracted-config.js\";\nimport { IgnorePattern } from \"./ignore-pattern.js\";\nimport { OverrideTester } from \"./override-tester.js\";\n\nexport {\n ConfigArray,\n ConfigDependency,\n ExtractedConfig,\n IgnorePattern,\n OverrideTester,\n getUsedExtractedConfigs\n};\n","/**\n * @fileoverview Config file operations. This file must be usable in the browser,\n * so no Node-specific code can be here.\n * @author Nicholas C. Zakas\n */\n\n//------------------------------------------------------------------------------\n// Private\n//------------------------------------------------------------------------------\n\nconst RULE_SEVERITY_STRINGS = [\"off\", \"warn\", \"error\"],\n RULE_SEVERITY = RULE_SEVERITY_STRINGS.reduce((map, value, index) => {\n map[value] = index;\n return map;\n }, {}),\n VALID_SEVERITIES = [0, 1, 2, \"off\", \"warn\", \"error\"];\n\n//------------------------------------------------------------------------------\n// Public Interface\n//------------------------------------------------------------------------------\n\n/**\n * Normalizes the severity value of a rule's configuration to a number\n * @param {(number|string|[number, ...*]|[string, ...*])} ruleConfig A rule's configuration value, generally\n * received from the user. A valid config value is either 0, 1, 2, the string \"off\" (treated the same as 0),\n * the string \"warn\" (treated the same as 1), the string \"error\" (treated the same as 2), or an array\n * whose first element is one of the above values. Strings are matched case-insensitively.\n * @returns {(0|1|2)} The numeric severity value if the config value was valid, otherwise 0.\n */\nfunction getRuleSeverity(ruleConfig) {\n const severityValue = Array.isArray(ruleConfig) ? ruleConfig[0] : ruleConfig;\n\n if (severityValue === 0 || severityValue === 1 || severityValue === 2) {\n return severityValue;\n }\n\n if (typeof severityValue === \"string\") {\n return RULE_SEVERITY[severityValue.toLowerCase()] || 0;\n }\n\n return 0;\n}\n\n/**\n * Converts old-style severity settings (0, 1, 2) into new-style\n * severity settings (off, warn, error) for all rules. Assumption is that severity\n * values have already been validated as correct.\n * @param {Object} config The config object to normalize.\n * @returns {void}\n */\nfunction normalizeToStrings(config) {\n\n if (config.rules) {\n Object.keys(config.rules).forEach(ruleId => {\n const ruleConfig = config.rules[ruleId];\n\n if (typeof ruleConfig === \"number\") {\n config.rules[ruleId] = RULE_SEVERITY_STRINGS[ruleConfig] || RULE_SEVERITY_STRINGS[0];\n } else if (Array.isArray(ruleConfig) && typeof ruleConfig[0] === \"number\") {\n ruleConfig[0] = RULE_SEVERITY_STRINGS[ruleConfig[0]] || RULE_SEVERITY_STRINGS[0];\n }\n });\n }\n}\n\n/**\n * Determines if the severity for the given rule configuration represents an error.\n * @param {int|string|Array} ruleConfig The configuration for an individual rule.\n * @returns {boolean} True if the rule represents an error, false if not.\n */\nfunction isErrorSeverity(ruleConfig) {\n return getRuleSeverity(ruleConfig) === 2;\n}\n\n/**\n * Checks whether a given config has valid severity or not.\n * @param {number|string|Array} ruleConfig The configuration for an individual rule.\n * @returns {boolean} `true` if the configuration has valid severity.\n */\nfunction isValidSeverity(ruleConfig) {\n let severity = Array.isArray(ruleConfig) ? ruleConfig[0] : ruleConfig;\n\n if (typeof severity === \"string\") {\n severity = severity.toLowerCase();\n }\n return VALID_SEVERITIES.indexOf(severity) !== -1;\n}\n\n/**\n * Checks whether every rule of a given config has valid severity or not.\n * @param {Object} config The configuration for rules.\n * @returns {boolean} `true` if the configuration has valid severity.\n */\nfunction isEverySeverityValid(config) {\n return Object.keys(config).every(ruleId => isValidSeverity(config[ruleId]));\n}\n\n/**\n * Normalizes a value for a global in a config\n * @param {(boolean|string|null)} configuredValue The value given for a global in configuration or in\n * a global directive comment\n * @returns {(\"readable\"|\"writeable\"|\"off\")} The value normalized as a string\n * @throws Error if global value is invalid\n */\nfunction normalizeConfigGlobal(configuredValue) {\n switch (configuredValue) {\n case \"off\":\n return \"off\";\n\n case true:\n case \"true\":\n case \"writeable\":\n case \"writable\":\n return \"writable\";\n\n case null:\n case false:\n case \"false\":\n case \"readable\":\n case \"readonly\":\n return \"readonly\";\n\n default:\n throw new Error(`'${configuredValue}' is not a valid configuration for a global (use 'readonly', 'writable', or 'off')`);\n }\n}\n\nexport {\n getRuleSeverity,\n normalizeToStrings,\n isErrorSeverity,\n isValidSeverity,\n isEverySeverityValid,\n normalizeConfigGlobal\n};\n","/**\n * @fileoverview Provide the function that emits deprecation warnings.\n * @author Toru Nagashima \n */\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nimport path from \"path\";\n\n//------------------------------------------------------------------------------\n// Private\n//------------------------------------------------------------------------------\n\n// Defitions for deprecation warnings.\nconst deprecationWarningMessages = {\n ESLINT_LEGACY_ECMAFEATURES:\n \"The 'ecmaFeatures' config file property is deprecated and has no effect.\",\n ESLINT_PERSONAL_CONFIG_LOAD:\n \"'~/.eslintrc.*' config files have been deprecated. \" +\n \"Please use a config file per project or the '--config' option.\",\n ESLINT_PERSONAL_CONFIG_SUPPRESS:\n \"'~/.eslintrc.*' config files have been deprecated. \" +\n \"Please remove it or add 'root:true' to the config files in your \" +\n \"projects in order to avoid loading '~/.eslintrc.*' accidentally.\"\n};\n\nconst sourceFileErrorCache = new Set();\n\n/**\n * Emits a deprecation warning containing a given filepath. A new deprecation warning is emitted\n * for each unique file path, but repeated invocations with the same file path have no effect.\n * No warnings are emitted if the `--no-deprecation` or `--no-warnings` Node runtime flags are active.\n * @param {string} source The name of the configuration source to report the warning for.\n * @param {string} errorCode The warning message to show.\n * @returns {void}\n */\nfunction emitDeprecationWarning(source, errorCode) {\n const cacheKey = JSON.stringify({ source, errorCode });\n\n if (sourceFileErrorCache.has(cacheKey)) {\n return;\n }\n sourceFileErrorCache.add(cacheKey);\n\n const rel = path.relative(process.cwd(), source);\n const message = deprecationWarningMessages[errorCode];\n\n process.emitWarning(\n `${message} (found in \"${rel}\")`,\n \"DeprecationWarning\",\n errorCode\n );\n}\n\n//------------------------------------------------------------------------------\n// Public Interface\n//------------------------------------------------------------------------------\n\nexport {\n emitDeprecationWarning\n};\n","/**\n * @fileoverview The instance of Ajv validator.\n * @author Evgeny Poberezkin\n */\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nimport Ajv from \"ajv\";\n\n//-----------------------------------------------------------------------------\n// Helpers\n//-----------------------------------------------------------------------------\n\n/*\n * Copied from ajv/lib/refs/json-schema-draft-04.json\n * The MIT License (MIT)\n * Copyright (c) 2015-2017 Evgeny Poberezkin\n */\nconst metaSchema = {\n id: \"http://json-schema.org/draft-04/schema#\",\n $schema: \"http://json-schema.org/draft-04/schema#\",\n description: \"Core schema meta-schema\",\n definitions: {\n schemaArray: {\n type: \"array\",\n minItems: 1,\n items: { $ref: \"#\" }\n },\n positiveInteger: {\n type: \"integer\",\n minimum: 0\n },\n positiveIntegerDefault0: {\n allOf: [{ $ref: \"#/definitions/positiveInteger\" }, { default: 0 }]\n },\n simpleTypes: {\n enum: [\"array\", \"boolean\", \"integer\", \"null\", \"number\", \"object\", \"string\"]\n },\n stringArray: {\n type: \"array\",\n items: { type: \"string\" },\n minItems: 1,\n uniqueItems: true\n }\n },\n type: \"object\",\n properties: {\n id: {\n type: \"string\"\n },\n $schema: {\n type: \"string\"\n },\n title: {\n type: \"string\"\n },\n description: {\n type: \"string\"\n },\n default: { },\n multipleOf: {\n type: \"number\",\n minimum: 0,\n exclusiveMinimum: true\n },\n maximum: {\n type: \"number\"\n },\n exclusiveMaximum: {\n type: \"boolean\",\n default: false\n },\n minimum: {\n type: \"number\"\n },\n exclusiveMinimum: {\n type: \"boolean\",\n default: false\n },\n maxLength: { $ref: \"#/definitions/positiveInteger\" },\n minLength: { $ref: \"#/definitions/positiveIntegerDefault0\" },\n pattern: {\n type: \"string\",\n format: \"regex\"\n },\n additionalItems: {\n anyOf: [\n { type: \"boolean\" },\n { $ref: \"#\" }\n ],\n default: { }\n },\n items: {\n anyOf: [\n { $ref: \"#\" },\n { $ref: \"#/definitions/schemaArray\" }\n ],\n default: { }\n },\n maxItems: { $ref: \"#/definitions/positiveInteger\" },\n minItems: { $ref: \"#/definitions/positiveIntegerDefault0\" },\n uniqueItems: {\n type: \"boolean\",\n default: false\n },\n maxProperties: { $ref: \"#/definitions/positiveInteger\" },\n minProperties: { $ref: \"#/definitions/positiveIntegerDefault0\" },\n required: { $ref: \"#/definitions/stringArray\" },\n additionalProperties: {\n anyOf: [\n { type: \"boolean\" },\n { $ref: \"#\" }\n ],\n default: { }\n },\n definitions: {\n type: \"object\",\n additionalProperties: { $ref: \"#\" },\n default: { }\n },\n properties: {\n type: \"object\",\n additionalProperties: { $ref: \"#\" },\n default: { }\n },\n patternProperties: {\n type: \"object\",\n additionalProperties: { $ref: \"#\" },\n default: { }\n },\n dependencies: {\n type: \"object\",\n additionalProperties: {\n anyOf: [\n { $ref: \"#\" },\n { $ref: \"#/definitions/stringArray\" }\n ]\n }\n },\n enum: {\n type: \"array\",\n minItems: 1,\n uniqueItems: true\n },\n type: {\n anyOf: [\n { $ref: \"#/definitions/simpleTypes\" },\n {\n type: \"array\",\n items: { $ref: \"#/definitions/simpleTypes\" },\n minItems: 1,\n uniqueItems: true\n }\n ]\n },\n format: { type: \"string\" },\n allOf: { $ref: \"#/definitions/schemaArray\" },\n anyOf: { $ref: \"#/definitions/schemaArray\" },\n oneOf: { $ref: \"#/definitions/schemaArray\" },\n not: { $ref: \"#\" }\n },\n dependencies: {\n exclusiveMaximum: [\"maximum\"],\n exclusiveMinimum: [\"minimum\"]\n },\n default: { }\n};\n\n//------------------------------------------------------------------------------\n// Public Interface\n//------------------------------------------------------------------------------\n\nexport default (additionalOptions = {}) => {\n const ajv = new Ajv({\n meta: false,\n useDefaults: true,\n validateSchema: false,\n missingRefs: \"ignore\",\n verbose: true,\n schemaId: \"auto\",\n ...additionalOptions\n });\n\n ajv.addMetaSchema(metaSchema);\n // eslint-disable-next-line no-underscore-dangle\n ajv._opts.defaultMeta = metaSchema.id;\n\n return ajv;\n};\n","/**\n * @fileoverview Defines a schema for configs.\n * @author Sylvan Mably\n */\n\nconst baseConfigProperties = {\n $schema: { type: \"string\" },\n env: { type: \"object\" },\n extends: { $ref: \"#/definitions/stringOrStrings\" },\n globals: { type: \"object\" },\n overrides: {\n type: \"array\",\n items: { $ref: \"#/definitions/overrideConfig\" },\n additionalItems: false\n },\n parser: { type: [\"string\", \"null\"] },\n parserOptions: { type: \"object\" },\n plugins: { type: \"array\" },\n processor: { type: \"string\" },\n rules: { type: \"object\" },\n settings: { type: \"object\" },\n noInlineConfig: { type: \"boolean\" },\n reportUnusedDisableDirectives: { type: \"boolean\" },\n\n ecmaFeatures: { type: \"object\" } // deprecated; logs a warning when used\n};\n\nconst configSchema = {\n definitions: {\n stringOrStrings: {\n oneOf: [\n { type: \"string\" },\n {\n type: \"array\",\n items: { type: \"string\" },\n additionalItems: false\n }\n ]\n },\n stringOrStringsRequired: {\n oneOf: [\n { type: \"string\" },\n {\n type: \"array\",\n items: { type: \"string\" },\n additionalItems: false,\n minItems: 1\n }\n ]\n },\n\n // Config at top-level.\n objectConfig: {\n type: \"object\",\n properties: {\n root: { type: \"boolean\" },\n ignorePatterns: { $ref: \"#/definitions/stringOrStrings\" },\n ...baseConfigProperties\n },\n additionalProperties: false\n },\n\n // Config in `overrides`.\n overrideConfig: {\n type: \"object\",\n properties: {\n excludedFiles: { $ref: \"#/definitions/stringOrStrings\" },\n files: { $ref: \"#/definitions/stringOrStringsRequired\" },\n ...baseConfigProperties\n },\n required: [\"files\"],\n additionalProperties: false\n }\n },\n\n $ref: \"#/definitions/objectConfig\"\n};\n\nexport default configSchema;\n","/**\n * @fileoverview Defines environment settings and globals.\n * @author Elan Shanker\n */\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nimport globals from \"globals\";\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\n/**\n * Get the object that has difference.\n * @param {Record} current The newer object.\n * @param {Record} prev The older object.\n * @returns {Record} The difference object.\n */\nfunction getDiff(current, prev) {\n const retv = {};\n\n for (const [key, value] of Object.entries(current)) {\n if (!Object.hasOwnProperty.call(prev, key)) {\n retv[key] = value;\n }\n }\n\n return retv;\n}\n\nconst newGlobals2015 = getDiff(globals.es2015, globals.es5); // 19 variables such as Promise, Map, ...\nconst newGlobals2017 = {\n Atomics: false,\n SharedArrayBuffer: false\n};\nconst newGlobals2020 = {\n BigInt: false,\n BigInt64Array: false,\n BigUint64Array: false,\n globalThis: false\n};\n\nconst newGlobals2021 = {\n AggregateError: false,\n FinalizationRegistry: false,\n WeakRef: false\n};\n\n//------------------------------------------------------------------------------\n// Public Interface\n//------------------------------------------------------------------------------\n\n/** @type {Map} */\nexport default new Map(Object.entries({\n\n // Language\n builtin: {\n globals: globals.es5\n },\n es6: {\n globals: newGlobals2015,\n parserOptions: {\n ecmaVersion: 6\n }\n },\n es2015: {\n globals: newGlobals2015,\n parserOptions: {\n ecmaVersion: 6\n }\n },\n es2016: {\n globals: newGlobals2015,\n parserOptions: {\n ecmaVersion: 7\n }\n },\n es2017: {\n globals: { ...newGlobals2015, ...newGlobals2017 },\n parserOptions: {\n ecmaVersion: 8\n }\n },\n es2018: {\n globals: { ...newGlobals2015, ...newGlobals2017 },\n parserOptions: {\n ecmaVersion: 9\n }\n },\n es2019: {\n globals: { ...newGlobals2015, ...newGlobals2017 },\n parserOptions: {\n ecmaVersion: 10\n }\n },\n es2020: {\n globals: { ...newGlobals2015, ...newGlobals2017, ...newGlobals2020 },\n parserOptions: {\n ecmaVersion: 11\n }\n },\n es2021: {\n globals: { ...newGlobals2015, ...newGlobals2017, ...newGlobals2020, ...newGlobals2021 },\n parserOptions: {\n ecmaVersion: 12\n }\n },\n es2022: {\n globals: { ...newGlobals2015, ...newGlobals2017, ...newGlobals2020, ...newGlobals2021 },\n parserOptions: {\n ecmaVersion: 13\n }\n },\n es2023: {\n globals: { ...newGlobals2015, ...newGlobals2017, ...newGlobals2020, ...newGlobals2021 },\n parserOptions: {\n ecmaVersion: 14\n }\n },\n es2024: {\n globals: { ...newGlobals2015, ...newGlobals2017, ...newGlobals2020, ...newGlobals2021 },\n parserOptions: {\n ecmaVersion: 15\n }\n },\n\n // Platforms\n browser: {\n globals: globals.browser\n },\n node: {\n globals: globals.node,\n parserOptions: {\n ecmaFeatures: {\n globalReturn: true\n }\n }\n },\n \"shared-node-browser\": {\n globals: globals[\"shared-node-browser\"]\n },\n worker: {\n globals: globals.worker\n },\n serviceworker: {\n globals: globals.serviceworker\n },\n\n // Frameworks\n commonjs: {\n globals: globals.commonjs,\n parserOptions: {\n ecmaFeatures: {\n globalReturn: true\n }\n }\n },\n amd: {\n globals: globals.amd\n },\n mocha: {\n globals: globals.mocha\n },\n jasmine: {\n globals: globals.jasmine\n },\n jest: {\n globals: globals.jest\n },\n phantomjs: {\n globals: globals.phantomjs\n },\n jquery: {\n globals: globals.jquery\n },\n qunit: {\n globals: globals.qunit\n },\n prototypejs: {\n globals: globals.prototypejs\n },\n shelljs: {\n globals: globals.shelljs\n },\n meteor: {\n globals: globals.meteor\n },\n mongo: {\n globals: globals.mongo\n },\n protractor: {\n globals: globals.protractor\n },\n applescript: {\n globals: globals.applescript\n },\n nashorn: {\n globals: globals.nashorn\n },\n atomtest: {\n globals: globals.atomtest\n },\n embertest: {\n globals: globals.embertest\n },\n webextensions: {\n globals: globals.webextensions\n },\n greasemonkey: {\n globals: globals.greasemonkey\n }\n}));\n","/**\n * @fileoverview Validates configs.\n * @author Brandon Mills\n */\n\n/* eslint class-methods-use-this: \"off\" */\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nimport util from \"util\";\nimport * as ConfigOps from \"./config-ops.js\";\nimport { emitDeprecationWarning } from \"./deprecation-warnings.js\";\nimport ajvOrig from \"./ajv.js\";\nimport configSchema from \"../../conf/config-schema.js\";\nimport BuiltInEnvironments from \"../../conf/environments.js\";\n\nconst ajv = ajvOrig();\n\nconst ruleValidators = new WeakMap();\nconst noop = Function.prototype;\n\n//------------------------------------------------------------------------------\n// Private\n//------------------------------------------------------------------------------\nlet validateSchema;\nconst severityMap = {\n error: 2,\n warn: 1,\n off: 0\n};\n\nconst validated = new WeakSet();\n\n//-----------------------------------------------------------------------------\n// Exports\n//-----------------------------------------------------------------------------\n\nexport default class ConfigValidator {\n constructor({ builtInRules = new Map() } = {}) {\n this.builtInRules = builtInRules;\n }\n\n /**\n * Gets a complete options schema for a rule.\n * @param {{create: Function, schema: (Array|null)}} rule A new-style rule object\n * @returns {Object} JSON Schema for the rule's options.\n */\n getRuleOptionsSchema(rule) {\n if (!rule) {\n return null;\n }\n\n const schema = rule.schema || rule.meta && rule.meta.schema;\n\n // Given a tuple of schemas, insert warning level at the beginning\n if (Array.isArray(schema)) {\n if (schema.length) {\n return {\n type: \"array\",\n items: schema,\n minItems: 0,\n maxItems: schema.length\n };\n }\n return {\n type: \"array\",\n minItems: 0,\n maxItems: 0\n };\n\n }\n\n // Given a full schema, leave it alone\n return schema || null;\n }\n\n /**\n * Validates a rule's severity and returns the severity value. Throws an error if the severity is invalid.\n * @param {options} options The given options for the rule.\n * @returns {number|string} The rule's severity value\n */\n validateRuleSeverity(options) {\n const severity = Array.isArray(options) ? options[0] : options;\n const normSeverity = typeof severity === \"string\" ? severityMap[severity.toLowerCase()] : severity;\n\n if (normSeverity === 0 || normSeverity === 1 || normSeverity === 2) {\n return normSeverity;\n }\n\n throw new Error(`\\tSeverity should be one of the following: 0 = off, 1 = warn, 2 = error (you passed '${util.inspect(severity).replace(/'/gu, \"\\\"\").replace(/\\n/gu, \"\")}').\\n`);\n\n }\n\n /**\n * Validates the non-severity options passed to a rule, based on its schema.\n * @param {{create: Function}} rule The rule to validate\n * @param {Array} localOptions The options for the rule, excluding severity\n * @returns {void}\n */\n validateRuleSchema(rule, localOptions) {\n if (!ruleValidators.has(rule)) {\n const schema = this.getRuleOptionsSchema(rule);\n\n if (schema) {\n ruleValidators.set(rule, ajv.compile(schema));\n }\n }\n\n const validateRule = ruleValidators.get(rule);\n\n if (validateRule) {\n validateRule(localOptions);\n if (validateRule.errors) {\n throw new Error(validateRule.errors.map(\n error => `\\tValue ${JSON.stringify(error.data)} ${error.message}.\\n`\n ).join(\"\"));\n }\n }\n }\n\n /**\n * Validates a rule's options against its schema.\n * @param {{create: Function}|null} rule The rule that the config is being validated for\n * @param {string} ruleId The rule's unique name.\n * @param {Array|number} options The given options for the rule.\n * @param {string|null} source The name of the configuration source to report in any errors. If null or undefined,\n * no source is prepended to the message.\n * @returns {void}\n */\n validateRuleOptions(rule, ruleId, options, source = null) {\n try {\n const severity = this.validateRuleSeverity(options);\n\n if (severity !== 0) {\n this.validateRuleSchema(rule, Array.isArray(options) ? options.slice(1) : []);\n }\n } catch (err) {\n const enhancedMessage = `Configuration for rule \"${ruleId}\" is invalid:\\n${err.message}`;\n\n if (typeof source === \"string\") {\n throw new Error(`${source}:\\n\\t${enhancedMessage}`);\n } else {\n throw new Error(enhancedMessage);\n }\n }\n }\n\n /**\n * Validates an environment object\n * @param {Object} environment The environment config object to validate.\n * @param {string} source The name of the configuration source to report in any errors.\n * @param {function(envId:string): Object} [getAdditionalEnv] A map from strings to loaded environments.\n * @returns {void}\n */\n validateEnvironment(\n environment,\n source,\n getAdditionalEnv = noop\n ) {\n\n // not having an environment is ok\n if (!environment) {\n return;\n }\n\n Object.keys(environment).forEach(id => {\n const env = getAdditionalEnv(id) || BuiltInEnvironments.get(id) || null;\n\n if (!env) {\n const message = `${source}:\\n\\tEnvironment key \"${id}\" is unknown\\n`;\n\n throw new Error(message);\n }\n });\n }\n\n /**\n * Validates a rules config object\n * @param {Object} rulesConfig The rules config object to validate.\n * @param {string} source The name of the configuration source to report in any errors.\n * @param {function(ruleId:string): Object} getAdditionalRule A map from strings to loaded rules\n * @returns {void}\n */\n validateRules(\n rulesConfig,\n source,\n getAdditionalRule = noop\n ) {\n if (!rulesConfig) {\n return;\n }\n\n Object.keys(rulesConfig).forEach(id => {\n const rule = getAdditionalRule(id) || this.builtInRules.get(id) || null;\n\n this.validateRuleOptions(rule, id, rulesConfig[id], source);\n });\n }\n\n /**\n * Validates a `globals` section of a config file\n * @param {Object} globalsConfig The `globals` section\n * @param {string|null} source The name of the configuration source to report in the event of an error.\n * @returns {void}\n */\n validateGlobals(globalsConfig, source = null) {\n if (!globalsConfig) {\n return;\n }\n\n Object.entries(globalsConfig)\n .forEach(([configuredGlobal, configuredValue]) => {\n try {\n ConfigOps.normalizeConfigGlobal(configuredValue);\n } catch (err) {\n throw new Error(`ESLint configuration of global '${configuredGlobal}' in ${source} is invalid:\\n${err.message}`);\n }\n });\n }\n\n /**\n * Validate `processor` configuration.\n * @param {string|undefined} processorName The processor name.\n * @param {string} source The name of config file.\n * @param {function(id:string): Processor} getProcessor The getter of defined processors.\n * @returns {void}\n */\n validateProcessor(processorName, source, getProcessor) {\n if (processorName && !getProcessor(processorName)) {\n throw new Error(`ESLint configuration of processor in '${source}' is invalid: '${processorName}' was not found.`);\n }\n }\n\n /**\n * Formats an array of schema validation errors.\n * @param {Array} errors An array of error messages to format.\n * @returns {string} Formatted error message\n */\n formatErrors(errors) {\n return errors.map(error => {\n if (error.keyword === \"additionalProperties\") {\n const formattedPropertyPath = error.dataPath.length ? `${error.dataPath.slice(1)}.${error.params.additionalProperty}` : error.params.additionalProperty;\n\n return `Unexpected top-level property \"${formattedPropertyPath}\"`;\n }\n if (error.keyword === \"type\") {\n const formattedField = error.dataPath.slice(1);\n const formattedExpectedType = Array.isArray(error.schema) ? error.schema.join(\"/\") : error.schema;\n const formattedValue = JSON.stringify(error.data);\n\n return `Property \"${formattedField}\" is the wrong type (expected ${formattedExpectedType} but got \\`${formattedValue}\\`)`;\n }\n\n const field = error.dataPath[0] === \".\" ? error.dataPath.slice(1) : error.dataPath;\n\n return `\"${field}\" ${error.message}. Value: ${JSON.stringify(error.data)}`;\n }).map(message => `\\t- ${message}.\\n`).join(\"\");\n }\n\n /**\n * Validates the top level properties of the config object.\n * @param {Object} config The config object to validate.\n * @param {string} source The name of the configuration source to report in any errors.\n * @returns {void}\n */\n validateConfigSchema(config, source = null) {\n validateSchema = validateSchema || ajv.compile(configSchema);\n\n if (!validateSchema(config)) {\n throw new Error(`ESLint configuration in ${source} is invalid:\\n${this.formatErrors(validateSchema.errors)}`);\n }\n\n if (Object.hasOwnProperty.call(config, \"ecmaFeatures\")) {\n emitDeprecationWarning(source, \"ESLINT_LEGACY_ECMAFEATURES\");\n }\n }\n\n /**\n * Validates an entire config object.\n * @param {Object} config The config object to validate.\n * @param {string} source The name of the configuration source to report in any errors.\n * @param {function(ruleId:string): Object} [getAdditionalRule] A map from strings to loaded rules.\n * @param {function(envId:string): Object} [getAdditionalEnv] A map from strings to loaded envs.\n * @returns {void}\n */\n validate(config, source, getAdditionalRule, getAdditionalEnv) {\n this.validateConfigSchema(config, source);\n this.validateRules(config.rules, source, getAdditionalRule);\n this.validateEnvironment(config.env, source, getAdditionalEnv);\n this.validateGlobals(config.globals, source);\n\n for (const override of config.overrides || []) {\n this.validateRules(override.rules, source, getAdditionalRule);\n this.validateEnvironment(override.env, source, getAdditionalEnv);\n this.validateGlobals(config.globals, source);\n }\n }\n\n /**\n * Validate config array object.\n * @param {ConfigArray} configArray The config array to validate.\n * @returns {void}\n */\n validateConfigArray(configArray) {\n const getPluginEnv = Map.prototype.get.bind(configArray.pluginEnvironments);\n const getPluginProcessor = Map.prototype.get.bind(configArray.pluginProcessors);\n const getPluginRule = Map.prototype.get.bind(configArray.pluginRules);\n\n // Validate.\n for (const element of configArray) {\n if (validated.has(element)) {\n continue;\n }\n validated.add(element);\n\n this.validateEnvironment(element.env, element.name, getPluginEnv);\n this.validateGlobals(element.globals, element.name);\n this.validateProcessor(element.processor, element.name, getPluginProcessor);\n this.validateRules(element.rules, element.name, getPluginRule);\n }\n }\n\n}\n","/**\n * @fileoverview Common helpers for naming of plugins, formatters and configs\n */\n\nconst NAMESPACE_REGEX = /^@.*\\//iu;\n\n/**\n * Brings package name to correct format based on prefix\n * @param {string} name The name of the package.\n * @param {string} prefix Can be either \"eslint-plugin\", \"eslint-config\" or \"eslint-formatter\"\n * @returns {string} Normalized name of the package\n * @private\n */\nfunction normalizePackageName(name, prefix) {\n let normalizedName = name;\n\n /**\n * On Windows, name can come in with Windows slashes instead of Unix slashes.\n * Normalize to Unix first to avoid errors later on.\n * https://github.com/eslint/eslint/issues/5644\n */\n if (normalizedName.includes(\"\\\\\")) {\n normalizedName = normalizedName.replace(/\\\\/gu, \"/\");\n }\n\n if (normalizedName.charAt(0) === \"@\") {\n\n /**\n * it's a scoped package\n * package name is the prefix, or just a username\n */\n const scopedPackageShortcutRegex = new RegExp(`^(@[^/]+)(?:/(?:${prefix})?)?$`, \"u\"),\n scopedPackageNameRegex = new RegExp(`^${prefix}(-|$)`, \"u\");\n\n if (scopedPackageShortcutRegex.test(normalizedName)) {\n normalizedName = normalizedName.replace(scopedPackageShortcutRegex, `$1/${prefix}`);\n } else if (!scopedPackageNameRegex.test(normalizedName.split(\"/\")[1])) {\n\n /**\n * for scoped packages, insert the prefix after the first / unless\n * the path is already @scope/eslint or @scope/eslint-xxx-yyy\n */\n normalizedName = normalizedName.replace(/^@([^/]+)\\/(.*)$/u, `@$1/${prefix}-$2`);\n }\n } else if (!normalizedName.startsWith(`${prefix}-`)) {\n normalizedName = `${prefix}-${normalizedName}`;\n }\n\n return normalizedName;\n}\n\n/**\n * Removes the prefix from a fullname.\n * @param {string} fullname The term which may have the prefix.\n * @param {string} prefix The prefix to remove.\n * @returns {string} The term without prefix.\n */\nfunction getShorthandName(fullname, prefix) {\n if (fullname[0] === \"@\") {\n let matchResult = new RegExp(`^(@[^/]+)/${prefix}$`, \"u\").exec(fullname);\n\n if (matchResult) {\n return matchResult[1];\n }\n\n matchResult = new RegExp(`^(@[^/]+)/${prefix}-(.+)$`, \"u\").exec(fullname);\n if (matchResult) {\n return `${matchResult[1]}/${matchResult[2]}`;\n }\n } else if (fullname.startsWith(`${prefix}-`)) {\n return fullname.slice(prefix.length + 1);\n }\n\n return fullname;\n}\n\n/**\n * Gets the scope (namespace) of a term.\n * @param {string} term The term which may have the namespace.\n * @returns {string} The namespace of the term if it has one.\n */\nfunction getNamespaceFromTerm(term) {\n const match = term.match(NAMESPACE_REGEX);\n\n return match ? match[0] : \"\";\n}\n\n//------------------------------------------------------------------------------\n// Public Interface\n//------------------------------------------------------------------------------\n\nexport {\n normalizePackageName,\n getShorthandName,\n getNamespaceFromTerm\n};\n","/**\n * Utility for resolving a module relative to another module\n * @author Teddy Katz\n */\n\nimport Module from \"module\";\n\n/*\n * `Module.createRequire` is added in v12.2.0. It supports URL as well.\n * We only support the case where the argument is a filepath, not a URL.\n */\nconst createRequire = Module.createRequire;\n\n/**\n * Resolves a Node module relative to another module\n * @param {string} moduleName The name of a Node module, or a path to a Node module.\n * @param {string} relativeToPath An absolute path indicating the module that `moduleName` should be resolved relative to. This must be\n * a file rather than a directory, but the file need not actually exist.\n * @returns {string} The absolute path that would result from calling `require.resolve(moduleName)` in a file located at `relativeToPath`\n */\nfunction resolve(moduleName, relativeToPath) {\n try {\n return createRequire(relativeToPath).resolve(moduleName);\n } catch (error) {\n\n // This `if` block is for older Node.js than 12.0.0. We can remove this block in the future.\n if (\n typeof error === \"object\" &&\n error !== null &&\n error.code === \"MODULE_NOT_FOUND\" &&\n !error.requireStack &&\n error.message.includes(moduleName)\n ) {\n error.message += `\\nRequire stack:\\n- ${relativeToPath}`;\n }\n throw error;\n }\n}\n\nexport {\n resolve\n};\n","/**\n * @fileoverview The factory of `ConfigArray` objects.\n *\n * This class provides methods to create `ConfigArray` instance.\n *\n * - `create(configData, options)`\n * Create a `ConfigArray` instance from a config data. This is to handle CLI\n * options except `--config`.\n * - `loadFile(filePath, options)`\n * Create a `ConfigArray` instance from a config file. This is to handle\n * `--config` option. If the file was not found, throws the following error:\n * - If the filename was `*.js`, a `MODULE_NOT_FOUND` error.\n * - If the filename was `package.json`, an IO error or an\n * `ESLINT_CONFIG_FIELD_NOT_FOUND` error.\n * - Otherwise, an IO error such as `ENOENT`.\n * - `loadInDirectory(directoryPath, options)`\n * Create a `ConfigArray` instance from a config file which is on a given\n * directory. This tries to load `.eslintrc.*` or `package.json`. If not\n * found, returns an empty `ConfigArray`.\n * - `loadESLintIgnore(filePath)`\n * Create a `ConfigArray` instance from a config file that is `.eslintignore`\n * format. This is to handle `--ignore-path` option.\n * - `loadDefaultESLintIgnore()`\n * Create a `ConfigArray` instance from `.eslintignore` or `package.json` in\n * the current working directory.\n *\n * `ConfigArrayFactory` class has the responsibility that loads configuration\n * files, including loading `extends`, `parser`, and `plugins`. The created\n * `ConfigArray` instance has the loaded `extends`, `parser`, and `plugins`.\n *\n * But this class doesn't handle cascading. `CascadingConfigArrayFactory` class\n * handles cascading and hierarchy.\n *\n * @author Toru Nagashima \n */\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nimport debugOrig from \"debug\";\nimport fs from \"fs\";\nimport importFresh from \"import-fresh\";\nimport { createRequire } from \"module\";\nimport path from \"path\";\nimport stripComments from \"strip-json-comments\";\n\nimport {\n ConfigArray,\n ConfigDependency,\n IgnorePattern,\n OverrideTester\n} from \"./config-array/index.js\";\nimport ConfigValidator from \"./shared/config-validator.js\";\nimport * as naming from \"./shared/naming.js\";\nimport * as ModuleResolver from \"./shared/relative-module-resolver.js\";\n\nconst require = createRequire(import.meta.url);\n\nconst debug = debugOrig(\"eslintrc:config-array-factory\");\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\nconst configFilenames = [\n \".eslintrc.js\",\n \".eslintrc.cjs\",\n \".eslintrc.yaml\",\n \".eslintrc.yml\",\n \".eslintrc.json\",\n \".eslintrc\",\n \"package.json\"\n];\n\n// Define types for VSCode IntelliSense.\n/** @typedef {import(\"./shared/types\").ConfigData} ConfigData */\n/** @typedef {import(\"./shared/types\").OverrideConfigData} OverrideConfigData */\n/** @typedef {import(\"./shared/types\").Parser} Parser */\n/** @typedef {import(\"./shared/types\").Plugin} Plugin */\n/** @typedef {import(\"./shared/types\").Rule} Rule */\n/** @typedef {import(\"./config-array/config-dependency\").DependentParser} DependentParser */\n/** @typedef {import(\"./config-array/config-dependency\").DependentPlugin} DependentPlugin */\n/** @typedef {ConfigArray[0]} ConfigArrayElement */\n\n/**\n * @typedef {Object} ConfigArrayFactoryOptions\n * @property {Map} [additionalPluginPool] The map for additional plugins.\n * @property {string} [cwd] The path to the current working directory.\n * @property {string} [resolvePluginsRelativeTo] A path to the directory that plugins should be resolved from. Defaults to `cwd`.\n * @property {Map} builtInRules The rules that are built in to ESLint.\n * @property {Object} [resolver=ModuleResolver] The module resolver object.\n * @property {string} eslintAllPath The path to the definitions for eslint:all.\n * @property {Function} getEslintAllConfig Returns the config data for eslint:all.\n * @property {string} eslintRecommendedPath The path to the definitions for eslint:recommended.\n * @property {Function} getEslintRecommendedConfig Returns the config data for eslint:recommended.\n */\n\n/**\n * @typedef {Object} ConfigArrayFactoryInternalSlots\n * @property {Map} additionalPluginPool The map for additional plugins.\n * @property {string} cwd The path to the current working directory.\n * @property {string | undefined} resolvePluginsRelativeTo An absolute path the the directory that plugins should be resolved from.\n * @property {Map} builtInRules The rules that are built in to ESLint.\n * @property {Object} [resolver=ModuleResolver] The module resolver object.\n * @property {string} eslintAllPath The path to the definitions for eslint:all.\n * @property {Function} getEslintAllConfig Returns the config data for eslint:all.\n * @property {string} eslintRecommendedPath The path to the definitions for eslint:recommended.\n * @property {Function} getEslintRecommendedConfig Returns the config data for eslint:recommended.\n */\n\n/**\n * @typedef {Object} ConfigArrayFactoryLoadingContext\n * @property {string} filePath The path to the current configuration.\n * @property {string} matchBasePath The base path to resolve relative paths in `overrides[].files`, `overrides[].excludedFiles`, and `ignorePatterns`.\n * @property {string} name The name of the current configuration.\n * @property {string} pluginBasePath The base path to resolve plugins.\n * @property {\"config\" | \"ignore\" | \"implicit-processor\"} type The type of the current configuration. This is `\"config\"` in normal. This is `\"ignore\"` if it came from `.eslintignore`. This is `\"implicit-processor\"` if it came from legacy file-extension processors.\n */\n\n/**\n * @typedef {Object} ConfigArrayFactoryLoadingContext\n * @property {string} filePath The path to the current configuration.\n * @property {string} matchBasePath The base path to resolve relative paths in `overrides[].files`, `overrides[].excludedFiles`, and `ignorePatterns`.\n * @property {string} name The name of the current configuration.\n * @property {\"config\" | \"ignore\" | \"implicit-processor\"} type The type of the current configuration. This is `\"config\"` in normal. This is `\"ignore\"` if it came from `.eslintignore`. This is `\"implicit-processor\"` if it came from legacy file-extension processors.\n */\n\n/** @type {WeakMap} */\nconst internalSlotsMap = new WeakMap();\n\n/** @type {WeakMap} */\nconst normalizedPlugins = new WeakMap();\n\n/**\n * Check if a given string is a file path.\n * @param {string} nameOrPath A module name or file path.\n * @returns {boolean} `true` if the `nameOrPath` is a file path.\n */\nfunction isFilePath(nameOrPath) {\n return (\n /^\\.{1,2}[/\\\\]/u.test(nameOrPath) ||\n path.isAbsolute(nameOrPath)\n );\n}\n\n/**\n * Convenience wrapper for synchronously reading file contents.\n * @param {string} filePath The filename to read.\n * @returns {string} The file contents, with the BOM removed.\n * @private\n */\nfunction readFile(filePath) {\n return fs.readFileSync(filePath, \"utf8\").replace(/^\\ufeff/u, \"\");\n}\n\n/**\n * Loads a YAML configuration from a file.\n * @param {string} filePath The filename to load.\n * @returns {ConfigData} The configuration object from the file.\n * @throws {Error} If the file cannot be read.\n * @private\n */\nfunction loadYAMLConfigFile(filePath) {\n debug(`Loading YAML config file: ${filePath}`);\n\n // lazy load YAML to improve performance when not used\n const yaml = require(\"js-yaml\");\n\n try {\n\n // empty YAML file can be null, so always use\n return yaml.load(readFile(filePath)) || {};\n } catch (e) {\n debug(`Error reading YAML file: ${filePath}`);\n e.message = `Cannot read config file: ${filePath}\\nError: ${e.message}`;\n throw e;\n }\n}\n\n/**\n * Loads a JSON configuration from a file.\n * @param {string} filePath The filename to load.\n * @returns {ConfigData} The configuration object from the file.\n * @throws {Error} If the file cannot be read.\n * @private\n */\nfunction loadJSONConfigFile(filePath) {\n debug(`Loading JSON config file: ${filePath}`);\n\n try {\n return JSON.parse(stripComments(readFile(filePath)));\n } catch (e) {\n debug(`Error reading JSON file: ${filePath}`);\n e.message = `Cannot read config file: ${filePath}\\nError: ${e.message}`;\n e.messageTemplate = \"failed-to-read-json\";\n e.messageData = {\n path: filePath,\n message: e.message\n };\n throw e;\n }\n}\n\n/**\n * Loads a legacy (.eslintrc) configuration from a file.\n * @param {string} filePath The filename to load.\n * @returns {ConfigData} The configuration object from the file.\n * @throws {Error} If the file cannot be read.\n * @private\n */\nfunction loadLegacyConfigFile(filePath) {\n debug(`Loading legacy config file: ${filePath}`);\n\n // lazy load YAML to improve performance when not used\n const yaml = require(\"js-yaml\");\n\n try {\n return yaml.load(stripComments(readFile(filePath))) || /* istanbul ignore next */ {};\n } catch (e) {\n debug(\"Error reading YAML file: %s\\n%o\", filePath, e);\n e.message = `Cannot read config file: ${filePath}\\nError: ${e.message}`;\n throw e;\n }\n}\n\n/**\n * Loads a JavaScript configuration from a file.\n * @param {string} filePath The filename to load.\n * @returns {ConfigData} The configuration object from the file.\n * @throws {Error} If the file cannot be read.\n * @private\n */\nfunction loadJSConfigFile(filePath) {\n debug(`Loading JS config file: ${filePath}`);\n try {\n return importFresh(filePath);\n } catch (e) {\n debug(`Error reading JavaScript file: ${filePath}`);\n e.message = `Cannot read config file: ${filePath}\\nError: ${e.message}`;\n throw e;\n }\n}\n\n/**\n * Loads a configuration from a package.json file.\n * @param {string} filePath The filename to load.\n * @returns {ConfigData} The configuration object from the file.\n * @throws {Error} If the file cannot be read.\n * @private\n */\nfunction loadPackageJSONConfigFile(filePath) {\n debug(`Loading package.json config file: ${filePath}`);\n try {\n const packageData = loadJSONConfigFile(filePath);\n\n if (!Object.hasOwnProperty.call(packageData, \"eslintConfig\")) {\n throw Object.assign(\n new Error(\"package.json file doesn't have 'eslintConfig' field.\"),\n { code: \"ESLINT_CONFIG_FIELD_NOT_FOUND\" }\n );\n }\n\n return packageData.eslintConfig;\n } catch (e) {\n debug(`Error reading package.json file: ${filePath}`);\n e.message = `Cannot read config file: ${filePath}\\nError: ${e.message}`;\n throw e;\n }\n}\n\n/**\n * Loads a `.eslintignore` from a file.\n * @param {string} filePath The filename to load.\n * @returns {string[]} The ignore patterns from the file.\n * @private\n */\nfunction loadESLintIgnoreFile(filePath) {\n debug(`Loading .eslintignore file: ${filePath}`);\n\n try {\n return readFile(filePath)\n .split(/\\r?\\n/gu)\n .filter(line => line.trim() !== \"\" && !line.startsWith(\"#\"));\n } catch (e) {\n debug(`Error reading .eslintignore file: ${filePath}`);\n e.message = `Cannot read .eslintignore file: ${filePath}\\nError: ${e.message}`;\n throw e;\n }\n}\n\n/**\n * Creates an error to notify about a missing config to extend from.\n * @param {string} configName The name of the missing config.\n * @param {string} importerName The name of the config that imported the missing config\n * @param {string} messageTemplate The text template to source error strings from.\n * @returns {Error} The error object to throw\n * @private\n */\nfunction configInvalidError(configName, importerName, messageTemplate) {\n return Object.assign(\n new Error(`Failed to load config \"${configName}\" to extend from.`),\n {\n messageTemplate,\n messageData: { configName, importerName }\n }\n );\n}\n\n/**\n * Loads a configuration file regardless of the source. Inspects the file path\n * to determine the correctly way to load the config file.\n * @param {string} filePath The path to the configuration.\n * @returns {ConfigData|null} The configuration information.\n * @private\n */\nfunction loadConfigFile(filePath) {\n switch (path.extname(filePath)) {\n case \".js\":\n case \".cjs\":\n return loadJSConfigFile(filePath);\n\n case \".json\":\n if (path.basename(filePath) === \"package.json\") {\n return loadPackageJSONConfigFile(filePath);\n }\n return loadJSONConfigFile(filePath);\n\n case \".yaml\":\n case \".yml\":\n return loadYAMLConfigFile(filePath);\n\n default:\n return loadLegacyConfigFile(filePath);\n }\n}\n\n/**\n * Write debug log.\n * @param {string} request The requested module name.\n * @param {string} relativeTo The file path to resolve the request relative to.\n * @param {string} filePath The resolved file path.\n * @returns {void}\n */\nfunction writeDebugLogForLoading(request, relativeTo, filePath) {\n /* istanbul ignore next */\n if (debug.enabled) {\n let nameAndVersion = null;\n\n try {\n const packageJsonPath = ModuleResolver.resolve(\n `${request}/package.json`,\n relativeTo\n );\n const { version = \"unknown\" } = require(packageJsonPath);\n\n nameAndVersion = `${request}@${version}`;\n } catch (error) {\n debug(\"package.json was not found:\", error.message);\n nameAndVersion = request;\n }\n\n debug(\"Loaded: %s (%s)\", nameAndVersion, filePath);\n }\n}\n\n/**\n * Create a new context with default values.\n * @param {ConfigArrayFactoryInternalSlots} slots The internal slots.\n * @param {\"config\" | \"ignore\" | \"implicit-processor\" | undefined} providedType The type of the current configuration. Default is `\"config\"`.\n * @param {string | undefined} providedName The name of the current configuration. Default is the relative path from `cwd` to `filePath`.\n * @param {string | undefined} providedFilePath The path to the current configuration. Default is empty string.\n * @param {string | undefined} providedMatchBasePath The type of the current configuration. Default is the directory of `filePath` or `cwd`.\n * @returns {ConfigArrayFactoryLoadingContext} The created context.\n */\nfunction createContext(\n { cwd, resolvePluginsRelativeTo },\n providedType,\n providedName,\n providedFilePath,\n providedMatchBasePath\n) {\n const filePath = providedFilePath\n ? path.resolve(cwd, providedFilePath)\n : \"\";\n const matchBasePath =\n (providedMatchBasePath && path.resolve(cwd, providedMatchBasePath)) ||\n (filePath && path.dirname(filePath)) ||\n cwd;\n const name =\n providedName ||\n (filePath && path.relative(cwd, filePath)) ||\n \"\";\n const pluginBasePath =\n resolvePluginsRelativeTo ||\n (filePath && path.dirname(filePath)) ||\n cwd;\n const type = providedType || \"config\";\n\n return { filePath, matchBasePath, name, pluginBasePath, type };\n}\n\n/**\n * Normalize a given plugin.\n * - Ensure the object to have four properties: configs, environments, processors, and rules.\n * - Ensure the object to not have other properties.\n * @param {Plugin} plugin The plugin to normalize.\n * @returns {Plugin} The normalized plugin.\n */\nfunction normalizePlugin(plugin) {\n\n // first check the cache\n let normalizedPlugin = normalizedPlugins.get(plugin);\n\n if (normalizedPlugin) {\n return normalizedPlugin;\n }\n\n normalizedPlugin = {\n configs: plugin.configs || {},\n environments: plugin.environments || {},\n processors: plugin.processors || {},\n rules: plugin.rules || {}\n };\n\n // save the reference for later\n normalizedPlugins.set(plugin, normalizedPlugin);\n\n return normalizedPlugin;\n}\n\n//------------------------------------------------------------------------------\n// Public Interface\n//------------------------------------------------------------------------------\n\n/**\n * The factory of `ConfigArray` objects.\n */\nclass ConfigArrayFactory {\n\n /**\n * Initialize this instance.\n * @param {ConfigArrayFactoryOptions} [options] The map for additional plugins.\n */\n constructor({\n additionalPluginPool = new Map(),\n cwd = process.cwd(),\n resolvePluginsRelativeTo,\n builtInRules,\n resolver = ModuleResolver,\n eslintAllPath,\n getEslintAllConfig,\n eslintRecommendedPath,\n getEslintRecommendedConfig\n } = {}) {\n internalSlotsMap.set(this, {\n additionalPluginPool,\n cwd,\n resolvePluginsRelativeTo:\n resolvePluginsRelativeTo &&\n path.resolve(cwd, resolvePluginsRelativeTo),\n builtInRules,\n resolver,\n eslintAllPath,\n getEslintAllConfig,\n eslintRecommendedPath,\n getEslintRecommendedConfig\n });\n }\n\n /**\n * Create `ConfigArray` instance from a config data.\n * @param {ConfigData|null} configData The config data to create.\n * @param {Object} [options] The options.\n * @param {string} [options.basePath] The base path to resolve relative paths in `overrides[].files`, `overrides[].excludedFiles`, and `ignorePatterns`.\n * @param {string} [options.filePath] The path to this config data.\n * @param {string} [options.name] The config name.\n * @returns {ConfigArray} Loaded config.\n */\n create(configData, { basePath, filePath, name } = {}) {\n if (!configData) {\n return new ConfigArray();\n }\n\n const slots = internalSlotsMap.get(this);\n const ctx = createContext(slots, \"config\", name, filePath, basePath);\n const elements = this._normalizeConfigData(configData, ctx);\n\n return new ConfigArray(...elements);\n }\n\n /**\n * Load a config file.\n * @param {string} filePath The path to a config file.\n * @param {Object} [options] The options.\n * @param {string} [options.basePath] The base path to resolve relative paths in `overrides[].files`, `overrides[].excludedFiles`, and `ignorePatterns`.\n * @param {string} [options.name] The config name.\n * @returns {ConfigArray} Loaded config.\n */\n loadFile(filePath, { basePath, name } = {}) {\n const slots = internalSlotsMap.get(this);\n const ctx = createContext(slots, \"config\", name, filePath, basePath);\n\n return new ConfigArray(...this._loadConfigData(ctx));\n }\n\n /**\n * Load the config file on a given directory if exists.\n * @param {string} directoryPath The path to a directory.\n * @param {Object} [options] The options.\n * @param {string} [options.basePath] The base path to resolve relative paths in `overrides[].files`, `overrides[].excludedFiles`, and `ignorePatterns`.\n * @param {string} [options.name] The config name.\n * @returns {ConfigArray} Loaded config. An empty `ConfigArray` if any config doesn't exist.\n */\n loadInDirectory(directoryPath, { basePath, name } = {}) {\n const slots = internalSlotsMap.get(this);\n\n for (const filename of configFilenames) {\n const ctx = createContext(\n slots,\n \"config\",\n name,\n path.join(directoryPath, filename),\n basePath\n );\n\n if (fs.existsSync(ctx.filePath) && fs.statSync(ctx.filePath).isFile()) {\n let configData;\n\n try {\n configData = loadConfigFile(ctx.filePath);\n } catch (error) {\n if (!error || error.code !== \"ESLINT_CONFIG_FIELD_NOT_FOUND\") {\n throw error;\n }\n }\n\n if (configData) {\n debug(`Config file found: ${ctx.filePath}`);\n return new ConfigArray(\n ...this._normalizeConfigData(configData, ctx)\n );\n }\n }\n }\n\n debug(`Config file not found on ${directoryPath}`);\n return new ConfigArray();\n }\n\n /**\n * Check if a config file on a given directory exists or not.\n * @param {string} directoryPath The path to a directory.\n * @returns {string | null} The path to the found config file. If not found then null.\n */\n static getPathToConfigFileInDirectory(directoryPath) {\n for (const filename of configFilenames) {\n const filePath = path.join(directoryPath, filename);\n\n if (fs.existsSync(filePath)) {\n if (filename === \"package.json\") {\n try {\n loadPackageJSONConfigFile(filePath);\n return filePath;\n } catch { /* ignore */ }\n } else {\n return filePath;\n }\n }\n }\n return null;\n }\n\n /**\n * Load `.eslintignore` file.\n * @param {string} filePath The path to a `.eslintignore` file to load.\n * @returns {ConfigArray} Loaded config. An empty `ConfigArray` if any config doesn't exist.\n */\n loadESLintIgnore(filePath) {\n const slots = internalSlotsMap.get(this);\n const ctx = createContext(\n slots,\n \"ignore\",\n void 0,\n filePath,\n slots.cwd\n );\n const ignorePatterns = loadESLintIgnoreFile(ctx.filePath);\n\n return new ConfigArray(\n ...this._normalizeESLintIgnoreData(ignorePatterns, ctx)\n );\n }\n\n /**\n * Load `.eslintignore` file in the current working directory.\n * @returns {ConfigArray} Loaded config. An empty `ConfigArray` if any config doesn't exist.\n */\n loadDefaultESLintIgnore() {\n const slots = internalSlotsMap.get(this);\n const eslintIgnorePath = path.resolve(slots.cwd, \".eslintignore\");\n const packageJsonPath = path.resolve(slots.cwd, \"package.json\");\n\n if (fs.existsSync(eslintIgnorePath)) {\n return this.loadESLintIgnore(eslintIgnorePath);\n }\n if (fs.existsSync(packageJsonPath)) {\n const data = loadJSONConfigFile(packageJsonPath);\n\n if (Object.hasOwnProperty.call(data, \"eslintIgnore\")) {\n if (!Array.isArray(data.eslintIgnore)) {\n throw new Error(\"Package.json eslintIgnore property requires an array of paths\");\n }\n const ctx = createContext(\n slots,\n \"ignore\",\n \"eslintIgnore in package.json\",\n packageJsonPath,\n slots.cwd\n );\n\n return new ConfigArray(\n ...this._normalizeESLintIgnoreData(data.eslintIgnore, ctx)\n );\n }\n }\n\n return new ConfigArray();\n }\n\n /**\n * Load a given config file.\n * @param {ConfigArrayFactoryLoadingContext} ctx The loading context.\n * @returns {IterableIterator} Loaded config.\n * @private\n */\n _loadConfigData(ctx) {\n return this._normalizeConfigData(loadConfigFile(ctx.filePath), ctx);\n }\n\n /**\n * Normalize a given `.eslintignore` data to config array elements.\n * @param {string[]} ignorePatterns The patterns to ignore files.\n * @param {ConfigArrayFactoryLoadingContext} ctx The loading context.\n * @returns {IterableIterator} The normalized config.\n * @private\n */\n *_normalizeESLintIgnoreData(ignorePatterns, ctx) {\n const elements = this._normalizeObjectConfigData(\n { ignorePatterns },\n ctx\n );\n\n // Set `ignorePattern.loose` flag for backward compatibility.\n for (const element of elements) {\n if (element.ignorePattern) {\n element.ignorePattern.loose = true;\n }\n yield element;\n }\n }\n\n /**\n * Normalize a given config to an array.\n * @param {ConfigData} configData The config data to normalize.\n * @param {ConfigArrayFactoryLoadingContext} ctx The loading context.\n * @returns {IterableIterator} The normalized config.\n * @private\n */\n _normalizeConfigData(configData, ctx) {\n const validator = new ConfigValidator();\n\n validator.validateConfigSchema(configData, ctx.name || ctx.filePath);\n return this._normalizeObjectConfigData(configData, ctx);\n }\n\n /**\n * Normalize a given config to an array.\n * @param {ConfigData|OverrideConfigData} configData The config data to normalize.\n * @param {ConfigArrayFactoryLoadingContext} ctx The loading context.\n * @returns {IterableIterator} The normalized config.\n * @private\n */\n *_normalizeObjectConfigData(configData, ctx) {\n const { files, excludedFiles, ...configBody } = configData;\n const criteria = OverrideTester.create(\n files,\n excludedFiles,\n ctx.matchBasePath\n );\n const elements = this._normalizeObjectConfigDataBody(configBody, ctx);\n\n // Apply the criteria to every element.\n for (const element of elements) {\n\n /*\n * Merge the criteria.\n * This is for the `overrides` entries that came from the\n * configurations of `overrides[].extends`.\n */\n element.criteria = OverrideTester.and(criteria, element.criteria);\n\n /*\n * Remove `root` property to ignore `root` settings which came from\n * `extends` in `overrides`.\n */\n if (element.criteria) {\n element.root = void 0;\n }\n\n yield element;\n }\n }\n\n /**\n * Normalize a given config to an array.\n * @param {ConfigData} configData The config data to normalize.\n * @param {ConfigArrayFactoryLoadingContext} ctx The loading context.\n * @returns {IterableIterator} The normalized config.\n * @private\n */\n *_normalizeObjectConfigDataBody(\n {\n env,\n extends: extend,\n globals,\n ignorePatterns,\n noInlineConfig,\n parser: parserName,\n parserOptions,\n plugins: pluginList,\n processor,\n reportUnusedDisableDirectives,\n root,\n rules,\n settings,\n overrides: overrideList = []\n },\n ctx\n ) {\n const extendList = Array.isArray(extend) ? extend : [extend];\n const ignorePattern = ignorePatterns && new IgnorePattern(\n Array.isArray(ignorePatterns) ? ignorePatterns : [ignorePatterns],\n ctx.matchBasePath\n );\n\n // Flatten `extends`.\n for (const extendName of extendList.filter(Boolean)) {\n yield* this._loadExtends(extendName, ctx);\n }\n\n // Load parser & plugins.\n const parser = parserName && this._loadParser(parserName, ctx);\n const plugins = pluginList && this._loadPlugins(pluginList, ctx);\n\n // Yield pseudo config data for file extension processors.\n if (plugins) {\n yield* this._takeFileExtensionProcessors(plugins, ctx);\n }\n\n // Yield the config data except `extends` and `overrides`.\n yield {\n\n // Debug information.\n type: ctx.type,\n name: ctx.name,\n filePath: ctx.filePath,\n\n // Config data.\n criteria: null,\n env,\n globals,\n ignorePattern,\n noInlineConfig,\n parser,\n parserOptions,\n plugins,\n processor,\n reportUnusedDisableDirectives,\n root,\n rules,\n settings\n };\n\n // Flatten `overries`.\n for (let i = 0; i < overrideList.length; ++i) {\n yield* this._normalizeObjectConfigData(\n overrideList[i],\n { ...ctx, name: `${ctx.name}#overrides[${i}]` }\n );\n }\n }\n\n /**\n * Load configs of an element in `extends`.\n * @param {string} extendName The name of a base config.\n * @param {ConfigArrayFactoryLoadingContext} ctx The loading context.\n * @returns {IterableIterator} The normalized config.\n * @private\n */\n _loadExtends(extendName, ctx) {\n debug(\"Loading {extends:%j} relative to %s\", extendName, ctx.filePath);\n try {\n if (extendName.startsWith(\"eslint:\")) {\n return this._loadExtendedBuiltInConfig(extendName, ctx);\n }\n if (extendName.startsWith(\"plugin:\")) {\n return this._loadExtendedPluginConfig(extendName, ctx);\n }\n return this._loadExtendedShareableConfig(extendName, ctx);\n } catch (error) {\n error.message += `\\nReferenced from: ${ctx.filePath || ctx.name}`;\n throw error;\n }\n }\n\n /**\n * Load configs of an element in `extends`.\n * @param {string} extendName The name of a base config.\n * @param {ConfigArrayFactoryLoadingContext} ctx The loading context.\n * @returns {IterableIterator} The normalized config.\n * @private\n */\n _loadExtendedBuiltInConfig(extendName, ctx) {\n const {\n eslintAllPath,\n getEslintAllConfig,\n eslintRecommendedPath,\n getEslintRecommendedConfig\n } = internalSlotsMap.get(this);\n\n if (extendName === \"eslint:recommended\") {\n const name = `${ctx.name} » ${extendName}`;\n\n if (getEslintRecommendedConfig) {\n if (typeof getEslintRecommendedConfig !== \"function\") {\n throw new Error(`getEslintRecommendedConfig must be a function instead of '${getEslintRecommendedConfig}'`);\n }\n return this._normalizeConfigData(getEslintRecommendedConfig(), { ...ctx, name, filePath: \"\" });\n }\n return this._loadConfigData({\n ...ctx,\n name,\n filePath: eslintRecommendedPath\n });\n }\n if (extendName === \"eslint:all\") {\n const name = `${ctx.name} » ${extendName}`;\n\n if (getEslintAllConfig) {\n if (typeof getEslintAllConfig !== \"function\") {\n throw new Error(`getEslintAllConfig must be a function instead of '${getEslintAllConfig}'`);\n }\n return this._normalizeConfigData(getEslintAllConfig(), { ...ctx, name, filePath: \"\" });\n }\n return this._loadConfigData({\n ...ctx,\n name,\n filePath: eslintAllPath\n });\n }\n\n throw configInvalidError(extendName, ctx.name, \"extend-config-missing\");\n }\n\n /**\n * Load configs of an element in `extends`.\n * @param {string} extendName The name of a base config.\n * @param {ConfigArrayFactoryLoadingContext} ctx The loading context.\n * @returns {IterableIterator} The normalized config.\n * @private\n */\n _loadExtendedPluginConfig(extendName, ctx) {\n const slashIndex = extendName.lastIndexOf(\"/\");\n\n if (slashIndex === -1) {\n throw configInvalidError(extendName, ctx.filePath, \"plugin-invalid\");\n }\n\n const pluginName = extendName.slice(\"plugin:\".length, slashIndex);\n const configName = extendName.slice(slashIndex + 1);\n\n if (isFilePath(pluginName)) {\n throw new Error(\"'extends' cannot use a file path for plugins.\");\n }\n\n const plugin = this._loadPlugin(pluginName, ctx);\n const configData =\n plugin.definition &&\n plugin.definition.configs[configName];\n\n if (configData) {\n return this._normalizeConfigData(configData, {\n ...ctx,\n filePath: plugin.filePath || ctx.filePath,\n name: `${ctx.name} » plugin:${plugin.id}/${configName}`\n });\n }\n\n throw plugin.error || configInvalidError(extendName, ctx.filePath, \"extend-config-missing\");\n }\n\n /**\n * Load configs of an element in `extends`.\n * @param {string} extendName The name of a base config.\n * @param {ConfigArrayFactoryLoadingContext} ctx The loading context.\n * @returns {IterableIterator} The normalized config.\n * @private\n */\n _loadExtendedShareableConfig(extendName, ctx) {\n const { cwd, resolver } = internalSlotsMap.get(this);\n const relativeTo = ctx.filePath || path.join(cwd, \"__placeholder__.js\");\n let request;\n\n if (isFilePath(extendName)) {\n request = extendName;\n } else if (extendName.startsWith(\".\")) {\n request = `./${extendName}`; // For backward compatibility. A ton of tests depended on this behavior.\n } else {\n request = naming.normalizePackageName(\n extendName,\n \"eslint-config\"\n );\n }\n\n let filePath;\n\n try {\n filePath = resolver.resolve(request, relativeTo);\n } catch (error) {\n /* istanbul ignore else */\n if (error && error.code === \"MODULE_NOT_FOUND\") {\n throw configInvalidError(extendName, ctx.filePath, \"extend-config-missing\");\n }\n throw error;\n }\n\n writeDebugLogForLoading(request, relativeTo, filePath);\n return this._loadConfigData({\n ...ctx,\n filePath,\n name: `${ctx.name} » ${request}`\n });\n }\n\n /**\n * Load given plugins.\n * @param {string[]} names The plugin names to load.\n * @param {ConfigArrayFactoryLoadingContext} ctx The loading context.\n * @returns {Record} The loaded parser.\n * @private\n */\n _loadPlugins(names, ctx) {\n return names.reduce((map, name) => {\n if (isFilePath(name)) {\n throw new Error(\"Plugins array cannot includes file paths.\");\n }\n const plugin = this._loadPlugin(name, ctx);\n\n map[plugin.id] = plugin;\n\n return map;\n }, {});\n }\n\n /**\n * Load a given parser.\n * @param {string} nameOrPath The package name or the path to a parser file.\n * @param {ConfigArrayFactoryLoadingContext} ctx The loading context.\n * @returns {DependentParser} The loaded parser.\n */\n _loadParser(nameOrPath, ctx) {\n debug(\"Loading parser %j from %s\", nameOrPath, ctx.filePath);\n\n const { cwd, resolver } = internalSlotsMap.get(this);\n const relativeTo = ctx.filePath || path.join(cwd, \"__placeholder__.js\");\n\n try {\n const filePath = resolver.resolve(nameOrPath, relativeTo);\n\n writeDebugLogForLoading(nameOrPath, relativeTo, filePath);\n\n return new ConfigDependency({\n definition: require(filePath),\n filePath,\n id: nameOrPath,\n importerName: ctx.name,\n importerPath: ctx.filePath\n });\n } catch (error) {\n\n // If the parser name is \"espree\", load the espree of ESLint.\n if (nameOrPath === \"espree\") {\n debug(\"Fallback espree.\");\n return new ConfigDependency({\n definition: require(\"espree\"),\n filePath: require.resolve(\"espree\"),\n id: nameOrPath,\n importerName: ctx.name,\n importerPath: ctx.filePath\n });\n }\n\n debug(\"Failed to load parser '%s' declared in '%s'.\", nameOrPath, ctx.name);\n error.message = `Failed to load parser '${nameOrPath}' declared in '${ctx.name}': ${error.message}`;\n\n return new ConfigDependency({\n error,\n id: nameOrPath,\n importerName: ctx.name,\n importerPath: ctx.filePath\n });\n }\n }\n\n /**\n * Load a given plugin.\n * @param {string} name The plugin name to load.\n * @param {ConfigArrayFactoryLoadingContext} ctx The loading context.\n * @returns {DependentPlugin} The loaded plugin.\n * @private\n */\n _loadPlugin(name, ctx) {\n debug(\"Loading plugin %j from %s\", name, ctx.filePath);\n\n const { additionalPluginPool, resolver } = internalSlotsMap.get(this);\n const request = naming.normalizePackageName(name, \"eslint-plugin\");\n const id = naming.getShorthandName(request, \"eslint-plugin\");\n const relativeTo = path.join(ctx.pluginBasePath, \"__placeholder__.js\");\n\n if (name.match(/\\s+/u)) {\n const error = Object.assign(\n new Error(`Whitespace found in plugin name '${name}'`),\n {\n messageTemplate: \"whitespace-found\",\n messageData: { pluginName: request }\n }\n );\n\n return new ConfigDependency({\n error,\n id,\n importerName: ctx.name,\n importerPath: ctx.filePath\n });\n }\n\n // Check for additional pool.\n const plugin =\n additionalPluginPool.get(request) ||\n additionalPluginPool.get(id);\n\n if (plugin) {\n return new ConfigDependency({\n definition: normalizePlugin(plugin),\n filePath: \"\", // It's unknown where the plugin came from.\n id,\n importerName: ctx.name,\n importerPath: ctx.filePath\n });\n }\n\n let filePath;\n let error;\n\n try {\n filePath = resolver.resolve(request, relativeTo);\n } catch (resolveError) {\n error = resolveError;\n /* istanbul ignore else */\n if (error && error.code === \"MODULE_NOT_FOUND\") {\n error.messageTemplate = \"plugin-missing\";\n error.messageData = {\n pluginName: request,\n resolvePluginsRelativeTo: ctx.pluginBasePath,\n importerName: ctx.name\n };\n }\n }\n\n if (filePath) {\n try {\n writeDebugLogForLoading(request, relativeTo, filePath);\n\n const startTime = Date.now();\n const pluginDefinition = require(filePath);\n\n debug(`Plugin ${filePath} loaded in: ${Date.now() - startTime}ms`);\n\n return new ConfigDependency({\n definition: normalizePlugin(pluginDefinition),\n filePath,\n id,\n importerName: ctx.name,\n importerPath: ctx.filePath\n });\n } catch (loadError) {\n error = loadError;\n }\n }\n\n debug(\"Failed to load plugin '%s' declared in '%s'.\", name, ctx.name);\n error.message = `Failed to load plugin '${name}' declared in '${ctx.name}': ${error.message}`;\n return new ConfigDependency({\n error,\n id,\n importerName: ctx.name,\n importerPath: ctx.filePath\n });\n }\n\n /**\n * Take file expression processors as config array elements.\n * @param {Record} plugins The plugin definitions.\n * @param {ConfigArrayFactoryLoadingContext} ctx The loading context.\n * @returns {IterableIterator} The config array elements of file expression processors.\n * @private\n */\n *_takeFileExtensionProcessors(plugins, ctx) {\n for (const pluginId of Object.keys(plugins)) {\n const processors =\n plugins[pluginId] &&\n plugins[pluginId].definition &&\n plugins[pluginId].definition.processors;\n\n if (!processors) {\n continue;\n }\n\n for (const processorId of Object.keys(processors)) {\n if (processorId.startsWith(\".\")) {\n yield* this._normalizeObjectConfigData(\n {\n files: [`*${processorId}`],\n processor: `${pluginId}/${processorId}`\n },\n {\n ...ctx,\n type: \"implicit-processor\",\n name: `${ctx.name}#processors[\"${pluginId}/${processorId}\"]`\n }\n );\n }\n }\n }\n }\n}\n\nexport { ConfigArrayFactory, createContext };\n","/**\n * @fileoverview `CascadingConfigArrayFactory` class.\n *\n * `CascadingConfigArrayFactory` class has a responsibility:\n *\n * 1. Handles cascading of config files.\n *\n * It provides two methods:\n *\n * - `getConfigArrayForFile(filePath)`\n * Get the corresponded configuration of a given file. This method doesn't\n * throw even if the given file didn't exist.\n * - `clearCache()`\n * Clear the internal cache. You have to call this method when\n * `additionalPluginPool` was updated if `baseConfig` or `cliConfig` depends\n * on the additional plugins. (`CLIEngine#addPlugin()` method calls this.)\n *\n * @author Toru Nagashima \n */\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nimport debugOrig from \"debug\";\nimport os from \"os\";\nimport path from \"path\";\n\nimport { ConfigArrayFactory } from \"./config-array-factory.js\";\nimport {\n ConfigArray,\n ConfigDependency,\n IgnorePattern\n} from \"./config-array/index.js\";\nimport ConfigValidator from \"./shared/config-validator.js\";\nimport { emitDeprecationWarning } from \"./shared/deprecation-warnings.js\";\n\nconst debug = debugOrig(\"eslintrc:cascading-config-array-factory\");\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\n// Define types for VSCode IntelliSense.\n/** @typedef {import(\"./shared/types\").ConfigData} ConfigData */\n/** @typedef {import(\"./shared/types\").Parser} Parser */\n/** @typedef {import(\"./shared/types\").Plugin} Plugin */\n/** @typedef {import(\"./shared/types\").Rule} Rule */\n/** @typedef {ReturnType} ConfigArray */\n\n/**\n * @typedef {Object} CascadingConfigArrayFactoryOptions\n * @property {Map} [additionalPluginPool] The map for additional plugins.\n * @property {ConfigData} [baseConfig] The config by `baseConfig` option.\n * @property {ConfigData} [cliConfig] The config by CLI options (`--env`, `--global`, `--ignore-pattern`, `--parser`, `--parser-options`, `--plugin`, and `--rule`). CLI options overwrite the setting in config files.\n * @property {string} [cwd] The base directory to start lookup.\n * @property {string} [ignorePath] The path to the alternative file of `.eslintignore`.\n * @property {string[]} [rulePaths] The value of `--rulesdir` option.\n * @property {string} [specificConfigPath] The value of `--config` option.\n * @property {boolean} [useEslintrc] if `false` then it doesn't load config files.\n * @property {Function} loadRules The function to use to load rules.\n * @property {Map} builtInRules The rules that are built in to ESLint.\n * @property {Object} [resolver=ModuleResolver] The module resolver object.\n * @property {string} eslintAllPath The path to the definitions for eslint:all.\n * @property {Function} getEslintAllConfig Returns the config data for eslint:all.\n * @property {string} eslintRecommendedPath The path to the definitions for eslint:recommended.\n * @property {Function} getEslintRecommendedConfig Returns the config data for eslint:recommended.\n */\n\n/**\n * @typedef {Object} CascadingConfigArrayFactoryInternalSlots\n * @property {ConfigArray} baseConfigArray The config array of `baseConfig` option.\n * @property {ConfigData} baseConfigData The config data of `baseConfig` option. This is used to reset `baseConfigArray`.\n * @property {ConfigArray} cliConfigArray The config array of CLI options.\n * @property {ConfigData} cliConfigData The config data of CLI options. This is used to reset `cliConfigArray`.\n * @property {ConfigArrayFactory} configArrayFactory The factory for config arrays.\n * @property {Map} configCache The cache from directory paths to config arrays.\n * @property {string} cwd The base directory to start lookup.\n * @property {WeakMap} finalizeCache The cache from config arrays to finalized config arrays.\n * @property {string} [ignorePath] The path to the alternative file of `.eslintignore`.\n * @property {string[]|null} rulePaths The value of `--rulesdir` option. This is used to reset `baseConfigArray`.\n * @property {string|null} specificConfigPath The value of `--config` option. This is used to reset `cliConfigArray`.\n * @property {boolean} useEslintrc if `false` then it doesn't load config files.\n * @property {Function} loadRules The function to use to load rules.\n * @property {Map} builtInRules The rules that are built in to ESLint.\n * @property {Object} [resolver=ModuleResolver] The module resolver object.\n * @property {string} eslintAllPath The path to the definitions for eslint:all.\n * @property {Function} getEslintAllConfig Returns the config data for eslint:all.\n * @property {string} eslintRecommendedPath The path to the definitions for eslint:recommended.\n * @property {Function} getEslintRecommendedConfig Returns the config data for eslint:recommended.\n */\n\n/** @type {WeakMap} */\nconst internalSlotsMap = new WeakMap();\n\n/**\n * Create the config array from `baseConfig` and `rulePaths`.\n * @param {CascadingConfigArrayFactoryInternalSlots} slots The slots.\n * @returns {ConfigArray} The config array of the base configs.\n */\nfunction createBaseConfigArray({\n configArrayFactory,\n baseConfigData,\n rulePaths,\n cwd,\n loadRules\n}) {\n const baseConfigArray = configArrayFactory.create(\n baseConfigData,\n { name: \"BaseConfig\" }\n );\n\n /*\n * Create the config array element for the default ignore patterns.\n * This element has `ignorePattern` property that ignores the default\n * patterns in the current working directory.\n */\n baseConfigArray.unshift(configArrayFactory.create(\n { ignorePatterns: IgnorePattern.DefaultPatterns },\n { name: \"DefaultIgnorePattern\" }\n )[0]);\n\n /*\n * Load rules `--rulesdir` option as a pseudo plugin.\n * Use a pseudo plugin to define rules of `--rulesdir`, so we can validate\n * the rule's options with only information in the config array.\n */\n if (rulePaths && rulePaths.length > 0) {\n baseConfigArray.push({\n type: \"config\",\n name: \"--rulesdir\",\n filePath: \"\",\n plugins: {\n \"\": new ConfigDependency({\n definition: {\n rules: rulePaths.reduce(\n (map, rulesPath) => Object.assign(\n map,\n loadRules(rulesPath, cwd)\n ),\n {}\n )\n },\n filePath: \"\",\n id: \"\",\n importerName: \"--rulesdir\",\n importerPath: \"\"\n })\n }\n });\n }\n\n return baseConfigArray;\n}\n\n/**\n * Create the config array from CLI options.\n * @param {CascadingConfigArrayFactoryInternalSlots} slots The slots.\n * @returns {ConfigArray} The config array of the base configs.\n */\nfunction createCLIConfigArray({\n cliConfigData,\n configArrayFactory,\n cwd,\n ignorePath,\n specificConfigPath\n}) {\n const cliConfigArray = configArrayFactory.create(\n cliConfigData,\n { name: \"CLIOptions\" }\n );\n\n cliConfigArray.unshift(\n ...(ignorePath\n ? configArrayFactory.loadESLintIgnore(ignorePath)\n : configArrayFactory.loadDefaultESLintIgnore())\n );\n\n if (specificConfigPath) {\n cliConfigArray.unshift(\n ...configArrayFactory.loadFile(\n specificConfigPath,\n { name: \"--config\", basePath: cwd }\n )\n );\n }\n\n return cliConfigArray;\n}\n\n/**\n * The error type when there are files matched by a glob, but all of them have been ignored.\n */\nclass ConfigurationNotFoundError extends Error {\n\n // eslint-disable-next-line jsdoc/require-description\n /**\n * @param {string} directoryPath The directory path.\n */\n constructor(directoryPath) {\n super(`No ESLint configuration found in ${directoryPath}.`);\n this.messageTemplate = \"no-config-found\";\n this.messageData = { directoryPath };\n }\n}\n\n/**\n * This class provides the functionality that enumerates every file which is\n * matched by given glob patterns and that configuration.\n */\nclass CascadingConfigArrayFactory {\n\n /**\n * Initialize this enumerator.\n * @param {CascadingConfigArrayFactoryOptions} options The options.\n */\n constructor({\n additionalPluginPool = new Map(),\n baseConfig: baseConfigData = null,\n cliConfig: cliConfigData = null,\n cwd = process.cwd(),\n ignorePath,\n resolvePluginsRelativeTo,\n rulePaths = [],\n specificConfigPath = null,\n useEslintrc = true,\n builtInRules = new Map(),\n loadRules,\n resolver,\n eslintRecommendedPath,\n getEslintRecommendedConfig,\n eslintAllPath,\n getEslintAllConfig\n } = {}) {\n const configArrayFactory = new ConfigArrayFactory({\n additionalPluginPool,\n cwd,\n resolvePluginsRelativeTo,\n builtInRules,\n resolver,\n eslintRecommendedPath,\n getEslintRecommendedConfig,\n eslintAllPath,\n getEslintAllConfig\n });\n\n internalSlotsMap.set(this, {\n baseConfigArray: createBaseConfigArray({\n baseConfigData,\n configArrayFactory,\n cwd,\n rulePaths,\n loadRules\n }),\n baseConfigData,\n cliConfigArray: createCLIConfigArray({\n cliConfigData,\n configArrayFactory,\n cwd,\n ignorePath,\n specificConfigPath\n }),\n cliConfigData,\n configArrayFactory,\n configCache: new Map(),\n cwd,\n finalizeCache: new WeakMap(),\n ignorePath,\n rulePaths,\n specificConfigPath,\n useEslintrc,\n builtInRules,\n loadRules\n });\n }\n\n /**\n * The path to the current working directory.\n * This is used by tests.\n * @type {string}\n */\n get cwd() {\n const { cwd } = internalSlotsMap.get(this);\n\n return cwd;\n }\n\n /**\n * Get the config array of a given file.\n * If `filePath` was not given, it returns the config which contains only\n * `baseConfigData` and `cliConfigData`.\n * @param {string} [filePath] The file path to a file.\n * @param {Object} [options] The options.\n * @param {boolean} [options.ignoreNotFoundError] If `true` then it doesn't throw `ConfigurationNotFoundError`.\n * @returns {ConfigArray} The config array of the file.\n */\n getConfigArrayForFile(filePath, { ignoreNotFoundError = false } = {}) {\n const {\n baseConfigArray,\n cliConfigArray,\n cwd\n } = internalSlotsMap.get(this);\n\n if (!filePath) {\n return new ConfigArray(...baseConfigArray, ...cliConfigArray);\n }\n\n const directoryPath = path.dirname(path.resolve(cwd, filePath));\n\n debug(`Load config files for ${directoryPath}.`);\n\n return this._finalizeConfigArray(\n this._loadConfigInAncestors(directoryPath),\n directoryPath,\n ignoreNotFoundError\n );\n }\n\n /**\n * Set the config data to override all configs.\n * Require to call `clearCache()` method after this method is called.\n * @param {ConfigData} configData The config data to override all configs.\n * @returns {void}\n */\n setOverrideConfig(configData) {\n const slots = internalSlotsMap.get(this);\n\n slots.cliConfigData = configData;\n }\n\n /**\n * Clear config cache.\n * @returns {void}\n */\n clearCache() {\n const slots = internalSlotsMap.get(this);\n\n slots.baseConfigArray = createBaseConfigArray(slots);\n slots.cliConfigArray = createCLIConfigArray(slots);\n slots.configCache.clear();\n }\n\n /**\n * Load and normalize config files from the ancestor directories.\n * @param {string} directoryPath The path to a leaf directory.\n * @param {boolean} configsExistInSubdirs `true` if configurations exist in subdirectories.\n * @returns {ConfigArray} The loaded config.\n * @private\n */\n _loadConfigInAncestors(directoryPath, configsExistInSubdirs = false) {\n const {\n baseConfigArray,\n configArrayFactory,\n configCache,\n cwd,\n useEslintrc\n } = internalSlotsMap.get(this);\n\n if (!useEslintrc) {\n return baseConfigArray;\n }\n\n let configArray = configCache.get(directoryPath);\n\n // Hit cache.\n if (configArray) {\n debug(`Cache hit: ${directoryPath}.`);\n return configArray;\n }\n debug(`No cache found: ${directoryPath}.`);\n\n const homePath = os.homedir();\n\n // Consider this is root.\n if (directoryPath === homePath && cwd !== homePath) {\n debug(\"Stop traversing because of considered root.\");\n if (configsExistInSubdirs) {\n const filePath = ConfigArrayFactory.getPathToConfigFileInDirectory(directoryPath);\n\n if (filePath) {\n emitDeprecationWarning(\n filePath,\n \"ESLINT_PERSONAL_CONFIG_SUPPRESS\"\n );\n }\n }\n return this._cacheConfig(directoryPath, baseConfigArray);\n }\n\n // Load the config on this directory.\n try {\n configArray = configArrayFactory.loadInDirectory(directoryPath);\n } catch (error) {\n /* istanbul ignore next */\n if (error.code === \"EACCES\") {\n debug(\"Stop traversing because of 'EACCES' error.\");\n return this._cacheConfig(directoryPath, baseConfigArray);\n }\n throw error;\n }\n\n if (configArray.length > 0 && configArray.isRoot()) {\n debug(\"Stop traversing because of 'root:true'.\");\n configArray.unshift(...baseConfigArray);\n return this._cacheConfig(directoryPath, configArray);\n }\n\n // Load from the ancestors and merge it.\n const parentPath = path.dirname(directoryPath);\n const parentConfigArray = parentPath && parentPath !== directoryPath\n ? this._loadConfigInAncestors(\n parentPath,\n configsExistInSubdirs || configArray.length > 0\n )\n : baseConfigArray;\n\n if (configArray.length > 0) {\n configArray.unshift(...parentConfigArray);\n } else {\n configArray = parentConfigArray;\n }\n\n // Cache and return.\n return this._cacheConfig(directoryPath, configArray);\n }\n\n /**\n * Freeze and cache a given config.\n * @param {string} directoryPath The path to a directory as a cache key.\n * @param {ConfigArray} configArray The config array as a cache value.\n * @returns {ConfigArray} The `configArray` (frozen).\n */\n _cacheConfig(directoryPath, configArray) {\n const { configCache } = internalSlotsMap.get(this);\n\n Object.freeze(configArray);\n configCache.set(directoryPath, configArray);\n\n return configArray;\n }\n\n /**\n * Finalize a given config array.\n * Concatenate `--config` and other CLI options.\n * @param {ConfigArray} configArray The parent config array.\n * @param {string} directoryPath The path to the leaf directory to find config files.\n * @param {boolean} ignoreNotFoundError If `true` then it doesn't throw `ConfigurationNotFoundError`.\n * @returns {ConfigArray} The loaded config.\n * @private\n */\n _finalizeConfigArray(configArray, directoryPath, ignoreNotFoundError) {\n const {\n cliConfigArray,\n configArrayFactory,\n finalizeCache,\n useEslintrc,\n builtInRules\n } = internalSlotsMap.get(this);\n\n let finalConfigArray = finalizeCache.get(configArray);\n\n if (!finalConfigArray) {\n finalConfigArray = configArray;\n\n // Load the personal config if there are no regular config files.\n if (\n useEslintrc &&\n configArray.every(c => !c.filePath) &&\n cliConfigArray.every(c => !c.filePath) // `--config` option can be a file.\n ) {\n const homePath = os.homedir();\n\n debug(\"Loading the config file of the home directory:\", homePath);\n\n const personalConfigArray = configArrayFactory.loadInDirectory(\n homePath,\n { name: \"PersonalConfig\" }\n );\n\n if (\n personalConfigArray.length > 0 &&\n !directoryPath.startsWith(homePath)\n ) {\n const lastElement =\n personalConfigArray[personalConfigArray.length - 1];\n\n emitDeprecationWarning(\n lastElement.filePath,\n \"ESLINT_PERSONAL_CONFIG_LOAD\"\n );\n }\n\n finalConfigArray = finalConfigArray.concat(personalConfigArray);\n }\n\n // Apply CLI options.\n if (cliConfigArray.length > 0) {\n finalConfigArray = finalConfigArray.concat(cliConfigArray);\n }\n\n // Validate rule settings and environments.\n const validator = new ConfigValidator({\n builtInRules\n });\n\n validator.validateConfigArray(finalConfigArray);\n\n // Cache it.\n Object.freeze(finalConfigArray);\n finalizeCache.set(configArray, finalConfigArray);\n\n debug(\n \"Configuration was determined: %o on %s\",\n finalConfigArray,\n directoryPath\n );\n }\n\n // At least one element (the default ignore patterns) exists.\n if (!ignoreNotFoundError && useEslintrc && finalConfigArray.length <= 1) {\n throw new ConfigurationNotFoundError(directoryPath);\n }\n\n return finalConfigArray;\n }\n}\n\n//------------------------------------------------------------------------------\n// Public Interface\n//------------------------------------------------------------------------------\n\nexport { CascadingConfigArrayFactory };\n","/**\n * @fileoverview Compatibility class for flat config.\n * @author Nicholas C. Zakas\n */\n\n//-----------------------------------------------------------------------------\n// Requirements\n//-----------------------------------------------------------------------------\n\nimport createDebug from \"debug\";\nimport path from \"path\";\n\nimport environments from \"../conf/environments.js\";\nimport { ConfigArrayFactory } from \"./config-array-factory.js\";\n\n//-----------------------------------------------------------------------------\n// Helpers\n//-----------------------------------------------------------------------------\n\n/** @typedef {import(\"../../shared/types\").Environment} Environment */\n/** @typedef {import(\"../../shared/types\").Processor} Processor */\n\nconst debug = createDebug(\"eslintrc:flat-compat\");\nconst cafactory = Symbol(\"cafactory\");\n\n/**\n * Translates an ESLintRC-style config object into a flag-config-style config\n * object.\n * @param {Object} eslintrcConfig An ESLintRC-style config object.\n * @param {Object} options Options to help translate the config.\n * @param {string} options.resolveConfigRelativeTo To the directory to resolve\n * configs from.\n * @param {string} options.resolvePluginsRelativeTo The directory to resolve\n * plugins from.\n * @param {ReadOnlyMap} options.pluginEnvironments A map of plugin environment\n * names to objects.\n * @param {ReadOnlyMap} options.pluginProcessors A map of plugin processor\n * names to objects.\n * @returns {Object} A flag-config-style config object.\n */\nfunction translateESLintRC(eslintrcConfig, {\n resolveConfigRelativeTo,\n resolvePluginsRelativeTo,\n pluginEnvironments,\n pluginProcessors\n}) {\n\n const flatConfig = {};\n const configs = [];\n const languageOptions = {};\n const linterOptions = {};\n const keysToCopy = [\"settings\", \"rules\", \"processor\"];\n const languageOptionsKeysToCopy = [\"globals\", \"parser\", \"parserOptions\"];\n const linterOptionsKeysToCopy = [\"noInlineConfig\", \"reportUnusedDisableDirectives\"];\n\n // copy over simple translations\n for (const key of keysToCopy) {\n if (key in eslintrcConfig && typeof eslintrcConfig[key] !== \"undefined\") {\n flatConfig[key] = eslintrcConfig[key];\n }\n }\n\n // copy over languageOptions\n for (const key of languageOptionsKeysToCopy) {\n if (key in eslintrcConfig && typeof eslintrcConfig[key] !== \"undefined\") {\n\n // create the languageOptions key in the flat config\n flatConfig.languageOptions = languageOptions;\n\n if (key === \"parser\") {\n debug(`Resolving parser '${languageOptions[key]}' relative to ${resolveConfigRelativeTo}`);\n\n if (eslintrcConfig[key].error) {\n throw eslintrcConfig[key].error;\n }\n\n languageOptions[key] = eslintrcConfig[key].definition;\n continue;\n }\n\n // clone any object values that are in the eslintrc config\n if (eslintrcConfig[key] && typeof eslintrcConfig[key] === \"object\") {\n languageOptions[key] = {\n ...eslintrcConfig[key]\n };\n } else {\n languageOptions[key] = eslintrcConfig[key];\n }\n }\n }\n\n // copy over linterOptions\n for (const key of linterOptionsKeysToCopy) {\n if (key in eslintrcConfig && typeof eslintrcConfig[key] !== \"undefined\") {\n flatConfig.linterOptions = linterOptions;\n linterOptions[key] = eslintrcConfig[key];\n }\n }\n\n // move ecmaVersion a level up\n if (languageOptions.parserOptions) {\n\n if (\"ecmaVersion\" in languageOptions.parserOptions) {\n languageOptions.ecmaVersion = languageOptions.parserOptions.ecmaVersion;\n delete languageOptions.parserOptions.ecmaVersion;\n }\n\n if (\"sourceType\" in languageOptions.parserOptions) {\n languageOptions.sourceType = languageOptions.parserOptions.sourceType;\n delete languageOptions.parserOptions.sourceType;\n }\n\n // check to see if we even need parserOptions anymore and remove it if not\n if (Object.keys(languageOptions.parserOptions).length === 0) {\n delete languageOptions.parserOptions;\n }\n }\n\n // overrides\n if (eslintrcConfig.criteria) {\n flatConfig.files = [absoluteFilePath => eslintrcConfig.criteria.test(absoluteFilePath)];\n }\n\n // translate plugins\n if (eslintrcConfig.plugins && typeof eslintrcConfig.plugins === \"object\") {\n debug(`Translating plugins: ${eslintrcConfig.plugins}`);\n\n flatConfig.plugins = {};\n\n for (const pluginName of Object.keys(eslintrcConfig.plugins)) {\n\n debug(`Translating plugin: ${pluginName}`);\n debug(`Resolving plugin '${pluginName} relative to ${resolvePluginsRelativeTo}`);\n\n const { definition: plugin, error } = eslintrcConfig.plugins[pluginName];\n\n if (error) {\n throw error;\n }\n\n flatConfig.plugins[pluginName] = plugin;\n\n // create a config for any processors\n if (plugin.processors) {\n for (const processorName of Object.keys(plugin.processors)) {\n if (processorName.startsWith(\".\")) {\n debug(`Assigning processor: ${pluginName}/${processorName}`);\n\n configs.unshift({\n files: [`**/*${processorName}`],\n processor: pluginProcessors.get(`${pluginName}/${processorName}`)\n });\n }\n\n }\n }\n }\n }\n\n // translate env - must come after plugins\n if (eslintrcConfig.env && typeof eslintrcConfig.env === \"object\") {\n for (const envName of Object.keys(eslintrcConfig.env)) {\n\n // only add environments that are true\n if (eslintrcConfig.env[envName]) {\n debug(`Translating environment: ${envName}`);\n\n if (environments.has(envName)) {\n\n // built-in environments should be defined first\n configs.unshift(...translateESLintRC({\n criteria: eslintrcConfig.criteria,\n ...environments.get(envName)\n }, {\n resolveConfigRelativeTo,\n resolvePluginsRelativeTo\n }));\n } else if (pluginEnvironments.has(envName)) {\n\n // if the environment comes from a plugin, it should come after the plugin config\n configs.push(...translateESLintRC({\n criteria: eslintrcConfig.criteria,\n ...pluginEnvironments.get(envName)\n }, {\n resolveConfigRelativeTo,\n resolvePluginsRelativeTo\n }));\n }\n }\n }\n }\n\n // only add if there are actually keys in the config\n if (Object.keys(flatConfig).length > 0) {\n configs.push(flatConfig);\n }\n\n return configs;\n}\n\n\n//-----------------------------------------------------------------------------\n// Exports\n//-----------------------------------------------------------------------------\n\n/**\n * A compatibility class for working with configs.\n */\nclass FlatCompat {\n\n constructor({\n baseDirectory = process.cwd(),\n resolvePluginsRelativeTo = baseDirectory,\n recommendedConfig,\n allConfig\n } = {}) {\n this.baseDirectory = baseDirectory;\n this.resolvePluginsRelativeTo = resolvePluginsRelativeTo;\n this[cafactory] = new ConfigArrayFactory({\n cwd: baseDirectory,\n resolvePluginsRelativeTo,\n getEslintAllConfig: () => {\n\n if (!allConfig) {\n throw new TypeError(\"Missing parameter 'allConfig' in FlatCompat constructor.\");\n }\n\n return allConfig;\n },\n getEslintRecommendedConfig: () => {\n\n if (!recommendedConfig) {\n throw new TypeError(\"Missing parameter 'recommendedConfig' in FlatCompat constructor.\");\n }\n\n return recommendedConfig;\n }\n });\n }\n\n /**\n * Translates an ESLintRC-style config into a flag-config-style config.\n * @param {Object} eslintrcConfig The ESLintRC-style config object.\n * @returns {Object} A flag-config-style config object.\n */\n config(eslintrcConfig) {\n const eslintrcArray = this[cafactory].create(eslintrcConfig, {\n basePath: this.baseDirectory\n });\n\n const flatArray = [];\n let hasIgnorePatterns = false;\n\n eslintrcArray.forEach(configData => {\n if (configData.type === \"config\") {\n hasIgnorePatterns = hasIgnorePatterns || configData.ignorePattern;\n flatArray.push(...translateESLintRC(configData, {\n resolveConfigRelativeTo: path.join(this.baseDirectory, \"__placeholder.js\"),\n resolvePluginsRelativeTo: path.join(this.resolvePluginsRelativeTo, \"__placeholder.js\"),\n pluginEnvironments: eslintrcArray.pluginEnvironments,\n pluginProcessors: eslintrcArray.pluginProcessors\n }));\n }\n });\n\n // combine ignorePatterns to emulate ESLintRC behavior better\n if (hasIgnorePatterns) {\n flatArray.unshift({\n ignores: [filePath => {\n\n // Compute the final config for this file.\n // This filters config array elements by `files`/`excludedFiles` then merges the elements.\n const finalConfig = eslintrcArray.extractConfig(filePath);\n\n // Test the `ignorePattern` properties of the final config.\n return Boolean(finalConfig.ignores) && finalConfig.ignores(filePath);\n }]\n });\n }\n\n return flatArray;\n }\n\n /**\n * Translates the `env` section of an ESLintRC-style config.\n * @param {Object} envConfig The `env` section of an ESLintRC config.\n * @returns {Object[]} An array of flag-config objects representing the environments.\n */\n env(envConfig) {\n return this.config({\n env: envConfig\n });\n }\n\n /**\n * Translates the `extends` section of an ESLintRC-style config.\n * @param {...string} configsToExtend The names of the configs to load.\n * @returns {Object[]} An array of flag-config objects representing the config.\n */\n extends(...configsToExtend) {\n return this.config({\n extends: configsToExtend\n });\n }\n\n /**\n * Translates the `plugins` section of an ESLintRC-style config.\n * @param {...string} plugins The names of the plugins to load.\n * @returns {Object[]} An array of flag-config objects representing the plugins.\n */\n plugins(...plugins) {\n return this.config({\n plugins\n });\n }\n}\n\nexport { FlatCompat };\n","/**\n * @fileoverview Package exports for @eslint/eslintrc\n * @author Nicholas C. Zakas\n */\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nimport {\n ConfigArrayFactory,\n createContext as createConfigArrayFactoryContext\n} from \"./config-array-factory.js\";\n\nimport { CascadingConfigArrayFactory } from \"./cascading-config-array-factory.js\";\nimport * as ModuleResolver from \"./shared/relative-module-resolver.js\";\nimport { ConfigArray, getUsedExtractedConfigs } from \"./config-array/index.js\";\nimport { ConfigDependency } from \"./config-array/config-dependency.js\";\nimport { ExtractedConfig } from \"./config-array/extracted-config.js\";\nimport { IgnorePattern } from \"./config-array/ignore-pattern.js\";\nimport { OverrideTester } from \"./config-array/override-tester.js\";\nimport * as ConfigOps from \"./shared/config-ops.js\";\nimport ConfigValidator from \"./shared/config-validator.js\";\nimport * as naming from \"./shared/naming.js\";\nimport { FlatCompat } from \"./flat-compat.js\";\nimport environments from \"../conf/environments.js\";\n\n//-----------------------------------------------------------------------------\n// Exports\n//-----------------------------------------------------------------------------\n\nconst Legacy = {\n ConfigArray,\n createConfigArrayFactoryContext,\n CascadingConfigArrayFactory,\n ConfigArrayFactory,\n ConfigDependency,\n ExtractedConfig,\n IgnorePattern,\n OverrideTester,\n getUsedExtractedConfigs,\n environments,\n\n // shared\n ConfigOps,\n ConfigValidator,\n ModuleResolver,\n naming\n};\n\nexport {\n\n Legacy,\n\n FlatCompat\n\n};\n"],"names":["debug","debugOrig","path","ignore","assert","internalSlotsMap","util","minimatch","Ajv","globals","BuiltInEnvironments","ConfigOps.normalizeConfigGlobal","Module","require","createRequire","fs","stripComments","importFresh","ModuleResolver.resolve","naming.normalizePackageName","naming.getShorthandName","os","createDebug","createConfigArrayFactoryContext"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAUA;AACA,MAAMA,OAAK,GAAGC,6BAAS,CAAC,yBAAyB,CAAC,CAAC;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,qBAAqB,CAAC,WAAW,EAAE;AAC5C,IAAI,IAAI,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;AAChC;AACA,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;AACjD,QAAQ,MAAM,CAAC,GAAG,MAAM,CAAC;AACzB,QAAQ,MAAM,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;AACjC;AACA;AACA,QAAQ,MAAM,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;AAC7C;AACA;AACA,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,UAAU,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;AAC3E,YAAY,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;AAC/B,gBAAgB,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;AAChD,gBAAgB,MAAM;AACtB,aAAa;AACb,YAAY,IAAI,CAAC,CAAC,CAAC,CAAC,KAAKC,wBAAI,CAAC,GAAG,EAAE;AACnC,gBAAgB,UAAU,GAAG,CAAC,CAAC;AAC/B,aAAa;AACb,SAAS;AACT,KAAK;AACL;AACA,IAAI,IAAI,cAAc,GAAG,MAAM,IAAIA,wBAAI,CAAC,GAAG,CAAC;AAC5C;AACA;AACA,IAAI,IAAI,cAAc,IAAI,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE;AACxF,QAAQ,cAAc,IAAIA,wBAAI,CAAC,GAAG,CAAC;AACnC,KAAK;AACL,IAAI,OAAO,cAAc,CAAC;AAC1B,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,QAAQ,CAAC,IAAI,EAAE,EAAE,EAAE;AAC5B,IAAI,MAAM,OAAO,GAAGA,wBAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAC5C;AACA,IAAI,IAAIA,wBAAI,CAAC,GAAG,KAAK,GAAG,EAAE;AAC1B,QAAQ,OAAO,OAAO,CAAC;AACvB,KAAK;AACL,IAAI,OAAO,OAAO,CAAC,KAAK,CAACA,wBAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC7C,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,SAAS,CAAC,QAAQ,EAAE;AAC7B,IAAI,MAAM,KAAK;AACf,QAAQ,QAAQ,CAAC,QAAQ,CAACA,wBAAI,CAAC,GAAG,CAAC;AACnC,SAAS,OAAO,CAAC,QAAQ,KAAK,OAAO,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAChE,KAAK,CAAC;AACN;AACA,IAAI,OAAO,KAAK,GAAG,GAAG,GAAG,EAAE,CAAC;AAC5B,CAAC;AACD;AACA,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC;AAC9D,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC;AAClE;AACA;AACA;AACA;AACA;AACA,MAAM,aAAa,CAAC;AACpB;AACA;AACA;AACA;AACA;AACA,IAAI,WAAW,eAAe,GAAG;AACjC,QAAQ,OAAO,eAAe,CAAC;AAC/B,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,mBAAmB,CAAC,GAAG,EAAE;AACpC,QAAQ,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,aAAa,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AAC5E,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,YAAY,CAAC,cAAc,EAAE;AACxC,QAAQF,OAAK,CAAC,iBAAiB,EAAE,cAAc,CAAC,CAAC;AACjD;AACA,QAAQ,MAAM,QAAQ,GAAG,qBAAqB,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AACpF,QAAQ,MAAM,QAAQ,GAAG,EAAE,CAAC,MAAM;AAClC,YAAY,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;AACzE,SAAS,CAAC;AACV,QAAQ,MAAM,EAAE,GAAGG,0BAAM,CAAC,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,WAAW,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC;AAC3F,QAAQ,MAAM,KAAK,GAAGA,0BAAM,CAAC,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AACzE;AACA,QAAQH,OAAK,CAAC,iBAAiB,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;AACzD;AACA,QAAQ,OAAO,MAAM,CAAC,MAAM;AAC5B,YAAY,CAAC,QAAQ,EAAE,GAAG,GAAG,KAAK,KAAK;AACvC,gBAAgBI,0BAAM,CAACF,wBAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,wCAAwC,CAAC,CAAC;AAC5F,gBAAgB,MAAM,UAAU,GAAG,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAChE,gBAAgB,MAAM,OAAO,GAAG,UAAU,KAAK,UAAU,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;AACjF,gBAAgB,MAAM,SAAS,GAAG,GAAG,GAAG,KAAK,GAAG,EAAE,CAAC;AACnD,gBAAgB,MAAM,MAAM,GAAG,OAAO,KAAK,EAAE,IAAI,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAC5E;AACA,gBAAgBF,OAAK,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;AACjF,gBAAgB,OAAO,MAAM,CAAC;AAC9B,aAAa;AACb,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE;AAClC,SAAS,CAAC;AACV,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,WAAW,CAAC,QAAQ,EAAE,QAAQ,EAAE;AACpC,QAAQI,0BAAM,CAACF,wBAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,wCAAwC,CAAC,CAAC;AACpF;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACjC;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AAC3B,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,qBAAqB,CAAC,WAAW,EAAE;AACvC,QAAQE,0BAAM,CAACF,wBAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,2CAA2C,CAAC,CAAC;AAC1F,QAAQ,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;AACnD;AACA,QAAQ,IAAI,WAAW,KAAK,QAAQ,EAAE;AACtC,YAAY,OAAO,QAAQ,CAAC;AAC5B,SAAS;AACT,QAAQ,MAAM,MAAM,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC7D;AACA,QAAQ,OAAO,QAAQ,CAAC,GAAG,CAAC,OAAO,IAAI;AACvC,YAAY,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AACrD,YAAY,MAAM,IAAI,GAAG,QAAQ,GAAG,GAAG,GAAG,EAAE,CAAC;AAC7C,YAAY,MAAM,IAAI,GAAG,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;AAC/D;AACA,YAAY,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;AAChE,gBAAgB,OAAO,CAAC,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AACjD,aAAa;AACb,YAAY,OAAO,KAAK,GAAG,OAAO,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AACnE,SAAS,CAAC,CAAC;AACX,KAAK;AACL;;AC3OA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,UAAU,CAAC,EAAE,EAAE,EAAE,EAAE;AAC5B,IAAI,OAAO,EAAE,CAAC,MAAM,IAAI,EAAE,CAAC,MAAM,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACrE,CAAC;AACD;AACA;AACA;AACA;AACA,MAAM,eAAe,CAAC;AACtB,IAAI,WAAW,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,0BAA0B,GAAG,EAAE,CAAC;AAC7C;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;AACtB;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;AAC1B;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC;AAC9B;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC,CAAC;AACrC;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;AAC3B;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;AAChC;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;AAC1B;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AAC9B;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,6BAA6B,GAAG,KAAK,CAAC,CAAC;AACpD;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;AACxB;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;AAC3B,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,qCAAqC,GAAG;AAC5C,QAAQ,MAAM;AACd;AACA,YAAY,0BAA0B,EAAE,QAAQ;AAChD,YAAY,SAAS,EAAE,QAAQ;AAC/B;AACA,YAAY,OAAO;AACnB,YAAY,GAAG,MAAM;AACrB,SAAS,GAAG,IAAI,CAAC;AACjB;AACA,QAAQ,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;AAChE,QAAQ,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC;AAC/E,QAAQ,MAAM,CAAC,cAAc,GAAG,OAAO,GAAG,OAAO,CAAC,QAAQ,GAAG,EAAE,CAAC;AAChE;AACA;AACA,QAAQ,IAAI,UAAU,CAAC,MAAM,CAAC,cAAc,EAAE,aAAa,CAAC,eAAe,CAAC,EAAE;AAC9E,YAAY,MAAM,CAAC,cAAc;AACjC,gBAAgB,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,aAAa,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;AAClF,SAAS;AACT;AACA,QAAQ,OAAO,MAAM,CAAC;AACtB,KAAK;AACL;;AC9IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMG,kBAAgB,GAAG,IAAI,cAAc,OAAO,CAAC;AACnD,IAAI,GAAG,CAAC,GAAG,EAAE;AACb,QAAQ,IAAI,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACnC;AACA,QAAQ,IAAI,CAAC,KAAK,EAAE;AACpB,YAAY,KAAK,GAAG;AACpB,gBAAgB,KAAK,EAAE,IAAI,GAAG,EAAE;AAChC,gBAAgB,MAAM,EAAE,IAAI;AAC5B,gBAAgB,YAAY,EAAE,IAAI;AAClC,gBAAgB,OAAO,EAAE,IAAI;AAC7B,aAAa,CAAC;AACd,YAAY,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAClC,SAAS;AACT;AACA,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,CAAC,EAAE,CAAC;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,EAAE;AAC/C,IAAI,MAAM,OAAO,GAAG,EAAE,CAAC;AACvB;AACA,IAAI,KAAK,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE;AACnD,QAAQ,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;AACpC;AACA,QAAQ,IAAI,CAAC,OAAO,CAAC,QAAQ,KAAK,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE;AAChF,YAAY,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC5B,SAAS;AACT,KAAK;AACL;AACA,IAAI,OAAO,OAAO,CAAC;AACnB,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,eAAe,CAAC,CAAC,EAAE;AAC5B,IAAI,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,CAAC;AAC/C,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE;AAC/C,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE;AAClC,QAAQ,OAAO;AACf,KAAK;AACL;AACA,IAAI,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AAC3C,QAAQ,IAAI,GAAG,KAAK,WAAW,EAAE;AACjC,YAAY,SAAS;AACrB,SAAS;AACT;AACA,QAAQ,IAAI,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE;AAC1C,YAAY,qBAAqB,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAC5D,SAAS,MAAM,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,EAAE;AAC3C,YAAY,IAAI,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE;AAC9C,gBAAgB,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;AACnE,gBAAgB,qBAAqB,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAChE,aAAa,MAAM,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,EAAE;AAC/C,gBAAgB,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AAC1C,aAAa;AACb,SAAS;AACT,KAAK;AACL,CAAC;AACD;AACA;AACA;AACA;AACA,MAAM,mBAAmB,SAAS,KAAK,CAAC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,WAAW,CAAC,QAAQ,EAAE,OAAO,EAAE;AACnC,QAAQ,KAAK,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,yBAAyB,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvH,QAAQ,IAAI,CAAC,eAAe,GAAG,iBAAiB,CAAC;AACjD,QAAQ,IAAI,CAAC,WAAW,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;AACjD,KAAK;AACL,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE;AACtC,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE;AAClC,QAAQ,OAAO;AACf,KAAK;AACL;AACA,IAAI,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AAC3C,QAAQ,IAAI,GAAG,KAAK,WAAW,EAAE;AACjC,YAAY,SAAS;AACrB,SAAS;AACT,QAAQ,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AACxC,QAAQ,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AACxC;AACA;AACA,QAAQ,IAAI,WAAW,KAAK,KAAK,CAAC,EAAE;AACpC,YAAY,IAAI,WAAW,CAAC,KAAK,EAAE;AACnC,gBAAgB,MAAM,WAAW,CAAC,KAAK,CAAC;AACxC,aAAa;AACb,YAAY,MAAM,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC;AACtC,SAAS,MAAM,IAAI,WAAW,CAAC,QAAQ,KAAK,WAAW,CAAC,QAAQ,EAAE;AAClE,YAAY,MAAM,IAAI,mBAAmB,CAAC,GAAG,EAAE;AAC/C,gBAAgB;AAChB,oBAAoB,QAAQ,EAAE,WAAW,CAAC,QAAQ;AAClD,oBAAoB,YAAY,EAAE,WAAW,CAAC,YAAY;AAC1D,iBAAiB;AACjB,gBAAgB;AAChB,oBAAoB,QAAQ,EAAE,WAAW,CAAC,QAAQ;AAClD,oBAAoB,YAAY,EAAE,WAAW,CAAC,YAAY;AAC1D,iBAAiB;AACjB,aAAa,CAAC,CAAC;AACf,SAAS;AACT,KAAK;AACL,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE;AAC1C,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE;AAClC,QAAQ,OAAO;AACf,KAAK;AACL;AACA,IAAI,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AAC3C,QAAQ,IAAI,GAAG,KAAK,WAAW,EAAE;AACjC,YAAY,SAAS;AACrB,SAAS;AACT,QAAQ,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AACtC,QAAQ,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AACtC;AACA;AACA,QAAQ,IAAI,SAAS,KAAK,KAAK,CAAC,EAAE;AAClC,YAAY,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;AAC1C,gBAAgB,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC;AAC7C,aAAa,MAAM;AACnB,gBAAgB,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAC1C,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,SAAS,MAAM;AACf,YAAY,SAAS,CAAC,MAAM,KAAK,CAAC;AAClC,YAAY,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC;AACpC,YAAY,SAAS,CAAC,MAAM,IAAI,CAAC;AACjC,UAAU;AACV,YAAY,SAAS,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAClD,SAAS;AACT,KAAK;AACL,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,YAAY,CAAC,QAAQ,EAAE,OAAO,EAAE;AACzC,IAAI,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;AACzC,IAAI,MAAM,cAAc,GAAG,EAAE,CAAC;AAC9B;AACA;AACA,IAAI,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE;AACjC,QAAQ,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;AACxC;AACA;AACA,QAAQ,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,EAAE;AAC9C,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE;AACtC,gBAAgB,MAAM,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;AAC3C,aAAa;AACb,YAAY,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;AAC3C,SAAS;AACT;AACA;AACA,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS,EAAE;AACpD,YAAY,MAAM,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;AACjD,SAAS;AACT;AACA;AACA,QAAQ,IAAI,MAAM,CAAC,cAAc,KAAK,KAAK,CAAC,IAAI,OAAO,CAAC,cAAc,KAAK,KAAK,CAAC,EAAE;AACnF,YAAY,MAAM,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;AAC3D,YAAY,MAAM,CAAC,0BAA0B,GAAG,OAAO,CAAC,IAAI,CAAC;AAC7D,SAAS;AACT;AACA;AACA,QAAQ,IAAI,MAAM,CAAC,6BAA6B,KAAK,KAAK,CAAC,IAAI,OAAO,CAAC,6BAA6B,KAAK,KAAK,CAAC,EAAE;AACjH,YAAY,MAAM,CAAC,6BAA6B,GAAG,OAAO,CAAC,6BAA6B,CAAC;AACzF,SAAS;AACT;AACA;AACA,QAAQ,IAAI,OAAO,CAAC,aAAa,EAAE;AACnC,YAAY,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;AACvD,SAAS;AACT;AACA;AACA,QAAQ,qBAAqB,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;AACvD,QAAQ,qBAAqB,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;AAC/D,QAAQ,qBAAqB,CAAC,MAAM,CAAC,aAAa,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;AAC3E,QAAQ,qBAAqB,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;AACjE,QAAQ,YAAY,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;AACtD,QAAQ,gBAAgB,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;AACtD,KAAK;AACL;AACA;AACA,IAAI,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;AACnC,QAAQ,MAAM,CAAC,OAAO,GAAG,aAAa,CAAC,YAAY,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC;AAC9E,KAAK;AACL;AACA,IAAI,OAAO,MAAM,CAAC;AAClB,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE;AACjD,IAAI,IAAI,IAAI,EAAE;AACd,QAAQ,MAAM,MAAM,GAAG,QAAQ,IAAI,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;AAClD;AACA,QAAQ,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;AACzD,YAAY,GAAG,CAAC,GAAG;AACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC;AACjC,gBAAgB,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,KAAK;AACpD,aAAa,CAAC;AACd,SAAS;AACT,KAAK;AACL,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,mBAAmB,CAAC,IAAI,EAAE;AACnC,IAAI,OAAO,OAAO,IAAI,KAAK,UAAU,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;AAChE,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,qBAAqB,CAAC,GAAG,EAAE;AACpC,IAAI,MAAM,CAAC,gBAAgB,CAAC,GAAG,EAAE;AACjC,QAAQ,KAAK,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE;AACpD,QAAQ,MAAM,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE;AACrD,QAAQ,GAAG,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE;AAClD,KAAK,CAAC,CAAC;AACP,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,oBAAoB,CAAC,QAAQ,EAAE,KAAK,EAAE;AAC/C,IAAI,MAAM,SAAS,GAAG,IAAI,GAAG,EAAE,CAAC;AAChC;AACA,IAAI,KAAK,CAAC,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;AAC7B,IAAI,KAAK,CAAC,YAAY,GAAG,IAAI,GAAG,EAAE,CAAC;AACnC,IAAI,KAAK,CAAC,OAAO,GAAG,IAAI,GAAG,EAAE,CAAC;AAC9B;AACA,IAAI,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;AACpC,QAAQ,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;AAC9B,YAAY,SAAS;AACrB,SAAS;AACT;AACA,QAAQ,KAAK,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;AACzE,YAAY,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,CAAC;AAC5C;AACA,YAAY,IAAI,CAAC,MAAM,IAAI,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;AACpD,gBAAgB,SAAS;AACzB,aAAa;AACb,YAAY,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AACpC;AACA,YAAY,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;AACjE,YAAY,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;AACrE,YAAY,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC;AAChF,SAAS;AACT,KAAK;AACL;AACA,IAAI,qBAAqB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AACxC,IAAI,qBAAqB,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;AAC9C,IAAI,qBAAqB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AACzC,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,sBAAsB,CAAC,QAAQ,EAAE;AAC1C,IAAI,MAAM,KAAK,GAAGA,kBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AACjD;AACA,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;AACxB,QAAQ,oBAAoB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;AAC9C,KAAK;AACL;AACA,IAAI,OAAO,KAAK,CAAC;AACjB,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,WAAW,SAAS,KAAK,CAAC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,kBAAkB,GAAG;AAC7B,QAAQ,OAAO,sBAAsB,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;AACnD,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,gBAAgB,GAAG;AAC3B,QAAQ,OAAO,sBAAsB,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC;AACzD,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,WAAW,GAAG;AACtB,QAAQ,OAAO,sBAAsB,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;AACpD,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,GAAG;AACb,QAAQ,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE;AACnD,YAAY,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACtC;AACA,YAAY,IAAI,OAAO,IAAI,KAAK,SAAS,EAAE;AAC3C,gBAAgB,OAAO,IAAI,CAAC;AAC5B,aAAa;AACb,SAAS;AACT,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,aAAa,CAAC,QAAQ,EAAE;AAC5B,QAAQ,MAAM,EAAE,KAAK,EAAE,GAAGA,kBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACrD,QAAQ,MAAM,OAAO,GAAG,iBAAiB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC1D,QAAQ,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC3C;AACA,QAAQ,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;AAClC,YAAY,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;AAC7D,SAAS;AACT;AACA,QAAQ,OAAO,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AACnC,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,sBAAsB,CAAC,QAAQ,EAAE;AACrC,QAAQ,KAAK,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,IAAI,EAAE;AAC/C,YAAY;AACZ,gBAAgB,IAAI,KAAK,QAAQ;AACjC,gBAAgB,QAAQ;AACxB,gBAAgB,CAAC,QAAQ,CAAC,gBAAgB;AAC1C,gBAAgB,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC;AACvC,cAAc;AACd,gBAAgB,OAAO,IAAI,CAAC;AAC5B,aAAa;AACb,SAAS;AACT,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,uBAAuB,CAAC,QAAQ,EAAE;AAC3C,IAAI,MAAM,EAAE,KAAK,EAAE,GAAGA,kBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AACrD;AACA,IAAI,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;AACtC;;ACpgBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,gBAAgB,CAAC;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,WAAW,CAAC;AAChB,QAAQ,UAAU,GAAG,IAAI;AACzB,QAAQ,KAAK,GAAG,IAAI;AACpB,QAAQ,QAAQ,GAAG,IAAI;AACvB,QAAQ,EAAE;AACV,QAAQ,YAAY;AACpB,QAAQ,YAAY;AACpB,KAAK,EAAE;AACP;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;AACrC;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AAC3B;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACjC;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;AACrB;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;AACzC;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;AACzC,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,GAAG;AACb,QAAQ,MAAM,GAAG,GAAG,IAAI,CAACC,wBAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;AAChD;AACA;AACA,QAAQ,IAAI,GAAG,CAAC,KAAK,YAAY,KAAK,EAAE;AACxC,YAAY,GAAG,CAAC,KAAK,GAAG,EAAE,GAAG,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;AACrE,SAAS;AACT;AACA,QAAQ,OAAO,GAAG,CAAC;AACnB,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,CAACA,wBAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG;AAC5B,QAAQ,MAAM;AACd,YAAY,UAAU,EAAE,OAAO;AAC/B,YAAY,GAAG,GAAG;AAClB,SAAS,GAAG,IAAI,CAAC;AACjB;AACA,QAAQ,OAAO,GAAG,CAAC;AACnB,KAAK;AACL;;AC7GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAMA;AACA,MAAM,EAAE,SAAS,EAAE,GAAGC,6BAAS,CAAC;AAChC;AACA,MAAM,aAAa,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,iBAAiB,CAAC,QAAQ,EAAE;AACrC,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;AACjC,QAAQ,OAAO,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACxC,KAAK;AACL,IAAI,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,EAAE;AAClD,QAAQ,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC1B,KAAK;AACL,IAAI,OAAO,EAAE,CAAC;AACd,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,SAAS,CAAC,QAAQ,EAAE;AAC7B,IAAI,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;AAC/B,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,IAAI,OAAO,QAAQ,CAAC,GAAG,CAAC,OAAO,IAAI;AACnC,QAAQ,IAAI,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;AACvC,YAAY,OAAO,IAAI,SAAS;AAChC,gBAAgB,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AAChC;AACA;AACA,gBAAgB,EAAE,GAAG,aAAa,EAAE,SAAS,EAAE,KAAK,EAAE;AACtD,aAAa,CAAC;AACd,SAAS;AACT,QAAQ,OAAO,IAAI,SAAS,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;AACrD,KAAK,CAAC,CAAC;AACP,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,aAAa,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE;AAC/C,IAAI,OAAO;AACX,QAAQ,QAAQ,EAAE,QAAQ,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;AAC1D,QAAQ,QAAQ,EAAE,QAAQ,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;AAC1D,KAAK,CAAC;AACN,CAAC;AACD;AACA;AACA;AACA;AACA,MAAM,cAAc,CAAC;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,MAAM,CAAC,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE;AAClD,QAAQ,MAAM,eAAe,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;AACzD,QAAQ,MAAM,eAAe,GAAG,iBAAiB,CAAC,aAAa,CAAC,CAAC;AACjE,QAAQ,IAAI,gBAAgB,GAAG,KAAK,CAAC;AACrC;AACA,QAAQ,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE;AAC1C,YAAY,OAAO,IAAI,CAAC;AACxB,SAAS;AACT;AACA;AACA,QAAQ,KAAK,MAAM,OAAO,IAAI,eAAe,EAAE;AAC/C,YAAY,IAAIL,wBAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AACpE,gBAAgB,MAAM,IAAI,KAAK,CAAC,CAAC,uEAAuE,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AACrH,aAAa;AACb,YAAY,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AACvC,gBAAgB,gBAAgB,GAAG,IAAI,CAAC;AACxC,aAAa;AACb,SAAS;AACT,QAAQ,KAAK,MAAM,OAAO,IAAI,eAAe,EAAE;AAC/C,YAAY,IAAIA,wBAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AACpE,gBAAgB,MAAM,IAAI,KAAK,CAAC,CAAC,uEAAuE,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AACrH,aAAa;AACb,SAAS;AACT;AACA,QAAQ,MAAM,QAAQ,GAAG,SAAS,CAAC,eAAe,CAAC,CAAC;AACpD,QAAQ,MAAM,QAAQ,GAAG,SAAS,CAAC,eAAe,CAAC,CAAC;AACpD;AACA,QAAQ,OAAO,IAAI,cAAc;AACjC,YAAY,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;AACpC,YAAY,QAAQ;AACpB,YAAY,gBAAgB;AAC5B,SAAS,CAAC;AACV,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE;AACrB,QAAQ,IAAI,CAAC,CAAC,EAAE;AAChB,YAAY,OAAO,CAAC,IAAI,IAAI,cAAc;AAC1C,gBAAgB,CAAC,CAAC,QAAQ;AAC1B,gBAAgB,CAAC,CAAC,QAAQ;AAC1B,gBAAgB,CAAC,CAAC,gBAAgB;AAClC,aAAa,CAAC;AACd,SAAS;AACT,QAAQ,IAAI,CAAC,CAAC,EAAE;AAChB,YAAY,OAAO,IAAI,cAAc;AACrC,gBAAgB,CAAC,CAAC,QAAQ;AAC1B,gBAAgB,CAAC,CAAC,QAAQ;AAC1B,gBAAgB,CAAC,CAAC,gBAAgB;AAClC,aAAa,CAAC;AACd,SAAS;AACT;AACA,QAAQE,0BAAM,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;AACnD,QAAQ,OAAO,IAAI,cAAc;AACjC,YAAY,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC;AACzC,YAAY,CAAC,CAAC,QAAQ;AACtB,YAAY,CAAC,CAAC,gBAAgB,IAAI,CAAC,CAAC,gBAAgB;AACpD,SAAS,CAAC;AACV,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,WAAW,CAAC,QAAQ,EAAE,QAAQ,EAAE,gBAAgB,GAAG,KAAK,EAAE;AAC9D;AACA;AACA,QAAQ,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACjC;AACA;AACA,QAAQ,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACjC;AACA;AACA,QAAQ,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;AACjD,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACnB,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,CAACF,wBAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;AACxE,YAAY,MAAM,IAAI,KAAK,CAAC,CAAC,+CAA+C,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3F,SAAS;AACT,QAAQ,MAAM,YAAY,GAAGA,wBAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AACpE;AACA,QAAQ,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE;AAC1D,YAAY,CAAC,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;AACnE,aAAa,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;AACrE,SAAS,CAAC,CAAC;AACX,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,GAAG;AACb,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;AACxC,YAAY,OAAO;AACnB,gBAAgB,GAAG,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAClD,gBAAgB,QAAQ,EAAE,IAAI,CAAC,QAAQ;AACvC,aAAa,CAAC;AACd,SAAS;AACT,QAAQ,OAAO;AACf,YAAY,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC;AACjD,YAAY,QAAQ,EAAE,IAAI,CAAC,QAAQ;AACnC,SAAS,CAAC;AACV,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,CAACI,wBAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG;AAC5B,QAAQ,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;AAC7B,KAAK;AACL;;AC9NA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,qBAAqB,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC;AACtD,IAAI,aAAa,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,KAAK;AACxE,QAAQ,GAAG,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;AAC3B,QAAQ,OAAO,GAAG,CAAC;AACnB,KAAK,EAAE,EAAE,CAAC;AACV,IAAI,gBAAgB,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,eAAe,CAAC,UAAU,EAAE;AACrC,IAAI,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC;AACjF;AACA,IAAI,IAAI,aAAa,KAAK,CAAC,IAAI,aAAa,KAAK,CAAC,IAAI,aAAa,KAAK,CAAC,EAAE;AAC3E,QAAQ,OAAO,aAAa,CAAC;AAC7B,KAAK;AACL;AACA,IAAI,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE;AAC3C,QAAQ,OAAO,aAAa,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,CAAC;AAC/D,KAAK;AACL;AACA,IAAI,OAAO,CAAC,CAAC;AACb,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,kBAAkB,CAAC,MAAM,EAAE;AACpC;AACA,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE;AACtB,QAAQ,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,MAAM,IAAI;AACpD,YAAY,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AACpD;AACA,YAAY,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;AAChD,gBAAgB,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,qBAAqB,CAAC,UAAU,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,CAAC;AACrG,aAAa,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,OAAO,UAAU,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;AACvF,gBAAgB,UAAU,CAAC,CAAC,CAAC,GAAG,qBAAqB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,CAAC;AACjG,aAAa;AACb,SAAS,CAAC,CAAC;AACX,KAAK;AACL,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,eAAe,CAAC,UAAU,EAAE;AACrC,IAAI,OAAO,eAAe,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAC7C,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,eAAe,CAAC,UAAU,EAAE;AACrC,IAAI,IAAI,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC;AAC1E;AACA,IAAI,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;AACtC,QAAQ,QAAQ,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;AAC1C,KAAK;AACL,IAAI,OAAO,gBAAgB,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AACrD,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,oBAAoB,CAAC,MAAM,EAAE;AACtC,IAAI,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM,IAAI,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAChF,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,qBAAqB,CAAC,eAAe,EAAE;AAChD,IAAI,QAAQ,eAAe;AAC3B,QAAQ,KAAK,KAAK;AAClB,YAAY,OAAO,KAAK,CAAC;AACzB;AACA,QAAQ,KAAK,IAAI,CAAC;AAClB,QAAQ,KAAK,MAAM,CAAC;AACpB,QAAQ,KAAK,WAAW,CAAC;AACzB,QAAQ,KAAK,UAAU;AACvB,YAAY,OAAO,UAAU,CAAC;AAC9B;AACA,QAAQ,KAAK,IAAI,CAAC;AAClB,QAAQ,KAAK,KAAK,CAAC;AACnB,QAAQ,KAAK,OAAO,CAAC;AACrB,QAAQ,KAAK,UAAU,CAAC;AACxB,QAAQ,KAAK,UAAU;AACvB,YAAY,OAAO,UAAU,CAAC;AAC9B;AACA,QAAQ;AACR,YAAY,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,eAAe,CAAC,kFAAkF,CAAC,CAAC,CAAC;AACrI,KAAK;AACL;;;;;;;;;;;;AC7HA;AACA;AACA;AACA;AAOA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,0BAA0B,GAAG;AACnC,IAAI,0BAA0B;AAC9B,QAAQ,0EAA0E;AAClF,IAAI,2BAA2B;AAC/B,QAAQ,qDAAqD;AAC7D,QAAQ,gEAAgE;AACxE,IAAI,+BAA+B;AACnC,QAAQ,qDAAqD;AAC7D,QAAQ,kEAAkE;AAC1E,QAAQ,kEAAkE;AAC1E,CAAC,CAAC;AACF;AACA,MAAM,oBAAoB,GAAG,IAAI,GAAG,EAAE,CAAC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,sBAAsB,CAAC,MAAM,EAAE,SAAS,EAAE;AACnD,IAAI,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;AAC3D;AACA,IAAI,IAAI,oBAAoB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;AAC5C,QAAQ,OAAO;AACf,KAAK;AACL,IAAI,oBAAoB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AACvC;AACA,IAAI,MAAM,GAAG,GAAGJ,wBAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC;AACrD,IAAI,MAAM,OAAO,GAAG,0BAA0B,CAAC,SAAS,CAAC,CAAC;AAC1D;AACA,IAAI,OAAO,CAAC,WAAW;AACvB,QAAQ,CAAC,EAAE,OAAO,CAAC,YAAY,EAAE,GAAG,CAAC,EAAE,CAAC;AACxC,QAAQ,oBAAoB;AAC5B,QAAQ,SAAS;AACjB,KAAK,CAAC;AACN;;ACtDA;AACA;AACA;AACA;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,UAAU,GAAG;AACnB,IAAI,EAAE,EAAE,yCAAyC;AACjD,IAAI,OAAO,EAAE,yCAAyC;AACtD,IAAI,WAAW,EAAE,yBAAyB;AAC1C,IAAI,WAAW,EAAE;AACjB,QAAQ,WAAW,EAAE;AACrB,YAAY,IAAI,EAAE,OAAO;AACzB,YAAY,QAAQ,EAAE,CAAC;AACvB,YAAY,KAAK,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE;AAChC,SAAS;AACT,QAAQ,eAAe,EAAE;AACzB,YAAY,IAAI,EAAE,SAAS;AAC3B,YAAY,OAAO,EAAE,CAAC;AACtB,SAAS;AACT,QAAQ,uBAAuB,EAAE;AACjC,YAAY,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,+BAA+B,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;AAC9E,SAAS;AACT,QAAQ,WAAW,EAAE;AACrB,YAAY,IAAI,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;AACvF,SAAS;AACT,QAAQ,WAAW,EAAE;AACrB,YAAY,IAAI,EAAE,OAAO;AACzB,YAAY,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;AACrC,YAAY,QAAQ,EAAE,CAAC;AACvB,YAAY,WAAW,EAAE,IAAI;AAC7B,SAAS;AACT,KAAK;AACL,IAAI,IAAI,EAAE,QAAQ;AAClB,IAAI,UAAU,EAAE;AAChB,QAAQ,EAAE,EAAE;AACZ,YAAY,IAAI,EAAE,QAAQ;AAC1B,SAAS;AACT,QAAQ,OAAO,EAAE;AACjB,YAAY,IAAI,EAAE,QAAQ;AAC1B,SAAS;AACT,QAAQ,KAAK,EAAE;AACf,YAAY,IAAI,EAAE,QAAQ;AAC1B,SAAS;AACT,QAAQ,WAAW,EAAE;AACrB,YAAY,IAAI,EAAE,QAAQ;AAC1B,SAAS;AACT,QAAQ,OAAO,EAAE,GAAG;AACpB,QAAQ,UAAU,EAAE;AACpB,YAAY,IAAI,EAAE,QAAQ;AAC1B,YAAY,OAAO,EAAE,CAAC;AACtB,YAAY,gBAAgB,EAAE,IAAI;AAClC,SAAS;AACT,QAAQ,OAAO,EAAE;AACjB,YAAY,IAAI,EAAE,QAAQ;AAC1B,SAAS;AACT,QAAQ,gBAAgB,EAAE;AAC1B,YAAY,IAAI,EAAE,SAAS;AAC3B,YAAY,OAAO,EAAE,KAAK;AAC1B,SAAS;AACT,QAAQ,OAAO,EAAE;AACjB,YAAY,IAAI,EAAE,QAAQ;AAC1B,SAAS;AACT,QAAQ,gBAAgB,EAAE;AAC1B,YAAY,IAAI,EAAE,SAAS;AAC3B,YAAY,OAAO,EAAE,KAAK;AAC1B,SAAS;AACT,QAAQ,SAAS,EAAE,EAAE,IAAI,EAAE,+BAA+B,EAAE;AAC5D,QAAQ,SAAS,EAAE,EAAE,IAAI,EAAE,uCAAuC,EAAE;AACpE,QAAQ,OAAO,EAAE;AACjB,YAAY,IAAI,EAAE,QAAQ;AAC1B,YAAY,MAAM,EAAE,OAAO;AAC3B,SAAS;AACT,QAAQ,eAAe,EAAE;AACzB,YAAY,KAAK,EAAE;AACnB,gBAAgB,EAAE,IAAI,EAAE,SAAS,EAAE;AACnC,gBAAgB,EAAE,IAAI,EAAE,GAAG,EAAE;AAC7B,aAAa;AACb,YAAY,OAAO,EAAE,GAAG;AACxB,SAAS;AACT,QAAQ,KAAK,EAAE;AACf,YAAY,KAAK,EAAE;AACnB,gBAAgB,EAAE,IAAI,EAAE,GAAG,EAAE;AAC7B,gBAAgB,EAAE,IAAI,EAAE,2BAA2B,EAAE;AACrD,aAAa;AACb,YAAY,OAAO,EAAE,GAAG;AACxB,SAAS;AACT,QAAQ,QAAQ,EAAE,EAAE,IAAI,EAAE,+BAA+B,EAAE;AAC3D,QAAQ,QAAQ,EAAE,EAAE,IAAI,EAAE,uCAAuC,EAAE;AACnE,QAAQ,WAAW,EAAE;AACrB,YAAY,IAAI,EAAE,SAAS;AAC3B,YAAY,OAAO,EAAE,KAAK;AAC1B,SAAS;AACT,QAAQ,aAAa,EAAE,EAAE,IAAI,EAAE,+BAA+B,EAAE;AAChE,QAAQ,aAAa,EAAE,EAAE,IAAI,EAAE,uCAAuC,EAAE;AACxE,QAAQ,QAAQ,EAAE,EAAE,IAAI,EAAE,2BAA2B,EAAE;AACvD,QAAQ,oBAAoB,EAAE;AAC9B,YAAY,KAAK,EAAE;AACnB,gBAAgB,EAAE,IAAI,EAAE,SAAS,EAAE;AACnC,gBAAgB,EAAE,IAAI,EAAE,GAAG,EAAE;AAC7B,aAAa;AACb,YAAY,OAAO,EAAE,GAAG;AACxB,SAAS;AACT,QAAQ,WAAW,EAAE;AACrB,YAAY,IAAI,EAAE,QAAQ;AAC1B,YAAY,oBAAoB,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE;AAC/C,YAAY,OAAO,EAAE,GAAG;AACxB,SAAS;AACT,QAAQ,UAAU,EAAE;AACpB,YAAY,IAAI,EAAE,QAAQ;AAC1B,YAAY,oBAAoB,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE;AAC/C,YAAY,OAAO,EAAE,GAAG;AACxB,SAAS;AACT,QAAQ,iBAAiB,EAAE;AAC3B,YAAY,IAAI,EAAE,QAAQ;AAC1B,YAAY,oBAAoB,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE;AAC/C,YAAY,OAAO,EAAE,GAAG;AACxB,SAAS;AACT,QAAQ,YAAY,EAAE;AACtB,YAAY,IAAI,EAAE,QAAQ;AAC1B,YAAY,oBAAoB,EAAE;AAClC,gBAAgB,KAAK,EAAE;AACvB,oBAAoB,EAAE,IAAI,EAAE,GAAG,EAAE;AACjC,oBAAoB,EAAE,IAAI,EAAE,2BAA2B,EAAE;AACzD,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT,QAAQ,IAAI,EAAE;AACd,YAAY,IAAI,EAAE,OAAO;AACzB,YAAY,QAAQ,EAAE,CAAC;AACvB,YAAY,WAAW,EAAE,IAAI;AAC7B,SAAS;AACT,QAAQ,IAAI,EAAE;AACd,YAAY,KAAK,EAAE;AACnB,gBAAgB,EAAE,IAAI,EAAE,2BAA2B,EAAE;AACrD,gBAAgB;AAChB,oBAAoB,IAAI,EAAE,OAAO;AACjC,oBAAoB,KAAK,EAAE,EAAE,IAAI,EAAE,2BAA2B,EAAE;AAChE,oBAAoB,QAAQ,EAAE,CAAC;AAC/B,oBAAoB,WAAW,EAAE,IAAI;AACrC,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT,QAAQ,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;AAClC,QAAQ,KAAK,EAAE,EAAE,IAAI,EAAE,2BAA2B,EAAE;AACpD,QAAQ,KAAK,EAAE,EAAE,IAAI,EAAE,2BAA2B,EAAE;AACpD,QAAQ,KAAK,EAAE,EAAE,IAAI,EAAE,2BAA2B,EAAE;AACpD,QAAQ,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE;AAC1B,KAAK;AACL,IAAI,YAAY,EAAE;AAClB,QAAQ,gBAAgB,EAAE,CAAC,SAAS,CAAC;AACrC,QAAQ,gBAAgB,EAAE,CAAC,SAAS,CAAC;AACrC,KAAK;AACL,IAAI,OAAO,EAAE,GAAG;AAChB,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA,cAAe,CAAC,iBAAiB,GAAG,EAAE,KAAK;AAC3C,IAAI,MAAM,GAAG,GAAG,IAAIM,uBAAG,CAAC;AACxB,QAAQ,IAAI,EAAE,KAAK;AACnB,QAAQ,WAAW,EAAE,IAAI;AACzB,QAAQ,cAAc,EAAE,KAAK;AAC7B,QAAQ,WAAW,EAAE,QAAQ;AAC7B,QAAQ,OAAO,EAAE,IAAI;AACrB,QAAQ,QAAQ,EAAE,MAAM;AACxB,QAAQ,GAAG,iBAAiB;AAC5B,KAAK,CAAC,CAAC;AACP;AACA,IAAI,GAAG,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;AAClC;AACA,IAAI,GAAG,CAAC,KAAK,CAAC,WAAW,GAAG,UAAU,CAAC,EAAE,CAAC;AAC1C;AACA,IAAI,OAAO,GAAG,CAAC;AACf,CAAC;;AC9LD;AACA;AACA;AACA;AACA;AACA,MAAM,oBAAoB,GAAG;AAC7B,IAAI,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;AAC/B,IAAI,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;AAC3B,IAAI,OAAO,EAAE,EAAE,IAAI,EAAE,+BAA+B,EAAE;AACtD,IAAI,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;AAC/B,IAAI,SAAS,EAAE;AACf,QAAQ,IAAI,EAAE,OAAO;AACrB,QAAQ,KAAK,EAAE,EAAE,IAAI,EAAE,8BAA8B,EAAE;AACvD,QAAQ,eAAe,EAAE,KAAK;AAC9B,KAAK;AACL,IAAI,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE;AACxC,IAAI,aAAa,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;AACrC,IAAI,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;AAC9B,IAAI,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;AACjC,IAAI,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;AAC7B,IAAI,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;AAChC,IAAI,cAAc,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;AACvC,IAAI,6BAA6B,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;AACtD;AACA,IAAI,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;AACpC,CAAC,CAAC;AACF;AACA,MAAM,YAAY,GAAG;AACrB,IAAI,WAAW,EAAE;AACjB,QAAQ,eAAe,EAAE;AACzB,YAAY,KAAK,EAAE;AACnB,gBAAgB,EAAE,IAAI,EAAE,QAAQ,EAAE;AAClC,gBAAgB;AAChB,oBAAoB,IAAI,EAAE,OAAO;AACjC,oBAAoB,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;AAC7C,oBAAoB,eAAe,EAAE,KAAK;AAC1C,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT,QAAQ,uBAAuB,EAAE;AACjC,YAAY,KAAK,EAAE;AACnB,gBAAgB,EAAE,IAAI,EAAE,QAAQ,EAAE;AAClC,gBAAgB;AAChB,oBAAoB,IAAI,EAAE,OAAO;AACjC,oBAAoB,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;AAC7C,oBAAoB,eAAe,EAAE,KAAK;AAC1C,oBAAoB,QAAQ,EAAE,CAAC;AAC/B,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT;AACA;AACA,QAAQ,YAAY,EAAE;AACtB,YAAY,IAAI,EAAE,QAAQ;AAC1B,YAAY,UAAU,EAAE;AACxB,gBAAgB,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;AACzC,gBAAgB,cAAc,EAAE,EAAE,IAAI,EAAE,+BAA+B,EAAE;AACzE,gBAAgB,GAAG,oBAAoB;AACvC,aAAa;AACb,YAAY,oBAAoB,EAAE,KAAK;AACvC,SAAS;AACT;AACA;AACA,QAAQ,cAAc,EAAE;AACxB,YAAY,IAAI,EAAE,QAAQ;AAC1B,YAAY,UAAU,EAAE;AACxB,gBAAgB,aAAa,EAAE,EAAE,IAAI,EAAE,+BAA+B,EAAE;AACxE,gBAAgB,KAAK,EAAE,EAAE,IAAI,EAAE,uCAAuC,EAAE;AACxE,gBAAgB,GAAG,oBAAoB;AACvC,aAAa;AACb,YAAY,QAAQ,EAAE,CAAC,OAAO,CAAC;AAC/B,YAAY,oBAAoB,EAAE,KAAK;AACvC,SAAS;AACT,KAAK;AACL;AACA,IAAI,IAAI,EAAE,4BAA4B;AACtC,CAAC;;AC5ED;AACA;AACA;AACA;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE;AAChC,IAAI,MAAM,IAAI,GAAG,EAAE,CAAC;AACpB;AACA,IAAI,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;AACxD,QAAQ,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE;AACpD,YAAY,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAC9B,SAAS;AACT,KAAK;AACL;AACA,IAAI,OAAO,IAAI,CAAC;AAChB,CAAC;AACD;AACA,MAAM,cAAc,GAAG,OAAO,CAACC,2BAAO,CAAC,MAAM,EAAEA,2BAAO,CAAC,GAAG,CAAC,CAAC;AAC5D,MAAM,cAAc,GAAG;AACvB,IAAI,OAAO,EAAE,KAAK;AAClB,IAAI,iBAAiB,EAAE,KAAK;AAC5B,CAAC,CAAC;AACF,MAAM,cAAc,GAAG;AACvB,IAAI,MAAM,EAAE,KAAK;AACjB,IAAI,aAAa,EAAE,KAAK;AACxB,IAAI,cAAc,EAAE,KAAK;AACzB,IAAI,UAAU,EAAE,KAAK;AACrB,CAAC,CAAC;AACF;AACA,MAAM,cAAc,GAAG;AACvB,IAAI,cAAc,EAAE,KAAK;AACzB,IAAI,oBAAoB,EAAE,KAAK;AAC/B,IAAI,OAAO,EAAE,KAAK;AAClB,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA,mBAAe,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC;AACtC;AACA;AACA,IAAI,OAAO,EAAE;AACb,QAAQ,OAAO,EAAEA,2BAAO,CAAC,GAAG;AAC5B,KAAK;AACL,IAAI,GAAG,EAAE;AACT,QAAQ,OAAO,EAAE,cAAc;AAC/B,QAAQ,aAAa,EAAE;AACvB,YAAY,WAAW,EAAE,CAAC;AAC1B,SAAS;AACT,KAAK;AACL,IAAI,MAAM,EAAE;AACZ,QAAQ,OAAO,EAAE,cAAc;AAC/B,QAAQ,aAAa,EAAE;AACvB,YAAY,WAAW,EAAE,CAAC;AAC1B,SAAS;AACT,KAAK;AACL,IAAI,MAAM,EAAE;AACZ,QAAQ,OAAO,EAAE,cAAc;AAC/B,QAAQ,aAAa,EAAE;AACvB,YAAY,WAAW,EAAE,CAAC;AAC1B,SAAS;AACT,KAAK;AACL,IAAI,MAAM,EAAE;AACZ,QAAQ,OAAO,EAAE,EAAE,GAAG,cAAc,EAAE,GAAG,cAAc,EAAE;AACzD,QAAQ,aAAa,EAAE;AACvB,YAAY,WAAW,EAAE,CAAC;AAC1B,SAAS;AACT,KAAK;AACL,IAAI,MAAM,EAAE;AACZ,QAAQ,OAAO,EAAE,EAAE,GAAG,cAAc,EAAE,GAAG,cAAc,EAAE;AACzD,QAAQ,aAAa,EAAE;AACvB,YAAY,WAAW,EAAE,CAAC;AAC1B,SAAS;AACT,KAAK;AACL,IAAI,MAAM,EAAE;AACZ,QAAQ,OAAO,EAAE,EAAE,GAAG,cAAc,EAAE,GAAG,cAAc,EAAE;AACzD,QAAQ,aAAa,EAAE;AACvB,YAAY,WAAW,EAAE,EAAE;AAC3B,SAAS;AACT,KAAK;AACL,IAAI,MAAM,EAAE;AACZ,QAAQ,OAAO,EAAE,EAAE,GAAG,cAAc,EAAE,GAAG,cAAc,EAAE,GAAG,cAAc,EAAE;AAC5E,QAAQ,aAAa,EAAE;AACvB,YAAY,WAAW,EAAE,EAAE;AAC3B,SAAS;AACT,KAAK;AACL,IAAI,MAAM,EAAE;AACZ,QAAQ,OAAO,EAAE,EAAE,GAAG,cAAc,EAAE,GAAG,cAAc,EAAE,GAAG,cAAc,EAAE,GAAG,cAAc,EAAE;AAC/F,QAAQ,aAAa,EAAE;AACvB,YAAY,WAAW,EAAE,EAAE;AAC3B,SAAS;AACT,KAAK;AACL,IAAI,MAAM,EAAE;AACZ,QAAQ,OAAO,EAAE,EAAE,GAAG,cAAc,EAAE,GAAG,cAAc,EAAE,GAAG,cAAc,EAAE,GAAG,cAAc,EAAE;AAC/F,QAAQ,aAAa,EAAE;AACvB,YAAY,WAAW,EAAE,EAAE;AAC3B,SAAS;AACT,KAAK;AACL,IAAI,MAAM,EAAE;AACZ,QAAQ,OAAO,EAAE,EAAE,GAAG,cAAc,EAAE,GAAG,cAAc,EAAE,GAAG,cAAc,EAAE,GAAG,cAAc,EAAE;AAC/F,QAAQ,aAAa,EAAE;AACvB,YAAY,WAAW,EAAE,EAAE;AAC3B,SAAS;AACT,KAAK;AACL,IAAI,MAAM,EAAE;AACZ,QAAQ,OAAO,EAAE,EAAE,GAAG,cAAc,EAAE,GAAG,cAAc,EAAE,GAAG,cAAc,EAAE,GAAG,cAAc,EAAE;AAC/F,QAAQ,aAAa,EAAE;AACvB,YAAY,WAAW,EAAE,EAAE;AAC3B,SAAS;AACT,KAAK;AACL;AACA;AACA,IAAI,OAAO,EAAE;AACb,QAAQ,OAAO,EAAEA,2BAAO,CAAC,OAAO;AAChC,KAAK;AACL,IAAI,IAAI,EAAE;AACV,QAAQ,OAAO,EAAEA,2BAAO,CAAC,IAAI;AAC7B,QAAQ,aAAa,EAAE;AACvB,YAAY,YAAY,EAAE;AAC1B,gBAAgB,YAAY,EAAE,IAAI;AAClC,aAAa;AACb,SAAS;AACT,KAAK;AACL,IAAI,qBAAqB,EAAE;AAC3B,QAAQ,OAAO,EAAEA,2BAAO,CAAC,qBAAqB,CAAC;AAC/C,KAAK;AACL,IAAI,MAAM,EAAE;AACZ,QAAQ,OAAO,EAAEA,2BAAO,CAAC,MAAM;AAC/B,KAAK;AACL,IAAI,aAAa,EAAE;AACnB,QAAQ,OAAO,EAAEA,2BAAO,CAAC,aAAa;AACtC,KAAK;AACL;AACA;AACA,IAAI,QAAQ,EAAE;AACd,QAAQ,OAAO,EAAEA,2BAAO,CAAC,QAAQ;AACjC,QAAQ,aAAa,EAAE;AACvB,YAAY,YAAY,EAAE;AAC1B,gBAAgB,YAAY,EAAE,IAAI;AAClC,aAAa;AACb,SAAS;AACT,KAAK;AACL,IAAI,GAAG,EAAE;AACT,QAAQ,OAAO,EAAEA,2BAAO,CAAC,GAAG;AAC5B,KAAK;AACL,IAAI,KAAK,EAAE;AACX,QAAQ,OAAO,EAAEA,2BAAO,CAAC,KAAK;AAC9B,KAAK;AACL,IAAI,OAAO,EAAE;AACb,QAAQ,OAAO,EAAEA,2BAAO,CAAC,OAAO;AAChC,KAAK;AACL,IAAI,IAAI,EAAE;AACV,QAAQ,OAAO,EAAEA,2BAAO,CAAC,IAAI;AAC7B,KAAK;AACL,IAAI,SAAS,EAAE;AACf,QAAQ,OAAO,EAAEA,2BAAO,CAAC,SAAS;AAClC,KAAK;AACL,IAAI,MAAM,EAAE;AACZ,QAAQ,OAAO,EAAEA,2BAAO,CAAC,MAAM;AAC/B,KAAK;AACL,IAAI,KAAK,EAAE;AACX,QAAQ,OAAO,EAAEA,2BAAO,CAAC,KAAK;AAC9B,KAAK;AACL,IAAI,WAAW,EAAE;AACjB,QAAQ,OAAO,EAAEA,2BAAO,CAAC,WAAW;AACpC,KAAK;AACL,IAAI,OAAO,EAAE;AACb,QAAQ,OAAO,EAAEA,2BAAO,CAAC,OAAO;AAChC,KAAK;AACL,IAAI,MAAM,EAAE;AACZ,QAAQ,OAAO,EAAEA,2BAAO,CAAC,MAAM;AAC/B,KAAK;AACL,IAAI,KAAK,EAAE;AACX,QAAQ,OAAO,EAAEA,2BAAO,CAAC,KAAK;AAC9B,KAAK;AACL,IAAI,UAAU,EAAE;AAChB,QAAQ,OAAO,EAAEA,2BAAO,CAAC,UAAU;AACnC,KAAK;AACL,IAAI,WAAW,EAAE;AACjB,QAAQ,OAAO,EAAEA,2BAAO,CAAC,WAAW;AACpC,KAAK;AACL,IAAI,OAAO,EAAE;AACb,QAAQ,OAAO,EAAEA,2BAAO,CAAC,OAAO;AAChC,KAAK;AACL,IAAI,QAAQ,EAAE;AACd,QAAQ,OAAO,EAAEA,2BAAO,CAAC,QAAQ;AACjC,KAAK;AACL,IAAI,SAAS,EAAE;AACf,QAAQ,OAAO,EAAEA,2BAAO,CAAC,SAAS;AAClC,KAAK;AACL,IAAI,aAAa,EAAE;AACnB,QAAQ,OAAO,EAAEA,2BAAO,CAAC,aAAa;AACtC,KAAK;AACL,IAAI,YAAY,EAAE;AAClB,QAAQ,OAAO,EAAEA,2BAAO,CAAC,YAAY;AACrC,KAAK;AACL,CAAC,CAAC,CAAC;;ACtNH;AACA;AACA;AACA;AAcA;AACA,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;AACtB;AACA,MAAM,cAAc,GAAG,IAAI,OAAO,EAAE,CAAC;AACrC,MAAM,IAAI,GAAG,QAAQ,CAAC,SAAS,CAAC;AAChC;AACA;AACA;AACA;AACA,IAAI,cAAc,CAAC;AACnB,MAAM,WAAW,GAAG;AACpB,IAAI,KAAK,EAAE,CAAC;AACZ,IAAI,IAAI,EAAE,CAAC;AACX,IAAI,GAAG,EAAE,CAAC;AACV,CAAC,CAAC;AACF;AACA,MAAM,SAAS,GAAG,IAAI,OAAO,EAAE,CAAC;AAChC;AACA;AACA;AACA;AACA;AACe,MAAM,eAAe,CAAC;AACrC,IAAI,WAAW,CAAC,EAAE,YAAY,GAAG,IAAI,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE;AACnD,QAAQ,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;AACzC,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,oBAAoB,CAAC,IAAI,EAAE;AAC/B,QAAQ,IAAI,CAAC,IAAI,EAAE;AACnB,YAAY,OAAO,IAAI,CAAC;AACxB,SAAS;AACT;AACA,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;AACpE;AACA;AACA,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AACnC,YAAY,IAAI,MAAM,CAAC,MAAM,EAAE;AAC/B,gBAAgB,OAAO;AACvB,oBAAoB,IAAI,EAAE,OAAO;AACjC,oBAAoB,KAAK,EAAE,MAAM;AACjC,oBAAoB,QAAQ,EAAE,CAAC;AAC/B,oBAAoB,QAAQ,EAAE,MAAM,CAAC,MAAM;AAC3C,iBAAiB,CAAC;AAClB,aAAa;AACb,YAAY,OAAO;AACnB,gBAAgB,IAAI,EAAE,OAAO;AAC7B,gBAAgB,QAAQ,EAAE,CAAC;AAC3B,gBAAgB,QAAQ,EAAE,CAAC;AAC3B,aAAa,CAAC;AACd;AACA,SAAS;AACT;AACA;AACA,QAAQ,OAAO,MAAM,IAAI,IAAI,CAAC;AAC9B,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,oBAAoB,CAAC,OAAO,EAAE;AAClC,QAAQ,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;AACvE,QAAQ,MAAM,YAAY,GAAG,OAAO,QAAQ,KAAK,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,GAAG,QAAQ,CAAC;AAC3G;AACA,QAAQ,IAAI,YAAY,KAAK,CAAC,IAAI,YAAY,KAAK,CAAC,IAAI,YAAY,KAAK,CAAC,EAAE;AAC5E,YAAY,OAAO,YAAY,CAAC;AAChC,SAAS;AACT;AACA,QAAQ,MAAM,IAAI,KAAK,CAAC,CAAC,qFAAqF,EAAEH,wBAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACxL;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,kBAAkB,CAAC,IAAI,EAAE,YAAY,EAAE;AAC3C,QAAQ,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;AACvC,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;AAC3D;AACA,YAAY,IAAI,MAAM,EAAE;AACxB,gBAAgB,cAAc,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;AAC9D,aAAa;AACb,SAAS;AACT;AACA,QAAQ,MAAM,YAAY,GAAG,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACtD;AACA,QAAQ,IAAI,YAAY,EAAE;AAC1B,YAAY,YAAY,CAAC,YAAY,CAAC,CAAC;AACvC,YAAY,IAAI,YAAY,CAAC,MAAM,EAAE;AACrC,gBAAgB,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG;AACvD,oBAAoB,KAAK,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;AACxF,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AAC5B,aAAa;AACb,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,EAAE;AAC9D,QAAQ,IAAI;AACZ,YAAY,MAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAChE;AACA,YAAY,IAAI,QAAQ,KAAK,CAAC,EAAE;AAChC,gBAAgB,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;AAC9F,aAAa;AACb,SAAS,CAAC,OAAO,GAAG,EAAE;AACtB,YAAY,MAAM,eAAe,GAAG,CAAC,wBAAwB,EAAE,MAAM,CAAC,eAAe,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;AACrG;AACA,YAAY,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;AAC5C,gBAAgB,MAAM,IAAI,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC;AACpE,aAAa,MAAM;AACnB,gBAAgB,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;AACjD,aAAa;AACb,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,mBAAmB;AACvB,QAAQ,WAAW;AACnB,QAAQ,MAAM;AACd,QAAQ,gBAAgB,GAAG,IAAI;AAC/B,MAAM;AACN;AACA;AACA,QAAQ,IAAI,CAAC,WAAW,EAAE;AAC1B,YAAY,OAAO;AACnB,SAAS;AACT;AACA,QAAQ,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI;AAC/C,YAAY,MAAM,GAAG,GAAG,gBAAgB,CAAC,EAAE,CAAC,IAAII,YAAmB,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC;AACpF;AACA,YAAY,IAAI,CAAC,GAAG,EAAE;AACtB,gBAAgB,MAAM,OAAO,GAAG,CAAC,EAAE,MAAM,CAAC,sBAAsB,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC;AACrF;AACA,gBAAgB,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;AACzC,aAAa;AACb,SAAS,CAAC,CAAC;AACX,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,aAAa;AACjB,QAAQ,WAAW;AACnB,QAAQ,MAAM;AACd,QAAQ,iBAAiB,GAAG,IAAI;AAChC,MAAM;AACN,QAAQ,IAAI,CAAC,WAAW,EAAE;AAC1B,YAAY,OAAO;AACnB,SAAS;AACT;AACA,QAAQ,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI;AAC/C,YAAY,MAAM,IAAI,GAAG,iBAAiB,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC;AACpF;AACA,YAAY,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,EAAE,EAAE,WAAW,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;AACxE,SAAS,CAAC,CAAC;AACX,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,eAAe,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,EAAE;AAClD,QAAQ,IAAI,CAAC,aAAa,EAAE;AAC5B,YAAY,OAAO;AACnB,SAAS;AACT;AACA,QAAQ,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC;AACrC,aAAa,OAAO,CAAC,CAAC,CAAC,gBAAgB,EAAE,eAAe,CAAC,KAAK;AAC9D,gBAAgB,IAAI;AACpB,oBAAoBC,qBAA+B,CAAC,eAAe,CAAC,CAAC;AACrE,iBAAiB,CAAC,OAAO,GAAG,EAAE;AAC9B,oBAAoB,MAAM,IAAI,KAAK,CAAC,CAAC,gCAAgC,EAAE,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,cAAc,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACrI,iBAAiB;AACjB,aAAa,CAAC,CAAC;AACf,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,iBAAiB,CAAC,aAAa,EAAE,MAAM,EAAE,YAAY,EAAE;AAC3D,QAAQ,IAAI,aAAa,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,EAAE;AAC3D,YAAY,MAAM,IAAI,KAAK,CAAC,CAAC,sCAAsC,EAAE,MAAM,CAAC,eAAe,EAAE,aAAa,CAAC,gBAAgB,CAAC,CAAC,CAAC;AAC9H,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,YAAY,CAAC,MAAM,EAAE;AACzB,QAAQ,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI;AACnC,YAAY,IAAI,KAAK,CAAC,OAAO,KAAK,sBAAsB,EAAE;AAC1D,gBAAgB,MAAM,qBAAqB,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,kBAAkB,CAAC;AACxK;AACA,gBAAgB,OAAO,CAAC,+BAA+B,EAAE,qBAAqB,CAAC,CAAC,CAAC,CAAC;AAClF,aAAa;AACb,YAAY,IAAI,KAAK,CAAC,OAAO,KAAK,MAAM,EAAE;AAC1C,gBAAgB,MAAM,cAAc,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC/D,gBAAgB,MAAM,qBAAqB,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;AAClH,gBAAgB,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAClE;AACA,gBAAgB,OAAO,CAAC,UAAU,EAAE,cAAc,CAAC,8BAA8B,EAAE,qBAAqB,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,CAAC,CAAC;AAC1I,aAAa;AACb;AACA,YAAY,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC;AAC/F;AACA,YAAY,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACvF,SAAS,CAAC,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACxD,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE;AAChD,QAAQ,cAAc,GAAG,cAAc,IAAI,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;AACrE;AACA,QAAQ,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE;AACrC,YAAY,MAAM,IAAI,KAAK,CAAC,CAAC,wBAAwB,EAAE,MAAM,CAAC,cAAc,EAAE,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1H,SAAS;AACT;AACA,QAAQ,IAAI,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,EAAE;AAChE,YAAY,sBAAsB,CAAC,MAAM,EAAE,4BAA4B,CAAC,CAAC;AACzE,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,iBAAiB,EAAE,gBAAgB,EAAE;AAClE,QAAQ,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAClD,QAAQ,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,iBAAiB,CAAC,CAAC;AACpE,QAAQ,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,gBAAgB,CAAC,CAAC;AACvE,QAAQ,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AACrD;AACA,QAAQ,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,SAAS,IAAI,EAAE,EAAE;AACvD,YAAY,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,iBAAiB,CAAC,CAAC;AAC1E,YAAY,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,gBAAgB,CAAC,CAAC;AAC7E,YAAY,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AACzD,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,mBAAmB,CAAC,WAAW,EAAE;AACrC,QAAQ,MAAM,YAAY,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC;AACpF,QAAQ,MAAM,kBAAkB,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;AACxF,QAAQ,MAAM,aAAa,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;AAC9E;AACA;AACA,QAAQ,KAAK,MAAM,OAAO,IAAI,WAAW,EAAE;AAC3C,YAAY,IAAI,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;AACxC,gBAAgB,SAAS;AACzB,aAAa;AACb,YAAY,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACnC;AACA,YAAY,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;AAC9E,YAAY,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;AAChE,YAAY,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC;AACxF,YAAY,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;AAC3E,SAAS;AACT,KAAK;AACL;AACA;;ACpUA;AACA;AACA;AACA;AACA,MAAM,eAAe,GAAG,UAAU,CAAC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE;AAC5C,IAAI,IAAI,cAAc,GAAG,IAAI,CAAC;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AACvC,QAAQ,cAAc,GAAG,cAAc,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAC7D,KAAK;AACL;AACA,IAAI,IAAI,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;AAC1C;AACA;AACA;AACA;AACA;AACA,QAAQ,MAAM,0BAA0B,GAAG,IAAI,MAAM,CAAC,CAAC,gBAAgB,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC;AAC5F,YAAY,sBAAsB,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC;AACxE;AACA,QAAQ,IAAI,0BAA0B,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE;AAC7D,YAAY,cAAc,GAAG,cAAc,CAAC,OAAO,CAAC,0BAA0B,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;AAChG,SAAS,MAAM,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAC/E;AACA;AACA;AACA;AACA;AACA,YAAY,cAAc,GAAG,cAAc,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAC7F,SAAS;AACT,KAAK,MAAM,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;AACzD,QAAQ,cAAc,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC;AACvD,KAAK;AACL;AACA,IAAI,OAAO,cAAc,CAAC;AAC1B,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE;AAC5C,IAAI,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;AAC7B,QAAQ,IAAI,WAAW,GAAG,IAAI,MAAM,CAAC,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACjF;AACA,QAAQ,IAAI,WAAW,EAAE;AACzB,YAAY,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC;AAClC,SAAS;AACT;AACA,QAAQ,WAAW,GAAG,IAAI,MAAM,CAAC,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAClF,QAAQ,IAAI,WAAW,EAAE;AACzB,YAAY,OAAO,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACzD,SAAS;AACT,KAAK,MAAM,IAAI,QAAQ,CAAC,UAAU,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;AAClD,QAAQ,OAAO,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACjD,KAAK;AACL;AACA,IAAI,OAAO,QAAQ,CAAC;AACpB,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,oBAAoB,CAAC,IAAI,EAAE;AACpC,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;AAC9C;AACA,IAAI,OAAO,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AACjC;;;;;;;;;ACrFA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA,MAAM,aAAa,GAAGC,0BAAM,CAAC,aAAa,CAAC;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,OAAO,CAAC,UAAU,EAAE,cAAc,EAAE;AAC7C,IAAI,IAAI;AACR,QAAQ,OAAO,aAAa,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AACjE,KAAK,CAAC,OAAO,KAAK,EAAE;AACpB;AACA;AACA,QAAQ;AACR,YAAY,OAAO,KAAK,KAAK,QAAQ;AACrC,YAAY,KAAK,KAAK,IAAI;AAC1B,YAAY,KAAK,CAAC,IAAI,KAAK,kBAAkB;AAC7C,YAAY,CAAC,KAAK,CAAC,YAAY;AAC/B,YAAY,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC;AAC9C,UAAU;AACV,YAAY,KAAK,CAAC,OAAO,IAAI,CAAC,oBAAoB,EAAE,cAAc,CAAC,CAAC,CAAC;AACrE,SAAS;AACT,QAAQ,MAAM,KAAK,CAAC;AACpB,KAAK;AACL;;;;;;;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAsBA;AACA,MAAMC,SAAO,GAAGC,oBAAa,CAAC,mDAAe,CAAC,CAAC;AAC/C;AACA,MAAMd,OAAK,GAAGC,6BAAS,CAAC,+BAA+B,CAAC,CAAC;AACzD;AACA;AACA;AACA;AACA;AACA,MAAM,eAAe,GAAG;AACxB,IAAI,cAAc;AAClB,IAAI,eAAe;AACnB,IAAI,gBAAgB;AACpB,IAAI,eAAe;AACnB,IAAI,gBAAgB;AACpB,IAAI,WAAW;AACf,IAAI,cAAc;AAClB,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMI,kBAAgB,GAAG,IAAI,OAAO,EAAE,CAAC;AACvC;AACA;AACA,MAAM,iBAAiB,GAAG,IAAI,OAAO,EAAE,CAAC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,UAAU,CAAC,UAAU,EAAE;AAChC,IAAI;AACJ,QAAQ,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC;AACzC,QAAQH,wBAAI,CAAC,UAAU,CAAC,UAAU,CAAC;AACnC,MAAM;AACN,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,QAAQ,CAAC,QAAQ,EAAE;AAC5B,IAAI,OAAOa,sBAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;AACrE,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,kBAAkB,CAAC,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"}
\ No newline at end of file
diff --git a/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint/eslintrc/lib/cascading-config-array-factory.js b/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint/eslintrc/lib/cascading-config-array-factory.js
new file mode 100644
index 0000000..597352e
--- /dev/null
+++ b/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint/eslintrc/lib/cascading-config-array-factory.js
@@ -0,0 +1,532 @@
+/**
+ * @fileoverview `CascadingConfigArrayFactory` class.
+ *
+ * `CascadingConfigArrayFactory` class has a responsibility:
+ *
+ * 1. Handles cascading of config files.
+ *
+ * It provides two methods:
+ *
+ * - `getConfigArrayForFile(filePath)`
+ * Get the corresponded configuration of a given file. This method doesn't
+ * throw even if the given file didn't exist.
+ * - `clearCache()`
+ * Clear the internal cache. You have to call this method when
+ * `additionalPluginPool` was updated if `baseConfig` or `cliConfig` depends
+ * on the additional plugins. (`CLIEngine#addPlugin()` method calls this.)
+ *
+ * @author Toru Nagashima
+ */
+
+//------------------------------------------------------------------------------
+// Requirements
+//------------------------------------------------------------------------------
+
+import debugOrig from "debug";
+import os from "os";
+import path from "path";
+
+import { ConfigArrayFactory } from "./config-array-factory.js";
+import {
+ ConfigArray,
+ ConfigDependency,
+ IgnorePattern
+} from "./config-array/index.js";
+import ConfigValidator from "./shared/config-validator.js";
+import { emitDeprecationWarning } from "./shared/deprecation-warnings.js";
+
+const debug = debugOrig("eslintrc:cascading-config-array-factory");
+
+//------------------------------------------------------------------------------
+// Helpers
+//------------------------------------------------------------------------------
+
+// Define types for VSCode IntelliSense.
+/** @typedef {import("./shared/types").ConfigData} ConfigData */
+/** @typedef {import("./shared/types").Parser} Parser */
+/** @typedef {import("./shared/types").Plugin} Plugin */
+/** @typedef {import("./shared/types").Rule} Rule */
+/** @typedef {ReturnType} ConfigArray */
+
+/**
+ * @typedef {Object} CascadingConfigArrayFactoryOptions
+ * @property {Map} [additionalPluginPool] The map for additional plugins.
+ * @property {ConfigData} [baseConfig] The config by `baseConfig` option.
+ * @property {ConfigData} [cliConfig] The config by CLI options (`--env`, `--global`, `--ignore-pattern`, `--parser`, `--parser-options`, `--plugin`, and `--rule`). CLI options overwrite the setting in config files.
+ * @property {string} [cwd] The base directory to start lookup.
+ * @property {string} [ignorePath] The path to the alternative file of `.eslintignore`.
+ * @property {string[]} [rulePaths] The value of `--rulesdir` option.
+ * @property {string} [specificConfigPath] The value of `--config` option.
+ * @property {boolean} [useEslintrc] if `false` then it doesn't load config files.
+ * @property {Function} loadRules The function to use to load rules.
+ * @property {Map} builtInRules The rules that are built in to ESLint.
+ * @property {Object} [resolver=ModuleResolver] The module resolver object.
+ * @property {string} eslintAllPath The path to the definitions for eslint:all.
+ * @property {Function} getEslintAllConfig Returns the config data for eslint:all.
+ * @property {string} eslintRecommendedPath The path to the definitions for eslint:recommended.
+ * @property {Function} getEslintRecommendedConfig Returns the config data for eslint:recommended.
+ */
+
+/**
+ * @typedef {Object} CascadingConfigArrayFactoryInternalSlots
+ * @property {ConfigArray} baseConfigArray The config array of `baseConfig` option.
+ * @property {ConfigData} baseConfigData The config data of `baseConfig` option. This is used to reset `baseConfigArray`.
+ * @property {ConfigArray} cliConfigArray The config array of CLI options.
+ * @property {ConfigData} cliConfigData The config data of CLI options. This is used to reset `cliConfigArray`.
+ * @property {ConfigArrayFactory} configArrayFactory The factory for config arrays.
+ * @property {Map} configCache The cache from directory paths to config arrays.
+ * @property {string} cwd The base directory to start lookup.
+ * @property {WeakMap} finalizeCache The cache from config arrays to finalized config arrays.
+ * @property {string} [ignorePath] The path to the alternative file of `.eslintignore`.
+ * @property {string[]|null} rulePaths The value of `--rulesdir` option. This is used to reset `baseConfigArray`.
+ * @property {string|null} specificConfigPath The value of `--config` option. This is used to reset `cliConfigArray`.
+ * @property {boolean} useEslintrc if `false` then it doesn't load config files.
+ * @property {Function} loadRules The function to use to load rules.
+ * @property {Map} builtInRules The rules that are built in to ESLint.
+ * @property {Object} [resolver=ModuleResolver] The module resolver object.
+ * @property {string} eslintAllPath The path to the definitions for eslint:all.
+ * @property {Function} getEslintAllConfig Returns the config data for eslint:all.
+ * @property {string} eslintRecommendedPath The path to the definitions for eslint:recommended.
+ * @property {Function} getEslintRecommendedConfig Returns the config data for eslint:recommended.
+ */
+
+/** @type {WeakMap} */
+const internalSlotsMap = new WeakMap();
+
+/**
+ * Create the config array from `baseConfig` and `rulePaths`.
+ * @param {CascadingConfigArrayFactoryInternalSlots} slots The slots.
+ * @returns {ConfigArray} The config array of the base configs.
+ */
+function createBaseConfigArray({
+ configArrayFactory,
+ baseConfigData,
+ rulePaths,
+ cwd,
+ loadRules
+}) {
+ const baseConfigArray = configArrayFactory.create(
+ baseConfigData,
+ { name: "BaseConfig" }
+ );
+
+ /*
+ * Create the config array element for the default ignore patterns.
+ * This element has `ignorePattern` property that ignores the default
+ * patterns in the current working directory.
+ */
+ baseConfigArray.unshift(configArrayFactory.create(
+ { ignorePatterns: IgnorePattern.DefaultPatterns },
+ { name: "DefaultIgnorePattern" }
+ )[0]);
+
+ /*
+ * Load rules `--rulesdir` option as a pseudo plugin.
+ * Use a pseudo plugin to define rules of `--rulesdir`, so we can validate
+ * the rule's options with only information in the config array.
+ */
+ if (rulePaths && rulePaths.length > 0) {
+ baseConfigArray.push({
+ type: "config",
+ name: "--rulesdir",
+ filePath: "",
+ plugins: {
+ "": new ConfigDependency({
+ definition: {
+ rules: rulePaths.reduce(
+ (map, rulesPath) => Object.assign(
+ map,
+ loadRules(rulesPath, cwd)
+ ),
+ {}
+ )
+ },
+ filePath: "",
+ id: "",
+ importerName: "--rulesdir",
+ importerPath: ""
+ })
+ }
+ });
+ }
+
+ return baseConfigArray;
+}
+
+/**
+ * Create the config array from CLI options.
+ * @param {CascadingConfigArrayFactoryInternalSlots} slots The slots.
+ * @returns {ConfigArray} The config array of the base configs.
+ */
+function createCLIConfigArray({
+ cliConfigData,
+ configArrayFactory,
+ cwd,
+ ignorePath,
+ specificConfigPath
+}) {
+ const cliConfigArray = configArrayFactory.create(
+ cliConfigData,
+ { name: "CLIOptions" }
+ );
+
+ cliConfigArray.unshift(
+ ...(ignorePath
+ ? configArrayFactory.loadESLintIgnore(ignorePath)
+ : configArrayFactory.loadDefaultESLintIgnore())
+ );
+
+ if (specificConfigPath) {
+ cliConfigArray.unshift(
+ ...configArrayFactory.loadFile(
+ specificConfigPath,
+ { name: "--config", basePath: cwd }
+ )
+ );
+ }
+
+ return cliConfigArray;
+}
+
+/**
+ * The error type when there are files matched by a glob, but all of them have been ignored.
+ */
+class ConfigurationNotFoundError extends Error {
+
+ // eslint-disable-next-line jsdoc/require-description
+ /**
+ * @param {string} directoryPath The directory path.
+ */
+ constructor(directoryPath) {
+ super(`No ESLint configuration found in ${directoryPath}.`);
+ this.messageTemplate = "no-config-found";
+ this.messageData = { directoryPath };
+ }
+}
+
+/**
+ * This class provides the functionality that enumerates every file which is
+ * matched by given glob patterns and that configuration.
+ */
+class CascadingConfigArrayFactory {
+
+ /**
+ * Initialize this enumerator.
+ * @param {CascadingConfigArrayFactoryOptions} options The options.
+ */
+ constructor({
+ additionalPluginPool = new Map(),
+ baseConfig: baseConfigData = null,
+ cliConfig: cliConfigData = null,
+ cwd = process.cwd(),
+ ignorePath,
+ resolvePluginsRelativeTo,
+ rulePaths = [],
+ specificConfigPath = null,
+ useEslintrc = true,
+ builtInRules = new Map(),
+ loadRules,
+ resolver,
+ eslintRecommendedPath,
+ getEslintRecommendedConfig,
+ eslintAllPath,
+ getEslintAllConfig
+ } = {}) {
+ const configArrayFactory = new ConfigArrayFactory({
+ additionalPluginPool,
+ cwd,
+ resolvePluginsRelativeTo,
+ builtInRules,
+ resolver,
+ eslintRecommendedPath,
+ getEslintRecommendedConfig,
+ eslintAllPath,
+ getEslintAllConfig
+ });
+
+ internalSlotsMap.set(this, {
+ baseConfigArray: createBaseConfigArray({
+ baseConfigData,
+ configArrayFactory,
+ cwd,
+ rulePaths,
+ loadRules
+ }),
+ baseConfigData,
+ cliConfigArray: createCLIConfigArray({
+ cliConfigData,
+ configArrayFactory,
+ cwd,
+ ignorePath,
+ specificConfigPath
+ }),
+ cliConfigData,
+ configArrayFactory,
+ configCache: new Map(),
+ cwd,
+ finalizeCache: new WeakMap(),
+ ignorePath,
+ rulePaths,
+ specificConfigPath,
+ useEslintrc,
+ builtInRules,
+ loadRules
+ });
+ }
+
+ /**
+ * The path to the current working directory.
+ * This is used by tests.
+ * @type {string}
+ */
+ get cwd() {
+ const { cwd } = internalSlotsMap.get(this);
+
+ return cwd;
+ }
+
+ /**
+ * Get the config array of a given file.
+ * If `filePath` was not given, it returns the config which contains only
+ * `baseConfigData` and `cliConfigData`.
+ * @param {string} [filePath] The file path to a file.
+ * @param {Object} [options] The options.
+ * @param {boolean} [options.ignoreNotFoundError] If `true` then it doesn't throw `ConfigurationNotFoundError`.
+ * @returns {ConfigArray} The config array of the file.
+ */
+ getConfigArrayForFile(filePath, { ignoreNotFoundError = false } = {}) {
+ const {
+ baseConfigArray,
+ cliConfigArray,
+ cwd
+ } = internalSlotsMap.get(this);
+
+ if (!filePath) {
+ return new ConfigArray(...baseConfigArray, ...cliConfigArray);
+ }
+
+ const directoryPath = path.dirname(path.resolve(cwd, filePath));
+
+ debug(`Load config files for ${directoryPath}.`);
+
+ return this._finalizeConfigArray(
+ this._loadConfigInAncestors(directoryPath),
+ directoryPath,
+ ignoreNotFoundError
+ );
+ }
+
+ /**
+ * Set the config data to override all configs.
+ * Require to call `clearCache()` method after this method is called.
+ * @param {ConfigData} configData The config data to override all configs.
+ * @returns {void}
+ */
+ setOverrideConfig(configData) {
+ const slots = internalSlotsMap.get(this);
+
+ slots.cliConfigData = configData;
+ }
+
+ /**
+ * Clear config cache.
+ * @returns {void}
+ */
+ clearCache() {
+ const slots = internalSlotsMap.get(this);
+
+ slots.baseConfigArray = createBaseConfigArray(slots);
+ slots.cliConfigArray = createCLIConfigArray(slots);
+ slots.configCache.clear();
+ }
+
+ /**
+ * Load and normalize config files from the ancestor directories.
+ * @param {string} directoryPath The path to a leaf directory.
+ * @param {boolean} configsExistInSubdirs `true` if configurations exist in subdirectories.
+ * @returns {ConfigArray} The loaded config.
+ * @private
+ */
+ _loadConfigInAncestors(directoryPath, configsExistInSubdirs = false) {
+ const {
+ baseConfigArray,
+ configArrayFactory,
+ configCache,
+ cwd,
+ useEslintrc
+ } = internalSlotsMap.get(this);
+
+ if (!useEslintrc) {
+ return baseConfigArray;
+ }
+
+ let configArray = configCache.get(directoryPath);
+
+ // Hit cache.
+ if (configArray) {
+ debug(`Cache hit: ${directoryPath}.`);
+ return configArray;
+ }
+ debug(`No cache found: ${directoryPath}.`);
+
+ const homePath = os.homedir();
+
+ // Consider this is root.
+ if (directoryPath === homePath && cwd !== homePath) {
+ debug("Stop traversing because of considered root.");
+ if (configsExistInSubdirs) {
+ const filePath = ConfigArrayFactory.getPathToConfigFileInDirectory(directoryPath);
+
+ if (filePath) {
+ emitDeprecationWarning(
+ filePath,
+ "ESLINT_PERSONAL_CONFIG_SUPPRESS"
+ );
+ }
+ }
+ return this._cacheConfig(directoryPath, baseConfigArray);
+ }
+
+ // Load the config on this directory.
+ try {
+ configArray = configArrayFactory.loadInDirectory(directoryPath);
+ } catch (error) {
+ /* istanbul ignore next */
+ if (error.code === "EACCES") {
+ debug("Stop traversing because of 'EACCES' error.");
+ return this._cacheConfig(directoryPath, baseConfigArray);
+ }
+ throw error;
+ }
+
+ if (configArray.length > 0 && configArray.isRoot()) {
+ debug("Stop traversing because of 'root:true'.");
+ configArray.unshift(...baseConfigArray);
+ return this._cacheConfig(directoryPath, configArray);
+ }
+
+ // Load from the ancestors and merge it.
+ const parentPath = path.dirname(directoryPath);
+ const parentConfigArray = parentPath && parentPath !== directoryPath
+ ? this._loadConfigInAncestors(
+ parentPath,
+ configsExistInSubdirs || configArray.length > 0
+ )
+ : baseConfigArray;
+
+ if (configArray.length > 0) {
+ configArray.unshift(...parentConfigArray);
+ } else {
+ configArray = parentConfigArray;
+ }
+
+ // Cache and return.
+ return this._cacheConfig(directoryPath, configArray);
+ }
+
+ /**
+ * Freeze and cache a given config.
+ * @param {string} directoryPath The path to a directory as a cache key.
+ * @param {ConfigArray} configArray The config array as a cache value.
+ * @returns {ConfigArray} The `configArray` (frozen).
+ */
+ _cacheConfig(directoryPath, configArray) {
+ const { configCache } = internalSlotsMap.get(this);
+
+ Object.freeze(configArray);
+ configCache.set(directoryPath, configArray);
+
+ return configArray;
+ }
+
+ /**
+ * Finalize a given config array.
+ * Concatenate `--config` and other CLI options.
+ * @param {ConfigArray} configArray The parent config array.
+ * @param {string} directoryPath The path to the leaf directory to find config files.
+ * @param {boolean} ignoreNotFoundError If `true` then it doesn't throw `ConfigurationNotFoundError`.
+ * @returns {ConfigArray} The loaded config.
+ * @private
+ */
+ _finalizeConfigArray(configArray, directoryPath, ignoreNotFoundError) {
+ const {
+ cliConfigArray,
+ configArrayFactory,
+ finalizeCache,
+ useEslintrc,
+ builtInRules
+ } = internalSlotsMap.get(this);
+
+ let finalConfigArray = finalizeCache.get(configArray);
+
+ if (!finalConfigArray) {
+ finalConfigArray = configArray;
+
+ // Load the personal config if there are no regular config files.
+ if (
+ useEslintrc &&
+ configArray.every(c => !c.filePath) &&
+ cliConfigArray.every(c => !c.filePath) // `--config` option can be a file.
+ ) {
+ const homePath = os.homedir();
+
+ debug("Loading the config file of the home directory:", homePath);
+
+ const personalConfigArray = configArrayFactory.loadInDirectory(
+ homePath,
+ { name: "PersonalConfig" }
+ );
+
+ if (
+ personalConfigArray.length > 0 &&
+ !directoryPath.startsWith(homePath)
+ ) {
+ const lastElement =
+ personalConfigArray[personalConfigArray.length - 1];
+
+ emitDeprecationWarning(
+ lastElement.filePath,
+ "ESLINT_PERSONAL_CONFIG_LOAD"
+ );
+ }
+
+ finalConfigArray = finalConfigArray.concat(personalConfigArray);
+ }
+
+ // Apply CLI options.
+ if (cliConfigArray.length > 0) {
+ finalConfigArray = finalConfigArray.concat(cliConfigArray);
+ }
+
+ // Validate rule settings and environments.
+ const validator = new ConfigValidator({
+ builtInRules
+ });
+
+ validator.validateConfigArray(finalConfigArray);
+
+ // Cache it.
+ Object.freeze(finalConfigArray);
+ finalizeCache.set(configArray, finalConfigArray);
+
+ debug(
+ "Configuration was determined: %o on %s",
+ finalConfigArray,
+ directoryPath
+ );
+ }
+
+ // At least one element (the default ignore patterns) exists.
+ if (!ignoreNotFoundError && useEslintrc && finalConfigArray.length <= 1) {
+ throw new ConfigurationNotFoundError(directoryPath);
+ }
+
+ return finalConfigArray;
+ }
+}
+
+//------------------------------------------------------------------------------
+// Public Interface
+//------------------------------------------------------------------------------
+
+export { CascadingConfigArrayFactory };
diff --git a/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint/eslintrc/lib/config-array-factory.js b/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint/eslintrc/lib/config-array-factory.js
new file mode 100644
index 0000000..99851e1
--- /dev/null
+++ b/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint/eslintrc/lib/config-array-factory.js
@@ -0,0 +1,1149 @@
+/**
+ * @fileoverview The factory of `ConfigArray` objects.
+ *
+ * This class provides methods to create `ConfigArray` instance.
+ *
+ * - `create(configData, options)`
+ * Create a `ConfigArray` instance from a config data. This is to handle CLI
+ * options except `--config`.
+ * - `loadFile(filePath, options)`
+ * Create a `ConfigArray` instance from a config file. This is to handle
+ * `--config` option. If the file was not found, throws the following error:
+ * - If the filename was `*.js`, a `MODULE_NOT_FOUND` error.
+ * - If the filename was `package.json`, an IO error or an
+ * `ESLINT_CONFIG_FIELD_NOT_FOUND` error.
+ * - Otherwise, an IO error such as `ENOENT`.
+ * - `loadInDirectory(directoryPath, options)`
+ * Create a `ConfigArray` instance from a config file which is on a given
+ * directory. This tries to load `.eslintrc.*` or `package.json`. If not
+ * found, returns an empty `ConfigArray`.
+ * - `loadESLintIgnore(filePath)`
+ * Create a `ConfigArray` instance from a config file that is `.eslintignore`
+ * format. This is to handle `--ignore-path` option.
+ * - `loadDefaultESLintIgnore()`
+ * Create a `ConfigArray` instance from `.eslintignore` or `package.json` in
+ * the current working directory.
+ *
+ * `ConfigArrayFactory` class has the responsibility that loads configuration
+ * files, including loading `extends`, `parser`, and `plugins`. The created
+ * `ConfigArray` instance has the loaded `extends`, `parser`, and `plugins`.
+ *
+ * But this class doesn't handle cascading. `CascadingConfigArrayFactory` class
+ * handles cascading and hierarchy.
+ *
+ * @author Toru Nagashima
+ */
+
+//------------------------------------------------------------------------------
+// Requirements
+//------------------------------------------------------------------------------
+
+import debugOrig from "debug";
+import fs from "fs";
+import importFresh from "import-fresh";
+import { createRequire } from "module";
+import path from "path";
+import stripComments from "strip-json-comments";
+
+import {
+ ConfigArray,
+ ConfigDependency,
+ IgnorePattern,
+ OverrideTester
+} from "./config-array/index.js";
+import ConfigValidator from "./shared/config-validator.js";
+import * as naming from "./shared/naming.js";
+import * as ModuleResolver from "./shared/relative-module-resolver.js";
+
+const require = createRequire(import.meta.url);
+
+const debug = debugOrig("eslintrc:config-array-factory");
+
+//------------------------------------------------------------------------------
+// Helpers
+//------------------------------------------------------------------------------
+
+const configFilenames = [
+ ".eslintrc.js",
+ ".eslintrc.cjs",
+ ".eslintrc.yaml",
+ ".eslintrc.yml",
+ ".eslintrc.json",
+ ".eslintrc",
+ "package.json"
+];
+
+// Define types for VSCode IntelliSense.
+/** @typedef {import("./shared/types").ConfigData} ConfigData */
+/** @typedef {import("./shared/types").OverrideConfigData} OverrideConfigData */
+/** @typedef {import("./shared/types").Parser} Parser */
+/** @typedef {import("./shared/types").Plugin} Plugin */
+/** @typedef {import("./shared/types").Rule} Rule */
+/** @typedef {import("./config-array/config-dependency").DependentParser} DependentParser */
+/** @typedef {import("./config-array/config-dependency").DependentPlugin} DependentPlugin */
+/** @typedef {ConfigArray[0]} ConfigArrayElement */
+
+/**
+ * @typedef {Object} ConfigArrayFactoryOptions
+ * @property {Map} [additionalPluginPool] The map for additional plugins.
+ * @property {string} [cwd] The path to the current working directory.
+ * @property {string} [resolvePluginsRelativeTo] A path to the directory that plugins should be resolved from. Defaults to `cwd`.
+ * @property {Map} builtInRules The rules that are built in to ESLint.
+ * @property {Object} [resolver=ModuleResolver] The module resolver object.
+ * @property {string} eslintAllPath The path to the definitions for eslint:all.
+ * @property {Function} getEslintAllConfig Returns the config data for eslint:all.
+ * @property {string} eslintRecommendedPath The path to the definitions for eslint:recommended.
+ * @property {Function} getEslintRecommendedConfig Returns the config data for eslint:recommended.
+ */
+
+/**
+ * @typedef {Object} ConfigArrayFactoryInternalSlots
+ * @property {Map} additionalPluginPool The map for additional plugins.
+ * @property {string} cwd The path to the current working directory.
+ * @property {string | undefined} resolvePluginsRelativeTo An absolute path the the directory that plugins should be resolved from.
+ * @property {Map} builtInRules The rules that are built in to ESLint.
+ * @property {Object} [resolver=ModuleResolver] The module resolver object.
+ * @property {string} eslintAllPath The path to the definitions for eslint:all.
+ * @property {Function} getEslintAllConfig Returns the config data for eslint:all.
+ * @property {string} eslintRecommendedPath The path to the definitions for eslint:recommended.
+ * @property {Function} getEslintRecommendedConfig Returns the config data for eslint:recommended.
+ */
+
+/**
+ * @typedef {Object} ConfigArrayFactoryLoadingContext
+ * @property {string} filePath The path to the current configuration.
+ * @property {string} matchBasePath The base path to resolve relative paths in `overrides[].files`, `overrides[].excludedFiles`, and `ignorePatterns`.
+ * @property {string} name The name of the current configuration.
+ * @property {string} pluginBasePath The base path to resolve plugins.
+ * @property {"config" | "ignore" | "implicit-processor"} type The type of the current configuration. This is `"config"` in normal. This is `"ignore"` if it came from `.eslintignore`. This is `"implicit-processor"` if it came from legacy file-extension processors.
+ */
+
+/**
+ * @typedef {Object} ConfigArrayFactoryLoadingContext
+ * @property {string} filePath The path to the current configuration.
+ * @property {string} matchBasePath The base path to resolve relative paths in `overrides[].files`, `overrides[].excludedFiles`, and `ignorePatterns`.
+ * @property {string} name The name of the current configuration.
+ * @property {"config" | "ignore" | "implicit-processor"} type The type of the current configuration. This is `"config"` in normal. This is `"ignore"` if it came from `.eslintignore`. This is `"implicit-processor"` if it came from legacy file-extension processors.
+ */
+
+/** @type {WeakMap} */
+const internalSlotsMap = new WeakMap();
+
+/** @type {WeakMap} */
+const normalizedPlugins = new WeakMap();
+
+/**
+ * Check if a given string is a file path.
+ * @param {string} nameOrPath A module name or file path.
+ * @returns {boolean} `true` if the `nameOrPath` is a file path.
+ */
+function isFilePath(nameOrPath) {
+ return (
+ /^\.{1,2}[/\\]/u.test(nameOrPath) ||
+ path.isAbsolute(nameOrPath)
+ );
+}
+
+/**
+ * Convenience wrapper for synchronously reading file contents.
+ * @param {string} filePath The filename to read.
+ * @returns {string} The file contents, with the BOM removed.
+ * @private
+ */
+function readFile(filePath) {
+ return fs.readFileSync(filePath, "utf8").replace(/^\ufeff/u, "");
+}
+
+/**
+ * Loads a YAML configuration from a file.
+ * @param {string} filePath The filename to load.
+ * @returns {ConfigData} The configuration object from the file.
+ * @throws {Error} If the file cannot be read.
+ * @private
+ */
+function loadYAMLConfigFile(filePath) {
+ debug(`Loading YAML config file: ${filePath}`);
+
+ // lazy load YAML to improve performance when not used
+ const yaml = require("js-yaml");
+
+ try {
+
+ // empty YAML file can be null, so always use
+ return yaml.load(readFile(filePath)) || {};
+ } catch (e) {
+ debug(`Error reading YAML file: ${filePath}`);
+ e.message = `Cannot read config file: ${filePath}\nError: ${e.message}`;
+ throw e;
+ }
+}
+
+/**
+ * Loads a JSON configuration from a file.
+ * @param {string} filePath The filename to load.
+ * @returns {ConfigData} The configuration object from the file.
+ * @throws {Error} If the file cannot be read.
+ * @private
+ */
+function loadJSONConfigFile(filePath) {
+ debug(`Loading JSON config file: ${filePath}`);
+
+ try {
+ return JSON.parse(stripComments(readFile(filePath)));
+ } catch (e) {
+ debug(`Error reading JSON file: ${filePath}`);
+ e.message = `Cannot read config file: ${filePath}\nError: ${e.message}`;
+ e.messageTemplate = "failed-to-read-json";
+ e.messageData = {
+ path: filePath,
+ message: e.message
+ };
+ throw e;
+ }
+}
+
+/**
+ * Loads a legacy (.eslintrc) configuration from a file.
+ * @param {string} filePath The filename to load.
+ * @returns {ConfigData} The configuration object from the file.
+ * @throws {Error} If the file cannot be read.
+ * @private
+ */
+function loadLegacyConfigFile(filePath) {
+ debug(`Loading legacy config file: ${filePath}`);
+
+ // lazy load YAML to improve performance when not used
+ const yaml = require("js-yaml");
+
+ try {
+ return yaml.load(stripComments(readFile(filePath))) || /* istanbul ignore next */ {};
+ } catch (e) {
+ debug("Error reading YAML file: %s\n%o", filePath, e);
+ e.message = `Cannot read config file: ${filePath}\nError: ${e.message}`;
+ throw e;
+ }
+}
+
+/**
+ * Loads a JavaScript configuration from a file.
+ * @param {string} filePath The filename to load.
+ * @returns {ConfigData} The configuration object from the file.
+ * @throws {Error} If the file cannot be read.
+ * @private
+ */
+function loadJSConfigFile(filePath) {
+ debug(`Loading JS config file: ${filePath}`);
+ try {
+ return importFresh(filePath);
+ } catch (e) {
+ debug(`Error reading JavaScript file: ${filePath}`);
+ e.message = `Cannot read config file: ${filePath}\nError: ${e.message}`;
+ throw e;
+ }
+}
+
+/**
+ * Loads a configuration from a package.json file.
+ * @param {string} filePath The filename to load.
+ * @returns {ConfigData} The configuration object from the file.
+ * @throws {Error} If the file cannot be read.
+ * @private
+ */
+function loadPackageJSONConfigFile(filePath) {
+ debug(`Loading package.json config file: ${filePath}`);
+ try {
+ const packageData = loadJSONConfigFile(filePath);
+
+ if (!Object.hasOwnProperty.call(packageData, "eslintConfig")) {
+ throw Object.assign(
+ new Error("package.json file doesn't have 'eslintConfig' field."),
+ { code: "ESLINT_CONFIG_FIELD_NOT_FOUND" }
+ );
+ }
+
+ return packageData.eslintConfig;
+ } catch (e) {
+ debug(`Error reading package.json file: ${filePath}`);
+ e.message = `Cannot read config file: ${filePath}\nError: ${e.message}`;
+ throw e;
+ }
+}
+
+/**
+ * Loads a `.eslintignore` from a file.
+ * @param {string} filePath The filename to load.
+ * @returns {string[]} The ignore patterns from the file.
+ * @private
+ */
+function loadESLintIgnoreFile(filePath) {
+ debug(`Loading .eslintignore file: ${filePath}`);
+
+ try {
+ return readFile(filePath)
+ .split(/\r?\n/gu)
+ .filter(line => line.trim() !== "" && !line.startsWith("#"));
+ } catch (e) {
+ debug(`Error reading .eslintignore file: ${filePath}`);
+ e.message = `Cannot read .eslintignore file: ${filePath}\nError: ${e.message}`;
+ throw e;
+ }
+}
+
+/**
+ * Creates an error to notify about a missing config to extend from.
+ * @param {string} configName The name of the missing config.
+ * @param {string} importerName The name of the config that imported the missing config
+ * @param {string} messageTemplate The text template to source error strings from.
+ * @returns {Error} The error object to throw
+ * @private
+ */
+function configInvalidError(configName, importerName, messageTemplate) {
+ return Object.assign(
+ new Error(`Failed to load config "${configName}" to extend from.`),
+ {
+ messageTemplate,
+ messageData: { configName, importerName }
+ }
+ );
+}
+
+/**
+ * Loads a configuration file regardless of the source. Inspects the file path
+ * to determine the correctly way to load the config file.
+ * @param {string} filePath The path to the configuration.
+ * @returns {ConfigData|null} The configuration information.
+ * @private
+ */
+function loadConfigFile(filePath) {
+ switch (path.extname(filePath)) {
+ case ".js":
+ case ".cjs":
+ return loadJSConfigFile(filePath);
+
+ case ".json":
+ if (path.basename(filePath) === "package.json") {
+ return loadPackageJSONConfigFile(filePath);
+ }
+ return loadJSONConfigFile(filePath);
+
+ case ".yaml":
+ case ".yml":
+ return loadYAMLConfigFile(filePath);
+
+ default:
+ return loadLegacyConfigFile(filePath);
+ }
+}
+
+/**
+ * Write debug log.
+ * @param {string} request The requested module name.
+ * @param {string} relativeTo The file path to resolve the request relative to.
+ * @param {string} filePath The resolved file path.
+ * @returns {void}
+ */
+function writeDebugLogForLoading(request, relativeTo, filePath) {
+ /* istanbul ignore next */
+ if (debug.enabled) {
+ let nameAndVersion = null;
+
+ try {
+ const packageJsonPath = ModuleResolver.resolve(
+ `${request}/package.json`,
+ relativeTo
+ );
+ const { version = "unknown" } = require(packageJsonPath);
+
+ nameAndVersion = `${request}@${version}`;
+ } catch (error) {
+ debug("package.json was not found:", error.message);
+ nameAndVersion = request;
+ }
+
+ debug("Loaded: %s (%s)", nameAndVersion, filePath);
+ }
+}
+
+/**
+ * Create a new context with default values.
+ * @param {ConfigArrayFactoryInternalSlots} slots The internal slots.
+ * @param {"config" | "ignore" | "implicit-processor" | undefined} providedType The type of the current configuration. Default is `"config"`.
+ * @param {string | undefined} providedName The name of the current configuration. Default is the relative path from `cwd` to `filePath`.
+ * @param {string | undefined} providedFilePath The path to the current configuration. Default is empty string.
+ * @param {string | undefined} providedMatchBasePath The type of the current configuration. Default is the directory of `filePath` or `cwd`.
+ * @returns {ConfigArrayFactoryLoadingContext} The created context.
+ */
+function createContext(
+ { cwd, resolvePluginsRelativeTo },
+ providedType,
+ providedName,
+ providedFilePath,
+ providedMatchBasePath
+) {
+ const filePath = providedFilePath
+ ? path.resolve(cwd, providedFilePath)
+ : "";
+ const matchBasePath =
+ (providedMatchBasePath && path.resolve(cwd, providedMatchBasePath)) ||
+ (filePath && path.dirname(filePath)) ||
+ cwd;
+ const name =
+ providedName ||
+ (filePath && path.relative(cwd, filePath)) ||
+ "";
+ const pluginBasePath =
+ resolvePluginsRelativeTo ||
+ (filePath && path.dirname(filePath)) ||
+ cwd;
+ const type = providedType || "config";
+
+ return { filePath, matchBasePath, name, pluginBasePath, type };
+}
+
+/**
+ * Normalize a given plugin.
+ * - Ensure the object to have four properties: configs, environments, processors, and rules.
+ * - Ensure the object to not have other properties.
+ * @param {Plugin} plugin The plugin to normalize.
+ * @returns {Plugin} The normalized plugin.
+ */
+function normalizePlugin(plugin) {
+
+ // first check the cache
+ let normalizedPlugin = normalizedPlugins.get(plugin);
+
+ if (normalizedPlugin) {
+ return normalizedPlugin;
+ }
+
+ normalizedPlugin = {
+ configs: plugin.configs || {},
+ environments: plugin.environments || {},
+ processors: plugin.processors || {},
+ rules: plugin.rules || {}
+ };
+
+ // save the reference for later
+ normalizedPlugins.set(plugin, normalizedPlugin);
+
+ return normalizedPlugin;
+}
+
+//------------------------------------------------------------------------------
+// Public Interface
+//------------------------------------------------------------------------------
+
+/**
+ * The factory of `ConfigArray` objects.
+ */
+class ConfigArrayFactory {
+
+ /**
+ * Initialize this instance.
+ * @param {ConfigArrayFactoryOptions} [options] The map for additional plugins.
+ */
+ constructor({
+ additionalPluginPool = new Map(),
+ cwd = process.cwd(),
+ resolvePluginsRelativeTo,
+ builtInRules,
+ resolver = ModuleResolver,
+ eslintAllPath,
+ getEslintAllConfig,
+ eslintRecommendedPath,
+ getEslintRecommendedConfig
+ } = {}) {
+ internalSlotsMap.set(this, {
+ additionalPluginPool,
+ cwd,
+ resolvePluginsRelativeTo:
+ resolvePluginsRelativeTo &&
+ path.resolve(cwd, resolvePluginsRelativeTo),
+ builtInRules,
+ resolver,
+ eslintAllPath,
+ getEslintAllConfig,
+ eslintRecommendedPath,
+ getEslintRecommendedConfig
+ });
+ }
+
+ /**
+ * Create `ConfigArray` instance from a config data.
+ * @param {ConfigData|null} configData The config data to create.
+ * @param {Object} [options] The options.
+ * @param {string} [options.basePath] The base path to resolve relative paths in `overrides[].files`, `overrides[].excludedFiles`, and `ignorePatterns`.
+ * @param {string} [options.filePath] The path to this config data.
+ * @param {string} [options.name] The config name.
+ * @returns {ConfigArray} Loaded config.
+ */
+ create(configData, { basePath, filePath, name } = {}) {
+ if (!configData) {
+ return new ConfigArray();
+ }
+
+ const slots = internalSlotsMap.get(this);
+ const ctx = createContext(slots, "config", name, filePath, basePath);
+ const elements = this._normalizeConfigData(configData, ctx);
+
+ return new ConfigArray(...elements);
+ }
+
+ /**
+ * Load a config file.
+ * @param {string} filePath The path to a config file.
+ * @param {Object} [options] The options.
+ * @param {string} [options.basePath] The base path to resolve relative paths in `overrides[].files`, `overrides[].excludedFiles`, and `ignorePatterns`.
+ * @param {string} [options.name] The config name.
+ * @returns {ConfigArray} Loaded config.
+ */
+ loadFile(filePath, { basePath, name } = {}) {
+ const slots = internalSlotsMap.get(this);
+ const ctx = createContext(slots, "config", name, filePath, basePath);
+
+ return new ConfigArray(...this._loadConfigData(ctx));
+ }
+
+ /**
+ * Load the config file on a given directory if exists.
+ * @param {string} directoryPath The path to a directory.
+ * @param {Object} [options] The options.
+ * @param {string} [options.basePath] The base path to resolve relative paths in `overrides[].files`, `overrides[].excludedFiles`, and `ignorePatterns`.
+ * @param {string} [options.name] The config name.
+ * @returns {ConfigArray} Loaded config. An empty `ConfigArray` if any config doesn't exist.
+ */
+ loadInDirectory(directoryPath, { basePath, name } = {}) {
+ const slots = internalSlotsMap.get(this);
+
+ for (const filename of configFilenames) {
+ const ctx = createContext(
+ slots,
+ "config",
+ name,
+ path.join(directoryPath, filename),
+ basePath
+ );
+
+ if (fs.existsSync(ctx.filePath) && fs.statSync(ctx.filePath).isFile()) {
+ let configData;
+
+ try {
+ configData = loadConfigFile(ctx.filePath);
+ } catch (error) {
+ if (!error || error.code !== "ESLINT_CONFIG_FIELD_NOT_FOUND") {
+ throw error;
+ }
+ }
+
+ if (configData) {
+ debug(`Config file found: ${ctx.filePath}`);
+ return new ConfigArray(
+ ...this._normalizeConfigData(configData, ctx)
+ );
+ }
+ }
+ }
+
+ debug(`Config file not found on ${directoryPath}`);
+ return new ConfigArray();
+ }
+
+ /**
+ * Check if a config file on a given directory exists or not.
+ * @param {string} directoryPath The path to a directory.
+ * @returns {string | null} The path to the found config file. If not found then null.
+ */
+ static getPathToConfigFileInDirectory(directoryPath) {
+ for (const filename of configFilenames) {
+ const filePath = path.join(directoryPath, filename);
+
+ if (fs.existsSync(filePath)) {
+ if (filename === "package.json") {
+ try {
+ loadPackageJSONConfigFile(filePath);
+ return filePath;
+ } catch { /* ignore */ }
+ } else {
+ return filePath;
+ }
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Load `.eslintignore` file.
+ * @param {string} filePath The path to a `.eslintignore` file to load.
+ * @returns {ConfigArray} Loaded config. An empty `ConfigArray` if any config doesn't exist.
+ */
+ loadESLintIgnore(filePath) {
+ const slots = internalSlotsMap.get(this);
+ const ctx = createContext(
+ slots,
+ "ignore",
+ void 0,
+ filePath,
+ slots.cwd
+ );
+ const ignorePatterns = loadESLintIgnoreFile(ctx.filePath);
+
+ return new ConfigArray(
+ ...this._normalizeESLintIgnoreData(ignorePatterns, ctx)
+ );
+ }
+
+ /**
+ * Load `.eslintignore` file in the current working directory.
+ * @returns {ConfigArray} Loaded config. An empty `ConfigArray` if any config doesn't exist.
+ */
+ loadDefaultESLintIgnore() {
+ const slots = internalSlotsMap.get(this);
+ const eslintIgnorePath = path.resolve(slots.cwd, ".eslintignore");
+ const packageJsonPath = path.resolve(slots.cwd, "package.json");
+
+ if (fs.existsSync(eslintIgnorePath)) {
+ return this.loadESLintIgnore(eslintIgnorePath);
+ }
+ if (fs.existsSync(packageJsonPath)) {
+ const data = loadJSONConfigFile(packageJsonPath);
+
+ if (Object.hasOwnProperty.call(data, "eslintIgnore")) {
+ if (!Array.isArray(data.eslintIgnore)) {
+ throw new Error("Package.json eslintIgnore property requires an array of paths");
+ }
+ const ctx = createContext(
+ slots,
+ "ignore",
+ "eslintIgnore in package.json",
+ packageJsonPath,
+ slots.cwd
+ );
+
+ return new ConfigArray(
+ ...this._normalizeESLintIgnoreData(data.eslintIgnore, ctx)
+ );
+ }
+ }
+
+ return new ConfigArray();
+ }
+
+ /**
+ * Load a given config file.
+ * @param {ConfigArrayFactoryLoadingContext} ctx The loading context.
+ * @returns {IterableIterator} Loaded config.
+ * @private
+ */
+ _loadConfigData(ctx) {
+ return this._normalizeConfigData(loadConfigFile(ctx.filePath), ctx);
+ }
+
+ /**
+ * Normalize a given `.eslintignore` data to config array elements.
+ * @param {string[]} ignorePatterns The patterns to ignore files.
+ * @param {ConfigArrayFactoryLoadingContext} ctx The loading context.
+ * @returns {IterableIterator} The normalized config.
+ * @private
+ */
+ *_normalizeESLintIgnoreData(ignorePatterns, ctx) {
+ const elements = this._normalizeObjectConfigData(
+ { ignorePatterns },
+ ctx
+ );
+
+ // Set `ignorePattern.loose` flag for backward compatibility.
+ for (const element of elements) {
+ if (element.ignorePattern) {
+ element.ignorePattern.loose = true;
+ }
+ yield element;
+ }
+ }
+
+ /**
+ * Normalize a given config to an array.
+ * @param {ConfigData} configData The config data to normalize.
+ * @param {ConfigArrayFactoryLoadingContext} ctx The loading context.
+ * @returns {IterableIterator} The normalized config.
+ * @private
+ */
+ _normalizeConfigData(configData, ctx) {
+ const validator = new ConfigValidator();
+
+ validator.validateConfigSchema(configData, ctx.name || ctx.filePath);
+ return this._normalizeObjectConfigData(configData, ctx);
+ }
+
+ /**
+ * Normalize a given config to an array.
+ * @param {ConfigData|OverrideConfigData} configData The config data to normalize.
+ * @param {ConfigArrayFactoryLoadingContext} ctx The loading context.
+ * @returns {IterableIterator} The normalized config.
+ * @private
+ */
+ *_normalizeObjectConfigData(configData, ctx) {
+ const { files, excludedFiles, ...configBody } = configData;
+ const criteria = OverrideTester.create(
+ files,
+ excludedFiles,
+ ctx.matchBasePath
+ );
+ const elements = this._normalizeObjectConfigDataBody(configBody, ctx);
+
+ // Apply the criteria to every element.
+ for (const element of elements) {
+
+ /*
+ * Merge the criteria.
+ * This is for the `overrides` entries that came from the
+ * configurations of `overrides[].extends`.
+ */
+ element.criteria = OverrideTester.and(criteria, element.criteria);
+
+ /*
+ * Remove `root` property to ignore `root` settings which came from
+ * `extends` in `overrides`.
+ */
+ if (element.criteria) {
+ element.root = void 0;
+ }
+
+ yield element;
+ }
+ }
+
+ /**
+ * Normalize a given config to an array.
+ * @param {ConfigData} configData The config data to normalize.
+ * @param {ConfigArrayFactoryLoadingContext} ctx The loading context.
+ * @returns {IterableIterator} The normalized config.
+ * @private
+ */
+ *_normalizeObjectConfigDataBody(
+ {
+ env,
+ extends: extend,
+ globals,
+ ignorePatterns,
+ noInlineConfig,
+ parser: parserName,
+ parserOptions,
+ plugins: pluginList,
+ processor,
+ reportUnusedDisableDirectives,
+ root,
+ rules,
+ settings,
+ overrides: overrideList = []
+ },
+ ctx
+ ) {
+ const extendList = Array.isArray(extend) ? extend : [extend];
+ const ignorePattern = ignorePatterns && new IgnorePattern(
+ Array.isArray(ignorePatterns) ? ignorePatterns : [ignorePatterns],
+ ctx.matchBasePath
+ );
+
+ // Flatten `extends`.
+ for (const extendName of extendList.filter(Boolean)) {
+ yield* this._loadExtends(extendName, ctx);
+ }
+
+ // Load parser & plugins.
+ const parser = parserName && this._loadParser(parserName, ctx);
+ const plugins = pluginList && this._loadPlugins(pluginList, ctx);
+
+ // Yield pseudo config data for file extension processors.
+ if (plugins) {
+ yield* this._takeFileExtensionProcessors(plugins, ctx);
+ }
+
+ // Yield the config data except `extends` and `overrides`.
+ yield {
+
+ // Debug information.
+ type: ctx.type,
+ name: ctx.name,
+ filePath: ctx.filePath,
+
+ // Config data.
+ criteria: null,
+ env,
+ globals,
+ ignorePattern,
+ noInlineConfig,
+ parser,
+ parserOptions,
+ plugins,
+ processor,
+ reportUnusedDisableDirectives,
+ root,
+ rules,
+ settings
+ };
+
+ // Flatten `overries`.
+ for (let i = 0; i < overrideList.length; ++i) {
+ yield* this._normalizeObjectConfigData(
+ overrideList[i],
+ { ...ctx, name: `${ctx.name}#overrides[${i}]` }
+ );
+ }
+ }
+
+ /**
+ * Load configs of an element in `extends`.
+ * @param {string} extendName The name of a base config.
+ * @param {ConfigArrayFactoryLoadingContext} ctx The loading context.
+ * @returns {IterableIterator} The normalized config.
+ * @private
+ */
+ _loadExtends(extendName, ctx) {
+ debug("Loading {extends:%j} relative to %s", extendName, ctx.filePath);
+ try {
+ if (extendName.startsWith("eslint:")) {
+ return this._loadExtendedBuiltInConfig(extendName, ctx);
+ }
+ if (extendName.startsWith("plugin:")) {
+ return this._loadExtendedPluginConfig(extendName, ctx);
+ }
+ return this._loadExtendedShareableConfig(extendName, ctx);
+ } catch (error) {
+ error.message += `\nReferenced from: ${ctx.filePath || ctx.name}`;
+ throw error;
+ }
+ }
+
+ /**
+ * Load configs of an element in `extends`.
+ * @param {string} extendName The name of a base config.
+ * @param {ConfigArrayFactoryLoadingContext} ctx The loading context.
+ * @returns {IterableIterator} The normalized config.
+ * @private
+ */
+ _loadExtendedBuiltInConfig(extendName, ctx) {
+ const {
+ eslintAllPath,
+ getEslintAllConfig,
+ eslintRecommendedPath,
+ getEslintRecommendedConfig
+ } = internalSlotsMap.get(this);
+
+ if (extendName === "eslint:recommended") {
+ const name = `${ctx.name} » ${extendName}`;
+
+ if (getEslintRecommendedConfig) {
+ if (typeof getEslintRecommendedConfig !== "function") {
+ throw new Error(`getEslintRecommendedConfig must be a function instead of '${getEslintRecommendedConfig}'`);
+ }
+ return this._normalizeConfigData(getEslintRecommendedConfig(), { ...ctx, name, filePath: "" });
+ }
+ return this._loadConfigData({
+ ...ctx,
+ name,
+ filePath: eslintRecommendedPath
+ });
+ }
+ if (extendName === "eslint:all") {
+ const name = `${ctx.name} » ${extendName}`;
+
+ if (getEslintAllConfig) {
+ if (typeof getEslintAllConfig !== "function") {
+ throw new Error(`getEslintAllConfig must be a function instead of '${getEslintAllConfig}'`);
+ }
+ return this._normalizeConfigData(getEslintAllConfig(), { ...ctx, name, filePath: "" });
+ }
+ return this._loadConfigData({
+ ...ctx,
+ name,
+ filePath: eslintAllPath
+ });
+ }
+
+ throw configInvalidError(extendName, ctx.name, "extend-config-missing");
+ }
+
+ /**
+ * Load configs of an element in `extends`.
+ * @param {string} extendName The name of a base config.
+ * @param {ConfigArrayFactoryLoadingContext} ctx The loading context.
+ * @returns {IterableIterator} The normalized config.
+ * @private
+ */
+ _loadExtendedPluginConfig(extendName, ctx) {
+ const slashIndex = extendName.lastIndexOf("/");
+
+ if (slashIndex === -1) {
+ throw configInvalidError(extendName, ctx.filePath, "plugin-invalid");
+ }
+
+ const pluginName = extendName.slice("plugin:".length, slashIndex);
+ const configName = extendName.slice(slashIndex + 1);
+
+ if (isFilePath(pluginName)) {
+ throw new Error("'extends' cannot use a file path for plugins.");
+ }
+
+ const plugin = this._loadPlugin(pluginName, ctx);
+ const configData =
+ plugin.definition &&
+ plugin.definition.configs[configName];
+
+ if (configData) {
+ return this._normalizeConfigData(configData, {
+ ...ctx,
+ filePath: plugin.filePath || ctx.filePath,
+ name: `${ctx.name} » plugin:${plugin.id}/${configName}`
+ });
+ }
+
+ throw plugin.error || configInvalidError(extendName, ctx.filePath, "extend-config-missing");
+ }
+
+ /**
+ * Load configs of an element in `extends`.
+ * @param {string} extendName The name of a base config.
+ * @param {ConfigArrayFactoryLoadingContext} ctx The loading context.
+ * @returns {IterableIterator} The normalized config.
+ * @private
+ */
+ _loadExtendedShareableConfig(extendName, ctx) {
+ const { cwd, resolver } = internalSlotsMap.get(this);
+ const relativeTo = ctx.filePath || path.join(cwd, "__placeholder__.js");
+ let request;
+
+ if (isFilePath(extendName)) {
+ request = extendName;
+ } else if (extendName.startsWith(".")) {
+ request = `./${extendName}`; // For backward compatibility. A ton of tests depended on this behavior.
+ } else {
+ request = naming.normalizePackageName(
+ extendName,
+ "eslint-config"
+ );
+ }
+
+ let filePath;
+
+ try {
+ filePath = resolver.resolve(request, relativeTo);
+ } catch (error) {
+ /* istanbul ignore else */
+ if (error && error.code === "MODULE_NOT_FOUND") {
+ throw configInvalidError(extendName, ctx.filePath, "extend-config-missing");
+ }
+ throw error;
+ }
+
+ writeDebugLogForLoading(request, relativeTo, filePath);
+ return this._loadConfigData({
+ ...ctx,
+ filePath,
+ name: `${ctx.name} » ${request}`
+ });
+ }
+
+ /**
+ * Load given plugins.
+ * @param {string[]} names The plugin names to load.
+ * @param {ConfigArrayFactoryLoadingContext} ctx The loading context.
+ * @returns {Record} The loaded parser.
+ * @private
+ */
+ _loadPlugins(names, ctx) {
+ return names.reduce((map, name) => {
+ if (isFilePath(name)) {
+ throw new Error("Plugins array cannot includes file paths.");
+ }
+ const plugin = this._loadPlugin(name, ctx);
+
+ map[plugin.id] = plugin;
+
+ return map;
+ }, {});
+ }
+
+ /**
+ * Load a given parser.
+ * @param {string} nameOrPath The package name or the path to a parser file.
+ * @param {ConfigArrayFactoryLoadingContext} ctx The loading context.
+ * @returns {DependentParser} The loaded parser.
+ */
+ _loadParser(nameOrPath, ctx) {
+ debug("Loading parser %j from %s", nameOrPath, ctx.filePath);
+
+ const { cwd, resolver } = internalSlotsMap.get(this);
+ const relativeTo = ctx.filePath || path.join(cwd, "__placeholder__.js");
+
+ try {
+ const filePath = resolver.resolve(nameOrPath, relativeTo);
+
+ writeDebugLogForLoading(nameOrPath, relativeTo, filePath);
+
+ return new ConfigDependency({
+ definition: require(filePath),
+ filePath,
+ id: nameOrPath,
+ importerName: ctx.name,
+ importerPath: ctx.filePath
+ });
+ } catch (error) {
+
+ // If the parser name is "espree", load the espree of ESLint.
+ if (nameOrPath === "espree") {
+ debug("Fallback espree.");
+ return new ConfigDependency({
+ definition: require("espree"),
+ filePath: require.resolve("espree"),
+ id: nameOrPath,
+ importerName: ctx.name,
+ importerPath: ctx.filePath
+ });
+ }
+
+ debug("Failed to load parser '%s' declared in '%s'.", nameOrPath, ctx.name);
+ error.message = `Failed to load parser '${nameOrPath}' declared in '${ctx.name}': ${error.message}`;
+
+ return new ConfigDependency({
+ error,
+ id: nameOrPath,
+ importerName: ctx.name,
+ importerPath: ctx.filePath
+ });
+ }
+ }
+
+ /**
+ * Load a given plugin.
+ * @param {string} name The plugin name to load.
+ * @param {ConfigArrayFactoryLoadingContext} ctx The loading context.
+ * @returns {DependentPlugin} The loaded plugin.
+ * @private
+ */
+ _loadPlugin(name, ctx) {
+ debug("Loading plugin %j from %s", name, ctx.filePath);
+
+ const { additionalPluginPool, resolver } = internalSlotsMap.get(this);
+ const request = naming.normalizePackageName(name, "eslint-plugin");
+ const id = naming.getShorthandName(request, "eslint-plugin");
+ const relativeTo = path.join(ctx.pluginBasePath, "__placeholder__.js");
+
+ if (name.match(/\s+/u)) {
+ const error = Object.assign(
+ new Error(`Whitespace found in plugin name '${name}'`),
+ {
+ messageTemplate: "whitespace-found",
+ messageData: { pluginName: request }
+ }
+ );
+
+ return new ConfigDependency({
+ error,
+ id,
+ importerName: ctx.name,
+ importerPath: ctx.filePath
+ });
+ }
+
+ // Check for additional pool.
+ const plugin =
+ additionalPluginPool.get(request) ||
+ additionalPluginPool.get(id);
+
+ if (plugin) {
+ return new ConfigDependency({
+ definition: normalizePlugin(plugin),
+ filePath: "", // It's unknown where the plugin came from.
+ id,
+ importerName: ctx.name,
+ importerPath: ctx.filePath
+ });
+ }
+
+ let filePath;
+ let error;
+
+ try {
+ filePath = resolver.resolve(request, relativeTo);
+ } catch (resolveError) {
+ error = resolveError;
+ /* istanbul ignore else */
+ if (error && error.code === "MODULE_NOT_FOUND") {
+ error.messageTemplate = "plugin-missing";
+ error.messageData = {
+ pluginName: request,
+ resolvePluginsRelativeTo: ctx.pluginBasePath,
+ importerName: ctx.name
+ };
+ }
+ }
+
+ if (filePath) {
+ try {
+ writeDebugLogForLoading(request, relativeTo, filePath);
+
+ const startTime = Date.now();
+ const pluginDefinition = require(filePath);
+
+ debug(`Plugin ${filePath} loaded in: ${Date.now() - startTime}ms`);
+
+ return new ConfigDependency({
+ definition: normalizePlugin(pluginDefinition),
+ filePath,
+ id,
+ importerName: ctx.name,
+ importerPath: ctx.filePath
+ });
+ } catch (loadError) {
+ error = loadError;
+ }
+ }
+
+ debug("Failed to load plugin '%s' declared in '%s'.", name, ctx.name);
+ error.message = `Failed to load plugin '${name}' declared in '${ctx.name}': ${error.message}`;
+ return new ConfigDependency({
+ error,
+ id,
+ importerName: ctx.name,
+ importerPath: ctx.filePath
+ });
+ }
+
+ /**
+ * Take file expression processors as config array elements.
+ * @param {Record} plugins The plugin definitions.
+ * @param {ConfigArrayFactoryLoadingContext} ctx The loading context.
+ * @returns {IterableIterator} The config array elements of file expression processors.
+ * @private
+ */
+ *_takeFileExtensionProcessors(plugins, ctx) {
+ for (const pluginId of Object.keys(plugins)) {
+ const processors =
+ plugins[pluginId] &&
+ plugins[pluginId].definition &&
+ plugins[pluginId].definition.processors;
+
+ if (!processors) {
+ continue;
+ }
+
+ for (const processorId of Object.keys(processors)) {
+ if (processorId.startsWith(".")) {
+ yield* this._normalizeObjectConfigData(
+ {
+ files: [`*${processorId}`],
+ processor: `${pluginId}/${processorId}`
+ },
+ {
+ ...ctx,
+ type: "implicit-processor",
+ name: `${ctx.name}#processors["${pluginId}/${processorId}"]`
+ }
+ );
+ }
+ }
+ }
+ }
+}
+
+export { ConfigArrayFactory, createContext };
diff --git a/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint/eslintrc/lib/config-array/config-array.js b/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint/eslintrc/lib/config-array/config-array.js
new file mode 100644
index 0000000..133f5a2
--- /dev/null
+++ b/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint/eslintrc/lib/config-array/config-array.js
@@ -0,0 +1,523 @@
+/**
+ * @fileoverview `ConfigArray` class.
+ *
+ * `ConfigArray` class expresses the full of a configuration. It has the entry
+ * config file, base config files that were extended, loaded parsers, and loaded
+ * plugins.
+ *
+ * `ConfigArray` class provides three properties and two methods.
+ *
+ * - `pluginEnvironments`
+ * - `pluginProcessors`
+ * - `pluginRules`
+ * The `Map` objects that contain the members of all plugins that this
+ * config array contains. Those map objects don't have mutation methods.
+ * Those keys are the member ID such as `pluginId/memberName`.
+ * - `isRoot()`
+ * If `true` then this configuration has `root:true` property.
+ * - `extractConfig(filePath)`
+ * Extract the final configuration for a given file. This means merging
+ * every config array element which that `criteria` property matched. The
+ * `filePath` argument must be an absolute path.
+ *
+ * `ConfigArrayFactory` provides the loading logic of config files.
+ *
+ * @author Toru Nagashima
+ */
+
+//------------------------------------------------------------------------------
+// Requirements
+//------------------------------------------------------------------------------
+
+import { ExtractedConfig } from "./extracted-config.js";
+import { IgnorePattern } from "./ignore-pattern.js";
+
+//------------------------------------------------------------------------------
+// Helpers
+//------------------------------------------------------------------------------
+
+// Define types for VSCode IntelliSense.
+/** @typedef {import("../../shared/types").Environment} Environment */
+/** @typedef {import("../../shared/types").GlobalConf} GlobalConf */
+/** @typedef {import("../../shared/types").RuleConf} RuleConf */
+/** @typedef {import("../../shared/types").Rule} Rule */
+/** @typedef {import("../../shared/types").Plugin} Plugin */
+/** @typedef {import("../../shared/types").Processor} Processor */
+/** @typedef {import("./config-dependency").DependentParser} DependentParser */
+/** @typedef {import("./config-dependency").DependentPlugin} DependentPlugin */
+/** @typedef {import("./override-tester")["OverrideTester"]} OverrideTester */
+
+/**
+ * @typedef {Object} ConfigArrayElement
+ * @property {string} name The name of this config element.
+ * @property {string} filePath The path to the source file of this config element.
+ * @property {InstanceType|null} criteria The tester for the `files` and `excludedFiles` of this config element.
+ * @property {Record|undefined} env The environment settings.
+ * @property {Record|undefined} globals The global variable settings.
+ * @property {IgnorePattern|undefined} ignorePattern The ignore patterns.
+ * @property {boolean|undefined} noInlineConfig The flag that disables directive comments.
+ * @property {DependentParser|undefined} parser The parser loader.
+ * @property {Object|undefined} parserOptions The parser options.
+ * @property {Record|undefined} plugins The plugin loaders.
+ * @property {string|undefined} processor The processor name to refer plugin's processor.
+ * @property {boolean|undefined} reportUnusedDisableDirectives The flag to report unused `eslint-disable` comments.
+ * @property {boolean|undefined} root The flag to express root.
+ * @property {Record|undefined} rules The rule settings
+ * @property {Object|undefined} settings The shared settings.
+ * @property {"config" | "ignore" | "implicit-processor"} type The element type.
+ */
+
+/**
+ * @typedef {Object} ConfigArrayInternalSlots
+ * @property {Map} cache The cache to extract configs.
+ * @property {ReadonlyMap|null} envMap The map from environment ID to environment definition.
+ * @property {ReadonlyMap|null} processorMap The map from processor ID to environment definition.
+ * @property {ReadonlyMap|null} ruleMap The map from rule ID to rule definition.
+ */
+
+/** @type {WeakMap} */
+const internalSlotsMap = new class extends WeakMap {
+ get(key) {
+ let value = super.get(key);
+
+ if (!value) {
+ value = {
+ cache: new Map(),
+ envMap: null,
+ processorMap: null,
+ ruleMap: null
+ };
+ super.set(key, value);
+ }
+
+ return value;
+ }
+}();
+
+/**
+ * Get the indices which are matched to a given file.
+ * @param {ConfigArrayElement[]} elements The elements.
+ * @param {string} filePath The path to a target file.
+ * @returns {number[]} The indices.
+ */
+function getMatchedIndices(elements, filePath) {
+ const indices = [];
+
+ for (let i = elements.length - 1; i >= 0; --i) {
+ const element = elements[i];
+
+ if (!element.criteria || (filePath && element.criteria.test(filePath))) {
+ indices.push(i);
+ }
+ }
+
+ return indices;
+}
+
+/**
+ * Check if a value is a non-null object.
+ * @param {any} x The value to check.
+ * @returns {boolean} `true` if the value is a non-null object.
+ */
+function isNonNullObject(x) {
+ return typeof x === "object" && x !== null;
+}
+
+/**
+ * Merge two objects.
+ *
+ * Assign every property values of `y` to `x` if `x` doesn't have the property.
+ * If `x`'s property value is an object, it does recursive.
+ * @param {Object} target The destination to merge
+ * @param {Object|undefined} source The source to merge.
+ * @returns {void}
+ */
+function mergeWithoutOverwrite(target, source) {
+ if (!isNonNullObject(source)) {
+ return;
+ }
+
+ for (const key of Object.keys(source)) {
+ if (key === "__proto__") {
+ continue;
+ }
+
+ if (isNonNullObject(target[key])) {
+ mergeWithoutOverwrite(target[key], source[key]);
+ } else if (target[key] === void 0) {
+ if (isNonNullObject(source[key])) {
+ target[key] = Array.isArray(source[key]) ? [] : {};
+ mergeWithoutOverwrite(target[key], source[key]);
+ } else if (source[key] !== void 0) {
+ target[key] = source[key];
+ }
+ }
+ }
+}
+
+/**
+ * The error for plugin conflicts.
+ */
+class PluginConflictError extends Error {
+
+ /**
+ * Initialize this error object.
+ * @param {string} pluginId The plugin ID.
+ * @param {{filePath:string, importerName:string}[]} plugins The resolved plugins.
+ */
+ constructor(pluginId, plugins) {
+ super(`Plugin "${pluginId}" was conflicted between ${plugins.map(p => `"${p.importerName}"`).join(" and ")}.`);
+ this.messageTemplate = "plugin-conflict";
+ this.messageData = { pluginId, plugins };
+ }
+}
+
+/**
+ * Merge plugins.
+ * `target`'s definition is prior to `source`'s.
+ * @param {Record} target The destination to merge
+ * @param {Record|undefined} source The source to merge.
+ * @returns {void}
+ */
+function mergePlugins(target, source) {
+ if (!isNonNullObject(source)) {
+ return;
+ }
+
+ for (const key of Object.keys(source)) {
+ if (key === "__proto__") {
+ continue;
+ }
+ const targetValue = target[key];
+ const sourceValue = source[key];
+
+ // Adopt the plugin which was found at first.
+ if (targetValue === void 0) {
+ if (sourceValue.error) {
+ throw sourceValue.error;
+ }
+ target[key] = sourceValue;
+ } else if (sourceValue.filePath !== targetValue.filePath) {
+ throw new PluginConflictError(key, [
+ {
+ filePath: targetValue.filePath,
+ importerName: targetValue.importerName
+ },
+ {
+ filePath: sourceValue.filePath,
+ importerName: sourceValue.importerName
+ }
+ ]);
+ }
+ }
+}
+
+/**
+ * Merge rule configs.
+ * `target`'s definition is prior to `source`'s.
+ * @param {Record} target The destination to merge
+ * @param {Record|undefined} source The source to merge.
+ * @returns {void}
+ */
+function mergeRuleConfigs(target, source) {
+ if (!isNonNullObject(source)) {
+ return;
+ }
+
+ for (const key of Object.keys(source)) {
+ if (key === "__proto__") {
+ continue;
+ }
+ const targetDef = target[key];
+ const sourceDef = source[key];
+
+ // Adopt the rule config which was found at first.
+ if (targetDef === void 0) {
+ if (Array.isArray(sourceDef)) {
+ target[key] = [...sourceDef];
+ } else {
+ target[key] = [sourceDef];
+ }
+
+ /*
+ * If the first found rule config is severity only and the current rule
+ * config has options, merge the severity and the options.
+ */
+ } else if (
+ targetDef.length === 1 &&
+ Array.isArray(sourceDef) &&
+ sourceDef.length >= 2
+ ) {
+ targetDef.push(...sourceDef.slice(1));
+ }
+ }
+}
+
+/**
+ * Create the extracted config.
+ * @param {ConfigArray} instance The config elements.
+ * @param {number[]} indices The indices to use.
+ * @returns {ExtractedConfig} The extracted config.
+ */
+function createConfig(instance, indices) {
+ const config = new ExtractedConfig();
+ const ignorePatterns = [];
+
+ // Merge elements.
+ for (const index of indices) {
+ const element = instance[index];
+
+ // Adopt the parser which was found at first.
+ if (!config.parser && element.parser) {
+ if (element.parser.error) {
+ throw element.parser.error;
+ }
+ config.parser = element.parser;
+ }
+
+ // Adopt the processor which was found at first.
+ if (!config.processor && element.processor) {
+ config.processor = element.processor;
+ }
+
+ // Adopt the noInlineConfig which was found at first.
+ if (config.noInlineConfig === void 0 && element.noInlineConfig !== void 0) {
+ config.noInlineConfig = element.noInlineConfig;
+ config.configNameOfNoInlineConfig = element.name;
+ }
+
+ // Adopt the reportUnusedDisableDirectives which was found at first.
+ if (config.reportUnusedDisableDirectives === void 0 && element.reportUnusedDisableDirectives !== void 0) {
+ config.reportUnusedDisableDirectives = element.reportUnusedDisableDirectives;
+ }
+
+ // Collect ignorePatterns
+ if (element.ignorePattern) {
+ ignorePatterns.push(element.ignorePattern);
+ }
+
+ // Merge others.
+ mergeWithoutOverwrite(config.env, element.env);
+ mergeWithoutOverwrite(config.globals, element.globals);
+ mergeWithoutOverwrite(config.parserOptions, element.parserOptions);
+ mergeWithoutOverwrite(config.settings, element.settings);
+ mergePlugins(config.plugins, element.plugins);
+ mergeRuleConfigs(config.rules, element.rules);
+ }
+
+ // Create the predicate function for ignore patterns.
+ if (ignorePatterns.length > 0) {
+ config.ignores = IgnorePattern.createIgnore(ignorePatterns.reverse());
+ }
+
+ return config;
+}
+
+/**
+ * Collect definitions.
+ * @template T, U
+ * @param {string} pluginId The plugin ID for prefix.
+ * @param {Record} defs The definitions to collect.
+ * @param {Map} map The map to output.
+ * @param {function(T): U} [normalize] The normalize function for each value.
+ * @returns {void}
+ */
+function collect(pluginId, defs, map, normalize) {
+ if (defs) {
+ const prefix = pluginId && `${pluginId}/`;
+
+ for (const [key, value] of Object.entries(defs)) {
+ map.set(
+ `${prefix}${key}`,
+ normalize ? normalize(value) : value
+ );
+ }
+ }
+}
+
+/**
+ * Normalize a rule definition.
+ * @param {Function|Rule} rule The rule definition to normalize.
+ * @returns {Rule} The normalized rule definition.
+ */
+function normalizePluginRule(rule) {
+ return typeof rule === "function" ? { create: rule } : rule;
+}
+
+/**
+ * Delete the mutation methods from a given map.
+ * @param {Map} map The map object to delete.
+ * @returns {void}
+ */
+function deleteMutationMethods(map) {
+ Object.defineProperties(map, {
+ clear: { configurable: true, value: void 0 },
+ delete: { configurable: true, value: void 0 },
+ set: { configurable: true, value: void 0 }
+ });
+}
+
+/**
+ * Create `envMap`, `processorMap`, `ruleMap` with the plugins in the config array.
+ * @param {ConfigArrayElement[]} elements The config elements.
+ * @param {ConfigArrayInternalSlots} slots The internal slots.
+ * @returns {void}
+ */
+function initPluginMemberMaps(elements, slots) {
+ const processed = new Set();
+
+ slots.envMap = new Map();
+ slots.processorMap = new Map();
+ slots.ruleMap = new Map();
+
+ for (const element of elements) {
+ if (!element.plugins) {
+ continue;
+ }
+
+ for (const [pluginId, value] of Object.entries(element.plugins)) {
+ const plugin = value.definition;
+
+ if (!plugin || processed.has(pluginId)) {
+ continue;
+ }
+ processed.add(pluginId);
+
+ collect(pluginId, plugin.environments, slots.envMap);
+ collect(pluginId, plugin.processors, slots.processorMap);
+ collect(pluginId, plugin.rules, slots.ruleMap, normalizePluginRule);
+ }
+ }
+
+ deleteMutationMethods(slots.envMap);
+ deleteMutationMethods(slots.processorMap);
+ deleteMutationMethods(slots.ruleMap);
+}
+
+/**
+ * Create `envMap`, `processorMap`, `ruleMap` with the plugins in the config array.
+ * @param {ConfigArray} instance The config elements.
+ * @returns {ConfigArrayInternalSlots} The extracted config.
+ */
+function ensurePluginMemberMaps(instance) {
+ const slots = internalSlotsMap.get(instance);
+
+ if (!slots.ruleMap) {
+ initPluginMemberMaps(instance, slots);
+ }
+
+ return slots;
+}
+
+//------------------------------------------------------------------------------
+// Public Interface
+//------------------------------------------------------------------------------
+
+/**
+ * The Config Array.
+ *
+ * `ConfigArray` instance contains all settings, parsers, and plugins.
+ * You need to call `ConfigArray#extractConfig(filePath)` method in order to
+ * extract, merge and get only the config data which is related to an arbitrary
+ * file.
+ * @extends {Array}
+ */
+class ConfigArray extends Array {
+
+ /**
+ * Get the plugin environments.
+ * The returned map cannot be mutated.
+ * @type {ReadonlyMap} The plugin environments.
+ */
+ get pluginEnvironments() {
+ return ensurePluginMemberMaps(this).envMap;
+ }
+
+ /**
+ * Get the plugin processors.
+ * The returned map cannot be mutated.
+ * @type {ReadonlyMap} The plugin processors.
+ */
+ get pluginProcessors() {
+ return ensurePluginMemberMaps(this).processorMap;
+ }
+
+ /**
+ * Get the plugin rules.
+ * The returned map cannot be mutated.
+ * @returns {ReadonlyMap} The plugin rules.
+ */
+ get pluginRules() {
+ return ensurePluginMemberMaps(this).ruleMap;
+ }
+
+ /**
+ * Check if this config has `root` flag.
+ * @returns {boolean} `true` if this config array is root.
+ */
+ isRoot() {
+ for (let i = this.length - 1; i >= 0; --i) {
+ const root = this[i].root;
+
+ if (typeof root === "boolean") {
+ return root;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Extract the config data which is related to a given file.
+ * @param {string} filePath The absolute path to the target file.
+ * @returns {ExtractedConfig} The extracted config data.
+ */
+ extractConfig(filePath) {
+ const { cache } = internalSlotsMap.get(this);
+ const indices = getMatchedIndices(this, filePath);
+ const cacheKey = indices.join(",");
+
+ if (!cache.has(cacheKey)) {
+ cache.set(cacheKey, createConfig(this, indices));
+ }
+
+ return cache.get(cacheKey);
+ }
+
+ /**
+ * Check if a given path is an additional lint target.
+ * @param {string} filePath The absolute path to the target file.
+ * @returns {boolean} `true` if the file is an additional lint target.
+ */
+ isAdditionalTargetPath(filePath) {
+ for (const { criteria, type } of this) {
+ if (
+ type === "config" &&
+ criteria &&
+ !criteria.endsWithWildcard &&
+ criteria.test(filePath)
+ ) {
+ return true;
+ }
+ }
+ return false;
+ }
+}
+
+/**
+ * Get the used extracted configs.
+ * CLIEngine will use this method to collect used deprecated rules.
+ * @param {ConfigArray} instance The config array object to get.
+ * @returns {ExtractedConfig[]} The used extracted configs.
+ * @private
+ */
+function getUsedExtractedConfigs(instance) {
+ const { cache } = internalSlotsMap.get(instance);
+
+ return Array.from(cache.values());
+}
+
+
+export {
+ ConfigArray,
+ getUsedExtractedConfigs
+};
diff --git a/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint/eslintrc/lib/config-array/config-dependency.js b/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint/eslintrc/lib/config-array/config-dependency.js
new file mode 100644
index 0000000..2883c3a
--- /dev/null
+++ b/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint/eslintrc/lib/config-array/config-dependency.js
@@ -0,0 +1,115 @@
+/**
+ * @fileoverview `ConfigDependency` class.
+ *
+ * `ConfigDependency` class expresses a loaded parser or plugin.
+ *
+ * If the parser or plugin was loaded successfully, it has `definition` property
+ * and `filePath` property. Otherwise, it has `error` property.
+ *
+ * When `JSON.stringify()` converted a `ConfigDependency` object to a JSON, it
+ * omits `definition` property.
+ *
+ * `ConfigArrayFactory` creates `ConfigDependency` objects when it loads parsers
+ * or plugins.
+ *
+ * @author Toru Nagashima
+ */
+
+import util from "util";
+
+/**
+ * The class is to store parsers or plugins.
+ * This class hides the loaded object from `JSON.stringify()` and `console.log`.
+ * @template T
+ */
+class ConfigDependency {
+
+ /**
+ * Initialize this instance.
+ * @param {Object} data The dependency data.
+ * @param {T} [data.definition] The dependency if the loading succeeded.
+ * @param {Error} [data.error] The error object if the loading failed.
+ * @param {string} [data.filePath] The actual path to the dependency if the loading succeeded.
+ * @param {string} data.id The ID of this dependency.
+ * @param {string} data.importerName The name of the config file which loads this dependency.
+ * @param {string} data.importerPath The path to the config file which loads this dependency.
+ */
+ constructor({
+ definition = null,
+ error = null,
+ filePath = null,
+ id,
+ importerName,
+ importerPath
+ }) {
+
+ /**
+ * The loaded dependency if the loading succeeded.
+ * @type {T|null}
+ */
+ this.definition = definition;
+
+ /**
+ * The error object if the loading failed.
+ * @type {Error|null}
+ */
+ this.error = error;
+
+ /**
+ * The loaded dependency if the loading succeeded.
+ * @type {string|null}
+ */
+ this.filePath = filePath;
+
+ /**
+ * The ID of this dependency.
+ * @type {string}
+ */
+ this.id = id;
+
+ /**
+ * The name of the config file which loads this dependency.
+ * @type {string}
+ */
+ this.importerName = importerName;
+
+ /**
+ * The path to the config file which loads this dependency.
+ * @type {string}
+ */
+ this.importerPath = importerPath;
+ }
+
+ // eslint-disable-next-line jsdoc/require-description
+ /**
+ * @returns {Object} a JSON compatible object.
+ */
+ toJSON() {
+ const obj = this[util.inspect.custom]();
+
+ // Display `error.message` (`Error#message` is unenumerable).
+ if (obj.error instanceof Error) {
+ obj.error = { ...obj.error, message: obj.error.message };
+ }
+
+ return obj;
+ }
+
+ // eslint-disable-next-line jsdoc/require-description
+ /**
+ * @returns {Object} an object to display by `console.log()`.
+ */
+ [util.inspect.custom]() {
+ const {
+ definition: _ignore, // eslint-disable-line no-unused-vars
+ ...obj
+ } = this;
+
+ return obj;
+ }
+}
+
+/** @typedef {ConfigDependency} DependentParser */
+/** @typedef {ConfigDependency} DependentPlugin */
+
+export { ConfigDependency };
diff --git a/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint/eslintrc/lib/config-array/extracted-config.js b/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint/eslintrc/lib/config-array/extracted-config.js
new file mode 100644
index 0000000..e93b0b6
--- /dev/null
+++ b/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint/eslintrc/lib/config-array/extracted-config.js
@@ -0,0 +1,145 @@
+/**
+ * @fileoverview `ExtractedConfig` class.
+ *
+ * `ExtractedConfig` class expresses a final configuration for a specific file.
+ *
+ * It provides one method.
+ *
+ * - `toCompatibleObjectAsConfigFileContent()`
+ * Convert this configuration to the compatible object as the content of
+ * config files. It converts the loaded parser and plugins to strings.
+ * `CLIEngine#getConfigForFile(filePath)` method uses this method.
+ *
+ * `ConfigArray#extractConfig(filePath)` creates a `ExtractedConfig` instance.
+ *
+ * @author Toru Nagashima
+ */
+
+import { IgnorePattern } from "./ignore-pattern.js";
+
+// For VSCode intellisense
+/** @typedef {import("../../shared/types").ConfigData} ConfigData */
+/** @typedef {import("../../shared/types").GlobalConf} GlobalConf */
+/** @typedef {import("../../shared/types").SeverityConf} SeverityConf */
+/** @typedef {import("./config-dependency").DependentParser} DependentParser */
+/** @typedef {import("./config-dependency").DependentPlugin} DependentPlugin */
+
+/**
+ * Check if `xs` starts with `ys`.
+ * @template T
+ * @param {T[]} xs The array to check.
+ * @param {T[]} ys The array that may be the first part of `xs`.
+ * @returns {boolean} `true` if `xs` starts with `ys`.
+ */
+function startsWith(xs, ys) {
+ return xs.length >= ys.length && ys.every((y, i) => y === xs[i]);
+}
+
+/**
+ * The class for extracted config data.
+ */
+class ExtractedConfig {
+ constructor() {
+
+ /**
+ * The config name what `noInlineConfig` setting came from.
+ * @type {string}
+ */
+ this.configNameOfNoInlineConfig = "";
+
+ /**
+ * Environments.
+ * @type {Record}
+ */
+ this.env = {};
+
+ /**
+ * Global variables.
+ * @type {Record}
+ */
+ this.globals = {};
+
+ /**
+ * The glob patterns that ignore to lint.
+ * @type {(((filePath:string, dot?:boolean) => boolean) & { basePath:string; patterns:string[] }) | undefined}
+ */
+ this.ignores = void 0;
+
+ /**
+ * The flag that disables directive comments.
+ * @type {boolean|undefined}
+ */
+ this.noInlineConfig = void 0;
+
+ /**
+ * Parser definition.
+ * @type {DependentParser|null}
+ */
+ this.parser = null;
+
+ /**
+ * Options for the parser.
+ * @type {Object}
+ */
+ this.parserOptions = {};
+
+ /**
+ * Plugin definitions.
+ * @type {Record}
+ */
+ this.plugins = {};
+
+ /**
+ * Processor ID.
+ * @type {string|null}
+ */
+ this.processor = null;
+
+ /**
+ * The flag that reports unused `eslint-disable` directive comments.
+ * @type {boolean|undefined}
+ */
+ this.reportUnusedDisableDirectives = void 0;
+
+ /**
+ * Rule settings.
+ * @type {Record}
+ */
+ this.rules = {};
+
+ /**
+ * Shared settings.
+ * @type {Object}
+ */
+ this.settings = {};
+ }
+
+ /**
+ * Convert this config to the compatible object as a config file content.
+ * @returns {ConfigData} The converted object.
+ */
+ toCompatibleObjectAsConfigFileContent() {
+ const {
+ /* eslint-disable no-unused-vars */
+ configNameOfNoInlineConfig: _ignore1,
+ processor: _ignore2,
+ /* eslint-enable no-unused-vars */
+ ignores,
+ ...config
+ } = this;
+
+ config.parser = config.parser && config.parser.filePath;
+ config.plugins = Object.keys(config.plugins).filter(Boolean).reverse();
+ config.ignorePatterns = ignores ? ignores.patterns : [];
+
+ // Strip the default patterns from `ignorePatterns`.
+ if (startsWith(config.ignorePatterns, IgnorePattern.DefaultPatterns)) {
+ config.ignorePatterns =
+ config.ignorePatterns.slice(IgnorePattern.DefaultPatterns.length);
+ }
+
+ return config;
+ }
+}
+
+export { ExtractedConfig };
diff --git a/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint/eslintrc/lib/config-array/ignore-pattern.js b/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint/eslintrc/lib/config-array/ignore-pattern.js
new file mode 100644
index 0000000..3022ba9
--- /dev/null
+++ b/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint/eslintrc/lib/config-array/ignore-pattern.js
@@ -0,0 +1,238 @@
+/**
+ * @fileoverview `IgnorePattern` class.
+ *
+ * `IgnorePattern` class has the set of glob patterns and the base path.
+ *
+ * It provides two static methods.
+ *
+ * - `IgnorePattern.createDefaultIgnore(cwd)`
+ * Create the default predicate function.
+ * - `IgnorePattern.createIgnore(ignorePatterns)`
+ * Create the predicate function from multiple `IgnorePattern` objects.
+ *
+ * It provides two properties and a method.
+ *
+ * - `patterns`
+ * The glob patterns that ignore to lint.
+ * - `basePath`
+ * The base path of the glob patterns. If absolute paths existed in the
+ * glob patterns, those are handled as relative paths to the base path.
+ * - `getPatternsRelativeTo(basePath)`
+ * Get `patterns` as modified for a given base path. It modifies the
+ * absolute paths in the patterns as prepending the difference of two base
+ * paths.
+ *
+ * `ConfigArrayFactory` creates `IgnorePattern` objects when it processes
+ * `ignorePatterns` properties.
+ *
+ * @author Toru Nagashima
+ */
+
+//------------------------------------------------------------------------------
+// Requirements
+//------------------------------------------------------------------------------
+
+import assert from "assert";
+import path from "path";
+import ignore from "ignore";
+import debugOrig from "debug";
+
+const debug = debugOrig("eslintrc:ignore-pattern");
+
+/** @typedef {ReturnType} Ignore */
+
+//------------------------------------------------------------------------------
+// Helpers
+//------------------------------------------------------------------------------
+
+/**
+ * Get the path to the common ancestor directory of given paths.
+ * @param {string[]} sourcePaths The paths to calculate the common ancestor.
+ * @returns {string} The path to the common ancestor directory.
+ */
+function getCommonAncestorPath(sourcePaths) {
+ let result = sourcePaths[0];
+
+ for (let i = 1; i < sourcePaths.length; ++i) {
+ const a = result;
+ const b = sourcePaths[i];
+
+ // Set the shorter one (it's the common ancestor if one includes the other).
+ result = a.length < b.length ? a : b;
+
+ // Set the common ancestor.
+ for (let j = 0, lastSepPos = 0; j < a.length && j < b.length; ++j) {
+ if (a[j] !== b[j]) {
+ result = a.slice(0, lastSepPos);
+ break;
+ }
+ if (a[j] === path.sep) {
+ lastSepPos = j;
+ }
+ }
+ }
+
+ let resolvedResult = result || path.sep;
+
+ // if Windows common ancestor is root of drive must have trailing slash to be absolute.
+ if (resolvedResult && resolvedResult.endsWith(":") && process.platform === "win32") {
+ resolvedResult += path.sep;
+ }
+ return resolvedResult;
+}
+
+/**
+ * Make relative path.
+ * @param {string} from The source path to get relative path.
+ * @param {string} to The destination path to get relative path.
+ * @returns {string} The relative path.
+ */
+function relative(from, to) {
+ const relPath = path.relative(from, to);
+
+ if (path.sep === "/") {
+ return relPath;
+ }
+ return relPath.split(path.sep).join("/");
+}
+
+/**
+ * Get the trailing slash if existed.
+ * @param {string} filePath The path to check.
+ * @returns {string} The trailing slash if existed.
+ */
+function dirSuffix(filePath) {
+ const isDir = (
+ filePath.endsWith(path.sep) ||
+ (process.platform === "win32" && filePath.endsWith("/"))
+ );
+
+ return isDir ? "/" : "";
+}
+
+const DefaultPatterns = Object.freeze(["/**/node_modules/*"]);
+const DotPatterns = Object.freeze([".*", "!.eslintrc.*", "!../"]);
+
+//------------------------------------------------------------------------------
+// Public
+//------------------------------------------------------------------------------
+
+class IgnorePattern {
+
+ /**
+ * The default patterns.
+ * @type {string[]}
+ */
+ static get DefaultPatterns() {
+ return DefaultPatterns;
+ }
+
+ /**
+ * Create the default predicate function.
+ * @param {string} cwd The current working directory.
+ * @returns {((filePath:string, dot:boolean) => boolean) & {basePath:string; patterns:string[]}}
+ * The preficate function.
+ * The first argument is an absolute path that is checked.
+ * The second argument is the flag to not ignore dotfiles.
+ * If the predicate function returned `true`, it means the path should be ignored.
+ */
+ static createDefaultIgnore(cwd) {
+ return this.createIgnore([new IgnorePattern(DefaultPatterns, cwd)]);
+ }
+
+ /**
+ * Create the predicate function from multiple `IgnorePattern` objects.
+ * @param {IgnorePattern[]} ignorePatterns The list of ignore patterns.
+ * @returns {((filePath:string, dot?:boolean) => boolean) & {basePath:string; patterns:string[]}}
+ * The preficate function.
+ * The first argument is an absolute path that is checked.
+ * The second argument is the flag to not ignore dotfiles.
+ * If the predicate function returned `true`, it means the path should be ignored.
+ */
+ static createIgnore(ignorePatterns) {
+ debug("Create with: %o", ignorePatterns);
+
+ const basePath = getCommonAncestorPath(ignorePatterns.map(p => p.basePath));
+ const patterns = [].concat(
+ ...ignorePatterns.map(p => p.getPatternsRelativeTo(basePath))
+ );
+ const ig = ignore({ allowRelativePaths: true }).add([...DotPatterns, ...patterns]);
+ const dotIg = ignore({ allowRelativePaths: true }).add(patterns);
+
+ debug(" processed: %o", { basePath, patterns });
+
+ return Object.assign(
+ (filePath, dot = false) => {
+ assert(path.isAbsolute(filePath), "'filePath' should be an absolute path.");
+ const relPathRaw = relative(basePath, filePath);
+ const relPath = relPathRaw && (relPathRaw + dirSuffix(filePath));
+ const adoptedIg = dot ? dotIg : ig;
+ const result = relPath !== "" && adoptedIg.ignores(relPath);
+
+ debug("Check", { filePath, dot, relativePath: relPath, result });
+ return result;
+ },
+ { basePath, patterns }
+ );
+ }
+
+ /**
+ * Initialize a new `IgnorePattern` instance.
+ * @param {string[]} patterns The glob patterns that ignore to lint.
+ * @param {string} basePath The base path of `patterns`.
+ */
+ constructor(patterns, basePath) {
+ assert(path.isAbsolute(basePath), "'basePath' should be an absolute path.");
+
+ /**
+ * The glob patterns that ignore to lint.
+ * @type {string[]}
+ */
+ this.patterns = patterns;
+
+ /**
+ * The base path of `patterns`.
+ * @type {string}
+ */
+ this.basePath = basePath;
+
+ /**
+ * If `true` then patterns which don't start with `/` will match the paths to the outside of `basePath`. Defaults to `false`.
+ *
+ * It's set `true` for `.eslintignore`, `package.json`, and `--ignore-path` for backward compatibility.
+ * It's `false` as-is for `ignorePatterns` property in config files.
+ * @type {boolean}
+ */
+ this.loose = false;
+ }
+
+ /**
+ * Get `patterns` as modified for a given base path. It modifies the
+ * absolute paths in the patterns as prepending the difference of two base
+ * paths.
+ * @param {string} newBasePath The base path.
+ * @returns {string[]} Modifired patterns.
+ */
+ getPatternsRelativeTo(newBasePath) {
+ assert(path.isAbsolute(newBasePath), "'newBasePath' should be an absolute path.");
+ const { basePath, loose, patterns } = this;
+
+ if (newBasePath === basePath) {
+ return patterns;
+ }
+ const prefix = `/${relative(newBasePath, basePath)}`;
+
+ return patterns.map(pattern => {
+ const negative = pattern.startsWith("!");
+ const head = negative ? "!" : "";
+ const body = negative ? pattern.slice(1) : pattern;
+
+ if (body.startsWith("/") || body.startsWith("../")) {
+ return `${head}${prefix}${body}`;
+ }
+ return loose ? pattern : `${head}${prefix}/**/${body}`;
+ });
+ }
+}
+
+export { IgnorePattern };
diff --git a/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint/eslintrc/lib/config-array/index.js b/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint/eslintrc/lib/config-array/index.js
new file mode 100644
index 0000000..647f02b
--- /dev/null
+++ b/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint/eslintrc/lib/config-array/index.js
@@ -0,0 +1,19 @@
+/**
+ * @fileoverview `ConfigArray` class.
+ * @author Toru Nagashima
+ */
+
+import { ConfigArray, getUsedExtractedConfigs } from "./config-array.js";
+import { ConfigDependency } from "./config-dependency.js";
+import { ExtractedConfig } from "./extracted-config.js";
+import { IgnorePattern } from "./ignore-pattern.js";
+import { OverrideTester } from "./override-tester.js";
+
+export {
+ ConfigArray,
+ ConfigDependency,
+ ExtractedConfig,
+ IgnorePattern,
+ OverrideTester,
+ getUsedExtractedConfigs
+};
diff --git a/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint/eslintrc/lib/config-array/override-tester.js b/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint/eslintrc/lib/config-array/override-tester.js
new file mode 100644
index 0000000..460aafc
--- /dev/null
+++ b/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint/eslintrc/lib/config-array/override-tester.js
@@ -0,0 +1,225 @@
+/**
+ * @fileoverview `OverrideTester` class.
+ *
+ * `OverrideTester` class handles `files` property and `excludedFiles` property
+ * of `overrides` config.
+ *
+ * It provides one method.
+ *
+ * - `test(filePath)`
+ * Test if a file path matches the pair of `files` property and
+ * `excludedFiles` property. The `filePath` argument must be an absolute
+ * path.
+ *
+ * `ConfigArrayFactory` creates `OverrideTester` objects when it processes
+ * `overrides` properties.
+ *
+ * @author Toru Nagashima
+ */
+
+import assert from "assert";
+import path from "path";
+import util from "util";
+import minimatch from "minimatch";
+
+const { Minimatch } = minimatch;
+
+const minimatchOpts = { dot: true, matchBase: true };
+
+/**
+ * @typedef {Object} Pattern
+ * @property {InstanceType[] | null} includes The positive matchers.
+ * @property {InstanceType[] | null} excludes The negative matchers.
+ */
+
+/**
+ * Normalize a given pattern to an array.
+ * @param {string|string[]|undefined} patterns A glob pattern or an array of glob patterns.
+ * @returns {string[]|null} Normalized patterns.
+ * @private
+ */
+function normalizePatterns(patterns) {
+ if (Array.isArray(patterns)) {
+ return patterns.filter(Boolean);
+ }
+ if (typeof patterns === "string" && patterns) {
+ return [patterns];
+ }
+ return [];
+}
+
+/**
+ * Create the matchers of given patterns.
+ * @param {string[]} patterns The patterns.
+ * @returns {InstanceType[] | null} The matchers.
+ */
+function toMatcher(patterns) {
+ if (patterns.length === 0) {
+ return null;
+ }
+ return patterns.map(pattern => {
+ if (/^\.[/\\]/u.test(pattern)) {
+ return new Minimatch(
+ pattern.slice(2),
+
+ // `./*.js` should not match with `subdir/foo.js`
+ { ...minimatchOpts, matchBase: false }
+ );
+ }
+ return new Minimatch(pattern, minimatchOpts);
+ });
+}
+
+/**
+ * Convert a given matcher to string.
+ * @param {Pattern} matchers The matchers.
+ * @returns {string} The string expression of the matcher.
+ */
+function patternToJson({ includes, excludes }) {
+ return {
+ includes: includes && includes.map(m => m.pattern),
+ excludes: excludes && excludes.map(m => m.pattern)
+ };
+}
+
+/**
+ * The class to test given paths are matched by the patterns.
+ */
+class OverrideTester {
+
+ /**
+ * Create a tester with given criteria.
+ * If there are no criteria, returns `null`.
+ * @param {string|string[]} files The glob patterns for included files.
+ * @param {string|string[]} excludedFiles The glob patterns for excluded files.
+ * @param {string} basePath The path to the base directory to test paths.
+ * @returns {OverrideTester|null} The created instance or `null`.
+ */
+ static create(files, excludedFiles, basePath) {
+ const includePatterns = normalizePatterns(files);
+ const excludePatterns = normalizePatterns(excludedFiles);
+ let endsWithWildcard = false;
+
+ if (includePatterns.length === 0) {
+ return null;
+ }
+
+ // Rejects absolute paths or relative paths to parents.
+ for (const pattern of includePatterns) {
+ if (path.isAbsolute(pattern) || pattern.includes("..")) {
+ throw new Error(`Invalid override pattern (expected relative path not containing '..'): ${pattern}`);
+ }
+ if (pattern.endsWith("*")) {
+ endsWithWildcard = true;
+ }
+ }
+ for (const pattern of excludePatterns) {
+ if (path.isAbsolute(pattern) || pattern.includes("..")) {
+ throw new Error(`Invalid override pattern (expected relative path not containing '..'): ${pattern}`);
+ }
+ }
+
+ const includes = toMatcher(includePatterns);
+ const excludes = toMatcher(excludePatterns);
+
+ return new OverrideTester(
+ [{ includes, excludes }],
+ basePath,
+ endsWithWildcard
+ );
+ }
+
+ /**
+ * Combine two testers by logical and.
+ * If either of the testers was `null`, returns the other tester.
+ * The `basePath` property of the two must be the same value.
+ * @param {OverrideTester|null} a A tester.
+ * @param {OverrideTester|null} b Another tester.
+ * @returns {OverrideTester|null} Combined tester.
+ */
+ static and(a, b) {
+ if (!b) {
+ return a && new OverrideTester(
+ a.patterns,
+ a.basePath,
+ a.endsWithWildcard
+ );
+ }
+ if (!a) {
+ return new OverrideTester(
+ b.patterns,
+ b.basePath,
+ b.endsWithWildcard
+ );
+ }
+
+ assert.strictEqual(a.basePath, b.basePath);
+ return new OverrideTester(
+ a.patterns.concat(b.patterns),
+ a.basePath,
+ a.endsWithWildcard || b.endsWithWildcard
+ );
+ }
+
+ /**
+ * Initialize this instance.
+ * @param {Pattern[]} patterns The matchers.
+ * @param {string} basePath The base path.
+ * @param {boolean} endsWithWildcard If `true` then a pattern ends with `*`.
+ */
+ constructor(patterns, basePath, endsWithWildcard = false) {
+
+ /** @type {Pattern[]} */
+ this.patterns = patterns;
+
+ /** @type {string} */
+ this.basePath = basePath;
+
+ /** @type {boolean} */
+ this.endsWithWildcard = endsWithWildcard;
+ }
+
+ /**
+ * Test if a given path is matched or not.
+ * @param {string} filePath The absolute path to the target file.
+ * @returns {boolean} `true` if the path was matched.
+ */
+ test(filePath) {
+ if (typeof filePath !== "string" || !path.isAbsolute(filePath)) {
+ throw new Error(`'filePath' should be an absolute path, but got ${filePath}.`);
+ }
+ const relativePath = path.relative(this.basePath, filePath);
+
+ return this.patterns.every(({ includes, excludes }) => (
+ (!includes || includes.some(m => m.match(relativePath))) &&
+ (!excludes || !excludes.some(m => m.match(relativePath)))
+ ));
+ }
+
+ // eslint-disable-next-line jsdoc/require-description
+ /**
+ * @returns {Object} a JSON compatible object.
+ */
+ toJSON() {
+ if (this.patterns.length === 1) {
+ return {
+ ...patternToJson(this.patterns[0]),
+ basePath: this.basePath
+ };
+ }
+ return {
+ AND: this.patterns.map(patternToJson),
+ basePath: this.basePath
+ };
+ }
+
+ // eslint-disable-next-line jsdoc/require-description
+ /**
+ * @returns {Object} an object to display by `console.log()`.
+ */
+ [util.inspect.custom]() {
+ return this.toJSON();
+ }
+}
+
+export { OverrideTester };
diff --git a/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint/eslintrc/lib/flat-compat.js b/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint/eslintrc/lib/flat-compat.js
new file mode 100644
index 0000000..e0d7ab6
--- /dev/null
+++ b/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint/eslintrc/lib/flat-compat.js
@@ -0,0 +1,318 @@
+/**
+ * @fileoverview Compatibility class for flat config.
+ * @author Nicholas C. Zakas
+ */
+
+//-----------------------------------------------------------------------------
+// Requirements
+//-----------------------------------------------------------------------------
+
+import createDebug from "debug";
+import path from "path";
+
+import environments from "../conf/environments.js";
+import { ConfigArrayFactory } from "./config-array-factory.js";
+
+//-----------------------------------------------------------------------------
+// Helpers
+//-----------------------------------------------------------------------------
+
+/** @typedef {import("../../shared/types").Environment} Environment */
+/** @typedef {import("../../shared/types").Processor} Processor */
+
+const debug = createDebug("eslintrc:flat-compat");
+const cafactory = Symbol("cafactory");
+
+/**
+ * Translates an ESLintRC-style config object into a flag-config-style config
+ * object.
+ * @param {Object} eslintrcConfig An ESLintRC-style config object.
+ * @param {Object} options Options to help translate the config.
+ * @param {string} options.resolveConfigRelativeTo To the directory to resolve
+ * configs from.
+ * @param {string} options.resolvePluginsRelativeTo The directory to resolve
+ * plugins from.
+ * @param {ReadOnlyMap} options.pluginEnvironments A map of plugin environment
+ * names to objects.
+ * @param {ReadOnlyMap} options.pluginProcessors A map of plugin processor
+ * names to objects.
+ * @returns {Object} A flag-config-style config object.
+ */
+function translateESLintRC(eslintrcConfig, {
+ resolveConfigRelativeTo,
+ resolvePluginsRelativeTo,
+ pluginEnvironments,
+ pluginProcessors
+}) {
+
+ const flatConfig = {};
+ const configs = [];
+ const languageOptions = {};
+ const linterOptions = {};
+ const keysToCopy = ["settings", "rules", "processor"];
+ const languageOptionsKeysToCopy = ["globals", "parser", "parserOptions"];
+ const linterOptionsKeysToCopy = ["noInlineConfig", "reportUnusedDisableDirectives"];
+
+ // copy over simple translations
+ for (const key of keysToCopy) {
+ if (key in eslintrcConfig && typeof eslintrcConfig[key] !== "undefined") {
+ flatConfig[key] = eslintrcConfig[key];
+ }
+ }
+
+ // copy over languageOptions
+ for (const key of languageOptionsKeysToCopy) {
+ if (key in eslintrcConfig && typeof eslintrcConfig[key] !== "undefined") {
+
+ // create the languageOptions key in the flat config
+ flatConfig.languageOptions = languageOptions;
+
+ if (key === "parser") {
+ debug(`Resolving parser '${languageOptions[key]}' relative to ${resolveConfigRelativeTo}`);
+
+ if (eslintrcConfig[key].error) {
+ throw eslintrcConfig[key].error;
+ }
+
+ languageOptions[key] = eslintrcConfig[key].definition;
+ continue;
+ }
+
+ // clone any object values that are in the eslintrc config
+ if (eslintrcConfig[key] && typeof eslintrcConfig[key] === "object") {
+ languageOptions[key] = {
+ ...eslintrcConfig[key]
+ };
+ } else {
+ languageOptions[key] = eslintrcConfig[key];
+ }
+ }
+ }
+
+ // copy over linterOptions
+ for (const key of linterOptionsKeysToCopy) {
+ if (key in eslintrcConfig && typeof eslintrcConfig[key] !== "undefined") {
+ flatConfig.linterOptions = linterOptions;
+ linterOptions[key] = eslintrcConfig[key];
+ }
+ }
+
+ // move ecmaVersion a level up
+ if (languageOptions.parserOptions) {
+
+ if ("ecmaVersion" in languageOptions.parserOptions) {
+ languageOptions.ecmaVersion = languageOptions.parserOptions.ecmaVersion;
+ delete languageOptions.parserOptions.ecmaVersion;
+ }
+
+ if ("sourceType" in languageOptions.parserOptions) {
+ languageOptions.sourceType = languageOptions.parserOptions.sourceType;
+ delete languageOptions.parserOptions.sourceType;
+ }
+
+ // check to see if we even need parserOptions anymore and remove it if not
+ if (Object.keys(languageOptions.parserOptions).length === 0) {
+ delete languageOptions.parserOptions;
+ }
+ }
+
+ // overrides
+ if (eslintrcConfig.criteria) {
+ flatConfig.files = [absoluteFilePath => eslintrcConfig.criteria.test(absoluteFilePath)];
+ }
+
+ // translate plugins
+ if (eslintrcConfig.plugins && typeof eslintrcConfig.plugins === "object") {
+ debug(`Translating plugins: ${eslintrcConfig.plugins}`);
+
+ flatConfig.plugins = {};
+
+ for (const pluginName of Object.keys(eslintrcConfig.plugins)) {
+
+ debug(`Translating plugin: ${pluginName}`);
+ debug(`Resolving plugin '${pluginName} relative to ${resolvePluginsRelativeTo}`);
+
+ const { definition: plugin, error } = eslintrcConfig.plugins[pluginName];
+
+ if (error) {
+ throw error;
+ }
+
+ flatConfig.plugins[pluginName] = plugin;
+
+ // create a config for any processors
+ if (plugin.processors) {
+ for (const processorName of Object.keys(plugin.processors)) {
+ if (processorName.startsWith(".")) {
+ debug(`Assigning processor: ${pluginName}/${processorName}`);
+
+ configs.unshift({
+ files: [`**/*${processorName}`],
+ processor: pluginProcessors.get(`${pluginName}/${processorName}`)
+ });
+ }
+
+ }
+ }
+ }
+ }
+
+ // translate env - must come after plugins
+ if (eslintrcConfig.env && typeof eslintrcConfig.env === "object") {
+ for (const envName of Object.keys(eslintrcConfig.env)) {
+
+ // only add environments that are true
+ if (eslintrcConfig.env[envName]) {
+ debug(`Translating environment: ${envName}`);
+
+ if (environments.has(envName)) {
+
+ // built-in environments should be defined first
+ configs.unshift(...translateESLintRC({
+ criteria: eslintrcConfig.criteria,
+ ...environments.get(envName)
+ }, {
+ resolveConfigRelativeTo,
+ resolvePluginsRelativeTo
+ }));
+ } else if (pluginEnvironments.has(envName)) {
+
+ // if the environment comes from a plugin, it should come after the plugin config
+ configs.push(...translateESLintRC({
+ criteria: eslintrcConfig.criteria,
+ ...pluginEnvironments.get(envName)
+ }, {
+ resolveConfigRelativeTo,
+ resolvePluginsRelativeTo
+ }));
+ }
+ }
+ }
+ }
+
+ // only add if there are actually keys in the config
+ if (Object.keys(flatConfig).length > 0) {
+ configs.push(flatConfig);
+ }
+
+ return configs;
+}
+
+
+//-----------------------------------------------------------------------------
+// Exports
+//-----------------------------------------------------------------------------
+
+/**
+ * A compatibility class for working with configs.
+ */
+class FlatCompat {
+
+ constructor({
+ baseDirectory = process.cwd(),
+ resolvePluginsRelativeTo = baseDirectory,
+ recommendedConfig,
+ allConfig
+ } = {}) {
+ this.baseDirectory = baseDirectory;
+ this.resolvePluginsRelativeTo = resolvePluginsRelativeTo;
+ this[cafactory] = new ConfigArrayFactory({
+ cwd: baseDirectory,
+ resolvePluginsRelativeTo,
+ getEslintAllConfig: () => {
+
+ if (!allConfig) {
+ throw new TypeError("Missing parameter 'allConfig' in FlatCompat constructor.");
+ }
+
+ return allConfig;
+ },
+ getEslintRecommendedConfig: () => {
+
+ if (!recommendedConfig) {
+ throw new TypeError("Missing parameter 'recommendedConfig' in FlatCompat constructor.");
+ }
+
+ return recommendedConfig;
+ }
+ });
+ }
+
+ /**
+ * Translates an ESLintRC-style config into a flag-config-style config.
+ * @param {Object} eslintrcConfig The ESLintRC-style config object.
+ * @returns {Object} A flag-config-style config object.
+ */
+ config(eslintrcConfig) {
+ const eslintrcArray = this[cafactory].create(eslintrcConfig, {
+ basePath: this.baseDirectory
+ });
+
+ const flatArray = [];
+ let hasIgnorePatterns = false;
+
+ eslintrcArray.forEach(configData => {
+ if (configData.type === "config") {
+ hasIgnorePatterns = hasIgnorePatterns || configData.ignorePattern;
+ flatArray.push(...translateESLintRC(configData, {
+ resolveConfigRelativeTo: path.join(this.baseDirectory, "__placeholder.js"),
+ resolvePluginsRelativeTo: path.join(this.resolvePluginsRelativeTo, "__placeholder.js"),
+ pluginEnvironments: eslintrcArray.pluginEnvironments,
+ pluginProcessors: eslintrcArray.pluginProcessors
+ }));
+ }
+ });
+
+ // combine ignorePatterns to emulate ESLintRC behavior better
+ if (hasIgnorePatterns) {
+ flatArray.unshift({
+ ignores: [filePath => {
+
+ // Compute the final config for this file.
+ // This filters config array elements by `files`/`excludedFiles` then merges the elements.
+ const finalConfig = eslintrcArray.extractConfig(filePath);
+
+ // Test the `ignorePattern` properties of the final config.
+ return Boolean(finalConfig.ignores) && finalConfig.ignores(filePath);
+ }]
+ });
+ }
+
+ return flatArray;
+ }
+
+ /**
+ * Translates the `env` section of an ESLintRC-style config.
+ * @param {Object} envConfig The `env` section of an ESLintRC config.
+ * @returns {Object[]} An array of flag-config objects representing the environments.
+ */
+ env(envConfig) {
+ return this.config({
+ env: envConfig
+ });
+ }
+
+ /**
+ * Translates the `extends` section of an ESLintRC-style config.
+ * @param {...string} configsToExtend The names of the configs to load.
+ * @returns {Object[]} An array of flag-config objects representing the config.
+ */
+ extends(...configsToExtend) {
+ return this.config({
+ extends: configsToExtend
+ });
+ }
+
+ /**
+ * Translates the `plugins` section of an ESLintRC-style config.
+ * @param {...string} plugins The names of the plugins to load.
+ * @returns {Object[]} An array of flag-config objects representing the plugins.
+ */
+ plugins(...plugins) {
+ return this.config({
+ plugins
+ });
+ }
+}
+
+export { FlatCompat };
diff --git a/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint/eslintrc/lib/index-universal.js b/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint/eslintrc/lib/index-universal.js
new file mode 100644
index 0000000..6f6b302
--- /dev/null
+++ b/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint/eslintrc/lib/index-universal.js
@@ -0,0 +1,29 @@
+/**
+ * @fileoverview Package exports for @eslint/eslintrc
+ * @author Nicholas C. Zakas
+ */
+//------------------------------------------------------------------------------
+// Requirements
+//------------------------------------------------------------------------------
+
+import * as ConfigOps from "./shared/config-ops.js";
+import ConfigValidator from "./shared/config-validator.js";
+import * as naming from "./shared/naming.js";
+import environments from "../conf/environments.js";
+
+//-----------------------------------------------------------------------------
+// Exports
+//-----------------------------------------------------------------------------
+
+const Legacy = {
+ environments,
+
+ // shared
+ ConfigOps,
+ ConfigValidator,
+ naming
+};
+
+export {
+ Legacy
+};
diff --git a/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint/eslintrc/lib/index.js b/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint/eslintrc/lib/index.js
new file mode 100644
index 0000000..9e3d13f
--- /dev/null
+++ b/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint/eslintrc/lib/index.js
@@ -0,0 +1,56 @@
+/**
+ * @fileoverview Package exports for @eslint/eslintrc
+ * @author Nicholas C. Zakas
+ */
+//------------------------------------------------------------------------------
+// Requirements
+//------------------------------------------------------------------------------
+
+import {
+ ConfigArrayFactory,
+ createContext as createConfigArrayFactoryContext
+} from "./config-array-factory.js";
+
+import { CascadingConfigArrayFactory } from "./cascading-config-array-factory.js";
+import * as ModuleResolver from "./shared/relative-module-resolver.js";
+import { ConfigArray, getUsedExtractedConfigs } from "./config-array/index.js";
+import { ConfigDependency } from "./config-array/config-dependency.js";
+import { ExtractedConfig } from "./config-array/extracted-config.js";
+import { IgnorePattern } from "./config-array/ignore-pattern.js";
+import { OverrideTester } from "./config-array/override-tester.js";
+import * as ConfigOps from "./shared/config-ops.js";
+import ConfigValidator from "./shared/config-validator.js";
+import * as naming from "./shared/naming.js";
+import { FlatCompat } from "./flat-compat.js";
+import environments from "../conf/environments.js";
+
+//-----------------------------------------------------------------------------
+// Exports
+//-----------------------------------------------------------------------------
+
+const Legacy = {
+ ConfigArray,
+ createConfigArrayFactoryContext,
+ CascadingConfigArrayFactory,
+ ConfigArrayFactory,
+ ConfigDependency,
+ ExtractedConfig,
+ IgnorePattern,
+ OverrideTester,
+ getUsedExtractedConfigs,
+ environments,
+
+ // shared
+ ConfigOps,
+ ConfigValidator,
+ ModuleResolver,
+ naming
+};
+
+export {
+
+ Legacy,
+
+ FlatCompat
+
+};
diff --git a/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint/eslintrc/lib/shared/ajv.js b/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint/eslintrc/lib/shared/ajv.js
new file mode 100644
index 0000000..b79ad36
--- /dev/null
+++ b/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint/eslintrc/lib/shared/ajv.js
@@ -0,0 +1,191 @@
+/**
+ * @fileoverview The instance of Ajv validator.
+ * @author Evgeny Poberezkin
+ */
+
+//------------------------------------------------------------------------------
+// Requirements
+//------------------------------------------------------------------------------
+
+import Ajv from "ajv";
+
+//-----------------------------------------------------------------------------
+// Helpers
+//-----------------------------------------------------------------------------
+
+/*
+ * Copied from ajv/lib/refs/json-schema-draft-04.json
+ * The MIT License (MIT)
+ * Copyright (c) 2015-2017 Evgeny Poberezkin
+ */
+const metaSchema = {
+ id: "http://json-schema.org/draft-04/schema#",
+ $schema: "http://json-schema.org/draft-04/schema#",
+ description: "Core schema meta-schema",
+ definitions: {
+ schemaArray: {
+ type: "array",
+ minItems: 1,
+ items: { $ref: "#" }
+ },
+ positiveInteger: {
+ type: "integer",
+ minimum: 0
+ },
+ positiveIntegerDefault0: {
+ allOf: [{ $ref: "#/definitions/positiveInteger" }, { default: 0 }]
+ },
+ simpleTypes: {
+ enum: ["array", "boolean", "integer", "null", "number", "object", "string"]
+ },
+ stringArray: {
+ type: "array",
+ items: { type: "string" },
+ minItems: 1,
+ uniqueItems: true
+ }
+ },
+ type: "object",
+ properties: {
+ id: {
+ type: "string"
+ },
+ $schema: {
+ type: "string"
+ },
+ title: {
+ type: "string"
+ },
+ description: {
+ type: "string"
+ },
+ default: { },
+ multipleOf: {
+ type: "number",
+ minimum: 0,
+ exclusiveMinimum: true
+ },
+ maximum: {
+ type: "number"
+ },
+ exclusiveMaximum: {
+ type: "boolean",
+ default: false
+ },
+ minimum: {
+ type: "number"
+ },
+ exclusiveMinimum: {
+ type: "boolean",
+ default: false
+ },
+ maxLength: { $ref: "#/definitions/positiveInteger" },
+ minLength: { $ref: "#/definitions/positiveIntegerDefault0" },
+ pattern: {
+ type: "string",
+ format: "regex"
+ },
+ additionalItems: {
+ anyOf: [
+ { type: "boolean" },
+ { $ref: "#" }
+ ],
+ default: { }
+ },
+ items: {
+ anyOf: [
+ { $ref: "#" },
+ { $ref: "#/definitions/schemaArray" }
+ ],
+ default: { }
+ },
+ maxItems: { $ref: "#/definitions/positiveInteger" },
+ minItems: { $ref: "#/definitions/positiveIntegerDefault0" },
+ uniqueItems: {
+ type: "boolean",
+ default: false
+ },
+ maxProperties: { $ref: "#/definitions/positiveInteger" },
+ minProperties: { $ref: "#/definitions/positiveIntegerDefault0" },
+ required: { $ref: "#/definitions/stringArray" },
+ additionalProperties: {
+ anyOf: [
+ { type: "boolean" },
+ { $ref: "#" }
+ ],
+ default: { }
+ },
+ definitions: {
+ type: "object",
+ additionalProperties: { $ref: "#" },
+ default: { }
+ },
+ properties: {
+ type: "object",
+ additionalProperties: { $ref: "#" },
+ default: { }
+ },
+ patternProperties: {
+ type: "object",
+ additionalProperties: { $ref: "#" },
+ default: { }
+ },
+ dependencies: {
+ type: "object",
+ additionalProperties: {
+ anyOf: [
+ { $ref: "#" },
+ { $ref: "#/definitions/stringArray" }
+ ]
+ }
+ },
+ enum: {
+ type: "array",
+ minItems: 1,
+ uniqueItems: true
+ },
+ type: {
+ anyOf: [
+ { $ref: "#/definitions/simpleTypes" },
+ {
+ type: "array",
+ items: { $ref: "#/definitions/simpleTypes" },
+ minItems: 1,
+ uniqueItems: true
+ }
+ ]
+ },
+ format: { type: "string" },
+ allOf: { $ref: "#/definitions/schemaArray" },
+ anyOf: { $ref: "#/definitions/schemaArray" },
+ oneOf: { $ref: "#/definitions/schemaArray" },
+ not: { $ref: "#" }
+ },
+ dependencies: {
+ exclusiveMaximum: ["maximum"],
+ exclusiveMinimum: ["minimum"]
+ },
+ default: { }
+};
+
+//------------------------------------------------------------------------------
+// Public Interface
+//------------------------------------------------------------------------------
+
+export default (additionalOptions = {}) => {
+ const ajv = new Ajv({
+ meta: false,
+ useDefaults: true,
+ validateSchema: false,
+ missingRefs: "ignore",
+ verbose: true,
+ schemaId: "auto",
+ ...additionalOptions
+ });
+
+ ajv.addMetaSchema(metaSchema);
+ // eslint-disable-next-line no-underscore-dangle
+ ajv._opts.defaultMeta = metaSchema.id;
+
+ return ajv;
+};
diff --git a/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint/eslintrc/lib/shared/config-ops.js b/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint/eslintrc/lib/shared/config-ops.js
new file mode 100644
index 0000000..d203be0
--- /dev/null
+++ b/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint/eslintrc/lib/shared/config-ops.js
@@ -0,0 +1,135 @@
+/**
+ * @fileoverview Config file operations. This file must be usable in the browser,
+ * so no Node-specific code can be here.
+ * @author Nicholas C. Zakas
+ */
+
+//------------------------------------------------------------------------------
+// Private
+//------------------------------------------------------------------------------
+
+const RULE_SEVERITY_STRINGS = ["off", "warn", "error"],
+ RULE_SEVERITY = RULE_SEVERITY_STRINGS.reduce((map, value, index) => {
+ map[value] = index;
+ return map;
+ }, {}),
+ VALID_SEVERITIES = [0, 1, 2, "off", "warn", "error"];
+
+//------------------------------------------------------------------------------
+// Public Interface
+//------------------------------------------------------------------------------
+
+/**
+ * Normalizes the severity value of a rule's configuration to a number
+ * @param {(number|string|[number, ...*]|[string, ...*])} ruleConfig A rule's configuration value, generally
+ * received from the user. A valid config value is either 0, 1, 2, the string "off" (treated the same as 0),
+ * the string "warn" (treated the same as 1), the string "error" (treated the same as 2), or an array
+ * whose first element is one of the above values. Strings are matched case-insensitively.
+ * @returns {(0|1|2)} The numeric severity value if the config value was valid, otherwise 0.
+ */
+function getRuleSeverity(ruleConfig) {
+ const severityValue = Array.isArray(ruleConfig) ? ruleConfig[0] : ruleConfig;
+
+ if (severityValue === 0 || severityValue === 1 || severityValue === 2) {
+ return severityValue;
+ }
+
+ if (typeof severityValue === "string") {
+ return RULE_SEVERITY[severityValue.toLowerCase()] || 0;
+ }
+
+ return 0;
+}
+
+/**
+ * Converts old-style severity settings (0, 1, 2) into new-style
+ * severity settings (off, warn, error) for all rules. Assumption is that severity
+ * values have already been validated as correct.
+ * @param {Object} config The config object to normalize.
+ * @returns {void}
+ */
+function normalizeToStrings(config) {
+
+ if (config.rules) {
+ Object.keys(config.rules).forEach(ruleId => {
+ const ruleConfig = config.rules[ruleId];
+
+ if (typeof ruleConfig === "number") {
+ config.rules[ruleId] = RULE_SEVERITY_STRINGS[ruleConfig] || RULE_SEVERITY_STRINGS[0];
+ } else if (Array.isArray(ruleConfig) && typeof ruleConfig[0] === "number") {
+ ruleConfig[0] = RULE_SEVERITY_STRINGS[ruleConfig[0]] || RULE_SEVERITY_STRINGS[0];
+ }
+ });
+ }
+}
+
+/**
+ * Determines if the severity for the given rule configuration represents an error.
+ * @param {int|string|Array} ruleConfig The configuration for an individual rule.
+ * @returns {boolean} True if the rule represents an error, false if not.
+ */
+function isErrorSeverity(ruleConfig) {
+ return getRuleSeverity(ruleConfig) === 2;
+}
+
+/**
+ * Checks whether a given config has valid severity or not.
+ * @param {number|string|Array} ruleConfig The configuration for an individual rule.
+ * @returns {boolean} `true` if the configuration has valid severity.
+ */
+function isValidSeverity(ruleConfig) {
+ let severity = Array.isArray(ruleConfig) ? ruleConfig[0] : ruleConfig;
+
+ if (typeof severity === "string") {
+ severity = severity.toLowerCase();
+ }
+ return VALID_SEVERITIES.indexOf(severity) !== -1;
+}
+
+/**
+ * Checks whether every rule of a given config has valid severity or not.
+ * @param {Object} config The configuration for rules.
+ * @returns {boolean} `true` if the configuration has valid severity.
+ */
+function isEverySeverityValid(config) {
+ return Object.keys(config).every(ruleId => isValidSeverity(config[ruleId]));
+}
+
+/**
+ * Normalizes a value for a global in a config
+ * @param {(boolean|string|null)} configuredValue The value given for a global in configuration or in
+ * a global directive comment
+ * @returns {("readable"|"writeable"|"off")} The value normalized as a string
+ * @throws Error if global value is invalid
+ */
+function normalizeConfigGlobal(configuredValue) {
+ switch (configuredValue) {
+ case "off":
+ return "off";
+
+ case true:
+ case "true":
+ case "writeable":
+ case "writable":
+ return "writable";
+
+ case null:
+ case false:
+ case "false":
+ case "readable":
+ case "readonly":
+ return "readonly";
+
+ default:
+ throw new Error(`'${configuredValue}' is not a valid configuration for a global (use 'readonly', 'writable', or 'off')`);
+ }
+}
+
+export {
+ getRuleSeverity,
+ normalizeToStrings,
+ isErrorSeverity,
+ isValidSeverity,
+ isEverySeverityValid,
+ normalizeConfigGlobal
+};
diff --git a/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint/eslintrc/lib/shared/config-validator.js b/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint/eslintrc/lib/shared/config-validator.js
new file mode 100644
index 0000000..32174a5
--- /dev/null
+++ b/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint/eslintrc/lib/shared/config-validator.js
@@ -0,0 +1,325 @@
+/**
+ * @fileoverview Validates configs.
+ * @author Brandon Mills
+ */
+
+/* eslint class-methods-use-this: "off" */
+
+//------------------------------------------------------------------------------
+// Requirements
+//------------------------------------------------------------------------------
+
+import util from "util";
+import * as ConfigOps from "./config-ops.js";
+import { emitDeprecationWarning } from "./deprecation-warnings.js";
+import ajvOrig from "./ajv.js";
+import configSchema from "../../conf/config-schema.js";
+import BuiltInEnvironments from "../../conf/environments.js";
+
+const ajv = ajvOrig();
+
+const ruleValidators = new WeakMap();
+const noop = Function.prototype;
+
+//------------------------------------------------------------------------------
+// Private
+//------------------------------------------------------------------------------
+let validateSchema;
+const severityMap = {
+ error: 2,
+ warn: 1,
+ off: 0
+};
+
+const validated = new WeakSet();
+
+//-----------------------------------------------------------------------------
+// Exports
+//-----------------------------------------------------------------------------
+
+export default class ConfigValidator {
+ constructor({ builtInRules = new Map() } = {}) {
+ this.builtInRules = builtInRules;
+ }
+
+ /**
+ * Gets a complete options schema for a rule.
+ * @param {{create: Function, schema: (Array|null)}} rule A new-style rule object
+ * @returns {Object} JSON Schema for the rule's options.
+ */
+ getRuleOptionsSchema(rule) {
+ if (!rule) {
+ return null;
+ }
+
+ const schema = rule.schema || rule.meta && rule.meta.schema;
+
+ // Given a tuple of schemas, insert warning level at the beginning
+ if (Array.isArray(schema)) {
+ if (schema.length) {
+ return {
+ type: "array",
+ items: schema,
+ minItems: 0,
+ maxItems: schema.length
+ };
+ }
+ return {
+ type: "array",
+ minItems: 0,
+ maxItems: 0
+ };
+
+ }
+
+ // Given a full schema, leave it alone
+ return schema || null;
+ }
+
+ /**
+ * Validates a rule's severity and returns the severity value. Throws an error if the severity is invalid.
+ * @param {options} options The given options for the rule.
+ * @returns {number|string} The rule's severity value
+ */
+ validateRuleSeverity(options) {
+ const severity = Array.isArray(options) ? options[0] : options;
+ const normSeverity = typeof severity === "string" ? severityMap[severity.toLowerCase()] : severity;
+
+ if (normSeverity === 0 || normSeverity === 1 || normSeverity === 2) {
+ return normSeverity;
+ }
+
+ throw new Error(`\tSeverity should be one of the following: 0 = off, 1 = warn, 2 = error (you passed '${util.inspect(severity).replace(/'/gu, "\"").replace(/\n/gu, "")}').\n`);
+
+ }
+
+ /**
+ * Validates the non-severity options passed to a rule, based on its schema.
+ * @param {{create: Function}} rule The rule to validate
+ * @param {Array} localOptions The options for the rule, excluding severity
+ * @returns {void}
+ */
+ validateRuleSchema(rule, localOptions) {
+ if (!ruleValidators.has(rule)) {
+ const schema = this.getRuleOptionsSchema(rule);
+
+ if (schema) {
+ ruleValidators.set(rule, ajv.compile(schema));
+ }
+ }
+
+ const validateRule = ruleValidators.get(rule);
+
+ if (validateRule) {
+ validateRule(localOptions);
+ if (validateRule.errors) {
+ throw new Error(validateRule.errors.map(
+ error => `\tValue ${JSON.stringify(error.data)} ${error.message}.\n`
+ ).join(""));
+ }
+ }
+ }
+
+ /**
+ * Validates a rule's options against its schema.
+ * @param {{create: Function}|null} rule The rule that the config is being validated for
+ * @param {string} ruleId The rule's unique name.
+ * @param {Array|number} options The given options for the rule.
+ * @param {string|null} source The name of the configuration source to report in any errors. If null or undefined,
+ * no source is prepended to the message.
+ * @returns {void}
+ */
+ validateRuleOptions(rule, ruleId, options, source = null) {
+ try {
+ const severity = this.validateRuleSeverity(options);
+
+ if (severity !== 0) {
+ this.validateRuleSchema(rule, Array.isArray(options) ? options.slice(1) : []);
+ }
+ } catch (err) {
+ const enhancedMessage = `Configuration for rule "${ruleId}" is invalid:\n${err.message}`;
+
+ if (typeof source === "string") {
+ throw new Error(`${source}:\n\t${enhancedMessage}`);
+ } else {
+ throw new Error(enhancedMessage);
+ }
+ }
+ }
+
+ /**
+ * Validates an environment object
+ * @param {Object} environment The environment config object to validate.
+ * @param {string} source The name of the configuration source to report in any errors.
+ * @param {function(envId:string): Object} [getAdditionalEnv] A map from strings to loaded environments.
+ * @returns {void}
+ */
+ validateEnvironment(
+ environment,
+ source,
+ getAdditionalEnv = noop
+ ) {
+
+ // not having an environment is ok
+ if (!environment) {
+ return;
+ }
+
+ Object.keys(environment).forEach(id => {
+ const env = getAdditionalEnv(id) || BuiltInEnvironments.get(id) || null;
+
+ if (!env) {
+ const message = `${source}:\n\tEnvironment key "${id}" is unknown\n`;
+
+ throw new Error(message);
+ }
+ });
+ }
+
+ /**
+ * Validates a rules config object
+ * @param {Object} rulesConfig The rules config object to validate.
+ * @param {string} source The name of the configuration source to report in any errors.
+ * @param {function(ruleId:string): Object} getAdditionalRule A map from strings to loaded rules
+ * @returns {void}
+ */
+ validateRules(
+ rulesConfig,
+ source,
+ getAdditionalRule = noop
+ ) {
+ if (!rulesConfig) {
+ return;
+ }
+
+ Object.keys(rulesConfig).forEach(id => {
+ const rule = getAdditionalRule(id) || this.builtInRules.get(id) || null;
+
+ this.validateRuleOptions(rule, id, rulesConfig[id], source);
+ });
+ }
+
+ /**
+ * Validates a `globals` section of a config file
+ * @param {Object} globalsConfig The `globals` section
+ * @param {string|null} source The name of the configuration source to report in the event of an error.
+ * @returns {void}
+ */
+ validateGlobals(globalsConfig, source = null) {
+ if (!globalsConfig) {
+ return;
+ }
+
+ Object.entries(globalsConfig)
+ .forEach(([configuredGlobal, configuredValue]) => {
+ try {
+ ConfigOps.normalizeConfigGlobal(configuredValue);
+ } catch (err) {
+ throw new Error(`ESLint configuration of global '${configuredGlobal}' in ${source} is invalid:\n${err.message}`);
+ }
+ });
+ }
+
+ /**
+ * Validate `processor` configuration.
+ * @param {string|undefined} processorName The processor name.
+ * @param {string} source The name of config file.
+ * @param {function(id:string): Processor} getProcessor The getter of defined processors.
+ * @returns {void}
+ */
+ validateProcessor(processorName, source, getProcessor) {
+ if (processorName && !getProcessor(processorName)) {
+ throw new Error(`ESLint configuration of processor in '${source}' is invalid: '${processorName}' was not found.`);
+ }
+ }
+
+ /**
+ * Formats an array of schema validation errors.
+ * @param {Array} errors An array of error messages to format.
+ * @returns {string} Formatted error message
+ */
+ formatErrors(errors) {
+ return errors.map(error => {
+ if (error.keyword === "additionalProperties") {
+ const formattedPropertyPath = error.dataPath.length ? `${error.dataPath.slice(1)}.${error.params.additionalProperty}` : error.params.additionalProperty;
+
+ return `Unexpected top-level property "${formattedPropertyPath}"`;
+ }
+ if (error.keyword === "type") {
+ const formattedField = error.dataPath.slice(1);
+ const formattedExpectedType = Array.isArray(error.schema) ? error.schema.join("/") : error.schema;
+ const formattedValue = JSON.stringify(error.data);
+
+ return `Property "${formattedField}" is the wrong type (expected ${formattedExpectedType} but got \`${formattedValue}\`)`;
+ }
+
+ const field = error.dataPath[0] === "." ? error.dataPath.slice(1) : error.dataPath;
+
+ return `"${field}" ${error.message}. Value: ${JSON.stringify(error.data)}`;
+ }).map(message => `\t- ${message}.\n`).join("");
+ }
+
+ /**
+ * Validates the top level properties of the config object.
+ * @param {Object} config The config object to validate.
+ * @param {string} source The name of the configuration source to report in any errors.
+ * @returns {void}
+ */
+ validateConfigSchema(config, source = null) {
+ validateSchema = validateSchema || ajv.compile(configSchema);
+
+ if (!validateSchema(config)) {
+ throw new Error(`ESLint configuration in ${source} is invalid:\n${this.formatErrors(validateSchema.errors)}`);
+ }
+
+ if (Object.hasOwnProperty.call(config, "ecmaFeatures")) {
+ emitDeprecationWarning(source, "ESLINT_LEGACY_ECMAFEATURES");
+ }
+ }
+
+ /**
+ * Validates an entire config object.
+ * @param {Object} config The config object to validate.
+ * @param {string} source The name of the configuration source to report in any errors.
+ * @param {function(ruleId:string): Object} [getAdditionalRule] A map from strings to loaded rules.
+ * @param {function(envId:string): Object} [getAdditionalEnv] A map from strings to loaded envs.
+ * @returns {void}
+ */
+ validate(config, source, getAdditionalRule, getAdditionalEnv) {
+ this.validateConfigSchema(config, source);
+ this.validateRules(config.rules, source, getAdditionalRule);
+ this.validateEnvironment(config.env, source, getAdditionalEnv);
+ this.validateGlobals(config.globals, source);
+
+ for (const override of config.overrides || []) {
+ this.validateRules(override.rules, source, getAdditionalRule);
+ this.validateEnvironment(override.env, source, getAdditionalEnv);
+ this.validateGlobals(config.globals, source);
+ }
+ }
+
+ /**
+ * Validate config array object.
+ * @param {ConfigArray} configArray The config array to validate.
+ * @returns {void}
+ */
+ validateConfigArray(configArray) {
+ const getPluginEnv = Map.prototype.get.bind(configArray.pluginEnvironments);
+ const getPluginProcessor = Map.prototype.get.bind(configArray.pluginProcessors);
+ const getPluginRule = Map.prototype.get.bind(configArray.pluginRules);
+
+ // Validate.
+ for (const element of configArray) {
+ if (validated.has(element)) {
+ continue;
+ }
+ validated.add(element);
+
+ this.validateEnvironment(element.env, element.name, getPluginEnv);
+ this.validateGlobals(element.globals, element.name);
+ this.validateProcessor(element.processor, element.name, getPluginProcessor);
+ this.validateRules(element.rules, element.name, getPluginRule);
+ }
+ }
+
+}
diff --git a/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint/eslintrc/lib/shared/deprecation-warnings.js b/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint/eslintrc/lib/shared/deprecation-warnings.js
new file mode 100644
index 0000000..91907b1
--- /dev/null
+++ b/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint/eslintrc/lib/shared/deprecation-warnings.js
@@ -0,0 +1,63 @@
+/**
+ * @fileoverview Provide the function that emits deprecation warnings.
+ * @author Toru Nagashima
+ */
+
+//------------------------------------------------------------------------------
+// Requirements
+//------------------------------------------------------------------------------
+
+import path from "path";
+
+//------------------------------------------------------------------------------
+// Private
+//------------------------------------------------------------------------------
+
+// Defitions for deprecation warnings.
+const deprecationWarningMessages = {
+ ESLINT_LEGACY_ECMAFEATURES:
+ "The 'ecmaFeatures' config file property is deprecated and has no effect.",
+ ESLINT_PERSONAL_CONFIG_LOAD:
+ "'~/.eslintrc.*' config files have been deprecated. " +
+ "Please use a config file per project or the '--config' option.",
+ ESLINT_PERSONAL_CONFIG_SUPPRESS:
+ "'~/.eslintrc.*' config files have been deprecated. " +
+ "Please remove it or add 'root:true' to the config files in your " +
+ "projects in order to avoid loading '~/.eslintrc.*' accidentally."
+};
+
+const sourceFileErrorCache = new Set();
+
+/**
+ * Emits a deprecation warning containing a given filepath. A new deprecation warning is emitted
+ * for each unique file path, but repeated invocations with the same file path have no effect.
+ * No warnings are emitted if the `--no-deprecation` or `--no-warnings` Node runtime flags are active.
+ * @param {string} source The name of the configuration source to report the warning for.
+ * @param {string} errorCode The warning message to show.
+ * @returns {void}
+ */
+function emitDeprecationWarning(source, errorCode) {
+ const cacheKey = JSON.stringify({ source, errorCode });
+
+ if (sourceFileErrorCache.has(cacheKey)) {
+ return;
+ }
+ sourceFileErrorCache.add(cacheKey);
+
+ const rel = path.relative(process.cwd(), source);
+ const message = deprecationWarningMessages[errorCode];
+
+ process.emitWarning(
+ `${message} (found in "${rel}")`,
+ "DeprecationWarning",
+ errorCode
+ );
+}
+
+//------------------------------------------------------------------------------
+// Public Interface
+//------------------------------------------------------------------------------
+
+export {
+ emitDeprecationWarning
+};
diff --git a/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint/eslintrc/lib/shared/naming.js b/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint/eslintrc/lib/shared/naming.js
new file mode 100644
index 0000000..93df5fc
--- /dev/null
+++ b/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint/eslintrc/lib/shared/naming.js
@@ -0,0 +1,96 @@
+/**
+ * @fileoverview Common helpers for naming of plugins, formatters and configs
+ */
+
+const NAMESPACE_REGEX = /^@.*\//iu;
+
+/**
+ * Brings package name to correct format based on prefix
+ * @param {string} name The name of the package.
+ * @param {string} prefix Can be either "eslint-plugin", "eslint-config" or "eslint-formatter"
+ * @returns {string} Normalized name of the package
+ * @private
+ */
+function normalizePackageName(name, prefix) {
+ let normalizedName = name;
+
+ /**
+ * On Windows, name can come in with Windows slashes instead of Unix slashes.
+ * Normalize to Unix first to avoid errors later on.
+ * https://github.com/eslint/eslint/issues/5644
+ */
+ if (normalizedName.includes("\\")) {
+ normalizedName = normalizedName.replace(/\\/gu, "/");
+ }
+
+ if (normalizedName.charAt(0) === "@") {
+
+ /**
+ * it's a scoped package
+ * package name is the prefix, or just a username
+ */
+ const scopedPackageShortcutRegex = new RegExp(`^(@[^/]+)(?:/(?:${prefix})?)?$`, "u"),
+ scopedPackageNameRegex = new RegExp(`^${prefix}(-|$)`, "u");
+
+ if (scopedPackageShortcutRegex.test(normalizedName)) {
+ normalizedName = normalizedName.replace(scopedPackageShortcutRegex, `$1/${prefix}`);
+ } else if (!scopedPackageNameRegex.test(normalizedName.split("/")[1])) {
+
+ /**
+ * for scoped packages, insert the prefix after the first / unless
+ * the path is already @scope/eslint or @scope/eslint-xxx-yyy
+ */
+ normalizedName = normalizedName.replace(/^@([^/]+)\/(.*)$/u, `@$1/${prefix}-$2`);
+ }
+ } else if (!normalizedName.startsWith(`${prefix}-`)) {
+ normalizedName = `${prefix}-${normalizedName}`;
+ }
+
+ return normalizedName;
+}
+
+/**
+ * Removes the prefix from a fullname.
+ * @param {string} fullname The term which may have the prefix.
+ * @param {string} prefix The prefix to remove.
+ * @returns {string} The term without prefix.
+ */
+function getShorthandName(fullname, prefix) {
+ if (fullname[0] === "@") {
+ let matchResult = new RegExp(`^(@[^/]+)/${prefix}$`, "u").exec(fullname);
+
+ if (matchResult) {
+ return matchResult[1];
+ }
+
+ matchResult = new RegExp(`^(@[^/]+)/${prefix}-(.+)$`, "u").exec(fullname);
+ if (matchResult) {
+ return `${matchResult[1]}/${matchResult[2]}`;
+ }
+ } else if (fullname.startsWith(`${prefix}-`)) {
+ return fullname.slice(prefix.length + 1);
+ }
+
+ return fullname;
+}
+
+/**
+ * Gets the scope (namespace) of a term.
+ * @param {string} term The term which may have the namespace.
+ * @returns {string} The namespace of the term if it has one.
+ */
+function getNamespaceFromTerm(term) {
+ const match = term.match(NAMESPACE_REGEX);
+
+ return match ? match[0] : "";
+}
+
+//------------------------------------------------------------------------------
+// Public Interface
+//------------------------------------------------------------------------------
+
+export {
+ normalizePackageName,
+ getShorthandName,
+ getNamespaceFromTerm
+};
diff --git a/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint/eslintrc/lib/shared/relative-module-resolver.js b/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint/eslintrc/lib/shared/relative-module-resolver.js
new file mode 100644
index 0000000..1df0ca8
--- /dev/null
+++ b/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint/eslintrc/lib/shared/relative-module-resolver.js
@@ -0,0 +1,42 @@
+/**
+ * Utility for resolving a module relative to another module
+ * @author Teddy Katz
+ */
+
+import Module from "module";
+
+/*
+ * `Module.createRequire` is added in v12.2.0. It supports URL as well.
+ * We only support the case where the argument is a filepath, not a URL.
+ */
+const createRequire = Module.createRequire;
+
+/**
+ * Resolves a Node module relative to another module
+ * @param {string} moduleName The name of a Node module, or a path to a Node module.
+ * @param {string} relativeToPath An absolute path indicating the module that `moduleName` should be resolved relative to. This must be
+ * a file rather than a directory, but the file need not actually exist.
+ * @returns {string} The absolute path that would result from calling `require.resolve(moduleName)` in a file located at `relativeToPath`
+ */
+function resolve(moduleName, relativeToPath) {
+ try {
+ return createRequire(relativeToPath).resolve(moduleName);
+ } catch (error) {
+
+ // This `if` block is for older Node.js than 12.0.0. We can remove this block in the future.
+ if (
+ typeof error === "object" &&
+ error !== null &&
+ error.code === "MODULE_NOT_FOUND" &&
+ !error.requireStack &&
+ error.message.includes(moduleName)
+ ) {
+ error.message += `\nRequire stack:\n- ${relativeToPath}`;
+ }
+ throw error;
+ }
+}
+
+export {
+ resolve
+};
diff --git a/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint/eslintrc/lib/shared/types.js b/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint/eslintrc/lib/shared/types.js
new file mode 100644
index 0000000..a32c35e
--- /dev/null
+++ b/LaboratorioIV/JavaScript/Leccion05/node_modules/@eslint/eslintrc/lib/shared/types.js
@@ -0,0 +1,149 @@
+/**
+ * @fileoverview Define common types for input completion.
+ * @author Toru Nagashima
+ */
+
+/** @type {any} */
+export default {};
+
+/** @typedef {boolean | "off" | "readable" | "readonly" | "writable" | "writeable"} GlobalConf */
+/** @typedef {0 | 1 | 2 | "off" | "warn" | "error"} SeverityConf */
+/** @typedef {SeverityConf | [SeverityConf, ...any[]]} RuleConf */
+
+/**
+ * @typedef {Object} EcmaFeatures
+ * @property {boolean} [globalReturn] Enabling `return` statements at the top-level.
+ * @property {boolean} [jsx] Enabling JSX syntax.
+ * @property {boolean} [impliedStrict] Enabling strict mode always.
+ */
+
+/**
+ * @typedef {Object} ParserOptions
+ * @property {EcmaFeatures} [ecmaFeatures] The optional features.
+ * @property {3|5|6|7|8|9|10|11|12|2015|2016|2017|2018|2019|2020|2021} [ecmaVersion] The ECMAScript version (or revision number).
+ * @property {"script"|"module"} [sourceType] The source code type.
+ */
+
+/**
+ * @typedef {Object} ConfigData
+ * @property {Record} [env] The environment settings.
+ * @property {string | string[]} [extends] The path to other config files or the package name of shareable configs.
+ * @property {Record} [globals] The global variable settings.
+ * @property {string | string[]} [ignorePatterns] The glob patterns that ignore to lint.
+ * @property {boolean} [noInlineConfig] The flag that disables directive comments.
+ * @property {OverrideConfigData[]} [overrides] The override settings per kind of files.
+ * @property {string} [parser] The path to a parser or the package name of a parser.
+ * @property {ParserOptions} [parserOptions] The parser options.
+ * @property {string[]} [plugins] The plugin specifiers.
+ * @property {string} [processor] The processor specifier.
+ * @property {boolean} [reportUnusedDisableDirectives] The flag to report unused `eslint-disable` comments.
+ * @property {boolean} [root] The root flag.
+ * @property {Record} [rules] The rule settings.
+ * @property {Object} [settings] The shared settings.
+ */
+
+/**
+ * @typedef {Object} OverrideConfigData
+ * @property {Record} [env] The environment settings.
+ * @property {string | string[]} [excludedFiles] The glob pattarns for excluded files.
+ * @property {string | string[]} [extends] The path to other config files or the package name of shareable configs.
+ * @property {string | string[]} files The glob patterns for target files.
+ * @property {Record