From 5180fc3cc1753ba25309dc2c0510a924ec6fc01f Mon Sep 17 00:00:00 2001 From: smt-codes Date: Fri, 16 Oct 2020 15:23:25 +0530 Subject: [PATCH] first commit --- .gitignore | 1 + README.md | 1 + index.js | 35 + package-lock.json | 1598 +++++++++++++++++++++++++++++++++++++++++++++ package.json | 16 + public/audio.mp3 | Bin 0 -> 21732 bytes public/index.html | 40 ++ public/script.js | 66 ++ public/send.png | Bin 0 -> 15074 bytes 9 files changed, 1757 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100644 index.js create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 public/audio.mp3 create mode 100644 public/index.html create mode 100644 public/script.js create mode 100644 public/send.png diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..30bc162 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/node_modules \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..f20f8c8 --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +"# smtchat" diff --git a/index.js b/index.js new file mode 100644 index 0000000..0ebee11 --- /dev/null +++ b/index.js @@ -0,0 +1,35 @@ +const path = require('path'); +const http = require('http'); +const express = require('express'); +const socketio = require('socket.io'); + + +const app = express(); +const server = http.createServer(app); +const io = socketio(server); + +app.use(express.static(path.join(__dirname, 'public'))); + + +const users = {}; + +io.on('connection', socket => { + socket.on('new-user-join', user => { + users[socket.id] = user; + socket.broadcast.emit('user-joined', user); + console.log('ne user ' + user); + }); + + socket.on('send', message => { + socket.broadcast.emit('receive', { message: message, user: users[socket.id] }); + }); + + socket.on('disconnect', message => { + socket.broadcast.emit('left', { message: message, user: users[socket.id] }); + delete users[socket.id]; + }) +}) + +const PORT = process.env.PORT || 3000; + +server.listen(PORT, () => console.log(`Server running on port ${PORT}`)); \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..a73eb1f --- /dev/null +++ b/package-lock.json @@ -0,0 +1,1598 @@ +{ + "name": "chatapp", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@sindresorhus/is": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", + "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==" + }, + "@szmarczak/http-timer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", + "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "requires": { + "defer-to-connect": "^1.0.1" + } + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + }, + "accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "requires": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + } + }, + "after": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", + "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=" + }, + "ansi-align": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.0.tgz", + "integrity": "sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw==", + "requires": { + "string-width": "^3.0.0" + }, + "dependencies": { + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + } + } + }, + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" + }, + "arraybuffer.slice": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz", + "integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==" + }, + "async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==" + }, + "backo2": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", + "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=" + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "base64-arraybuffer": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz", + "integrity": "sha1-mBjHngWbE1X5fgQooBfIOOkLqBI=" + }, + "base64id": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", + "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==" + }, + "better-assert": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", + "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=", + "requires": { + "callsite": "1.0.0" + } + }, + "binary-extensions": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz", + "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==" + }, + "blob": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz", + "integrity": "sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==" + }, + "body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "requires": { + "bytes": "3.1.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "boxen": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-4.2.0.tgz", + "integrity": "sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ==", + "requires": { + "ansi-align": "^3.0.0", + "camelcase": "^5.3.1", + "chalk": "^3.0.0", + "cli-boxes": "^2.2.0", + "string-width": "^4.1.0", + "term-size": "^2.1.0", + "type-fest": "^0.8.1", + "widest-line": "^3.1.0" + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "requires": { + "fill-range": "^7.0.1" + } + }, + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" + }, + "cacheable-request": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", + "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", + "requires": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^3.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^4.1.0", + "responselike": "^1.0.2" + }, + "dependencies": { + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "requires": { + "pump": "^3.0.0" + } + }, + "lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" + } + } + }, + "callsite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", + "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=" + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "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==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "chokidar": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.3.tgz", + "integrity": "sha512-DtM3g7juCXQxFVSNPNByEC2+NImtBuxQQvWlHunpJIS5Ocr0lG306cC7FCi7cEA0fzmybPUIl4txBIobk1gGOQ==", + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.1.2", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.5.0" + } + }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" + }, + "cli-boxes": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", + "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==" + }, + "clone-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", + "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", + "requires": { + "mimic-response": "^1.0.0" + } + }, + "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==", + "requires": { + "color-name": "~1.1.4" + } + }, + "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==" + }, + "component-bind": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", + "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=" + }, + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=" + }, + "component-inherit": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", + "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=" + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "configstore": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", + "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", + "requires": { + "dot-prop": "^5.2.0", + "graceful-fs": "^4.1.2", + "make-dir": "^3.0.0", + "unique-string": "^2.0.0", + "write-file-atomic": "^3.0.0", + "xdg-basedir": "^4.0.0" + } + }, + "content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "requires": { + "safe-buffer": "5.1.2" + } + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" + }, + "cookie": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", + "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=" + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + }, + "crypto-random-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==" + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "requires": { + "ms": "^2.1.1" + } + }, + "decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "requires": { + "mimic-response": "^1.0.0" + } + }, + "deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" + }, + "defer-to-connect": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", + "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==" + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + }, + "dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "requires": { + "is-obj": "^2.0.0" + } + }, + "duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=" + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "requires": { + "once": "^1.4.0" + } + }, + "engine.io": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.4.2.tgz", + "integrity": "sha512-b4Q85dFkGw+TqgytGPrGgACRUhsdKc9S9ErRAXpPGy/CXKs4tYoHDkvIRdsseAF7NjfVwjRFIn6KTnbw7LwJZg==", + "requires": { + "accepts": "~1.3.4", + "base64id": "2.0.0", + "cookie": "0.3.1", + "debug": "~4.1.0", + "engine.io-parser": "~2.2.0", + "ws": "^7.1.2" + } + }, + "engine.io-client": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.4.4.tgz", + "integrity": "sha512-iU4CRr38Fecj8HoZEnFtm2EiKGbYZcPn3cHxqNGl/tmdWRf60KhK+9vE0JeSjgnlS/0oynEfLgKbT9ALpim0sQ==", + "requires": { + "component-emitter": "~1.3.0", + "component-inherit": "0.0.3", + "debug": "~3.1.0", + "engine.io-parser": "~2.2.0", + "has-cors": "1.1.0", + "indexof": "0.0.1", + "parseqs": "0.0.6", + "parseuri": "0.0.6", + "ws": "~6.1.0", + "xmlhttprequest-ssl": "~1.5.4", + "yeast": "0.1.2" + }, + "dependencies": { + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "parseqs": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.6.tgz", + "integrity": "sha512-jeAGzMDbfSHHA091hr0r31eYfTig+29g3GKKE/PPbEQ65X0lmMwlEoqmhzu0iztID5uJpZsFlUPDP8ThPL7M8w==" + }, + "parseuri": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.6.tgz", + "integrity": "sha512-AUjen8sAkGgao7UyCX6Ahv0gIK2fABKmYjvP4xmy5JaKvcbTRueIqIPHLAfq30xJddqSE033IOMUSOMCcK3Sow==" + }, + "ws": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.1.4.tgz", + "integrity": "sha512-eqZfL+NE/YQc1/ZynhojeV8q+H050oR8AZ2uIev7RU10svA9ZnJUddHcOUZTJLinZ9yEfdA2kSATS2qZK5fhJA==", + "requires": { + "async-limiter": "~1.0.0" + } + } + } + }, + "engine.io-parser": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.2.1.tgz", + "integrity": "sha512-x+dN/fBH8Ro8TFwJ+rkB2AmuVw9Yu2mockR/p3W8f8YtExwFgDvBDi0GWyb4ZLkpahtDGZgtr3zLovanJghPqg==", + "requires": { + "after": "0.8.2", + "arraybuffer.slice": "~0.0.7", + "base64-arraybuffer": "0.1.4", + "blob": "0.0.5", + "has-binary2": "~1.0.2" + } + }, + "escape-goat": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", + "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==" + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + }, + "express": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "requires": { + "accepts": "~1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", + "content-type": "~1.0.4", + "cookie": "0.4.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.1.2", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "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==", + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" + }, + "fsevents": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", + "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "optional": true + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "requires": { + "pump": "^3.0.0" + } + }, + "glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "requires": { + "is-glob": "^4.0.1" + } + }, + "global-dirs": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-2.0.1.tgz", + "integrity": "sha512-5HqUqdhkEovj2Of/ms3IeS/EekcO54ytHRLV4PEY2rhRwrHXLQjeVEES0Lhka0xwNDtGYn58wyC4s5+MHsOO6A==", + "requires": { + "ini": "^1.3.5" + } + }, + "got": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", + "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", + "requires": { + "@sindresorhus/is": "^0.14.0", + "@szmarczak/http-timer": "^1.1.2", + "cacheable-request": "^6.0.0", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^4.1.0", + "lowercase-keys": "^1.0.1", + "mimic-response": "^1.0.1", + "p-cancelable": "^1.0.0", + "to-readable-stream": "^1.0.0", + "url-parse-lax": "^3.0.0" + } + }, + "graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==" + }, + "has-binary2": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz", + "integrity": "sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==", + "requires": { + "isarray": "2.0.1" + } + }, + "has-cors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", + "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=" + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "has-yarn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", + "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==" + }, + "http-cache-semantics": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==" + }, + "http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-by-default": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", + "integrity": "sha1-SMptcvbGo68Aqa1K5odr44ieKwk=" + }, + "import-lazy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", + "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=" + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" + }, + "indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=" + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" + }, + "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==" + }, + "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==", + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "requires": { + "ci-info": "^2.0.0" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-installed-globally": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.3.2.tgz", + "integrity": "sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g==", + "requires": { + "global-dirs": "^2.0.1", + "is-path-inside": "^3.0.1" + } + }, + "is-npm": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-4.0.0.tgz", + "integrity": "sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig==" + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + }, + "is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==" + }, + "is-path-inside": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.2.tgz", + "integrity": "sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg==" + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + }, + "is-yarn-global": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", + "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==" + }, + "isarray": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", + "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=" + }, + "json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=" + }, + "keyv": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", + "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", + "requires": { + "json-buffer": "3.0.0" + } + }, + "latest-version": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", + "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", + "requires": { + "package-json": "^6.3.0" + } + }, + "lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "requires": { + "semver": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, + "mime-db": { + "version": "1.44.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", + "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==" + }, + "mime-types": { + "version": "2.1.27", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", + "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", + "requires": { + "mime-db": "1.44.0" + } + }, + "mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" + }, + "nodemon": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.5.tgz", + "integrity": "sha512-6/jqtZvJdk092pVnD2AIH19KQ9GQZAKOZVy/yT1ueL6aoV+Ix7a1lVZStXzvEh0fP4zE41DDWlkVoHjR6WlozA==", + "requires": { + "chokidar": "^3.2.2", + "debug": "^3.2.6", + "ignore-by-default": "^1.0.1", + "minimatch": "^3.0.4", + "pstree.remy": "^1.1.7", + "semver": "^5.7.1", + "supports-color": "^5.5.0", + "touch": "^3.1.0", + "undefsafe": "^2.0.3", + "update-notifier": "^4.1.0" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "nopt": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", + "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=", + "requires": { + "abbrev": "1" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + }, + "normalize-url": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz", + "integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==" + }, + "object-component": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz", + "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=" + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "requires": { + "ee-first": "1.1.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "p-cancelable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", + "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==" + }, + "package-json": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", + "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", + "requires": { + "got": "^9.6.0", + "registry-auth-token": "^4.0.0", + "registry-url": "^5.0.0", + "semver": "^6.2.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "parseqs": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", + "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=", + "requires": { + "better-assert": "~1.0.0" + } + }, + "parseuri": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz", + "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=", + "requires": { + "better-assert": "~1.0.0" + } + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" + }, + "picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==" + }, + "prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=" + }, + "proxy-addr": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", + "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", + "requires": { + "forwarded": "~0.1.2", + "ipaddr.js": "1.9.1" + } + }, + "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==" + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pupa": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.0.1.tgz", + "integrity": "sha512-hEJH0s8PXLY/cdXh66tNEQGndDrIKNqNC5xmrysZy3i5C3oEoLna7YAOad+7u125+zH1HNXUmGEkrhb3c2VriA==", + "requires": { + "escape-goat": "^2.0.0" + } + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" + }, + "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==" + }, + "raw-body": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "requires": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + } + }, + "readdirp": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", + "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", + "requires": { + "picomatch": "^2.2.1" + } + }, + "registry-auth-token": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.0.tgz", + "integrity": "sha512-P+lWzPrsgfN+UEpDS3U8AQKg/UjZX6mQSJueZj3EK+vNESoqBSpBUD3gmu4sF9lOsjXWjF11dQKUqemf3veq1w==", + "requires": { + "rc": "^1.2.8" + } + }, + "registry-url": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", + "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", + "requires": { + "rc": "^1.2.8" + } + }, + "responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", + "requires": { + "lowercase-keys": "^1.0.0" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, + "semver-diff": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", + "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", + "requires": { + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + } + } + }, + "serve-static": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + } + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" + }, + "signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" + }, + "socket.io": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.3.0.tgz", + "integrity": "sha512-2A892lrj0GcgR/9Qk81EaY2gYhCBxurV0PfmmESO6p27QPrUK1J3zdns+5QPqvUYK2q657nSj0guoIil9+7eFg==", + "requires": { + "debug": "~4.1.0", + "engine.io": "~3.4.0", + "has-binary2": "~1.0.2", + "socket.io-adapter": "~1.1.0", + "socket.io-client": "2.3.0", + "socket.io-parser": "~3.4.0" + } + }, + "socket.io-adapter": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-1.1.2.tgz", + "integrity": "sha512-WzZRUj1kUjrTIrUKpZLEzFZ1OLj5FwLlAFQs9kuZJzJi5DKdU7FsWc36SNmA8iDOtwBQyT8FkrriRM8vXLYz8g==" + }, + "socket.io-client": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.3.0.tgz", + "integrity": "sha512-cEQQf24gET3rfhxZ2jJ5xzAOo/xhZwK+mOqtGRg5IowZsMgwvHwnf/mCRapAAkadhM26y+iydgwsXGObBB5ZdA==", + "requires": { + "backo2": "1.0.2", + "base64-arraybuffer": "0.1.5", + "component-bind": "1.0.0", + "component-emitter": "1.2.1", + "debug": "~4.1.0", + "engine.io-client": "~3.4.0", + "has-binary2": "~1.0.2", + "has-cors": "1.1.0", + "indexof": "0.0.1", + "object-component": "0.0.3", + "parseqs": "0.0.5", + "parseuri": "0.0.5", + "socket.io-parser": "~3.3.0", + "to-array": "0.1.4" + }, + "dependencies": { + "base64-arraybuffer": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", + "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=" + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "socket.io-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.3.1.tgz", + "integrity": "sha512-1QLvVAe8dTz+mKmZ07Swxt+LAo4Y1ff50rlyoEx00TQmDFVQYPfcqGvIDJLGaBdhdNCecXtyKpD+EgKGcmmbuQ==", + "requires": { + "component-emitter": "~1.3.0", + "debug": "~3.1.0", + "isarray": "2.0.1" + }, + "dependencies": { + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + } + } + } + } + }, + "socket.io-parser": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.4.1.tgz", + "integrity": "sha512-11hMgzL+WCLWf1uFtHSNvliI++tcRUWdoeYuwIl+Axvwy9z2gQM+7nJyN3STj1tLj5JyIUH8/gpDGxzAlDdi0A==", + "requires": { + "component-emitter": "1.2.1", + "debug": "~4.1.0", + "isarray": "2.0.1" + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "requires": { + "ansi-regex": "^5.0.0" + } + } + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + }, + "term-size": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.0.tgz", + "integrity": "sha512-a6sumDlzyHVJWb8+YofY4TW112G6p2FCPEAFk+59gIYHv3XHRhm9ltVQ9kli4hNWeQBwSpe8cRN25x0ROunMOw==" + }, + "to-array": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", + "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=" + }, + "to-readable-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", + "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==" + }, + "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==", + "requires": { + "is-number": "^7.0.0" + } + }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" + }, + "touch": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", + "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", + "requires": { + "nopt": "~1.0.10" + } + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==" + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "requires": { + "is-typedarray": "^1.0.0" + } + }, + "undefsafe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.3.tgz", + "integrity": "sha512-nrXZwwXrD/T/JXeygJqdCO6NZZ1L66HrxM/Z7mIq2oPanoN0F1nLx3lwJMu6AwJY69hdixaFQOuoYsMjE5/C2A==", + "requires": { + "debug": "^2.2.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "unique-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "requires": { + "crypto-random-string": "^2.0.0" + } + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" + }, + "update-notifier": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-4.1.3.tgz", + "integrity": "sha512-Yld6Z0RyCYGB6ckIjffGOSOmHXj1gMeE7aROz4MG+XMkmixBX4jUngrGXNYz7wPKBmtoD4MnBa2Anu7RSKht/A==", + "requires": { + "boxen": "^4.2.0", + "chalk": "^3.0.0", + "configstore": "^5.0.1", + "has-yarn": "^2.1.0", + "import-lazy": "^2.1.0", + "is-ci": "^2.0.0", + "is-installed-globally": "^0.3.1", + "is-npm": "^4.0.0", + "is-yarn-global": "^0.3.0", + "latest-version": "^5.0.0", + "pupa": "^2.0.1", + "semver-diff": "^3.1.1", + "xdg-basedir": "^4.0.0" + } + }, + "url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", + "requires": { + "prepend-http": "^2.0.0" + } + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" + }, + "widest-line": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", + "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", + "requires": { + "string-width": "^4.0.0" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "requires": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "ws": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.3.1.tgz", + "integrity": "sha512-D3RuNkynyHmEJIpD2qrgVkc9DQ23OrN/moAwZX4L8DfvszsJxpjQuUq3LMx6HoYji9fbIOBY18XWBsAux1ZZUA==" + }, + "xdg-basedir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", + "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==" + }, + "xmlhttprequest-ssl": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz", + "integrity": "sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4=" + }, + "yeast": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", + "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=" + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..740c555 --- /dev/null +++ b/package.json @@ -0,0 +1,16 @@ +{ + "name": "smtchat", + "version": "1.0.0", + "description": "Simple Chat Application by Smit Bosamiya", + "main": "index.js", + "scripts": { + "serve": "nodemon index.js" + }, + "author": "Smit Bosamiya", + "license": "ISC", + "dependencies": { + "express": "^4.17.1", + "nodemon": "^2.0.5", + "socket.io": "^2.3.0" + } +} \ No newline at end of file diff --git a/public/audio.mp3 b/public/audio.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..e665bceeece5ae461d12f70ea18d300e8e790fed GIT binary patch literal 21732 zcmeIabyS;8yXburEVyfdLU0f6#oZyedx1jnQd&xIcPU=n-HH@Q(f`*2ko`r>zlb2UWNL*Z6T0ucoRZB}x&)C?)!q(Q&(bd({)7RJEKPWsr zCMGd4EiEf6FR!?`qN298sj024tE<0%WMp!3c6MoLb#-%dZ}0H%$B&;sZ*C9|x zhey#v^5K#n4ge_sSy6ib4~GBovLkMjY`fzB_kjK%p1r-j!y(n;)WpQZ^fYUAPDVz?yIfrpF+M&%NkiY|PhmK{&?k(^tfjW~ z9IAv96aOf}n7ov$Yw(X>F@LFU?qhGS`5&?UhqKJ(<&2EX^D(FMMm}D@{}uBId`(&S zYH$Cim;3M9kiGLXYvqG=qleRC|EcP)xK_NR_Q6W#|A_e{#YxF^5w3; z%Lmn2r!#=`G&&Nz$I1$Sr?VQe&HCIUjWKZ42Na3)-2BzRvR-Dohp z$CB5IAmlHd|CQr^3P%2uAha$b=|6I0_$x;&@IMPk#95*}G5OMRDtdLfclyQ5H9RM4 z{5e>`;}C0sH!}B~G-`P(;oKDkCP8_kq&ZO=36qD zzCMNWezxa_AGkYbq}6Y1L$}B*^7{bUx!|%VKA^O)JygM>5WW6rwW#l2+n@g;6g%_J z69sa|x+z&4I2KI{#ei*QByk_O;%;GXToq$#H(x9;_Fj6*mb$-VDsyKqlRcGPG_;$j zOzz}ssTzFpz&u~%GGF^uqFurZG5KOij|+J#8YA%%d)laLQ95yE5fpiBY$N0WA>8V) zR+0EUeUcRgqCiVS$psgURJQA^h0ETHu!>PK>H8ivZea-NyUb>=8j4|cKjX+t~&%7{@qQ&rB;R6CleE#E~Y_1Wfq zBH0gaHr~cRkw_npq<@pcO^_oRlc%}X?Dd}Hi4#xd{8#?HO$nPP=@b3exJvn${6?-; zW;JJFZ!;3m6KC4OVpSBJ-grH(7!oLXRz#*Gz2u;#p&*M%A|11`9#)*{#Fx+2X&?@5 zEnly|8|)LPWQ^^FrzJ0@$rg)y2(W)Ci)8d#57nes$Dvrxo=8y%WXfrZNq!3+ItZM& zQ>fIA^pd`575O0R|Klt3kPOSVyV!i$1=3CSy9Sm-p=Y`jihl@Qp>FwTzYgIt&&YuXp`_Np|4Q=C-8k801avzSdx zqwh^cV`g&!^1_4w8wFWW)r_iQ`SQ(xPvaU}NWX5|cK|T7lR|!e@9EMY+C2T9Hks&a zbCIdV@KM>hf#`*Ad1(O4qW^rs8Y54!SeRZ)S4tCYz;9DgY|BlHoV&(cT$8_9?tUWpkF&SR6xS1N-6rg?? ziGiTyg@lz7_Cf7McXlI4>Fw%_S;e4gNSlnLs^CeieGu9{M)V&-P7#f9&XP()RBm4C z;XT;>Z`57#e$$6oDyQ>*NdaPz$WVLS&-F1#7KVx@yURA^&*GCq*m@vS9hSs>K`~+(=7v?_%OJc)mf4pTom8vV-wuYoeX_^8`+rz83UtvJE0g?&R5QufOH$X-4_|hx}qBmSg9> z=w2Ta)0{1aE!p~V3Avj6W(}*SQK*3|a?G;^`E6_|r4Qy`?j7|a{t!}!qcl5r#nRD& z5^x-53K;;+I}wufW;hZo(MAXb3K*N99C1xtDE)f2b9WvH(=v*z3sgAOpO-SL3O9Z- zmCT^q8_C?#_pN?6t3w`hz?{gjQJI#Tvn_e@m32x)VA!J&E)Mf+E{_a()Edvv$*ST7 zEpw?-Cd3o-WD3Lz1Gh6GLer%9G@+fL=Ykhtcr$`s9z_Vli{V)AGA>8=~I zXE0qMO<^Sb4BN#l8a*Wd$;|QX_!SW#k?5e=snY(4R8Vc3&9J;tzzS2~B{YPcxw%V2e9!*uz!z@vx%fC2KireR}vh;K`hG{Zw8>Qus4rgL>6uz@bNhr?r_DTu9KG7oaYIhIR&0K?=iAQ;>1L-)~39RzBaq-8HMR z>KYPH3l6qT41TQnwK$z~=Ui8v?dkuhG+{HznFATx5>dpHWQBPn+Sy?XPZ>YWY#MM~ z`QJFV+OZ;i0+0~@|L`sUf_23zSQeL5ydSv)k{~KB!{&(|qQ#r^urvbGCC0G+jSR|o za@~zo=digQNKeeZs0|Bo+?5Jk$V2@@h#+M9RBBGwPi2eeptTSM{SCn~@)M2y?;|^n zn*;b{fKy3;B_+GadfMhso|NwgIg$1%!$@t##Ei~9TN<;sYmV5_IU0rB<%QhYe!%y?yt*6J_)FlAoHNJ*-&hA}nqL z{#U84i$0ZA^-85UZZl)pg$0SB$71lr*+fE$^G~54@p*a!C?&nz8*dp{I<-AI^FmU5`^=qQ%zLd@RkO5CE{xC_x4j5xbN9Ch>XOP1bu-5`$d<`5?` zAmJ@MMIA`Gnlq(sjE}U1V5aWLn4<|VTZ{-w*a8wZIw+eDulHP)manYO4O)hYJ`U|! zF*}=P7<(ETLQnn<%;0$7!~y?9h&X0PL0S{5!^VRys!ayKs7*pel5(y8HB!a8jg61t zJDS?AaH^CaImX;INR?)S#`3#rKyIECP@7U7@p)3jcZb(Dx(hc!OQ#xd(36P+!-m#_IQqfFZzL(#MSXK7hLey~PF;*tcGvCR%ei_61W{`&&zE zg0X)Ku_Cp->v-r#C3k`|!|a8dmikU+f_AT~CmCu>w;1-V1{m_EzK@wbU%zyC{hhzD zV%fr;>v?)Lr`xu|o1x{8d6?bTCl5cWyMTp<*IEQ3Um90Ccm#KsW22v#K7|d*o+E3} z``y>kX6rG6kYFGLK!$VlND;oIyGR9CBA9ZL4fqsA!#vWpyC$+cq(EbD* zh-eitkU69ri7bmza2)!EEH}^Y<+3ci=vHF%4OdS~V@iwxDVAtZ6&|~E(8daty=R&# zUHNS)mx4`un0@gtR~qwJ)>j=(JZfEoamtJt{T5=Mwbgf78o5p!j#tCin5~_RNkLT| zG%w32!`AiAYel#^mEU}Qwfy2l%;?37=g+S#9;`>)AZ{U=s4g1>{4fEBnSB8Urnte< zZp8iN0X%Lo*f%g0MHUHdA`eQ7()g%Jgs%==7ex!3P=YssY!Vt09J5o`aO|7Haix_~ z)f<%HmiM%qV-qR1u%61Fw(JifYV4mJ(vw6qpYZ9WzFd_xLWj0zaNPVf*ZCyAIIo7M`CYce8#f7Pc`hwc^P%Wwr-`iY+~1N-D+Gstv$s0;%T<3pdR{!M<{Y7ic=e)4C?UkoiCv&mnJK&CQ3fkW96FdKhN$ac%S(K~o4@o_nQP)%9^bgFo|WM#-*; z4VW*KRcyfIRwQJmp1^;emosG`c8`EJ(oqbfh}TiiW=zMIa+ z7jd^CvFZ0O?8{R$^*JictH1LU@fyX)RNb$Mc?T{4ir6_rK8|hC!|IBztU{dTF3RVW z?K(;(Gps`V(s>eqEd;};kMrAKy&U#-wj_*5)A*9Zk~|TR0SF0@6&d~<$S9mH;0P3ej{X-g7uk^L+CnU37%YKzm#CwMW4hXYR{6{e2;_p z#V?npDTKG>g?l;veMWfMfiFXVr8IA*4(lqQ$AX(ngEJs7_he7!mgB@=DmH0uW+r1c zqyQg+3?*k&Qpbrq^iw{801EBMDFbT!;8~$~e)2IFnVxdqRein>bv4d*9>#MjHtIa) zi|JB^7j)jbj-?W~pPL3U=3*u+$;Vh^b|!{=JZhIq)>bf|72~_GWXacz+s%{Gt>k1x z3pOo1TkOoqGCJMYCH{;csk2|MQc+>O(}pPlj6dElW4+#maSE?W^;I&&O*! z{!@3ZMu8}z>*<`f&yGri(xezQZ}cg!J{BXB&%;?(bQ#Kh=zZdw@TzpY&!_F+XS9@SM{;H} z1F@e#pbR1g$~3myt;6*MHnH*}M7F$)%6pk()rk)XE9#&_KIe)X^Y2WNVd%wLKgDBn zIRw6hRdrd&sxdy+YJ7S>4KY+#QsiG{hVUGOP}THk;cuH&j4xlm}3z%V!Ru&o{`epB$0D6 z+6pLCqIuq8xxnCD<+(cX!u`!`nZ>j?boQGtd)94O_dZcX4%wqtcQd4;i?3_X0}S5s zadI4_wXkkKuH3)ER_W{4G>Kvu666OVi=!!XY7b;cPa zb8-qTsUf|?%r^*iD0*n%+vdp3A3}!Ut#he4F;%$)PFnIj00Q7hol9{!+Kp&b(vJYR zAB@IAWDcyq)ly`Bja1m7;AedtS=h(@I^c0H7kbjUO~8dg;_Y5?*W;F!b6wpp)32*` zm4nU_XFHuexq>X%pD@O1`1OkQ&~+L*Uz}5$n1Jh29V9A?boUc8rr5mIbwS zquwDo+8cI7j)Q?#~jJy631BnoU^?~z6fcK`L*V$+NK3>fpNh3Vg#ONPkF;mq#qIwh$MQ3Y{`YZefA~=j~Y8BTSNHjZ!E-SBj$b z{`@|dyUU!t&VECAO-5T*^3d0}6G`9S>g?w_qS_ta1>h##BEIk4Yc{^mE7fhe<4|*= zvQ%Pu0m<1w&o489LO*`$NC5!g51}ONb2=$)qGxhF9OJEtV9?nl?YWG=C;-j|tYzS| z0MOGzTep!1P<&j-lM?Uc^;dVVFHe@+z<@s*&L@0>AN9l0#Y{!mdk72VZFw?TZ4fb^ z7oTCEjyfra;qG?I`KL`R2i6jDCH@cepI(UHaEyRoICgLi>y5e@VT)7+WKW$N`s#2D z!j|RNFUFBYz2O!$Cw}k8k&@GGlhNREnU2NX3X7)^O)+~Ju%LCr@vG;*sHI=_BSXiT z$Qw~nYa(J*j)zPLVwM}(_DCfk#_iPzkE@61cYpuGYyu4)fIwVY=yr4?5a)8b&|OJI z#IGL!10Y2rm0s~FOiryg!#vpr@=@6$Q~Z@jZrVyrvQ5dM@G~>UbPfi?$Zb-2dwK6d zd1AHk>I@xj>Yt21^De0Bjq$8@S;wI9R5?qQ$`adYXL z1>+O{MW_dk`crj&(U}$?+rR+zfC21dWHYmLIJkkW2n()-;(Xz2>;&WGT6=#y_^un$&wmsuO<8;Y)<-8 zz4I22#dF!MzX9OhGn(T3upNbdCWPSmoz&7~u|Our=FiFfzi zJ>M^n51L7xCBJv3qRDPvpyKkdGWmSX7(chkEcn`Yh7^j#j->?(Oh*#rH{mDen3h4# z@&Ytz!PtF){Hi{7XA8He&1k)nOzkpHn{ z`n@pPkyLt#cO+9|IOe=kt*klfd>oP@vv504B66FM&ii5VtywC>Zz*b1H;)`sIANdH zllD&=8UvqGO6w-OP}gxzqz9sa`mkPNz>cf*fZB&~2tTq_xMIyCh6FCy#meh&$yzjT zocnN>++YfU*o#ua(x8mR2-zVR9#522=$9TQrZUX}7?7NgcQDn<1J-RQ)dA9iqy)9q zVw(`z5ysw93Cl**k$1DLO}k(BXLPALer6mrpFh4gRA<_m-AZ`l?)d4-j=)7n^F`Kp z_R{Z4FwVlzps^Zjea=`AvjCxgh_zXilXq>`%#BxqXp&^+4#8Y=e;_a+i}Pzx=q@et z%gFF2k-CeS%M8`G?SN_>O~& z7Ey-k4-U+-MgTomQyN2$lOorx3u>(f(7a5tdNin{L2sTZIakQ8P-{S*L%p!_(0|Ax zE)aK!rMp-6fqFENh>8~R&pBmUWYEqYot5Ft(`t>qNOmXB*3>qqr=DEU;PsSGQCz#e zN_gZx0pxiC*{r1HgK0mX%pDoTA!>IM>TJ^ zZ`o$UIb%Z0M~d@j#ag(&GmY zR5jr2_jxm7>Emw%_b%dR?bf&ALB{FzZ~T;0kwtN^A!^$?*@@k=UPEf0*RrJ%F1l<$ zo*Kx##U3=|UM^idn|EA(zZW)vOHOV{OhJq4&$kEGCk#<^k;`#Z9TS+hSFP=obL%k= z4fI|`XB;!3-OBf|br&MkI=l+-FyQicTy<1ykeB5_{&?vzc%Zg6WcraI_zxjO+)llW zMsmB&g&>x2GN8PtD~%zDyL-~}siGhPKeL^di111TcfFjhoeVWJ6svUJHf|R(l}>WR ziUIyw>kLxx8-4mK5>vpmGPd`*{)d>YV&|v|#U84MmWKCx9PxWf@}WOFK1&LeQXe}e zVxx_r>xgi^ybh>veaEO8HP*HUk^@24K~>~=`8tu|fh9Dq>HKka-<3oAcHiQn7KYH= za2K2mSzMb6JUSwjZ>3Z;S4C4CBmzlIt20JGQVDo-YIUh>{IjCJ1XT+;8PJgDR6D06 zr!4ONZVaJNRDTLP8N7v(o%_%}E(;!Y+|F(b^v)T@hz6-f(hOt?2fPqhPUjM-s(+>P z*?iAbc;=vD#%(chqt56-U-tAiW@ui}r|KQx4{{vq@OyfZC5 zm6h@8jP;Ed4K z6hBIv?wKz9N*bVZybx{^%bRAz;AQO*L-%XV)u02(%nd?RGjOi-%3KVl*1Yxh2MBSA z7@xbexP5hJf%uF#y*YS(wbE^IM;uei-iccg&T2|n$@0O>YxQjVh)RpIxkGm|MIK3b z6P`~un${O)P(}X3?G-svBWf5aIam=xjIPj(i3=p<^v24uhu0mSJRJowWQOkV`yLrH zFwjpjI`3McVs3lBhO6wA4DGvqcgtKQ4IGJF)GY_S>JKa4bf224HAy1h!vmq((7C65 zJ_4Vc0_}0jF*wpKT?kpUi+tMHC~cdxMx6%dg1Q2}xX1-|*CMVTmJse=@gfjov=O!$ zTJ{n4IzrwNiX-pdGe^Hck)lk}O+~`O72E$t%M#fCGR`g|MrJvYM5N#GpdqisP7RfIsE=fBw0efyhfB_4faYI?Dus(_(V@Ma zytcL7;z-{z$2F8U0yA$C!ydD%X(Gb5GmaeXXCq5p9>vbM&-Qdg4QY6MieXjUh|a+* zyBxn|nB!J}OG$axVCzY^!WzZays$o*e={v)rFQJip|3Y!*d&^+lguNPT}Skr02T7G zr~(@jz0H`m>zBv@YlvdBFQzb|O3TOtz$ie3Mj&yj1u|Y3F9m&Idi>)_S}_1j4oeE| zCM*s_IuntUHO39Fo=#bCgza7W$3BwfU3WyP{YLpzJC(G7*g#nmoJ6M5ZxR$CIn5k8iCexb3TW z5~ZE7F1RAxiHB6+gNyM4q5u<>@EJ4vgg?rjM7Th5Kjo->k%{o0d*p1YN3KRF^UG!p#Or1^!90bakrMHR zB$?52HWa2_>%WS8?)B`FJ~6vTn!GdbFBeA$H#KCa?z0v>Lfjg3$@*K2jMv_0abEFnQ-z&&IkD_J2g7~8ym$p2?U;|_esNM_pE z*V>J~Vx%8H%_VWffPOz@lA0@oNFhC}DfF%8#%oS1P1|LQwVy}fId4bPrFXFNyK;v5t*?BOHF_?NV58O%gSe-^R#G=&Actnd??GVfU9#OXCT$M+g9b zs2?WSzaO56>#6&)#3EAOvO48ZDiQRs-GnoLwf--Q&d&e<8GL?D0)<9Uz2Iq>G@LTe zp<8>42>4K2>8im+9p1^>bj(YGjoOJ>=DxN`1G)uoqgk z&%$aG6MrwvGoQOwdoT6gEP&DEF{KdP@$c;!M>YA?Ss7vS0%uSnWc6g%gJ=nwwKA3V z@{FY)Z7c`jdA8CIZo$L!LDH$s_=+!@R-To(RBJPgr zj0a_N0R0~RDnf8dLICVtVIu`#3XiIREe~SZK(^e&&a#PQ^tw2Q$Ba7)#mG5?K@Lvp zP3fkq0-#}6*=FjuU1nsd(j*LxH~DeXV)f<3rEJDc^BtW%02uMGT0d)dtVGYu&!z?E z+QFjFPEVGBJ*9A{n#gt(H6S%YFFK2!?M#`I7!L)c{CaBzl1%LA>Dx?EweOlNSCErz?5=*E&ENS<6 zT;Xr`lRvewxD%p3TGmT(hzeCXm|x_fwUkcD(}gzHwj{fZ?J94Ig|h2@!(JL&(0{Dz z^R)itxJvf9izS*0THOg5v`I!SSX)I`fTA&!={mHSwlQ(s9itF8itjid`YkK7e%kFD zRQPSyeM;RDt}Ur-r{ee-y!BiExJS6)TtX&@Yr?&#W$P!YZ^v)DaGe^;Mc`? z9aKK#1+ShQs(W;P@V8Xjal-VfQZB5Wcf2MK&FinM7R$%S=JWbP=oGwbBcmLh;V;L@ z_CN^LHQowcM7>i0uq@q00dU{g)}Z#PdF)1GEb4qZ!(eukmASAYO5rKm=Poh2heOpj zX}R%`Wki0zBtl7s@6d$x?QP{5FsrkC|M(dI;%@_Lmk`|ugiF9(a`Ecyw5s1(7**LG z?aVSAggzV>!&+OqD6l|jUIjB(jV3w_acu=hf ze$?zbhIET?EUXef7j^DPPmO5!+7PL`sjRHDcDve;GtB9e)Vy-mkrb;^@jcUm>APR` zcw9`|;wzO(#{}d`{l`a{!d^;{`2_j6NQOLCI}=`&h^L3oNuVy$Tg9KnBR;m$)6r>? zspH-!b^4nbAP^@{E`8jJo5*@Yn>uKFlR?E&Qr4WuN8bP(06xM6wo?Br{fO|{&@)dy zj48=i0vo1U)(fQx2U?E!KMP zx-V+JmDqFYrB^OJAItgevaP?DzuGux)KB_ozxn=ByPT-T><^)9_)oZu%G}FWKLnh7 zlTgsj6M9jF)Hk_Dd@3H=5XA2*3@|byrPOw%ctxJ|GT}P+J$@<*SH7+s7jy3$zSPO! zV^E$NMHt46<{0{jwWHhvu@P&A_sCop$F9&h+=ec6`n{{gkSq>Dbrl0W<^G#S0xc@Gdkm~SSf{s2bmly z&1#Bx5oPE59=K5b-mulmc=3sfJM|5@pni(#)XeBrBF+d!H0D3q- z?_|tw3ccGz9=07-jMP=EIWh}?!=K)2DOVvI0qhXqG>@7%qM}k@)HqcaQ58bPf!FPU z(Ir91D+7u1X_e_FUum1}2Q8fICdu}pxtP9>g$2>BP30T@5V`<<=E*3{W%x@$oYD&c zv|Pe!44!JMeYii{7961TRiR9wpoQB`_AbgT8j@OzGg54_Jz`yZzns#p%RRw+v|99n zLX|bZ0z;hqy8vm9s?W_{K#^|4;Q4w7r@0W3_7Y>q;+rJxrz&(MkPUgtZPRe)FJ12t z7EAXE&+oetm!tQQpFeh6$VeFBnx6=g<6M>d*?pip@j&8aeOR(Pve?^uo+#Pu8R2QQ36pde~pzrK3b`+o#@o|d_x zfSzi#A#-werh?M}>v<$FC{RrH@YlG1oA}ELfHY>;2KlN+&o&Lqgeq3;yuSQw4TqWS zgC56MT4rJ0X6Lg5wVyp1gHSeViduaEcWOL%G5wG!~*eK`{zK zDRr*V{ji}9=EZ^dQIWp>BG$OG0-2z#GQQ17>%u@vwhrOoQ-3>to-{@mlV4Qeq+ zM>HlRyp!Yhdeu%kwOKK(Ju)L#i9Vu%8{ZO94>D3*n<57L)9|93C=PgRVb zJGJ&xLg>5eO{+cJR< z@~bdWU?>Em%X_}$n-dspMC(ruciW&6HZi8D-5h)7=os#&0)8WcEs+%ItG6JUt)GD! z8|fjTP3XcJQs1y2q)cvF}ZGwU3`Dsfn+cU3* zgH*g3{IAM+Pwd^B4_`3e7Y8TR_d`**DQU2AP}M+>up1EA4n)y@uLa30y>$z}zm{t)_%x3ep)h}`jVgSNc& z3;?|&azUcR-QAZmD6~}qFkfqo<}7Jv)GKk$O4-EoBPXJK!mn#sZs@7jZ7|BPpI%Oh z(0zsN?Lk$K<~w}K7B}R6L%%xFBwlYD0DT-?a&eyc+ES7jpXB(+H9H%k^un|D&Ig7Z zpxN=gQ1kBcI+1LD|4!4R2-r>#zaVgQJCo&984O+WU=C172;K>JRP_uN1=o72HqgU& zHrOYE1|lQpk7=-*;@Eusly-&EB(YbA2rcNh5NC>N6cfJIZJPbn9E(SSwsvad5yrDD4;sJ;j@`@%XkGS*xg zPm_b*zY~<$CKsEUm_DLB7U@roUBRiffMKmLavZaAU)Oleue4hB(`7)Rofn%1D$XF@ z>w!;zDo=dG#t{Vo_z}wV@_}}xx^H1mN#oE^v9s7#Z0kmd2{F)G;>C8McVoN8R;~s( zo4ObkhJ5|tZ`FJj&3QQr+?v`>O#+i=ITEM`?ny9C7w^{Lhb<~ewp$T9OVSF#ZGKve zdF1sEw^);r(5Z2)4gt@K9WX%Z*Kp)0VrX4Pw9<$%C&xiHhAKTyEj1A*SD*lCBjka_ z5E3=0;*W(c6Kk_T7*cB}I8p2)<&gK&alx{XI*HWmXleiu{~h?pMSU1oY$y~c3Ggro zU+%lY2(ro-pAq|~r}zvA^S(H>rU#HYxk3`aGdLwOmXri&WXh&qmjNLKi`jV2uBEnW*SK90rjb|0>UsI|5ATkMZ)O*KcL*^R z!(=W*G+w_E5mBc~{UnWqFCajgPgu#r3Twy(`82u2 zQY+}t4a=cIu<+mUGe4r24hgd5(xOo?B_ky<5nJUfAx?0x3)_7&-Zdt4k)N$e_mfFl z;zmZw27#D+DBf`1Tj#lUlKYC(@1hbl z*YB}Hevf@ki2hlICee*1AqsT)QdvB0_q~&!dQ@4>7U5zZH%$(;7v@pEyE=PwL5zIJ zH%q55UeDLB_q~lp6@@J=Qi|q?_BiNSFekC)^70DC3&I%-lIOfK1Zled#A*S(GJR*$T~_-c`|Blq^Iy5Soj9 z{x$F8Enfa=t1TI*;YR(m<&mOiu+sforclRN5rhMm5iLMSA+$i%x0!Sj6SP$H9825z z7z@|RUfHK6IxlKNxs{a_EPRRBnm24A$RCjgfhJ9q-zEGZv=*^LDLEM2uDrow2~GeW zj$2DVBH`jW@9BnH%RLY}hPo=rgKgR59@Bk;Wdt+m80vH(hb2%MNy~u;o@#kVAZ-TO z6s7i_DWb#KLk2C;rF`kF`aTp0xf4lx-_1@Z-_5%W8xOY+cFK%78w(W`$oI_Q5>{%@ z(gHO280c3~sQn>6R}AOPoiSgotq{jscjiU?Sh-K>3V&Yu(=@j((5ojp^Cl)}XIcfl z43~|^&?sCwE%?UIIop3GyImHiT-C%VB+(UMz+wOOOT18-?~ZA-UO}bLLN%9fSj228 zd%j^`K1o31{3?5XJxz`AxH6XW^WyDRm8o=A4nl3I4OkmeAH{bgbt~$q_dhEg)vs%= zCJr?kw)vZt>(;eNmbmlg2Q0d+XB{tI{j%?xJ`KF%K$N%6a(xBy-Q{v}Ba#6KqOjz{MPaWCRIgO_-jYRJ@|4g3Ft`thS(! zQ;AqoyQi2=pqzNbmFw>%#Nqwz=fGy2_CfvPjHDDjxqbdR%!eIrYKw=8mb0IW&HayO zQYMrg4cmyon6eqoYj!dun)aaL8>-TbYsCZ1ZE?Q`^-1_cwE{gmaztGfE}`bcNj#v=0V&YKDk%GYJm z$A~n^(7u|sswgsq0i(k2gmHY9J{;BI!gr@nOXjEq$4CyTZ zL<>iv7A#%l6Ioc7|CBh+3LH?U+~QRC&WiFI_71;(P=iiO6SJ@ivoyTog|WRqcEObh z`EtEnxPD?!%0h-9Kez+q1yWuG(k<61RNvBT>YM~zAi+ep5TJ)IEdLhHuE0A+o*aSb^g(fP8xk_`#^ z=MP6w2rJsueYA8qY$SQTN8_!gzQUpw7E0g|mm;U#f)H_nRQ>*>oI%~Da2;be@jBbI zj&3$es7$rPMB-BYSMJ{ z$qx-@bt?3ri&qWCZhT7Y98p=`s7AcY<+FW{6=pH{hV3her>acdElr~^AlT9D$vTDl zpD03&Z|of~HZ~jVycY@_=Ifuo9)dApPd-mm=vrZ;Tph1b{c9YGol|%!jh{yjvaR-| z1L!faWAg!-bdS-1MoR#QQGP>E9fn05z@rr)l50BhS*@RvkAqoFQ@mZJJlBa_&w#U# zye47zU}%z#G_!n2e`1rn9KTvnN|SfGNu`Z|Kl96{60fLP>JS@Lk8lNB53y3ig9>bE zPkU#Ll%Qo}3O@JPSRLYLo7F#Es2ZDe(uQo`!0Ltu_OMg2)SXRZA~eCLa(uF}bctnS zI`$ZgRXV&00Lo>+TWI-fH|1@{76 zZNY{zaWh=!CmT7~`=Cn4M#p|ZUz=mN+(inOhFQr<^|g*fUYjnI70oV8T~99u7K)5y z&WB96=S%xFdci7{6L|9m@E9#Ka%|IYVH4| zL4ONE|J`Bz|C1H+x6}1+LVr6X|6!yC|2QDMKilR0J(v4uD*u@JA1Cz3Vf{Cte?; + + + + + + Chat App + + + + + + +
+
+
+
+
+

Smt Chat

+
+
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/public/script.js b/public/script.js new file mode 100644 index 0000000..c7d06dd --- /dev/null +++ b/public/script.js @@ -0,0 +1,66 @@ +const socket = io(); + +const txt = document.getElementById('txt_message'); +const container = document.getElementById('container'); +var audio = new Audio('audio.mp3'); + +const user = prompt("Enter Your Name"); +socket.emit('new-user-join', user); + +const append = (sender, message, position) => { + messageElement = document.createElement('div'); + messageElement.className = 'row pl-2 pr-2 mt-3 mb-3'; + messageInnerElement = document.createElement('div'); + if (sender != '') { + spanElement = document.createElement('span'); + spanElement.className = 'text-secondary'; + spanElement.append(sender); + messageInnerElement.append(spanElement); + messageInnerElement.append(document.createElement('br')); + } + messageInnerElement.append(message); + if (position == 'left') { + audio.play(); + messageInnerElement.className = 'col-8 border rounded pt-3 pb-3'; + } else { + messageInnerElement.className = 'col-8 offset-4 border rounded pt-3 pb-3'; + } + messageElement.append(messageInnerElement); + container.append(messageElement); +}; + +const bottom = () => { + container.scrollTop = container.scrollHeight; +}; + +txt.onkeyup = (event) => { + if (event.keyCode === 13) { + document.getElementById('btn_send').click(); + } +}; + +document.getElementById('btn_send').onclick = () => { + if (txt.value != '') { + var ms = txt.value; + socket.emit('send', ms); + append('You :', ms, ''); + txt.value = ''; + bottom(); + } + txt.focus(); +}; + +socket.on('user-joined', newuser => { + append('', newuser + ' Joined the Chat', 'left'); + bottom(); +}); + +socket.on('receive', data => { + append(data.user + " :", data.message, 'left'); + bottom(); +}); + +socket.on('left', data => { + append('', data.user + ' Left From Chat', 'left'); + bottom(); +}); \ No newline at end of file diff --git a/public/send.png b/public/send.png new file mode 100644 index 0000000000000000000000000000000000000000..a889c735ff1d431c7e2c180ff2a8d3f5bb5e059e GIT binary patch literal 15074 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 Y0O8E@{IXbZcNGG+aokn3