├── .gitignore ├── .gitpod.yml ├── CONTRIBUTING.md ├── README.md ├── index.js ├── non-commercial-license.pdf ├── package-lock.json ├── package.json ├── resources ├── GitPodOpenBrowserIcon.png ├── GitPodPortIcon.png ├── NOVA_Case.jpeg ├── NOVA_Case_Without.jpeg ├── NOVA_SketchUp_Case.gif ├── NOVA_SketchUp_Case.skp ├── Wiki │ ├── Architecture.jpeg │ ├── Architecture.pptx │ ├── Chat.jpg │ ├── ChatBotSkill.png │ ├── ClientDashboard.jpg │ ├── GitHubScreenshot.jpg │ ├── Icons │ │ ├── file.png │ │ └── folder.png │ ├── InstallSkill.jpg │ ├── NOVAIcon.jpg │ ├── ServerDashboard.jpg │ ├── Settings.jpg │ ├── Skills.jpg │ ├── nova-wallpaper.png │ └── screenshots.jpg ├── gitLogo.png ├── github-logo.svg ├── join-us-discord.png ├── nodeJSLogo.png ├── not-done-yet.jpg ├── npmLogo.png └── screenshot.jpg ├── settings.json └── src └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | .idea/ 3 | !.src/README.md 4 | sqlite.db 5 | /settings.json 6 | /src/*/ 7 | /src/server/ 8 | /src/client/ 9 | src/.DS_Store 10 | settings.json 11 | -------------------------------------------------------------------------------- /.gitpod.yml: -------------------------------------------------------------------------------- 1 | # This configuration file was automatically generated by Gitpod. 2 | # Please adjust to your needs (see https://www.gitpod.io/docs/config-gitpod-file) 3 | # and commit this file to your remote git repository to share the goodness with others. 4 | 5 | tasks: 6 | - init: | 7 | npm install 8 | node index.js demo 9 | 10 | ports: 11 | - name: Server 12 | description: No description 13 | port: 8080 14 | onOpen: ignore 15 | - name: Client 16 | description: No description 17 | port: 8083 18 | onOpen: ignore 19 | - name: Server Socket 20 | description: Socket link between the server and the web clients. 21 | port: 8081 22 | onOpen: ignore 23 | - name: Launcher Socket 24 | description: Socket link between the launcher and the server / clients. 25 | port: 8082 26 | onOpen: ignore 27 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing to NOVA 2 | 3 | Your contributions to this project are very welcome. If you want to fix a bug or propose a new feature, you can open a new Pull Request but first make sure it follows these general rules: 4 | 5 | 1. Sign this [Contributor License Agreement](https://docs.google.com/forms/d/1mpFCNEiiMCYqzTPbPb9vP8nZT_w-OiYlF28NRKWIi28/prefill) to allow us to publish your changes to the code. 6 | 2. Make your changes on a separate branch. This will speed up the merging process. 7 | 3. Always make the target of your pull request the `develop` branch, not `master`. 8 | 4. Add a thorough description of all the changes. 9 | 10 | Thank you for your commitment! 11 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |
2 | 3 | NOVA 4 | 5 | **NOVA** is a customizable personal assistant made with Node.js.
6 |
7 | 8 | ```diff 9 | ! This project has performance problems ! 10 | ! It's working well on a computer, but badly on a Raspberry ! 11 | ! I suspect that using a chromium-based browser is the cause ! 12 | ! i'm working on a similar project in Python, it's seems to be more efficient ! 13 | ``` 14 | 15 | [NOVA's GitHub project in python](https://github.com/HeyHeyChicken/Nova-python)


16 | [![Discord](https://img.shields.io/discord/704685696513736765?label=Discord&style=flat&logo=discord)](https://discord.gg/pkWbhDn) 17 | [![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2FHeyHeyChicken%2FNOVA.svg?type=shield)](https://app.fossa.io/projects/git%2Bgithub.com%2FHeyHeyChicken%2FNOVA?ref=badge_shield) 18 | 19 |
20 |
21 | 22 | 23 | 24 |
25 | 26 |
27 | 28 | ## 👋 Introduction 29 | 30 | **NOVA** is an open-source personal assistant that you can host on your server.
31 | You can communicate with it orally or in writing, most of his skills are designed to work offline to protect your privacy. 32 | 33 | ## ☁️ Try with a Single-Click 34 | 35 | Gitpod will automatically setup an environment and run an instance for you. 36 | 37 | [![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/HeyHeyChicken/NOVA) 38 | 39 | ❗ The server and client pages will not open automatically, click the " Remote Explorer " button (on the left side panel), then the " Open Browser " button for ports "8080" and "8083". 40 | 41 | ## 🔧 Prerequisites 42 | 43 | [ Node.js](https://nodejs.org/)
44 | [ npm](https://npmjs.com/)
45 | [ Git](https://git-scm.com/)
46 | 47 | ## ⬇️ Installation 48 | 49 | 1. Clone it directly from GitHub. 50 | 51 | ``` 52 | git clone https://github.com/HeyHeyChicken/NOVA.git 53 | ``` 54 | 55 | 2. Install packages 56 | 57 | ``` 58 | cd NOVA 59 | ``` 60 | 61 | ``` 62 | npm install 63 | ``` 64 | 65 | ## 🚀 Usage 66 | 67 | 1. Launch this command. 68 | 69 | ``` 70 | node index.js 71 | ``` 72 | 73 | 2. If you start the launcher for the first time, it will ask you if you want to launch a client or/and a server.
74 | If you need to change it in the future, you'll have to edit the "/settings.json". 75 | 76 | If you want more detailed explanations, you will find them on the [Wiki](//github.com/HeyHeyChicken/NOVA/wiki). 77 | 78 | ## 💼 Features 79 | 80 | When you install NOVA, no features are installed. You need to add them.
81 | 82 | 1. Go to your NOVA's server UI (the default URL is "http://localhost:8080/") 83 | 2. Go to the "Skills" tab. 84 | 3. Find skills you want, open the modal and click on the "Install" button.
85 | The server and clients will restarts, and the skill will be installed. 86 | 87 | ## 🫵 Support and contribution 88 | 89 | I provide support for all users through [GitHub issues](//github.com/HeyHeyChicken/NOVA/issues). 90 | 91 | If you would like to contribute to this project, make sure you first read the [guide for contributors](//github.com/HeyHeyChicken/NOVA/blob/master/CONTRIBUTING.md). 92 | 93 | ## ⭐ Stars 94 | 95 | Thank you to everyone who has and who will starred this project. 96 | [![Stargazers repo roster for @HeyHeyChicken/NOVA](https://reporoster.com/stars/HeyHeyChicken/NOVA)](https://github.com/HeyHeyChicken/NOVA/stargazers) 97 | 98 | ## 💻 Compatibility 99 | 100 | NOVA has only been officially tested on Mac, Linux and Raspberry Pi 4. 101 | 102 | ## 📦 A great case 103 | 104 | Hey, I made a case for my NOVA hosted in a Raspberry PI 4.
105 | You can find the SketchUp plan in NOVA/resources/NOVA_SketchUp_Case.skp.

106 | 107 | 108 | 109 | 110 |
111 |
112 | 113 | Created by [Antoine Duval (HeyHeyChicken)](//antoine.cuffel.fr) with ❤ and ☕ (chocolate) in [Mesnil-Panneville](//en.wikipedia.org/wiki/Mesnil-Panneville). 114 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | LIBRARIES = { 2 | FS: require("fs"), // This library allows you to interact with local files on the machine. 3 | Colors: require("colors"), // This library allows you to colorize the console outputs. 4 | ChildProcess: require("child_process"), // This library allows you to execute terminal code on the local station. 5 | ReadLine: require("readline"), // This library allows you to query the user in the terminal. 6 | SocketIO: require("socket.io"), // This library allows you to design a socket server. 7 | Path: require("path") // This library allows you to create paths without having to worry about the computer OS. 8 | }; 9 | 10 | class Launcher { 11 | Demo_mode = false; 12 | 13 | constructor() { 14 | const SELF = this; 15 | 16 | if(process.argv[2] != undefined){ 17 | if(process.argv[2] == "demo"){ 18 | SELF.Demo_mode = true; 19 | } 20 | } 21 | 22 | SELF.GitClientURL = "https://github.com/HeyHeyChicken/NOVA-Client.git"; 23 | SELF.GitServerURL = "https://github.com/HeyHeyChicken/NOVA-Server.git"; 24 | 25 | SELF.ClientPath = LIBRARIES.Path.join(__dirname, "/src/client"); 26 | SELF.ServerPath = LIBRARIES.Path.join(__dirname, "/src/server"); 27 | 28 | SELF.Settings = JSON.parse(LIBRARIES.FS.readFileSync(__dirname + "/settings.json", "utf8")); 29 | SELF.SocketServer = null; 30 | 31 | if(SELF.Demo_mode){ 32 | SELF.Settings.LaunchClientOnStart = true; 33 | SELF.Settings.LaunchServerOnStart = true; 34 | SELF.Settings.Debug = false; 35 | } 36 | 37 | console.log("######################################"); 38 | console.log("## ##"); 39 | console.log("## Welcome to NOVA's launcher ! ##"); 40 | console.log("## ##"); 41 | console.log("######################################"); 42 | 43 | SELF.CheckLicense(); 44 | SELF.InitialiseSocketServer(); 45 | 46 | SELF.CheckLaunchClientOnStartSettings(function(){ 47 | SELF.CheckLaunchServerOnStartSettings(function(){ 48 | SELF.Launch(SELF.Settings.LaunchServerOnStart, SELF.ServerPath, SELF.GitServerURL, "NOVA - Server", function(){ 49 | SELF.InstallPackages(SELF.Settings.LaunchServerOnStart, SELF.ServerPath, "NOVA - Server", function () { 50 | SELF.Launch(SELF.Settings.LaunchClientOnStart, SELF.ClientPath, SELF.GitClientURL, "NOVA - Client", function(){ 51 | SELF.InstallPackages(SELF.Settings.LaunchClientOnStart, SELF.ClientPath, "NOVA - Client", function () { 52 | if(SELF.Settings.LaunchServerOnStart === true){ 53 | SELF.Log("Starting the server ...", "green"); 54 | SELF.Terminal("node index.js", SELF.ServerPath); 55 | } 56 | if(SELF.Settings.LaunchClientOnStart === true){ 57 | SELF.Log("Starting the client ...", "green"); 58 | SELF.Terminal("node index.js", SELF.ClientPath); 59 | } 60 | }); 61 | }); 62 | }); 63 | }); 64 | }); 65 | }); 66 | } 67 | 68 | // This function initializes the socket server connecting the launcher to the NOVA server. 69 | InitialiseSocketServer(){ 70 | const SELF = this; 71 | 72 | this.SocketServer = LIBRARIES.SocketIO(); 73 | this.SocketServer.on("connection", function(socket){ // A server has just connected to the launcher. 74 | // If the server requests the launcher to display text in the console. 75 | socket.on("log", function(_text, _color, _header){ 76 | SELF.Log(_text, _color, _header); 77 | }); 78 | 79 | // If the server asks the launcher to restart. 80 | socket.on("reboot_server", function(){ 81 | SELF.Log("Rebooting the server...", "green"); 82 | socket.emit("reboot"); 83 | 84 | setTimeout(function(){ 85 | if(SELF.Settings.LaunchServerOnStart === true){ 86 | SELF.Terminal("node index.js", SELF.ServerPath); 87 | } 88 | }, 1000); 89 | }); 90 | 91 | // If the client asks the launcher to restart. 92 | socket.on("reboot_client", function(){ 93 | SELF.Log("Rebooting the client...", "green"); 94 | socket.emit("reboot"); 95 | 96 | setTimeout(function(){ 97 | if(SELF.Settings.LaunchClientOnStart === true){ 98 | SELF.Terminal("node index.js", SELF.ClientPath); 99 | } 100 | }, 1000); 101 | }); 102 | }); 103 | 104 | this.SocketServer.listen(8082); 105 | } 106 | 107 | // This function installs the required packages to run the application. 108 | InstallPackages(_settings, _path, _name, _callback){ 109 | const SELF = this; 110 | 111 | if(_settings === true) { 112 | SELF.Terminal("npm install", _path, function (_error_code, _messages) { 113 | if (_error_code === 0) { 114 | SELF.Log("Your \"" + _name + "\" app's packages are installed.", "green"); 115 | 116 | if (_callback !== undefined) { 117 | _callback(); 118 | } 119 | } else { 120 | console.log("npm install error : " + _error_code); 121 | } 122 | }); 123 | } 124 | else{ 125 | if (_callback !== undefined) { 126 | _callback(); 127 | } 128 | } 129 | } 130 | 131 | // This function launches an instance of NOVA. 132 | Launch(_settings, _path, _git, _name, _callback){ 133 | const SELF = this; 134 | 135 | if(_settings === true){ 136 | if (!LIBRARIES.FS.existsSync(_path)) { 137 | SELF.Log("It seems that you don't have \"" + _name + "\" installed, we are downloading it.", "green"); 138 | SELF.Terminal("git --version", null, function(_error_code, _messages){ 139 | if(_error_code === 0){ 140 | SELF.Terminal("git clone " + _git + " \"" + _path + "\"", null, function(_error_code, _messages){ 141 | if(_error_code === 0){ 142 | SELF.Log("The download went well.", "green"); 143 | if(_callback !== undefined){ 144 | _callback(); 145 | } 146 | } 147 | }); 148 | } 149 | }); 150 | } 151 | else{ 152 | const UP_TO_DATE = "Your \"" + _name + "\" app seems to be up to date."; 153 | const NEW_VERSION = "A new version of \"" + _name + "\" is available."; 154 | if(SELF.Settings.UpdateAtBoot === true){ 155 | SELF.CheckUpdate(_path, function(_updateAvailable){ 156 | if(_updateAvailable === true){ 157 | SELF.Log(UP_TO_DATE, "green"); 158 | if(_callback !== undefined){ 159 | _callback(); 160 | } 161 | } 162 | else{ 163 | SELF.Log(NEW_VERSION, "red"); 164 | SELF.Log("Because \"UpdateAtBoot\" is set to \"true\", we are starting the update.", "green"); 165 | SELF.Update(_path, function(){ 166 | if(_callback !== undefined){ 167 | _callback(); 168 | } 169 | }); 170 | } 171 | }); 172 | } 173 | else{ 174 | SELF.CheckUpdate(_path, function(_updateAvailable){ 175 | if(_updateAvailable === true){ 176 | SELF.Log(UP_TO_DATE, "green"); 177 | } 178 | else{ 179 | SELF.Log(NEW_VERSION, "red"); 180 | } 181 | }); 182 | if(_callback !== undefined){ 183 | _callback(); 184 | } 185 | } 186 | } 187 | } 188 | else{ 189 | if(_callback !== undefined){ 190 | _callback(); 191 | } 192 | } 193 | } 194 | 195 | // This function asks the user whether or not to start a client when starting the launcher. 196 | CheckLaunchClientOnStartSettings(_callback){ 197 | const SELF = this; 198 | 199 | if(SELF.Settings.LaunchClientOnStart === null){ 200 | SELF.AskQuestion("Do you want the launcher to auto start a client ? (Y/n)", function(_answer){ 201 | if(_answer.toLowerCase() === "y" || _answer.toLowerCase() === "yes" || _answer === ""){ 202 | SELF.Settings.LaunchClientOnStart = true; 203 | } 204 | else{ 205 | SELF.Settings.LaunchClientOnStart = false; 206 | } 207 | LIBRARIES.FS.writeFileSync(__dirname + "/settings.json", JSON.stringify(SELF.Settings, null, 4), "utf8"); 208 | _callback(); 209 | }); 210 | } 211 | else{ 212 | _callback(); 213 | } 214 | } 215 | 216 | // This function asks the user whether or not to start a server when starting the launcher. 217 | CheckLaunchServerOnStartSettings(_callback){ 218 | const SELF = this; 219 | 220 | if(SELF.Settings.LaunchServerOnStart === null){ 221 | SELF.AskQuestion("Do you want the launcher to auto start a server ? (Y/n)", function(_answer){ 222 | if(_answer.toLowerCase() === "y" || _answer.toLowerCase() === "yes" || _answer === ""){ 223 | SELF.Settings.LaunchServerOnStart = true; 224 | } 225 | else{ 226 | SELF.Settings.LaunchServerOnStart = false; 227 | } 228 | LIBRARIES.FS.writeFileSync(__dirname + "/settings.json", JSON.stringify(SELF.Settings, null, 4), "utf8"); 229 | _callback(); 230 | }); 231 | } 232 | else{ 233 | _callback(); 234 | } 235 | } 236 | 237 | // This function updates NOVA. 238 | Update(_path, _callback){ 239 | const SELF = this; 240 | 241 | SELF.Log("Updating...", "green"); 242 | SELF.Terminal("git pull", _path, function(_error_code, _messages){ 243 | if(_error_code === 0){ 244 | SELF.Log("The update went well.", "green"); 245 | 246 | if(_callback !== undefined){ 247 | _callback(); 248 | } 249 | } 250 | else{ 251 | console.log("git pull : " + _error_code); 252 | } 253 | }); 254 | } 255 | 256 | // This function checks for updates. 257 | CheckUpdate(_path, _callback){ 258 | const SELF = this; 259 | 260 | SELF.Terminal("git fetch origin", _path, function(_error_code, _messages){ 261 | if(_error_code === 0){ 262 | SELF.Terminal("git status", _path, function(_error_code, _messages){ 263 | if(_error_code === 0){ 264 | if(_messages.includes("Your branch is up to date with 'origin/master'.")){ 265 | if(_callback !== undefined){ 266 | _callback(true); 267 | } 268 | } 269 | else { 270 | _callback(false); 271 | } 272 | } 273 | }); 274 | } 275 | }); 276 | } 277 | 278 | // This function executes terminal commands on the local computer. 279 | Terminal(_command, _path, _callback){ 280 | const SELF = this; 281 | 282 | const MESSAGES = []; 283 | const EXECUTION = LIBRARIES.ChildProcess.exec(_command, { cwd: _path }); 284 | 285 | if(SELF.Settings.Debug === true){ 286 | SELF.Log("Command : " + _command); 287 | } 288 | 289 | EXECUTION.stdout.on("data", (_data) => { 290 | _data = _data.split("\n"); 291 | for(let i = 0; i < _data.length; i++){ 292 | if(_data[i].length > 0){ 293 | MESSAGES.push(_data[i]); 294 | if(SELF.Settings.Debug === true){ 295 | SELF.Log(_data[i]); 296 | } 297 | } 298 | } 299 | }); 300 | 301 | EXECUTION.stderr.on("data", (_data) => { 302 | _data = _data.split("\n"); 303 | for(let i = 0; i < _data.length; i++){ 304 | if(_data[i].length > 0){ 305 | MESSAGES.push(_data[i]); 306 | if(SELF.Settings.Debug === true){ 307 | SELF.Log(_data[i]); 308 | } 309 | } 310 | } 311 | }); 312 | 313 | EXECUTION.on("close", (_error_code) => { 314 | if(_callback !== undefined){ 315 | _callback(_error_code, MESSAGES); 316 | } 317 | }); 318 | } 319 | 320 | // This function asks the user a question from the command prompt. 321 | AskQuestion(_question, _callback) { 322 | this.Log(_question, "green"); 323 | const RL = LIBRARIES.ReadLine.createInterface({ 324 | input: process.stdin 325 | }); 326 | 327 | return new Promise(resolve => RL.question(_question, function(_answer) { 328 | RL.close(); 329 | if(_callback !== undefined){ 330 | _callback(_answer); 331 | } 332 | })); 333 | } 334 | 335 | // This function checks the license. 336 | CheckLicense() { 337 | if(this.Settings.LicenseKey !== "non-commercial-and-evaluation"){ 338 | this.Log("Your license key is invalid.", "red"); 339 | process.exit(); 340 | } 341 | } 342 | 343 | // This function replaces the "console.log" function. 344 | Log(_text, _color = "white", _header = "NOVA LAUNCHER"){ 345 | if(_text.length > 0){ 346 | if(LIBRARIES.Colors[_color] !== undefined){ 347 | console.log("[" + (LIBRARIES.Colors[_color](_header)) + "] " + _text); 348 | } 349 | else{ 350 | console.log(LIBRARIES.Colors.red("The color \"" + _color + "\" does not exist in the \"colors\" package.")); 351 | } 352 | } 353 | } 354 | } 355 | 356 | const LAUNCHER = new Launcher(); 357 | -------------------------------------------------------------------------------- /non-commercial-license.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeyHeyChicken/NOVA-NodeJS/781f11bfc8eec63040ab5d6d436c6219b60c1cc9/non-commercial-license.pdf -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "nova-launcher", 3 | "version": "1.0.0", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "nova-launcher", 9 | "version": "1.0.0", 10 | "license": "SEE LICENSE IN LICENSE FILE", 11 | "dependencies": { 12 | "child_process": "^1.0.2", 13 | "colors": "^1.4.0", 14 | "fs": "0.0.1-security", 15 | "readline": "^1.3.0", 16 | "socket.io": "^4.7.2" 17 | }, 18 | "devDependencies": {} 19 | }, 20 | "node_modules/@socket.io/component-emitter": { 21 | "version": "3.1.0", 22 | "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", 23 | "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==" 24 | }, 25 | "node_modules/@types/cookie": { 26 | "version": "0.4.1", 27 | "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", 28 | "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==" 29 | }, 30 | "node_modules/@types/cors": { 31 | "version": "2.8.17", 32 | "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.17.tgz", 33 | "integrity": "sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==", 34 | "dependencies": { 35 | "@types/node": "*" 36 | } 37 | }, 38 | "node_modules/@types/node": { 39 | "version": "20.10.6", 40 | "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.6.tgz", 41 | "integrity": "sha512-Vac8H+NlRNNlAmDfGUP7b5h/KA+AtWIzuXy0E6OyP8f1tCLYAtPvKRRDJjAPqhpCb0t6U2j7/xqAuLEebW2kiw==", 42 | "dependencies": { 43 | "undici-types": "~5.26.4" 44 | } 45 | }, 46 | "node_modules/accepts": { 47 | "version": "1.3.8", 48 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", 49 | "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", 50 | "dependencies": { 51 | "mime-types": "~2.1.34", 52 | "negotiator": "0.6.3" 53 | }, 54 | "engines": { 55 | "node": ">= 0.6" 56 | } 57 | }, 58 | "node_modules/base64id": { 59 | "version": "2.0.0", 60 | "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", 61 | "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", 62 | "engines": { 63 | "node": "^4.5.0 || >= 5.9" 64 | } 65 | }, 66 | "node_modules/child_process": { 67 | "version": "1.0.2", 68 | "resolved": "https://registry.npmjs.org/child_process/-/child_process-1.0.2.tgz", 69 | "integrity": "sha512-Wmza/JzL0SiWz7kl6MhIKT5ceIlnFPJX+lwUGj7Clhy5MMldsSoJR0+uvRzOS5Kv45Mq7t1PoE8TsOA9bzvb6g==" 70 | }, 71 | "node_modules/colors": { 72 | "version": "1.4.0", 73 | "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", 74 | "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", 75 | "engines": { 76 | "node": ">=0.1.90" 77 | } 78 | }, 79 | "node_modules/cookie": { 80 | "version": "0.4.2", 81 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", 82 | "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", 83 | "engines": { 84 | "node": ">= 0.6" 85 | } 86 | }, 87 | "node_modules/cors": { 88 | "version": "2.8.5", 89 | "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", 90 | "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", 91 | "dependencies": { 92 | "object-assign": "^4", 93 | "vary": "^1" 94 | }, 95 | "engines": { 96 | "node": ">= 0.10" 97 | } 98 | }, 99 | "node_modules/debug": { 100 | "version": "4.3.4", 101 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 102 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 103 | "dependencies": { 104 | "ms": "2.1.2" 105 | }, 106 | "engines": { 107 | "node": ">=6.0" 108 | }, 109 | "peerDependenciesMeta": { 110 | "supports-color": { 111 | "optional": true 112 | } 113 | } 114 | }, 115 | "node_modules/engine.io": { 116 | "version": "6.5.4", 117 | "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.5.4.tgz", 118 | "integrity": "sha512-KdVSDKhVKyOi+r5uEabrDLZw2qXStVvCsEB/LN3mw4WFi6Gx50jTyuxYVCwAAC0U46FdnzP/ScKRBTXb/NiEOg==", 119 | "dependencies": { 120 | "@types/cookie": "^0.4.1", 121 | "@types/cors": "^2.8.12", 122 | "@types/node": ">=10.0.0", 123 | "accepts": "~1.3.4", 124 | "base64id": "2.0.0", 125 | "cookie": "~0.4.1", 126 | "cors": "~2.8.5", 127 | "debug": "~4.3.1", 128 | "engine.io-parser": "~5.2.1", 129 | "ws": "~8.11.0" 130 | }, 131 | "engines": { 132 | "node": ">=10.2.0" 133 | } 134 | }, 135 | "node_modules/engine.io-parser": { 136 | "version": "5.2.1", 137 | "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.1.tgz", 138 | "integrity": "sha512-9JktcM3u18nU9N2Lz3bWeBgxVgOKpw7yhRaoxQA3FUDZzzw+9WlA6p4G4u0RixNkg14fH7EfEc/RhpurtiROTQ==", 139 | "engines": { 140 | "node": ">=10.0.0" 141 | } 142 | }, 143 | "node_modules/fs": { 144 | "version": "0.0.1-security", 145 | "resolved": "https://registry.npmjs.org/fs/-/fs-0.0.1-security.tgz", 146 | "integrity": "sha512-3XY9e1pP0CVEUCdj5BmfIZxRBTSDycnbqhIOGec9QYtmVH2fbLpj86CFWkrNOkt/Fvty4KZG5lTglL9j/gJ87w==" 147 | }, 148 | "node_modules/mime-db": { 149 | "version": "1.52.0", 150 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", 151 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", 152 | "engines": { 153 | "node": ">= 0.6" 154 | } 155 | }, 156 | "node_modules/mime-types": { 157 | "version": "2.1.35", 158 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", 159 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", 160 | "dependencies": { 161 | "mime-db": "1.52.0" 162 | }, 163 | "engines": { 164 | "node": ">= 0.6" 165 | } 166 | }, 167 | "node_modules/ms": { 168 | "version": "2.1.2", 169 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 170 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 171 | }, 172 | "node_modules/negotiator": { 173 | "version": "0.6.3", 174 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", 175 | "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", 176 | "engines": { 177 | "node": ">= 0.6" 178 | } 179 | }, 180 | "node_modules/object-assign": { 181 | "version": "4.1.1", 182 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 183 | "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", 184 | "engines": { 185 | "node": ">=0.10.0" 186 | } 187 | }, 188 | "node_modules/readline": { 189 | "version": "1.3.0", 190 | "resolved": "https://registry.npmjs.org/readline/-/readline-1.3.0.tgz", 191 | "integrity": "sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg==" 192 | }, 193 | "node_modules/socket.io": { 194 | "version": "4.7.2", 195 | "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.7.2.tgz", 196 | "integrity": "sha512-bvKVS29/I5fl2FGLNHuXlQaUH/BlzX1IN6S+NKLNZpBsPZIDH+90eQmCs2Railn4YUiww4SzUedJ6+uzwFnKLw==", 197 | "dependencies": { 198 | "accepts": "~1.3.4", 199 | "base64id": "~2.0.0", 200 | "cors": "~2.8.5", 201 | "debug": "~4.3.2", 202 | "engine.io": "~6.5.2", 203 | "socket.io-adapter": "~2.5.2", 204 | "socket.io-parser": "~4.2.4" 205 | }, 206 | "engines": { 207 | "node": ">=10.2.0" 208 | } 209 | }, 210 | "node_modules/socket.io-adapter": { 211 | "version": "2.5.2", 212 | "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.2.tgz", 213 | "integrity": "sha512-87C3LO/NOMc+eMcpcxUBebGjkpMDkNBS9tf7KJqcDsmL936EChtVva71Dw2q4tQcuVC+hAUy4an2NO/sYXmwRA==", 214 | "dependencies": { 215 | "ws": "~8.11.0" 216 | } 217 | }, 218 | "node_modules/socket.io-parser": { 219 | "version": "4.2.4", 220 | "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", 221 | "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==", 222 | "dependencies": { 223 | "@socket.io/component-emitter": "~3.1.0", 224 | "debug": "~4.3.1" 225 | }, 226 | "engines": { 227 | "node": ">=10.0.0" 228 | } 229 | }, 230 | "node_modules/undici-types": { 231 | "version": "5.26.5", 232 | "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", 233 | "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" 234 | }, 235 | "node_modules/vary": { 236 | "version": "1.1.2", 237 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", 238 | "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", 239 | "engines": { 240 | "node": ">= 0.8" 241 | } 242 | }, 243 | "node_modules/ws": { 244 | "version": "8.11.0", 245 | "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", 246 | "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", 247 | "engines": { 248 | "node": ">=10.0.0" 249 | }, 250 | "peerDependencies": { 251 | "bufferutil": "^4.0.1", 252 | "utf-8-validate": "^5.0.2" 253 | }, 254 | "peerDependenciesMeta": { 255 | "bufferutil": { 256 | "optional": true 257 | }, 258 | "utf-8-validate": { 259 | "optional": true 260 | } 261 | } 262 | } 263 | }, 264 | "dependencies": { 265 | "@socket.io/component-emitter": { 266 | "version": "3.1.0", 267 | "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", 268 | "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==" 269 | }, 270 | "@types/cookie": { 271 | "version": "0.4.1", 272 | "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", 273 | "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==" 274 | }, 275 | "@types/cors": { 276 | "version": "2.8.17", 277 | "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.17.tgz", 278 | "integrity": "sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==", 279 | "requires": { 280 | "@types/node": "*" 281 | } 282 | }, 283 | "@types/node": { 284 | "version": "20.10.6", 285 | "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.6.tgz", 286 | "integrity": "sha512-Vac8H+NlRNNlAmDfGUP7b5h/KA+AtWIzuXy0E6OyP8f1tCLYAtPvKRRDJjAPqhpCb0t6U2j7/xqAuLEebW2kiw==", 287 | "requires": { 288 | "undici-types": "~5.26.4" 289 | } 290 | }, 291 | "accepts": { 292 | "version": "1.3.8", 293 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", 294 | "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", 295 | "requires": { 296 | "mime-types": "~2.1.34", 297 | "negotiator": "0.6.3" 298 | } 299 | }, 300 | "base64id": { 301 | "version": "2.0.0", 302 | "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", 303 | "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==" 304 | }, 305 | "child_process": { 306 | "version": "1.0.2", 307 | "resolved": "https://registry.npmjs.org/child_process/-/child_process-1.0.2.tgz", 308 | "integrity": "sha512-Wmza/JzL0SiWz7kl6MhIKT5ceIlnFPJX+lwUGj7Clhy5MMldsSoJR0+uvRzOS5Kv45Mq7t1PoE8TsOA9bzvb6g==" 309 | }, 310 | "colors": { 311 | "version": "1.4.0", 312 | "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", 313 | "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==" 314 | }, 315 | "cookie": { 316 | "version": "0.4.2", 317 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", 318 | "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==" 319 | }, 320 | "cors": { 321 | "version": "2.8.5", 322 | "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", 323 | "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", 324 | "requires": { 325 | "object-assign": "^4", 326 | "vary": "^1" 327 | } 328 | }, 329 | "debug": { 330 | "version": "4.3.4", 331 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 332 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 333 | "requires": { 334 | "ms": "2.1.2" 335 | } 336 | }, 337 | "engine.io": { 338 | "version": "6.5.4", 339 | "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.5.4.tgz", 340 | "integrity": "sha512-KdVSDKhVKyOi+r5uEabrDLZw2qXStVvCsEB/LN3mw4WFi6Gx50jTyuxYVCwAAC0U46FdnzP/ScKRBTXb/NiEOg==", 341 | "requires": { 342 | "@types/cookie": "^0.4.1", 343 | "@types/cors": "^2.8.12", 344 | "@types/node": ">=10.0.0", 345 | "accepts": "~1.3.4", 346 | "base64id": "2.0.0", 347 | "cookie": "~0.4.1", 348 | "cors": "~2.8.5", 349 | "debug": "~4.3.1", 350 | "engine.io-parser": "~5.2.1", 351 | "ws": "~8.11.0" 352 | } 353 | }, 354 | "engine.io-parser": { 355 | "version": "5.2.1", 356 | "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.1.tgz", 357 | "integrity": "sha512-9JktcM3u18nU9N2Lz3bWeBgxVgOKpw7yhRaoxQA3FUDZzzw+9WlA6p4G4u0RixNkg14fH7EfEc/RhpurtiROTQ==" 358 | }, 359 | "fs": { 360 | "version": "0.0.1-security", 361 | "resolved": "https://registry.npmjs.org/fs/-/fs-0.0.1-security.tgz", 362 | "integrity": "sha512-3XY9e1pP0CVEUCdj5BmfIZxRBTSDycnbqhIOGec9QYtmVH2fbLpj86CFWkrNOkt/Fvty4KZG5lTglL9j/gJ87w==" 363 | }, 364 | "mime-db": { 365 | "version": "1.52.0", 366 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", 367 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" 368 | }, 369 | "mime-types": { 370 | "version": "2.1.35", 371 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", 372 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", 373 | "requires": { 374 | "mime-db": "1.52.0" 375 | } 376 | }, 377 | "ms": { 378 | "version": "2.1.2", 379 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 380 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 381 | }, 382 | "negotiator": { 383 | "version": "0.6.3", 384 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", 385 | "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" 386 | }, 387 | "object-assign": { 388 | "version": "4.1.1", 389 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 390 | "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" 391 | }, 392 | "readline": { 393 | "version": "1.3.0", 394 | "resolved": "https://registry.npmjs.org/readline/-/readline-1.3.0.tgz", 395 | "integrity": "sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg==" 396 | }, 397 | "socket.io": { 398 | "version": "4.7.2", 399 | "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.7.2.tgz", 400 | "integrity": "sha512-bvKVS29/I5fl2FGLNHuXlQaUH/BlzX1IN6S+NKLNZpBsPZIDH+90eQmCs2Railn4YUiww4SzUedJ6+uzwFnKLw==", 401 | "requires": { 402 | "accepts": "~1.3.4", 403 | "base64id": "~2.0.0", 404 | "cors": "~2.8.5", 405 | "debug": "~4.3.2", 406 | "engine.io": "~6.5.2", 407 | "socket.io-adapter": "~2.5.2", 408 | "socket.io-parser": "~4.2.4" 409 | } 410 | }, 411 | "socket.io-adapter": { 412 | "version": "2.5.2", 413 | "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.2.tgz", 414 | "integrity": "sha512-87C3LO/NOMc+eMcpcxUBebGjkpMDkNBS9tf7KJqcDsmL936EChtVva71Dw2q4tQcuVC+hAUy4an2NO/sYXmwRA==", 415 | "requires": { 416 | "ws": "~8.11.0" 417 | } 418 | }, 419 | "socket.io-parser": { 420 | "version": "4.2.4", 421 | "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", 422 | "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==", 423 | "requires": { 424 | "@socket.io/component-emitter": "~3.1.0", 425 | "debug": "~4.3.1" 426 | } 427 | }, 428 | "undici-types": { 429 | "version": "5.26.5", 430 | "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", 431 | "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" 432 | }, 433 | "vary": { 434 | "version": "1.1.2", 435 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", 436 | "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==" 437 | }, 438 | "ws": { 439 | "version": "8.11.0", 440 | "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", 441 | "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", 442 | "requires": {} 443 | } 444 | } 445 | } 446 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "nova-launcher", 3 | "version": "1.0.0", 4 | "description": "Description ...", 5 | "main": "index.js", 6 | "dependencies": { 7 | "child_process": "^1.0.2", 8 | "colors": "^1.4.0", 9 | "fs": "0.0.1-security", 10 | "readline": "^1.3.0", 11 | "socket.io": "^4.7.2" 12 | }, 13 | "devDependencies": {}, 14 | "repository": { 15 | "type": "git", 16 | "url": "git+https://github.com/HeyHeyChicken/NOVA-Launcher.git" 17 | }, 18 | "author": "Antoine Duval", 19 | "license": "SEE LICENSE IN LICENSE FILE", 20 | "bugs": { 21 | "url": "https://github.com/HeyHeyChicken/NOVA-Launcher/issues" 22 | }, 23 | "homepage": "https://github.com/HeyHeyChicken/NOVA-Launcher#readme" 24 | } 25 | -------------------------------------------------------------------------------- /resources/GitPodOpenBrowserIcon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeyHeyChicken/NOVA-NodeJS/781f11bfc8eec63040ab5d6d436c6219b60c1cc9/resources/GitPodOpenBrowserIcon.png -------------------------------------------------------------------------------- /resources/GitPodPortIcon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeyHeyChicken/NOVA-NodeJS/781f11bfc8eec63040ab5d6d436c6219b60c1cc9/resources/GitPodPortIcon.png -------------------------------------------------------------------------------- /resources/NOVA_Case.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeyHeyChicken/NOVA-NodeJS/781f11bfc8eec63040ab5d6d436c6219b60c1cc9/resources/NOVA_Case.jpeg -------------------------------------------------------------------------------- /resources/NOVA_Case_Without.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeyHeyChicken/NOVA-NodeJS/781f11bfc8eec63040ab5d6d436c6219b60c1cc9/resources/NOVA_Case_Without.jpeg -------------------------------------------------------------------------------- /resources/NOVA_SketchUp_Case.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeyHeyChicken/NOVA-NodeJS/781f11bfc8eec63040ab5d6d436c6219b60c1cc9/resources/NOVA_SketchUp_Case.gif -------------------------------------------------------------------------------- /resources/NOVA_SketchUp_Case.skp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeyHeyChicken/NOVA-NodeJS/781f11bfc8eec63040ab5d6d436c6219b60c1cc9/resources/NOVA_SketchUp_Case.skp -------------------------------------------------------------------------------- /resources/Wiki/Architecture.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeyHeyChicken/NOVA-NodeJS/781f11bfc8eec63040ab5d6d436c6219b60c1cc9/resources/Wiki/Architecture.jpeg -------------------------------------------------------------------------------- /resources/Wiki/Architecture.pptx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeyHeyChicken/NOVA-NodeJS/781f11bfc8eec63040ab5d6d436c6219b60c1cc9/resources/Wiki/Architecture.pptx -------------------------------------------------------------------------------- /resources/Wiki/Chat.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeyHeyChicken/NOVA-NodeJS/781f11bfc8eec63040ab5d6d436c6219b60c1cc9/resources/Wiki/Chat.jpg -------------------------------------------------------------------------------- /resources/Wiki/ChatBotSkill.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeyHeyChicken/NOVA-NodeJS/781f11bfc8eec63040ab5d6d436c6219b60c1cc9/resources/Wiki/ChatBotSkill.png -------------------------------------------------------------------------------- /resources/Wiki/ClientDashboard.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeyHeyChicken/NOVA-NodeJS/781f11bfc8eec63040ab5d6d436c6219b60c1cc9/resources/Wiki/ClientDashboard.jpg -------------------------------------------------------------------------------- /resources/Wiki/GitHubScreenshot.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeyHeyChicken/NOVA-NodeJS/781f11bfc8eec63040ab5d6d436c6219b60c1cc9/resources/Wiki/GitHubScreenshot.jpg -------------------------------------------------------------------------------- /resources/Wiki/Icons/file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeyHeyChicken/NOVA-NodeJS/781f11bfc8eec63040ab5d6d436c6219b60c1cc9/resources/Wiki/Icons/file.png -------------------------------------------------------------------------------- /resources/Wiki/Icons/folder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeyHeyChicken/NOVA-NodeJS/781f11bfc8eec63040ab5d6d436c6219b60c1cc9/resources/Wiki/Icons/folder.png -------------------------------------------------------------------------------- /resources/Wiki/InstallSkill.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeyHeyChicken/NOVA-NodeJS/781f11bfc8eec63040ab5d6d436c6219b60c1cc9/resources/Wiki/InstallSkill.jpg -------------------------------------------------------------------------------- /resources/Wiki/NOVAIcon.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeyHeyChicken/NOVA-NodeJS/781f11bfc8eec63040ab5d6d436c6219b60c1cc9/resources/Wiki/NOVAIcon.jpg -------------------------------------------------------------------------------- /resources/Wiki/ServerDashboard.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeyHeyChicken/NOVA-NodeJS/781f11bfc8eec63040ab5d6d436c6219b60c1cc9/resources/Wiki/ServerDashboard.jpg -------------------------------------------------------------------------------- /resources/Wiki/Settings.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeyHeyChicken/NOVA-NodeJS/781f11bfc8eec63040ab5d6d436c6219b60c1cc9/resources/Wiki/Settings.jpg -------------------------------------------------------------------------------- /resources/Wiki/Skills.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeyHeyChicken/NOVA-NodeJS/781f11bfc8eec63040ab5d6d436c6219b60c1cc9/resources/Wiki/Skills.jpg -------------------------------------------------------------------------------- /resources/Wiki/nova-wallpaper.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeyHeyChicken/NOVA-NodeJS/781f11bfc8eec63040ab5d6d436c6219b60c1cc9/resources/Wiki/nova-wallpaper.png -------------------------------------------------------------------------------- /resources/Wiki/screenshots.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeyHeyChicken/NOVA-NodeJS/781f11bfc8eec63040ab5d6d436c6219b60c1cc9/resources/Wiki/screenshots.jpg -------------------------------------------------------------------------------- /resources/gitLogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeyHeyChicken/NOVA-NodeJS/781f11bfc8eec63040ab5d6d436c6219b60c1cc9/resources/gitLogo.png -------------------------------------------------------------------------------- /resources/github-logo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /resources/join-us-discord.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeyHeyChicken/NOVA-NodeJS/781f11bfc8eec63040ab5d6d436c6219b60c1cc9/resources/join-us-discord.png -------------------------------------------------------------------------------- /resources/nodeJSLogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeyHeyChicken/NOVA-NodeJS/781f11bfc8eec63040ab5d6d436c6219b60c1cc9/resources/nodeJSLogo.png -------------------------------------------------------------------------------- /resources/not-done-yet.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeyHeyChicken/NOVA-NodeJS/781f11bfc8eec63040ab5d6d436c6219b60c1cc9/resources/not-done-yet.jpg -------------------------------------------------------------------------------- /resources/npmLogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeyHeyChicken/NOVA-NodeJS/781f11bfc8eec63040ab5d6d436c6219b60c1cc9/resources/npmLogo.png -------------------------------------------------------------------------------- /resources/screenshot.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HeyHeyChicken/NOVA-NodeJS/781f11bfc8eec63040ab5d6d436c6219b60c1cc9/resources/screenshot.jpg -------------------------------------------------------------------------------- /settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "LaunchClientOnStart": null, 3 | "LaunchServerOnStart": null, 4 | "Debug": true, 5 | "UpdateAtBoot": true, 6 | "LicenseKey": "non-commercial-and-evaluation" 7 | } -------------------------------------------------------------------------------- /src/README.md: -------------------------------------------------------------------------------- 1 | In this folder, you'll find two folders : 2 | - The client. 3 | - The server. --------------------------------------------------------------------------------