commit e3cf1eb82d3a705fe03c7af30d969a137a3761a3 Author: tuz Date: Fri Oct 17 00:23:19 2025 -0500 Update diff --git a/README.md b/README.md new file mode 100644 index 0000000..e046c8c --- /dev/null +++ b/README.md @@ -0,0 +1,351 @@ +# HTML CSS JS + +`html` +`HyperText Markup Language` +`css` +`Cascading Style Sheets` +`js` + +## Basic reset + +```css +* { + margin: 0; + padding: 0; + box-sizing: border-box; +} +``` +## ! + +```html + +``` + +## div +```html +
+ + +
+``` + + + +## Sources + +### Link + +```html + + + + + + + +``` + +### Video +```html + +``` + +### Audio +```html + +``` + + + + +```html + + + + + + + +
+
+ +
+ +
+
+ + + +
+
HTML
+
Lenguaje de marcado para crear páginas web
+ +
CSS
+
Lenguaje para dar estilo a las páginas web
+
+ +

Título Principal

+

Subtítulo

+

Sección

+

Subsección

+
Apartado
+
Subapartado
+ +Formato de Texto +Texto importante +Texto enfatizado +Texto resaltado +Texto pequeño +Texto eliminado +Texto insertado +subíndice +superíndice + +Enlaces y Navegación + +Ir a Google + + +Contacto + + +Ir a sección + + +Enviar correo + + +Llamar + +cloud + + + + + + + +home + + +https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/link + + +Home + + + +Home + + +https://stackoverflow.com/questions/68838248/how-do-you-add-a-link-inside-an-svg-image-file + +https://www.w3schools.com/graphics/svg_hyperlinks.asp +``` + +(Noopener noreferrer)[https://stackoverflow.com/questions/79600136/when-adding-target-blank-to-a-html-link-is-it-still-necessary-to-add-rel-no] + + + + +
+
+
+
+

+ +
+ + + +
+
+ Ubicación + + + + + +
+
+ + + + + + + + + + + + + + + +# Web + +## Lang + +- html +- css +- js + + + + + + + +Link: +http://fngggljygpsc653xd22hyyvubyxeubymaomjqjwnd5tjo64mwo73fsad.onion +http://fngggljygpsc653xd22hyyvubyxeubymaomjqjwnd5tjo64mwo73fsad.onion/public/ + + +--------------------------------------------- + +nginx +https://nginx.org/en/ + +command: +taskkill /IM nginx.exe /F + + +Tor Browser +https://www.torproject.org/ +https://www.torproject.org/download/ + +command: +taskkill /IM tor.exe /F + +--------------------------------------------- + + +Config: + +Tor +1: +C:\root\src\zarga\TorBrowser\Browser\TorBrowser\Data\Tor\torrc + +torrc.txt = +HiddenServiceDir C:\root\src\zarga\TorBrowser\hidden_service +HiddenServicePort 80 127.0.0.1:8080 + + +--------------------------------------------- + +nginx +2: +nginx/conf = + + + + + +Check url: + +hidden_Service = Hotname = fngggljygpsc653xd22hyyvubyxeubymaomjqjwnd5tjo64mwo73fsad.onion + + + + +Start: + +win + r, sysdm.cpl + +path = +C:\root\src\zarga\nginx + +Descartado [ +NGINX_CONF_PATH=C:\root\src\zarga\nginx\conf\nginx.conf +Set Variable Name: NGINX_CONF_PATH +Set Variable Value: C:\root\src\zarga\nginx\conf\nginx.conf + +C:/root/src/zarga/nginx/conf/nginx.conf + +C:\root\src\zarga\TorBrowser\Browser +] + +firefox.exe + +cd C:\root\src\zarga\nginx +nginx.exe + + + + +//////////////////////////////////////////////////////////// + +path: +C:\root\src\zarga\php-8.4.3-nts-Win32-vs17-x64 + +Build web server: + +php: +https://windows.php.net/download +VS17 x64 Non Thread Safe (2025-Jan-15 11:07:36) + + +php/php.ini-production + + +cd C:\root\src\zarga\php-8.4.3-nts-Win32-vs17-x64 + +php-cgi.exe -b 127.0.0.1:9000 + +nginx -s reload + + + + + + +Execute compile: + +php-cgi.exe -b 127.0.0.1:9000 + +cd C:\root\src\zarga\nginx> +nginx.exe + +firefox.exe + + +Stop run: + +taskkill /IM nginx.exe /F +taskkill /F /IM tor.exe + + + +--------------------------------------------- + +https://www.apachefriends.org/es/index.html +https://www.apachefriends.org/es/download_success.html +https://www.apachefriends.org/es/download.html + + +C:\xampp\htdocs\ + + taskkill /IM xampp-control.exe /F + +DocumentRoot "C:/xampp/htdocs" to +C:/root/src/php/htdocss + +DocumentRoot "C:/root/src/php/htdocs" + + + +Listen 80 +ServerName localhost:80 + +Listen 8080 +ServerName localhost:8080 + + +http://localhost:80/ diff --git a/lang/css.border.md b/lang/css.border.md new file mode 100644 index 0000000..9e68bcd --- /dev/null +++ b/lang/css.border.md @@ -0,0 +1,6 @@ +# border + + +```css +border-radius +``` diff --git a/lang/css.flex.md b/lang/css.flex.md new file mode 100644 index 0000000..32ac6d2 --- /dev/null +++ b/lang/css.flex.md @@ -0,0 +1,46 @@ +# Flex + +```css +.div-flex { + display: flex; +} +``` + + +## flex tag + +`Flex equivalent` +```css +flex: 1; + +flex: 1 1 0%; + +flex-grow: 1; +flex-shrink: 1; +flex-basis: 0%; +``` + + +## Order +```css +justify-content: center; +align-items: center; +``` + +### Example +```css +Center horizontal +<--------x--------> +justify-content: center; + + +Center vertical +^ +| +| +x +| +| +v +align-items: center; +``` \ No newline at end of file diff --git a/lang/css.grid.md b/lang/css.grid.md new file mode 100644 index 0000000..e69de29 diff --git a/lang/css.template.md b/lang/css.template.md new file mode 100644 index 0000000..b4286df --- /dev/null +++ b/lang/css.template.md @@ -0,0 +1,34 @@ +# Template +```css +* { + margin: 0; + padding: 0; + box-sizing: border-box; +} +``` + +```css +* { + margin: 0; + padding: 0; + box-sizing: border-box; +} + +/* Movil */ + + +/* Tablet */ +@media (min-width: 600px) { + +} + +/* Desktop 1 */ +@media (min-width: 900px) { + +} + +/* Desktop 2 */ +@media (min-width: 1200px) { + +} +``` \ No newline at end of file diff --git a/lang/css.zoom.md b/lang/css.zoom.md new file mode 100644 index 0000000..90d70a2 --- /dev/null +++ b/lang/css.zoom.md @@ -0,0 +1,22 @@ +# Zoom + +```css +/* values */ +zoom: 50%; +zoom: 200%; + +/* values */ +zoom: 1.1; +zoom: 0.7; + +/* Non-standard keyword values */ +zoom: normal; +zoom: reset; + +/* Global values */ +zoom: inherit; +zoom: initial; +zoom: revert; +zoom: revert-layer; +zoom: unset; +``` \ No newline at end of file diff --git a/lang/html.deprecate.md b/lang/html.deprecate.md new file mode 100644 index 0000000..b9a724f --- /dev/null +++ b/lang/html.deprecate.md @@ -0,0 +1 @@ +br diff --git a/lang/html.div.md b/lang/html.div.md new file mode 100644 index 0000000..2f4fc17 --- /dev/null +++ b/lang/html.div.md @@ -0,0 +1,4 @@ +
+ + +
diff --git a/lang/html.form.md b/lang/html.form.md new file mode 100644 index 0000000..50ea32a --- /dev/null +++ b/lang/html.form.md @@ -0,0 +1,58 @@ + +## Upload files + +`multiple files` + +```html +
+ + +
+``` + + + +
+ + +
+ +```html +
+
+ + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+ +``` diff --git a/lang/html.import.md b/lang/html.import.md new file mode 100644 index 0000000..4f9bc24 --- /dev/null +++ b/lang/html.import.md @@ -0,0 +1,25 @@ +# CSS import + +```html + +``` + + +## Example +```html + + + + + + Document + + + +
+
+
+ + +``` + diff --git a/lang/html.template.md b/lang/html.template.md new file mode 100644 index 0000000..a14cc8b --- /dev/null +++ b/lang/html.template.md @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/server/caddy/README.md b/server/caddy/README.md new file mode 100644 index 0000000..3e2bd02 --- /dev/null +++ b/server/caddy/README.md @@ -0,0 +1,321 @@ +# Caddy + +## Remove + +### Apache + +```sh +sudo lsof -i :80 +sudo systemctl stop apache2 +sudo systemctl disable apache2 +sudo apt remove --purge apache2 apache2-utils apache2-bin apache2.2-common -y +sudo apt autoremove -y +sudo rm -rf /etc/apache2 +``` + +## Install + +```sh +sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl +curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg +curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | \ +sudo tee /etc/apt/sources.list.d/caddy-stable.list +sudo apt update +sudo apt install caddy -y + +sudo chown -R caddy:caddy /var/lib/caddy +sudo chmod -R 700 /var/lib/caddy + +sudo chown root:caddy /etc/caddy/Caddyfile +sudo chmod 640 /etc/caddy/Caddyfile + +ufw allow 80 +ufw allow 443 +``` + + +## Commands + +```sh +sudo systemctl start caddy +sudo systemctl enable caddy +sudo systemctl stop caddy + +sudo systemctl daemon-reload + +sudo systemctl status caddy +sudo systemctl reload caddy +sudo systemctl restart caddy + + +sudo systemctl status caddy +journalctl -u caddy -f + + +sudo caddy validate --config /etc/caddy/Caddyfile +sudo caddy fmt --overwrite /etc/caddy/Caddyfile +sudo nano /etc/caddy/Caddyfile +sudo systemctl stop caddy +sudo caddy run --config /etc/caddy/Caddyfile --adapter caddyfile + + +Server +sudo nano /etc/caddy/Caddyfile + +http://your.server.ip:8080 { + root * /var/www/my-site + file_server +} + + + +sudo chown -R caddy:caddy /var/www/xmpp.chat.local +sudo chmod -R 755 /var/www/xmpp.chat.local + + +sudo chown -R caddy:caddy /var/www/www.ts +sudo chmod -R 755 /var/www/www.ts +``` + + + + + + + + echo Markdown::code(" +tls internal + +tls /etc/caddy/certs/xmpp.chat.local.crt /etc/caddy/certs/xmpp.chat.local.key + + +cd /var/lib/caddy + +ls ~/.local/share/caddy/pki/authorities/local + +sudo chown -R caddy:caddy /var/lib/caddy +sudo chmod 700 /var/lib/caddy +/var/lib/caddy + +~/.local/share/caddy + + +sudo chown caddy:caddy /etc/ssl/certs/yourcert.pem /etc/ssl/private/yourkey.pem +sudo chmod 600 /etc/ssl/private/yourkey.pem +sudo chmod 644 /etc/ssl/certs/yourcert.pem + + +sudo chown -R navide:navide /home/navide/share/ +cp ~/.local/share/caddy/pki/authorities/local/root.crt /home/navide/share/root.crt +"); + + + + + + + + +sudo caddy adapt --config /etc/caddy/Caddyfile --pretty + +sudo cat ~/.ssh/id_ed25519.pub + + + + +```shell +nano /etc/caddy/Caddyfile + +php_fastcgi unix//run/php/php8.2-fpm.sock + + + +composer dump-autoload + +composer --version +--> + +cp -r /home/nabide/code/www.ruchimi.panama_paradise /var/www/www.ruchimi.panama_paradise/ +rm -r /var/www/www.ruchimi.panama_paradise/ + + + + +caddy fmt --overwrite /home/nabide/code + + + + + + + +cp /home/nabide/code/Caddyfile /etc/caddy/ +sudo systemctl restart caddy + +cd /var/www/ + +sudo nano /etc/hosts + +cp -r /home/nabide/code/www.ruchimi.panama_paradise /var/www/www.ruchimi.panama_paradise/ +rm -r /var/www/www.ruchimi.panama_paradise/ + + + +sudo systemctl restart caddy + +caddy fmt --overwrite /home/nabide/code + + + + + +cd /var/www/ + +sudo nano /etc/hosts + +cp -r /home/nabide/code/www.ruchimi.panama_paradise /var/www/www.ruchimi.panama_paradise/ +rm -r /var/www/www.ruchimi.panama_paradise/ + + + +sudo systemctl restart caddy + +caddy fmt --overwrite /home/nabide/code + + +sudo chown -R nabide:nabide /home/nabide/code +cp /home/nabide/code/Caddyfile /etc/caddy/ + + + +cp /etc/caddy/Caddyfile /home/nabide/code + +cp /home/nabide/code/Caddyfile /etc/caddy/ +sudo systemctl restart caddy + +cd /var/www/ + +sudo nano /etc/hosts +cp -r /home/nabide/code/www.ruchimi.panama_paradise /var/www/www.ruchimi.panama_paradise/ +rm -r /var/www/www.ruchimi.panama_paradise/ + + + +sudo systemctl restart caddy + +caddy fmt --overwrite /home/nabide/code + + +sudo chown -R nabide:nabide /home/nabide/code +cp /home/nabide/code/Caddyfile /etc/caddy/ + + + +cp /etc/caddy/Caddyfile /home/nabide/code + +cp /home/nabide/code/Caddyfile /etc/caddy/ +sudo systemctl restart caddy + +cd /var/www/ + +sudo nano /etc/hosts + + + + +cp -r /home/nabide/code/www.ruchimi.panama_paradise /var/www/www.ruchimi.panama_paradise/ +rm -r /var/www/www.ruchimi.panama_paradise/ + + + +cp /etc/hosts /home/nabide/code/hosts +cp /home/nabide/code/hosts /etc/hosts + + + +sudo systemctl restart caddy + + + + + +## Caddy + +```shell +sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl + +curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg + +curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | \ +sudo tee /etc/apt/sources.list.d/caddy-stable.list + +sudo apt update +sudo apt install caddy -y +``` + + + + + +```shell +mkdir -p /var/www/my-site +echo "Hello from Caddy!" > /var/www/my-site/index.html +``` + + + + + + + + +# Import the GPG key +sudo apt install -y debian-keyring debian-archive-keyring curl +curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-archive-keyring.gpg + +# Add the Caddy repo +curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | \ + sed 's/^deb /deb [signed-by=\/usr\/share\/keyrings\/caddy-archive-keyring.gpg] /' | \ + sudo tee /etc/apt/sources.list.d/caddy-stable.list + + + +sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl + +curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg + +curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | \ +sudo tee /etc/apt/sources.list.d/caddy-stable.list + +sudo apt update +sudo apt install caddy -y +``` + +xmpp.chat.local { + # encode gzip zstd + tls internal + root * /var/www/www.ts/src/public/xmpp + file_server + + reverse_proxy 127.0.0.1:5280 + + # WebSocket for Converse.js + reverse_proxy /ws 127.0.0.1:5280 { + transport http { + versions 1.1 + } + header_up -Origin + } + + reverse_proxy /bosh 127.0.0.1:5280 + reverse_proxy /upload 127.0.0.1:5280 +} + + + +sudo systemctl restart caddy +sudo systemctl reload caddy + + +sudo nvim /etc/hosts +sudo nvim /etc/caddy/Caddyfile diff --git a/server/nginex/README.md b/server/nginex/README.md new file mode 100644 index 0000000..e69de29 diff --git a/src/panama_paradise/Readme.md b/src/panama_paradise/Readme.md new file mode 100644 index 0000000..4faa975 --- /dev/null +++ b/src/panama_paradise/Readme.md @@ -0,0 +1,2 @@ +# Panama paradise + diff --git a/src/panama_paradise/src/private/template/header.php b/src/panama_paradise/src/private/template/header.php new file mode 100644 index 0000000..c276d23 --- /dev/null +++ b/src/panama_paradise/src/private/template/header.php @@ -0,0 +1,56 @@ + + + + + + + + <?php echo $page . " - " . $site?> + + + + + + + + + + + +
+ +
+
+ + + +
+ + + + + + + +
+ + + diff --git a/src/panama_paradise/src/public/assets/css/base.css b/src/panama_paradise/src/public/assets/css/base.css new file mode 100644 index 0000000..cc220b0 --- /dev/null +++ b/src/panama_paradise/src/public/assets/css/base.css @@ -0,0 +1,105 @@ +* { + margin: 0; + padding: 0; + box-sizing: border-box; +} + +html, body { + height: 100%; + width: 100%; + font-family: "Times New Roman", Times, serif; + font-size: 12px; + position: relative; + overflow-x: hidden; + color: whitesmoke; + overflow-x: hidden; +} + +.background-wrap { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + + overflow: hidden; + z-index: -1; + pointer-events: none; +} + +.background { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + filter: blur(2px); + + + + background-image: url('../img/waterfall.webp'); + background-size: cover; + background-position: center; + background-repeat: no-repeat; + background-color: #222; + + + transform: scale(1.1); + will-change: transform; + + opacity: 0; + animation: fadeIn 1.2s ease-in-out forwards; +} + +@keyframes fadeIn { + to { opacity: 1; } +} + + +.background::after { + background-color: rgba(0, 0, 0, 0.4); + + top: 0; + left: 0; + width: 100%; + height: 100%; + + content: ""; + position: fixed; + + z-index: -1; +} + + + +.bg-cristal { + position: absolute; + inset: 0; + background-color: rgba(0, 0, 0, 0.4); + backdrop-filter: blur(3px); + -webkit-backdrop-filter: blur(3px); + z-index: 1; +} + +.bg-wrap { + position: fixed; + inset: 0; + z-index: -1; + overflow: hidden; +} + + +.bg-img { + position: absolute; + top: -5%; + left: -5%; + width: 110%; + height: 110%; + object-fit: cover; + + filter: blur(8px); + transform: scale(1.05); + + opacity: 0; + animation: fadeIn 1.2s ease-in-out forwards; +} diff --git a/src/panama_paradise/src/public/assets/css/header.css b/src/panama_paradise/src/public/assets/css/header.css new file mode 100644 index 0000000..12502fc --- /dev/null +++ b/src/panama_paradise/src/public/assets/css/header.css @@ -0,0 +1,148 @@ +header { + display: flex; + justify-content: space-between; + align-items: center; + + color: whitesmoke; + position: relative; + + background-color: #051F40; + font-weight: bolder; + padding: 0.8rem; + padding-top: 0rem; + padding-bottom: 0rem; + z-index: 1002; +} + +header .logo img { + height: 50px; +} + + +header nav { + display: none; +} + +header nav ul { + display: flex; + list-style: none; + gap: 20px; + margin-left: auto; +} + + +header nav ul a { + color: whitesmoke; + white-space: nowrap; + text-decoration: none; + font-weight: bold; + font-size: 1.2em; + padding: 18px 10px; +} + + + +header .menu-acordeon { + font-size: 3rem; + cursor: pointer; + user-select: none; +} + + + +aside { + position: fixed; + top: 0; + left: 0; + width: 100vw; + height: 100vh; + background: #051F40; + color: whitesmoke; + display: flex; + justify-content: center; + align-items: center; + transform: translateX(-100%); + transition: transform 0.3s ease; + z-index: 1001; +} + + +aside ul { + display: flex; + flex-direction: column; + list-style: none; + text-align: center; + gap: 0.5rem; + width: 100%; +} + +aside ul li { + width: 100%; +} + +aside ul li a { + padding: 0.4rem 1rem; + text-decoration: none; + + display: inline-block; + width: 100%; + + font-size: 1.7rem; + + color: inherit; +} + +aside ul li a:hover { + background-color: #036; +} + + +.cristal { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: rgba(0, 0, 0, 0.5); + opacity: 0; + pointer-events: none; + transition: opacity 0.3s ease; + z-index: 1001; +} + + +#menu-toggle:checked ~ aside { + transform: translateX(0); +} + +#menu-toggle:checked ~ .overlay { + opacity: 1; + pointer-events: auto; +} + + + +@media (min-width: 768px) { + header nav { + display: block; + } + + header nav ul a:hover { + background-color: #069; + } + + header .menu-acordeon { + display: none; + } + + header nav ul a { + font-size: 1.1em; + } + +} + +@media (min-width: 1024px) { + header nav ul a { + font-size: 1.5em; + } +} \ No newline at end of file diff --git a/src/panama_paradise/src/public/assets/css/page-home.css b/src/panama_paradise/src/public/assets/css/page-home.css new file mode 100644 index 0000000..3453742 --- /dev/null +++ b/src/panama_paradise/src/public/assets/css/page-home.css @@ -0,0 +1,305 @@ +main { + display: flex; + padding: 10px; + height: 85%; + gap: 25px; +} + +main .suscripcion { + padding: 5px; + padding-bottom: 0; + + text-align: center; + + + display: flex; + justify-content: center; + align-items: center; + flex-direction: column; + + flex-grow: 1; + flex-shrink: 1; + flex-basis: 0; + + gap: 15px; + + color: whitesmoke; + background: rgba(78, 78, 78, 0.514); + border-radius: 3px; +} + +main .suscripcion h2 { + font-size: 2.2em; +} + + +main .suscripcion p { + font-size: 1.4em; +} + +main .suscripcion-form { + display: flex; + flex-direction: column; +} + + +main .suscripcion-form input[type="email"] { + padding: 14px 18px; + font-size: 1.2em; + + border-radius: 4px; + outline: none; + transition: border-color 0.3s, box-shadow 0.3s; +} + +main .suscripcion-form input[type="email"]:focus { + border-color: #006BFF; + box-shadow: 0 0 4px rgba(0, 123, 255, 0.5); +} + + +main .suscripcion-form button { + border: none; + outline: none; + box-shadow: none; + padding: 12px 16px; + font-size: 1.4em; + font-weight: bolder; + background-color: #036; + color: whitesmoke; + border-radius: 2px; + cursor: pointer; +} + +main .suscripcion-form button:hover { + background-color: #0056b3; + transform: scale(1.01); +} + + + + + + + + + + + + + + + + + + + + +main .buscador { + padding: 10px; + + text-align: center; + + display: flex; + flex: 1; + flex-direction: column; + justify-content: center; + gap: 40%; + + color: whitesmoke; + /* background: rgba(78, 78, 78, 0.514); */ + border-radius: 3px; +} + + +main .buscador .buscador-buscar .buscador-titulo { + margin-bottom: 0.5rem; + white-space: nowrap; + font-weight: bolder; + font-size: 3.0em; +} + +main .buscador .buscador-buscar input[type="text"] { + width: 70%; + font-style: italic; + + padding: 14px 18px; + font-size: 1.2em; + + border-radius: 4px; + outline: none; + transition: border-color 0.3s, box-shadow 0.3s; + + border: none; + outline: none; + box-shadow: none; + cursor: pointer; +} + +main .buscador .buscador-buscar button { + border: none; + outline: none; + box-shadow: none; + background-color: #036; + color: whitesmoke; + border-radius: 2px; + cursor: pointer; + + font-size: 1.4em; + font-weight: bolder; + + padding: 12px 16px; +} + +main .buscador .buscador-buscar button:hover { + background-color: #069; + transform: scale(1.01); +} + + + + + + + + + + + + + + + + + + + + + + + + + +footer { + justify-content: center; + display: flex; + bottom: 2rem; + z-index: 1000; +} + +footer .contacta-un-asesor { + white-space: nowrap; + background-color: #036; + padding: 1rem 2rem; + font-size: 1.5em; + + border: none; + outline: none; + box-shadow: none; + cursor: pointer; + + flex-grow: 0; + flex-shrink: 1; + flex-basis: auto; + + + color: whitesmoke; +} + +footer .contacta-un-asesor:hover { + background-color: #096; +} + + +footer .contacta-un-asesor:hover .lucide-phone-icon { + transform: translateY(4px); + opacity: 1; +} + +.lucide-phone-icon { + opacity: 0.6; + width: 16px; + height: 16px; + color: whitesmoke; + transition: opacity 0.3s ease; + transform: translateY(2px); +} + + + +@media (orientation: landscape) { + main { + display: flex; + flex-direction: row; + } + footer { + position: fixed; + bottom: 1rem; + right: 1rem; + z-index: 1000; + } +} + +@media (orientation: portrait) { + main { + display: flex; + flex-wrap: wrap; + flex-direction: column; + } + + footer { + position: fixed; + bottom: 1rem; + right: 1rem; + z-index: 1000; + } +} + + + +@media (min-width: 768px) and (max-width: 1023px) and (orientation: portrait) { + + main { + display: flex; + flex-direction: column; + } + + main .suscripcion { + + display: flex; + justify-content: center; + align-items: center; + flex-direction: column; + + flex-grow: 1; + flex-shrink: 1; + flex-basis: auto; + + } +} + +@media (min-width: 768px) { + main .suscripcion-form { + gap: 22px; + } +} + +@media (min-width: 820px) { + main { + display: flex; + } + + main .suscripcion { + flex-grow: 1; + flex-shrink: 1; + flex-basis: 0; + gap: 22px; + } + + main .buscador { + flex-basis: auto; + } + +} + + diff --git a/src/panama_paradise/src/public/assets/css/page-planifica.css b/src/panama_paradise/src/public/assets/css/page-planifica.css new file mode 100644 index 0000000..da90721 --- /dev/null +++ b/src/panama_paradise/src/public/assets/css/page-planifica.css @@ -0,0 +1,216 @@ +main { + display: flex; + flex-direction: column; + align-items: center; + background: rgba(78, 78, 78, 0.514); + + padding-top: 20px; + padding: 30px; + gap: 30px; +} + +textarea { + width: 100%; + max-width: 100%; + min-height: 150px; + + overflow-x: hidden; + resize: vertical; + + + border: 2px solid; + transition: border-color 0.3s ease; + outline: none; + box-shadow: none; + + background-color: whitesmoke; + + padding: 10px 14px; + font-size: 1.5em; + + border-radius: 2px; + + +} + +textarea::placeholder { + font-style: italic; +} + +textarea:hover { + border-color: #069; +} + +textarea:focus { + border-color: #069; +} + + +h1 { + font-weight: bold; + font-size: 1.3em; + white-space: nowrap; +} + +h2 { + font-weight: bold; + font-size: 1.6em; + padding-bottom: 10px; + text-align: center; +} + +form { + display: flex; + flex-direction: column; + gap: 20px; +} + +.lista-de-deseos { + display: flex; + + flex-direction: column; + + gap: 10px; + +} + + +ul { + list-style: none; +} + +.selector-multiple { + max-width: 100%; + position: relative; + padding-top: 20px; + + border-radius: 6px; + + background-color: rgba(78, 78, 78, 0.514); +} + + + +.selector-multiple-label { + display: block; + font-weight: bold; + padding-bottom: 10px; + width: 100%; + font-size: 1.6em; + + text-align: center; +} + +.multi-select-option { + list-style: none; + display: flex; + flex-direction: column; + align-items: center; + + font-size: 20px; + cursor: pointer; + + white-space: nowrap; + gap: 12px; +} + +.multi-select-option li { + width: 100%; +} + + + +.multi-select-option li label { + display: flex; + justify-content: space-between; + + padding: 12px 15px; + cursor: pointer; + font-size: 1em; + gap: 20px; + + width: 100%; + align-items: center; + text-align: center; +} + +.multi-select-option li label:hover { + background-color: #069; +} + + +.multi-select-option input[type="checkbox"] { + width: 18px; + height: 18px; + accent-color: #007bff; +} + +.multi-select-option .checkbox { + flex-shrink: 0; +} + +.multi-select-option .txt { + flex: 1; + text-align: center; + transform: translateX(-5%); +} + + + +main .mostrar-sugerencias button { + width: 100%; + + border: none; + outline: none; + box-shadow: none; + padding: 12px 16px; + font-size: 1.4em; + font-weight: bolder; + background-color: #036; + color: whitesmoke; + border-radius: 2px; + cursor: pointer; + +} + +main .mostrar-sugerencias button:hover { + background-color: #069; + transform: scale(1.01); +} + + +.multi-select-option li label { + justify-content: center; + width: 100%; +} + +@media (min-width: 768px) { + h1 { + font-size: 2em; + } + + h2 { + display: block; + } + + .lista-de-deseos { + flex-direction: row; + } + + .multi-select-option li label { + justify-content: center; + } +} + +@media (min-width: 768px) and (orientation: portrait) { + .lista-de-deseos { + display: flex; + flex-direction: column; + } + + .multi-select-option li label { + justify-content: center; + width: 100%; + } +} + diff --git a/src/panama_paradise/src/public/assets/css/page-promociones.css b/src/panama_paradise/src/public/assets/css/page-promociones.css new file mode 100644 index 0000000..abdf4e8 --- /dev/null +++ b/src/panama_paradise/src/public/assets/css/page-promociones.css @@ -0,0 +1,381 @@ +main { + + display: flex; + /* height: 90vh; */ + flex-direction: column; + gap: 5px; +} + +main .section-promo { + + flex: 1; + padding: 10px; + + background: rgba(78, 78, 78, 0.514); + background: rgba(70, 70, 85, 0.6); + +} + + +main .section-promo .promo { + display: flex; + justify-content: space-between; + + + border-radius: 10px; + padding: 15px; + margin-bottom: 10px; + + + background-color: rgba(100, 138, 160, 0.95); + background-color: #051c3a52; + +} + +a { + color: whitesmoke; + text-decoration: none; +} + +h2 { + color: whitesmoke; + font-size: 2em; + display: inline; + text-align: center; +} + +.filtro { + flex: 0; + display: flex; + color: whitesmoke; + background: rgba(70, 70, 85, 0.6); + background-color: #051c3a52; +} + +.form-filtro { + display: flex; + flex-direction: column; + gap: 10px; +} + + + +.buscar-btn { + width: 100%; + border: none; + outline: none; + box-shadow: none; + padding: 12px 16px; + font-size: 1.4em; + font-weight: bolder; + background-color: #036; + color: whitesmoke; + border-radius: 2px; + cursor: pointer; +} + +.buscar-btn button:hover { + background-color: #069; + transform: scale(1.01); +} + + + +input::placeholder { + font-style: italic; + color: #888; +} + +strong { + font-size: 1.7em; +} + +.fecha-title { + font-size: 1.8em; +} + +.div-fecha { + padding-top: 4px; + padding-bottom: 4px; +} + +.labell { + margin-bottom: 10px; +} + +main .section-promo .promo .promo-contenido { + flex: 1; + display: flex; + justify-content: space-between; + flex-direction: column; + gap: 10px; +} + + + +.puntuacion { + color: gold; + font-size: 2em; +} + +.promo-img { + width: 200px; + height: 200px; + object-fit: cover; + + border-radius: 1px; + transform: translateY(10px); +} + + +.promo-contenido-txt { + font-size: 1.5em; + +} + +.promo-content-a { + display: flex +} + + + + + +/* --------------------------------------------------- */ + + + + + +a { + color: whitesmoke; + text-decoration: none; +} + +h3 { + color: whitesmoke; + font-size: 2.2em; + display: inline; +} + + +.puntuacion { + color: gold; + font-size: 2.2em; +} + +.promo-img { + width: 150px; + height: 150px; + object-fit: cover; + padding: 10px; + + border-radius: 1px; +} + + +.promo-contenido-txt { + font-size: 1.5em; + +} + +.promo-content-a { + display: flex; + flex-direction: column; + justify-content: space-between; + height: 100%; + font-size: 0.5em; +} + + +.promo-contenido-mostrar { + font-size: 1.3em; + font-style: italic; + text-align: end; +} + + +p { + text-align: justify; + font-size: 0.1em; + max-height: 85px; + overflow: hidden; + +} + +.promo-contenido-titulo { + font-size: 0.6em; +} + + +.filtro { + /* display: none; */ + color: whitesmoke; + display: flex; + flex-direction: column; +} + + + + +input[type="text"], +input[type="number"], +input[type="date"] { + width: 100%; + padding: 10px 14px; + font-size: 1em; + border: 1px solid #ccc; + border-radius: 8px; + background: whitesmoke; + transition: border-color 0.3s, box-shadow 0.3s; +} + +input[type="date"] { + padding: 10px 14px; + border: 1px solid #ccc; + border-radius: 4px; + background-color: whitesmoke; + font-size: 12px; + box-shadow: 0.2px 4px rgba(78, 78, 78, 0.5); + transition: border-color 0.3s, box-shadow 0.3s; + width: 100%; + max-width: 100px; +} + +input[type="date"]focus { + border-color: #069; + outline: none; + background-color: rgba(78, 78, 78, 0.8); +} + + + + + + + + + +ul { + list-style: none; +} + +.selector-multiple { + max-width: 100%; + position: relative; + padding-top: 20px; + + border-radius: 6px; + + background-color: rgba(78, 78, 78, 0.514); +} + + + +.selector-multiple-label { + display: block; + font-weight: bold; + padding-bottom: 10px; + width: 100%; + font-size: 1.3em; + + text-align: center; +} + +.multi-select-option { + list-style: none; + display: flex; + flex-direction: column; + align-items: center; + + + font-size: 20px; + cursor: pointer; + + white-space: nowrap; + gap: 12px; +} + +.multi-select-option li { + width: 100%; +} + + + +.multi-select-option li label { + display: flex; + justify-content: space-between; + + padding: 12px 15px; + cursor: pointer; + font-size: 1em; + gap: 20px; + + width: 100%; + align-items: center; + text-align: center; +} + +.multi-select-option li label:hover { + background-color: #069; +} + + + +.filtro-titulo { + padding-top: 10px; +} + + +.multi-select-option input[type="checkbox"] { + width: 18px; + height: 18px; + accent-color: #007bff; +} + +.multi-select-option .checkbox { + flex-shrink: 0; +} + +.multi-select-option .txt { + flex: 1; + text-align: center; + transform: translateX(-5%); +} + + + +@media (min-width: 768px) { + main { + /* overflow: hidden; */ + flex-direction: row; + padding: 10px; + } + + + .promo-contenido-txt { + font-size: 3em; + } + + .promo-contenido-mostrar { + font-size: 1.7em; + } + + h3 { + color: whitesmoke; + font-size: 2.7em; + display: inline; + } + + + .filtro { + /* overflow-y: auto; */ + padding: 10px; + } + + .puntuacion { + color: gold; + font-size: 2.6em; + } +} + diff --git a/src/panama_paradise/src/public/assets/img/panama-logo.png b/src/panama_paradise/src/public/assets/img/panama-logo.png new file mode 100644 index 0000000..d2a1ff6 Binary files /dev/null and b/src/panama_paradise/src/public/assets/img/panama-logo.png differ diff --git a/src/panama_paradise/src/public/assets/img/panama-logo.webp b/src/panama_paradise/src/public/assets/img/panama-logo.webp new file mode 100644 index 0000000..11b53ef Binary files /dev/null and b/src/panama_paradise/src/public/assets/img/panama-logo.webp differ diff --git a/src/panama_paradise/src/public/assets/img/promo/img.md b/src/panama_paradise/src/public/assets/img/promo/img.md new file mode 100644 index 0000000..e69de29 diff --git a/src/panama_paradise/src/public/error/404.php b/src/panama_paradise/src/public/error/404.php new file mode 100644 index 0000000..57db2e9 --- /dev/null +++ b/src/panama_paradise/src/public/error/404.php @@ -0,0 +1 @@ +404 \ No newline at end of file diff --git a/src/panama_paradise/src/public/index.php b/src/panama_paradise/src/public/index.php new file mode 100644 index 0000000..3f897e3 --- /dev/null +++ b/src/panama_paradise/src/public/index.php @@ -0,0 +1,51 @@ + + + + + + +
+
+
+

"Panamá es tu casa"

+
+ +
+

Suscríbete y recibe las últimas notificaciones directamente en tu correo: eventos especiales, temporadas de viaje, promociones exclusivas y mucho más. ¡Viaja con comodidad y descubre todo lo que Panamá tiene para ti!.

+
+ +
+ + +
+
+ + +
+
+
Todos los destinos
+ +
+ + +
+
+
+ + +
+ +
+ +
+ + + + diff --git a/src/panama_paradise/src/public/planifica.php b/src/panama_paradise/src/public/planifica.php new file mode 100644 index 0000000..578b664 --- /dev/null +++ b/src/panama_paradise/src/public/planifica.php @@ -0,0 +1,78 @@ + + + + + +
+

Planea las vacaciones de tus sueños

+ +
+
+

¿Que estas buscando?

+
+
+ +
+ + +
+

Lista de deseos

+
+ +
+
+ +
    +
  • +
  • +
  • +
  • +
  • +
  • +
+
+ +
+ +
    +
  • + +
  • +
+
+ +
+ +
    +
  • +
  • +
  • +
  • +
  • +
+
+ +
+ +
    +
  • +
  • +
  • +
  • +
+
+ + +
+ +
+ + +
+ + diff --git a/src/panama_paradise/src/public/promociones.php b/src/panama_paradise/src/public/promociones.php new file mode 100644 index 0000000..12728d4 --- /dev/null +++ b/src/panama_paradise/src/public/promociones.php @@ -0,0 +1,106 @@ + + + + +
+
+

Filtros de busqueda

+ +
+
+ +
+
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ + +
+ +
+
    +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
+
+
+ + + + +
+
+ + + +
+ + + + + + preview + + +"; +}?> + +
+
+ + + diff --git a/tool/package/nodejs.md b/tool/package/nodejs.md new file mode 100644 index 0000000..ebd2b7e --- /dev/null +++ b/tool/package/nodejs.md @@ -0,0 +1,17 @@ + + + +npm init -y + + +npm -v + +sudo npm install -g npm@latest + + +sudo npm install -g npm@latest + + + +curl -fsSL https://deb.nodesource.com/setup_22.x | sudo bash - +sudo apt-get install -y nodejs diff --git a/tool/responsively.md b/tool/responsively.md new file mode 100644 index 0000000..ceb6fce --- /dev/null +++ b/tool/responsively.md @@ -0,0 +1,35 @@ +# Responsively + + +## Install + +[Responsively](https://responsively.app/) + +```sh +wget https://github.com/responsively-org/responsively-app-releases/releases/download/v1.16.0/ResponsivelyApp-1.16.0.AppImage + +chmod +x ResponsivelyApp-1.16.0.AppImage +mv ResponsivelyApp-1.16.0.AppImage ResponsivelyApp.AppImage +mkdir -p ~/.local/bin/ +mv ResponsivelyApp.AppImage ~/.local/bin/ +``` + +## Config + +```sh +nano ~/.local/share/applications/responsively.desktop + + +[Desktop Entry] +Name=Responsively App +Exec=/home/your-username/.local/bin/ResponsivelyApp.AppImage +Icon=web +Type=Application +Categories=Development; +``` + +## Execute +``` +~/.local/bin/ResponsivelyApp.AppImage +``` + diff --git a/tool/selenium/README.md b/tool/selenium/README.md new file mode 100644 index 0000000..bfac232 --- /dev/null +++ b/tool/selenium/README.md @@ -0,0 +1,20 @@ +# Selenium + + +## Install + +```sh +pip install selenium +pip3 install selenium +``` + + +https://www.selenium.dev/ + +https://sites.google.com/chromium.org/driver/ + +the Chrome for Testing availability dashboard. + +https://googlechromelabs.github.io/chrome-for-testing/#stable + +chromedriver diff --git a/tool/vite/.gitignore b/tool/vite/.gitignore new file mode 100644 index 0000000..a547bf3 --- /dev/null +++ b/tool/vite/.gitignore @@ -0,0 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/tool/vite/assets/css/style.css b/tool/vite/assets/css/style.css new file mode 100644 index 0000000..196a6e9 --- /dev/null +++ b/tool/vite/assets/css/style.css @@ -0,0 +1,3 @@ +* { + background-color: brown; +} \ No newline at end of file diff --git a/tool/vite/assets/js/client.js b/tool/vite/assets/js/client.js new file mode 100644 index 0000000..e69de29 diff --git a/tool/vite/assets/js/main.js b/tool/vite/assets/js/main.js new file mode 100644 index 0000000..9fa9f7a --- /dev/null +++ b/tool/vite/assets/js/main.js @@ -0,0 +1,4 @@ +import '../css/style.css' + + +console.log("VIte php"); \ No newline at end of file diff --git a/tool/vite/assets/js/xmpp.js b/tool/vite/assets/js/xmpp.js new file mode 100644 index 0000000..acec543 --- /dev/null +++ b/tool/vite/assets/js/xmpp.js @@ -0,0 +1,31 @@ +// import { Strophe } from "strophe.js"; + +// const connection = new Strophe.Connection("wss://xmpp.chat.local/xmpp-websocket"); + +// connection.connect("user@xmpp.chat.local", "password", function (status) { +// console.log("Status:", status); +// }); + +// +// + + +// import '/node_modules/converse.js/dist/converse.min.css'; +// import converse from '/node_modules/converse.js/dist/converse.min.js'; +// // import '/node_modules/converse.js/dist/converse-omemo.min.js'; + +// import './plugins/omemo'; + +// +// +// + + +// converse.initialize({ +// bosh_service_url: 'https://xmpp.chat.local/http-bind', +// authentication: 'login', +// auto_login: false, +// allow_omemo: true, +// whitelisted_plugins: ['converse-omemo'], +// view_mode: 'fullscreen' +// }); \ No newline at end of file diff --git a/tool/vite/index.html b/tool/vite/index.html new file mode 100644 index 0000000..72ba3a8 --- /dev/null +++ b/tool/vite/index.html @@ -0,0 +1,13 @@ + + + + + + + Vite App + + +
+ + + diff --git a/tool/vite/package-lock.json b/tool/vite/package-lock.json new file mode 100644 index 0000000..9ded576 --- /dev/null +++ b/tool/vite/package-lock.json @@ -0,0 +1,971 @@ +{ + "name": "vite", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "vite", + "version": "0.0.0", + "devDependencies": { + "vite": "^7.1.2" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.9.tgz", + "integrity": "sha512-OaGtL73Jck6pBKjNIe24BnFE6agGl+6KxDtTfHhy1HmhthfKouEcOhqpSL64K4/0WCtbKFLOdzD/44cJ4k9opA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.9.tgz", + "integrity": "sha512-5WNI1DaMtxQ7t7B6xa572XMXpHAaI/9Hnhk8lcxF4zVN4xstUgTlvuGDorBguKEnZO70qwEcLpfifMLoxiPqHQ==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.9.tgz", + "integrity": "sha512-IDrddSmpSv51ftWslJMvl3Q2ZT98fUSL2/rlUXuVqRXHCs5EUF1/f+jbjF5+NG9UffUDMCiTyh8iec7u8RlTLg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.9.tgz", + "integrity": "sha512-I853iMZ1hWZdNllhVZKm34f4wErd4lMyeV7BLzEExGEIZYsOzqDWDf+y082izYUE8gtJnYHdeDpN/6tUdwvfiw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.9.tgz", + "integrity": "sha512-XIpIDMAjOELi/9PB30vEbVMs3GV1v2zkkPnuyRRURbhqjyzIINwj+nbQATh4H9GxUgH1kFsEyQMxwiLFKUS6Rg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.9.tgz", + "integrity": "sha512-jhHfBzjYTA1IQu8VyrjCX4ApJDnH+ez+IYVEoJHeqJm9VhG9Dh2BYaJritkYK3vMaXrf7Ogr/0MQ8/MeIefsPQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.9.tgz", + "integrity": "sha512-z93DmbnY6fX9+KdD4Ue/H6sYs+bhFQJNCPZsi4XWJoYblUqT06MQUdBCpcSfuiN72AbqeBFu5LVQTjfXDE2A6Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.9.tgz", + "integrity": "sha512-mrKX6H/vOyo5v71YfXWJxLVxgy1kyt1MQaD8wZJgJfG4gq4DpQGpgTB74e5yBeQdyMTbgxp0YtNj7NuHN0PoZg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.9.tgz", + "integrity": "sha512-HBU2Xv78SMgaydBmdor38lg8YDnFKSARg1Q6AT0/y2ezUAKiZvc211RDFHlEZRFNRVhcMamiToo7bDx3VEOYQw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.9.tgz", + "integrity": "sha512-BlB7bIcLT3G26urh5Dmse7fiLmLXnRlopw4s8DalgZ8ef79Jj4aUcYbk90g8iCa2467HX8SAIidbL7gsqXHdRw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.9.tgz", + "integrity": "sha512-e7S3MOJPZGp2QW6AK6+Ly81rC7oOSerQ+P8L0ta4FhVi+/j/v2yZzx5CqqDaWjtPFfYz21Vi1S0auHrap3Ma3A==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.9.tgz", + "integrity": "sha512-Sbe10Bnn0oUAB2AalYztvGcK+o6YFFA/9829PhOCUS9vkJElXGdphz0A3DbMdP8gmKkqPmPcMJmJOrI3VYB1JQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.9.tgz", + "integrity": "sha512-YcM5br0mVyZw2jcQeLIkhWtKPeVfAerES5PvOzaDxVtIyZ2NUBZKNLjC5z3/fUlDgT6w89VsxP2qzNipOaaDyA==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.9.tgz", + "integrity": "sha512-++0HQvasdo20JytyDpFvQtNrEsAgNG2CY1CLMwGXfFTKGBGQT3bOeLSYE2l1fYdvML5KUuwn9Z8L1EWe2tzs1w==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.9.tgz", + "integrity": "sha512-uNIBa279Y3fkjV+2cUjx36xkx7eSjb8IvnL01eXUKXez/CBHNRw5ekCGMPM0BcmqBxBcdgUWuUXmVWwm4CH9kg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.9.tgz", + "integrity": "sha512-Mfiphvp3MjC/lctb+7D287Xw1DGzqJPb/J2aHHcHxflUo+8tmN/6d4k6I2yFR7BVo5/g7x2Monq4+Yew0EHRIA==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.9.tgz", + "integrity": "sha512-iSwByxzRe48YVkmpbgoxVzn76BXjlYFXC7NvLYq+b+kDjyyk30J0JY47DIn8z1MO3K0oSl9fZoRmZPQI4Hklzg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.9.tgz", + "integrity": "sha512-9jNJl6FqaUG+COdQMjSCGW4QiMHH88xWbvZ+kRVblZsWrkXlABuGdFJ1E9L7HK+T0Yqd4akKNa/lO0+jDxQD4Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.9.tgz", + "integrity": "sha512-RLLdkflmqRG8KanPGOU7Rpg829ZHu8nFy5Pqdi9U01VYtG9Y0zOG6Vr2z4/S+/3zIyOxiK6cCeYNWOFR9QP87g==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.9.tgz", + "integrity": "sha512-YaFBlPGeDasft5IIM+CQAhJAqS3St3nJzDEgsgFixcfZeyGPCd6eJBWzke5piZuZ7CtL656eOSYKk4Ls2C0FRQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.9.tgz", + "integrity": "sha512-1MkgTCuvMGWuqVtAvkpkXFmtL8XhWy+j4jaSO2wxfJtilVCi0ZE37b8uOdMItIHz4I6z1bWWtEX4CJwcKYLcuA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.9.tgz", + "integrity": "sha512-4Xd0xNiMVXKh6Fa7HEJQbrpP3m3DDn43jKxMjxLLRjWnRsfxjORYJlXPO4JNcXtOyfajXorRKY9NkOpTHptErg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.9.tgz", + "integrity": "sha512-WjH4s6hzo00nNezhp3wFIAfmGZ8U7KtrJNlFMRKxiI9mxEK1scOMAaa9i4crUtu+tBr+0IN6JCuAcSBJZfnphw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.9.tgz", + "integrity": "sha512-mGFrVJHmZiRqmP8xFOc6b84/7xa5y5YvR1x8djzXpJBSv/UsNK6aqec+6JDjConTgvvQefdGhFDAs2DLAds6gQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.9.tgz", + "integrity": "sha512-b33gLVU2k11nVx1OhX3C8QQP6UHQK4ZtN56oFWvVXvz2VkDoe6fbG8TOgHFxEvqeqohmRnIHe5A1+HADk4OQww==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.9.tgz", + "integrity": "sha512-PPOl1mi6lpLNQxnGoyAfschAodRFYXJ+9fs6WHXz7CSWKbOqiMZsubC+BQsVKuul+3vKLuwTHsS2c2y9EoKwxQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.46.2.tgz", + "integrity": "sha512-Zj3Hl6sN34xJtMv7Anwb5Gu01yujyE/cLBDB2gnHTAHaWS1Z38L7kuSG+oAh0giZMqG060f/YBStXtMH6FvPMA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.46.2.tgz", + "integrity": "sha512-nTeCWY83kN64oQ5MGz3CgtPx8NSOhC5lWtsjTs+8JAJNLcP3QbLCtDDgUKQc/Ro/frpMq4SHUaHN6AMltcEoLQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.46.2.tgz", + "integrity": "sha512-HV7bW2Fb/F5KPdM/9bApunQh68YVDU8sO8BvcW9OngQVN3HHHkw99wFupuUJfGR9pYLLAjcAOA6iO+evsbBaPQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.46.2.tgz", + "integrity": "sha512-SSj8TlYV5nJixSsm/y3QXfhspSiLYP11zpfwp6G/YDXctf3Xkdnk4woJIF5VQe0of2OjzTt8EsxnJDCdHd2xMA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.46.2.tgz", + "integrity": "sha512-ZyrsG4TIT9xnOlLsSSi9w/X29tCbK1yegE49RYm3tu3wF1L/B6LVMqnEWyDB26d9Ecx9zrmXCiPmIabVuLmNSg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.46.2.tgz", + "integrity": "sha512-pCgHFoOECwVCJ5GFq8+gR8SBKnMO+xe5UEqbemxBpCKYQddRQMgomv1104RnLSg7nNvgKy05sLsY51+OVRyiVw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.46.2.tgz", + "integrity": "sha512-EtP8aquZ0xQg0ETFcxUbU71MZlHaw9MChwrQzatiE8U/bvi5uv/oChExXC4mWhjiqK7azGJBqU0tt5H123SzVA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.46.2.tgz", + "integrity": "sha512-qO7F7U3u1nfxYRPM8HqFtLd+raev2K137dsV08q/LRKRLEc7RsiDWihUnrINdsWQxPR9jqZ8DIIZ1zJJAm5PjQ==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.46.2.tgz", + "integrity": "sha512-3dRaqLfcOXYsfvw5xMrxAk9Lb1f395gkoBYzSFcc/scgRFptRXL9DOaDpMiehf9CO8ZDRJW2z45b6fpU5nwjng==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.46.2.tgz", + "integrity": "sha512-fhHFTutA7SM+IrR6lIfiHskxmpmPTJUXpWIsBXpeEwNgZzZZSg/q4i6FU4J8qOGyJ0TR+wXBwx/L7Ho9z0+uDg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loongarch64-gnu": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.46.2.tgz", + "integrity": "sha512-i7wfGFXu8x4+FRqPymzjD+Hyav8l95UIZ773j7J7zRYc3Xsxy2wIn4x+llpunexXe6laaO72iEjeeGyUFmjKeA==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.46.2.tgz", + "integrity": "sha512-B/l0dFcHVUnqcGZWKcWBSV2PF01YUt0Rvlurci5P+neqY/yMKchGU8ullZvIv5e8Y1C6wOn+U03mrDylP5q9Yw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.46.2.tgz", + "integrity": "sha512-32k4ENb5ygtkMwPMucAb8MtV8olkPT03oiTxJbgkJa7lJ7dZMr0GCFJlyvy+K8iq7F/iuOr41ZdUHaOiqyR3iQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.46.2.tgz", + "integrity": "sha512-t5B2loThlFEauloaQkZg9gxV05BYeITLvLkWOkRXogP4qHXLkWSbSHKM9S6H1schf/0YGP/qNKtiISlxvfmmZw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.46.2.tgz", + "integrity": "sha512-YKjekwTEKgbB7n17gmODSmJVUIvj8CX7q5442/CK80L8nqOUbMtf8b01QkG3jOqyr1rotrAnW6B/qiHwfcuWQA==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.46.2.tgz", + "integrity": "sha512-Jj5a9RUoe5ra+MEyERkDKLwTXVu6s3aACP51nkfnK9wJTraCC8IMe3snOfALkrjTYd2G1ViE1hICj0fZ7ALBPA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.46.2.tgz", + "integrity": "sha512-7kX69DIrBeD7yNp4A5b81izs8BqoZkCIaxQaOpumcJ1S/kmqNFjPhDu1LHeVXv0SexfHQv5cqHsxLOjETuqDuA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.46.2.tgz", + "integrity": "sha512-wiJWMIpeaak/jsbaq2HMh/rzZxHVW1rU6coyeNNpMwk5isiPjSTx0a4YLSlYDwBH/WBvLz+EtsNqQScZTLJy3g==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.46.2.tgz", + "integrity": "sha512-gBgaUDESVzMgWZhcyjfs9QFK16D8K6QZpwAaVNJxYDLHWayOta4ZMjGm/vsAEy3hvlS2GosVFlBlP9/Wb85DqQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.46.2.tgz", + "integrity": "sha512-CvUo2ixeIQGtF6WvuB87XWqPQkoFAFqW+HUo/WzHwuHDvIwZCtjdWXoYCcr06iKGydiqTclC4jU/TNObC/xKZg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true + }, + "node_modules/esbuild": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.9.tgz", + "integrity": "sha512-CRbODhYyQx3qp7ZEwzxOk4JBqmD/seJrzPa/cGjY1VtIn5E09Oi9/dB4JwctnfZ8Q8iT7rioVv5k/FNT/uf54g==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.9", + "@esbuild/android-arm": "0.25.9", + "@esbuild/android-arm64": "0.25.9", + "@esbuild/android-x64": "0.25.9", + "@esbuild/darwin-arm64": "0.25.9", + "@esbuild/darwin-x64": "0.25.9", + "@esbuild/freebsd-arm64": "0.25.9", + "@esbuild/freebsd-x64": "0.25.9", + "@esbuild/linux-arm": "0.25.9", + "@esbuild/linux-arm64": "0.25.9", + "@esbuild/linux-ia32": "0.25.9", + "@esbuild/linux-loong64": "0.25.9", + "@esbuild/linux-mips64el": "0.25.9", + "@esbuild/linux-ppc64": "0.25.9", + "@esbuild/linux-riscv64": "0.25.9", + "@esbuild/linux-s390x": "0.25.9", + "@esbuild/linux-x64": "0.25.9", + "@esbuild/netbsd-arm64": "0.25.9", + "@esbuild/netbsd-x64": "0.25.9", + "@esbuild/openbsd-arm64": "0.25.9", + "@esbuild/openbsd-x64": "0.25.9", + "@esbuild/openharmony-arm64": "0.25.9", + "@esbuild/sunos-x64": "0.25.9", + "@esbuild/win32-arm64": "0.25.9", + "@esbuild/win32-ia32": "0.25.9", + "@esbuild/win32-x64": "0.25.9" + } + }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true + }, + "node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/postcss": { + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/rollup": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.46.2.tgz", + "integrity": "sha512-WMmLFI+Boh6xbop+OAGo9cQ3OgX9MIg7xOQjn+pTCwOkk+FNDAeAemXkJ3HzDJrVXleLOFVa1ipuc1AmEx1Dwg==", + "dev": true, + "dependencies": { + "@types/estree": "1.0.8" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.46.2", + "@rollup/rollup-android-arm64": "4.46.2", + "@rollup/rollup-darwin-arm64": "4.46.2", + "@rollup/rollup-darwin-x64": "4.46.2", + "@rollup/rollup-freebsd-arm64": "4.46.2", + "@rollup/rollup-freebsd-x64": "4.46.2", + "@rollup/rollup-linux-arm-gnueabihf": "4.46.2", + "@rollup/rollup-linux-arm-musleabihf": "4.46.2", + "@rollup/rollup-linux-arm64-gnu": "4.46.2", + "@rollup/rollup-linux-arm64-musl": "4.46.2", + "@rollup/rollup-linux-loongarch64-gnu": "4.46.2", + "@rollup/rollup-linux-ppc64-gnu": "4.46.2", + "@rollup/rollup-linux-riscv64-gnu": "4.46.2", + "@rollup/rollup-linux-riscv64-musl": "4.46.2", + "@rollup/rollup-linux-s390x-gnu": "4.46.2", + "@rollup/rollup-linux-x64-gnu": "4.46.2", + "@rollup/rollup-linux-x64-musl": "4.46.2", + "@rollup/rollup-win32-arm64-msvc": "4.46.2", + "@rollup/rollup-win32-ia32-msvc": "4.46.2", + "@rollup/rollup-win32-x64-msvc": "4.46.2", + "fsevents": "~2.3.2" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.14", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz", + "integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==", + "dev": true, + "dependencies": { + "fdir": "^6.4.4", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/vite": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.1.2.tgz", + "integrity": "sha512-J0SQBPlQiEXAF7tajiH+rUooJPo0l8KQgyg4/aMunNtrOa7bwuZJsJbDWzeljqQpgftxuq5yNJxQ91O9ts29UQ==", + "dev": true, + "dependencies": { + "esbuild": "^0.25.0", + "fdir": "^6.4.6", + "picomatch": "^4.0.3", + "postcss": "^8.5.6", + "rollup": "^4.43.0", + "tinyglobby": "^0.2.14" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^20.19.0 || >=22.12.0", + "jiti": ">=1.21.0", + "less": "^4.0.0", + "lightningcss": "^1.21.0", + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + } + } +} diff --git a/tool/vite/package.json b/tool/vite/package.json new file mode 100644 index 0000000..efc105c --- /dev/null +++ b/tool/vite/package.json @@ -0,0 +1,14 @@ +{ + "name": "vite", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "vite build", + "preview": "vite preview" + }, + "devDependencies": { + "vite": "^7.1.2" + } +} diff --git a/tool/vite/public/vite.svg b/tool/vite/public/vite.svg new file mode 100644 index 0000000..e7b8dfb --- /dev/null +++ b/tool/vite/public/vite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/tool/vite/src/counter.js b/tool/vite/src/counter.js new file mode 100644 index 0000000..881e2d7 --- /dev/null +++ b/tool/vite/src/counter.js @@ -0,0 +1,9 @@ +export function setupCounter(element) { + let counter = 0 + const setCounter = (count) => { + counter = count + element.innerHTML = `count is ${counter}` + } + element.addEventListener('click', () => setCounter(counter + 1)) + setCounter(0) +} diff --git a/tool/vite/src/javascript.svg b/tool/vite/src/javascript.svg new file mode 100644 index 0000000..f9abb2b --- /dev/null +++ b/tool/vite/src/javascript.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/tool/vite/src/main.js b/tool/vite/src/main.js new file mode 100644 index 0000000..5fc3358 --- /dev/null +++ b/tool/vite/src/main.js @@ -0,0 +1,24 @@ +import './style.css' +import javascriptLogo from './javascript.svg' +import viteLogo from '/vite.svg' +import { setupCounter } from './counter.js' + +document.querySelector('#app').innerHTML = ` +
+ + + + + + +

Hello Vite!

+
+ +
+

+ Click on the Vite logo to learn more +

+
+` + +setupCounter(document.querySelector('#counter')) diff --git a/tool/vite/src/style.css b/tool/vite/src/style.css new file mode 100644 index 0000000..8df73e3 --- /dev/null +++ b/tool/vite/src/style.css @@ -0,0 +1,96 @@ +:root { + font-family: system-ui, Avenir, Helvetica, Arial, sans-serif; + line-height: 1.5; + font-weight: 400; + + color-scheme: light dark; + color: rgba(255, 255, 255, 0.87); + background-color: #242424; + + font-synthesis: none; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +a { + font-weight: 500; + color: #646cff; + text-decoration: inherit; +} +a:hover { + color: #535bf2; +} + +body { + margin: 0; + display: flex; + place-items: center; + min-width: 320px; + min-height: 100vh; +} + +h1 { + font-size: 3.2em; + line-height: 1.1; +} + +#app { + max-width: 1280px; + margin: 0 auto; + padding: 2rem; + text-align: center; +} + +.logo { + height: 6em; + padding: 1.5em; + will-change: filter; + transition: filter 300ms; +} +.logo:hover { + filter: drop-shadow(0 0 2em #646cffaa); +} +.logo.vanilla:hover { + filter: drop-shadow(0 0 2em #f7df1eaa); +} + +.card { + padding: 2em; +} + +.read-the-docs { + color: #888; +} + +button { + border-radius: 8px; + border: 1px solid transparent; + padding: 0.6em 1.2em; + font-size: 1em; + font-weight: 500; + font-family: inherit; + background-color: #1a1a1a; + cursor: pointer; + transition: border-color 0.25s; +} +button:hover { + border-color: #646cff; +} +button:focus, +button:focus-visible { + outline: 4px auto -webkit-focus-ring-color; +} + +@media (prefers-color-scheme: light) { + :root { + color: #213547; + background-color: #ffffff; + } + a:hover { + color: #747bff; + } + button { + background-color: #f9f9f9; + } +} diff --git a/tool/vite/vite.config.js b/tool/vite/vite.config.js new file mode 100644 index 0000000..052fb78 --- /dev/null +++ b/tool/vite/vite.config.js @@ -0,0 +1,15 @@ +import { defineConfig } from 'vite'; +import path from 'path'; + +export default defineConfig({ + build: { + manifest: true, + outDir: './dist', + rollupOptions: { + input: { + 'main.js': path.resolve(__dirname, './assets/js/main.js'), + } + } + } +}); + diff --git a/tool/web_platform.md b/tool/web_platform.md new file mode 100644 index 0000000..e99b535 --- /dev/null +++ b/tool/web_platform.md @@ -0,0 +1,9 @@ +regex101 + +wappalyze.com + +https://builtwith.com/es/ + +whois.domaintools.com + +ipinfo