1
0
mirror of https://github.com/hack-chat/main.git synced 2024-03-22 13:20:33 +08:00

Protocol Updates and Bug Fixes

This commit is contained in:
marzavec 2020-03-12 13:28:20 -05:00
parent 9284f27a19
commit 2b6e771383
23 changed files with 557 additions and 446 deletions

View File

@ -3,6 +3,29 @@ All notable changes to this project will be documented in this file.
## [Unreleased] ## [Unreleased]
## [2.1.93 pre 2.2] - 2020-03-12
### Added
- (Source) `./pm2.config.js` PM2 ecosystem config handling both http-server and the websocket
- (Source) NPM new commands:
- "start": Starts or reloads the dev environment
- "stop": Stops and clears the dev environment
- "logs": Show / watch http & websocket logs for errors and events
- "clear": Clear all logged data
- "status": Show status of http and websocket
- "refresh": Clears logged data and stops http and websocket
- (Server) Numeric user levels / UAC, related to issue #86
- (Server) `join` module password property, related to V2 protocol update
- (Server) `users` array to `onlineSet` structure, related to V2 protocol update
- (Server) `session` module, related to V2 protocol update
- (Server) `/move` chat hook to `move` module
### Removed
- (Source) `./clientSource/` directory
### Changed
- (Server) Minor bug fixes
- (Server) Increased module abstraction to remove duplicate code (thanks @MinusGix)
## [2.1.92 pre 2.2] - 2019-11-06 ## [2.1.92 pre 2.2] - 2019-11-06
### Added ### Added
- (Server) `./server/src/utility/` directory - (Server) `./server/src/utility/` directory

View File

@ -1,2 +0,0 @@
## Explanation
This folder will contain the source for the version 2 client. The new client has a build process which will transpile into `./client`. For now it is a placeholder that retains the development process flow for hack.chat's modular project structure.

View File

@ -1 +0,0 @@
console.log('Use "npm start" instead.')

View File

@ -1,194 +0,0 @@
{
"name": "hack.chat-v2",
"version": "2.1.91",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
"async": {
"version": "2.6.3",
"resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz",
"integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==",
"requires": {
"lodash": "^4.17.14"
}
},
"basic-auth": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-1.1.0.tgz",
"integrity": "sha1-RSIe5Cn37h5QNb4/UVM/HN/SmIQ="
},
"colors": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz",
"integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA=="
},
"corser": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/corser/-/corser-2.0.1.tgz",
"integrity": "sha1-jtolLsqrWEDc2XXOuQ2TcMgZ/4c="
},
"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"
}
},
"ecstatic": {
"version": "3.3.2",
"resolved": "https://registry.npmjs.org/ecstatic/-/ecstatic-3.3.2.tgz",
"integrity": "sha512-fLf9l1hnwrHI2xn9mEDT7KIi22UDqA2jaCwyCbSUJh9a1V+LEUSL/JO/6TIz/QyuBURWUHrFL5Kg2TtO1bkkog==",
"requires": {
"he": "^1.1.1",
"mime": "^1.6.0",
"minimist": "^1.1.0",
"url-join": "^2.0.5"
}
},
"eventemitter3": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.0.tgz",
"integrity": "sha512-qerSRB0p+UDEssxTtm6EDKcE7W4OaoisfIMl4CngyEhjpYglocpNg6UEqCvemdGhosAsg4sO2dXJOdyBifPGCg=="
},
"follow-redirects": {
"version": "1.9.0",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.9.0.tgz",
"integrity": "sha512-CRcPzsSIbXyVDl0QI01muNDu69S8trU4jArW9LpOt2WtC6LyUJetcIrmfHsRBx7/Jb6GHJUiuqyYxPooFfNt6A==",
"requires": {
"debug": "^3.0.0"
}
},
"he": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
"integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw=="
},
"http-proxy": {
"version": "1.18.0",
"resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.0.tgz",
"integrity": "sha512-84I2iJM/n1d4Hdgc6y2+qY5mDaz2PUVjlg9znE9byl+q0uC3DeByqBGReQu5tpLK0TAqTIXScRUV+dg7+bUPpQ==",
"requires": {
"eventemitter3": "^4.0.0",
"follow-redirects": "^1.0.0",
"requires-port": "^1.0.0"
}
},
"http-server": {
"version": "0.12.0",
"resolved": "https://registry.npmjs.org/http-server/-/http-server-0.12.0.tgz",
"integrity": "sha512-imGLDSTT1BZ0QG1rBFnaZ6weK5jeisUnCxZQI1cpYTdz0luPUM5e3s+WU5zRWEkiI6DQxL2p54oeKrDlzO6bRw==",
"requires": {
"basic-auth": "^1.0.3",
"colors": "^1.3.3",
"corser": "^2.0.1",
"ecstatic": "^3.3.2",
"http-proxy": "^1.17.0",
"opener": "^1.5.1",
"optimist": "~0.6.1",
"portfinder": "^1.0.20",
"secure-compare": "3.0.1",
"union": "~0.5.0"
}
},
"lodash": {
"version": "4.17.15",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
"integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A=="
},
"mime": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
"integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="
},
"minimist": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
"integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ="
},
"mkdirp": {
"version": "0.5.1",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
"integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
"requires": {
"minimist": "0.0.8"
},
"dependencies": {
"minimist": {
"version": "0.0.8",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
"integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0="
}
}
},
"ms": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
},
"opener": {
"version": "1.5.1",
"resolved": "https://registry.npmjs.org/opener/-/opener-1.5.1.tgz",
"integrity": "sha512-goYSy5c2UXE4Ra1xixabeVh1guIX/ZV/YokJksb6q2lubWu6UbvPQ20p542/sFIll1nl8JnCyK9oBaOcCWXwvA=="
},
"optimist": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz",
"integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=",
"requires": {
"minimist": "~0.0.1",
"wordwrap": "~0.0.2"
},
"dependencies": {
"minimist": {
"version": "0.0.10",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz",
"integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8="
}
}
},
"portfinder": {
"version": "1.0.25",
"resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.25.tgz",
"integrity": "sha512-6ElJnHBbxVA1XSLgBp7G1FiCkQdlqGzuF7DswL5tcea+E8UpuvPU7beVAjjRwCioTS9ZluNbu+ZyRvgTsmqEBg==",
"requires": {
"async": "^2.6.2",
"debug": "^3.1.1",
"mkdirp": "^0.5.1"
}
},
"qs": {
"version": "6.9.1",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.9.1.tgz",
"integrity": "sha512-Cxm7/SS/y/Z3MHWSxXb8lIFqgqBowP5JMlTUFyJN88y0SGQhVmZnqFK/PeuMX9LzUyWsqqhNxIyg0jlzq946yA=="
},
"requires-port": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
"integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8="
},
"secure-compare": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/secure-compare/-/secure-compare-3.0.1.tgz",
"integrity": "sha1-8aAymzCLIh+uN7mXTz1XjQypmeM="
},
"union": {
"version": "0.5.0",
"resolved": "https://registry.npmjs.org/union/-/union-0.5.0.tgz",
"integrity": "sha512-N6uOhuW6zO95P3Mel2I2zMsbsanvvtgn6jVqJv4vbVcz/JN0OkL9suomjQGmWtxJQXOCqUJvquc1sMeNz/IwlA==",
"requires": {
"qs": "^6.4.0"
}
},
"url-join": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/url-join/-/url-join-2.0.5.tgz",
"integrity": "sha1-WvIvGMBSoACkjXuCxenC4v7tpyg="
},
"wordwrap": {
"version": "0.0.3",
"resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz",
"integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc="
}
}
}

View File

@ -1,22 +0,0 @@
{
"name": "hack.chat-v2",
"version": "2.1.91",
"description": "a minimal distraction free chat application",
"main": "index.js",
"repository": {
"type": "git",
"url": "git+https://github.com/hack-chat/main.git"
},
"engines": {
"node": ">= 8.10.0",
"npm": ">= 5.7.1"
},
"scripts": {
"start": "http-server ../client -o -p 3000"
},
"author": "Marzavec",
"license": "WTFPL",
"dependencies": {
"http-server": "^0.12.0"
}
}

474
package-lock.json generated
View File

@ -1,6 +1,6 @@
{ {
"name": "hack.chat-v2", "name": "hack.chat-v2",
"version": "2.1.91", "version": "2.1.9",
"lockfileVersion": 1, "lockfileVersion": 1,
"requires": true, "requires": true,
"dependencies": { "dependencies": {
@ -55,16 +55,6 @@
"proxy-agent": "^3.1.0", "proxy-agent": "^3.1.0",
"semver": "^5.5.0", "semver": "^5.5.0",
"ws": "^5.1.0" "ws": "^5.1.0"
},
"dependencies": {
"async": {
"version": "2.6.3",
"resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz",
"integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==",
"requires": {
"lodash": "^4.17.14"
}
}
} }
}, },
"@pm2/agent-node": { "@pm2/agent-node": {
@ -78,14 +68,6 @@
"ws": "^6.0.0" "ws": "^6.0.0"
}, },
"dependencies": { "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"
}
},
"ws": { "ws": {
"version": "6.2.1", "version": "6.2.1",
"resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz",
@ -114,14 +96,6 @@
"tslib": "1.9.3" "tslib": "1.9.3"
}, },
"dependencies": { "dependencies": {
"async": {
"version": "2.6.3",
"resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz",
"integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==",
"requires": {
"lodash": "^4.17.14"
}
},
"debug": { "debug": {
"version": "3.1.0", "version": "3.1.0",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
@ -154,14 +128,6 @@
"ws": "^3.0.0" "ws": "^3.0.0"
}, },
"dependencies": { "dependencies": {
"async": {
"version": "2.6.3",
"resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz",
"integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==",
"requires": {
"lodash": "^4.17.14"
}
},
"debug": { "debug": {
"version": "2.6.9", "version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
@ -192,6 +158,24 @@
} }
} }
}, },
"@pm2/pm2-version-check": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/@pm2/pm2-version-check/-/pm2-version-check-1.0.3.tgz",
"integrity": "sha512-SBuYsh+o35knItbRW97vl5/5nEc5c5DYP7PxjyPLOfmm9bMaDsVeATXjXMBy6+KLlyrYWHZxGbfXe003NnHClg==",
"requires": {
"debug": "^4.1.1"
},
"dependencies": {
"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"
}
}
}
},
"agent-base": { "agent-base": {
"version": "4.3.0", "version": "4.3.0",
"resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz",
@ -261,9 +245,12 @@
"integrity": "sha512-uWMHxJxtfj/1oZClOxDEV1sQ1HCDkA4MG8Gr69KKeBjEVH0R84WlejZ0y2DcwyBlpAEMltmVYkVgqfLFb2oyiA==" "integrity": "sha512-uWMHxJxtfj/1oZClOxDEV1sQ1HCDkA4MG8Gr69KKeBjEVH0R84WlejZ0y2DcwyBlpAEMltmVYkVgqfLFb2oyiA=="
}, },
"async": { "async": {
"version": "3.1.0", "version": "2.6.3",
"resolved": "https://registry.npmjs.org/async/-/async-3.1.0.tgz", "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz",
"integrity": "sha512-4vx/aaY6j/j3Lw3fbCHNWP0pPaTCew3F6F3hYyl/tHs/ndmV1q7NW9T5yuJ2XAGwdQrP+6Wu20x06U4APo/iQQ==" "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==",
"requires": {
"lodash": "^4.17.14"
}
}, },
"async-limiter": { "async-limiter": {
"version": "1.0.1", "version": "1.0.1",
@ -280,12 +267,34 @@
} }
}, },
"axios": { "axios": {
"version": "0.19.0", "version": "0.19.2",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.19.0.tgz", "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz",
"integrity": "sha512-1uvKqKQta3KBxIz14F2v06AEHZ/dIoeKfbTRkK1E5oqjDnuEerLmYTgJB5AiQZHJcljpg1TuRzdjDR06qNk0DQ==", "integrity": "sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==",
"requires": { "requires": {
"follow-redirects": "1.5.10", "follow-redirects": "1.5.10"
"is-buffer": "^2.0.2" },
"dependencies": {
"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"
}
},
"follow-redirects": {
"version": "1.5.10",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz",
"integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==",
"requires": {
"debug": "=3.1.0"
}
},
"ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
}
} }
}, },
"balanced-match": { "balanced-match": {
@ -293,6 +302,11 @@
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
}, },
"basic-auth": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-1.1.0.tgz",
"integrity": "sha1-RSIe5Cn37h5QNb4/UVM/HN/SmIQ="
},
"binary-extensions": { "binary-extensions": {
"version": "2.0.0", "version": "2.0.0",
"resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz",
@ -351,18 +365,18 @@
"integrity": "sha1-BsIe7RobBq62dVPNxT4jJ0usIpY=" "integrity": "sha1-BsIe7RobBq62dVPNxT4jJ0usIpY="
}, },
"chokidar": { "chokidar": {
"version": "3.3.0", "version": "3.3.1",
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.0.tgz", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.1.tgz",
"integrity": "sha512-dGmKLDdT3Gdl7fBUe8XK+gAtGmzy5Fn0XkkWQuYxGIgWVPPse2CxFA5mtrlD0TOHaHjEUqkWNyP1XdHoJES/4A==", "integrity": "sha512-4QYCEWOcK3OJrxwvyyAOxFuhpvOVCYkr33LPfFNBjAD/w3sEzWsp2BUOkI4l9bHvWioAd0rc6NlHUOEaWkTeqg==",
"requires": { "requires": {
"anymatch": "~3.1.1", "anymatch": "~3.1.1",
"braces": "~3.0.2", "braces": "~3.0.2",
"fsevents": "~2.1.1", "fsevents": "~2.1.2",
"glob-parent": "~5.1.0", "glob-parent": "~5.1.0",
"is-binary-path": "~2.1.0", "is-binary-path": "~2.1.0",
"is-glob": "~4.0.1", "is-glob": "~4.0.1",
"normalize-path": "~3.0.0", "normalize-path": "~3.0.0",
"readdirp": "~3.2.0" "readdirp": "~3.3.0"
} }
}, },
"cli-table-redemption": { "cli-table-redemption": {
@ -415,6 +429,11 @@
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
"integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
}, },
"colors": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz",
"integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA=="
},
"commander": { "commander": {
"version": "2.15.1", "version": "2.15.1",
"resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz",
@ -439,6 +458,11 @@
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
"integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
}, },
"corser": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/corser/-/corser-2.0.1.tgz",
"integrity": "sha1-jtolLsqrWEDc2XXOuQ2TcMgZ/4c="
},
"cron": { "cron": {
"version": "1.7.1", "version": "1.7.1",
"resolved": "https://registry.npmjs.org/cron/-/cron-1.7.1.tgz", "resolved": "https://registry.npmjs.org/cron/-/cron-1.7.1.tgz",
@ -463,9 +487,9 @@
"integrity": "sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==" "integrity": "sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw=="
}, },
"debug": { "debug": {
"version": "4.1.1", "version": "3.2.6",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
"integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
"requires": { "requires": {
"ms": "^2.1.1" "ms": "^2.1.1"
} }
@ -490,6 +514,17 @@
"resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
"integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak="
}, },
"ecstatic": {
"version": "3.3.2",
"resolved": "https://registry.npmjs.org/ecstatic/-/ecstatic-3.3.2.tgz",
"integrity": "sha512-fLf9l1hnwrHI2xn9mEDT7KIi22UDqA2jaCwyCbSUJh9a1V+LEUSL/JO/6TIz/QyuBURWUHrFL5Kg2TtO1bkkog==",
"requires": {
"he": "^1.1.1",
"mime": "^1.6.0",
"minimist": "^1.1.0",
"url-join": "^2.0.5"
}
},
"emitter-listener": { "emitter-listener": {
"version": "1.1.2", "version": "1.1.2",
"resolved": "https://registry.npmjs.org/emitter-listener/-/emitter-listener-1.1.2.tgz", "resolved": "https://registry.npmjs.org/emitter-listener/-/emitter-listener-1.1.2.tgz",
@ -499,9 +534,9 @@
} }
}, },
"enquirer": { "enquirer": {
"version": "2.3.2", "version": "2.3.4",
"resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.2.tgz", "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.4.tgz",
"integrity": "sha512-PLhTMPUXlnaIv9D3Cq3/Zr1xb7soeDDgunobyCmYLUG19n24dvC8i+ZZgm2DekGpDnx7JvFSHV7lxfM58PMtbA==", "integrity": "sha512-pkYrrDZumL2VS6VBGDhqbajCM2xpkUNLuKfGPjfKaSIBKYopQbqEFyrOkRMIb2HDR/rO1kGhEt/5twBwtzKBXw==",
"requires": { "requires": {
"ansi-colors": "^3.2.1" "ansi-colors": "^3.2.1"
} }
@ -530,15 +565,22 @@
"integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
}, },
"escodegen": { "escodegen": {
"version": "1.12.0", "version": "1.14.1",
"resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.12.0.tgz", "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.1.tgz",
"integrity": "sha512-TuA+EhsanGcme5T3R0L80u4t8CpbXQjegRmf7+FPTJrtCTErXFeelblRgHQa1FofEzqYYJmJ/OqjTwREp9qgmg==", "integrity": "sha512-Bmt7NcRySdIfNPfU2ZoXDrrXsG9ZjvDxcAlMfDUgRBjLOWTuIACXPBFJH7Z+cLb40JeQco5toikyc9t9P8E9SQ==",
"requires": { "requires": {
"esprima": "^3.1.3", "esprima": "^4.0.1",
"estraverse": "^4.2.0", "estraverse": "^4.2.0",
"esutils": "^2.0.2", "esutils": "^2.0.2",
"optionator": "^0.8.1", "optionator": "^0.8.1",
"source-map": "~0.6.1" "source-map": "~0.6.1"
},
"dependencies": {
"esprima": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
"integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="
}
} }
}, },
"esm": { "esm": {
@ -566,6 +608,11 @@
"resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-5.0.1.tgz", "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-5.0.1.tgz",
"integrity": "sha1-YZegldX7a1folC9v1+qtY6CclFI=" "integrity": "sha1-YZegldX7a1folC9v1+qtY6CclFI="
}, },
"eventemitter3": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.0.tgz",
"integrity": "sha512-qerSRB0p+UDEssxTtm6EDKcE7W4OaoisfIMl4CngyEhjpYglocpNg6UEqCvemdGhosAsg4sO2dXJOdyBifPGCg=="
},
"extend": { "extend": {
"version": "3.0.2", "version": "3.0.2",
"resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
@ -595,26 +642,11 @@
} }
}, },
"follow-redirects": { "follow-redirects": {
"version": "1.5.10", "version": "1.10.0",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.10.0.tgz",
"integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==", "integrity": "sha512-4eyLK6s6lH32nOvLLwlIOnr9zrL8Sm+OvW4pVTJNoXeGzYIkHVf+pADQi+OJ0E67hiuSLezPVPyBcIZO50TmmQ==",
"requires": { "requires": {
"debug": "=3.1.0" "debug": "^3.0.0"
},
"dependencies": {
"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="
}
} }
}, },
"fs.realpath": { "fs.realpath": {
@ -722,6 +754,11 @@
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
"integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0="
}, },
"he": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
"integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw=="
},
"http-errors": { "http-errors": {
"version": "1.7.3", "version": "1.7.3",
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz",
@ -734,6 +771,16 @@
"toidentifier": "1.0.0" "toidentifier": "1.0.0"
} }
}, },
"http-proxy": {
"version": "1.18.0",
"resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.0.tgz",
"integrity": "sha512-84I2iJM/n1d4Hdgc6y2+qY5mDaz2PUVjlg9znE9byl+q0uC3DeByqBGReQu5tpLK0TAqTIXScRUV+dg7+bUPpQ==",
"requires": {
"eventemitter3": "^4.0.0",
"follow-redirects": "^1.0.0",
"requires-port": "^1.0.0"
}
},
"http-proxy-agent": { "http-proxy-agent": {
"version": "2.1.0", "version": "2.1.0",
"resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz", "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz",
@ -758,6 +805,23 @@
} }
} }
}, },
"http-server": {
"version": "0.12.1",
"resolved": "https://registry.npmjs.org/http-server/-/http-server-0.12.1.tgz",
"integrity": "sha512-T0jB+7J7GJ2Vo+a4/T7P7SbQ3x2GPDnqRqQXdfEuPuUOmES/9NBxPnDm7dh1HGEeUWqUmLUNtGV63ZC5Uy3tGA==",
"requires": {
"basic-auth": "^1.0.3",
"colors": "^1.3.3",
"corser": "^2.0.1",
"ecstatic": "^3.3.2",
"http-proxy": "^1.17.0",
"opener": "^1.5.1",
"optimist": "~0.6.1",
"portfinder": "^1.0.20",
"secure-compare": "3.0.1",
"union": "~0.5.0"
}
},
"https-proxy-agent": { "https-proxy-agent": {
"version": "3.0.1", "version": "3.0.1",
"resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-3.0.1.tgz", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-3.0.1.tgz",
@ -765,16 +829,6 @@
"requires": { "requires": {
"agent-base": "^4.3.0", "agent-base": "^4.3.0",
"debug": "^3.1.0" "debug": "^3.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"
}
}
} }
}, },
"iconv-lite": { "iconv-lite": {
@ -822,11 +876,6 @@
"binary-extensions": "^2.0.0" "binary-extensions": "^2.0.0"
} }
}, },
"is-buffer": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz",
"integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A=="
},
"is-extglob": { "is-extglob": {
"version": "2.1.1", "version": "2.1.1",
"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
@ -876,9 +925,9 @@
} }
}, },
"lodash": { "lodash": {
"version": "4.17.14", "version": "4.17.15",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.14.tgz", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
"integrity": "sha512-mmKYbW3GLuJeX+iGP+Y7Gp1AiGHGbXHCOh/jZmrawMmsE7MS4znI3RL2FsjbqOyMayHInjOeykW7PEajUk1/xw==" "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A=="
}, },
"lodash.findindex": { "lodash.findindex": {
"version": "4.6.0", "version": "4.6.0",
@ -913,6 +962,11 @@
"yallist": "^3.0.2" "yallist": "^3.0.2"
} }
}, },
"mime": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
"integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="
},
"minimatch": { "minimatch": {
"version": "3.0.4", "version": "3.0.4",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
@ -922,9 +976,9 @@
} }
}, },
"minimist": { "minimist": {
"version": "0.0.8", "version": "1.2.4",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.4.tgz",
"integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" "integrity": "sha512-wTiNDqe4D2rbTJGZk1qcdZgFtY0/r+iuE6GDT7V0/+Gu5MLpIDm4+CssDECR79OJs/OxLPXMzdxy153b5Qy3hg=="
}, },
"mkdirp": { "mkdirp": {
"version": "0.5.1", "version": "0.5.1",
@ -932,6 +986,13 @@
"integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
"requires": { "requires": {
"minimist": "0.0.8" "minimist": "0.0.8"
},
"dependencies": {
"minimist": {
"version": "0.0.8",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
"integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0="
}
} }
}, },
"module-details-from-path": { "module-details-from-path": {
@ -945,9 +1006,9 @@
"integrity": "sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg==" "integrity": "sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg=="
}, },
"moment-timezone": { "moment-timezone": {
"version": "0.5.27", "version": "0.5.28",
"resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.27.tgz", "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.28.tgz",
"integrity": "sha512-EIKQs7h5sAsjhPCqN6ggx6cEbs94GK050254TIJySD1bzoM5JTYDwAU1IoVOeTOL6Gm27kYJ51/uuvq1kIlrbw==", "integrity": "sha512-TDJkZvAyKIVWg5EtVqRzU97w0Rb0YVbfpqyjgu6GwXCAohVRqwZjf4fOzDE6p1Ch98Sro/8hQQi65WDXW5STPw==",
"requires": { "requires": {
"moment": ">= 2.9.0" "moment": ">= 2.9.0"
} }
@ -970,16 +1031,6 @@
"debug": "^3.2.6", "debug": "^3.2.6",
"iconv-lite": "^0.4.4", "iconv-lite": "^0.4.4",
"sax": "^1.2.4" "sax": "^1.2.4"
},
"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"
}
}
} }
}, },
"netmask": { "netmask": {
@ -1016,6 +1067,27 @@
"wrappy": "1" "wrappy": "1"
} }
}, },
"opener": {
"version": "1.5.1",
"resolved": "https://registry.npmjs.org/opener/-/opener-1.5.1.tgz",
"integrity": "sha512-goYSy5c2UXE4Ra1xixabeVh1guIX/ZV/YokJksb6q2lubWu6UbvPQ20p542/sFIll1nl8JnCyK9oBaOcCWXwvA=="
},
"optimist": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz",
"integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=",
"requires": {
"minimist": "~0.0.1",
"wordwrap": "~0.0.2"
},
"dependencies": {
"minimist": {
"version": "0.0.10",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz",
"integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8="
}
}
},
"optionator": { "optionator": {
"version": "0.8.3", "version": "0.8.3",
"resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz",
@ -1042,6 +1114,16 @@
"pac-resolver": "^3.0.0", "pac-resolver": "^3.0.0",
"raw-body": "^2.2.0", "raw-body": "^2.2.0",
"socks-proxy-agent": "^4.0.1" "socks-proxy-agent": "^4.0.1"
},
"dependencies": {
"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"
}
}
} }
}, },
"pac-resolver": { "pac-resolver": {
@ -1072,9 +1154,9 @@
"integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw=="
}, },
"picomatch": { "picomatch": {
"version": "2.1.1", "version": "2.2.1",
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.1.1.tgz", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.1.tgz",
"integrity": "sha512-OYMyqkKzK7blWO/+XZYP6w8hH0LDvkBvdvKukti+7kqYFCiEAk+gI3DWnryapc0Dau05ugGTy0foQ6mqn4AHYA==" "integrity": "sha512-ISBaA8xQNmwELC7eOjqFKMESB2VIqt4PPDD0nsS95b/9dZXvVKOlz9keMSnoGGKcOHXfTvDD6WMaRoSc9UuhRA=="
}, },
"pidusage": { "pidusage": {
"version": "2.0.17", "version": "2.0.17",
@ -1085,13 +1167,14 @@
} }
}, },
"pm2": { "pm2": {
"version": "4.2.0", "version": "4.2.3",
"resolved": "https://registry.npmjs.org/pm2/-/pm2-4.2.0.tgz", "resolved": "https://registry.npmjs.org/pm2/-/pm2-4.2.3.tgz",
"integrity": "sha512-toj4yv5zd1Nf5K7GFoL/bPEZvEJFgXSoHsmgp4axjCf+TEhsrBRjgMPsSSLtVcDeDNApOtZmJAY5TuH5sA1eOA==", "integrity": "sha512-aRTl8W6dmZ4S2hti1dX4Xvkpy/yIME1H5pMK0HEOpw1H33j4IAfdzScPoPLYaHeh1oL4biabGwxuyClOM8YUVQ==",
"requires": { "requires": {
"@pm2/agent": "^0.5.26", "@pm2/agent": "^0.5.26",
"@pm2/io": "^4.3.2", "@pm2/io": "^4.3.2",
"@pm2/js-api": "^0.5.60", "@pm2/js-api": "^0.5.60",
"@pm2/pm2-version-check": "^1.0.3",
"async": "^3.1.0", "async": "^3.1.0",
"blessed": "0.1.81", "blessed": "0.1.81",
"chalk": "2.4.2", "chalk": "2.4.2",
@ -1122,6 +1205,26 @@
"systeminformation": "^4.14.16", "systeminformation": "^4.14.16",
"vizion": "~2.0.2", "vizion": "~2.0.2",
"yamljs": "0.3.0" "yamljs": "0.3.0"
},
"dependencies": {
"async": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz",
"integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw=="
},
"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"
}
},
"lodash": {
"version": "4.17.14",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.14.tgz",
"integrity": "sha512-mmKYbW3GLuJeX+iGP+Y7Gp1AiGHGbXHCOh/jZmrawMmsE7MS4znI3RL2FsjbqOyMayHInjOeykW7PEajUk1/xw=="
}
} }
}, },
"pm2-axon": { "pm2-axon": {
@ -1133,16 +1236,6 @@
"amp-message": "~0.1.1", "amp-message": "~0.1.1",
"debug": "^3.0", "debug": "^3.0",
"escape-regexp": "0.0.1" "escape-regexp": "0.0.1"
},
"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"
}
}
} }
}, },
"pm2-axon-rpc": { "pm2-axon-rpc": {
@ -1151,16 +1244,6 @@
"integrity": "sha512-hT8gN3/j05895QLXpwg+Ws8PjO4AVID6Uf9StWpud9HB2homjc1KKCcI0vg9BNOt56FmrqKDT1NQgheIz35+sA==", "integrity": "sha512-hT8gN3/j05895QLXpwg+Ws8PjO4AVID6Uf9StWpud9HB2homjc1KKCcI0vg9BNOt56FmrqKDT1NQgheIz35+sA==",
"requires": { "requires": {
"debug": "^3.0" "debug": "^3.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"
}
}
} }
}, },
"pm2-deploy": { "pm2-deploy": {
@ -1170,16 +1253,6 @@
"requires": { "requires": {
"async": "^2.6", "async": "^2.6",
"tv4": "^1.3" "tv4": "^1.3"
},
"dependencies": {
"async": {
"version": "2.6.3",
"resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz",
"integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==",
"requires": {
"lodash": "^4.17.14"
}
}
} }
}, },
"pm2-multimeter": { "pm2-multimeter": {
@ -1190,6 +1263,16 @@
"charm": "~0.1.1" "charm": "~0.1.1"
} }
}, },
"portfinder": {
"version": "1.0.25",
"resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.25.tgz",
"integrity": "sha512-6ElJnHBbxVA1XSLgBp7G1FiCkQdlqGzuF7DswL5tcea+E8UpuvPU7beVAjjRwCioTS9ZluNbu+ZyRvgTsmqEBg==",
"requires": {
"async": "^2.6.2",
"debug": "^3.1.1",
"mkdirp": "^0.5.1"
}
},
"prelude-ls": { "prelude-ls": {
"version": "1.1.2", "version": "1.1.2",
"resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
@ -1221,18 +1304,33 @@
"pac-proxy-agent": "^3.0.1", "pac-proxy-agent": "^3.0.1",
"proxy-from-env": "^1.0.0", "proxy-from-env": "^1.0.0",
"socks-proxy-agent": "^4.0.1" "socks-proxy-agent": "^4.0.1"
},
"dependencies": {
"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"
}
}
} }
}, },
"proxy-from-env": { "proxy-from-env": {
"version": "1.0.0", "version": "1.1.0",
"resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
"integrity": "sha1-M8UDmPcOp+uW0h97gXYwpVeRx+4=" "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
}, },
"ps-list": { "ps-list": {
"version": "6.3.0", "version": "6.3.0",
"resolved": "https://registry.npmjs.org/ps-list/-/ps-list-6.3.0.tgz", "resolved": "https://registry.npmjs.org/ps-list/-/ps-list-6.3.0.tgz",
"integrity": "sha512-qau0czUSB0fzSlBOQt0bo+I2v6R+xiQdj78e1BR/Qjfl5OHWJ/urXi8+ilw1eHe+5hSeDI1wrwVTgDp2wst4oA==" "integrity": "sha512-qau0czUSB0fzSlBOQt0bo+I2v6R+xiQdj78e1BR/Qjfl5OHWJ/urXi8+ilw1eHe+5hSeDI1wrwVTgDp2wst4oA=="
}, },
"qs": {
"version": "6.9.1",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.9.1.tgz",
"integrity": "sha512-Cxm7/SS/y/Z3MHWSxXb8lIFqgqBowP5JMlTUFyJN88y0SGQhVmZnqFK/PeuMX9LzUyWsqqhNxIyg0jlzq946yA=="
},
"raw-body": { "raw-body": {
"version": "2.4.1", "version": "2.4.1",
"resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.1.tgz", "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.1.tgz",
@ -1253,9 +1351,9 @@
} }
}, },
"readable-stream": { "readable-stream": {
"version": "2.3.6", "version": "2.3.7",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
"integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
"requires": { "requires": {
"core-util-is": "~1.0.0", "core-util-is": "~1.0.0",
"inherits": "~2.0.3", "inherits": "~2.0.3",
@ -1282,11 +1380,11 @@
} }
}, },
"readdirp": { "readdirp": {
"version": "3.2.0", "version": "3.3.0",
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.2.0.tgz", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.3.0.tgz",
"integrity": "sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ==", "integrity": "sha512-zz0pAkSPOXXm1viEwygWIPSPkcBYjW1xU5j/JBh5t9bGCJwa6f9+BJa6VaB2g+b55yVrmXzqkyLf4xaWYM0IkQ==",
"requires": { "requires": {
"picomatch": "^2.0.4" "picomatch": "^2.0.7"
} }
}, },
"rechoir": { "rechoir": {
@ -1298,19 +1396,34 @@
} }
}, },
"require-in-the-middle": { "require-in-the-middle": {
"version": "5.0.2", "version": "5.0.3",
"resolved": "https://registry.npmjs.org/require-in-the-middle/-/require-in-the-middle-5.0.2.tgz", "resolved": "https://registry.npmjs.org/require-in-the-middle/-/require-in-the-middle-5.0.3.tgz",
"integrity": "sha512-l2r6F9i6t5xp4OE9cw/daB/ooQKHZOOW1AYPADhEvk/Tj/THJDS8gePp76Zyuht6Cj57a0KL+eHK5Dyv7wZnKA==", "integrity": "sha512-p/ICV8uMlqC4tjOYabLMxAWCIKa0YUQgZZ6KDM0xgXJNgdGQ1WmL2A07TwmrZw+wi6ITUFKzH5v3n+ENEyXVkA==",
"requires": { "requires": {
"debug": "^4.1.1", "debug": "^4.1.1",
"module-details-from-path": "^1.0.3", "module-details-from-path": "^1.0.3",
"resolve": "^1.12.0" "resolve": "^1.12.0"
},
"dependencies": {
"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"
}
}
} }
}, },
"requires-port": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
"integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8="
},
"resolve": { "resolve": {
"version": "1.13.1", "version": "1.15.1",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.13.1.tgz", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz",
"integrity": "sha512-CxqObCX8K8YtAhOBRg+lrcdn+LK+WYOS8tSjqSFbjtrI5PnS63QPhZl4+yKfrU9tdsbMu9Anr/amegT87M9Z6w==", "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==",
"requires": { "requires": {
"path-parse": "^1.0.6" "path-parse": "^1.0.6"
} }
@ -1330,6 +1443,11 @@
"resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
"integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw=="
}, },
"secure-compare": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/secure-compare/-/secure-compare-3.0.1.tgz",
"integrity": "sha1-8aAymzCLIh+uN7mXTz1XjQypmeM="
},
"semver": { "semver": {
"version": "5.7.1", "version": "5.7.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
@ -1439,9 +1557,9 @@
} }
}, },
"systeminformation": { "systeminformation": {
"version": "4.16.0", "version": "4.23.1",
"resolved": "https://registry.npmjs.org/systeminformation/-/systeminformation-4.16.0.tgz", "resolved": "https://registry.npmjs.org/systeminformation/-/systeminformation-4.23.1.tgz",
"integrity": "sha512-1FjxPJSw7ad0zug+1YIQATj6Cn+wM5OBASEpjohEeOD2EGPIf0Cnhthd1L2O1YX+wKgOMuPldGfxYdo8yNHEIg==", "integrity": "sha512-gtqfvz5jUIMqWn0kkdkV4G8uiLmJckQ+z6aKy1uyE0OPU/6tStubahtZDiF0ajSRVJht+Vd4pX5DDwQLhAapww==",
"optional": true "optional": true
}, },
"thunkify": { "thunkify": {
@ -1485,20 +1603,33 @@
"resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz",
"integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==" "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og=="
}, },
"union": {
"version": "0.5.0",
"resolved": "https://registry.npmjs.org/union/-/union-0.5.0.tgz",
"integrity": "sha512-N6uOhuW6zO95P3Mel2I2zMsbsanvvtgn6jVqJv4vbVcz/JN0OkL9suomjQGmWtxJQXOCqUJvquc1sMeNz/IwlA==",
"requires": {
"qs": "^6.4.0"
}
},
"unpipe": { "unpipe": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
"integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
}, },
"url-join": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/url-join/-/url-join-2.0.5.tgz",
"integrity": "sha1-WvIvGMBSoACkjXuCxenC4v7tpyg="
},
"util-deprecate": { "util-deprecate": {
"version": "1.0.2", "version": "1.0.2",
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
"integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
}, },
"uuid": { "uuid": {
"version": "3.3.3", "version": "3.4.0",
"resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
"integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==" "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A=="
}, },
"vizion": { "vizion": {
"version": "2.0.2", "version": "2.0.2",
@ -1530,6 +1661,11 @@
"resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
"integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==" "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ=="
}, },
"wordwrap": {
"version": "0.0.3",
"resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz",
"integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc="
},
"wrappy": { "wrappy": {
"version": "1.0.2", "version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",

View File

@ -1,6 +1,6 @@
{ {
"name": "hack.chat-v2", "name": "hack.chat-v2",
"version": "2.1.91", "version": "2.1.93",
"description": "a minimal distraction free chat application", "description": "a minimal distraction free chat application",
"main": "index.js", "main": "index.js",
"repository": { "repository": {
@ -12,13 +12,19 @@
"npm": ">= 6.7.0" "npm": ">= 6.7.0"
}, },
"scripts": { "scripts": {
"start": "pm2 start ./server/main.js --node-args=\"-r esm\" --name hackchat-dev-server && cd ./clientSource && npm start && pm2 stop hackchat-dev-server", "start": "pm2 startOrReload pm2.config.js",
"postinstall": "cd ./clientSource && npm install && cd .. & cd ./server && npm install && npm run config" "stop": "pm2 stop pm2.config.js && pm2 delete pm2.config.js",
"logs": "pm2 logs",
"clear": "pm2 flush",
"status": "pm2 list",
"refresh": "pm2 flush && pm2 stop pm2.config.js && pm2 delete pm2.config.js",
"postinstall": "cd ./server && npm install && npm run config"
}, },
"author": "Marzavec", "author": "Marzavec",
"license": "WTFPL", "license": "WTFPL",
"dependencies": { "dependencies": {
"esm": "^3.2.25", "esm": "^3.2.25",
"pm2": "^4.2.0" "http-server": "^0.12.1",
"pm2": "^4.2.3"
} }
} }

33
pm2.config.js Normal file
View File

@ -0,0 +1,33 @@
module.exports = {
apps : [{
name : 'hackchat-websocket',
node_args : '-r esm',
script : './server/main.js',
instances: 1,
autorestart: true,
max_memory_restart: '2G',
exec_mode: 'fork',
watch : false,
env: {
NODE_ENV: 'development'
},
env_production: {
NODE_ENV: 'production'
}
}, {
name: 'hackchat-httpd',
script: './node_modules/http-server/bin/http-server',
args: './client -p 3000 -o',
instances: 1,
autorestart: true,
watch: false,
max_memory_restart: '2G',
exec_mode: 'fork',
env: {
NODE_ENV: 'development'
},
env_production: {
NODE_ENV: 'production'
}
}]
};

View File

@ -10,24 +10,24 @@
"integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==" "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ=="
}, },
"ansi-styles": { "ansi-styles": {
"version": "4.2.0", "version": "4.2.1",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.0.tgz", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz",
"integrity": "sha512-7kFQgnEaMdRtwf6uSfUnVr9gSGC7faurn+J/Mv90/W+iTtN0405/nLdopfMWwchyxhbGYl6TC4Sccn9TUkGAgg==", "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==",
"requires": { "requires": {
"@types/color-name": "^1.1.1", "@types/color-name": "^1.1.1",
"color-convert": "^2.0.1" "color-convert": "^2.0.1"
} }
}, },
"ascii-captcha": {
"version": "0.0.3",
"resolved": "https://registry.npmjs.org/ascii-captcha/-/ascii-captcha-0.0.3.tgz",
"integrity": "sha1-NAtO1oVYOHEHsJVzBC/kc4v0mPk="
},
"async": { "async": {
"version": "0.9.2", "version": "0.9.2",
"resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz",
"integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=" "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0="
}, },
"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=="
},
"balanced-match": { "balanced-match": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
@ -95,13 +95,12 @@
"integrity": "sha1-hLdFiW80xoTpjyzg5Cq69Du6AX0=" "integrity": "sha1-hLdFiW80xoTpjyzg5Cq69Du6AX0="
}, },
"didyoumean2": { "didyoumean2": {
"version": "3.1.2", "version": "4.0.0",
"resolved": "https://registry.npmjs.org/didyoumean2/-/didyoumean2-3.1.2.tgz", "resolved": "https://registry.npmjs.org/didyoumean2/-/didyoumean2-4.0.0.tgz",
"integrity": "sha512-5j2ZwqqXoNIUxgNWcwsqOXECB+2br7pXCBf7E3bymh9pHINvcL8knXkP67iMK/CNGZk/tf40ixCfjFV4osdFBA==", "integrity": "sha512-7+OMIHqPDJ4uxeExQx8cSk26oD3KUloAQzi2R+3rmTU4IHvSDDmWZTQ6bmC4+MTw61DkYoh5ARxwS9MRoz0t2A==",
"requires": { "requires": {
"leven": "^3.1.0", "leven": "^3.1.0",
"lodash.deburr": "^4.1.0", "lodash.deburr": "^4.1.0"
"ramda": "^0.26.1"
} }
}, },
"esm": { "esm": {
@ -256,11 +255,6 @@
"winston": "2.1.x" "winston": "2.1.x"
} }
}, },
"ramda": {
"version": "0.26.1",
"resolved": "https://registry.npmjs.org/ramda/-/ramda-0.26.1.tgz",
"integrity": "sha512-hLWjpy7EnsDBb0p+Z3B7rPi3GDeRG5ZtiI33kJhTt+ORCd38AbAIjB/9zRIUoeTbE/AVX5ZkU7m6bznsvrf8eQ=="
},
"read": { "read": {
"version": "1.0.7", "version": "1.0.7",
"resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz",
@ -355,12 +349,9 @@
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
}, },
"ws": { "ws": {
"version": "7.2.0", "version": "7.2.3",
"resolved": "https://registry.npmjs.org/ws/-/ws-7.2.0.tgz", "resolved": "https://registry.npmjs.org/ws/-/ws-7.2.3.tgz",
"integrity": "sha512-+SqNqFbwTm/0DC18KYzIsMTnEWpLwJsiasW/O17la4iDRRIO9uaHbvKiAS3AHgTiuuWerK/brj4O6MYZkei9xg==", "integrity": "sha512-HTDl9G9hbkNDk98naoR/cHDws7+EyYMOdL1BmjsZXRUjf7d+MficC4B7HLUPlSiho0vg+CWKrGIt/VJBd1xunQ=="
"requires": {
"async-limiter": "^1.0.0"
}
} }
} }
} }

View File

@ -1,6 +1,6 @@
{ {
"name": "hack.chat-v2", "name": "hack.chat-v2",
"version": "2.1.9", "version": "2.1.93",
"description": "a minimal distraction free chat application", "description": "a minimal distraction free chat application",
"main": "main.js", "main": "main.js",
"repository": { "repository": {
@ -21,11 +21,11 @@
"chalk": "^3.0.0", "chalk": "^3.0.0",
"common-tags": "^1.8.0", "common-tags": "^1.8.0",
"dateformat": "^3.0.3", "dateformat": "^3.0.3",
"didyoumean2": "^3.1.2", "didyoumean2": "^4.0.0",
"esm": "^3.2.25", "esm": "^3.2.25",
"fs-extra": "^8.1.0", "fs-extra": "^8.1.0",
"prompt": "^1.0.0", "prompt": "^1.0.0",
"readdir-recursive": "0.0.4", "readdir-recursive": "0.0.4",
"ws": "^7.2.0" "ws": "^7.2.3"
} }
} }

View File

@ -31,7 +31,7 @@ export async function run(core, server, socket, data) {
} }
// send results to moderators (which the user using this command is higher than) // send results to moderators (which the user using this command is higher than)
server.reply({ server.broadcast({
cmd: 'info', cmd: 'info',
text: loadResult, text: loadResult,
}, { level: UAC.isModerator }); }, { level: UAC.isModerator });

View File

@ -20,7 +20,7 @@ export async function run(core, server, socket) {
} }
// return success message to moderators and admins // return success message to moderators and admins
server.reply({ server.broadcast({
cmd: 'info', cmd: 'info',
text: 'Config saved!', text: 'Config saved!',
}, { level: UAC.isModerator }); }, { level: UAC.isModerator });

View File

@ -22,7 +22,7 @@ const parseText = (text) => {
// module main // module main
export async function run(core, server, socket, payload) { export async function run(core, server, socket, payload) {
// check user input // check user input
const text = parseText(payload.text); let text = parseText(payload.text);
if (!text) { if (!text) {
// lets not send objects or empty text, yea? // lets not send objects or empty text, yea?
@ -38,11 +38,15 @@ export async function run(core, server, socket, payload) {
}, socket); }, socket);
} }
if (!text.startsWith("'")) {
text = ` ${text}`;
}
const newPayload = { const newPayload = {
cmd: 'info', cmd: 'info',
type: 'emote', type: 'emote',
nick: socket.nick, nick: socket.nick,
text: `@${socket.nick} ${text}`, text: `@${socket.nick}${text}`,
}; };
if (socket.trip) { if (socket.trip) {
newPayload.trip = socket.trip; newPayload.trip = socket.trip;

View File

@ -18,7 +18,7 @@ const hash = (password) => {
export function parseNickname(core, data) { export function parseNickname(core, data) {
const userInfo = { const userInfo = {
nick: '', nick: '',
uType: 'user', uType: 'user', /* @legacy */
trip: null, trip: null,
level: UAC.levels.default, level: UAC.levels.default,
}; };
@ -41,7 +41,7 @@ export function parseNickname(core, data) {
} }
if (hash(password + core.config.tripSalt) === core.config.adminTrip) { if (hash(password + core.config.tripSalt) === core.config.adminTrip) {
userInfo.uType = 'admin'; userInfo.uType = 'admin'; /* @legacy */
userInfo.trip = 'Admin'; userInfo.trip = 'Admin';
userInfo.level = UAC.levels.admin; userInfo.level = UAC.levels.admin;
} else if (userInfo.nick.toLowerCase() === core.config.adminName.toLowerCase()) { } else if (userInfo.nick.toLowerCase() === core.config.adminName.toLowerCase()) {
@ -55,7 +55,7 @@ export function parseNickname(core, data) {
// for (const mod of core.config.mods) { // for (const mod of core.config.mods) {
core.config.mods.forEach((mod) => { core.config.mods.forEach((mod) => {
if (userInfo.trip === mod.trip) { if (userInfo.trip === mod.trip) {
userInfo.uType = 'mod'; userInfo.uType = 'mod'; /* @legacy */
userInfo.level = UAC.levels.moderator; userInfo.level = UAC.levels.moderator;
} }
}); });
@ -111,40 +111,73 @@ export async function run(core, server, socket, data) {
}, socket); }, socket);
} }
userInfo.userHash = server.getSocketHash(socket); userInfo.hash = server.getSocketHash(socket);
// assign "unique" socket ID
if (typeof socket.userid === 'undefined') {
userInfo.userid = Math.floor(Math.random() * 9999999999999);
}
// TODO: place this within it's own function allowing import
// prepare to notify channel peers // prepare to notify channel peers
const newPeerList = server.findSockets({ channel: data.channel }); const newPeerList = server.findSockets({ channel: data.channel });
const nicks = []; const nicks = []; /* @legacy */
const users = [];
const joinAnnouncement = { const joinAnnouncement = {
cmd: 'onlineAdd', cmd: 'onlineAdd',
nick: userInfo.nick, nick: userInfo.nick,
trip: userInfo.trip || 'null', trip: userInfo.trip || 'null',
hash: userInfo.userHash, utype: userInfo.uType, /* @legacy */
hash: userInfo.hash,
level: userInfo.level, level: userInfo.level,
userid: userInfo.userid,
channel: data.channel,
}; };
// send join announcement and prep online set // send join announcement and prep online set
for (let i = 0, l = newPeerList.length; i < l; i += 1) { for (let i = 0, l = newPeerList.length; i < l; i += 1) {
server.reply(joinAnnouncement, newPeerList[i]); server.reply(joinAnnouncement, newPeerList[i]);
nicks.push(newPeerList[i].nick); nicks.push(newPeerList[i].nick); /* @legacy */
users.push({
nick: newPeerList[i].nick,
trip: newPeerList[i].trip,
utype: newPeerList[i].uType, /* @legacy */
hash: newPeerList[i].userHash,
level: newPeerList[i].level,
userid: newPeerList[i].userid,
channel: data.channel,
isme: false,
});
} }
// store user info // store user info
socket.uType = userInfo.uType; socket.uType = userInfo.uType; /* @legacy */
socket.nick = userInfo.nick; socket.nick = userInfo.nick;
socket.channel = data.channel; socket.trip = userInfo.trip;
socket.hash = userInfo.userHash; socket.channel = data.channel; /* @legacy */
socket.hash = userInfo.hash;
socket.level = userInfo.level; socket.level = userInfo.level;
if (userInfo.trip !== null) socket.trip = userInfo.trip; socket.userid = userInfo.userid;
nicks.push(socket.nick); nicks.push(socket.nick); /* @legacy */
users.push({
nick: socket.nick,
trip: socket.trip,
utype: socket.uType,
hash: socket.userHash,
level: socket.level,
userid: socket.userid,
channel: data.channel,
isme: true,
});
// reply with channel peer list // reply with channel peer list
server.reply({ server.reply({
cmd: 'onlineSet', cmd: 'onlineSet',
nicks, nicks, /* @legacy */
users,
}, socket); }, socket);
// stats are fun // stats are fun

View File

@ -17,6 +17,13 @@ export async function run(core, server, socket, data) {
return true; return true;
} }
if (data.channel === '') {
return server.reply({
cmd: 'warn',
text: 'Cannot move to an empty channel.',
}, socket);
}
if (data.channel === socket.channel) { if (data.channel === socket.channel) {
// they are trying to rejoin the channel // they are trying to rejoin the channel
return true; return true;
@ -53,6 +60,7 @@ export async function run(core, server, socket, data) {
} }
} }
// TODO: import function from join module
// broadcast join notice to new peers // broadcast join notice to new peers
const newPeerList = server.findSockets({ channel: data.channel }); const newPeerList = server.findSockets({ channel: data.channel });
const moveAnnouncement = { const moveAnnouncement = {
@ -82,10 +90,45 @@ export async function run(core, server, socket, data) {
return true; return true;
} }
// module hook functions
export function initHooks(server) {
server.registerHook('in', 'chat', this.moveCheck.bind(this), 29);
}
export function moveCheck(core, server, socket, payload) {
if (typeof payload.text !== 'string') {
return false;
}
if (payload.text.startsWith('/move ')) {
const input = payload.text.split(' ');
// If there is no channel target parameter
if (input[1] === undefined) {
server.reply({
cmd: 'warn',
text: 'Refer to `/help move` for instructions on how to use this command.',
}, socket);
return false;
}
this.run(core, server, socket, {
cmd: 'move',
channel: input[1],
});
return false;
}
return payload;
}
export const requiredData = ['channel']; export const requiredData = ['channel'];
export const info = { export const info = {
name: 'move', name: 'move',
description: 'This will change your current channel to the new one provided', description: 'This will change your current channel to the new one provided',
usage: ` usage: `
API: { cmd: 'move', channel: '<target channel>' }`, API: { cmd: 'move', channel: '<target channel>' }
Text: /move <new channel>`,
}; };

View File

@ -3,9 +3,7 @@
*/ */
// module main // module main
export async function run() { export async function run() { }
}
export const info = { export const info = {
name: 'ping', name: 'ping',

View File

@ -0,0 +1,13 @@
/*
Description: Create a new socket session or restore previous session
*/
// module main
export async function run() { }
export const info = {
name: 'session',
description: 'Restore previous state by session id or return new session id (currently unavailable)',
usage: `
API: { cmd: 'session', id: '<previous session>' }`
};

View File

@ -88,7 +88,7 @@ export function whisperCheck(core, server, socket, payload) {
return false; return false;
} }
if (payload.text.startsWith('/whisper')) { if (payload.text.startsWith('/whisper') || payload.text.startsWith('/w ')) {
const input = payload.text.split(' '); const input = payload.text.split(' ');
// If there is no nickname target parameter // If there is no nickname target parameter
@ -147,5 +147,6 @@ export const info = {
usage: ` usage: `
API: { cmd: 'whisper', nick: '<target name>', text: '<text to whisper>' } API: { cmd: 'whisper', nick: '<target name>', text: '<text to whisper>' }
Text: /whisper <target name> <text to whisper> Text: /whisper <target name> <text to whisper>
Text: /w <target name> <text to whisper>
Alt Text: /r <text to whisper, this will auto reply to the last person who whispered to you>`, Alt Text: /r <text to whisper, this will auto reply to the last person who whispered to you>`,
}; };

View File

@ -66,9 +66,9 @@ export async function run(core, server, socket, data) {
// module hook functions // module hook functions
export function initHooks(server) { export function initHooks(server) {
server.registerHook('in', 'chat', this.chatCheck.bind(this), 25); server.registerHook('in', 'chat', this.chatCheck.bind(this), 10);
server.registerHook('in', 'invite', this.inviteCheck.bind(this), 25); server.registerHook('in', 'invite', this.inviteCheck.bind(this), 10);
// TODO: add whisper hook, need hook priorities todo finished first server.registerHook('in', 'whisper', this.whisperCheck.bind(this), 10);
} }
// hook incoming chat commands, shadow-prevent chat if they are muzzled // hook incoming chat commands, shadow-prevent chat if they are muzzled
@ -140,6 +140,34 @@ export function inviteCheck(core, server, socket, payload) {
return payload; return payload;
} }
// shadow-prevent all whispers from muzzled users
export function whisperCheck(core, server, socket, payload) {
if (typeof payload.nick !== 'string') {
return false;
}
if (typeof payload.text !== 'string') {
return false;
}
if (core.muzzledHashes[socket.hash]) {
const targetNick = payload.nick;
server.reply({
cmd: 'info',
type: 'whisper',
text: `You whispered to @${targetNick}: ${payload.text}`,
}, socket);
// blanket "spam" protection, may expose the ratelimiting lines from `chat` and use that, TODO: one day #lazydev
server.police.frisk(socket.address, 9);
return false;
}
return payload;
}
export const requiredData = ['nick']; export const requiredData = ['nick'];
export const info = { export const info = {
name: 'dumb', name: 'dumb',

View File

@ -68,6 +68,7 @@ export async function run(core, server, socket, data) {
} }
} }
// TODO: import from join module
const newPeerList = server.findSockets({ channel: data.channel }); const newPeerList = server.findSockets({ channel: data.channel });
const moveAnnouncement = { const moveAnnouncement = {
cmd: 'onlineAdd', cmd: 'onlineAdd',

View File

@ -27,6 +27,24 @@ export async function run(core, server, socket, data) {
}, socket); }, socket);
} }
if (typeof data.ip === 'string') {
if (data.ip === '*') {
core.muzzledHashes = {};
return server.broadcast({
cmd: 'info',
text: `${socket.nick} unmuzzled all users`,
}, { level: UAC.isModerator });
}
} else if (data.hash === '*') {
core.muzzledHashes = {};
return server.broadcast({
cmd: 'info',
text: `${socket.nick} unmuzzled all users`,
}, { level: UAC.isModerator });
}
// find target & remove mute status // find target & remove mute status
let target; let target;
if (typeof data.ip === 'string') { if (typeof data.ip === 'string') {

View File

@ -20,8 +20,8 @@ export async function run(core, server, socket, data) {
} }
// find target // find target
let mode; let let mode;
target; let target;
if (typeof data.ip === 'string') { if (typeof data.ip === 'string') {
mode = 'ip'; mode = 'ip';
target = data.ip; target = data.ip;

View File

@ -14,6 +14,8 @@ export async function run(core, server, socket) {
// remove arrest records // remove arrest records
server.police.clear(); server.police.clear();
core.stats.set('users-banned', 0);
console.log(`${socket.nick} [${socket.trip}] unbanned all`); console.log(`${socket.nick} [${socket.trip}] unbanned all`);
// reply with success // reply with success