diff --git a/.env b/.env
new file mode 100644
index 0000000..6bf2637
--- /dev/null
+++ b/.env
@@ -0,0 +1,4 @@
+STRIPE_PUBLISHABLE_KEY=''
+STRIPE_ACCOUNT=''
+API_VERSION=''
+LOCALE=''
diff --git a/.gitignore b/.gitignore
index 147199f..1b4ed1a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,6 +5,7 @@ node_modules
# Quasar core related directories
.quasar
/dist
+dist.rar
/quasar.config.*.temporary.compiled*
# Cordova related directories and files
@@ -35,3 +36,4 @@ yarn-error.log*
# local .env files
.env.local*
+api/.env
diff --git a/.vscode/settings.json b/.vscode/settings.json
index 336c3a7..4ebbc22 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -74,5 +74,8 @@
"workbench.tree.indent": 16,
"window.zoomLevel": 0,
"git.ignoreRebaseWarning": true,
- "editor.largeFileOptimizations": false
+ "editor.largeFileOptimizations": false,
+ "[javascript]": {
+ "editor.defaultFormatter": "vscode.typescript-language-features"
+ }
}
diff --git a/api/.env.example b/api/.env.example
new file mode 100644
index 0000000..5418d4b
--- /dev/null
+++ b/api/.env.example
@@ -0,0 +1,5 @@
+HOST="127.0.0.1"
+DB_USER="root"
+DB_PASSWORD="root"
+PORT ="3306"
+DATABASE="floranet"
\ No newline at end of file
diff --git a/api/controller/product.controller.js b/api/controller/product.controller.js
new file mode 100644
index 0000000..67403d6
--- /dev/null
+++ b/api/controller/product.controller.js
@@ -0,0 +1,129 @@
+const db = require("../db/db");
+
+const productsJson = require("./products.json")
+
+class ProductController {
+ async findAll(req, res) {
+
+
+ const _products = await db.getProducts();
+ const mapedProducts = await _products[0].map(function (item) {
+ return {
+ id: item.id,
+ name: item.name,
+ description: item.description,
+ type: item.type,
+ price: item.size,
+ specialPrice: item.specialPrice,
+ isNew: item.isNew,
+ slug: item.slug,
+ category: item.category,
+ postalCode: item.postalCode,
+ dateExpired: item.dateExpired,
+ images: [item.image],
+ featured: item.featured,
+ }
+ })
+
+ //Gerar produtos fake
+ /* const fakeProducts = generateFlowers(50)
+ console.log(fakeProducts); */
+ const params = req.query;
+ let productsFilter = mapedProducts
+ console.log(params);
+
+ if (Number(params.featured)) {
+ productsFilter = productsFilter.filter(item => item.featured === Number(params.featured))
+ }
+ if (params.category) {
+ productsFilter = productsFilter.filter(item => item.category === Number(params.category))
+ }
+ if (params.postalCode) {
+ productsFilter = productsFilter.filter(item => item.postalCode === params.postalCode)
+ }
+ if (params.minPrice && !params.maxPrice) {
+ productsFilter = productsFilter.filter(item => {
+ const price = Number(item.price.replace(/€/g, ''))
+ if (price >= Number(params.minPrice)) {
+ return item
+ }
+ })
+ }
+ if (params.maxPrice && !params.minPrice) {
+ productsFilter = productsFilter.filter(item => {
+ const price = Number(item.price.replace(/€/g, ''))
+ if (price <= Number(params.maxPrice)) {
+ return item
+ }
+ })
+ }
+ if (params.maxPrice && params.minPrice) {
+ productsFilter = productsFilter.filter(item => {
+ const price = Number(item.price.replace(/€/g, ''))
+ if (price >= Number(params.minPrice) && price <= Number(params.maxPrice)) {
+ console.log(price);
+ return item
+ }
+ })
+ }
+ if (params.dateExpired) {
+ const [day, month, year] = params.dateExpired.split("/");
+ const dateSearch = new Date(year, month - 1, day);
+ productsFilter = productsFilter.filter(item => {
+ const [day, month, year] = item.dateExpired.split("/");
+ const dateProduct = new Date(year, month - 1, day);
+ if (dateProduct >= dateSearch) {
+ return item
+ }
+ })
+ }
+
+ if (Number(params.bigPrice)) {
+ productsFilter.sort((a, b) => {
+ const itemA = Number(a.price.replace(/€/g, ''))
+ const itemB = Number(b.price.replace(/€/g, ''))
+ return itemB - itemA;
+ })
+ }
+
+ if (Number(params.lowPrice)) {
+ productsFilter.sort((a, b) => {
+ const itemA = Number(a.price.replace(/€/g, ''))
+ const itemB = Number(b.price.replace(/€/g, ''))
+ return itemA - itemB;
+ })
+ }
+
+ if (params.isNew) {
+ productsFilter = productsFilter.filter(item => item.isNew === true)
+ }
+
+ let productsFilterPages = []
+ const totalItens = params?.itens ? Number(params.itens) : 200
+ const page = params.page ? Number(params.page) : 1
+ const startIndex = (totalItens * page) - totalItens
+ const lastIndex = (totalItens * page)
+ const products = productsFilter.slice(startIndex, lastIndex)
+ productsFilterPages.push({
+ page: page,
+ productsPerPage: products.length,
+ products: products
+ })
+
+ return res.status(200).send({
+ data: productsFilterPages
+ })
+ }
+
+ findBySlug(req, res) {
+ const slug = req.params.slug
+ const products = productsJson
+ const filterSlug = products.filter(item => item.slug === slug)
+
+ return res.status(200).send({
+ data: filterSlug
+ })
+ }
+}
+
+module.exports = new ProductController();
\ No newline at end of file
diff --git a/api/controller/products.json b/api/controller/products.json
new file mode 100644
index 0000000..3840e9b
--- /dev/null
+++ b/api/controller/products.json
@@ -0,0 +1,1974 @@
+[
+ {
+ "id": 1,
+ "name": "Increible Metal Gorro",
+ "description": "Andy shoes are designed to keeping in mind durability as well as trends, the most stylish range of shoes & sandals",
+ "price": "€200",
+ "specialPrice": "€54",
+ "isNew": false,
+ "slug": "978-1-348-64648-8",
+ "category": 2,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/efCSfe/640/480",
+ "https://picsum.photos/seed/cJ5zEC/640/480"
+ ],
+ "featured": 1
+ },
+ {
+ "id": 2,
+ "name": "Inteligente Ladrillo Atún",
+ "description": "Ergonomic executive chair upholstered in bonded black leather and PVC padded seat and back for all-day comfort and support",
+ "price": "€59",
+ "specialPrice": "€36",
+ "isNew": true,
+ "slug": "978-0-8481-8892-4",
+ "category": 2,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/aqCUrLS/640/480",
+ "https://picsum.photos/seed/AyGVwTCkAI/640/480",
+ "https://picsum.photos/seed/N0kuFal/640/480"
+ ],
+ "featured": 0,
+ "position": 2
+ },
+ {
+ "id": 3,
+ "name": "Sabroso Madera Camiseta",
+ "description": "The automobile layout consists of a front-engine design, with transaxle-type transmissions mounted at the rear of the engine and four wheel drive",
+ "price": "€67",
+ "specialPrice": "€25",
+ "isNew": true,
+ "slug": "978-0-319-77499-1",
+ "category": 2,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/hLvGjJ/640/480",
+ "https://picsum.photos/seed/NcOmpIJw/640/480"
+ ],
+ "featured": 1,
+ "position": 3
+ },
+ {
+ "id": 4,
+ "name": "Genérico Algodón Coche",
+ "description": "The Apollotech B340 is an affordable wireless mouse with reliable connectivity, 12 months battery life and modern design",
+ "price": "€128",
+ "specialPrice": "€34",
+ "isNew": false,
+ "slug": "978-0-431-46161-8",
+ "category": 1,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/knVoCgN/640/480",
+ "https://picsum.photos/seed/5yGO2h/640/480"
+ ],
+ "featured": 1,
+ "position": 4,
+ "discount": "5"
+ },
+ {
+ "id": 5,
+ "name": "Ergonómico Algodón Pantalones",
+ "description": "The Nagasaki Lander is the trademarked name of several series of Nagasaki sport bikes, that started with the 1984 ABC800J",
+ "price": "€193",
+ "specialPrice": "€54",
+ "isNew": false,
+ "slug": "978-1-342-63425-2",
+ "category": 2,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/YD3k3/640/480",
+ "https://picsum.photos/seed/jkGhjeZ00/640/480",
+ "https://picsum.photos/seed/gSNZGN/640/480",
+ "https://picsum.photos/seed/AEJnS/640/480"
+ ],
+ "featured": 1,
+ "discount": "14"
+ },
+ {
+ "id": 6,
+ "name": "Increible Hormigon Sopa",
+ "description": "Andy shoes are designed to keeping in mind durability as well as trends, the most stylish range of shoes & sandals",
+ "price": "€77",
+ "specialPrice": "€40",
+ "isNew": true,
+ "slug": "978-1-268-28760-0",
+ "category": 2,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/xntRUHQ/640/480",
+ "https://picsum.photos/seed/Hu4oY/640/480",
+ "https://picsum.photos/seed/590BcM/640/480",
+ "https://picsum.photos/seed/HsVfl/640/480"
+ ],
+ "featured": 1
+ },
+ {
+ "id": 7,
+ "name": "Sorprendente Metal Teclado",
+ "description": "The Apollotech B340 is an affordable wireless mouse with reliable connectivity, 12 months battery life and modern design",
+ "price": "€84",
+ "specialPrice": "€42",
+ "isNew": true,
+ "slug": "978-0-7079-1378-0",
+ "category": 2,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/oVPFFWAPa/640/480",
+ "https://picsum.photos/seed/DAsBOLDk/640/480",
+ "https://picsum.photos/seed/WyZIkkU999/640/480",
+ "https://picsum.photos/seed/qQ5llz2/640/480",
+ "https://picsum.photos/seed/Neug42/640/480"
+ ],
+ "featured": 1,
+ "position": 7,
+ "discount": "8"
+ },
+ {
+ "id": 8,
+ "name": "Práctico Plástico Patatas fritas",
+ "description": "The Football Is Good For Training And Recreational Purposes",
+ "price": "€91",
+ "specialPrice": "€44",
+ "isNew": false,
+ "slug": "978-1-295-54883-5",
+ "category": 2,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/6enb1U/640/480",
+ "https://picsum.photos/seed/wLiKA/640/480",
+ "https://picsum.photos/seed/7BHZ8KnK0J/640/480",
+ "https://picsum.photos/seed/ZswFH/640/480"
+ ],
+ "featured": 1,
+ "position": 8,
+ "discount": "12"
+ },
+ {
+ "id": 9,
+ "name": "Sabroso Ladrillo Pollo",
+ "description": "Carbonite web goalkeeper gloves are ergonomically designed to give easy fit",
+ "price": "€179",
+ "specialPrice": "€48",
+ "isNew": false,
+ "slug": "978-1-63125-580-9",
+ "category": 2,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/rtWLLUs/640/480",
+ "https://picsum.photos/seed/84YmSjI/640/480",
+ "https://picsum.photos/seed/8mfl0k/640/480",
+ "https://picsum.photos/seed/FXbll/640/480"
+ ],
+ "featured": 0,
+ "discount": "12"
+ },
+ {
+ "id": 10,
+ "name": "Genérico Plástico Gorro",
+ "description": "The Nagasaki Lander is the trademarked name of several series of Nagasaki sport bikes, that started with the 1984 ABC800J",
+ "price": "€50",
+ "specialPrice": "€32",
+ "isNew": true,
+ "slug": "978-1-76312-403-5",
+ "category": 1,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/FB6ThP/640/480",
+ "https://picsum.photos/seed/9KZh5I/640/480"
+ ],
+ "featured": 0,
+ "position": 10,
+ "discount": "15"
+ },
+ {
+ "id": 11,
+ "name": "Ergonómico Plástico Raton",
+ "description": "Boston's most advanced compression wear technology increases muscle oxygenation, stabilizes active muscles",
+ "price": "€108",
+ "specialPrice": "€54",
+ "isNew": true,
+ "slug": "978-1-82301-801-4",
+ "category": 1,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/AQBLZ/640/480",
+ "https://picsum.photos/seed/luBRfDE3N/640/480",
+ "https://picsum.photos/seed/lDgqkF7FZ/640/480",
+ "https://picsum.photos/seed/hZC5b3hFzC/640/480",
+ "https://picsum.photos/seed/LdmTkN/640/480",
+ "https://picsum.photos/seed/1vhVw/640/480"
+ ],
+ "featured": 0
+ },
+ {
+ "id": 12,
+ "name": "Guapo Acero Mesa",
+ "description": "New ABC 13 9370, 13.3, 5th Gen CoreA5-8250U, 8GB RAM, 256GB SSD, power UHD Graphics, OS 10 Home, OS Office A & J 2016",
+ "price": "€56",
+ "specialPrice": "€28",
+ "isNew": false,
+ "slug": "978-1-965192-91-7",
+ "category": 1,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/j1ViMIl/640/480",
+ "https://picsum.photos/seed/GlmDi/640/480",
+ "https://picsum.photos/seed/fYbvd6t/640/480"
+ ],
+ "featured": 1,
+ "position": 12
+ },
+ {
+ "id": 13,
+ "name": "Genérico Ladrillo Pizza",
+ "description": "The automobile layout consists of a front-engine design, with transaxle-type transmissions mounted at the rear of the engine and four wheel drive",
+ "price": "€130",
+ "specialPrice": "€50",
+ "isNew": false,
+ "slug": "978-0-87287-519-7",
+ "category": 1,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/MeJEmW0/640/480",
+ "https://picsum.photos/seed/HzpbywR2D/640/480",
+ "https://picsum.photos/seed/tJBVf/640/480",
+ "https://picsum.photos/seed/pMCEmn38/640/480",
+ "https://picsum.photos/seed/oLjn2o/640/480"
+ ],
+ "featured": 1,
+ "discount": "7"
+ },
+ {
+ "id": 14,
+ "name": "Refinado Madera Teclado",
+ "description": "Ergonomic executive chair upholstered in bonded black leather and PVC padded seat and back for all-day comfort and support",
+ "price": "€95",
+ "specialPrice": "€31",
+ "isNew": true,
+ "slug": "978-1-7991-7993-1",
+ "category": 2,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/jake6b/640/480",
+ "https://picsum.photos/seed/Bv3GD/640/480",
+ "https://picsum.photos/seed/NjEk2s/640/480"
+ ],
+ "featured": 0
+ },
+ {
+ "id": 15,
+ "name": "Ergonómico Granito Gorro",
+ "description": "The beautiful range of Apple Naturalé that has an exciting mix of natural ingredients. With the Goodness of 100% Natural Ingredients",
+ "price": "€178",
+ "specialPrice": "€58",
+ "isNew": true,
+ "slug": "978-1-236-05968-0",
+ "category": 1,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/NUjeWD/640/480",
+ "https://picsum.photos/seed/FXcWKarPgR/640/480",
+ "https://picsum.photos/seed/teETy/640/480",
+ "https://picsum.photos/seed/xU40Wwc/640/480",
+ "https://picsum.photos/seed/nYXPBqk/640/480",
+ "https://picsum.photos/seed/8MIPl/640/480"
+ ],
+ "featured": 0,
+ "discount": "11"
+ },
+ {
+ "id": 16,
+ "name": "Inteligente Algodón Toallas",
+ "description": "Andy shoes are designed to keeping in mind durability as well as trends, the most stylish range of shoes & sandals",
+ "price": "€88",
+ "specialPrice": "€30",
+ "isNew": false,
+ "slug": "978-1-06-472991-5",
+ "category": 2,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/3QgBNrISB/640/480",
+ "https://picsum.photos/seed/w26O8t4dU/640/480",
+ "https://picsum.photos/seed/LcunJq/640/480",
+ "https://picsum.photos/seed/wsxF0MFH/640/480",
+ "https://picsum.photos/seed/qCaawO/640/480"
+ ],
+ "featured": 0,
+ "discount": "7"
+ },
+ {
+ "id": 17,
+ "name": "Sabroso Granito Atún",
+ "description": "The Apollotech B340 is an affordable wireless mouse with reliable connectivity, 12 months battery life and modern design",
+ "price": "€21",
+ "specialPrice": "€60",
+ "isNew": false,
+ "slug": "978-1-57118-965-3",
+ "category": 1,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/SN0IW/640/480",
+ "https://picsum.photos/seed/Ajbvmw3/640/480",
+ "https://picsum.photos/seed/ZNquT4J50/640/480"
+ ],
+ "featured": 0,
+ "position": 17,
+ "discount": "11"
+ },
+ {
+ "id": 18,
+ "name": "Genérico Plástico Camiseta",
+ "description": "Carbonite web goalkeeper gloves are ergonomically designed to give easy fit",
+ "price": "€149",
+ "specialPrice": "€40",
+ "isNew": false,
+ "slug": "978-1-932110-67-8",
+ "category": 2,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/Ib02oSlkv/640/480",
+ "https://picsum.photos/seed/j7IHn0WcKp/640/480",
+ "https://picsum.photos/seed/T8heZoClH/640/480",
+ "https://picsum.photos/seed/oAzVU/640/480",
+ "https://picsum.photos/seed/lf0N4j/640/480"
+ ],
+ "featured": 0
+ },
+ {
+ "id": 19,
+ "name": "Genérico Metal Queso",
+ "description": "The Nagasaki Lander is the trademarked name of several series of Nagasaki sport bikes, that started with the 1984 ABC800J",
+ "price": "€27",
+ "specialPrice": "€26",
+ "isNew": true,
+ "slug": "978-1-324-94811-7",
+ "category": 2,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/H9uB5/640/480",
+ "https://picsum.photos/seed/SoANcSxyac/640/480",
+ "https://picsum.photos/seed/KLSOpBF9kh/640/480",
+ "https://picsum.photos/seed/pLNNSDd/640/480",
+ "https://picsum.photos/seed/6ogPVwRn/640/480"
+ ],
+ "featured": 0,
+ "position": 19
+ },
+ {
+ "id": 20,
+ "name": "Hecho a mano Plástico Salchichas",
+ "description": "Ergonomic executive chair upholstered in bonded black leather and PVC padded seat and back for all-day comfort and support",
+ "price": "€152",
+ "specialPrice": "€32",
+ "isNew": false,
+ "slug": "978-1-310-91779-0",
+ "category": 1,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/FEfDF6tnF/640/480",
+ "https://picsum.photos/seed/eTmq5a/640/480",
+ "https://picsum.photos/seed/SMULME/640/480",
+ "https://picsum.photos/seed/t11SEBl6/640/480"
+ ],
+ "featured": 0
+ },
+ {
+ "id": 21,
+ "name": "Inteligente Algodón Atún",
+ "description": "Carbonite web goalkeeper gloves are ergonomically designed to give easy fit",
+ "price": "€21",
+ "specialPrice": "€50",
+ "isNew": true,
+ "slug": "978-0-7133-9383-5",
+ "category": 1,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/hW3tkRcqCI/640/480",
+ "https://picsum.photos/seed/t7NHO/640/480",
+ "https://picsum.photos/seed/V3gdDgxD0/640/480",
+ "https://picsum.photos/seed/cqgpbHa/640/480",
+ "https://picsum.photos/seed/jNZ62FSKc/640/480"
+ ],
+ "featured": 1,
+ "position": 21,
+ "discount": "14"
+ },
+ {
+ "id": 22,
+ "name": "Sabroso Algodón Pollo",
+ "description": "Carbonite web goalkeeper gloves are ergonomically designed to give easy fit",
+ "price": "€102",
+ "specialPrice": "€36",
+ "isNew": false,
+ "slug": "978-0-288-35801-7",
+ "category": 2,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/z7odxwHu/640/480",
+ "https://picsum.photos/seed/RaGAjX8R/640/480",
+ "https://picsum.photos/seed/Hmj1KFPpO/640/480",
+ "https://picsum.photos/seed/uianxlSxSf/640/480",
+ "https://picsum.photos/seed/zYhooqjS/640/480"
+ ],
+ "featured": 1,
+ "position": 22
+ },
+ {
+ "id": 23,
+ "name": "Refinado Granito Coche",
+ "description": "The Apollotech B340 is an affordable wireless mouse with reliable connectivity, 12 months battery life and modern design",
+ "price": "€81",
+ "specialPrice": "€26",
+ "isNew": true,
+ "slug": "978-0-8275-2208-4",
+ "category": 1,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/XFcxz0YY/640/480",
+ "https://picsum.photos/seed/bRx77e/640/480",
+ "https://picsum.photos/seed/eMxcy371u/640/480"
+ ],
+ "featured": 1,
+ "position": 23
+ },
+ {
+ "id": 24,
+ "name": "Increible Metal Pizza",
+ "description": "The beautiful range of Apple Naturalé that has an exciting mix of natural ingredients. With the Goodness of 100% Natural Ingredients",
+ "price": "€188",
+ "specialPrice": "€56",
+ "isNew": true,
+ "slug": "978-1-55027-664-0",
+ "category": 2,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/qMu6FQzt/640/480",
+ "https://picsum.photos/seed/cslc2/640/480",
+ "https://picsum.photos/seed/F4wKdsI51V/640/480"
+ ],
+ "featured": 0,
+ "position": 24,
+ "discount": "8"
+ },
+ {
+ "id": 25,
+ "name": "Fantástico Metal Teclado",
+ "description": "The Nagasaki Lander is the trademarked name of several series of Nagasaki sport bikes, that started with the 1984 ABC800J",
+ "price": "€89",
+ "specialPrice": "€22",
+ "isNew": true,
+ "slug": "978-1-140-19874-1",
+ "category": 1,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/61xoHbbj3/640/480",
+ "https://picsum.photos/seed/jvlNP/640/480",
+ "https://picsum.photos/seed/xciRM7qd3B/640/480",
+ "https://picsum.photos/seed/rmfcz75sV/640/480"
+ ],
+ "featured": 0,
+ "position": 25
+ },
+ {
+ "id": 26,
+ "name": "Increible Plástico Pelota",
+ "description": "Andy shoes are designed to keeping in mind durability as well as trends, the most stylish range of shoes & sandals",
+ "price": "€59",
+ "specialPrice": "€45",
+ "isNew": false,
+ "slug": "978-1-048-57120-2",
+ "category": 2,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/Kv2pHL/640/480",
+ "https://picsum.photos/seed/8nMjd6TU2/640/480",
+ "https://picsum.photos/seed/Spcwv/640/480",
+ "https://picsum.photos/seed/OTyjd/640/480",
+ "https://picsum.photos/seed/YVbDFheA/640/480"
+ ],
+ "featured": 1,
+ "position": 26,
+ "discount": "15"
+ },
+ {
+ "id": 27,
+ "name": "Genérico Acero Coche",
+ "description": "Andy shoes are designed to keeping in mind durability as well as trends, the most stylish range of shoes & sandals",
+ "price": "€59",
+ "specialPrice": "€44",
+ "isNew": true,
+ "slug": "978-0-15-326573-0",
+ "category": 1,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/WSkuyujFa/640/480",
+ "https://picsum.photos/seed/WmuRvQx/640/480",
+ "https://picsum.photos/seed/kb0vcOf/640/480",
+ "https://picsum.photos/seed/uH0xXb/640/480",
+ "https://picsum.photos/seed/4MzyV3/640/480"
+ ],
+ "featured": 1,
+ "position": 27
+ },
+ {
+ "id": 28,
+ "name": "Hecho a mano Hormigon Zapatos",
+ "description": "The Football Is Good For Training And Recreational Purposes",
+ "price": "€45",
+ "specialPrice": "€45",
+ "isNew": true,
+ "slug": "978-0-7563-2842-9",
+ "category": 2,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/cYKbw/640/480",
+ "https://picsum.photos/seed/IYFq9N/640/480",
+ "https://picsum.photos/seed/UvSVZ78/640/480",
+ "https://picsum.photos/seed/INrOs/640/480",
+ "https://picsum.photos/seed/dEhAEZrv/640/480",
+ "https://picsum.photos/seed/cMjA3Z/640/480"
+ ],
+ "featured": 1,
+ "position": 28
+ },
+ {
+ "id": 29,
+ "name": "Refinado Granito Pollo",
+ "description": "Carbonite web goalkeeper gloves are ergonomically designed to give easy fit",
+ "price": "€191",
+ "specialPrice": "€44",
+ "isNew": true,
+ "slug": "978-1-3988-7301-8",
+ "category": 2,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/qePoXP6K/640/480",
+ "https://picsum.photos/seed/h3p0l6/640/480",
+ "https://picsum.photos/seed/G2EpUubO/640/480"
+ ],
+ "featured": 1
+ },
+ {
+ "id": 30,
+ "name": "Inteligente Madera Salchichas",
+ "description": "Ergonomic executive chair upholstered in bonded black leather and PVC padded seat and back for all-day comfort and support",
+ "price": "€126",
+ "specialPrice": "€20",
+ "isNew": true,
+ "slug": "978-1-331-75743-6",
+ "category": 1,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/dBTrE/640/480",
+ "https://picsum.photos/seed/JA4Cw/640/480",
+ "https://picsum.photos/seed/2q5if/640/480",
+ "https://picsum.photos/seed/2ih0CRO/640/480",
+ "https://picsum.photos/seed/8fCncPfW/640/480"
+ ],
+ "featured": 0,
+ "discount": "5"
+ },
+ {
+ "id": 31,
+ "name": "Rústico Hormigon Bicicleta",
+ "description": "Andy shoes are designed to keeping in mind durability as well as trends, the most stylish range of shoes & sandals",
+ "price": "€63",
+ "specialPrice": "€40",
+ "isNew": true,
+ "slug": "978-0-11-989468-4",
+ "category": 1,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/EwzFjj8/640/480",
+ "https://picsum.photos/seed/Ne0GuwEU6/640/480"
+ ],
+ "featured": 1
+ },
+ {
+ "id": 32,
+ "name": "Genérico Algodón Raton",
+ "description": "The Apollotech B340 is an affordable wireless mouse with reliable connectivity, 12 months battery life and modern design",
+ "price": "€95",
+ "specialPrice": "€20",
+ "isNew": false,
+ "slug": "978-1-4452-7592-5",
+ "category": 2,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/JzEKDZ/640/480",
+ "https://picsum.photos/seed/ofYhP4/640/480",
+ "https://picsum.photos/seed/psUTjl0o/640/480"
+ ],
+ "featured": 1
+ },
+ {
+ "id": 33,
+ "name": "Guapa Ladrillo Teclado",
+ "description": "Ergonomic executive chair upholstered in bonded black leather and PVC padded seat and back for all-day comfort and support",
+ "price": "€168",
+ "specialPrice": "€28",
+ "isNew": false,
+ "slug": "978-1-8380507-5-7",
+ "category": 1,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/MvlUAg/640/480",
+ "https://picsum.photos/seed/kJ6aZe/640/480",
+ "https://picsum.photos/seed/vG2qiqZrI/640/480"
+ ],
+ "featured": 1,
+ "discount": "14"
+ },
+ {
+ "id": 34,
+ "name": "Guapa Acero Ensalada",
+ "description": "Boston's most advanced compression wear technology increases muscle oxygenation, stabilizes active muscles",
+ "price": "€199",
+ "specialPrice": "€51",
+ "isNew": false,
+ "slug": "978-0-515-08362-0",
+ "category": 2,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/ktlHFZa7T/640/480",
+ "https://picsum.photos/seed/zGj5G1f/640/480",
+ "https://picsum.photos/seed/cGn3F/640/480"
+ ],
+ "featured": 1
+ },
+ {
+ "id": 35,
+ "name": "Hecho a mano Algodón Pelota",
+ "description": "Andy shoes are designed to keeping in mind durability as well as trends, the most stylish range of shoes & sandals",
+ "price": "€164",
+ "specialPrice": "€49",
+ "isNew": true,
+ "slug": "978-1-377-81139-0",
+ "category": 1,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/jTkM6B/640/480",
+ "https://picsum.photos/seed/1bMD1mgLJ/640/480",
+ "https://picsum.photos/seed/Ho4E1yc/640/480",
+ "https://picsum.photos/seed/rFUM8gZxsK/640/480",
+ "https://picsum.photos/seed/9PQ51cFnX/640/480"
+ ],
+ "featured": 0,
+ "discount": "9"
+ },
+ {
+ "id": 36,
+ "name": "Guapo Metal Pescado",
+ "description": "New range of formal shirts are designed keeping you in mind. With fits and styling that will make you stand apart",
+ "price": "€187",
+ "specialPrice": "€51",
+ "isNew": false,
+ "slug": "978-0-314-22100-1",
+ "category": 1,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/mcSNVcAt/640/480",
+ "https://picsum.photos/seed/YgXJEOkF/640/480",
+ "https://picsum.photos/seed/e3fkI67F/640/480"
+ ],
+ "featured": 1,
+ "position": 36
+ },
+ {
+ "id": 37,
+ "name": "Fantástico Madera Pollo",
+ "description": "The Nagasaki Lander is the trademarked name of several series of Nagasaki sport bikes, that started with the 1984 ABC800J",
+ "price": "€195",
+ "specialPrice": "€39",
+ "isNew": true,
+ "slug": "978-1-84460-628-3",
+ "category": 2,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/PuObBpl/640/480",
+ "https://picsum.photos/seed/D6XW1XMhuR/640/480",
+ "https://picsum.photos/seed/XaZsN/640/480"
+ ],
+ "featured": 0,
+ "discount": "11"
+ },
+ {
+ "id": 38,
+ "name": "Rústico Algodón Queso",
+ "description": "The Apollotech B340 is an affordable wireless mouse with reliable connectivity, 12 months battery life and modern design",
+ "price": "€124",
+ "specialPrice": "€26",
+ "isNew": true,
+ "slug": "978-1-309-55513-2",
+ "category": 1,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/8g9ga6K/640/480",
+ "https://picsum.photos/seed/er1R20/640/480",
+ "https://picsum.photos/seed/W05nMAmO/640/480",
+ "https://picsum.photos/seed/NGjAmte4C/640/480"
+ ],
+ "featured": 0,
+ "discount": "10"
+ },
+ {
+ "id": 39,
+ "name": "Sorprendente Ladrillo Mesa",
+ "description": "Boston's most advanced compression wear technology increases muscle oxygenation, stabilizes active muscles",
+ "price": "€103",
+ "specialPrice": "€53",
+ "isNew": true,
+ "slug": "978-1-6599-5199-8",
+ "category": 1,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/Kbdw1/640/480",
+ "https://picsum.photos/seed/pEemudoDJ/640/480",
+ "https://picsum.photos/seed/R9F4r1E/640/480"
+ ],
+ "featured": 0
+ },
+ {
+ "id": 40,
+ "name": "Genérico Madera Teclado",
+ "description": "New ABC 13 9370, 13.3, 5th Gen CoreA5-8250U, 8GB RAM, 256GB SSD, power UHD Graphics, OS 10 Home, OS Office A & J 2016",
+ "price": "€27",
+ "specialPrice": "€44",
+ "isNew": true,
+ "slug": "978-0-00-710592-2",
+ "category": 2,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/qsKyfaxQ4g/640/480",
+ "https://picsum.photos/seed/RbYRZBXlm/640/480",
+ "https://picsum.photos/seed/ZNVJ25dE0X/640/480",
+ "https://picsum.photos/seed/Mc0Sc/640/480",
+ "https://picsum.photos/seed/KwPFis3Jh/640/480",
+ "https://picsum.photos/seed/rShUr0Fxp/640/480"
+ ],
+ "featured": 1,
+ "discount": "14"
+ },
+ {
+ "id": 41,
+ "name": "Genérico Granito Pantalones",
+ "description": "The slim & simple Maple Gaming Keyboard from Dev Byte comes with a sleek body and 7- Color RGB LED Back-lighting for smart functionality",
+ "price": "€38",
+ "specialPrice": "€48",
+ "isNew": false,
+ "slug": "978-1-4176-3485-9",
+ "category": 1,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/zLjAl3/640/480",
+ "https://picsum.photos/seed/t7lzKsc/640/480",
+ "https://picsum.photos/seed/EdEpBs2n3/640/480"
+ ],
+ "featured": 0
+ },
+ {
+ "id": 42,
+ "name": "Guapo Madera Raton",
+ "description": "The automobile layout consists of a front-engine design, with transaxle-type transmissions mounted at the rear of the engine and four wheel drive",
+ "price": "€160",
+ "specialPrice": "€22",
+ "isNew": true,
+ "slug": "978-0-940197-17-6",
+ "category": 2,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/bB5fh/640/480",
+ "https://picsum.photos/seed/4z8LC3hXF/640/480",
+ "https://picsum.photos/seed/KhHhYT/640/480",
+ "https://picsum.photos/seed/Fg8pI/640/480",
+ "https://picsum.photos/seed/Uj5w7I3V/640/480"
+ ],
+ "featured": 1,
+ "position": 42,
+ "discount": "7"
+ },
+ {
+ "id": 43,
+ "name": "Artesanal Plástico Gorro",
+ "description": "Carbonite web goalkeeper gloves are ergonomically designed to give easy fit",
+ "price": "€154",
+ "specialPrice": "€56",
+ "isNew": true,
+ "slug": "978-1-318-64981-5",
+ "category": 2,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/QVRhLvAY7/640/480",
+ "https://picsum.photos/seed/JAM43Cq3qz/640/480",
+ "https://picsum.photos/seed/g1CG1BOr/640/480",
+ "https://picsum.photos/seed/g5Gpd/640/480"
+ ],
+ "featured": 1,
+ "position": 43
+ },
+ {
+ "id": 44,
+ "name": "Refinado Algodón Camiseta",
+ "description": "The Football Is Good For Training And Recreational Purposes",
+ "price": "€32",
+ "specialPrice": "€28",
+ "isNew": false,
+ "slug": "978-0-89872-374-8",
+ "category": 1,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/l97X5/640/480",
+ "https://picsum.photos/seed/e5a8U/640/480",
+ "https://picsum.photos/seed/3ID5gT/640/480",
+ "https://picsum.photos/seed/Fv91Wp2/640/480"
+ ],
+ "featured": 1,
+ "discount": "14"
+ },
+ {
+ "id": 45,
+ "name": "Refinado Plástico Zapatos",
+ "description": "The Football Is Good For Training And Recreational Purposes",
+ "price": "€106",
+ "specialPrice": "€34",
+ "isNew": true,
+ "slug": "978-0-217-22380-5",
+ "category": 2,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/cSzf4H/640/480",
+ "https://picsum.photos/seed/yuUm9XD8o/640/480",
+ "https://picsum.photos/seed/zRg0Tof/640/480"
+ ],
+ "featured": 1
+ },
+ {
+ "id": 46,
+ "name": "Increible Madera Ordenador",
+ "description": "Carbonite web goalkeeper gloves are ergonomically designed to give easy fit",
+ "price": "€111",
+ "specialPrice": "€35",
+ "isNew": true,
+ "slug": "978-0-909996-40-6",
+ "category": 2,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/8CNBVztO/640/480",
+ "https://picsum.photos/seed/Xrp987/640/480",
+ "https://picsum.photos/seed/8uaxkeTHO/640/480"
+ ],
+ "featured": 1
+ },
+ {
+ "id": 47,
+ "name": "Fantástico Acero Queso",
+ "description": "The Nagasaki Lander is the trademarked name of several series of Nagasaki sport bikes, that started with the 1984 ABC800J",
+ "price": "€123",
+ "specialPrice": "€23",
+ "isNew": false,
+ "slug": "978-1-64697-271-5",
+ "category": 2,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/wCp2KM/640/480",
+ "https://picsum.photos/seed/nnBEvn/640/480",
+ "https://picsum.photos/seed/t5y9qSOx/640/480",
+ "https://picsum.photos/seed/IwucQ3tPf/640/480",
+ "https://picsum.photos/seed/Jb0yX4/640/480",
+ "https://picsum.photos/seed/6e7xniBLbp/640/480"
+ ],
+ "featured": 1,
+ "position": 47
+ },
+ {
+ "id": 48,
+ "name": "Rústico Plástico Teclado",
+ "description": "Carbonite web goalkeeper gloves are ergonomically designed to give easy fit",
+ "price": "€72",
+ "specialPrice": "€48",
+ "isNew": true,
+ "slug": "978-0-937555-33-0",
+ "category": 1,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/hg9HMXJ4l/640/480",
+ "https://picsum.photos/seed/PCA1uHX/640/480",
+ "https://picsum.photos/seed/JFRCbMQO/640/480",
+ "https://picsum.photos/seed/j5oP44i/640/480",
+ "https://picsum.photos/seed/8ltyUC/640/480",
+ "https://picsum.photos/seed/rJMEG/640/480"
+ ],
+ "featured": 1
+ },
+ {
+ "id": 49,
+ "name": "Guapa Acero Gorro",
+ "description": "The slim & simple Maple Gaming Keyboard from Dev Byte comes with a sleek body and 7- Color RGB LED Back-lighting for smart functionality",
+ "price": "€41",
+ "specialPrice": "€35",
+ "isNew": false,
+ "slug": "978-1-238-68808-6",
+ "category": 1,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/mWU235G/640/480",
+ "https://picsum.photos/seed/ZCinUiiwZ/640/480",
+ "https://picsum.photos/seed/yJo5MOPK/640/480",
+ "https://picsum.photos/seed/29OaIyJ/640/480"
+ ],
+ "featured": 0,
+ "discount": "15"
+ },
+ {
+ "id": 50,
+ "name": "Genérico Algodón Bicicleta",
+ "description": "The Apollotech B340 is an affordable wireless mouse with reliable connectivity, 12 months battery life and modern design",
+ "price": "€190",
+ "specialPrice": "€20",
+ "isNew": false,
+ "slug": "978-1-56675-720-1",
+ "category": 2,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/EaDjCiqk/640/480",
+ "https://picsum.photos/seed/nGNbbNc/640/480"
+ ],
+ "featured": 1,
+ "discount": "15"
+ },
+ {
+ "id": 51,
+ "name": "Refinado Metal Pollo",
+ "description": "The Nagasaki Lander is the trademarked name of several series of Nagasaki sport bikes, that started with the 1984 ABC800J",
+ "price": "€20",
+ "specialPrice": "€56",
+ "isNew": true,
+ "slug": "978-1-257-37902-6",
+ "category": 1,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/s8zjP0/640/480",
+ "https://picsum.photos/seed/9zEZt/640/480",
+ "https://picsum.photos/seed/V7zVU/640/480"
+ ],
+ "featured": 0,
+ "discount": "13"
+ },
+ {
+ "id": 52,
+ "name": "Fantástico Plástico Ensalada",
+ "description": "New ABC 13 9370, 13.3, 5th Gen CoreA5-8250U, 8GB RAM, 256GB SSD, power UHD Graphics, OS 10 Home, OS Office A & J 2016",
+ "price": "€194",
+ "specialPrice": "€38",
+ "isNew": true,
+ "slug": "978-1-933903-90-3",
+ "category": 2,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/HTev9LlW/640/480",
+ "https://picsum.photos/seed/SUxtP5cT/640/480",
+ "https://picsum.photos/seed/T4487xS9DG/640/480"
+ ],
+ "featured": 0,
+ "position": 52
+ },
+ {
+ "id": 53,
+ "name": "Artesanal Madera Ordenador",
+ "description": "New ABC 13 9370, 13.3, 5th Gen CoreA5-8250U, 8GB RAM, 256GB SSD, power UHD Graphics, OS 10 Home, OS Office A & J 2016",
+ "price": "€29",
+ "specialPrice": "€34",
+ "isNew": false,
+ "slug": "978-0-7736-7108-9",
+ "category": 2,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/B6rfb/640/480",
+ "https://picsum.photos/seed/k3JYiBQRx/640/480",
+ "https://picsum.photos/seed/gnntwG1BX/640/480",
+ "https://picsum.photos/seed/A9Wd3/640/480",
+ "https://picsum.photos/seed/bptxrVNRiz/640/480",
+ "https://picsum.photos/seed/HbLRfW/640/480"
+ ],
+ "featured": 1
+ },
+ {
+ "id": 54,
+ "name": "Pequeño Metal Ordenador",
+ "description": "The automobile layout consists of a front-engine design, with transaxle-type transmissions mounted at the rear of the engine and four wheel drive",
+ "price": "€51",
+ "specialPrice": "€32",
+ "isNew": true,
+ "slug": "978-0-675-04894-1",
+ "category": 2,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/DD2MtGS8/640/480",
+ "https://picsum.photos/seed/vERlc/640/480",
+ "https://picsum.photos/seed/ljRUIx1/640/480",
+ "https://picsum.photos/seed/1lYn2Xcr1g/640/480",
+ "https://picsum.photos/seed/od7uZ0Hy/640/480",
+ "https://picsum.photos/seed/eotkUn/640/480"
+ ],
+ "featured": 1,
+ "position": 54
+ },
+ {
+ "id": 55,
+ "name": "Sabroso Ladrillo Pizza",
+ "description": "The automobile layout consists of a front-engine design, with transaxle-type transmissions mounted at the rear of the engine and four wheel drive",
+ "price": "€104",
+ "specialPrice": "€50",
+ "isNew": false,
+ "slug": "978-0-7105-6291-3",
+ "category": 2,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/9N7ink7krJ/640/480",
+ "https://picsum.photos/seed/7s4aYaneZg/640/480",
+ "https://picsum.photos/seed/2nhD8DhqKq/640/480"
+ ],
+ "featured": 0,
+ "position": 55,
+ "discount": "5"
+ },
+ {
+ "id": 56,
+ "name": "Artesanal Metal Toallas",
+ "description": "The beautiful range of Apple Naturalé that has an exciting mix of natural ingredients. With the Goodness of 100% Natural Ingredients",
+ "price": "€117",
+ "specialPrice": "€53",
+ "isNew": false,
+ "slug": "978-0-18-757443-3",
+ "category": 2,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/wNA60wdyxq/640/480",
+ "https://picsum.photos/seed/86jeF/640/480",
+ "https://picsum.photos/seed/2Ix8CKO0/640/480",
+ "https://picsum.photos/seed/08QHc5F/640/480"
+ ],
+ "featured": 1
+ },
+ {
+ "id": 57,
+ "name": "Ergonómico Acero Pescado",
+ "description": "The Nagasaki Lander is the trademarked name of several series of Nagasaki sport bikes, that started with the 1984 ABC800J",
+ "price": "€176",
+ "specialPrice": "€58",
+ "isNew": true,
+ "slug": "978-0-538-86677-4",
+ "category": 2,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/vFAtUVdhTQ/640/480",
+ "https://picsum.photos/seed/27vewh/640/480"
+ ],
+ "featured": 0
+ },
+ {
+ "id": 58,
+ "name": "Inteligente Granito Guantes",
+ "description": "The slim & simple Maple Gaming Keyboard from Dev Byte comes with a sleek body and 7- Color RGB LED Back-lighting for smart functionality",
+ "price": "€151",
+ "specialPrice": "€33",
+ "isNew": false,
+ "slug": "978-1-61481-833-5",
+ "category": 2,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/4MsN1O/640/480",
+ "https://picsum.photos/seed/UdYQ9p/640/480"
+ ],
+ "featured": 1
+ },
+ {
+ "id": 59,
+ "name": "Ergonómico Algodón Pizza",
+ "description": "Carbonite web goalkeeper gloves are ergonomically designed to give easy fit",
+ "price": "€87",
+ "specialPrice": "€45",
+ "isNew": false,
+ "slug": "978-1-716-77358-7",
+ "category": 2,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/YXrh4TJhn/640/480",
+ "https://picsum.photos/seed/qJ3IS/640/480",
+ "https://picsum.photos/seed/vZTLJBiSs/640/480",
+ "https://picsum.photos/seed/yWwpqd9uRR/640/480",
+ "https://picsum.photos/seed/1oPusQ9Q3/640/480",
+ "https://picsum.photos/seed/Q6kSK6/640/480"
+ ],
+ "featured": 0,
+ "position": 59
+ },
+ {
+ "id": 60,
+ "name": "Sorprendente Acero Salchichas",
+ "description": "New ABC 13 9370, 13.3, 5th Gen CoreA5-8250U, 8GB RAM, 256GB SSD, power UHD Graphics, OS 10 Home, OS Office A & J 2016",
+ "price": "€59",
+ "specialPrice": "€60",
+ "isNew": false,
+ "slug": "978-0-7694-2909-0",
+ "category": 2,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/98Nx8Mi/640/480",
+ "https://picsum.photos/seed/BwjmGy6VB/640/480"
+ ],
+ "featured": 0,
+ "discount": "6"
+ },
+ {
+ "id": 61,
+ "name": "Increible Hormigon Pollo",
+ "description": "Ergonomic executive chair upholstered in bonded black leather and PVC padded seat and back for all-day comfort and support",
+ "price": "€57",
+ "specialPrice": "€50",
+ "isNew": true,
+ "slug": "978-0-619-91892-7",
+ "category": 1,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/kxRaIrj5/640/480",
+ "https://picsum.photos/seed/QAIRpl/640/480"
+ ],
+ "featured": 1,
+ "position": 61,
+ "discount": "5"
+ },
+ {
+ "id": 62,
+ "name": "Guapa Plástico Pizza",
+ "description": "The automobile layout consists of a front-engine design, with transaxle-type transmissions mounted at the rear of the engine and four wheel drive",
+ "price": "€194",
+ "specialPrice": "€33",
+ "isNew": false,
+ "slug": "978-1-377-08792-4",
+ "category": 2,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/t70NVE/640/480",
+ "https://picsum.photos/seed/WCDGPADT7M/640/480"
+ ],
+ "featured": 0
+ },
+ {
+ "id": 63,
+ "name": "Guapo Plástico Patatas fritas",
+ "description": "The Nagasaki Lander is the trademarked name of several series of Nagasaki sport bikes, that started with the 1984 ABC800J",
+ "price": "€140",
+ "specialPrice": "€31",
+ "isNew": false,
+ "slug": "978-0-7734-2463-0",
+ "category": 1,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/ibhRMBMJ/640/480",
+ "https://picsum.photos/seed/7fNck/640/480",
+ "https://picsum.photos/seed/esXzS36A2/640/480",
+ "https://picsum.photos/seed/Zyx0R/640/480",
+ "https://picsum.photos/seed/gyUEYTFw/640/480"
+ ],
+ "featured": 1
+ },
+ {
+ "id": 64,
+ "name": "Genérico Algodón Coche",
+ "description": "New ABC 13 9370, 13.3, 5th Gen CoreA5-8250U, 8GB RAM, 256GB SSD, power UHD Graphics, OS 10 Home, OS Office A & J 2016",
+ "price": "€137",
+ "specialPrice": "€47",
+ "isNew": false,
+ "slug": "978-1-77867-791-5",
+ "category": 1,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/AsMDYHf3/640/480",
+ "https://picsum.photos/seed/tCkf3/640/480",
+ "https://picsum.photos/seed/8ZnlYxm/640/480",
+ "https://picsum.photos/seed/a4eViqq8y0/640/480",
+ "https://picsum.photos/seed/VowNo/640/480"
+ ],
+ "featured": 1,
+ "position": 64
+ },
+ {
+ "id": 65,
+ "name": "Inteligente Hormigon Atún",
+ "description": "Boston's most advanced compression wear technology increases muscle oxygenation, stabilizes active muscles",
+ "price": "€39",
+ "specialPrice": "€44",
+ "isNew": true,
+ "slug": "978-1-926748-33-7",
+ "category": 1,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/vzOKt7Ss/640/480",
+ "https://picsum.photos/seed/cvHL8wo/640/480",
+ "https://picsum.photos/seed/SSNTk/640/480",
+ "https://picsum.photos/seed/DXRIbXn/640/480",
+ "https://picsum.photos/seed/eBegt2U/640/480",
+ "https://picsum.photos/seed/WTaw713G/640/480"
+ ],
+ "featured": 0
+ },
+ {
+ "id": 66,
+ "name": "Inteligente Metal Pizza",
+ "description": "Carbonite web goalkeeper gloves are ergonomically designed to give easy fit",
+ "price": "€177",
+ "specialPrice": "€31",
+ "isNew": false,
+ "slug": "978-1-229-86164-1",
+ "category": 1,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/6EIye/640/480",
+ "https://picsum.photos/seed/mKRPxDHnqH/640/480"
+ ],
+ "featured": 1
+ },
+ {
+ "id": 67,
+ "name": "Fantástico Algodón Pizza",
+ "description": "Andy shoes are designed to keeping in mind durability as well as trends, the most stylish range of shoes & sandals",
+ "price": "€25",
+ "specialPrice": "€36",
+ "isNew": false,
+ "slug": "978-0-299-87026-3",
+ "category": 2,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/iGfs1/640/480",
+ "https://picsum.photos/seed/mxA3uTj/640/480",
+ "https://picsum.photos/seed/f3Y9Y/640/480"
+ ],
+ "featured": 0,
+ "position": 67
+ },
+ {
+ "id": 68,
+ "name": "Práctico Plástico Mesa",
+ "description": "Ergonomic executive chair upholstered in bonded black leather and PVC padded seat and back for all-day comfort and support",
+ "price": "€28",
+ "specialPrice": "€32",
+ "isNew": true,
+ "slug": "978-0-8453-9085-6",
+ "category": 2,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/pZHuRWv1V/640/480",
+ "https://picsum.photos/seed/P22AtCz7/640/480",
+ "https://picsum.photos/seed/wKO6C6VO/640/480",
+ "https://picsum.photos/seed/z86STX25O/640/480"
+ ],
+ "featured": 1,
+ "position": 68
+ },
+ {
+ "id": 69,
+ "name": "Refinado Granito Queso",
+ "description": "The Football Is Good For Training And Recreational Purposes",
+ "price": "€173",
+ "specialPrice": "€45",
+ "isNew": true,
+ "slug": "978-0-19-050936-1",
+ "category": 1,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/CQ84sbVM/640/480",
+ "https://picsum.photos/seed/XOEr59/640/480"
+ ],
+ "featured": 1,
+ "discount": "15"
+ },
+ {
+ "id": 70,
+ "name": "Hecho a mano Granito Pescado",
+ "description": "New range of formal shirts are designed keeping you in mind. With fits and styling that will make you stand apart",
+ "price": "€57",
+ "specialPrice": "€40",
+ "isNew": false,
+ "slug": "978-0-533-86437-9",
+ "category": 2,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/oUdfbU/640/480",
+ "https://picsum.photos/seed/53aGSoCV/640/480",
+ "https://picsum.photos/seed/TAj3bbm/640/480"
+ ],
+ "featured": 1,
+ "discount": "7"
+ },
+ {
+ "id": 71,
+ "name": "Práctico Madera Zapatos",
+ "description": "Carbonite web goalkeeper gloves are ergonomically designed to give easy fit",
+ "price": "€26",
+ "specialPrice": "€34",
+ "isNew": false,
+ "slug": "978-1-959637-80-6",
+ "category": 1,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/n5HnJveOa/640/480",
+ "https://picsum.photos/seed/74riXk3/640/480",
+ "https://picsum.photos/seed/qVXXnHpTSJ/640/480",
+ "https://picsum.photos/seed/Pka9uIQyEL/640/480",
+ "https://picsum.photos/seed/LcQaJud/640/480"
+ ],
+ "featured": 1
+ },
+ {
+ "id": 72,
+ "name": "Guapo Granito Pelota",
+ "description": "Andy shoes are designed to keeping in mind durability as well as trends, the most stylish range of shoes & sandals",
+ "price": "€116",
+ "specialPrice": "€42",
+ "isNew": true,
+ "slug": "978-1-57149-992-9",
+ "category": 1,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/jEUBH4QZke/640/480",
+ "https://picsum.photos/seed/erI72LXH/640/480",
+ "https://picsum.photos/seed/23TyWqZQ/640/480",
+ "https://picsum.photos/seed/b4GfqzlUKx/640/480"
+ ],
+ "featured": 0,
+ "discount": "15"
+ },
+ {
+ "id": 73,
+ "name": "Hecho a mano Ladrillo Ordenador",
+ "description": "Carbonite web goalkeeper gloves are ergonomically designed to give easy fit",
+ "price": "€53",
+ "specialPrice": "€24",
+ "isNew": true,
+ "slug": "978-1-249-08425-9",
+ "category": 2,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/mBopp/640/480",
+ "https://picsum.photos/seed/kFK1V/640/480"
+ ],
+ "featured": 1
+ },
+ {
+ "id": 74,
+ "name": "Genérico Algodón Atún",
+ "description": "Carbonite web goalkeeper gloves are ergonomically designed to give easy fit",
+ "price": "€157",
+ "specialPrice": "€23",
+ "isNew": true,
+ "slug": "978-0-447-47968-3",
+ "category": 2,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/cLwQaL/640/480",
+ "https://picsum.photos/seed/cgRbBDr2K/640/480",
+ "https://picsum.photos/seed/e2AkbcrrbQ/640/480",
+ "https://picsum.photos/seed/WHu0N5/640/480",
+ "https://picsum.photos/seed/NY7Yv/640/480"
+ ],
+ "featured": 0
+ },
+ {
+ "id": 75,
+ "name": "Guapa Plástico Pizza",
+ "description": "Ergonomic executive chair upholstered in bonded black leather and PVC padded seat and back for all-day comfort and support",
+ "price": "€109",
+ "specialPrice": "€30",
+ "isNew": false,
+ "slug": "978-0-927854-44-3",
+ "category": 1,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/SKOcqLfbL/640/480",
+ "https://picsum.photos/seed/3wqPKL9P/640/480",
+ "https://picsum.photos/seed/A0UPk/640/480"
+ ],
+ "featured": 0,
+ "position": 75,
+ "discount": "10"
+ },
+ {
+ "id": 76,
+ "name": "Ergonómico Metal Ordenador",
+ "description": "The beautiful range of Apple Naturalé that has an exciting mix of natural ingredients. With the Goodness of 100% Natural Ingredients",
+ "price": "€81",
+ "specialPrice": "€40",
+ "isNew": true,
+ "slug": "978-0-448-94113-4",
+ "category": 2,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/aVQJJ/640/480",
+ "https://picsum.photos/seed/AT7nQkM45Z/640/480",
+ "https://picsum.photos/seed/FBgbD60/640/480",
+ "https://picsum.photos/seed/CV2zoRUDiA/640/480",
+ "https://picsum.photos/seed/TBWP8RW/640/480"
+ ],
+ "featured": 1
+ },
+ {
+ "id": 77,
+ "name": "Increible Acero Mesa",
+ "description": "The automobile layout consists of a front-engine design, with transaxle-type transmissions mounted at the rear of the engine and four wheel drive",
+ "price": "€148",
+ "specialPrice": "€25",
+ "isNew": true,
+ "slug": "978-0-251-50209-6",
+ "category": 1,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/4PCEsZUNV8/640/480",
+ "https://picsum.photos/seed/BLIbPNoqbc/640/480",
+ "https://picsum.photos/seed/nhtFOy0L/640/480",
+ "https://picsum.photos/seed/uIOse8YZV/640/480",
+ "https://picsum.photos/seed/alDhaxN/640/480"
+ ],
+ "featured": 1,
+ "position": 77,
+ "discount": "10"
+ },
+ {
+ "id": 78,
+ "name": "Sorprendente Madera Bicicleta",
+ "description": "The automobile layout consists of a front-engine design, with transaxle-type transmissions mounted at the rear of the engine and four wheel drive",
+ "price": "€93",
+ "specialPrice": "€59",
+ "isNew": true,
+ "slug": "978-0-346-58774-8",
+ "category": 1,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/zJ0aWOHm/640/480",
+ "https://picsum.photos/seed/xZ3Cb/640/480"
+ ],
+ "featured": 0,
+ "position": 78
+ },
+ {
+ "id": 79,
+ "name": "Sorprendente Metal Atún",
+ "description": "Andy shoes are designed to keeping in mind durability as well as trends, the most stylish range of shoes & sandals",
+ "price": "€126",
+ "specialPrice": "€48",
+ "isNew": false,
+ "slug": "978-0-7900-3519-2",
+ "category": 2,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/DuYVyZ4V/640/480",
+ "https://picsum.photos/seed/C1MqeUSve/640/480",
+ "https://picsum.photos/seed/HSxWo4kxAH/640/480",
+ "https://picsum.photos/seed/oyfF2q/640/480"
+ ],
+ "featured": 0,
+ "discount": "5"
+ },
+ {
+ "id": 80,
+ "name": "Rústico Granito Ensalada",
+ "description": "The Football Is Good For Training And Recreational Purposes",
+ "price": "€192",
+ "specialPrice": "€44",
+ "isNew": false,
+ "slug": "978-0-7068-0264-1",
+ "category": 2,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/TDHd4l5/640/480",
+ "https://picsum.photos/seed/AlODLgF/640/480",
+ "https://picsum.photos/seed/xIqLgU/640/480",
+ "https://picsum.photos/seed/vfsbUDfC/640/480"
+ ],
+ "featured": 0,
+ "position": 80,
+ "discount": "12"
+ },
+ {
+ "id": 81,
+ "name": "Refinado Hormigon Silla",
+ "description": "The slim & simple Maple Gaming Keyboard from Dev Byte comes with a sleek body and 7- Color RGB LED Back-lighting for smart functionality",
+ "price": "€124",
+ "specialPrice": "€22",
+ "isNew": true,
+ "slug": "978-1-82028-222-7",
+ "category": 2,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/7rQSVsud9y/640/480",
+ "https://picsum.photos/seed/v503sK/640/480",
+ "https://picsum.photos/seed/9Yzs3A3x/640/480",
+ "https://picsum.photos/seed/JeLrcZtW/640/480"
+ ],
+ "featured": 1,
+ "position": 81,
+ "discount": "9"
+ },
+ {
+ "id": 82,
+ "name": "Artesanal Madera Pelota",
+ "description": "The Nagasaki Lander is the trademarked name of several series of Nagasaki sport bikes, that started with the 1984 ABC800J",
+ "price": "€63",
+ "specialPrice": "€33",
+ "isNew": false,
+ "slug": "978-0-8045-0032-6",
+ "category": 1,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/apkynsM/640/480",
+ "https://picsum.photos/seed/x8TxsLqWq/640/480",
+ "https://picsum.photos/seed/QCvTJm2Vw/640/480",
+ "https://picsum.photos/seed/Lc2uPnFVd/640/480",
+ "https://picsum.photos/seed/ZzPt5jVh/640/480"
+ ],
+ "featured": 0
+ },
+ {
+ "id": 83,
+ "name": "Ergonómico Algodón Bacon",
+ "description": "Carbonite web goalkeeper gloves are ergonomically designed to give easy fit",
+ "price": "€64",
+ "specialPrice": "€46",
+ "isNew": false,
+ "slug": "978-0-06-018240-3",
+ "category": 2,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/zY0e2vmO9O/640/480",
+ "https://picsum.photos/seed/wSoCzSaP/640/480",
+ "https://picsum.photos/seed/hx6X2MM/640/480",
+ "https://picsum.photos/seed/RKj2y/640/480"
+ ],
+ "featured": 1,
+ "position": 83,
+ "discount": "15"
+ },
+ {
+ "id": 84,
+ "name": "Rústico Hormigon Bicicleta",
+ "description": "Ergonomic executive chair upholstered in bonded black leather and PVC padded seat and back for all-day comfort and support",
+ "price": "€150",
+ "specialPrice": "€24",
+ "isNew": true,
+ "slug": "978-0-503-25299-1",
+ "category": 1,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/7GgcI3O/640/480",
+ "https://picsum.photos/seed/QJd06EZD/640/480",
+ "https://picsum.photos/seed/UUZtuR0/640/480",
+ "https://picsum.photos/seed/uNnFeax/640/480"
+ ],
+ "featured": 0,
+ "discount": "11"
+ },
+ {
+ "id": 85,
+ "name": "Práctico Acero Ensalada",
+ "description": "Andy shoes are designed to keeping in mind durability as well as trends, the most stylish range of shoes & sandals",
+ "price": "€140",
+ "specialPrice": "€59",
+ "isNew": true,
+ "slug": "978-1-83978-799-7",
+ "category": 2,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/gghO9FeS/640/480",
+ "https://picsum.photos/seed/spn5I6R/640/480",
+ "https://picsum.photos/seed/zgqFt9/640/480",
+ "https://picsum.photos/seed/MA9RK/640/480"
+ ],
+ "featured": 1
+ },
+ {
+ "id": 86,
+ "name": "Hecho a mano Plástico Teclado",
+ "description": "The beautiful range of Apple Naturalé that has an exciting mix of natural ingredients. With the Goodness of 100% Natural Ingredients",
+ "price": "€184",
+ "specialPrice": "€35",
+ "isNew": true,
+ "slug": "978-0-609-43686-8",
+ "category": 2,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/JbXS1/640/480",
+ "https://picsum.photos/seed/0nBtkn8/640/480",
+ "https://picsum.photos/seed/JNyR9bbz/640/480",
+ "https://picsum.photos/seed/SjGh0AlcFr/640/480",
+ "https://picsum.photos/seed/KDUniZvZQ/640/480"
+ ],
+ "featured": 0,
+ "discount": "13"
+ },
+ {
+ "id": 87,
+ "name": "Ergonómico Metal Salchichas",
+ "description": "The automobile layout consists of a front-engine design, with transaxle-type transmissions mounted at the rear of the engine and four wheel drive",
+ "price": "€71",
+ "specialPrice": "€45",
+ "isNew": false,
+ "slug": "978-0-527-38222-3",
+ "category": 1,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/kqMq4IbI/640/480",
+ "https://picsum.photos/seed/V5kJzsX4Qq/640/480"
+ ],
+ "featured": 0,
+ "position": 87
+ },
+ {
+ "id": 88,
+ "name": "Artesanal Acero Toallas",
+ "description": "New range of formal shirts are designed keeping you in mind. With fits and styling that will make you stand apart",
+ "price": "€20",
+ "specialPrice": "€36",
+ "isNew": false,
+ "slug": "978-1-106-45123-1",
+ "category": 2,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/ZAUKGmZoH8/640/480",
+ "https://picsum.photos/seed/b4E2a/640/480"
+ ],
+ "featured": 1,
+ "position": 88
+ },
+ {
+ "id": 89,
+ "name": "Inteligente Plástico Ensalada",
+ "description": "Carbonite web goalkeeper gloves are ergonomically designed to give easy fit",
+ "price": "€186",
+ "specialPrice": "€23",
+ "isNew": true,
+ "slug": "978-0-09-262953-2",
+ "category": 1,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/yi0wdYVFd/640/480",
+ "https://picsum.photos/seed/N6x8TCI37/640/480",
+ "https://picsum.photos/seed/LdnWmnU/640/480",
+ "https://picsum.photos/seed/ZvJVU7yIs0/640/480",
+ "https://picsum.photos/seed/CuJshkx/640/480",
+ "https://picsum.photos/seed/K4BYL/640/480"
+ ],
+ "featured": 0,
+ "position": 89
+ },
+ {
+ "id": 90,
+ "name": "Ergonómico Ladrillo Guantes",
+ "description": "Boston's most advanced compression wear technology increases muscle oxygenation, stabilizes active muscles",
+ "price": "€144",
+ "specialPrice": "€26",
+ "isNew": false,
+ "slug": "978-0-08-218659-5",
+ "category": 1,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/r3f9zy6s/640/480",
+ "https://picsum.photos/seed/geSHZ/640/480",
+ "https://picsum.photos/seed/0BzdL5/640/480",
+ "https://picsum.photos/seed/wmspiYqEs/640/480"
+ ],
+ "featured": 1,
+ "position": 90,
+ "discount": "5"
+ },
+ {
+ "id": 91,
+ "name": "Sorprendente Madera Zapatos",
+ "description": "Ergonomic executive chair upholstered in bonded black leather and PVC padded seat and back for all-day comfort and support",
+ "price": "€146",
+ "specialPrice": "€33",
+ "isNew": false,
+ "slug": "978-1-0925-8381-7",
+ "category": 2,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/uFgCLHRlu/640/480",
+ "https://picsum.photos/seed/09IFrW/640/480",
+ "https://picsum.photos/seed/9lYlf4bME/640/480",
+ "https://picsum.photos/seed/dXedo8jO/640/480",
+ "https://picsum.photos/seed/1mnxTIVfpl/640/480"
+ ],
+ "featured": 0,
+ "discount": "12"
+ },
+ {
+ "id": 92,
+ "name": "Increible Hormigon Pizza",
+ "description": "The Football Is Good For Training And Recreational Purposes",
+ "price": "€123",
+ "specialPrice": "€20",
+ "isNew": false,
+ "slug": "978-1-6760-4609-7",
+ "category": 1,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/q5RDIKF/640/480",
+ "https://picsum.photos/seed/gftwcvjbrE/640/480"
+ ],
+ "featured": 1,
+ "position": 92
+ },
+ {
+ "id": 93,
+ "name": "Genérico Algodón Teclado",
+ "description": "The Apollotech B340 is an affordable wireless mouse with reliable connectivity, 12 months battery life and modern design",
+ "price": "€119",
+ "specialPrice": "€38",
+ "isNew": false,
+ "slug": "978-1-4015-3538-4",
+ "category": 2,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/Gc2nBOYHS/640/480",
+ "https://picsum.photos/seed/7MZtu75Zc/640/480",
+ "https://picsum.photos/seed/SDqw9obku/640/480",
+ "https://picsum.photos/seed/xAdLYxsae/640/480",
+ "https://picsum.photos/seed/epyeMo/640/480",
+ "https://picsum.photos/seed/g2Ub09a8/640/480"
+ ],
+ "featured": 0,
+ "discount": "5"
+ },
+ {
+ "id": 94,
+ "name": "Artesanal Metal Bacon",
+ "description": "Carbonite web goalkeeper gloves are ergonomically designed to give easy fit",
+ "price": "€89",
+ "specialPrice": "€47",
+ "isNew": true,
+ "slug": "978-1-043-52433-3",
+ "category": 2,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/lSX3wnBP/640/480",
+ "https://picsum.photos/seed/LUOu8/640/480"
+ ],
+ "featured": 1,
+ "position": 94,
+ "discount": "11"
+ },
+ {
+ "id": 95,
+ "name": "Genérico Metal Sopa",
+ "description": "Andy shoes are designed to keeping in mind durability as well as trends, the most stylish range of shoes & sandals",
+ "price": "€110",
+ "specialPrice": "€51",
+ "isNew": false,
+ "slug": "978-1-006-62105-5",
+ "category": 2,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/JD4XtJf/640/480",
+ "https://picsum.photos/seed/KE0iL/640/480",
+ "https://picsum.photos/seed/x0wxQjAyB/640/480",
+ "https://picsum.photos/seed/3uWlXw9Oa9/640/480",
+ "https://picsum.photos/seed/NSuo2fRTJ/640/480"
+ ],
+ "featured": 0,
+ "position": 95,
+ "discount": "6"
+ },
+ {
+ "id": 96,
+ "name": "Hecho a mano Ladrillo Zapatos",
+ "description": "The automobile layout consists of a front-engine design, with transaxle-type transmissions mounted at the rear of the engine and four wheel drive",
+ "price": "€76",
+ "specialPrice": "€47",
+ "isNew": true,
+ "slug": "978-0-553-62311-6",
+ "category": 2,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/tY5Oe7H6T/640/480",
+ "https://picsum.photos/seed/IFg1o/640/480",
+ "https://picsum.photos/seed/b3WiU7yw/640/480"
+ ],
+ "featured": 0
+ },
+ {
+ "id": 97,
+ "name": "Guapo Granito Toallas",
+ "description": "Boston's most advanced compression wear technology increases muscle oxygenation, stabilizes active muscles",
+ "price": "€178",
+ "specialPrice": "€31",
+ "isNew": false,
+ "slug": "978-0-270-99429-2",
+ "category": 2,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/SKaIE/640/480",
+ "https://picsum.photos/seed/U4Dl1e/640/480"
+ ],
+ "featured": 1,
+ "position": 97
+ },
+ {
+ "id": 98,
+ "name": "Ergonómico Ladrillo Pizza",
+ "description": "The Nagasaki Lander is the trademarked name of several series of Nagasaki sport bikes, that started with the 1984 ABC800J",
+ "price": "€32",
+ "specialPrice": "€58",
+ "isNew": false,
+ "slug": "978-0-316-30967-7",
+ "category": 2,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/I55ldG/640/480",
+ "https://picsum.photos/seed/BLzJ5HyqJf/640/480",
+ "https://picsum.photos/seed/df7KM/640/480",
+ "https://picsum.photos/seed/wdjnNMXiAS/640/480",
+ "https://picsum.photos/seed/zVNn3S/640/480"
+ ],
+ "featured": 0,
+ "position": 98
+ },
+ {
+ "id": 99,
+ "name": "Sabroso Metal Ensalada",
+ "description": "The beautiful range of Apple Naturalé that has an exciting mix of natural ingredients. With the Goodness of 100% Natural Ingredients",
+ "price": "€188",
+ "specialPrice": "€59",
+ "isNew": true,
+ "slug": "978-0-212-16286-4",
+ "category": 2,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/V8MtVycBt/640/480",
+ "https://picsum.photos/seed/Tu33LX/640/480",
+ "https://picsum.photos/seed/uGXR6B5VgF/640/480"
+ ],
+ "featured": 0,
+ "discount": "11"
+ },
+ {
+ "id": 100,
+ "name": "Sorprendente Ladrillo Pizza",
+ "description": "The Football Is Good For Training And Recreational Purposes",
+ "price": "€20",
+ "specialPrice": "€53",
+ "isNew": true,
+ "slug": "978-1-9793-4598-9",
+ "category": 1,
+ "postalCode": "12345",
+ "dateExpired": "30/01/2024",
+ "images": [
+ "https://picsum.photos/seed/Q5rFD/640/480",
+ "https://picsum.photos/seed/gObhsXJgT/640/480",
+ "https://picsum.photos/seed/eD2kNo/640/480"
+ ],
+ "featured": 0,
+ "position": 100,
+ "discount": "8"
+ }
+]
diff --git a/api/db/db.js b/api/db/db.js
new file mode 100644
index 0000000..b084634
--- /dev/null
+++ b/api/db/db.js
@@ -0,0 +1,28 @@
+async function connect() {
+ if (global.connection && global.connection.state !== 'disconnected')
+ return global.connection;
+
+ const host = process.env.HOST;
+ const port = process.env.PORT;
+ const database = process.env.DATABASE;
+ const user = process.env.DB_USER;
+ const password = process.env.DB_PASSWORD;
+
+
+
+ const mysql = require("mysql2/promise");
+ const connection = await mysql.createConnection("mysql://" + user + ":" + password + "@" + host + ":" + port + "/" + database + "");
+ console.log("Connected to MySQL!");
+ global.connection = connection;
+ return connection;
+}
+
+async function getProducts() {
+ const conn = await connect();
+ const [rows] = await conn.query('CALL catalogue_get("2024-01-30", "08001")');
+
+ return rows;
+}
+
+
+module.exports = { getProducts }
\ No newline at end of file
diff --git a/api/index.html b/api/index.html
new file mode 100644
index 0000000..a2159c1
--- /dev/null
+++ b/api/index.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+ Document
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/api/index.js b/api/index.js
new file mode 100644
index 0000000..240daa2
--- /dev/null
+++ b/api/index.js
@@ -0,0 +1,27 @@
+const cors = require('cors');
+const express = require('express');
+const path = require('path');
+const productController = require('./controller/product.controller');
+
+const app = express();
+const port = 9999;
+
+const allowedOrigins = ['http://localhost:9100', 'https://floranet.onecommerce.dev/'];
+const corsOptions = {
+ origin: allowedOrigins,
+ optionsSuccessStatus: 200,
+};
+app.use(cors(corsOptions));
+
+app.get('/', (req, res) => {
+ const indexPath = path.join(__dirname, './', 'index.html');
+ res.sendFile(indexPath);
+});
+
+//Products
+app.get('/api/products', productController.findAll);
+app.get('/api/products/slug/:slug', productController.findBySlug);
+
+app.listen(port, () => {
+ console.log(`Server listening at http://localhost:${port}`);
+});
\ No newline at end of file
diff --git a/api/package-lock.json b/api/package-lock.json
new file mode 100644
index 0000000..179324c
--- /dev/null
+++ b/api/package-lock.json
@@ -0,0 +1,657 @@
+{
+ "name": "backend",
+ "version": "1.0.0",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "backend",
+ "version": "1.0.0",
+ "license": "ISC",
+ "dependencies": {
+ "express": "^4.18.2"
+ }
+ },
+ "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/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/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/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.5",
+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz",
+ "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==",
+ "dependencies": {
+ "function-bind": "^1.1.2",
+ "get-intrinsic": "^1.2.1",
+ "set-function-length": "^1.1.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "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/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/define-data-property": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz",
+ "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==",
+ "dependencies": {
+ "get-intrinsic": "^1.2.1",
+ "gopd": "^1.0.1",
+ "has-property-descriptors": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "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/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/function-bind": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/get-intrinsic": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz",
+ "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==",
+ "dependencies": {
+ "function-bind": "^1.1.2",
+ "has-proto": "^1.0.1",
+ "has-symbols": "^1.0.3",
+ "hasown": "^2.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/gopd": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
+ "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
+ "dependencies": {
+ "get-intrinsic": "^1.1.3"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-property-descriptors": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz",
+ "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==",
+ "dependencies": {
+ "get-intrinsic": "^1.2.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "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/hasown": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz",
+ "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==",
+ "dependencies": {
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "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/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/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/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/object-inspect": {
+ "version": "1.13.1",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz",
+ "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==",
+ "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/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/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/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/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/set-function-length": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz",
+ "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==",
+ "dependencies": {
+ "define-data-property": "^1.1.1",
+ "get-intrinsic": "^1.2.1",
+ "gopd": "^1.0.1",
+ "has-property-descriptors": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "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/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/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/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/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/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"
+ }
+ }
+ }
+}
diff --git a/api/package.json b/api/package.json
new file mode 100644
index 0000000..879cd23
--- /dev/null
+++ b/api/package.json
@@ -0,0 +1,15 @@
+{
+ "name": "backend",
+ "version": "1.0.0",
+ "description": "",
+ "main": "index.js",
+ "scripts": {
+ "test": "echo \"Error: no test specified\" && exit 1"
+ },
+ "keywords": [],
+ "author": "",
+ "license": "ISC",
+ "dependencies": {
+ "express": "^4.18.2"
+ }
+}
diff --git a/index.html b/index.html
index 15b9fbc..a71fcf6 100644
--- a/index.html
+++ b/index.html
@@ -16,27 +16,27 @@
rel="icon"
type="image/png"
sizes="128x128"
- href="icons/favicon-128x128.png"
+ href="icons/floranet-favicon.jpg"
/>
-
+
+
diff --git a/package-lock.json b/package-lock.json
index 1f42626..b22f23e 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -10,8 +10,11 @@
"dependencies": {
"@quasar/extras": "^1.16.4",
"@vee-validate/zod": "^4.12.2",
+ "@vue-stripe/vue-stripe": "^4.5.0",
"@vueuse/core": "^10.7.0",
"axios": "^1.2.1",
+ "express": "^4.18.2",
+ "mysql2": "^3.7.0",
"pinia": "^2.0.11",
"quasar": "^2.6.0",
"vee-validate": "^4.12.2",
@@ -31,7 +34,9 @@
"eslint-plugin-vue": "^9.0.0",
"json-server": "^0.17.4",
"postcss": "^8.4.14",
- "prettier": "^2.5.1"
+ "prettier": "^2.5.1",
+ "ts-node": "^10.9.2",
+ "typescript": "^5.3.3"
},
"engines": {
"node": "^18 || ^16 || ^14.19",
@@ -59,6 +64,18 @@
"node": ">=6.0.0"
}
},
+ "node_modules/@cspotcode/source-map-support": {
+ "version": "0.8.1",
+ "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz",
+ "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==",
+ "dev": true,
+ "dependencies": {
+ "@jridgewell/trace-mapping": "0.3.9"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
"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",
@@ -107,9 +124,9 @@
}
},
"node_modules/@eslint/js": {
- "version": "8.55.0",
- "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.55.0.tgz",
- "integrity": "sha512-qQfo2mxH5yVom1kacMtZZJFVdW+E70mqHMJvVg6WTLo+VBuQJ4TojZlfWBjK0ve5BdEeNAVxOsl/nvNMpJOaJA==",
+ "version": "8.56.0",
+ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz",
+ "integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==",
"dev": true,
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
@@ -189,12 +206,12 @@
}
},
"node_modules/@intlify/core-base": {
- "version": "9.8.0",
- "resolved": "https://registry.npmjs.org/@intlify/core-base/-/core-base-9.8.0.tgz",
- "integrity": "sha512-UxaSZVZ1DwqC/CltUZrWZNaWNhfmKtfyV4BJSt/Zt4Or/fZs1iFj0B+OekYk1+MRHfIOe3+x00uXGQI4PbO/9g==",
+ "version": "9.9.0",
+ "resolved": "https://registry.npmjs.org/@intlify/core-base/-/core-base-9.9.0.tgz",
+ "integrity": "sha512-C7UXPymDIOlMGSNjAhNLtKgzITc/8BjINK5gNKXg8GiWCTwL6n3MWr55czksxn8RM5wTMz0qcLOFT+adtaVQaA==",
"dependencies": {
- "@intlify/message-compiler": "9.8.0",
- "@intlify/shared": "9.8.0"
+ "@intlify/message-compiler": "9.9.0",
+ "@intlify/shared": "9.9.0"
},
"engines": {
"node": ">= 16"
@@ -204,11 +221,11 @@
}
},
"node_modules/@intlify/message-compiler": {
- "version": "9.8.0",
- "resolved": "https://registry.npmjs.org/@intlify/message-compiler/-/message-compiler-9.8.0.tgz",
- "integrity": "sha512-McnYWhcoYmDJvssVu6QGR0shqlkJuL1HHdi5lK7fNqvQqRYaQ4lSLjYmZxwc8tRNMdIe9/KUKfyPxU9M6yCtNQ==",
+ "version": "9.9.0",
+ "resolved": "https://registry.npmjs.org/@intlify/message-compiler/-/message-compiler-9.9.0.tgz",
+ "integrity": "sha512-yDU/jdUm9KuhEzYfS+wuyja209yXgdl1XFhMlKtXEgSFTxz4COZQCRXXbbH8JrAjMsaJ7bdoPSLsKlY6mXG2iA==",
"dependencies": {
- "@intlify/shared": "9.8.0",
+ "@intlify/shared": "9.9.0",
"source-map-js": "^1.0.2"
},
"engines": {
@@ -219,9 +236,9 @@
}
},
"node_modules/@intlify/shared": {
- "version": "9.8.0",
- "resolved": "https://registry.npmjs.org/@intlify/shared/-/shared-9.8.0.tgz",
- "integrity": "sha512-TmgR0RCLjzrSo+W3wT0ALf9851iFMlVI9EYNGeWvZFUQTAJx0bvfsMlPdgVtV1tDNRiAfhkFsMKu6jtUY1ZLKQ==",
+ "version": "9.9.0",
+ "resolved": "https://registry.npmjs.org/@intlify/shared/-/shared-9.9.0.tgz",
+ "integrity": "sha512-1ECUyAHRrzOJbOizyGufYP2yukqGrWXtkmTu4PcswVnWbkcjzk3YQGmJ0bLkM7JZ0ZYAaohLGdYvBYnTOGYJ9g==",
"engines": {
"node": ">= 16"
},
@@ -259,11 +276,30 @@
}
}
},
+ "node_modules/@jridgewell/resolve-uri": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz",
+ "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
"node_modules/@jridgewell/sourcemap-codec": {
"version": "1.4.15",
"resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
"integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg=="
},
+ "node_modules/@jridgewell/trace-mapping": {
+ "version": "0.3.9",
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz",
+ "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==",
+ "dev": true,
+ "dependencies": {
+ "@jridgewell/resolve-uri": "^3.0.3",
+ "@jridgewell/sourcemap-codec": "^1.4.10"
+ }
+ },
"node_modules/@nodelib/fs.scandir": {
"version": "2.1.5",
"resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
@@ -384,6 +420,22 @@
}
}
},
+ "node_modules/@quasar/app-vite/node_modules/fast-glob": {
+ "version": "3.2.12",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz",
+ "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==",
+ "dev": true,
+ "dependencies": {
+ "@nodelib/fs.stat": "^2.0.2",
+ "@nodelib/fs.walk": "^1.2.3",
+ "glob-parent": "^5.1.2",
+ "merge2": "^1.3.0",
+ "micromatch": "^4.0.4"
+ },
+ "engines": {
+ "node": ">=8.6.0"
+ }
+ },
"node_modules/@quasar/extras": {
"version": "1.16.9",
"resolved": "https://registry.npmjs.org/@quasar/extras/-/extras-1.16.9.tgz",
@@ -441,6 +493,35 @@
"node": ">= 8.0.0"
}
},
+ "node_modules/@stripe/stripe-js": {
+ "version": "1.54.2",
+ "resolved": "https://registry.npmjs.org/@stripe/stripe-js/-/stripe-js-1.54.2.tgz",
+ "integrity": "sha512-R1PwtDvUfs99cAjfuQ/WpwJ3c92+DAMy9xGApjqlWQMj0FKQabUAys2swfTRNzuYAYJh7NqK2dzcYVNkKLEKUg=="
+ },
+ "node_modules/@tsconfig/node10": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz",
+ "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==",
+ "dev": true
+ },
+ "node_modules/@tsconfig/node12": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz",
+ "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==",
+ "dev": true
+ },
+ "node_modules/@tsconfig/node14": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz",
+ "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==",
+ "dev": true
+ },
+ "node_modules/@tsconfig/node16": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz",
+ "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==",
+ "dev": true
+ },
"node_modules/@types/body-parser": {
"version": "1.19.5",
"resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz",
@@ -543,15 +624,18 @@
"dev": true
},
"node_modules/@types/node": {
- "version": "12.20.55",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz",
- "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==",
- "dev": true
+ "version": "20.10.8",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.8.tgz",
+ "integrity": "sha512-f8nQs3cLxbAFc00vEU59yf9UyGUftkPaLGfvbVOIDdx2i1b8epBqj2aNGyP19fiyXWvlmZ7qC1XLjAzw/OKIeA==",
+ "dev": true,
+ "dependencies": {
+ "undici-types": "~5.26.4"
+ }
},
"node_modules/@types/qs": {
- "version": "6.9.10",
- "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.10.tgz",
- "integrity": "sha512-3Gnx08Ns1sEoCrWssEgTSJs/rsT2vhGP+Ja9cnnk9k4ALxinORlQneLXFeFKOTJMOeZUFD1s7w+w2AphTpvzZw==",
+ "version": "6.9.11",
+ "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.11.tgz",
+ "integrity": "sha512-oGk0gmhnEJK4Yyk+oI7EfXsLayXatCWPHary1MtcmbAifkobT9cM9yutG/hZKIseOU0MqbIwQ/u2nn/Gb+ltuQ==",
"dev": true
},
"node_modules/@types/range-parser": {
@@ -593,12 +677,12 @@
"dev": true
},
"node_modules/@vee-validate/zod": {
- "version": "4.12.2",
- "resolved": "https://registry.npmjs.org/@vee-validate/zod/-/zod-4.12.2.tgz",
- "integrity": "sha512-+g9lk8hO0FJCDGfjhuxUtFV44NVowu7cBvJiNr2x8DpWhBUXcfcE+XAJB0JjDQeT1O9lgO+mskZ+k8EdbAk0xw==",
+ "version": "4.12.4",
+ "resolved": "https://registry.npmjs.org/@vee-validate/zod/-/zod-4.12.4.tgz",
+ "integrity": "sha512-iNFhkBfGkre2b+eBXgBpNlNVStxDrI59sJUbzBr01EjyTkFOUgc/0wPJrhY/kBp+0pnGzNi04jklJaKfNK2ibg==",
"dependencies": {
- "type-fest": "^4.8.2",
- "vee-validate": "4.12.2",
+ "type-fest": "^4.8.3",
+ "vee-validate": "4.12.4",
"zod": "^3.22.4"
}
},
@@ -615,37 +699,46 @@
"vue": "^3.2.25"
}
},
- "node_modules/@vue/compiler-core": {
- "version": "3.3.11",
- "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.3.11.tgz",
- "integrity": "sha512-h97/TGWBilnLuRaj58sxNrsUU66fwdRKLOLQ9N/5iNDfp+DZhYH9Obhe0bXxhedl8fjAgpRANpiZfbgWyruQ0w==",
+ "node_modules/@vue-stripe/vue-stripe": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/@vue-stripe/vue-stripe/-/vue-stripe-4.5.0.tgz",
+ "integrity": "sha512-BU449XT5zegjNQirl+SSztbzGIvPjhxlHv8ybomSZcI1jB6qEpLgpk2eHMFDKnOGZZRhqtg4C5FiErwSJ/yuRw==",
"dependencies": {
- "@babel/parser": "^7.23.5",
- "@vue/shared": "3.3.11",
+ "@stripe/stripe-js": "^1.13.2",
+ "vue-coerce-props": "^1.0.0"
+ }
+ },
+ "node_modules/@vue/compiler-core": {
+ "version": "3.4.7",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.7.tgz",
+ "integrity": "sha512-hhCaE3pTMrlIJK7M/o3Xf7HV8+JoNTGOQ/coWS+V+pH6QFFyqtoXqQzpqsNp7UK17xYKua/MBiKj4e1vgZOBYw==",
+ "dependencies": {
+ "@babel/parser": "^7.23.6",
+ "@vue/shared": "3.4.7",
+ "entities": "^4.5.0",
"estree-walker": "^2.0.2",
"source-map-js": "^1.0.2"
}
},
"node_modules/@vue/compiler-dom": {
- "version": "3.3.11",
- "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.3.11.tgz",
- "integrity": "sha512-zoAiUIqSKqAJ81WhfPXYmFGwDRuO+loqLxvXmfUdR5fOitPoUiIeFI9cTTyv9MU5O1+ZZglJVTusWzy+wfk5hw==",
+ "version": "3.4.7",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.7.tgz",
+ "integrity": "sha512-qDKBAIurCTub4n/6jDYkXwgsFuriqqmmLrIq1N2QDfYJA/mwiwvxi09OGn28g+uDdERX9NaKDLji0oTjE3sScg==",
"dependencies": {
- "@vue/compiler-core": "3.3.11",
- "@vue/shared": "3.3.11"
+ "@vue/compiler-core": "3.4.7",
+ "@vue/shared": "3.4.7"
}
},
"node_modules/@vue/compiler-sfc": {
- "version": "3.3.11",
- "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.3.11.tgz",
- "integrity": "sha512-U4iqPlHO0KQeK1mrsxCN0vZzw43/lL8POxgpzcJweopmqtoYy9nljJzWDIQS3EfjiYhfdtdk9Gtgz7MRXnz3GA==",
+ "version": "3.4.7",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.7.tgz",
+ "integrity": "sha512-Gec6CLkReVswDYjQFq79O5rktri4R7TsD/VPCiUoJw40JhNNxaNJJa8mrQrWoJluW4ETy6QN0NUyC/JO77OCOw==",
"dependencies": {
- "@babel/parser": "^7.23.5",
- "@vue/compiler-core": "3.3.11",
- "@vue/compiler-dom": "3.3.11",
- "@vue/compiler-ssr": "3.3.11",
- "@vue/reactivity-transform": "3.3.11",
- "@vue/shared": "3.3.11",
+ "@babel/parser": "^7.23.6",
+ "@vue/compiler-core": "3.4.7",
+ "@vue/compiler-dom": "3.4.7",
+ "@vue/compiler-ssr": "3.4.7",
+ "@vue/shared": "3.4.7",
"estree-walker": "^2.0.2",
"magic-string": "^0.30.5",
"postcss": "^8.4.32",
@@ -653,12 +746,12 @@
}
},
"node_modules/@vue/compiler-ssr": {
- "version": "3.3.11",
- "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.3.11.tgz",
- "integrity": "sha512-Zd66ZwMvndxRTgVPdo+muV4Rv9n9DwQ4SSgWWKWkPFebHQfVYRrVjeygmmDmPewsHyznCNvJ2P2d6iOOhdv8Qg==",
+ "version": "3.4.7",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.7.tgz",
+ "integrity": "sha512-PvYeSOvnCkST5mGS0TLwEn5w+4GavtEn6adcq8AspbHaIr+mId5hp7cG3ASy3iy8b+LuXEG2/QaV/nj5BQ/Aww==",
"dependencies": {
- "@vue/compiler-dom": "3.3.11",
- "@vue/shared": "3.3.11"
+ "@vue/compiler-dom": "3.4.7",
+ "@vue/shared": "3.4.7"
}
},
"node_modules/@vue/devtools-api": {
@@ -667,69 +760,57 @@
"integrity": "sha512-+KpckaAQyfbvshdDW5xQylLni1asvNSGme1JFs8I1+/H5pHEhqUKMEQD/qn3Nx5+/nycBq11qAEi8lk+LXI2dA=="
},
"node_modules/@vue/reactivity": {
- "version": "3.3.11",
- "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.3.11.tgz",
- "integrity": "sha512-D5tcw091f0nuu+hXq5XANofD0OXnBmaRqMYl5B3fCR+mX+cXJIGNw/VNawBqkjLNWETrFW0i+xH9NvDbTPVh7g==",
+ "version": "3.4.7",
+ "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.7.tgz",
+ "integrity": "sha512-F539DO0ogH0+L8F9Pnw7cjqibcmSOh5UTk16u5f4MKQ8fraqepI9zdh+sozPX6VmEHOcjo8qw3Or9ZcFFw4SZA==",
"dependencies": {
- "@vue/shared": "3.3.11"
- }
- },
- "node_modules/@vue/reactivity-transform": {
- "version": "3.3.11",
- "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.3.11.tgz",
- "integrity": "sha512-fPGjH0wqJo68A0wQ1k158utDq/cRyZNlFoxGwNScE28aUFOKFEnCBsvyD8jHn+0kd0UKVpuGuaZEQ6r9FJRqCg==",
- "dependencies": {
- "@babel/parser": "^7.23.5",
- "@vue/compiler-core": "3.3.11",
- "@vue/shared": "3.3.11",
- "estree-walker": "^2.0.2",
- "magic-string": "^0.30.5"
+ "@vue/shared": "3.4.7"
}
},
"node_modules/@vue/runtime-core": {
- "version": "3.3.11",
- "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.3.11.tgz",
- "integrity": "sha512-g9ztHGwEbS5RyWaOpXuyIVFTschclnwhqEbdy5AwGhYOgc7m/q3NFwr50MirZwTTzX55JY8pSkeib9BX04NIpw==",
+ "version": "3.4.7",
+ "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.4.7.tgz",
+ "integrity": "sha512-QMMsWRQaD3BpGyjjChthpl4Mji4Fjx1qfdufsXlDkKU3HV+hWNor2z+29F+E1MmVcP0ZfRZUfqYgtsQoL7IGwQ==",
"dependencies": {
- "@vue/reactivity": "3.3.11",
- "@vue/shared": "3.3.11"
+ "@vue/reactivity": "3.4.7",
+ "@vue/shared": "3.4.7"
}
},
"node_modules/@vue/runtime-dom": {
- "version": "3.3.11",
- "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.3.11.tgz",
- "integrity": "sha512-OlhtV1PVpbgk+I2zl+Y5rQtDNcCDs12rsRg71XwaA2/Rbllw6mBLMi57VOn8G0AjOJ4Mdb4k56V37+g8ukShpQ==",
+ "version": "3.4.7",
+ "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.4.7.tgz",
+ "integrity": "sha512-XwegyUY1rw8zxsX1Z36vwYcqo+uOgih5ti7y9vx+pPFhNdSQmN4LqK2RmSeAJG1oKV8NqSUmjpv92f/x6h0SeQ==",
"dependencies": {
- "@vue/runtime-core": "3.3.11",
- "@vue/shared": "3.3.11",
- "csstype": "^3.1.2"
+ "@vue/runtime-core": "3.4.7",
+ "@vue/shared": "3.4.7",
+ "csstype": "^3.1.3"
}
},
"node_modules/@vue/server-renderer": {
- "version": "3.3.11",
- "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.3.11.tgz",
- "integrity": "sha512-AIWk0VwwxCAm4wqtJyxBylRTXSy1wCLOKbWxHaHiu14wjsNYtiRCSgVuqEPVuDpErOlRdNnuRgipQfXRLjLN5A==",
+ "version": "3.4.7",
+ "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.4.7.tgz",
+ "integrity": "sha512-3bWnYLEkLLhkDWqvNk7IvbQD4UcxvFKxELBiOO2iG3m6AniFIsBWfHOO5tLVQnjdWkODu4rq0GipmfEenVAK5Q==",
"dependencies": {
- "@vue/compiler-ssr": "3.3.11",
- "@vue/shared": "3.3.11"
+ "@vue/compiler-ssr": "3.4.7",
+ "@vue/shared": "3.4.7"
},
"peerDependencies": {
- "vue": "3.3.11"
+ "vue": "3.4.7"
}
},
"node_modules/@vue/shared": {
- "version": "3.3.11",
- "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.3.11.tgz",
- "integrity": "sha512-u2G8ZQ9IhMWTMXaWqZycnK4UthG1fA238CD+DP4Dm4WJi5hdUKKLg0RMRaRpDPNMdkTwIDkp7WtD0Rd9BH9fLw=="
+ "version": "3.4.7",
+ "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.7.tgz",
+ "integrity": "sha512-G+i4glX1dMJk88sbJEcQEGWRQnVm9eIY7CcQbO5dpdsD9SF8jka3Mr5OqZYGjczGN1+D6EUwdu6phcmcx9iuPA=="
},
"node_modules/@vueuse/core": {
- "version": "10.7.0",
- "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-10.7.0.tgz",
- "integrity": "sha512-4EUDESCHtwu44ZWK3Gc/hZUVhVo/ysvdtwocB5vcauSV4B7NiGY5972WnsojB3vRNdxvAt7kzJWE2h9h7C9d5w==",
+ "version": "10.7.1",
+ "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-10.7.1.tgz",
+ "integrity": "sha512-74mWHlaesJSWGp1ihg76vAnfVq9NTv1YT0SYhAQ6zwFNdBkkP+CKKJmVOEHcdSnLXCXYiL5e7MaewblfiYLP7g==",
"dependencies": {
"@types/web-bluetooth": "^0.0.20",
- "@vueuse/metadata": "10.7.0",
- "@vueuse/shared": "10.7.0",
+ "@vueuse/metadata": "10.7.1",
+ "@vueuse/shared": "10.7.1",
"vue-demi": ">=0.14.6"
},
"funding": {
@@ -762,17 +843,17 @@
}
},
"node_modules/@vueuse/metadata": {
- "version": "10.7.0",
- "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-10.7.0.tgz",
- "integrity": "sha512-GlaH7tKP2iBCZ3bHNZ6b0cl9g0CJK8lttkBNUX156gWvNYhTKEtbweWLm9rxCPIiwzYcr/5xML6T8ZUEt+DkvA==",
+ "version": "10.7.1",
+ "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-10.7.1.tgz",
+ "integrity": "sha512-jX8MbX5UX067DYVsbtrmKn6eG6KMcXxLRLlurGkZku5ZYT3vxgBjui2zajvUZ18QLIjrgBkFRsu7CqTAg18QFw==",
"funding": {
"url": "https://github.com/sponsors/antfu"
}
},
"node_modules/@vueuse/shared": {
- "version": "10.7.0",
- "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-10.7.0.tgz",
- "integrity": "sha512-kc00uV6CiaTdc3i1CDC4a3lBxzaBE9AgYNtFN87B5OOscqeWElj/uza8qVDmk7/U8JbqoONLbtqiLJ5LGRuqlw==",
+ "version": "10.7.1",
+ "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-10.7.1.tgz",
+ "integrity": "sha512-v0jbRR31LSgRY/C5i5X279A/WQjD6/JsMzGa+eqt658oJ75IvQXAeONmwvEMrvJQKnRElq/frzBR7fhmWY5uLw==",
"dependencies": {
"vue-demi": ">=0.14.6"
},
@@ -809,7 +890,6 @@
"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==",
- "dev": true,
"dependencies": {
"mime-types": "~2.1.34",
"negotiator": "0.6.3"
@@ -819,9 +899,9 @@
}
},
"node_modules/acorn": {
- "version": "8.11.2",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz",
- "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==",
+ "version": "8.11.3",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz",
+ "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==",
"dev": true,
"bin": {
"acorn": "bin/acorn"
@@ -839,6 +919,15 @@
"acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
}
},
+ "node_modules/acorn-walk": {
+ "version": "8.3.1",
+ "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.1.tgz",
+ "integrity": "sha512-TgUZgYvqZprrl7YldZNoa9OciCAyZR+Ejm9eXzKCmjsF5IKp/wgQ7Z/ZpjpGTIUPwrHQIcYeI8qDh4PsEwxMbw==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
"node_modules/ajv": {
"version": "6.12.6",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
@@ -982,6 +1071,12 @@
"safe-buffer": "~5.1.0"
}
},
+ "node_modules/arg": {
+ "version": "4.1.3",
+ "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz",
+ "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==",
+ "dev": true
+ },
"node_modules/argparse": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
@@ -991,8 +1086,7 @@
"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==",
- "dev": true
+ "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg=="
},
"node_modules/astral-regex": {
"version": "2.0.0",
@@ -1052,11 +1146,11 @@
}
},
"node_modules/axios": {
- "version": "1.6.2",
- "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.2.tgz",
- "integrity": "sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A==",
+ "version": "1.6.5",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.5.tgz",
+ "integrity": "sha512-Ii012v05KEVuUoFWmMW/UQv9aRIc3ZwkWDcM+h5Il8izZCtRVpDUfwpoFf7eOtajT3QiGR4yDUx7lPqHJULgbg==",
"dependencies": {
- "follow-redirects": "^1.15.0",
+ "follow-redirects": "^1.15.4",
"form-data": "^4.0.0",
"proxy-from-env": "^1.1.0"
}
@@ -1123,7 +1217,6 @@
"version": "1.20.1",
"resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz",
"integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==",
- "dev": true,
"dependencies": {
"bytes": "3.1.2",
"content-type": "~1.0.4",
@@ -1147,7 +1240,6 @@
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
"integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
- "dev": true,
"engines": {
"node": ">= 0.8"
}
@@ -1156,7 +1248,6 @@
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dev": true,
"dependencies": {
"ms": "2.0.0"
}
@@ -1164,8 +1255,7 @@
"node_modules/body-parser/node_modules/ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
- "dev": true
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
},
"node_modules/boolbase": {
"version": "1.0.0",
@@ -1273,7 +1363,6 @@
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz",
"integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==",
- "dev": true,
"dependencies": {
"function-bind": "^1.1.2",
"get-intrinsic": "^1.2.1",
@@ -1303,9 +1392,9 @@
}
},
"node_modules/caniuse-lite": {
- "version": "1.0.30001568",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001568.tgz",
- "integrity": "sha512-vSUkH84HontZJ88MiNrOau1EBrCqEQYgkC5gIySiDlpsm8sGVrhU7Kx4V6h0tnqaHzIHZv08HlJIwPbL4XL9+A==",
+ "version": "1.0.30001576",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001576.tgz",
+ "integrity": "sha512-ff5BdakGe2P3SQsMsiqmt1Lc8221NR1VzHj5jXN5vBny9A6fpze94HiVV/n7XRosOlsShJcvMv5mdnpjOGCEgg==",
"dev": true,
"funding": [
{
@@ -1599,7 +1688,6 @@
"version": "0.5.4",
"resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
"integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
- "dev": true,
"dependencies": {
"safe-buffer": "5.2.1"
},
@@ -1611,7 +1699,6 @@
"version": "5.2.1",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
"integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
- "dev": true,
"funding": [
{
"type": "github",
@@ -1631,7 +1718,6 @@
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
"integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
- "dev": true,
"engines": {
"node": ">= 0.6"
}
@@ -1640,7 +1726,6 @@
"version": "0.5.0",
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz",
"integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==",
- "dev": true,
"engines": {
"node": ">= 0.6"
}
@@ -1648,8 +1733,7 @@
"node_modules/cookie-signature": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
- "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==",
- "dev": true
+ "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ=="
},
"node_modules/core-util-is": {
"version": "1.0.3",
@@ -1695,6 +1779,12 @@
"node": ">= 10"
}
},
+ "node_modules/create-require": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz",
+ "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==",
+ "dev": true
+ },
"node_modules/cross-spawn": {
"version": "7.0.3",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
@@ -1765,7 +1855,6 @@
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz",
"integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==",
- "dev": true,
"dependencies": {
"get-intrinsic": "^1.2.1",
"gopd": "^1.0.1",
@@ -1792,11 +1881,18 @@
"node": ">=0.4.0"
}
},
+ "node_modules/denque": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz",
+ "integrity": "sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==",
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
"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==",
- "dev": true,
"engines": {
"node": ">= 0.8"
}
@@ -1805,12 +1901,20 @@
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
"integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
- "dev": true,
"engines": {
"node": ">= 0.8",
"npm": "1.2.8000 || >= 1.4.16"
}
},
+ "node_modules/diff": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz",
+ "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.3.1"
+ }
+ },
"node_modules/doctrine": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
@@ -1841,13 +1945,12 @@
"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==",
- "dev": true
+ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
},
"node_modules/electron-to-chromium": {
- "version": "1.4.610",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.610.tgz",
- "integrity": "sha512-mqi2oL1mfeHYtOdCxbPQYV/PL7YrQlxbvFEZ0Ee8GbDdShimqt2/S6z2RWqysuvlwdOrQdqvE0KZrBTipAeJzg==",
+ "version": "1.4.625",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.625.tgz",
+ "integrity": "sha512-DENMhh3MFgaPDoXWrVIqSPInQoLImywfCwrSmVl3cf9QHzoZSiutHwGaB/Ql3VkqcQV30rzgdM+BjKqBAJxo5Q==",
"dev": true
},
"node_modules/elementtree": {
@@ -1872,7 +1975,6 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
"integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
- "dev": true,
"engines": {
"node": ">= 0.8"
}
@@ -1886,6 +1988,17 @@
"once": "^1.4.0"
}
},
+ "node_modules/entities": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
+ "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
+ "engines": {
+ "node": ">=0.12"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
+ },
"node_modules/errorhandler": {
"version": "1.5.1",
"resolved": "https://registry.npmjs.org/errorhandler/-/errorhandler-1.5.1.tgz",
@@ -2266,8 +2379,7 @@
"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==",
- "dev": true
+ "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
},
"node_modules/escape-string-regexp": {
"version": "4.0.0",
@@ -2282,15 +2394,15 @@
}
},
"node_modules/eslint": {
- "version": "8.55.0",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.55.0.tgz",
- "integrity": "sha512-iyUUAM0PCKj5QpwGfmCAG9XXbZCWsqP/eWAWrG/W0umvjuLRBECwSFdt+rCntju0xEH7teIABPwXpahftIaTdA==",
+ "version": "8.56.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz",
+ "integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==",
"dev": true,
"dependencies": {
"@eslint-community/eslint-utils": "^4.2.0",
"@eslint-community/regexpp": "^4.6.1",
"@eslint/eslintrc": "^2.1.4",
- "@eslint/js": "8.55.0",
+ "@eslint/js": "8.56.0",
"@humanwhocodes/config-array": "^0.11.13",
"@humanwhocodes/module-importer": "^1.0.1",
"@nodelib/fs.walk": "^1.2.8",
@@ -2369,6 +2481,22 @@
"eslint": "^6.2.0 || ^7.0.0 || ^8.0.0"
}
},
+ "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-utils": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz",
@@ -2405,31 +2533,6 @@
"url": "https://opencollective.com/eslint"
}
},
- "node_modules/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/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/eslint/node_modules/glob-parent": {
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
@@ -2471,15 +2574,6 @@
"node": ">=0.10"
}
},
- "node_modules/esquery/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/esrecurse": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
@@ -2492,7 +2586,7 @@
"node": ">=4.0"
}
},
- "node_modules/esrecurse/node_modules/estraverse": {
+ "node_modules/estraverse": {
"version": "5.3.0",
"resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
"integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
@@ -2519,7 +2613,6 @@
"version": "1.8.1",
"resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
"integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
- "dev": true,
"engines": {
"node": ">= 0.6"
}
@@ -2528,7 +2621,6 @@
"version": "4.18.2",
"resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz",
"integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==",
- "dev": true,
"dependencies": {
"accepts": "~1.3.8",
"array-flatten": "1.1.1",
@@ -2595,7 +2687,6 @@
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dev": true,
"dependencies": {
"ms": "2.0.0"
}
@@ -2603,14 +2694,12 @@
"node_modules/express/node_modules/ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
- "dev": true
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
},
"node_modules/express/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==",
- "dev": true,
"funding": [
{
"type": "github",
@@ -2647,9 +2736,9 @@
"dev": true
},
"node_modules/fast-glob": {
- "version": "3.2.12",
- "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz",
- "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==",
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz",
+ "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==",
"dev": true,
"dependencies": {
"@nodelib/fs.stat": "^2.0.2",
@@ -2675,9 +2764,9 @@
"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==",
+ "version": "1.16.0",
+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.16.0.tgz",
+ "integrity": "sha512-ifCoaXsDrsdkWTtiNJX5uzHDsrck5TzfKKDcuFFTIrrc/BS076qgEIfoIy1VeZqViznfKiysPYTh/QeHtnIsYA==",
"dev": true,
"dependencies": {
"reusify": "^1.0.4"
@@ -2735,7 +2824,6 @@
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
"integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
- "dev": true,
"dependencies": {
"debug": "2.6.9",
"encodeurl": "~1.0.2",
@@ -2753,7 +2841,6 @@
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dev": true,
"dependencies": {
"ms": "2.0.0"
}
@@ -2761,8 +2848,7 @@
"node_modules/finalhandler/node_modules/ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
- "dev": true
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
},
"node_modules/find-up": {
"version": "5.0.0",
@@ -2810,9 +2896,9 @@
"dev": true
},
"node_modules/follow-redirects": {
- "version": "1.15.3",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz",
- "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==",
+ "version": "1.15.4",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.4.tgz",
+ "integrity": "sha512-Cr4D/5wlrb0z9dgERpUL3LrmPKVDsETIJhaCMeDfuFYcqa5bldGV6wBsAN6X/vxlXQtFBMrXdXxdL8CbDTGniw==",
"funding": [
{
"type": "individual",
@@ -2845,7 +2931,6 @@
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
"integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
- "dev": true,
"engines": {
"node": ">= 0.6"
}
@@ -2867,7 +2952,6 @@
"version": "0.5.2",
"resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
"integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
- "dev": true,
"engines": {
"node": ">= 0.6"
}
@@ -2916,11 +3000,18 @@
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
"integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
- "dev": true,
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/generate-function": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz",
+ "integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==",
+ "dependencies": {
+ "is-property": "^1.0.2"
+ }
+ },
"node_modules/get-caller-file": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
@@ -2934,7 +3025,6 @@
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz",
"integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==",
- "dev": true,
"dependencies": {
"function-bind": "^1.1.2",
"has-proto": "^1.0.1",
@@ -3008,7 +3098,6 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
"integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
- "dev": true,
"dependencies": {
"get-intrinsic": "^1.1.3"
},
@@ -3041,7 +3130,6 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz",
"integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==",
- "dev": true,
"dependencies": {
"get-intrinsic": "^1.2.2"
},
@@ -3053,7 +3141,6 @@
"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==",
- "dev": true,
"engines": {
"node": ">= 0.4"
},
@@ -3065,7 +3152,6 @@
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
"integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
- "dev": true,
"engines": {
"node": ">= 0.4"
},
@@ -3077,7 +3163,6 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz",
"integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==",
- "dev": true,
"dependencies": {
"function-bind": "^1.1.2"
},
@@ -3119,7 +3204,6 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
"integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
- "dev": true,
"dependencies": {
"depd": "2.0.0",
"inherits": "2.0.4",
@@ -3135,7 +3219,6 @@
"version": "0.4.24",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
"integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
- "dev": true,
"dependencies": {
"safer-buffer": ">= 2.1.2 < 3"
},
@@ -3216,8 +3299,7 @@
"node_modules/inherits": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
- "dev": true
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
},
"node_modules/inquirer": {
"version": "8.2.6",
@@ -3249,7 +3331,6 @@
"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==",
- "dev": true,
"engines": {
"node": ">= 0.10"
}
@@ -3377,6 +3458,11 @@
"integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==",
"dev": true
},
+ "node_modules/is-property": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz",
+ "integrity": "sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g=="
+ },
"node_modules/is-unicode-supported": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz",
@@ -3745,6 +3831,11 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/long": {
+ "version": "5.2.3",
+ "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz",
+ "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q=="
+ },
"node_modules/lowdb": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/lowdb/-/lowdb-1.0.0.tgz",
@@ -3790,11 +3881,16 @@
"node": ">=12"
}
},
+ "node_modules/make-error": {
+ "version": "1.3.6",
+ "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz",
+ "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==",
+ "dev": true
+ },
"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==",
- "dev": true,
"engines": {
"node": ">= 0.6"
}
@@ -3802,8 +3898,7 @@
"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==",
- "dev": true
+ "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w=="
},
"node_modules/merge2": {
"version": "1.4.1",
@@ -3848,7 +3943,6 @@
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
"integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==",
- "dev": true,
"engines": {
"node": ">= 0.6"
}
@@ -3870,7 +3964,6 @@
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
"integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
- "dev": true,
"bin": {
"mime": "cli.js"
},
@@ -3982,6 +4075,62 @@
"integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==",
"dev": true
},
+ "node_modules/mysql2": {
+ "version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.7.0.tgz",
+ "integrity": "sha512-c45jA3Jc1X8yJKzrWu1GpplBKGwv/wIV6ITZTlCSY7npF2YfJR+6nMP5e+NTQhUeJPSyOQAbGDCGEHbAl8HN9w==",
+ "dependencies": {
+ "denque": "^2.1.0",
+ "generate-function": "^2.3.1",
+ "iconv-lite": "^0.6.3",
+ "long": "^5.2.1",
+ "lru-cache": "^8.0.0",
+ "named-placeholders": "^1.1.3",
+ "seq-queue": "^0.0.5",
+ "sqlstring": "^2.3.2"
+ },
+ "engines": {
+ "node": ">= 8.0"
+ }
+ },
+ "node_modules/mysql2/node_modules/iconv-lite": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
+ "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
+ "dependencies": {
+ "safer-buffer": ">= 2.1.2 < 3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/mysql2/node_modules/lru-cache": {
+ "version": "8.0.5",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-8.0.5.tgz",
+ "integrity": "sha512-MhWWlVnuab1RG5/zMRRcVGXZLCXrZTgfwMikgzCegsPnG62yDQo5JnqKkrK4jO5iKqDAZGItAqN5CtKBCBWRUA==",
+ "engines": {
+ "node": ">=16.14"
+ }
+ },
+ "node_modules/named-placeholders": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/named-placeholders/-/named-placeholders-1.1.3.tgz",
+ "integrity": "sha512-eLoBxg6wE/rZkJPhU/xRX1WTpkFEwDJEN96oxFrTsqBdbT5ec295Q+CoHrL9IT0DipqKhmGcaZmwOt8OON5x1w==",
+ "dependencies": {
+ "lru-cache": "^7.14.1"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ }
+ },
+ "node_modules/named-placeholders/node_modules/lru-cache": {
+ "version": "7.18.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
+ "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==",
+ "engines": {
+ "node": ">=12"
+ }
+ },
"node_modules/nanoid": {
"version": "3.3.7",
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",
@@ -4009,7 +4158,6 @@
"version": "0.6.3",
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
"integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
- "dev": true,
"engines": {
"node": ">= 0.6"
}
@@ -4072,7 +4220,6 @@
"version": "1.13.1",
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz",
"integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==",
- "dev": true,
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
@@ -4081,7 +4228,6 @@
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
"integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
- "dev": true,
"dependencies": {
"ee-first": "1.1.1"
},
@@ -4243,7 +4389,6 @@
"version": "1.3.3",
"resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
"integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
- "dev": true,
"engines": {
"node": ">= 0.8"
}
@@ -4284,8 +4429,7 @@
"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==",
- "dev": true
+ "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ=="
},
"node_modules/picocolors": {
"version": "1.0.0",
@@ -4382,9 +4526,9 @@
}
},
"node_modules/postcss": {
- "version": "8.4.32",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.32.tgz",
- "integrity": "sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==",
+ "version": "8.4.33",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.33.tgz",
+ "integrity": "sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg==",
"funding": [
{
"type": "opencollective",
@@ -4409,9 +4553,9 @@
}
},
"node_modules/postcss-selector-parser": {
- "version": "6.0.13",
- "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz",
- "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==",
+ "version": "6.0.15",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.15.tgz",
+ "integrity": "sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==",
"dev": true,
"dependencies": {
"cssesc": "^3.0.0",
@@ -4461,7 +4605,6 @@
"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==",
- "dev": true,
"dependencies": {
"forwarded": "0.2.0",
"ipaddr.js": "1.9.1"
@@ -4488,7 +4631,6 @@
"version": "6.11.0",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
"integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
- "dev": true,
"dependencies": {
"side-channel": "^1.0.4"
},
@@ -4500,9 +4642,9 @@
}
},
"node_modules/quasar": {
- "version": "2.14.1",
- "resolved": "https://registry.npmjs.org/quasar/-/quasar-2.14.1.tgz",
- "integrity": "sha512-TAIGUgHASlL7COS9qqfDKyV2+WGFcHQseIDTzN+yfXaXY5gn/FZqwkEnb87bgOqgGYw8KJerkfZg3aSel+bLPw==",
+ "version": "2.14.2",
+ "resolved": "https://registry.npmjs.org/quasar/-/quasar-2.14.2.tgz",
+ "integrity": "sha512-f5KliWtM5BEuFsDU4yvuP+dlVIWZNrGu5VpWFsxzjpoykcP4B2HIOUiCl3mx2NCqERHd4Ts0aeioRkt9TTeExA==",
"engines": {
"node": ">= 10.18.1",
"npm": ">= 6.13.4",
@@ -4546,7 +4688,6 @@
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
"integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
- "dev": true,
"engines": {
"node": ">= 0.6"
}
@@ -4555,7 +4696,6 @@
"version": "2.5.1",
"resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz",
"integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==",
- "dev": true,
"dependencies": {
"bytes": "3.1.2",
"http-errors": "2.0.0",
@@ -4570,7 +4710,6 @@
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
"integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
- "dev": true,
"engines": {
"node": ">= 0.8"
}
@@ -4744,9 +4883,9 @@
}
},
"node_modules/rollup-plugin-visualizer": {
- "version": "5.11.0",
- "resolved": "https://registry.npmjs.org/rollup-plugin-visualizer/-/rollup-plugin-visualizer-5.11.0.tgz",
- "integrity": "sha512-exM0Ms2SN3AgTzMeW7y46neZQcyLY7eKwWAop1ZoRTCZwyrIRdMMJ6JjToAJbML77X/9N8ZEpmXG4Z/Clb9k8g==",
+ "version": "5.12.0",
+ "resolved": "https://registry.npmjs.org/rollup-plugin-visualizer/-/rollup-plugin-visualizer-5.12.0.tgz",
+ "integrity": "sha512-8/NU9jXcHRs7Nnj07PF2o4gjxmm9lXIrZ8r175bT9dK8qoLlvKTwRMArRCMgpMGlq8CTLugRvEmyMeMXIU2pNQ==",
"dev": true,
"dependencies": {
"open": "^8.4.0",
@@ -4828,13 +4967,12 @@
"node_modules/safer-buffer": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
- "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
- "dev": true
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
},
"node_modules/sass": {
- "version": "1.69.5",
- "resolved": "https://registry.npmjs.org/sass/-/sass-1.69.5.tgz",
- "integrity": "sha512-qg2+UCJibLr2LCVOt3OlPhr/dqVHWOa9XtZf2OjbLs/T4VPSJ00udtgJxH3neXZm+QqX8B+3cU7RaLqp1iVfcQ==",
+ "version": "1.69.7",
+ "resolved": "https://registry.npmjs.org/sass/-/sass-1.69.7.tgz",
+ "integrity": "sha512-rzj2soDeZ8wtE2egyLXgOOHQvaC2iosZrkF6v3EUG+tBwEvhqUCzm0VP3k9gHF9LXbSrRhT5SksoI56Iw8NPnQ==",
"dev": true,
"dependencies": {
"chokidar": ">=3.0.0 <4.0.0",
@@ -4879,7 +5017,6 @@
"version": "0.18.0",
"resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
"integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
- "dev": true,
"dependencies": {
"debug": "2.6.9",
"depd": "2.0.0",
@@ -4903,7 +5040,6 @@
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dev": true,
"dependencies": {
"ms": "2.0.0"
}
@@ -4911,19 +5047,22 @@
"node_modules/send/node_modules/debug/node_modules/ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
- "dev": true
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
},
"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==",
- "dev": true
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
+ },
+ "node_modules/seq-queue": {
+ "version": "0.0.5",
+ "resolved": "https://registry.npmjs.org/seq-queue/-/seq-queue-0.0.5.tgz",
+ "integrity": "sha512-hr3Wtp/GZIc/6DAGPDcV4/9WoZhjrkXsi5B/07QgX8tsdc6ilr7BFM6PM6rbdAX1kFSDYeZGLipIZZKyQP0O5Q=="
},
"node_modules/serialize-javascript": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz",
- "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==",
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz",
+ "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==",
"dev": true,
"dependencies": {
"randombytes": "^2.1.0"
@@ -4933,7 +5072,6 @@
"version": "1.15.0",
"resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz",
"integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
- "dev": true,
"dependencies": {
"encodeurl": "~1.0.2",
"escape-html": "~1.0.3",
@@ -4954,7 +5092,6 @@
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz",
"integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==",
- "dev": true,
"dependencies": {
"define-data-property": "^1.1.1",
"get-intrinsic": "^1.2.1",
@@ -4968,8 +5105,7 @@
"node_modules/setprototypeof": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
- "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==",
- "dev": true
+ "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
},
"node_modules/shallow-clone": {
"version": "3.0.1",
@@ -5008,7 +5144,6 @@
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
"integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
- "dev": true,
"dependencies": {
"call-bind": "^1.0.0",
"get-intrinsic": "^1.0.2",
@@ -5058,6 +5193,14 @@
"node": ">=0.10.0"
}
},
+ "node_modules/sqlstring": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.3.tgz",
+ "integrity": "sha512-qC9iz2FlN7DQl3+wjwn3802RTyjCx7sDvfQEXchwa6CWOx07/WVfh91gBmQ9fahw8snwGEWU3xGzOt4tFyHLxg==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
"node_modules/stack-trace": {
"version": "1.0.0-pre2",
"resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-1.0.0-pre2.tgz",
@@ -5071,7 +5214,6 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
"integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
- "dev": true,
"engines": {
"node": ">= 0.8"
}
@@ -5270,11 +5412,53 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
"integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
- "dev": true,
"engines": {
"node": ">=0.6"
}
},
+ "node_modules/ts-node": {
+ "version": "10.9.2",
+ "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz",
+ "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==",
+ "dev": true,
+ "dependencies": {
+ "@cspotcode/source-map-support": "^0.8.0",
+ "@tsconfig/node10": "^1.0.7",
+ "@tsconfig/node12": "^1.0.7",
+ "@tsconfig/node14": "^1.0.0",
+ "@tsconfig/node16": "^1.0.2",
+ "acorn": "^8.4.1",
+ "acorn-walk": "^8.1.1",
+ "arg": "^4.1.0",
+ "create-require": "^1.1.0",
+ "diff": "^4.0.1",
+ "make-error": "^1.1.1",
+ "v8-compile-cache-lib": "^3.0.1",
+ "yn": "3.1.1"
+ },
+ "bin": {
+ "ts-node": "dist/bin.js",
+ "ts-node-cwd": "dist/bin-cwd.js",
+ "ts-node-esm": "dist/bin-esm.js",
+ "ts-node-script": "dist/bin-script.js",
+ "ts-node-transpile-only": "dist/bin-transpile.js",
+ "ts-script": "dist/bin-script-deprecated.js"
+ },
+ "peerDependencies": {
+ "@swc/core": ">=1.2.50",
+ "@swc/wasm": ">=1.2.50",
+ "@types/node": "*",
+ "typescript": ">=2.7"
+ },
+ "peerDependenciesMeta": {
+ "@swc/core": {
+ "optional": true
+ },
+ "@swc/wasm": {
+ "optional": true
+ }
+ }
+ },
"node_modules/tslib": {
"version": "2.6.2",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
@@ -5294,9 +5478,9 @@
}
},
"node_modules/type-fest": {
- "version": "4.8.3",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.8.3.tgz",
- "integrity": "sha512-//BaTm14Q/gHBn09xlnKNqfI8t6bmdzx2DXYfPBNofN0WUybCEUDcbCWcTa0oF09lzLjZgPphXAsvRiMK0V6Bw==",
+ "version": "4.9.0",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.9.0.tgz",
+ "integrity": "sha512-KS/6lh/ynPGiHD/LnAobrEFq3Ad4pBzOlJ1wAnJx9N4EYoqFhMfLIBjUT2UEx4wg5ZE+cC1ob6DCSpppVo+rtg==",
"engines": {
"node": ">=16"
},
@@ -5308,7 +5492,6 @@
"version": "1.6.18",
"resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
"integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
- "dev": true,
"dependencies": {
"media-typer": "0.3.0",
"mime-types": "~2.1.24"
@@ -5318,17 +5501,16 @@
}
},
"node_modules/typescript": {
- "version": "4.9.5",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz",
- "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==",
- "optional": true,
- "peer": true,
+ "version": "5.3.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz",
+ "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==",
+ "devOptional": true,
"bin": {
"tsc": "bin/tsc",
"tsserver": "bin/tsserver"
},
"engines": {
- "node": ">=4.2.0"
+ "node": ">=14.17"
}
},
"node_modules/uglify-js": {
@@ -5343,6 +5525,12 @@
"node": ">=0.8.0"
}
},
+ "node_modules/undici-types": {
+ "version": "5.26.5",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
+ "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
+ "dev": true
+ },
"node_modules/universalify": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
@@ -5356,7 +5544,6 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
"integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
- "dev": true,
"engines": {
"node": ">= 0.8"
}
@@ -5416,30 +5603,34 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
"integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==",
- "dev": true,
"engines": {
"node": ">= 0.4.0"
}
},
+ "node_modules/v8-compile-cache-lib": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz",
+ "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==",
+ "dev": true
+ },
"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==",
- "dev": true,
"engines": {
"node": ">= 0.8"
}
},
"node_modules/vee-validate": {
- "version": "4.12.2",
- "resolved": "https://registry.npmjs.org/vee-validate/-/vee-validate-4.12.2.tgz",
- "integrity": "sha512-SF5AOHbyW8vy09FgMRVHxCtK/3D5Jsk0VyvMf/HZhwPgpjGCCBW6ZWDW11/HC6pRbMOjTcg3YueBI6hb3oveYg==",
+ "version": "4.12.4",
+ "resolved": "https://registry.npmjs.org/vee-validate/-/vee-validate-4.12.4.tgz",
+ "integrity": "sha512-rqSjMdl0l/RiGKywKhkXttUKwDlQOoxTxe31uMQiMlwK4Hbtlvr3OcQvpREp/qPTARxNKudKWCUVW/mfzuxUVQ==",
"dependencies": {
"@vue/devtools-api": "^6.5.1",
- "type-fest": "^4.8.2"
+ "type-fest": "^4.8.3"
},
"peerDependencies": {
- "vue": "^3.3.8"
+ "vue": "^3.3.11"
}
},
"node_modules/vite": {
@@ -5480,15 +5671,15 @@
}
},
"node_modules/vue": {
- "version": "3.3.11",
- "resolved": "https://registry.npmjs.org/vue/-/vue-3.3.11.tgz",
- "integrity": "sha512-d4oBctG92CRO1cQfVBZp6WJAs0n8AK4Xf5fNjQCBeKCvMI1efGQ5E3Alt1slFJS9fZuPcFoiAiqFvQlv1X7t/w==",
+ "version": "3.4.7",
+ "resolved": "https://registry.npmjs.org/vue/-/vue-3.4.7.tgz",
+ "integrity": "sha512-4urmkWpudekq0CPNMO7p6mBGa9qmTXwJMO2r6CT4EzIJVG7WoSReiysiNb7OSi/WI113oX0Srn9Rz1k/DCXKFQ==",
"dependencies": {
- "@vue/compiler-dom": "3.3.11",
- "@vue/compiler-sfc": "3.3.11",
- "@vue/runtime-dom": "3.3.11",
- "@vue/server-renderer": "3.3.11",
- "@vue/shared": "3.3.11"
+ "@vue/compiler-dom": "3.4.7",
+ "@vue/compiler-sfc": "3.4.7",
+ "@vue/runtime-dom": "3.4.7",
+ "@vue/server-renderer": "3.4.7",
+ "@vue/shared": "3.4.7"
},
"peerDependencies": {
"typescript": "*"
@@ -5499,10 +5690,15 @@
}
}
},
+ "node_modules/vue-coerce-props": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/vue-coerce-props/-/vue-coerce-props-1.0.0.tgz",
+ "integrity": "sha512-4fdRMXO6FHzmE7H4soAph6QmPg3sL/RiGdd+axuxuU07f02LNMns0jMM88fmt1bvSbN+2Wyd8raho6p6nXUzag=="
+ },
"node_modules/vue-eslint-parser": {
- "version": "9.3.2",
- "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.3.2.tgz",
- "integrity": "sha512-q7tWyCVaV9f8iQyIA5Mkj/S6AoJ9KBN8IeUSf3XEmBrOtxOZnfTg5s4KClbZBCK3GtnT/+RyCLZyDHuZwTuBjg==",
+ "version": "9.4.0",
+ "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.4.0.tgz",
+ "integrity": "sha512-7KsNBb6gHFA75BtneJsoK/dbZ281whUIwFYdQxA68QrCrGMXYzUMbPDHGcOQ0OocIVKrWSKWXZ4mL7tonCXoUw==",
"dev": true,
"dependencies": {
"debug": "^4.3.4",
@@ -5523,38 +5719,13 @@
"eslint": ">=6.0.0"
}
},
- "node_modules/vue-eslint-parser/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/vue-eslint-parser/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/vue-i18n": {
- "version": "9.8.0",
- "resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-9.8.0.tgz",
- "integrity": "sha512-Izho+6PYjejsTq2mzjcRdBZ5VLRQoSuuexvR8029h5CpN03FYqiqBrShMyf2I1DKkN6kw/xmujcbvC+4QybpsQ==",
+ "version": "9.9.0",
+ "resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-9.9.0.tgz",
+ "integrity": "sha512-xQ5SxszUAqK5n84N+uUyHH/PiQl9xZ24FOxyAaNonmOQgXeN+rD9z/6DStOpOxNFQn4Cgcquot05gZc+CdOujA==",
"dependencies": {
- "@intlify/core-base": "9.8.0",
- "@intlify/shared": "9.8.0",
+ "@intlify/core-base": "9.9.0",
+ "@intlify/shared": "9.9.0",
"@vue/devtools-api": "^6.5.0"
},
"engines": {
@@ -5733,6 +5904,15 @@
"node": ">=12"
}
},
+ "node_modules/yn": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz",
+ "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/yocto-queue": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
diff --git a/package.json b/package.json
index 19a5d09..57dd062 100644
--- a/package.json
+++ b/package.json
@@ -9,35 +9,42 @@
"lint": "eslint --ext .js,.vue ./",
"format": "prettier --write \"**/*.{js,vue,scss,html,md,json}\" --ignore-path .gitignore",
"dev": "quasar dev -m ssr",
+ "api": "cd api && node --env-file .env index.js ",
"build": "quasar build -m ssr",
+ "build:api": "cd api && tsc",
"start:build": "npm run build && cd dist/ssr && npm i && npm run start",
- "backend": "json-server -p 5000 -d 600 -w src/services/json-server/db.json"
+ "backend": "json-server -p 3000 -d 600 -w src/services/json-server/db.json --routes src/services/json-server/routes.json"
},
"dependencies": {
- "@vee-validate/zod": "^4.12.2",
- "@vueuse/core": "^10.7.0",
- "vee-validate": "^4.12.2",
- "vue-image-zoomer": "^2.2.3",
- "zod": "^3.22.4",
- "axios": "^1.2.1",
- "vue-i18n": "^9.0.0",
- "pinia": "^2.0.11",
"@quasar/extras": "^1.16.4",
+ "@vee-validate/zod": "^4.12.2",
+ "@vue-stripe/vue-stripe": "^4.5.0",
+ "@vueuse/core": "^10.7.0",
+ "axios": "^1.2.1",
+ "express": "^4.18.2",
+ "mysql2": "^3.7.0",
+ "pinia": "^2.0.11",
"quasar": "^2.6.0",
+ "vee-validate": "^4.12.2",
"vue": "^3.0.0",
- "vue-router": "^4.0.0"
+ "vue-i18n": "^9.0.0",
+ "vue-image-zoomer": "^2.2.3",
+ "vue-router": "^4.0.0",
+ "zod": "^3.22.4"
},
"devDependencies": {
"@faker-js/faker": "^8.3.1",
- "json-server": "^0.17.4",
- "eslint": "^8.10.0",
- "eslint-plugin-vue": "^9.0.0",
- "eslint-config-prettier": "^8.1.0",
- "prettier": "^2.5.1",
"@intlify/vite-plugin-vue-i18n": "^3.3.1",
"@quasar/app-vite": "^1.3.0",
"autoprefixer": "^10.4.2",
- "postcss": "^8.4.14"
+ "eslint": "^8.10.0",
+ "eslint-config-prettier": "^8.1.0",
+ "eslint-plugin-vue": "^9.0.0",
+ "json-server": "^0.17.4",
+ "postcss": "^8.4.14",
+ "prettier": "^2.5.1",
+ "ts-node": "^10.9.2",
+ "typescript": "^5.3.3"
},
"engines": {
"node": "^18 || ^16 || ^14.19",
diff --git a/public/assets/empty-img.jpg b/public/assets/empty-img.jpg
new file mode 100644
index 0000000..f50017d
Binary files /dev/null and b/public/assets/empty-img.jpg differ
diff --git a/public/assets/empty-img.png b/public/assets/empty-img.png
deleted file mode 100644
index 9ceb2a9..0000000
Binary files a/public/assets/empty-img.png and /dev/null differ
diff --git a/public/icons/floranet-favicon.jpg b/public/icons/floranet-favicon.jpg
new file mode 100644
index 0000000..92fbd71
Binary files /dev/null and b/public/icons/floranet-favicon.jpg differ
diff --git a/quasar.config.js b/quasar.config.js
index 7af8b1f..65fdc62 100644
--- a/quasar.config.js
+++ b/quasar.config.js
@@ -28,7 +28,7 @@ module.exports = configure(function (/* ctx */) {
// app boot file (/src/boot)
// --> boot files are part of "main.js"
// https://v2.quasar.dev/quasar-cli-vite/boot-files
- boot: ["i18n", "axios"],
+ boot: ["i18n", "axios" /* , "stripe" */],
// https://v2.quasar.dev/quasar-cli-vite/quasar-config-js#css
css: ["app.scss"],
@@ -119,7 +119,7 @@ module.exports = configure(function (/* ctx */) {
// directives: [],
// Quasar plugins
- plugins: ["Meta", "Loading"],
+ plugins: ["Meta", "Loading", "Notify"],
},
// animations: 'all', // --- includes all animations
diff --git a/src/App.vue b/src/App.vue
index 766718e..712cc57 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -1,11 +1,11 @@
+
+
-
-
diff --git a/src/assets/empty-img.png b/src/assets/empty-img.png
deleted file mode 100644
index 9ceb2a9..0000000
Binary files a/src/assets/empty-img.png and /dev/null differ
diff --git a/src/boot/axios.js b/src/boot/axios.js
index f10e1cd..b1d4769 100644
--- a/src/boot/axios.js
+++ b/src/boot/axios.js
@@ -7,7 +7,8 @@ import { boot } from "quasar/wrappers";
// good idea to move this instance creation inside of the
// "export default () => {}" function below (which runs individually
// for each client)
-const api = axios.create({ baseURL: "http://localhost:5000/" });
+const api = axios.create({ baseURL: "http://localhost:3000/jsonServer/" });
+const apiBack = axios.create({ baseURL: "http://localhost:9999/api/" });
export default boot(({ app }) => {
// for use inside Vue files (Options API) through this.$axios and this.$api
@@ -17,8 +18,9 @@ export default boot(({ app }) => {
// so you won't necessarily have to import axios in each vue file
app.config.globalProperties.$api = api;
+ app.config.globalProperties.$apiBack = apiBack;
// ^ ^ ^ this will allow you to use this.$api (for Vue Options API form)
// so you can easily perform requests against your app's API
});
-export { api };
+export { api, apiBack };
diff --git a/src/boot/i18n.js b/src/boot/i18n.js
index e3ae0dc..4bb3e96 100644
--- a/src/boot/i18n.js
+++ b/src/boot/i18n.js
@@ -1,6 +1,6 @@
import { boot } from "quasar/wrappers";
-import { createI18n } from "vue-i18n";
import messages from "src/i18n";
+import { createI18n } from "vue-i18n";
export default boot(({ app }) => {
const i18n = createI18n({
diff --git a/src/boot/stripe.js b/src/boot/stripe.js
new file mode 100644
index 0000000..4fd688b
--- /dev/null
+++ b/src/boot/stripe.js
@@ -0,0 +1,17 @@
+import { StripePlugin } from "@vue-stripe/vue-stripe";
+import { boot } from "quasar/wrappers";
+
+// "async" is optional;
+// more info on params: https://v2.quasar.dev/quasar-cli/boot-files
+export default boot(async ({ app, router, store }) => {
+ if (typeof window === "undefined") return;
+
+ const options = {
+ pk: process.env.STRIPE_PUBLISHABLE_KEY,
+ stripeAccount: process.env.STRIPE_ACCOUNT,
+ apiVersion: process.env.API_VERSION,
+ locale: process.env.LOCALE,
+ };
+
+ app.use(StripePlugin, options);
+});
diff --git a/src/components/@inputs/Calendar.vue b/src/components/@inputs/Calendar.vue
index 7f8125a..241affe 100644
--- a/src/components/@inputs/Calendar.vue
+++ b/src/components/@inputs/Calendar.vue
@@ -1,3 +1,68 @@
+
+
-
-
diff --git a/src/components/@inputs/Example/CalendarEx.vue b/src/components/@inputs/Example/CalendarEx.vue
new file mode 100644
index 0000000..f68c989
--- /dev/null
+++ b/src/components/@inputs/Example/CalendarEx.vue
@@ -0,0 +1,62 @@
+
+
+
+
+
diff --git a/src/components/@inputs/Example/PostalCodeEx.vue b/src/components/@inputs/Example/PostalCodeEx.vue
new file mode 100644
index 0000000..2f99696
--- /dev/null
+++ b/src/components/@inputs/Example/PostalCodeEx.vue
@@ -0,0 +1,62 @@
+
+
+
+
+
diff --git a/src/components/@inputs/PostalCode.vue b/src/components/@inputs/PostalCode.vue
index 31fb34b..25919ab 100644
--- a/src/components/@inputs/PostalCode.vue
+++ b/src/components/@inputs/PostalCode.vue
@@ -1,38 +1,16 @@
-
-
-
+
+
+
+
+
diff --git a/src/components/@inputs/PriceRange.vue b/src/components/@inputs/PriceRange.vue
index 476cec5..c420066 100644
--- a/src/components/@inputs/PriceRange.vue
+++ b/src/components/@inputs/PriceRange.vue
@@ -1,36 +1,22 @@
-
-
-
Precio
-
-
-
-
-
- Desde:
- {{ rangePriceStore.rangeValue.min }}€
-
-
-
- Hasta:
- {{ rangePriceStore.rangeValue.max }}€
-
-
-
-
-
-
+
+
+
Precio
+
+
+
+
+
+ Desde:
+ {{ min }}€
+
+
+
+ Hasta:
+ {{ max }}€
+
+
+
+
+
diff --git a/src/components/header/HeaderPrimary.vue b/src/components/header/HeaderPrimary.vue
index 336ce29..41fee16 100644
--- a/src/components/header/HeaderPrimary.vue
+++ b/src/components/header/HeaderPrimary.vue
@@ -1,3 +1,28 @@
+
+
-
-
diff --git a/src/components/quasar-components/carousel/VerticalCarouselImgs.vue b/src/components/quasar-components/carousel/VerticalCarouselImgs.vue
index b1a2a50..4ecf06b 100644
--- a/src/components/quasar-components/carousel/VerticalCarouselImgs.vue
+++ b/src/components/quasar-components/carousel/VerticalCarouselImgs.vue
@@ -1,3 +1,59 @@
+
+
-
-
diff --git a/src/components/ui/Card.vue b/src/components/ui/Card.vue
index 2cfa735..b67e1dd 100644
--- a/src/components/ui/Card.vue
+++ b/src/components/ui/Card.vue
@@ -1,8 +1,76 @@
+
+