From fcadcd088748ac8603e45771e15bd43d76fe8a38 Mon Sep 17 00:00:00 2001 From: Soumya Ranjan Das Date: Sun, 1 Oct 2023 23:34:16 +0530 Subject: [PATCH] added Chat-app --- .DS_Store | Bin 0 -> 18436 bytes Chat-App/.DS_Store | Bin 0 -> 6148 bytes Chat-App/app.js | 37 + Chat-App/iphone_text_message.mp3 | Bin 0 -> 11753 bytes Chat-App/package-lock.json | 1195 +++++++++++++++++++++++ Chat-App/package.json | 20 + Chat-App/public/index.html | 58 ++ Chat-App/public/iphone_send_sms.mp3 | Bin 0 -> 8776 bytes Chat-App/public/iphone_text_message.mp3 | Bin 0 -> 11753 bytes Chat-App/public/main.js | 89 ++ Chat-App/public/style.css | 153 +++ 11 files changed, 1552 insertions(+) create mode 100644 .DS_Store create mode 100644 Chat-App/.DS_Store create mode 100644 Chat-App/app.js create mode 100644 Chat-App/iphone_text_message.mp3 create mode 100644 Chat-App/package-lock.json create mode 100644 Chat-App/package.json create mode 100644 Chat-App/public/index.html create mode 100644 Chat-App/public/iphone_send_sms.mp3 create mode 100644 Chat-App/public/iphone_text_message.mp3 create mode 100644 Chat-App/public/main.js create mode 100644 Chat-App/public/style.css diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..da6939134b114116ddbcca1b94309ab2b49e6b57 GIT binary patch literal 18436 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 QwKpA-&x0!Pdr<%X7y47dV*mgE literal 0 HcmV?d00001 diff --git a/Chat-App/.DS_Store b/Chat-App/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..49431b20ea8baa1f108e643b25c643a7c9324552 GIT binary patch literal 6148 zcmeHKL2uJA6n@@Hm$D%h2{bN9k+_!9s!|2wl9h4bN)Q|Xg`};vur#ikgifj|y?kvpU@otfDl zf+ba3t%2XJmf>qH!$B>>WxQWCUK6~6BFq=lxH^Z@>e~gaDzVWro11;{M>J33EbsMx zik;oYjpm-S=j=Q0{ZqO0^Dr;6QMh=^tyfYe(Z&y>*YR{2wC_BVX&%PubfF0GWQve? zZ{layQR?t3Ntp@#G$9+6lcih#JVZY-JhrRW><=lPn=;_PgESaV9 zGnNVy*vggNGPr>+a4Jjskw=(#A&@;z1=ou_EVgx2M6{xAgTrq^Equ(`gp21S1rjsz24`F5& z=7u8F?8xt`a1x$ITU!OJ0#yZeb+gUq|MSc5|5cK0Sp}>D|CIuwaqJ(Duq1P~ZY_?_ uS{LO53LD3j8WjbVIgXXXNAW!rWf*hW0eS{Yjp%{dKLSbyTUiCJRDnM#M5Vs~ literal 0 HcmV?d00001 diff --git a/Chat-App/app.js b/Chat-App/app.js new file mode 100644 index 000000000..89af2d331 --- /dev/null +++ b/Chat-App/app.js @@ -0,0 +1,37 @@ +const { log } = require('console'); +const express = require('express'); +const path=require('path'); +const app = express(); +const PORT = process.env.port || 3000; +const server=app.listen(PORT, () => { + console.log(`Server is running on port ${PORT}.`); +} +) +const io=require('socket.io')(server); + +app.use(express.static(path.join(__dirname, 'public'))); + +let socketsConnected=new Set(); + +io.on('connection', onConnected); + + +function onConnected(socket){ + socketsConnected.add(socket.id); + io.emit("clients-total", socketsConnected.size); + socket.on('disconnect', () => { + console.log("Socket disconnected: " + socket.id); + socketsConnected.delete(socket.id); + io.emit("clients-total", socketsConnected.size); + }) + + socket.on('message', (data) => { + // console.log(data); + socket.broadcast.emit('chat-message', data); + }) + + socket.on('feedback', (data) => { + socket.broadcast.emit('feedback', data); + }) +} + diff --git a/Chat-App/iphone_text_message.mp3 b/Chat-App/iphone_text_message.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..b0d07bfe055d1177d96f703244d336a7f595b0ab GIT binary patch literal 11753 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 literal 0 HcmV?d00001 diff --git a/Chat-App/package-lock.json b/Chat-App/package-lock.json new file mode 100644 index 000000000..b2c7eb66f --- /dev/null +++ b/Chat-App/package-lock.json @@ -0,0 +1,1195 @@ +{ + "name": "chatapp", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "chatapp", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "express": "^4.18.2", + "socket.io": "^4.7.1" + }, + "devDependencies": { + "nodemon": "^3.0.1" + } + }, + "node_modules/@socket.io/component-emitter": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", + "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==" + }, + "node_modules/@types/cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==" + }, + "node_modules/@types/cors": { + "version": "2.8.13", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.13.tgz", + "integrity": "sha512-RG8AStHlUiV5ysZQKq97copd2UmVYw3/pRMLefISZ3S1hK104Cwm7iLQ3fTKx+lsUH2CE8FlLaYeEA2LSeqYUA==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/node": { + "version": "20.4.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.4.2.tgz", + "integrity": "sha512-Dd0BYtWgnWJKwO1jkmTrzofjK2QXXcai0dmtzvIBhcA+RsG5h8R3xlyta0kGOZRNfL9GuRtb1knmPEhQrePCEw==" + }, + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/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, + "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==" + }, + "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 + }, + "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==", + "engines": { + "node": "^4.5.0 || >= 5.9" + } + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/body-parser": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.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==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "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" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "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 + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" + }, + "node_modules/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/engine.io": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.5.1.tgz", + "integrity": "sha512-mGqhI+D7YxS9KJMppR6Iuo37Ed3abhU8NdfgSvJSDUafQutrN+sPTncJYTyM9+tkhSmWodKtVYGPPHyXJEwEQA==", + "dependencies": { + "@types/cookie": "^0.4.1", + "@types/cors": "^2.8.12", + "@types/node": ">=10.0.0", + "accepts": "~1.3.4", + "base64id": "2.0.0", + "cookie": "~0.4.1", + "cors": "~2.8.5", + "debug": "~4.3.1", + "engine.io-parser": "~5.1.0", + "ws": "~8.11.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/engine.io-parser": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.1.0.tgz", + "integrity": "sha512-enySgNiK5tyZFynt3z7iqBR+Bto9EVVVvDFuTT0ioHCGbzirZVGDGiQjZzEp8hWl6hd5FSVytJGuScX1C1C35w==", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/engine.io/node_modules/cookie": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/engine.io/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/engine.io/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express": { + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "node_modules/get-intrinsic": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", + "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "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, + "engines": { + "node": ">=4" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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 + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/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, + "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, + "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, + "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, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "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==" + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/nodemon": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.0.1.tgz", + "integrity": "sha512-g9AZ7HmkhQkqXkRc20w+ZfQ73cHLbE8hnPbtaFbFtCumZsjyMhKk9LajQ07U5Ux28lvFjZ5X7HvWR1xzU8jHVw==", + "dev": true, + "dependencies": { + "chokidar": "^3.5.2", + "debug": "^3.2.7", + "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": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "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 + }, + "node_modules/nopt": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", + "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==", + "dev": true, + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "*" + } + }, + "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, + "engines": { + "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==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "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==", + "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 + }, + "node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "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" + } + ] + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/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, + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/socket.io": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.7.1.tgz", + "integrity": "sha512-W+utHys2w//dhFjy7iQQu9sGd3eokCjGbl2r59tyLqNiJJBdIebn3GAKEXBr3osqHTObJi2die/25bCx2zsaaw==", + "dependencies": { + "accepts": "~1.3.4", + "base64id": "~2.0.0", + "cors": "~2.8.5", + "debug": "~4.3.2", + "engine.io": "~6.5.0", + "socket.io-adapter": "~2.5.2", + "socket.io-parser": "~4.2.4" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/socket.io-adapter": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.2.tgz", + "integrity": "sha512-87C3LO/NOMc+eMcpcxUBebGjkpMDkNBS9tf7KJqcDsmL936EChtVva71Dw2q4tQcuVC+hAUy4an2NO/sYXmwRA==", + "dependencies": { + "ws": "~8.11.0" + } + }, + "node_modules/socket.io-parser": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", + "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==", + "dependencies": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/socket.io-parser/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/socket.io-parser/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/socket.io/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/socket.io/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/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, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "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, + "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==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/touch": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", + "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", + "dev": true, + "dependencies": { + "nopt": "~1.0.10" + }, + "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==", + "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 + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/ws": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", + "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", + "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/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } +} diff --git a/Chat-App/package.json b/Chat-App/package.json new file mode 100644 index 000000000..335118ef9 --- /dev/null +++ b/Chat-App/package.json @@ -0,0 +1,20 @@ +{ + "name": "chatapp", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "start":"node app.js", + "dev":"nodemon app.js" + }, + "keywords": [], + "author": "Soumya Ranjan Das", + "license": "ISC", + "dependencies": { + "express": "^4.18.2", + "socket.io": "^4.7.1" + }, + "devDependencies": { + "nodemon": "^3.0.1" + } +} diff --git a/Chat-App/public/index.html b/Chat-App/public/index.html new file mode 100644 index 000000000..022f6326a --- /dev/null +++ b/Chat-App/public/index.html @@ -0,0 +1,58 @@ + + + + + + + Chat App + + + +

Chit Chat🚀

+
+
+ + + +
+
    +
  • +

    Hello + 10:10 AM ⚫️ Today + +

    +
  • +
  • +

    Hello + 10:10 AM, ⚫️ Today + +

    +
  • + +
  • + +
  • +
+
+ +
+ +
+ +
+
+

Total clients: 2

+ + + + + + + + \ No newline at end of file diff --git a/Chat-App/public/iphone_send_sms.mp3 b/Chat-App/public/iphone_send_sms.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..6f89a7cf27b33e30b721b2e56218809ed5b54294 GIT binary patch literal 8776 zcmeI1RaDeb*srI6p}TA7ZjeTX1_z|2n~|YQ!9a%Y&Y`=dTTxnCT9M8X2^CO86ppjb zIXCC(TkAXPyZFv|*4j7!z5nli*Y8>T>b<>A9R~cL=z1f4{(U3=w`c$WP8|RV4n`cj zIHYi>;y~cA#DT;SfCG&q5eEiG6^=F>{Wzv@tl&7nagO8mAOG%>N5J(pr9|arVZdoz zOTzg7?niS&C)EG|G_DW-D$Fi!N7l%@2&#(1 zphWm!AOQBSTkxuz4B!WK=M?MS4+IB;D1ymwC>$7$CgCp^w`p~cw~_=tY6qQ)0|9VA zv~W*&j6&)vSPlP6-!PD2qLqt|zAyOo2`{t#v_vIGsY_Kj-h&b7dkH9(>%{3b&v}K` zl|az?#|u(s18g{6n=S!IL8p*5Rn-$@MN4j`)3lBaGu}o_OZX1ehc7>_Fspen&zLe6 z&IOdzEq>zpHRx=9_P1xK3f_K$6}UQ_d3-@=_ovlTBt@Pw_tDq<#}#K#x(2;Jt$WE& zE%mP8m*u8O{uH;@>BBw%el;P=o(44Nb6a^rYd`R8#v%lTs#MI;vhEU5oyVM5J>OKE z$E?0*l~#U?L`vM}NH-avu<=j#UaEOvf9c}W-V6Mn;oZg>o5vhD&&lTrC@Z-;2{}Cw z$q2=54LnU7l5Uyo^2<_sEO{(NT@H9!<|^(V7tfu@F$Coca~5{fAf~N$^Gx5ZkS`#I z6C$*fygWSCMVq2Jt?ty;<*qn1#OlKN>s^=WWKuOBa8?8aLkSaHn`Eyxs;4)yIvvY$ z=(kWGs9WCa^C$JTjjj0UlKhB>&rVb zEU9YnV$)`-eW{xAAjOixvodL)sdi5bzgj`rWpOc%N`Ym=zBGFfS{i{Z4yE4+z>4)w z^Un^GTTwUS49S8q`qwP_ujdj-WSvL4^86y9vEKg2Z7c9MGx>FKEftGZk2pH&;%Fc8 zF3rN!QKFbBN26wU1cqdPyQC#nBUg7kr|L40VkCcxi=eD5YlOF(GsG*D)F+*D+dmB-&?r~n+ZIhC>5 zA(vSe3hyuEm73I6W?Db*$?h{mbu17rK4MTac%vE(azq^D)=LeA)kayXJWT9$LlmI~ zFPOy4%LUhmlemfIt%q*te3Cq5KCLoOY|u8hp}44h9)GicAMh4Iw{tqlmC9UF#Q)CTMK`VC&@c~h2chwrugWARcy1ecvF`7HehZ4I+~|m!U@fz5 z#SXp@6+fo8I74?LFoeZ01Eq!d3u%|>t}1c)bRF6x!ljKW{79G`_Mun8@gZW+;7LG* zTW3C*1c-XO^n1W!kAxHzms81HI$R(;1A}#XfK@X0YW&+d;5&1AHacUzbM|rWGiC6z z?xpjN!pW*jBW>IF@Ts|^pE6*42ZIstMJ*(RvO+p85pD;Se!-G z6_j>YGaOgju-D3P%+wij2*2A_nnT|msWlF*t;i=UlI{%!Tju-bTg>UrDUpp(M?AW; zr;01rn&Qqxb$^LG=j4Py8Dz1iU&;lqx&pAYcAs)v*Y?RHDZ^bf0+#7~+v82PrVS?a zwPgYmlq7STdYX!6z7(k&z1{hC1N=% zT3Ci7?NfBcUr6?k5_7t7Ie?=GC3*O1q<^8kYnQI|SXw&sk~e9m)XBG1v=a9wD7qfY z9B$Z#yJK;N6u|kK32dT{`}rk(F2E^~U*bY{b7kF(hlt->?CMD?ZYOXPeG}NvRMB%-W;WGJSFN;18UjMH9cKCYuA|}s=Zsrfl z#eu2R^#lP3G??^EIk=h;-8pCV@-3cXmvP>j?o=t$qSzfb} zSz(Qezm)T<7zpJUQH&q0#ePv}=8+obih{pX0o&BEv>W|=ftP6bkTxjBNcnS~+(_J< zJE^pRw&4>-jQrPt9F*n0wcj9#F7;Q{b^Ny-3(}@VDr^y#!z=J#E@kx(4DGhRC&!x! zqZG!RV69v5o=}TGj4o(p|%RgL;p!l zr{+3HYGJz)%6WBVO<(Ea!CThiLYG5RSiNR(>tCrhzii&T6`>58%&k9_$a)M^ZUXC# zEVfpT{$u(@-7QK)Ur~R9B7F1K|M!QZdPctYX(jj8FFUj9mV<}Z^P2M_TBcsDHi746 z_Z6cdv1lriDHfKY)YtuKku2mQT;M@pL$+-?&t9M*DT013yq_pJg~79bKcYY`QZOcO z%}VL`%{S}lH&*v9a#DBG$H!7jzI9}f@fbHVj+XciW!~tPdCotXu}KzlcnI{5cc zqbu=<2wWoj(C%g^4V!dPj6$y%_@4ds$M2L3Orbl(AD)nW-7;07Q)M@yupshCa=+X7 zVgygdf* zZj52bX<9-sPsj?3^b!DI==Z|{S-?Q@!V*6l>JYZep#_sB0pJmFkMS4ga}6Q1`L>0a zRbiC;rKAivL-gS6r36v0KFSDBnTn_nO_pUBIR()%*6O<_fqS8>2Ek@+0tg5Q!!J!Z z7RF~<7me(q|C%Gn`$u9K#Sl{VYx9=+m3V1EMh|@c)>&dPFK`6sY%6 zywd7HHTgo;MEFkOM{);(L87ME&>CuktX3f>iB=WszK(qT>fa+-`_I7j${*J5`GlVK zEPpP}d?}N3d`M!?O(|eeBvd8!bovSRZ@*z?#TamChDX&j#KBGdw($k2Is;A^i#UnEpM~F4=o@ zu`=Q3FIMtgbB2OVTZpQ03=qv z0DcEU$hTO4Dq7KXKT@FELPu`a2EUDb!c#;=t2ipggZxOz_}4v9wtA{KwhB&Kj5tv{GI0ZlhW!rAY3O+g&zHQ!EF`NpZKdLo!ztXD z^Mw(SI74*c%;}6f-YsI2Oj54X#}dJB!10PA%9^!h-=_raCNz^tw5{JUt$doyfA+^( z#5l*No{2IT2!A!-0t$Fqllde^SFu3h9#g}LFjUfM>y zBu=C!gGNi?0a9U-4#8vtnDfWt05A}&OJQYvQ?>Z~eqswg6{oZ;S5BtopO?OIz)8ck zrL<2;Zp1i4ykLw7M%25{Z*ZioG7g(9cb`UgkH|EbPEt?hfnyk>wyPp__6HiD_-n;; zC#huEQ0tlIq1WBffkb76a9EvXb8Cw!N?e@-&vjuH>UVI)ID>vahV`+2J3)S=luiI@WUdMeuJW z3u7*q#P&~O<|PWHKT3?+HCDSfjB~9HJ!`q*sDw0f1<5s?kc?a-MxR2hk`99JkN!PQ zLq1s4tB-7`_%!ctG;wnjnsakIb#v=I?u$0)eNE;Sn~0{^A`A-y^cyN8(wO(AD@=wR z3LMDr4!;%iWQdais$F7%5oik%fQBmXT5Aiv%1tpGJxvGVigWX>??ulnMz z5y6o{V!G||tB>yN#?@4m?15Nb0U^B##38&`>o)|`-!Par`H;R*dX-(;yJ+E=8wYRE8V!6QxnpCJAjosZqV>lFhPx!wnOfs;|0=oQ^G0fC#RNhc7B5@9&n>i&aym z?=s;GNr0CJgka<-Yyz!pc^Edi`F#*;c94Sk9k1Hb9w*QFuSZOeuN8v1oeX+RhC`&1 zw^SAd+Mb6#!#>?iN&Mvb_o2DXfsK#pRiCm_y!*4a$zyRHU!#4|=s&dJGrPtffcBsF z-&w4t_GuHrXqo|GhD1H^?Dho#f_+ z&fiFrPC^OiIjeR(Y)5w-qO#J5g5l8gO!}sM5YyHlyIWn-pB(|4lkhA6d(3Y}17|QG z1FT+7E)4#q$pt}Q7>Q-vD6ph~+C^j>in1LgRNlJTuQuy*{meF?5-=&kurRXUHOpx# z&s}0E<#)9bqC%Rz6C-&2G2FfW5v$Xgpu6ozqOp6~krzgbK&_o647R6pfzcAiJQkk! z8p9cqkH{E#z-`b%Gl=G|AUxo7L=S1zG)R$mhdG69jC}SG6d68UC-abrudLtx)p+l9 zUactBiplZ2qPsq=MpoYE8W6OfrXNCpZ)`CY$w#3CgBatlpnX{)0gTU?uHO_0vjGFC z8LOqVt7!G^#;R^`&rn${iE@QK)5+0ib{ORrS3G8|Imn>jr0aO+^!TGg1oBP2@#OY5 z{}w)-iiKJTQ6BNYy@>_=lM~^h%i8X1HbjfFC?g1N1WmB2ej&KLP?e|F%{#}-L;H)E za-9!-pyPSV+HRuYBdbdwNGQO-^qBs2KLc4J`4ay~CVL{N|G6-53T{shC`knils%Zt zrfis+k`pC{SrNT)Y^c*I2l&qck<|2XCYix6u*g*H8aA6`ms+T~zIG-sdc;%oL!o@E zwdLLrqkq);xc=deTG^A_a|vvIdZf^r(!MCO?{UP|$ZdX1urCw6jqcH3|C#+Sw%+d` zzhk}*MYxqe_6F{;Caez-pN5fJt6Ljv7TzTQ4bE;^N`U}u5d4){tWE{GiUL!FZ`I$vgmcV96?Y7__I3!*++_rE(0IpOUPWGCr+^v%`Qf-o}i&bn!tsV=nP!fea3#7y8F9?#A_ zxALk^&}8c(9w@79YKg9!NN;Ox&bTEdSLNNJx}U( zcmxXtnFB}H!yZWhiS|7)dXii34!n2bKk@p^6%MtQJs+;}O(eE)P6{e%tXNks@M?Qq z;tWNADKTkm1`Gics`Xsc!x%pzmGtN2#35VmcTkCtOy%Nq*WL1b-#bsZQlB#74e*jo z6f%Gue0`??cRoCZzsa^rR|J{$@K-HOQ}5FP_RIqrATKP*rmTP_U}33k z5ZmKI$taMTzg)mHJq$H=!edBkY&EFU_lhV$pzsySrqYj%66{{ysa?S zGxQ2XOF2YCrpyPD5Uk*7$H?ntAznS=7TvXOMBM9N|w@wkBUoyMVHrA`EN7d zN&Xsc;V2l7-dc`?#fa{K@E!^{QfbgrjHzP`c7jzVN{440)-}7R0M`G84G_cb2$Hvj zQPW!9<kMMmNA#s_eV$n>{Kfq z9lRlXd7kw)R>bT1T)taBulG-dsS3qZ1VudGr*ay;fE40v@%D_yB90I9nR-P ze&=POV{H_?(<3l#N-gx$F3zLK*|nKod%oud%>mO{?}~}s3Bwr2(x?Cvl53*(#X+q| z-OV-2o5y8MR;(IxU1DKvInLIVpMW5A3rCYs{1kh7>xZ!8=1JzOD^IW0>`z%XN5gp* z$|lvnSJMj~v8s(d;YrMf94%cgjFW!3=GF?LTdp5PR%Hn;sb_w{ESKyrAwy}elWh2K zhOi)N#|Iq374Ij*<#zD8T7sh#$B2*ww8?+19;bVqoXlLt>kJMC$MUf)?JQW#ytU3p z!lxS%*E|<#D$}v|e3}M>+KXA^66I;M6IfLQm^Gp--p@V#sfYAtVz;aR!S+a|w{@ic zd2}Z7N`V#jK6}aZPY&?~Pp2UP1vGnqWE;64x&MZq;hO${tL(Sq)ZJ)R? z9mSiuH77wxF&5mTCQWj83gi@MCPp(E6%cXZ-9AOpLgZYY-V#`0FDGUA)WzRUpu)hn zkW|ui48?4bSfI-mlO`8!%9AS`Dl6OYlsj2H_JS{!pcSqR`QdNMEgg%BA2IqI&POp3 z?HWFosf#P@Uusi@5p>Gynkk5B~fAkNsC9@IL?qIzYkz literal 0 HcmV?d00001 diff --git a/Chat-App/public/iphone_text_message.mp3 b/Chat-App/public/iphone_text_message.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..b0d07bfe055d1177d96f703244d336a7f595b0ab GIT binary patch literal 11753 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 literal 0 HcmV?d00001 diff --git a/Chat-App/public/main.js b/Chat-App/public/main.js new file mode 100644 index 000000000..a6555f280 --- /dev/null +++ b/Chat-App/public/main.js @@ -0,0 +1,89 @@ +const socket=io(); + +const ClientsTotal=document.getElementById('client-total'); + +const messageContainer=document.getElementById('message-container'); +const nameInput=document.getElementById('name-input'); +const messageForm=document.getElementById('message-form'); +const messageInput=document.getElementById('message-input'); +const messageTone=new Audio('iphone_text_message.mp3'); +// const messageSendTone=new Audio('iphone_send_sms.mp3'); +messageForm.addEventListener('submit', (e) => { + e.preventDefault(); + sendMessage() +}) +socket.on('clients-total', (data) => { + ClientsTotal.innerText=`Total clients ${data}`; +}) + +function sendMessage(){ + if(messageInput.value==='')return + // console.log(messageInput.value); + console.log("send message playing...."); + // messageSendTone.play(); + const data={ + name:nameInput.value, + message:messageInput.value, + dateTime:new Date() + } + socket.emit('message', data); + addMessage(true,data); + messageInput.value=""; +} + + +socket.on('chat-message', (data) => { + messageTone.play(); + // console.log(data); + addMessage(false,data); + // appendMessage(`${data.name}: ${data.message}`); +}) + +function addMessage(isOwnmsg,data){ + clearFeedbackmsg(); + const element=`
  • +

    ${data.message} + ${data.name}⚫️ ${moment(data.dateTime).fromNow()} + +

    +
  • ` + messageContainer.innerHTML+=element; + scrolltoBottom(); +} + + +function scrolltoBottom(){ + messageContainer.scrollTo(0, messageContainer.scrollHeight); +} + +messageInput.addEventListener('focus', (e) => { + socket.emit('feedback', { + feedback: `✍🏻${nameInput.value} is typing a message` + }) +}) +messageInput.addEventListener('keypress', (e) => { + socket.emit('feedback', { + feedback: `✍🏻${nameInput.value} is typing a message` + }) +}) +messageInput.addEventListener('blur', (e) => { + socket.emit('feedback', { + feedback: '' + }) +}) + +socket.on('feedback', (data) => { + clearFeedbackmsg(); + const element=`
  • + +
  • ` +messageContainer.innerHTML+=element; + +}) + +function clearFeedbackmsg(){ + document.querySelectorAll('li.message-feedback').forEach(element => { + element.parentNode.removeChild(element); + }); +} \ No newline at end of file diff --git a/Chat-App/public/style.css b/Chat-App/public/style.css new file mode 100644 index 000000000..8994e487d --- /dev/null +++ b/Chat-App/public/style.css @@ -0,0 +1,153 @@ +@import url('https://fonts.googleapis.com/css2?family=Nunito+Sans:ital,wght@0,300;0,400;1,1000&display=swap'); + +*{ + margin: 0; + scroll-behavior: smooth; + padding: 0; + box-sizing: border-box; +} + +body{ + + font-family: 'Nunito Sans', sans-serif; + + /* display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + background-color: #ebebee; */ +background-image:url(https://coolbackgrounds.io/images/backgrounds/index/compute-ea4c57a4.png); + display: grid; + place-items: center; + background-color: #ebebee; + +} + +.title{ + margin: 20px 0; +} + +.main{ + border:8px solid #dddd; + border-radius: 24px; + overflow: hidden; + box-shadow: 10px 5px 8px #575757; +} +.name{ + display: flex; + font-size: 32px; + font-weight: 700; + padding: 8px 16px; + color: #7e7e7e; + background-color: #ebebeb; +} +.name > span{ + + color: #bbbb; +} + +.name-input{ + font-size: 24px; + font-weight: 700; + color: #7e7e7e; + flex-grow: 1; + border:none; + margin: 0px 12px; + outline: none; + background-color: #ebebeb; +} + +.message-container{ + /* margin: auto; */ + display: flex; + /* border-radius: 24px 24px 24px 24px; */ + flex-direction: column; + background-color: #ffffff; + width: 400px; + height: 600px; + overflow-y: scroll; + overflow-x: hidden; +} + +.message-left, .message-right{ + list-style: none; + padding:8px 12px; + max-width: 250px; + margin: 12px; + font-size: 18px; + word-wrap: break-word; + +} + +.message-left{ + border-radius: 20px 20px 20px 0px; + align-self: flex-start; + background-color: #ebebeb; + box-shadow: -2px 2px 4px #dcdcdc; +} + + +.message-right{ + border-radius: 20px 20px 20px 0px; + align-self: flex-end; + background-color: #2d2d2d; + box-shadow: 2px 2px 4px #dcdcdc; + color: #ffffff; + +} + +.message-right > p > span,.message-left > p > span{ + display: block; + font-style: italic; + font-size: italic; + font-size: 12px; + margin-top: 4px; +} + +.feedback{ + font-size: italic; + font-size: 14px; + padding:0px 16px 16px 16px; + color:#2d2d2d; + text-align: center; +} + +.message-form{ + display: flex; + align-items: center; + justify-content: space-between; + width: 400px; +} + +.message-input{ + flex-grow: 1; + height: 48px; + font-size: 16px; + border:none; + outline: none; + padding: 0px 12px; + margin-top: 0.4px; + background-color: #ffff; +} + +.send-button{ + height: 48px; + font-size: 16px; + border: none; + outline: none; + background-color: #ffff; + padding: 0px 20px; + cursor: pointer; + +} +.v-divider{ + height: 48px; + width: 2px; + background-color: #f6f6f6; +} + +.clients-total{ + margin: 20px 0; + color: #7e7e7e; + +} \ No newline at end of file