chore(fmt): aplicar oxlint

This commit is contained in:
Sofía Maturana 2026-05-18 10:21:08 -04:00
parent fab315eece
commit e393e7d95d
18 changed files with 113 additions and 159 deletions

View file

@ -7,14 +7,10 @@
"env": { "env": {
"builtin": true "builtin": true
}, },
"ignorePatterns": [ "ignorePatterns": ["dist"],
"dist"
],
"overrides": [ "overrides": [
{ {
"files": [ "files": ["**/*.{js,jsx}"],
"**/*.{js,jsx}"
],
"rules": { "rules": {
"constructor-super": "error", "constructor-super": "error",
"for-direction": "error", "for-direction": "error",
@ -88,13 +84,11 @@
} }
] ]
}, },
"plugins": [ "plugins": ["react"],
"react"
],
"env": { "env": {
"es2020": true, "es2020": true,
"browser": true "browser": true
} }
} }
] ]
} }

View file

@ -17,9 +17,7 @@ const login = async (req, res) => {
} }
if (password.length < 6) { if (password.length < 6) {
return res return res.status(400).json({ error: "Password must be at least 6 characters" });
.status(400)
.json({ error: "Password must be at least 6 characters" });
} }
const user = await authModel.getUserByEmail(email); const user = await authModel.getUserByEmail(email);
@ -55,9 +53,7 @@ const register = async (req, res) => {
} }
if (password.length < 6) { if (password.length < 6) {
return res return res.status(400).json({ error: "Password must be at least 6 characters" });
.status(400)
.json({ error: "Password must be at least 6 characters" });
} }
const user = await authModel.getUserByEmail(email); const user = await authModel.getUserByEmail(email);

View file

@ -1,50 +1,50 @@
[ [
{ {
"desc": "La pizza napolitana, de masa tierna y delgada pero bordes altos, es la versión propia de la cocina napolitana de la pizza redonda. El término pizza napoletana, por su importancia histórica o regional, se emplea en algunas zonas como sinónimo de pizza tonda.", "desc": "La pizza napolitana, de masa tierna y delgada pero bordes altos, es la versión propia de la cocina napolitana de la pizza redonda. El término pizza napoletana, por su importancia histórica o regional, se emplea en algunas zonas como sinónimo de pizza tonda.",
"id": "p001", "id": "p001",
"img": "https://firebasestorage.googleapis.com/v0/b/apis-varias-mias.appspot.com/o/pizzeria%2Fpizza-1239077_640_cl.jpg?alt=media&token=6a9a33da-5c00-49d4-9080-784dcc87ec2c", "img": "https://firebasestorage.googleapis.com/v0/b/apis-varias-mias.appspot.com/o/pizzeria%2Fpizza-1239077_640_cl.jpg?alt=media&token=6a9a33da-5c00-49d4-9080-784dcc87ec2c",
"ingredients": ["mozzarella", "tomates", "jamón", "orégano"], "ingredients": ["mozzarella", "tomates", "jamón", "orégano"],
"name": "napolitana", "name": "napolitana",
"price": 5950 "price": 5950
}, },
{ {
"desc": "La pizza es una preparación culinaria que consiste en un pan plano, habitualmente de forma circular, elaborado con harina de trigo, levadura, agua y sal (a veces aceite de oliva) que comúnmente se cubre con salsa de tomate, queso y otros muchos ingredientes, y que se hornea a alta temperatura, tradicionalmente en un horno de leña.", "desc": "La pizza es una preparación culinaria que consiste en un pan plano, habitualmente de forma circular, elaborado con harina de trigo, levadura, agua y sal (a veces aceite de oliva) que comúnmente se cubre con salsa de tomate, queso y otros muchos ingredientes, y que se hornea a alta temperatura, tradicionalmente en un horno de leña.",
"id": "p002", "id": "p002",
"img": "https://firebasestorage.googleapis.com/v0/b/apis-varias-mias.appspot.com/o/pizzeria%2Fcheese-164872_640_com.jpg?alt=media&token=18b2b821-4d0d-43f2-a1c6-8c57bc388fab", "img": "https://firebasestorage.googleapis.com/v0/b/apis-varias-mias.appspot.com/o/pizzeria%2Fcheese-164872_640_com.jpg?alt=media&token=18b2b821-4d0d-43f2-a1c6-8c57bc388fab",
"ingredients": ["mozzarella", "tomates", "jamón", "choricillo"], "ingredients": ["mozzarella", "tomates", "jamón", "choricillo"],
"name": "española", "name": "española",
"price": 7250 "price": 7250
}, },
{ {
"desc": "La pizza es una preparación culinaria que consiste en un pan plano, habitualmente de forma circular, elaborado con harina de trigo, levadura, agua y sal (a veces aceite de oliva) que comúnmente se cubre con salsa de tomate, queso y otros muchos ingredientes, y que se hornea a alta temperatura, tradicionalmente en un horno de leña.", "desc": "La pizza es una preparación culinaria que consiste en un pan plano, habitualmente de forma circular, elaborado con harina de trigo, levadura, agua y sal (a veces aceite de oliva) que comúnmente se cubre con salsa de tomate, queso y otros muchos ingredientes, y que se hornea a alta temperatura, tradicionalmente en un horno de leña.",
"id": "p003", "id": "p003",
"img": "https://firebasestorage.googleapis.com/v0/b/apis-varias-mias.appspot.com/o/pizzeria%2Fpizza-1239077_640_com.jpg?alt=media&token=e7cde87a-08d5-4040-ac54-90f6c31eb3e3", "img": "https://firebasestorage.googleapis.com/v0/b/apis-varias-mias.appspot.com/o/pizzeria%2Fpizza-1239077_640_com.jpg?alt=media&token=e7cde87a-08d5-4040-ac54-90f6c31eb3e3",
"ingredients": ["mozzarella", "tomates", "salame", "orégano"], "ingredients": ["mozzarella", "tomates", "salame", "orégano"],
"name": "salame", "name": "salame",
"price": 5990 "price": 5990
}, },
{ {
"desc": "La pizza es una preparación culinaria que consiste en un pan plano, habitualmente de forma circular, elaborado con harina de trigo, levadura, agua y sal (a veces aceite de oliva) que comúnmente se cubre con salsa de tomate, queso y otros muchos ingredientes, y que se hornea a alta temperatura, tradicionalmente en un horno de leña.", "desc": "La pizza es una preparación culinaria que consiste en un pan plano, habitualmente de forma circular, elaborado con harina de trigo, levadura, agua y sal (a veces aceite de oliva) que comúnmente se cubre con salsa de tomate, queso y otros muchos ingredientes, y que se hornea a alta temperatura, tradicionalmente en un horno de leña.",
"id": "p004", "id": "p004",
"img": "https://firebasestorage.googleapis.com/v0/b/apis-varias-mias.appspot.com/o/pizzeria%2Fpizza-2000595_640_c.jpg?alt=media&token=61325b6e-a1e0-441e-b3b5-7335ba13e8be", "img": "https://firebasestorage.googleapis.com/v0/b/apis-varias-mias.appspot.com/o/pizzeria%2Fpizza-2000595_640_c.jpg?alt=media&token=61325b6e-a1e0-441e-b3b5-7335ba13e8be",
"ingredients": ["mozzarella", "salame", "aceitunas", "champiñones"], "ingredients": ["mozzarella", "salame", "aceitunas", "champiñones"],
"name": "cuatro estaciones", "name": "cuatro estaciones",
"price": 9590 "price": 9590
}, },
{ {
"desc": "La pizza es una preparación culinaria que consiste en un pan plano, habitualmente de forma circular, elaborado con harina de trigo, levadura, agua y sal (a veces aceite de oliva) que comúnmente se cubre con salsa de tomate, queso y otros muchos ingredientes, y que se hornea a alta temperatura, tradicionalmente en un horno de leña.", "desc": "La pizza es una preparación culinaria que consiste en un pan plano, habitualmente de forma circular, elaborado con harina de trigo, levadura, agua y sal (a veces aceite de oliva) que comúnmente se cubre con salsa de tomate, queso y otros muchos ingredientes, y que se hornea a alta temperatura, tradicionalmente en un horno de leña.",
"id": "p005", "id": "p005",
"img": "https://firebasestorage.googleapis.com/v0/b/apis-varias-mias.appspot.com/o/pizzeria%2Fpizza-salame.jpg?alt=media&token=ab3d4bf8-01f2-4810-982b-bd7fb6b517b2", "img": "https://firebasestorage.googleapis.com/v0/b/apis-varias-mias.appspot.com/o/pizzeria%2Fpizza-salame.jpg?alt=media&token=ab3d4bf8-01f2-4810-982b-bd7fb6b517b2",
"ingredients": ["mozzarella", "tomates cherry", "bacon", "orégano"], "ingredients": ["mozzarella", "tomates cherry", "bacon", "orégano"],
"name": "bacon", "name": "bacon",
"price": 6450 "price": 6450
}, },
{ {
"desc": "La pizza es una preparación culinaria que consiste en un pan plano, habitualmente de forma circular, elaborado con harina de trigo, levadura, agua y sal (a veces aceite de oliva) que comúnmente se cubre con salsa de tomate, queso y otros muchos ingredientes, y que se hornea a alta temperatura, tradicionalmente en un horno de leña.", "desc": "La pizza es una preparación culinaria que consiste en un pan plano, habitualmente de forma circular, elaborado con harina de trigo, levadura, agua y sal (a veces aceite de oliva) que comúnmente se cubre con salsa de tomate, queso y otros muchos ingredientes, y que se hornea a alta temperatura, tradicionalmente en un horno de leña.",
"id": "p006", "id": "p006",
"img": "https://firebasestorage.googleapis.com/v0/b/apis-varias-mias.appspot.com/o/pizzeria%2Fpizza-2000595_640_c.jpg?alt=media&token=61325b6e-a1e0-441e-b3b5-7335ba13e8be", "img": "https://firebasestorage.googleapis.com/v0/b/apis-varias-mias.appspot.com/o/pizzeria%2Fpizza-2000595_640_c.jpg?alt=media&token=61325b6e-a1e0-441e-b3b5-7335ba13e8be",
"ingredients": ["mozzarella", "pimientos", "pollo grillé", "orégano"], "ingredients": ["mozzarella", "pimientos", "pollo grillé", "orégano"],
"name": "pollo picante", "name": "pollo picante",
"price": 8500 "price": 8500
} }
] ]

View file

@ -1,7 +1,7 @@
[ [
{ {
"email": "test@test.com", "email": "test@test.com",
"password": "123123", "password": "123123",
"id": "UYz_2Vy9rNw7uELQ7AZ8D" "id": "UYz_2Vy9rNw7uELQ7AZ8D"
} }
] ]

View file

@ -1,24 +1,24 @@
{ {
"name": "simple-api-jwt", "name": "simple-api-jwt",
"type": "module", "version": "1.0.0",
"version": "1.0.0", "description": "",
"description": "", "keywords": [],
"main": "index.js", "license": "ISC",
"scripts": { "author": "bluuweb",
"start": "node index.js", "type": "module",
"dev": "nodemon index.js" "main": "index.js",
}, "scripts": {
"keywords": [], "start": "node index.js",
"author": "bluuweb", "dev": "nodemon index.js"
"license": "ISC", },
"dependencies": { "dependencies": {
"cors": "^2.8.5", "cors": "^2.8.5",
"dotenv": "^16.4.5", "dotenv": "^16.4.5",
"express": "^4.19.2", "express": "^4.19.2",
"jsonwebtoken": "^9.0.2", "jsonwebtoken": "^9.0.2",
"nanoid": "^5.0.6" "nanoid": "^5.0.6"
}, },
"devDependencies": { "devDependencies": {
"nodemon": "^3.1.0" "nodemon": "^3.1.0"
} }
} }

View file

@ -21,20 +21,11 @@ function App() {
<main className="pb-4"> <main className="pb-4">
<Routes> <Routes>
<Route path="/" element={<Home />} /> <Route path="/" element={<Home />} />
<Route <Route path="/login" element={token ? <Navigate to="/" /> : <Login />} />
path="/login" <Route path="/register" element={token ? <Navigate to="/" /> : <Register />} />
element={token ? <Navigate to="/" /> : <Login />}
/>
<Route
path="/register"
element={token ? <Navigate to="/" /> : <Register />}
/>
<Route path="/pizza/:id" element={<Pizza />} /> <Route path="/pizza/:id" element={<Pizza />} />
<Route path="/cart" element={<Cart />} /> <Route path="/cart" element={<Cart />} />
<Route <Route path="/profile" element={token ? <Profile /> : <Navigate to="/login" />} />
path="/profile"
element={token ? <Profile /> : <Navigate to="/login" />}
/>
<Route path="*" element={<NotFound />} /> <Route path="*" element={<NotFound />} />
</Routes> </Routes>
</main> </main>

View file

@ -1,11 +1,11 @@
nav { nav {
font-size: 1rem; font-size: 1rem;
width: 100%; width: 100%;
position: sticky; position: sticky;
top: 0; top: 0;
} }
nav button, nav button,
a { a {
--uno: "bg-none border-none hover:bg-white/20 rounded-md p-2"; --uno: "bg-none border-none hover:bg-white/20 rounded-md p-2";
} }

View file

@ -1,4 +1,4 @@
.card-pizza { .card-pizza {
--uno: "rounded-md shadow-sm bg-gray-200 flex flex-col w-128 h-fit pb-2"; --uno: "rounded-md shadow-sm bg-gray-200 flex flex-col w-128 h-fit pb-2";
overflow: hidden; overflow: hidden;
} }

View file

@ -24,20 +24,12 @@ const CardPizza = (props) => {
))} ))}
</ul> </ul>
</div> </div>
<p className="font-bold text-green-700"> <p className="font-bold text-green-700">${props.price.toLocaleString("es-CL")}</p>
${props.price.toLocaleString("es-CL")}
</p>
<div className="flex gap-4"> <div className="flex gap-4">
<Link <Link to={`/pizza/${props.id}`} className="border-black border-2 rounded-md px-4">
to={`/pizza/${props.id}`}
className="border-black border-2 rounded-md px-4"
>
Ver más Ver más
</Link> </Link>
<button <button onClick={() => addToCart(props)} className="bg-black text-white rounded-md px-4">
onClick={() => addToCart(props)}
className="bg-black text-white rounded-md px-4"
>
Añadir Añadir
</button> </button>
</div> </div>

View file

@ -12,9 +12,7 @@ const CartProvider = ({ children }) => {
setCart((cart) => { setCart((cart) => {
const pizza = cart.find((p) => p.id === pizzaToAdd.id); const pizza = cart.find((p) => p.id === pizzaToAdd.id);
if (pizza) { if (pizza) {
return cart.map((p) => return cart.map((p) => (p.id === pizzaToAdd.id ? { ...p, count: p.count + 1 } : p));
p.id === pizzaToAdd.id ? { ...p, count: p.count + 1 } : p,
);
} else { } else {
return [...cart, { ...R.omit(pizzaToAdd, ["key"]), count: 1 }]; return [...cart, { ...R.omit(pizzaToAdd, ["key"]), count: 1 }];
} }

View file

@ -41,9 +41,7 @@ const UserProvider = ({ children }) => {
setEmail(null); setEmail(null);
}; };
return ( return (
<UserContext.Provider <UserContext.Provider value={{ token, setToken, email, setEmail, login, register, logout }}>
value={{ token, setToken, email, setEmail, login, register, logout }}
>
{children} {children}
</UserContext.Provider> </UserContext.Provider>
); );

View file

@ -1,11 +1,11 @@
body { body {
margin: 0; margin: 0;
padding: 0; padding: 0;
} }
#root { #root {
display: grid; display: grid;
grid-template-columns: 1fr; grid-template-columns: 1fr;
grid-template-rows: 2rem 1fr 2rem; grid-template-rows: 2rem 1fr 2rem;
min-height: 100dvh; min-height: 100dvh;
} }

View file

@ -22,9 +22,7 @@ const Cart = () => {
<button <button
onClick={() => { onClick={() => {
setCart((cart) => setCart((cart) =>
cart.map((p) => cart.map((p) => (p.id === pizza.id ? { ...p, count: p.count + 1 } : p)),
p.id === pizza.id ? { ...p, count: p.count + 1 } : p,
),
); );
}} }}
className="bg-blue-500 px-4 text-white rounded-md" className="bg-blue-500 px-4 text-white rounded-md"
@ -36,9 +34,7 @@ const Cart = () => {
onClick={() => { onClick={() => {
setCart((cart) => setCart((cart) =>
cart cart
.map((p) => .map((p) => (p.id === pizza.id ? { ...p, count: p.count - 1 } : p))
p.id === pizza.id ? { ...p, count: p.count - 1 } : p,
)
.filter((p) => p.count > 0), .filter((p) => p.count > 0),
); );
}} }}

View file

@ -8,12 +8,8 @@ import { useNavigate } from "react-router-dom";
// Esquema de validación de login // Esquema de validación de login
const loginSchema = z.object({ const loginSchema = z.object({
user: z user: z.email({ error: "Email inválido" }).nonempty({ error: "Se requiere un email" }),
.email({ error: "Email inválido" }) password: z.string().min(6, { error: "La contraseña debe tener al menos 6 caracteres" }),
.nonempty({ error: "Se requiere un email" }),
password: z
.string()
.min(6, { error: "La contraseña debe tener al menos 6 caracteres" }),
}); });
const Login = () => { const Login = () => {

View file

@ -5,8 +5,8 @@ const NotFound = () => {
<section className="flex gap-4 flex-col w-fit"> <section className="flex gap-4 flex-col w-fit">
<h1 className="text-4xl">Error 404</h1> <h1 className="text-4xl">Error 404</h1>
<p> <p>
¿No sabes qué es eso? Significa que esta página no existe. Vamos, ¿No sabes qué es eso? Significa que esta página no existe. Vamos, volvamos a la página
volvamos a la página principal principal
</p> </p>
<Link <Link
to="/" to="/"

View file

@ -19,9 +19,7 @@ const Pizza = () => {
return pizza && !error ? ( return pizza && !error ? (
<section id="pizza"> <section id="pizza">
<h1 className="text-4xl font-bold">Pizza {pizza.name}</h1> <h1 className="text-4xl font-bold">Pizza {pizza.name}</h1>
<p className="text-green-700 font-bold text-2xl"> <p className="text-green-700 font-bold text-2xl">${pizza.price.toLocaleString("es-CL")}</p>
${pizza.price.toLocaleString("es-CL")}
</p>
<img src={pizza.img} className="rounded-md" /> <img src={pizza.img} className="rounded-md" />
<p>{pizza.desc}</p> <p>{pizza.desc}</p>
<h2 className="text-3xl">Ingredientes</h2> <h2 className="text-3xl">Ingredientes</h2>
@ -30,10 +28,7 @@ const Pizza = () => {
<li key={index}>- {i}</li> <li key={index}>- {i}</li>
))} ))}
</ul> </ul>
<button <button onClick={() => addToCart(pizza)} className="text-white bg-black p-2 rounded-md">
onClick={() => addToCart(pizza)}
className="text-white bg-black p-2 rounded-md"
>
Añadir al carrito Añadir al carrito
</button> </button>
</section> </section>

View file

@ -6,9 +6,7 @@ import { UserContext } from "../context/UserContext";
const registerSchema = z const registerSchema = z
.object({ .object({
user: z.email().nonempty({ error: "Se requiere un email" }), user: z.email().nonempty({ error: "Se requiere un email" }),
password: z password: z.string().min(6, { error: "la contraseña debe ser de al menos 6 caracteres" }),
.string()
.min(6, { error: "la contraseña debe ser de al menos 6 caracteres" }),
confirmPassword: z.string(), confirmPassword: z.string(),
}) })
.refine((data) => data.password === data.confirmPassword, { .refine((data) => data.password === data.confirmPassword, {

View file

@ -1,6 +1,6 @@
import { defineConfig, presetWind3, transformerDirectives } from "unocss"; import { defineConfig, presetWind3, transformerDirectives } from "unocss";
export default defineConfig({ export default defineConfig({
presets: [presetWind3()], presets: [presetWind3()],
transformers: [transformerDirectives()], transformers: [transformerDirectives()],
}); });