From 4799cdf4043f866b19f17b7a4215c9fbb9320757 Mon Sep 17 00:00:00 2001 From: Dieter Blocher Date: Fri, 17 Jan 2025 12:26:04 +0000 Subject: [PATCH] get to a base level --- .gitignore | 1 - README.md | 15 +- doc/README.md | 4 + doc/assets/image.png | Bin 0 -> 23514 bytes nodemon.json | 5 + package-lock.json | 1425 ++++++++++++++++++++++++++++++++++++ package.json | 21 + src/public/alt.html | 14 + src/public/favicon.ico | Bin 0 -> 3782 bytes src/public/images/free.png | Bin 0 -> 36742 bytes src/public/index.html | 14 + src/server.js | 31 + src/views/index.ejs | 1 + 13 files changed, 1529 insertions(+), 2 deletions(-) create mode 100644 doc/README.md create mode 100644 doc/assets/image.png create mode 100644 nodemon.json create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 src/public/alt.html create mode 100644 src/public/favicon.ico create mode 100644 src/public/images/free.png create mode 100644 src/public/index.html create mode 100644 src/server.js create mode 100644 src/views/index.ejs diff --git a/.gitignore b/.gitignore index ceaea36..745264f 100644 --- a/.gitignore +++ b/.gitignore @@ -129,4 +129,3 @@ dist .yarn/build-state.yml .yarn/install-state.gz .pnp.* - diff --git a/README.md b/README.md index 97d889d..d4a8aae 100644 --- a/README.md +++ b/README.md @@ -3,5 +3,18 @@ From here: https://www.youtube.com/watch?v=SDa3v4Quj7Y +Auth: +https://www.youtube.com/watch?v=bgk1mI2pak4 + +Middelware: +https://www.youtube.com/watch?v=_I6gP_nIFIA + +Passport-js +https://www.youtube.com/watch?v=-RCnNyD0L-s + # Certificate -The Container need our certificate! \ No newline at end of file +The Container need our certificate! + +# Documentation + +[Documentation](./doc/README.md) \ No newline at end of file diff --git a/doc/README.md b/doc/README.md new file mode 100644 index 0000000..60a6f25 --- /dev/null +++ b/doc/README.md @@ -0,0 +1,4 @@ +# Start the Server: +'''npm run devStart''' + +![alt text](./assets/image.png) \ No newline at end of file diff --git a/doc/assets/image.png b/doc/assets/image.png new file mode 100644 index 0000000000000000000000000000000000000000..626e88a9c6b8e9e4189f21ac7df9a4afb88c35de GIT binary patch literal 23514 zcmeFXbyQrC%;5(or$55XD_?vTdagIgd3cMBdMK!OHn+!}4%-GkG(YeSI6CAh;h z@B6#=yR+8JtZ)9FIcxQzx~X$&@7i^CJe3H1{x_E5)u-IoUEie64G-J64Em& z)K`dK9#yrP5Py&@fJ#6lq{?XYyH76>-(Ne*>bf8yVRk-!o)G}#zab&%`^ZTGHNP4i zw8B&c6g^W zfFS+xd?gw1urhUG)PCNEcOO@yLr=@I-LMy8jV?dx{Jzn$-N??J*+A7BiVQE*fNWcc z-IBDPjtH%>KT>#Txa>-)UL+HI4bnPn2!lQX#gY=zT}Q9c6K-o?22RA+_ymDVD5z8y zAMdcNuQDI48|(YNuF_b;HC6=HoXtK-)Bua~UXvc~L3RjcC|Q;DV1b6Y&_HML_@LSz zMpEBuhK7gDZQ6J(d2A4PQxX}j;&*~~liGewMoLbeTWv8K)_%v=Zr?QNsvOCcIRIs8VAbX8 zd!0rRJENlq3$JUa_E`~*{So`)2lh-#^d-w@C+qEx3|wCc& zmC;Opagp{r`ik&Vyv>!%<*RlKk1*|{$;<00`#%?Cf}U`{AsBHhKW@kXtOdGuvvxe2 zeMr8hCav2>VwLz@C3Gy)bpI4OC0(TA;^@bXr18tDDGwx6VN z#C^cnEyfCW!v?5xa<9G`8b~#e6`Z%#r@ed zmT~SQu1opOO&@zVzyeV6eRlKyi=v|R=4`G%%?oahc14?P zJF^nj$-A#}ZL%IV++q_d>vD(ESFfnqvTu@q{W+Y!pB5n9q0AFvR!6e?8g6{?ZZtzb zl`6|j#EiSOh3OtXo3LeBBGVLip^Kb`>%Ml~Vd(DDy8Xp(n02zqy!*W=mWM^iz=VtW zr!Z+v@+gdvai;b*=g?PYT(2|+??{p_)eFpRd)1v(Bp~Pzi_fu}x;MMY{L6jEjAw

1>4U{Ny`F&NliRns}vG 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 literal 0 HcmV?d00001 diff --git a/nodemon.json b/nodemon.json new file mode 100644 index 0000000..de9a8b2 --- /dev/null +++ b/nodemon.json @@ -0,0 +1,5 @@ +{ + "watch": ["src", "src/public", "config"], + "ext": "js,json,html", + "exec": "node ./src/server.js" + } \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..0de2729 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,1425 @@ +{ + "name": "hacker_game", + "version": "1.0.1", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "hacker_game", + "version": "1.0.1", + "license": "ISC", + "dependencies": { + "dotenv": "^16.4.7", + "ejs": "^3.1.10", + "express": "^4.21.2" + }, + "devDependencies": { + "connect-livereload": "^0.6.1", + "livereload": "^0.9.3", + "nodemon": "^3.1.9" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "license": "MIT" + }, + "node_modules/async": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", + "license": "MIT" + }, + "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==", + "license": "MIT" + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/body-parser": { + "version": "1.20.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", + "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.13.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz", + "integrity": "sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.3.tgz", + "integrity": "sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "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==", + "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==", + "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==", + "license": "MIT" + }, + "node_modules/connect-livereload": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/connect-livereload/-/connect-livereload-0.6.1.tgz", + "integrity": "sha512-3R0kMOdL7CjJpU66fzAkCe6HNtd3AavCS4m+uW4KtJjrdGPT0SQEZieAYd+cm+lJoBznNQ4lqipYWkhBMgk00g==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "license": "MIT", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", + "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "license": "MIT" + }, + "node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "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==", + "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==", + "license": "MIT", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/dotenv": { + "version": "16.4.7", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz", + "integrity": "sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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==", + "license": "MIT" + }, + "node_modules/ejs": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", + "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", + "license": "Apache-2.0", + "dependencies": { + "jake": "^10.8.5" + }, + "bin": { + "ejs": "bin/cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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==", + "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==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express": { + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz", + "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==", + "license": "MIT", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.3", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.7.1", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.3.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.3", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.12", + "proxy-addr": "~2.0.7", + "qs": "6.13.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.19.0", + "serve-static": "1.16.2", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "license": "Apache-2.0", + "dependencies": { + "minimatch": "^5.0.1" + } + }, + "node_modules/filelist/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/filelist/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", + "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.7.tgz", + "integrity": "sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "function-bind": "^1.1.2", + "get-proto": "^1.0.0", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "license": "MIT", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ignore-by-default": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", + "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==", + "dev": true, + "license": "ISC" + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/jake": { + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.2.tgz", + "integrity": "sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==", + "license": "Apache-2.0", + "dependencies": { + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.4", + "minimatch": "^3.1.2" + }, + "bin": { + "jake": "bin/cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/livereload": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/livereload/-/livereload-0.9.3.tgz", + "integrity": "sha512-q7Z71n3i4X0R9xthAryBdNGVGAO2R5X+/xXpmKeuPMrteg+W2U8VusTKV3YiJbXZwKsOlFlHe+go6uSNjfxrZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "chokidar": "^3.5.0", + "livereload-js": "^3.3.1", + "opts": ">= 1.2.0", + "ws": "^7.4.3" + }, + "bin": { + "livereload": "bin/livereload.js" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/livereload-js": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-3.4.1.tgz", + "integrity": "sha512-5MP0uUeVCec89ZbNOT/i97Mc+q3SxXmiUGhRFOTmhrGPn//uWVQdCvcLJDy64MSBR5MidFdOR7B9viumoavy6g==", + "dev": true, + "license": "MIT" + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "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==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "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==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/nodemon": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.1.9.tgz", + "integrity": "sha512-hdr1oIb2p6ZSxu3PB2JWWYS7ZQ0qvaZsc3hK8DR8f02kRzc8rjYmxAIvdz+aYC+8F2IjNaB7HMcSDg8nQpJxyg==", + "dev": true, + "license": "MIT", + "dependencies": { + "chokidar": "^3.5.2", + "debug": "^4", + "ignore-by-default": "^1.0.1", + "minimatch": "^3.1.2", + "pstree.remy": "^1.1.8", + "semver": "^7.5.3", + "simple-update-notifier": "^2.0.0", + "supports-color": "^5.5.0", + "touch": "^3.1.0", + "undefsafe": "^2.0.5" + }, + "bin": { + "nodemon": "bin/nodemon.js" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nodemon" + } + }, + "node_modules/nodemon/node_modules/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/nodemon/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/nodemon/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/nodemon/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz", + "integrity": "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/opts": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/opts/-/opts-2.0.2.tgz", + "integrity": "sha512-k41FwbcLnlgnFh69f4qdUfvDQ+5vaSDnVPFI/y5XuhKRq97EnVVneO9F1ESVCdiVu4fCS2L8usX3mU331hB7pg==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-to-regexp": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", + "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", + "license": "MIT" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "license": "MIT", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/pstree.remy": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", + "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", + "dev": true, + "license": "MIT" + }, + "node_modules/qs": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, + "node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/send": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", + "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "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==", + "license": "MIT" + }, + "node_modules/serve-static": { + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", + "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", + "license": "MIT", + "dependencies": { + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.19.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "license": "ISC" + }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/simple-update-notifier": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz", + "integrity": "sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/touch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.1.tgz", + "integrity": "sha512-r0eojU4bI8MnHr8c5bNo7lJDdI2qXlWWJk6a9EAFG7vbhTjElYhBVS3/miuE0uOuoLdb8Mc/rVfsmm6eo5o9GA==", + "dev": true, + "license": "ISC", + "bin": { + "nodetouch": "bin/nodetouch.js" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "license": "MIT", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/undefsafe": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", + "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", + "dev": true, + "license": "MIT" + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "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==", + "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==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/ws": { + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..887bcb1 --- /dev/null +++ b/package.json @@ -0,0 +1,21 @@ +{ + "name": "hacker_game", + "version": "1.0.1", + "description": "Just a hacker game for fairs", + "main": "index.js", + "scripts": { + "devStart": "nodemon ./src/server.js" + }, + "author": "", + "license": "ISC", + "dependencies": { + "dotenv": "^16.4.7", + "ejs": "^3.1.10", + "express": "^4.21.2" + }, + "devDependencies": { + "connect-livereload": "^0.6.1", + "livereload": "^0.9.3", + "nodemon": "^3.1.9" + } +} diff --git a/src/public/alt.html b/src/public/alt.html new file mode 100644 index 0000000..2a52721 --- /dev/null +++ b/src/public/alt.html @@ -0,0 +1,14 @@ + + + + + + + HTML 5 Boilerplate + + + +

Hiidfdcvdfsdgft

+ + + \ No newline at end of file diff --git a/src/public/favicon.ico b/src/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..ee86f4bdd7ee33bc2c16561ee5c4629a42384867 GIT binary patch literal 3782 zcmcJSv2GJV5QaArB?4DeD5B&EsA%8;$n`XI@BkDPNVyUU6t|?oG!#?_N{XCB8!0Jh zQXsi89mGOONWf(IzjMZ#Tiu<{Nj%Yb_I76e|7Ld9Rzg_O-|A}6=dJMJS_n5n2)Cu$ z3U{UKBR%=fD>24Q+Lsp6U8xCc_V8ur#rJu_=}B|xSlU&HC8y`Hx~`R%Nf+T$ctyxv zsD8!wD+m{R$h*`kiowNbYO@Dz+{(DjI@1@Zty@7^8n}e#%6SXFCmnm9JI@ZH>EqW& z-WBur$8r1HBtGmP#m&zr6(6ydhfM^I*_><5+*icsdfw5`(-If%PuqXvz4a>g99}qP z{noltE6yff>N6kj05AL|9eBsgnBp_b@z$`hzTO8f4rjctKAx0)rr#zVcnO8GZ#mx9 z@lu!Hr`Emi)4p@wNJm~ci!vek@c34*$6R}P7*XDZvwr&acZuL*z-SOShjqS`cW?Bs zQtP`ff65-yck^-H9eH=_IN3{ismb>4=LhkZjud5&9>d3ZcjRrNopFH6+;Eo0%R87@ zkL^woYjM~XncHWN!#5 zf%V@JhGRV*{ix0b@eKlJR_F6vw&vb62|Z@U{rt7?mcI|e8mD;1Y^7iE4_c6>0Gi2IUtK|`ca-S{F zd}kJp+3z6ydVZ9|EaR~}SF6{oh?uiwN#A(ttVjn-AbwNFmF|i6GV9(*@!Ouo&3RX5 zZNWZ}TYH{uy!e#IoUcn4;U|`y%G}Q5YVr#wlWs`2q&rd*)>~41Yfbs-ek`s}PQ%J% o62jy-gy&=Z3potoW)Z^GJcKKzp`%zlwh+cpSYUz;2V8Le2L&X6V*mgE literal 0 HcmV?d00001 diff --git a/src/public/images/free.png b/src/public/images/free.png new file mode 100644 index 0000000000000000000000000000000000000000..aea16f6b8bc7900ea966489509989f2c407fd7d7 GIT binary patch literal 36742 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

gw2`J6@bw!B0 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 P2Lqp{o40E@g?8!x$6gle literal 0 HcmV?d00001 diff --git a/src/public/index.html b/src/public/index.html new file mode 100644 index 0000000..25acfce --- /dev/null +++ b/src/public/index.html @@ -0,0 +1,14 @@ + + + + + + + Index.html + + + +

Hiidfdcvdfsdgft

+ + + \ No newline at end of file diff --git a/src/server.js b/src/server.js new file mode 100644 index 0000000..b9d5a72 --- /dev/null +++ b/src/server.js @@ -0,0 +1,31 @@ +const express = require('express') +require('dotenv').config(); +const path = require('path'); +const livereload = require('livereload'); +const connectLivereload = require('connect-livereload'); + + +// Setup livereload +const liveReloadServer = livereload.createServer(); +liveReloadServer.watch(__dirname + "public"); // Watch public directory + +const app = express() + +// Middleware to inject livereload script +app.use(connectLivereload()); + +// Serve static files +app.use(express.static('public')); + +// Set the views directory to "src/views" +app.set('views', path.join(__dirname, 'views')); +// Set the view engine (e.g., EJS) +app.set('view engine', 'ejs'); +app.use(express.static(path.join(__dirname, 'public'))); + +app.get('/', (req, res) => { + res.render('index.ejs') +}) + +const port = process.env.PORT; +app.listen(port, () => console.log("Server is running on http://localhost:%i", port)); \ No newline at end of file diff --git a/src/views/index.ejs b/src/views/index.ejs new file mode 100644 index 0000000..0cdea7c --- /dev/null +++ b/src/views/index.ejs @@ -0,0 +1 @@ +

Hi...

\ No newline at end of file