From d728897805a1de242e71b901eebba323d59aff10 Mon Sep 17 00:00:00 2001 From: Hugo LAMY Date: Tue, 17 Mar 2026 18:16:21 +0100 Subject: [PATCH] complete modulation of html --- .vscode/settings.json | 5 +- README.md | 36 +- index.php | 50 +- package-lock.json | 1587 ++++++++++++++++++++++++++++-- package.json | 4 +- src/body.php | 757 +------------- src/modules/cv.html | 504 ++++++++++ src/modules/hero.html | 77 +- src/modules/infos.html | 30 + src/modules/language.html | 86 ++ src/modules/projects.html | 203 ++++ src/styles/banners.css | 8 - src/styles/base.css | 25 + src/styles/elements/cv.css | 38 - src/styles/elements/hero.css | 48 - src/styles/elements/infos.css | 6 - src/styles/elements/projects.css | 22 - src/styles/global_style.css | 248 ----- src/styles/global_variables.css | 107 -- src/styles/language.css | 59 -- src/styles/mouses.css | 381 ++++++- src/styles/mouses/mouse_1.css | 72 -- src/styles/mouses/mouse_2.css | 72 -- src/styles/mouses/mouse_3.css | 64 -- src/styles/mouses/mouse_4.css | 64 -- src/styles/reset.css | 47 + src/styles/text.css | 76 ++ 27 files changed, 2990 insertions(+), 1686 deletions(-) create mode 100644 src/modules/cv.html create mode 100644 src/modules/infos.html create mode 100644 src/modules/language.html create mode 100644 src/modules/projects.html create mode 100644 src/styles/base.css delete mode 100644 src/styles/elements/cv.css delete mode 100644 src/styles/elements/hero.css delete mode 100644 src/styles/elements/infos.css delete mode 100644 src/styles/elements/projects.css delete mode 100644 src/styles/global_style.css delete mode 100644 src/styles/global_variables.css delete mode 100644 src/styles/language.css delete mode 100644 src/styles/mouses/mouse_1.css delete mode 100644 src/styles/mouses/mouse_2.css delete mode 100644 src/styles/mouses/mouse_3.css delete mode 100644 src/styles/mouses/mouse_4.css create mode 100644 src/styles/reset.css create mode 100644 src/styles/text.css diff --git a/.vscode/settings.json b/.vscode/settings.json index c3b087b..fbe188f 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,10 +1,13 @@ { - // Use Prettier as the default formatter for HTML and CSS + // Use Prettier as the default formatter for HTML, CSS, and PHP "editor.defaultFormatter": "esbenp.prettier-vscode", "[html]": { "editor.defaultFormatter": "esbenp.prettier-vscode" }, "[css]": { "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[php]": { + "editor.defaultFormatter": "bmewburn.vscode-intelephense-client" } } diff --git a/README.md b/README.md index c333345..5693368 100644 --- a/README.md +++ b/README.md @@ -1,21 +1,29 @@ +### instructions + +- start server with php, and browser-sync for auto reload : + - `npm run dev` +- setup instructions : + - install apps : `sudo apt update && sudo apt install php-cli nodejs npm` + - verify : `php -v` & `node -v` & `npm -v` + - install dependencies : `npm ci` +- -> only for info, at project creation setup : + - run : `npm init -y && npm install --save-dev browser-sync` + - add in package.jsons > scripts : `php -S localhost:8000 & browser-sync start --proxy localhost:8000 --files "**/*.php,**/*.css,**/*.js" --port 3000` + - `php -S localhost:8000` → starts PHP built-in server + - `&` → runs PHP server in the background (Linux/macOS) + - `browser-sync start --proxy localhost:8000` → proxies PHP server + - `--files "**/*.php,**/*.css,**/*.js"` → watches files for changes + - `--port 3000` → BrowserSync UI accessible at http://localhost:3000 + +--- + +### ressources + html validator : https://validator.w3.org/nu --- -- start server with php, and nodemon for auto reload : - - `npm run dev` - -- setup : - - install apps : `sudo apt update && sudo apt install php-cli nodejs npm` - - verify : `php -v` & `node -v` & `npm -v` - - -> only for info, at project creation setup : - - run : `npm init -y && npm install --save-dev nodemon` - - add in package.jsons > scripts : `"dev": "nodemon --exec 'php -S localhost:8000' --ext php,html"` - - install dependencies : `npm ci` - ---- - -difficulties : +### difficulties - [accessibility with ascii art titles](https://stackoverflow.com/questions/77537096/make-text-in-ascii-art-more-accessible) - I finally decided to go with a structure like this : diff --git a/index.php b/index.php index 20f8f40..0661c36 100644 --- a/index.php +++ b/index.php @@ -1,33 +1,25 @@ - - - - - - hugulumu.fr - - - - - - - - - - - - - - - + + + + + + hugulumu.fr + + + + + + + + - + + + + + \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 707101b..1f9db90 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,84 @@ "version": "1.0.0", "license": "ISC", "devDependencies": { - "nodemon": "^3.1.14" + "browser-sync": "^3.0.4" + } + }, + "node_modules/@socket.io/component-emitter": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz", + "integrity": "sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/cors": { + "version": "2.8.19", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.19.tgz", + "integrity": "sha512-mFNylyeyqN93lfe/9CSxOGREz8cpzAhH+E93xJ4xWQf62V8sQ/24reV2nyzUWM6H6Xji+GGHpkbLe7pVoUEskg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/node": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.5.0.tgz", + "integrity": "sha512-jp2P3tQMSxWugkCUKLRPVUpGaL5MVFwF8RDuSRztfwgN1wmqJeMSbKlnEtQqU8UrhTmzEmZdu2I6v2dpp7XIxw==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~7.18.0" + } + }, + "node_modules/@types/ws": { + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz", + "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/anymatch": { @@ -26,16 +103,50 @@ "node": ">= 8" } }, - "node_modules/balanced-match": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", - "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "node_modules/async": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash": "^4.17.14" + } + }, + "node_modules/async-each-series": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/async-each-series/-/async-each-series-0.1.1.tgz", + "integrity": "sha512-p4jj6Fws4Iy2m0iCmI2am2ZNZCgbdgE+P8F/8csmn2vx7ixXrO2zGcuNsD46X5uZSVecmkEy/M06X2vG8KD6dQ==", "dev": true, "license": "MIT", "engines": { - "node": "18 || 20 || >=22" + "node": ">=0.8.0" } }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/base64id": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", + "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^4.5.0 || >= 5.9" + } + }, + "node_modules/batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", + "dev": true, + "license": "MIT" + }, "node_modules/binary-extensions": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", @@ -50,16 +161,14 @@ } }, "node_modules/brace-expansion": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz", - "integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "license": "MIT", "dependencies": { - "balanced-match": "^4.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, "node_modules/braces": { @@ -75,6 +184,114 @@ "node": ">=8" } }, + "node_modules/browser-sync": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/browser-sync/-/browser-sync-3.0.4.tgz", + "integrity": "sha512-mcYOIy4BW6sWSEnTSBjQwWsnbx2btZX78ajTTjdNfyC/EqQVcIe0nQR6894RNAMtvlfAnLaH9L2ka97zpvgenA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "browser-sync-client": "^3.0.4", + "browser-sync-ui": "^3.0.4", + "bs-recipes": "1.3.4", + "chalk": "4.1.2", + "chokidar": "^3.5.1", + "connect": "3.6.6", + "connect-history-api-fallback": "^1", + "dev-ip": "^1.0.1", + "easy-extender": "^2.3.4", + "eazy-logger": "^4.1.0", + "etag": "^1.8.1", + "fresh": "^0.5.2", + "fs-extra": "3.0.1", + "http-proxy": "^1.18.1", + "immutable": "^3", + "micromatch": "^4.0.8", + "opn": "5.3.0", + "portscanner": "2.2.0", + "raw-body": "^2.3.2", + "resp-modifier": "6.0.2", + "rx": "4.1.0", + "send": "^0.19.0", + "serve-index": "^1.9.1", + "serve-static": "^1.16.2", + "server-destroy": "1.0.1", + "socket.io": "^4.4.1", + "ua-parser-js": "^1.0.33", + "yargs": "^17.3.1" + }, + "bin": { + "browser-sync": "dist/bin.js" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/browser-sync-client": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/browser-sync-client/-/browser-sync-client-3.0.4.tgz", + "integrity": "sha512-+ew5ubXzGRKVjquBL3u6najS40TG7GxCdyBll0qSRc/n+JRV9gb/yDdRL1IAgRHqjnJTdqeBKKIQabjvjRSYRQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "etag": "1.8.1", + "fresh": "0.5.2", + "mitt": "^1.1.3" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/browser-sync-ui": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/browser-sync-ui/-/browser-sync-ui-3.0.4.tgz", + "integrity": "sha512-5Po3YARCZ/8yQHFzvrSjn8+hBUF7ZWac39SHsy8Tls+7tE62iq6pYWxpVU6aOOMAGD21RwFQhQeqmJPf70kHEQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "async-each-series": "0.1.1", + "chalk": "4.1.2", + "connect-history-api-fallback": "^1", + "immutable": "^3", + "server-destroy": "1.0.1", + "socket.io-client": "^4.4.1", + "stream-throttle": "^0.1.3" + } + }, + "node_modules/bs-recipes": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/bs-recipes/-/bs-recipes-1.3.4.tgz", + "integrity": "sha512-BXvDkqhDNxXEjeGM8LFkSbR+jzmP/CYpCiVKYn+soB1dDldeU15EBNDkwVXndKuX35wnNUaPd0qSoQEAkmQtMw==", + "dev": true, + "license": "ISC" + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, "node_modules/chokidar": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", @@ -100,7 +317,237 @@ "fsevents": "~2.3.2" } }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/connect": { + "version": "3.6.6", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.6.tgz", + "integrity": "sha512-OO7axMmPpu/2XuX1+2Yrg0ddju31B6xLZMWkJ5rYBu4YRmRVlOjvlY6kw2FJKiAzyxGwnrDUAG4s1Pf0sbBMCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "finalhandler": "1.1.0", + "parseurl": "~1.3.2", + "utils-merge": "1.0.1" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/connect-history-api-fallback": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/cookie": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cors": { + "version": "2.8.6", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.6.tgz", + "integrity": "sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, "node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "license": "MIT", + "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==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/dev-ip": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dev-ip/-/dev-ip-1.0.1.tgz", + "integrity": "sha512-LmVkry/oDShEgSZPNgqCIp2/TlqtExeGmymru3uCELnfyjY11IzpAproLYs+1X88fXO6DBoYP3ul2Xo2yz2j6A==", + "dev": true, + "bin": { + "dev-ip": "lib/dev-ip.js" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/easy-extender": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/easy-extender/-/easy-extender-2.3.4.tgz", + "integrity": "sha512-8cAwm6md1YTiPpOvDULYJL4ZS6WfM5/cTeVVh4JsvyYZAoqlRVUpHL9Gr5Fy7HA6xcSZicUia3DeAgO3Us8E+Q==", + "dev": true, + "dependencies": { + "lodash": "^4.17.10" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/eazy-logger": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/eazy-logger/-/eazy-logger-4.1.0.tgz", + "integrity": "sha512-+mn7lRm+Zf1UT/YaH8WXtpU6PIV2iOjzP6jgKoiaq/VNrjYKp+OHZGe2znaLgDeFkw8cL9ffuaUm+nNnzcYyGw==", + "dev": true, + "dependencies": { + "chalk": "4.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "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, + "license": "MIT" + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "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==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/engine.io": { + "version": "6.6.6", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.6.6.tgz", + "integrity": "sha512-U2SN0w3OpjFRVlrc17E6TMDmH58Xl9rai1MblNjAdwWp07Kk+llmzX0hjDpQdrDGzwmvOtgM5yI+meYX6iZ2xA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/cors": "^2.8.12", + "@types/node": ">=10.0.0", + "@types/ws": "^8.5.12", + "accepts": "~1.3.4", + "base64id": "2.0.0", + "cookie": "~0.7.2", + "cors": "~2.8.5", + "debug": "~4.4.1", + "engine.io-parser": "~5.2.1", + "ws": "~8.18.3" + }, + "engines": { + "node": ">=10.2.0" + } + }, + "node_modules/engine.io-client": { + "version": "6.6.4", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.6.4.tgz", + "integrity": "sha512-+kjUJnZGwzewFDw951CDWcwj35vMNf2fcj7xQWOctq1F2i1jkDdVvdFG9kM/BEChymCH36KgjnW0NsL58JYRxw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.4.1", + "engine.io-parser": "~5.2.1", + "ws": "~8.18.3", + "xmlhttprequest-ssl": "~2.1.1" + } + }, + "node_modules/engine.io-client/node_modules/debug": { "version": "4.4.3", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", @@ -118,6 +565,82 @@ } } }, + "node_modules/engine.io-client/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, + "license": "MIT" + }, + "node_modules/engine.io-parser": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.3.tgz", + "integrity": "sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/engine.io/node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/engine.io/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, + "license": "MIT" + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "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, + "license": "MIT" + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true, + "license": "MIT" + }, "node_modules/fill-range": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", @@ -131,6 +654,68 @@ "node": ">=8" } }, + "node_modules/finalhandler": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz", + "integrity": "sha512-ejnvM9ZXYzp6PUPUyQBMBf0Co5VX2gr5H2VQe2Ui2jWXNlxv+PYZo8wpAymJNJdLsG1R4p+M4aynF8KuoUEwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.1", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.2", + "statuses": "~1.3.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", + "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-extra": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-3.0.1.tgz", + "integrity": "sha512-V3Z3WZWVUYd8hoCL5xfXJCaHWYzmtwW5XWYSlLgERi8PWd8bx1kUHUk8L1BT57e49oKnDDD180mjfrHc1yA9rg==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^3.0.0", + "universalify": "^0.1.0" + } + }, "node_modules/fsevents": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", @@ -146,6 +731,16 @@ "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, "node_modules/glob-parent": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", @@ -159,20 +754,96 @@ "node": ">= 6" } }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true, + "license": "ISC" + }, "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "license": "MIT", "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/ignore-by-default": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", - "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==", + "node_modules/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/http-errors/node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/immutable": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.3.tgz", + "integrity": "sha512-AUY/VyX0E5XlibOmWt10uabJzam1zlYjwiEgQSDc5+UIkFNaF9WM0JxXKaNMGf+F/ffUF+7kRKXM9A7C0xXqMg==", + "dev": true, + "license": "MIT", + "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==", "dev": true, "license": "ISC" }, @@ -199,6 +870,16 @@ "node": ">=0.10.0" } }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -222,56 +903,141 @@ "node": ">=0.12.0" } }, - "node_modules/minimatch": { - "version": "10.2.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", - "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", + "node_modules/is-number-like": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/is-number-like/-/is-number-like-1.0.8.tgz", + "integrity": "sha512-6rZi3ezCyFcn5L71ywzz2bS5b2Igl1En3eTlZlvKjpz1n3IZLAYMbKYAIQgFmEu0GENg92ziU/faEOA/aixjbA==", "dev": true, - "license": "BlueOak-1.0.0", + "license": "ISC", "dependencies": { - "brace-expansion": "^5.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "lodash.isfinite": "^3.3.2" } }, - "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/is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/jsonfile": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-3.0.1.tgz", + "integrity": "sha512-oBko6ZHlubVB5mRFkur5vgYR1UyqX+S6Y/oCfLhqNdcc2fYFlDpIoNc7AfKS1KOGcnNAkvsr0grLck9ANM815w==", + "dev": true, + "license": "MIT", + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/limiter": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.5.tgz", + "integrity": "sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA==", + "dev": true + }, + "node_modules/lodash": { + "version": "4.17.23", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz", + "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==", "dev": true, "license": "MIT" }, - "node_modules/nodemon": { - "version": "3.1.14", - "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.1.14.tgz", - "integrity": "sha512-jakjZi93UtB3jHMWsXL68FXSAosbLfY0In5gtKq3niLSkrWznrVBzXFNOEMJUfc9+Ke7SHWoAZsiMkNP3vq6Jw==", + "node_modules/lodash.isfinite": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/lodash.isfinite/-/lodash.isfinite-3.3.2.tgz", + "integrity": "sha512-7FGG40uhC8Mm633uKW1r58aElFlBlxCrg9JfSi3P6aYiWmfiWF0PgMd86ZUsxE5GwWPdHoS2+48bwTh2VPkIQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, "license": "MIT", "dependencies": { - "chokidar": "^3.5.2", - "debug": "^4", - "ignore-by-default": "^1.0.1", - "minimatch": "^10.2.1", - "pstree.remy": "^1.1.8", - "semver": "^7.5.3", - "simple-update-notifier": "^2.0.0", - "supports-color": "^5.5.0", - "touch": "^3.1.0", - "undefsafe": "^2.0.5" - }, - "bin": { - "nodemon": "bin/nodemon.js" + "braces": "^3.0.3", + "picomatch": "^2.3.1" }, "engines": { - "node": ">=10" + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "license": "MIT", + "bin": { + "mime": "cli.js" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/nodemon" + "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==", + "dev": true, + "license": "MIT", + "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/mitt": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-1.2.0.tgz", + "integrity": "sha512-r6lj77KlwqLhIUku9UWYes7KJtsczvolZkzp8hbaDPPaE24OmWl5s539Mytlj22siEQKosZ26qCBgda2PKwoJw==", + "dev": true, + "license": "MIT" + }, + "node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" + }, + "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==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" } }, "node_modules/normalize-path": { @@ -284,6 +1050,52 @@ "node": ">=0.10.0" } }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "dev": true, + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/opn": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.3.0.tgz", + "integrity": "sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-wsl": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", @@ -297,12 +1109,46 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/pstree.remy": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", - "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", + "node_modules/portscanner": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/portscanner/-/portscanner-2.2.0.tgz", + "integrity": "sha512-IFroCz/59Lqa2uBvzK3bKDbDDIEaAY8XJ1jFxcLWTqosrsc32//P4VuSB2vZXoHiHqOmx8B5L5hnKOxL/7FlPw==", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "async": "^2.6.0", + "is-number-like": "^1.0.3" + }, + "engines": { + "node": ">=0.4", + "npm": ">=1.0.0" + } + }, + "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==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz", + "integrity": "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==", + "dev": true, + "license": "MIT", + "dependencies": { + "bytes": "~3.1.2", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } }, "node_modules/readdirp": { "version": "3.6.0", @@ -317,43 +1163,441 @@ "node": ">=8.10.0" } }, - "node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, + "license": "MIT", "engines": { - "node": ">=10" + "node": ">=0.10.0" } }, - "node_modules/simple-update-notifier": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz", - "integrity": "sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==", + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/resp-modifier": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/resp-modifier/-/resp-modifier-6.0.2.tgz", + "integrity": "sha512-U1+0kWC/+4ncRFYqQWTx/3qkfE6a4B/h3XXgmXypfa0SPZ3t7cbbaFk297PjQS/yov24R18h6OZe6iZwj3NSLw==", + "dev": true, + "dependencies": { + "debug": "^2.2.0", + "minimatch": "^3.0.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/rx": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/rx/-/rx-4.1.0.tgz", + "integrity": "sha512-CiaiuN6gapkdl+cZUr67W6I8jquN4lkak3vtIsIWCl4XIPP8ffsoyN6/+PuGXnQy8Cu8W2y9Xxh31Rq4M6wUug==", + "dev": true, + "license": "Apache-2.0" + }, + "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, + "license": "MIT" + }, + "node_modules/send": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.2.tgz", + "integrity": "sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==", "dev": true, "license": "MIT", "dependencies": { - "semver": "^7.5.3" + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "~0.5.2", + "http-errors": "~2.0.1", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "~2.4.1", + "range-parser": "~1.2.1", + "statuses": "~2.0.2" }, "engines": { - "node": ">=10" + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "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, + "license": "MIT" + }, + "node_modules/send/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==", + "dev": true, + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/send/node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/serve-index": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.2.tgz", + "integrity": "sha512-KDj11HScOaLmrPxl70KYNW1PksP4Nb/CLL2yvC+Qd2kHMPEEpfc4Re2e4FOay+bC/+XQl/7zAcWON3JVo5v3KQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "accepts": "~1.3.8", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.8.0", + "mime-types": "~2.1.35", + "parseurl": "~1.3.3" + }, + "engines": { + "node": ">= 0.8.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/serve-index/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/http-errors": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-static": { + "version": "1.16.3", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.3.tgz", + "integrity": "sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "~0.19.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-static/node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/server-destroy": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/server-destroy/-/server-destroy-1.0.1.tgz", + "integrity": "sha512-rb+9B5YBIEzYcD6x2VKidaa+cqYBJQKnU4oe4E3ANwRRN56yk/ua1YCJT1n21NTS8w6CcOclAKNP3PhdCXKYtQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true, + "license": "ISC" + }, + "node_modules/socket.io": { + "version": "4.8.3", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.8.3.tgz", + "integrity": "sha512-2Dd78bqzzjE6KPkD5fHZmDAKRNe3J15q+YHDrIsy9WEkqttc7GY+kT9OBLSMaPbQaEd0x1BjcmtMtXkfpc+T5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "accepts": "~1.3.4", + "base64id": "~2.0.0", + "cors": "~2.8.5", + "debug": "~4.4.1", + "engine.io": "~6.6.0", + "socket.io-adapter": "~2.5.2", + "socket.io-parser": "~4.2.4" + }, + "engines": { + "node": ">=10.2.0" + } + }, + "node_modules/socket.io-adapter": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.6.tgz", + "integrity": "sha512-DkkO/dz7MGln0dHn5bmN3pPy+JmywNICWrJqVWiVOyvXjWQFIv9c2h24JrQLLFJ2aQVQf/Cvl1vblnd4r2apLQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "~4.4.1", + "ws": "~8.18.3" + } + }, + "node_modules/socket.io-adapter/node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/socket.io-adapter/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, + "license": "MIT" + }, + "node_modules/socket.io-client": { + "version": "4.8.3", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.8.3.tgz", + "integrity": "sha512-uP0bpjWrjQmUt5DTHq9RuoCBdFJF10cdX9X+a368j/Ft0wmaVgxlrjvK3kjvgCODOMMOz9lcaRzxmso0bTWZ/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.4.1", + "engine.io-client": "~6.6.1", + "socket.io-parser": "~4.2.4" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/socket.io-client/node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/socket.io-client/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, + "license": "MIT" + }, + "node_modules/socket.io-parser": { + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.6.tgz", + "integrity": "sha512-asJqbVBDsBCJx0pTqw3WfesSY0iRX+2xzWEWzrpcH7L6fLzrhyF8WPI8UaeM4YCuDfpwA/cgsdugMsmtz8EJeg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.4.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/socket.io-parser/node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/socket.io-parser/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, + "license": "MIT" + }, + "node_modules/socket.io/node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/socket.io/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, + "license": "MIT" + }, + "node_modules/statuses": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", + "integrity": "sha512-wuTCPGlJONk/a1kqZ4fQM2+908lC7fa7nPYpTC1EhnvqLX/IICbeP1OZGDtA374trpSq68YubKUMo8oRhN46yg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/stream-throttle": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/stream-throttle/-/stream-throttle-0.1.3.tgz", + "integrity": "sha512-889+B9vN9dq7/vLbGyuHeZ6/ctf5sNuGWsDy89uNxkFTAgzy0eK7+w5fL3KLNRTkLle7EgZGvHUphZW0Q26MnQ==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "commander": "^2.2.0", + "limiter": "^1.0.5" + }, + "bin": { + "throttleproxy": "bin/throttleproxy.js" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" } }, "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^3.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/to-regex-range": { @@ -369,22 +1613,177 @@ "node": ">=8.0" } }, - "node_modules/touch": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.1.tgz", - "integrity": "sha512-r0eojU4bI8MnHr8c5bNo7lJDdI2qXlWWJk6a9EAFG7vbhTjElYhBVS3/miuE0uOuoLdb8Mc/rVfsmm6eo5o9GA==", + "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==", "dev": true, - "license": "ISC", - "bin": { - "nodetouch": "bin/nodetouch.js" + "license": "MIT", + "engines": { + "node": ">=0.6" } }, - "node_modules/undefsafe": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", - "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", + "node_modules/ua-parser-js": { + "version": "1.0.41", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.41.tgz", + "integrity": "sha512-LbBDqdIC5s8iROCUjMbW1f5dJQTEFB1+KO9ogbvlb3nm9n4YHa5p4KTvFPWvh2Hs8gZMBuiB1/8+pdfe/tDPug==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/ua-parser-js" + }, + { + "type": "paypal", + "url": "https://paypal.me/faisalman" + }, + { + "type": "github", + "url": "https://github.com/sponsors/faisalman" + } + ], + "license": "MIT", + "bin": { + "ua-parser-js": "script/cli.js" + }, + "engines": { + "node": "*" + } + }, + "node_modules/undici-types": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz", + "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==", "dev": true, "license": "MIT" + }, + "node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true, + "license": "MIT", + "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==", + "dev": true, + "license": "MIT", + "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==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/ws": { + "version": "8.18.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz", + "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xmlhttprequest-ssl": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.1.2.tgz", + "integrity": "sha512-TEU+nJVUUnA4CYJFLvK5X9AOeH4KvDvhIfm0vV1GaQRtchnG0hgK5p8hw/xjv8cunWYCsiPCSDzObPyhEwq3KQ==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } } } } diff --git a/package.json b/package.json index d308bbb..408c112 100644 --- a/package.json +++ b/package.json @@ -8,12 +8,12 @@ }, "scripts": { "test": "echo \"Error: no test specified\" && exit 1", - "dev": "nodemon --exec 'php -S localhost:8000' --ext php,html" + "dev": "php -S localhost:8000 & browser-sync start --proxy localhost:8000 --files \"**/*.php,**/*.css,**/*.js\" --port 3000" }, "keywords": [], "author": "", "license": "ISC", "devDependencies": { - "nodemon": "^3.1.14" + "browser-sync": "^3.0.4" } } diff --git a/src/body.php b/src/body.php index c74af6d..c328021 100644 --- a/src/body.php +++ b/src/body.php @@ -1,725 +1,56 @@ + +
+ - -
-
- -

- -

-
+ -
- + -

- EXPÉRIENCES - WORK EXPERIENCES -

- + -

- web full-stack - web full-stack -

-
    -
  • - BLOC-HOUSE: reprise du site d'une association d'artistes - (fullstack, php, javascript, html, css), 2023 - BLOC-HOUSE: takeover of an artists' association website - (fullstack, php, javascript, html, css), 2023 -
  • -
  • - TRANSCENDENCE: chat en ligne avec gestions des comptes et - notifications (fullstack, node.js, nest.js, websocket, svelte, - PostgreSQL) - TRANSCENDENCE: online chat with account management and - notifications (fullstack, node.js, nest.js, websocket, svelte, - PostgreSQL) -
  • -
  • - FIPF: plugin qui gère les paiements, les roles, corrige les - autres plugins et des actions front-end (fullstack, js, php, bdd), - 2024 - FIPF: plugin that manages payments, roles, corrects other plugins - and front-end actions (fullstack, js, php, bdd), 2024 -
  • -
  • - JIPF: utilise les API GoogleMaps pour afficher des données - dynamiques sur une carte avec des filtres, 2022 - JIPF: uses GoogleMaps APIs to display dynamic data on a map, with - interactive filters -
  • -
  • - KOSMOPOLIT: front-end, integration d'un site statique pour une - association de litterature, (html, css atomique), 2022 - KOSMOPOLIT: front-end, integration of a static site for a - literature association, (html, atomic css), 2022 -
  • -
+ -

- devops - devops -

-
    -
  • - WEBSERV: création d'un serveur web non-bloquant en multiplexage, - capable de gérer des requetes http et envoyer du contenu (c++, - linux sockets) - WEBSERV: creation of a non-blocking multiplexing web server - capable of managing http requests and sending content (c++, linux - sockets) -
  • -
  • - MINITALK: utiliser les signaux système de linux pour creer une - communication en code ascii entre deux processus - MINITALK: using linux system signals to create ascii code - communication between two processes -
  • -
  • - INCEPTION: création de zéro d'ima-ges docker pour deployer - wordpress avec encription SSL (docker compose, mariaDB, NGINX, - Wordpress) - INCEPTION: creating docker images from scratch to deploy - wordpress with SSL encription (docker compose, mariaDB, NGINX, - Wordpress) -
  • -
- -

- game - game -

-
    -
  • - CUBE 3D: jeu à la premiere personne utilisant le raycasting pour - la 3d et les textures, et le clavier pour bouger (c, - trigonométrie, inputs) - CUBE 3D: first-person game using raycasting for 3d and textures, - and the keyboard for movement (c, trigonometry, inputs) -
  • -
  • - FDF: modélisation spatiale de formes en courbes de niveau à - partir de cartes (c, trigonometrie, inputs) - FDF: spatial modelling of contour lines from maps with keyboard - control (c, trigonometrie, inputs) -
  • -
- -

- system - system -

-
    -
  • - MINISHELL: créer un shell capable de parser des prompts, exécuter - des programmes, et réagir aux signaux (c, bash, signals, fork, - pipe, readline) - MINISHELL: creating a shell capable of parsing prompts, executing - programs, and listening to signals (c, bash, signals, fork, pipe, - readline) -
  • -
  • - CONTAINERS: recoder 3 conteneurs c++ avec les iterateurs, - surcharges, et templates : map, vector, stack - CONTAINERS: recoding c++ containers with iterators, overloads and - templates : map, vector, stack -
  • -
  • - PUSHSWAP: algorithmes de tris avec deux piles et des mouvements - limités aux extrémités des piles (c) - PUSHSWAP: sorting algorithms with two stacks and limited movement - at the ends of the stacks (c) -
  • -
- -

- COMPÉTENCES - SKILLS -

- - -

- hard skills - hard skills -

-
    -
  • - Langages : C, C++, bash, JavaScript, PHP, CSS, HTML - Languages : C, C++, bash, JavaScript, PHP, CSS, HTML -
  • -
  • - Technologies : Node.js, Git, Gitaction, Docker, Wordpress, Nginx, - MariaDB, Nest.js, Svelte, WebSocket, Express, npm, react - Technologies : Node.js, Git, Gitaction, Docker, Wordpress, Nginx, - MariaDB, Nest.js, Svelte, WebSocket, Express, npm, react -
  • -
  • - Plus : emails, sending emails, receiving emails, deleting emails - (the it crowd S01E01) - Plus : emails, sending emails, receiving emails, deleting emails - (the it crowd S01E01) -
  • -
-

- soft skills - soft skills -

-
    -
  • - capacité d'apprentissage et autonomie - learning ability, and autonomy -
  • -
  • - attention aux détails, patience - attention to details, patience -
  • -
  • - adaptabilité et resolution de problemes - adaptability and problem-solving -
  • -
  • - recevoir des feedbacks - receiving feedback -
  • -
- -

- FORMATIONS - EDUCATIONS -

- - -

- informatique - computer science -

-
    -
  • - École 42, Paris, 2021-2022, tronc commun - niveau 10 (C, C++, - système, algorithmie, réseaux) - 42 school, Paris, 2021-2022, common core - level 10 (C, C++, - system, algorithms, networks) -
  • -
  • - SIMPLON, développeur full-stack JavaScript, 2018 (Javascript, - Node.js, React.js, HTML, CSS) - SIMPLON, developer full-stack JavaScript, 2018 (Javascript, - Node.js, React.js, HTML, CSS) -
  • -
-

- architecture - architecture -

-
    -
  • - Master 1, ENSAPM, ESA, ENSAV, île-de-france, France, - 2008-2014 - Master 1, ENSAPM, ESA, ENSAV, île-de-france, France, - 2008-2014 -
  • -
  • - 3 stages : PERSPECTIVA (Houston, Texas, 2009, 3 mois), AS (Paris, - 2012, 6 mois), JC QUINTON (Paris 2014, 6 mois) - 3 internships : PERSPECTIVA (Houston, Texas, 2009, 3 months), AS - (Paris, 2012, 6 months), JC QUINTON (Paris 2014, 6 months) -
  • -
- -

- PERSONNEL - PERSONAL -

- - -

- engagement associatif - volunteer work -

-
    -
  • - Vulgarisation et recherche contraception testiculaire, - ZEROMILLIONS, Paris, France, 2021-2024 - Popularisation and research into testicular contraception, - ZEROMILLIONS, Paris, France, 2021-2024 -
  • -
  • - Aide au logement, travail, administratif, et projets de vie de - personnes précaires, 2018-2024 - Help with housing, work, administration and life projects for - people on the margins of society, 2018-2024 -
  • -
  • - Distribution de nourriture, MIGRANTS-WILSON & SECOURS POPULAIRE, - 2020-2022 - Food distribution, MIGRANTS-WILSON & SECOURS POPULAIRE, - 2020-2022 -
  • -
  • - Cogestion des bénévoles d'un camp de réfugiés, UTOPIA 56, - Grande-Synthe, France, 2016 - Co-management of volunteers in a refugee camp, UTOPIA 56, - Grande-Synthe, France, 2016 -
  • -
-

- centre d'intérêts - interests -

-
    -
  • - vélo - bicycle -
  • -
  • - magie - magic tricks -
  • -
  • - noeuds - knots -
  • -
  • - mathématiques et physiques - mathematics and physics -
  • -
  • - politique - politic -
  • -
-
- -
- -
- - -
-
- -

- -

-
- -
-

- code-sources de tous les projets : - source code for all projects : -

- -
- -

- quelques exemples de projets réalisés : - some examples of completed projects : -

- -
-
- - - -
-

- programme qui creer une representation 3D filaire d'une carte - avec des points a differentes altitudes - program that creates a 3D wireframe representation of a map - with points at different altitudes -

- -
-
- -
- - - -
-

- mini jeu video utilisant le raycasting pour creer une - impression de deplacement dans un environnement 3D - mini video game using raycasting to create the impression of - movement in a 3D environment -

- -
-
- -
- - - -
-

- plugin wordpress representant des evenements sur une carte avec - des marqueurs et des filtres de tris - wordpress plugin showing events on a map with markers and - sorting filters -

- -
-
- -
- - - -
-

- site internet statique utilisant une structure uniquement en - html et css - static website using a structure based solely on html and - css -

- -
-
-
- -
- -
- - - +
\ No newline at end of file diff --git a/src/modules/cv.html b/src/modules/cv.html new file mode 100644 index 0000000..0745f2d --- /dev/null +++ b/src/modules/cv.html @@ -0,0 +1,504 @@ + + + + +
+
+ +

+ +

+
+ +
+ + +

+ EXPÉRIENCES + WORK EXPERIENCES +

+ + +

+ web full-stack + web full-stack +

+
    +
  • + BLOC-HOUSE: reprise du site d'une association d'artistes (fullstack, + php, javascript, html, css), 2023 + BLOC-HOUSE: takeover of an artists' association website (fullstack, + php, javascript, html, css), 2023 +
  • +
  • + TRANSCENDENCE: chat en ligne avec gestions des comptes et + notifications (fullstack, node.js, nest.js, websocket, svelte, + PostgreSQL) + TRANSCENDENCE: online chat with account management and notifications + (fullstack, node.js, nest.js, websocket, svelte, PostgreSQL) +
  • +
  • + FIPF: plugin qui gère les paiements, les roles, corrige les autres + plugins et des actions front-end (fullstack, js, php, bdd), 2024 + FIPF: plugin that manages payments, roles, corrects other plugins and + front-end actions (fullstack, js, php, bdd), 2024 +
  • +
  • + JIPF: utilise les API GoogleMaps pour afficher des données dynamiques + sur une carte avec des filtres, 2022 + JIPF: uses GoogleMaps APIs to display dynamic data on a map, with + interactive filters +
  • +
  • + KOSMOPOLIT: front-end, integration d'un site statique pour une + association de litterature, (html, css atomique), 2022 + KOSMOPOLIT: front-end, integration of a static site for a literature + association, (html, atomic css), 2022 +
  • +
+ +

+ devops + devops +

+
    +
  • + WEBSERV: création d'un serveur web non-bloquant en multiplexage, + capable de gérer des requetes http et envoyer du contenu (c++, linux + sockets) + WEBSERV: creation of a non-blocking multiplexing web server capable + of managing http requests and sending content (c++, linux + sockets) +
  • +
  • + MINITALK: utiliser les signaux système de linux pour creer une + communication en code ascii entre deux processus + MINITALK: using linux system signals to create ascii code + communication between two processes +
  • +
  • + INCEPTION: création de zéro d'ima-ges docker pour deployer wordpress + avec encription SSL (docker compose, mariaDB, NGINX, Wordpress) + INCEPTION: creating docker images from scratch to deploy wordpress + with SSL encription (docker compose, mariaDB, NGINX, Wordpress) +
  • +
+ +

+ game + game +

+
    +
  • + CUBE 3D: jeu à la premiere personne utilisant le raycasting pour la + 3d et les textures, et le clavier pour bouger (c, trigonométrie, + inputs) + CUBE 3D: first-person game using raycasting for 3d and textures, and + the keyboard for movement (c, trigonometry, inputs) +
  • +
  • + FDF: modélisation spatiale de formes en courbes de niveau à partir de + cartes (c, trigonometrie, inputs) + FDF: spatial modelling of contour lines from maps with keyboard + control (c, trigonometrie, inputs) +
  • +
+ +

+ system + system +

+
    +
  • + MINISHELL: créer un shell capable de parser des prompts, exécuter des + programmes, et réagir aux signaux (c, bash, signals, fork, pipe, + readline) + MINISHELL: creating a shell capable of parsing prompts, executing + programs, and listening to signals (c, bash, signals, fork, pipe, + readline) +
  • +
  • + CONTAINERS: recoder 3 conteneurs c++ avec les iterateurs, surcharges, + et templates : map, vector, stack + CONTAINERS: recoding c++ containers with iterators, overloads and + templates : map, vector, stack +
  • +
  • + PUSHSWAP: algorithmes de tris avec deux piles et des mouvements + limités aux extrémités des piles (c) + PUSHSWAP: sorting algorithms with two stacks and limited movement at + the ends of the stacks (c) +
  • +
+ +

+ COMPÉTENCES + SKILLS +

+ + +

+ hard skills + hard skills +

+
    +
  • + Langages : C, C++, bash, JavaScript, PHP, CSS, HTML + Languages : C, C++, bash, JavaScript, PHP, CSS, HTML +
  • +
  • + Technologies : Node.js, Git, Gitaction, Docker, Wordpress, Nginx, + MariaDB, Nest.js, Svelte, WebSocket, Express, npm, react + Technologies : Node.js, Git, Gitaction, Docker, Wordpress, Nginx, + MariaDB, Nest.js, Svelte, WebSocket, Express, npm, react +
  • +
  • + Plus : emails, sending emails, receiving emails, deleting emails (the + it crowd S01E01) + Plus : emails, sending emails, receiving emails, deleting emails (the + it crowd S01E01) +
  • +
+

+ soft skills + soft skills +

+
    +
  • + capacité d'apprentissage et autonomie + learning ability, and autonomy +
  • +
  • + attention aux détails, patience + attention to details, patience +
  • +
  • + adaptabilité et resolution de problemes + adaptability and problem-solving +
  • +
  • + recevoir des feedbacks + receiving feedback +
  • +
+ +

+ FORMATIONS + EDUCATIONS +

+ + +

+ informatique + computer science +

+
    +
  • + École 42, Paris, 2021-2022, tronc commun - niveau 10 (C, C++, + système, algorithmie, réseaux) + 42 school, Paris, 2021-2022, common core - level 10 (C, C++, system, + algorithms, networks) +
  • +
  • + SIMPLON, développeur full-stack JavaScript, 2018 (Javascript, + Node.js, React.js, HTML, CSS) + SIMPLON, developer full-stack JavaScript, 2018 (Javascript, Node.js, + React.js, HTML, CSS) +
  • +
+

+ architecture + architecture +

+
    +
  • + Master 1, ENSAPM, ESA, ENSAV, île-de-france, France, 2008-2014 + Master 1, ENSAPM, ESA, ENSAV, île-de-france, France, 2008-2014 +
  • +
  • + 3 stages : PERSPECTIVA (Houston, Texas, 2009, 3 mois), AS (Paris, + 2012, 6 mois), JC QUINTON (Paris 2014, 6 mois) + 3 internships : PERSPECTIVA (Houston, Texas, 2009, 3 months), AS + (Paris, 2012, 6 months), JC QUINTON (Paris 2014, 6 months) +
  • +
+ +

+ PERSONNEL + PERSONAL +

+ + +

+ engagement associatif + volunteer work +

+
    +
  • + Vulgarisation et recherche contraception testiculaire, ZEROMILLIONS, + Paris, France, 2021-2024 + Popularisation and research into testicular contraception, + ZEROMILLIONS, Paris, France, 2021-2024 +
  • +
  • + Aide au logement, travail, administratif, et projets de vie de + personnes précaires, 2018-2024 + Help with housing, work, administration and life projects for people + on the margins of society, 2018-2024 +
  • +
  • + Distribution de nourriture, MIGRANTS-WILSON & SECOURS POPULAIRE, + 2020-2022 + Food distribution, MIGRANTS-WILSON & SECOURS POPULAIRE, + 2020-2022 +
  • +
  • + Cogestion des bénévoles d'un camp de réfugiés, UTOPIA 56, + Grande-Synthe, France, 2016 + Co-management of volunteers in a refugee camp, UTOPIA 56, + Grande-Synthe, France, 2016 +
  • +
+

+ centre d'intérêts + interests +

+
    +
  • + vélo + bicycle +
  • +
  • + magie + magic tricks +
  • +
  • + noeuds + knots +
  • +
  • + mathématiques et physiques + mathematics and physics +
  • +
  • + politique + politic +
  • +
+
+ +
+ +
diff --git a/src/modules/hero.html b/src/modules/hero.html index 6f8feba..2b8a971 100644 --- a/src/modules/hero.html +++ b/src/modules/hero.html @@ -1,4 +1,79 @@ -
+ + + + + + + +

diff --git a/src/modules/infos.html b/src/modules/infos.html new file mode 100644 index 0000000..5198345 --- /dev/null +++ b/src/modules/infos.html @@ -0,0 +1,30 @@ + + + + + diff --git a/src/modules/language.html b/src/modules/language.html new file mode 100644 index 0000000..fd3f024 --- /dev/null +++ b/src/modules/language.html @@ -0,0 +1,86 @@ + + + + + + diff --git a/src/modules/projects.html b/src/modules/projects.html new file mode 100644 index 0000000..74fb619 --- /dev/null +++ b/src/modules/projects.html @@ -0,0 +1,203 @@ + + + + +
+
+ +

+ +

+
+ +
+

+ code-sources de tous les projets : + source code for all projects : +

+ +
+ +

+ quelques exemples de projets réalisés : + some examples of completed projects : +

+ +
+
+ + + +
+

+ programme qui creer une representation 3D filaire d'une carte avec + des points a differentes altitudes + program that creates a 3D wireframe representation of a map with + points at different altitudes +

+ +
+
+ +
+ + + +
+

+ mini jeu video utilisant le raycasting pour creer une impression de + deplacement dans un environnement 3D + mini video game using raycasting to create the impression of + movement in a 3D environment +

+ +
+
+ +
+ + + +
+

+ plugin wordpress representant des evenements sur une carte avec des + marqueurs et des filtres de tris + wordpress plugin showing events on a map with markers and sorting + filters +

+ +
+
+ +
+ + + +
+

+ site internet statique utilisant une structure uniquement en html + et css + static website using a structure based solely on html and css +

+ +
+
+
+ +
+ +
diff --git a/src/styles/banners.css b/src/styles/banners.css index 7444776..fa2d307 100644 --- a/src/styles/banners.css +++ b/src/styles/banners.css @@ -91,11 +91,3 @@ --banner_height: calc(var(--base_banner_height) * 5); --dot_size: calc(var(--base_dot_size) * 5); } - -/* specific banners */ -#top_banner { - position: absolute; - top: 0px; - left: 0px; - width: 100%; -} diff --git a/src/styles/base.css b/src/styles/base.css new file mode 100644 index 0000000..3aba586 --- /dev/null +++ b/src/styles/base.css @@ -0,0 +1,25 @@ +:root { + --base_font_size: 62.5%; +} +html { + font-size: var(--base_font_size); +} +body { + overflow-x: clip; + margin: auto; + width: fit-content; + background-color: #f6f6f6; +} + +/* https://css-tricks.com/slow-movement/#h-you-can-implement-native-smooth-scrolling-in-css */ +/* Animate scrolling only if users don’t prefer reduced motion */ +@media (prefers-reduced-motion: no-preference) { + html { + scroll-behavior: smooth; + } + + /* Add some spacing between the target and the top of the viewport */ + :target { + scroll-margin-top: 0px; + } +} diff --git a/src/styles/elements/cv.css b/src/styles/elements/cv.css deleted file mode 100644 index 5626429..0000000 --- a/src/styles/elements/cv.css +++ /dev/null @@ -1,38 +0,0 @@ -#cv { - header { - height: 300px; - } -} - -.cv { - display: flex; - flex-direction: column; - text-align: left; - width: auto; - max-width: 900px; - - > *:last-child { - margin-bottom: 100px; - } - - .cv_download { - display: flex; - flex-wrap: wrap; - gap: 10px; - margin-top: 30px; - } - - .banner { - margin: 0px 0px 50px; - } - - h2 { - margin-top: 100px; - } - - ul { - border: 1px dashed black; - padding: 20px; - padding-left: 40px; - } -} diff --git a/src/styles/elements/hero.css b/src/styles/elements/hero.css deleted file mode 100644 index a1a28d8..0000000 --- a/src/styles/elements/hero.css +++ /dev/null @@ -1,48 +0,0 @@ -#hero { - min-height: 100vh; - grid-template-columns: 1fr auto 1fr; - /* - * WIP : trying to find a solution to have both qualities : - * - elements are spread across the page vertically ('hugo lamy developpeur' is not compacted on top) - * - the details element 'voir le cv' don't jump when we unroll it - * - grid-template-rows: 1fr auto 1fr; - grid-template-rows: auto auto 1fr; - */ - grid-template-rows: 50vh 1fr; - - .title { - /* - older safari doesn't not support flex gap - I could use a workaround : - https://stackoverflow.com/questions/65452057/flexbox-gap-workaround-for-safari - but it doesn't work with wrap - so instead I make them in columns and add a margin - - gap: 10px 30px; - */ - - display: flex; - flex-direction: column; - align-items: center; - - > *:first-child { - margin-bottom: 10px; - } - - &#name { - margin: 30px 0px 20px 0px; - } - - &#title { - margin: 20px 0px 20px 0px; - } - } - - .subtitle { - text-align: center; - display: inline-block; - max-width: 700px; - margin: 0px auto; - } -} diff --git a/src/styles/elements/infos.css b/src/styles/elements/infos.css deleted file mode 100644 index debd2ef..0000000 --- a/src/styles/elements/infos.css +++ /dev/null @@ -1,6 +0,0 @@ -#infos article { - display: flex; - flex-direction: column; - place-content: center; - height: 200px; -} diff --git a/src/styles/elements/projects.css b/src/styles/elements/projects.css deleted file mode 100644 index 4497bf7..0000000 --- a/src/styles/elements/projects.css +++ /dev/null @@ -1,22 +0,0 @@ -#projects { - header { - height: 300px; - } -} -#projects .projects_grid { - display: grid; - grid-template-columns: repeat(auto-fit, minmax(200px, auto)); - grid-template-columns: repeat(2, minmax(100px, auto)); - grid-template-columns: repeat(2, minmax(100px, 500px)); - grid-gap: 20px; -} -#projects .projects_grid figure { -} -#projects .projects_grid figure figcaption { - text-align: left; - margin-bottom: 100px; -} - -#projects .mouse { - margin-top: 100px; -} diff --git a/src/styles/global_style.css b/src/styles/global_style.css deleted file mode 100644 index 27e2a9a..0000000 --- a/src/styles/global_style.css +++ /dev/null @@ -1,248 +0,0 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * * - * * - * * - * * - * * - * RESET CSS * - * * - * * - * * - * * - * * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -body * { - margin: 0px; -} -input, -button, -textarea, -select { - /* Remove built-in form typography styles */ - font: inherit; -} -body { - -webkit-font-smoothing: antialiased; -} -img, -picture, -video, -canvas, -svg { - display: block; - max-width: 100%; -} -li, -p, -h1, -h2, -h3, -h4, -h5, -h6 { - /* Avoid text overflows - overflow-wrap: break-word; - */ - overflow-wrap: anywhere; -} - -/* style details elements */ -details summary { - cursor: pointer; -} -details summary > * { - /* allow to put h1 or anything inside the summary without breaking the line */ - display: inline; -} -script, -style { - display: none; -} - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * * - * * - * * - * * - * * - * GLOBAL CSS * - * * - * * - * * - * * - * * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -:root { - --base_font_size: 62.5%; -} -html { - font-size: var(--base_font_size); -} -body { - overflow-x: clip; - margin: auto; - width: fit-content; - background-color: #f6f6f6; -} - -/* https://css-tricks.com/slow-movement/#h-you-can-implement-native-smooth-scrolling-in-css */ -/* Animate scrolling only if users don’t prefer reduced motion */ -@media (prefers-reduced-motion: no-preference) { - html { - scroll-behavior: smooth; - } - - /* Add some spacing between the target and the top of the viewport */ - :target { - scroll-margin-top: 0px; - } -} - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * * - * * - * * - * * - * * - * TEXT CSS * - * * - * * - * * - * * - * * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -@font-face { - font-family: "notomono"; - src: url("./fonts/notomono/NotoMono-Dot.woff") format("woff"); - font-weight: normal; - font-style: normal; -} -body, -pre { - font-family: "notomono", monospace; - font-size: 1.5rem; - font-weight: normal; - font-style: normal; -} -@media screen and (min-width: 500px) { - html { - font-size: calc(var(--base_font_size) * 1.2); - } -} -ul { - display: block; - list-style-type: "• "; - padding-left: 25px; - /* - list-style-position: inside; - */ - list-style-position: outside; -} -li { - display: list-item; -} -li::marker { - font-size: 1.8rem; -} - -a:empty::after { - content: attr(href); -} -h1 { - margin: 30px 0px; - font-size: 2.25rem; -} -h2 { - margin: 30px 0px; - font-size: 2rem; -} -h3 { - margin: 20px 0px; - font-size: 1.75rem; -} -h4 { - margin: 20px 0px; - font-size: 1.5rem; -} -h5 { - margin: 10px 0px; - font-size: 1.25rem; -} -h6 { - margin: 10px 0px; - font-size: 1rem; -} - -.pre, -pre { - display: flex; - white-space: pre; - line-height: 0.8; - font-size: min(2.1vw, 1rem); -} -.pre_small { - font-size: min(1.5vw, 0.7rem); -} - -a { - word-break: break-all; -} - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * * - * * - * * - * * - * * - * SECTIONS GLOBAL CSS * - * * - * * - * * - * * - * * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -section { - display: grid; - margin: 0px; - width: 100vw; - grid-template-columns: auto auto auto; - grid-auto-rows: auto; - grid-gap: 10px; - gap: 10px; - min-height: 100vh; - justify-items: center; - text-align: center; - - > * { - grid-column: 2 / span 1; - } - - > .grid_full_width { - grid-column: 1 / span 3; - } - - header { - display: flex; - flex-direction: column; - place-content: center; - - h1 { - display: flex; - flex-direction: row; - flex-wrap: wrap; - justify-content: center; - } - } - - article { - text-align: left; - } - - .banner { - overflow-x: hidden; - } -} diff --git a/src/styles/global_variables.css b/src/styles/global_variables.css deleted file mode 100644 index 9b031e1..0000000 --- a/src/styles/global_variables.css +++ /dev/null @@ -1,107 +0,0 @@ -/* https://stackoverflow.com/questions/62107074/how-to-hide-a-text-and-make-it-accessible-by-screen-reader */ -.visually-hidden { - border: 0; - padding: 0; - margin: 0; - position: absolute !important; - height: 1px; - width: 1px; - overflow: hidden; - outline: none; - box-shadow: none; - clip: rect(1px 1px 1px 1px); /* IE6, IE7 - a 0 height clip, off to the bottom right of the visible 1px box */ - clip: rect(1px, 1px, 1px, 1px); /* maybe deprecated but we need to support legacy browsers */ - clip-path: inset(50%); /* modern browsers, clip-path works inwards from each corner */ - white-space: nowrap; /* added line to stop words getting smushed together (as they go onto separate lines and some screen readers do not understand line feeds as a space) */ -} - - -.margin_top_small { - margin-top: 10px; -} -.margin_bottom_small { - margin-bottom: 10px; -} - -.margin_top_big { - margin-top: 50px; -} -.margin_bottom_big { - margin-bottom: 50px; -} - - -/* - DATA-FLEX - - direction width childrens childrens childrens - position main axis cross axis - - [/]-horizontal [/]-parent [/]-center [/]-pack [/]-fit - [/] vertical [/] content [/] left [/]-wrap [/] stretch - [/] right [/] nowrap - [/] top [/] grow - [/] bottom [/] space - [/] spread - [/] gap - -> for GAP, you can custom the value with 'style="--gap:?px;"' -*/ -[data-flex] { - display: flex; - justify-content: center; - align-items: center; - width: auto; - flex-wrap: nowrap; -} -[data-flex] > * { - flex-grow: 0; -} -/* - direction : -horizontal- vertical -*/ -[data-flex~="horizontal"] { flex-direction: row; } -[data-flex~="vertical"] { flex-direction: column; } -/* - width : -parent- content -*/ -[data-flex~="parent"] { - width: 100%; - width: -moz-available; /* WebKit-based browsers will ignore this. */ - width: -webkit-fill-available; /* Mozilla-based browsers will ignore this. */ - width: fill-available; -} -[data-flex~="content"] { width: fit-content; } -/* - position : -center- left right top bottom -*/ -[data-flex~="left"] ,[data-flex~="vertical"][data-flex~="left"] { align-items: flex-start; text-align: left; } -[data-flex~="right"] ,[data-flex~="vertical"][data-flex~="right"] { align-items: flex-end; text-align: right; } -[data-flex~="top"] ,[data-flex~="vertical"][data-flex~="top"] { justify-content: flex-start; } -[data-flex~="bottom"] ,[data-flex~="vertical"][data-flex~="bottom"] { justify-content: flex-end; } -[data-flex~="center"] ,[data-flex~="vertical"][data-flex~="center"] { align-items: center; text-align: center; } -[data-flex~="horizontal"][data-flex~="left"] { justify-content: flex-start; } -[data-flex~="horizontal"][data-flex~="right"] { justify-content: flex-end; } -[data-flex~="horizontal"][data-flex~="top"] { align-items: flex-start; } -[data-flex~="horizontal"][data-flex~="bottom"] { align-items: flex-end; } -[data-flex~="horizontal"][data-flex~="center"] { } -/* - main axis : -pack- space spread grow wrap gap -*/ -[data-flex~="pack"] > * ,[data-flex~="vertical"][data-flex~="pack"] > * { flex-grow: 0; } -[data-flex~="space"] ,[data-flex~="vertical"][data-flex~="space"] { justify-content: space-around; } -[data-flex~="spread"] ,[data-flex~="vertical"][data-flex~="spread"] { justify-content: space-between; } -[data-flex~="grow"] > * ,[data-flex~="vertical"][data-flex~="grow"] > * { flex-grow: 1; } -[data-flex~="horizontal"][data-flex~="pack"] > * { flex-grow: 0; } -[data-flex~="horizontal"][data-flex~="space"] { justify-content: space-around; } -[data-flex~="horizontal"][data-flex~="spread"] { justify-content: space-between; } -[data-flex~="horizontal"][data-flex~="grow"] > * { flex-grow: 1; } -[data-flex~="wrap"] { flex-wrap: wrap; } -/* - cross axis : -fit- stretch -*/ -[data-flex~="horizontal"][data-flex~="fit"], - [data-flex~="vertical"][data-flex~="fit"] { } -[data-flex~="horizontal"][data-flex~="stretch"], - [data-flex~="vertical"][data-flex~="stretch"] { align-items: stretch; } - - diff --git a/src/styles/language.css b/src/styles/language.css deleted file mode 100644 index 64d845c..0000000 --- a/src/styles/language.css +++ /dev/null @@ -1,59 +0,0 @@ -input#language { - display: none; -} -label#language_label { - position: fixed; - top: 20px; - right: 20px; - padding: 10px; - cursor: pointer; - z-index: 1; - - .flag { - width: 20px; - } -} - -/* -* SWITCH FLAG -*/ -#language { - &:not(:checked) + #language_label { - #fr { - display: inline; - } - - #en { - display: none; - } - } - - &:checked + #language_label { - #fr { - display: none; - } - - #en { - display: inline; - } - } -} - -/* -* SWITCH LANGUAGE -*/ - -#language { - ~ * .fr, - ~ * .en { - display: none; - } - - &:not(:checked) ~ * .en { - display: inline; - } - - &:checked ~ * .fr { - display: inline; - } -} diff --git a/src/styles/mouses.css b/src/styles/mouses.css index e3aa855..0dbba96 100644 --- a/src/styles/mouses.css +++ b/src/styles/mouses.css @@ -1,26 +1,24 @@ -@import "./mouses/mouse_1.css"; -@import "./mouses/mouse_2.css"; -@import "./mouses/mouse_3.css"; -@import "./mouses/mouse_4.css"; - .mouse { - margin: auto; - width: fit-content; - overflow: hidden; -} -.mouse .frames { - position: relative; - animation: mouse_move infinite 2s normal steps(4); -} -.mouse .frames::before { - position: relative; - top: 0px; - left: 0px; -} -.mouse .frames::after { - position: absolute; - top: 100%; - left: 0px; + margin: auto; + width: fit-content; + overflow: hidden; + + .frames { + position: relative; + animation: mouse_move infinite 2s normal steps(4); + + &::before { + position: relative; + top: 0px; + left: 0px; + } + + &::after { + position: absolute; + top: 100%; + left: 0px; + } + } } /* @@ -30,7 +28,342 @@ * */ @keyframes mouse_move { - 0% {transform: translateY(0%);} - 100% {transform: translateY(-400%);} + 0% { + transform: translateY(0%); + } + 100% { + transform: translateY(-400%); + } } +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * * + * * + * * + * * + * * + * MOUSE 1 * + * * + * * + * * + * * + * * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +.mouse_1::before { + content: "\ +  \a +    \a +       \a +        \a +           \a +        \a +      \a +     \a +     \a +     \a +        \a +        \a +     \a +      \a +    \a +    \a +"; +} +.mouse_1::after { + content: "\ +  \a +   \a +      \a +        \a +         \a +        \a +       \a +      \a +     \a +      \a +         \a +         \a +      \a +      \a +    \a +    \a +  \a +   \a +      \a +        \a +         \a +        \a +       \a +      \a +     \a +      \a +         \a +         \a +      \a +      \a +    \a +    \a +  \a +    \a +       \a +        \a +           \a +        \a +      \a +     \a +     \a +     \a +        \a +        \a +     \a +      \a +    \a +    \a +"; +} + +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * * + * * + * * + * * + * * + * MOUSE 2 * + * * + * * + * * + * * + * * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +.mouse_2::before { + content: "\ +  \a +   \a +    \a +   \a +  \a +   \a +   \a +   \a +   \a +     \a +     \a +   \a +      \a +     \a +  \a +  \a +"; +} +.mouse_2::after { + content: "\ +   \a +    \a +    \a +   \a +  \a +   \a +   \a +   \a +   \a +     \a +     \a +   \a +     \a +     \a +  \a +  \a +   \a +   \a +    \a +   \a +  \a +   \a +   \a +   \a +   \a +     \a +     \a +   \a +     \a +     \a +   \a +  \a +  \a +   \a +    \a +   \a +  \a +   \a +   \a +   \a +   \a +     \a +     \a +   \a +      \a +    \a +  \a +  \a +"; +} + +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * * + * * + * * + * * + * * + * MOUSE 3 * + * * + * * + * * + * * + * * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +.mouse_3::before { + content: "\ +  \a +  \a +   \a +    \a +  \a +    \a +    \a +     \a +     \a +    \a +    \a +     \a +    \a +   \a +"; +} +.mouse_3::after { + content: "\ +  \a +  \a +   \a +    \a +  \a +    \a +    \a +     \a +     \a +   \a +    \a +     \a +    \a +   \a +  \a +  \a +   \a +    \a +  \a +    \a +    \a +     \a +     \a +    \a +    \a +     \a +    \a +   \a + \a + \a +  \a +   \a +  \a +    \a +     \a +    \a +    \a +     \a +     \a +     \a +     \a +   \a +"; +} + +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * * + * * + * * + * * + * * + * MOUSE 4 * + * * + * * + * * + * * + * * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +.mouse_4::before { + content: "\ +  \a +  \a +   \a +   \a +     \a +       \a +      \a +    \a +     \a +    \a +     \a +   \a +   \a +  \a +"; +} +.mouse_4::after { + content: "\ +  \a +  \a +   \a +   \a +     \a +      \a +      \a +     \a +     \a +    \a +     \a +   \a +  \a +  \a +  \a +  \a +   \a +    \a +     \a +      \a +       \a +     \a +     \a +    \a +     \a +   \a +  \a +  \a +  \a +  \a +   \a +    \a +     \a +       \a +       \a +    \a +     \a +    \a +     \a +   \a +   \a +  \a +"; +} diff --git a/src/styles/mouses/mouse_1.css b/src/styles/mouses/mouse_1.css deleted file mode 100644 index bc1ce28..0000000 --- a/src/styles/mouses/mouse_1.css +++ /dev/null @@ -1,72 +0,0 @@ -.mouse_1::before { - content:'\ -  \a -    \a -       \a -        \a -           \a -        \a -      \a -     \a -     \a -     \a -        \a -        \a -     \a -      \a -    \a -    \a -'; -} -.mouse_1::after { - content:'\ -  \a -   \a -      \a -        \a -         \a -        \a -       \a -      \a -     \a -      \a -         \a -         \a -      \a -      \a -    \a -    \a -  \a -   \a -      \a -        \a -         \a -        \a -       \a -      \a -     \a -      \a -         \a -         \a -      \a -      \a -    \a -    \a -  \a -    \a -       \a -        \a -           \a -        \a -      \a -     \a -     \a -     \a -        \a -        \a -     \a -      \a -    \a -    \a -'; -} diff --git a/src/styles/mouses/mouse_2.css b/src/styles/mouses/mouse_2.css deleted file mode 100644 index c47c443..0000000 --- a/src/styles/mouses/mouse_2.css +++ /dev/null @@ -1,72 +0,0 @@ -.mouse_2::before { - content:'\ -  \a -   \a -    \a -   \a -  \a -   \a -   \a -   \a -   \a -     \a -     \a -   \a -      \a -     \a -  \a -  \a -'; -} -.mouse_2::after { - content:'\ -   \a -    \a -    \a -   \a -  \a -   \a -   \a -   \a -   \a -     \a -     \a -   \a -     \a -     \a -  \a -  \a -   \a -   \a -    \a -   \a -  \a -   \a -   \a -   \a -   \a -     \a -     \a -   \a -     \a -     \a -   \a -  \a -  \a -   \a -    \a -   \a -  \a -   \a -   \a -   \a -   \a -     \a -     \a -   \a -      \a -    \a -  \a -  \a -'; -} diff --git a/src/styles/mouses/mouse_3.css b/src/styles/mouses/mouse_3.css deleted file mode 100644 index db3b2ef..0000000 --- a/src/styles/mouses/mouse_3.css +++ /dev/null @@ -1,64 +0,0 @@ -.mouse_3::before { - content:'\ -  \a -  \a -   \a -    \a -  \a -    \a -    \a -     \a -     \a -    \a -    \a -     \a -    \a -   \a -'; -} -.mouse_3::after { - content:'\ -  \a -  \a -   \a -    \a -  \a -    \a -    \a -     \a -     \a -   \a -    \a -     \a -    \a -   \a -  \a -  \a -   \a -    \a -  \a -    \a -    \a -     \a -     \a -    \a -    \a -     \a -    \a -   \a - \a - \a -  \a -   \a -  \a -    \a -     \a -    \a -    \a -     \a -     \a -     \a -     \a -   \a -'; -} diff --git a/src/styles/mouses/mouse_4.css b/src/styles/mouses/mouse_4.css deleted file mode 100644 index cad479e..0000000 --- a/src/styles/mouses/mouse_4.css +++ /dev/null @@ -1,64 +0,0 @@ -.mouse_4::before { - content:'\ -  \a -  \a -   \a -   \a -     \a -       \a -      \a -    \a -     \a -    \a -     \a -   \a -   \a -  \a -'; -} -.mouse_4::after { - content:'\ -  \a -  \a -   \a -   \a -     \a -      \a -      \a -     \a -     \a -    \a -     \a -   \a -  \a -  \a -  \a -  \a -   \a -    \a -     \a -      \a -       \a -     \a -     \a -    \a -     \a -   \a -  \a -  \a -  \a -  \a -   \a -    \a -     \a -       \a -       \a -    \a -     \a -    \a -     \a -   \a -   \a -  \a -'; -} diff --git a/src/styles/reset.css b/src/styles/reset.css new file mode 100644 index 0000000..c344b3d --- /dev/null +++ b/src/styles/reset.css @@ -0,0 +1,47 @@ +body * { + margin: 0px; +} +input, +button, +textarea, +select { + /* Remove built-in form typography styles */ + font: inherit; +} +body { + -webkit-font-smoothing: antialiased; +} +img, +picture, +video, +canvas, +svg { + display: block; + max-width: 100%; +} +li, +p, +h1, +h2, +h3, +h4, +h5, +h6 { + /* Avoid text overflows + overflow-wrap: break-word; + */ + overflow-wrap: anywhere; +} + +/* style details elements */ +details summary { + cursor: pointer; +} +details summary > * { + /* allow to put h1 or anything inside the summary without breaking the line */ + display: inline; +} +script, +style { + display: none; +} diff --git a/src/styles/text.css b/src/styles/text.css new file mode 100644 index 0000000..5c3ee58 --- /dev/null +++ b/src/styles/text.css @@ -0,0 +1,76 @@ +@font-face { + font-family: "notomono"; + src: url("./fonts/notomono/NotoMono-Dot.woff") format("woff"); + font-weight: normal; + font-style: normal; +} +body, +pre { + font-family: "notomono", monospace; + font-size: 1.5rem; + font-weight: normal; + font-style: normal; +} +@media screen and (min-width: 500px) { + html { + font-size: calc(var(--base_font_size) * 1.2); + } +} +ul { + display: block; + list-style-type: "• "; + padding-left: 25px; + /* + list-style-position: inside; + */ + list-style-position: outside; +} +li { + display: list-item; +} +li::marker { + font-size: 1.8rem; +} + +a:empty::after { + content: attr(href); +} +h1 { + margin: 30px 0px; + font-size: 2.25rem; +} +h2 { + margin: 30px 0px; + font-size: 2rem; +} +h3 { + margin: 20px 0px; + font-size: 1.75rem; +} +h4 { + margin: 20px 0px; + font-size: 1.5rem; +} +h5 { + margin: 10px 0px; + font-size: 1.25rem; +} +h6 { + margin: 10px 0px; + font-size: 1rem; +} + +.pre, +pre { + display: flex; + white-space: pre; + line-height: 0.8; + font-size: min(2.1vw, 1rem); +} +.pre_small { + font-size: min(1.5vw, 0.7rem); +} + +a { + word-break: break-all; +}