diff --git a/.github/workflows/lint-test-build.yml b/.github/workflows/lint-test-build.yml index 10102f22d..1ebe86454 100644 --- a/.github/workflows/lint-test-build.yml +++ b/.github/workflows/lint-test-build.yml @@ -302,7 +302,7 @@ jobs: - uses: cypress-io/github-action@v4 with: browser: chromium - start: npm run dev + start: npm start wait-on: http://localhost:8080/ working-directory: ${{ env.client_dir }} config: baseUrl=http://localhost:8080/#/ diff --git a/cli/package.json b/cli/package.json index f4fae4451..aeab7f372 100644 --- a/cli/package.json +++ b/cli/package.json @@ -3,9 +3,11 @@ "private": true, "main": "dist/benchmark.ts", "scripts": { + "watch": "nodemon --ext ts --ignore dist --watch ../discojs/discojs-node/dist --watch ../server/dist --exec npm run", + "start": "npm run build && node dist/benchmark.js", "build": "tsc", - "test": ": nothing", - "start": "npm run build && node dist/benchmark.js" + "lint": "npx eslint --max-warnings 0 .", + "test": ": nothing" }, "author": "", "license": "ISC", @@ -22,6 +24,7 @@ "eslint-plugin-import": "2", "eslint-plugin-node": "11", "eslint-plugin-promise": "5", + "nodemon": "3", "ts-command-line-args": "2" } } diff --git a/cli/tsconfig.eslint.json b/cli/tsconfig.eslint.json index b90fc83e0..a8d4317b4 100644 --- a/cli/tsconfig.eslint.json +++ b/cli/tsconfig.eslint.json @@ -1,4 +1,4 @@ { "extends": "./tsconfig.json", - "include": ["src"] + "exclude": [] } diff --git a/cli/tsconfig.json b/cli/tsconfig.json index 15d1d0c2c..df022faec 100644 --- a/cli/tsconfig.json +++ b/cli/tsconfig.json @@ -16,5 +16,6 @@ "baseUrl": "src", "outDir": "dist", }, - "include": ["src"] + "include": ["src"], + "exclude": ["**/*.spec.ts"] } diff --git a/discojs/discojs-core/package.json b/discojs/discojs-core/package.json index 1d3f65f58..aaaca3fef 100644 --- a/discojs/discojs-core/package.json +++ b/discojs/discojs-core/package.json @@ -4,9 +4,10 @@ "main": "dist/index.js", "types": "dist/index.d.ts", "scripts": { + "watch": "nodemon --ext ts --ignore dist --exec npm run", "build": "tsc", + "lint": "npx eslint --max-warnings 0 .", "test": "mocha", - "lint": "npx eslint --max-warnings 0 --ignore-pattern '*.spec.ts' .", "docs": "typedoc ./src/index.ts --theme oxide" }, "repository": { @@ -41,6 +42,7 @@ "eslint": "7", "eslint-config-standard-with-typescript": "21", "mocha": "9", + "nodemon": "3", "ts-node": "10", "typedoc": "0.22", "typedoc-theme-oxide": "0.1", diff --git a/discojs/discojs-core/tsconfig.eslint.json b/discojs/discojs-core/tsconfig.eslint.json index b9b30ad5b..a8d4317b4 100644 --- a/discojs/discojs-core/tsconfig.eslint.json +++ b/discojs/discojs-core/tsconfig.eslint.json @@ -1,4 +1,4 @@ { - "extends": "../tsconfig.base.json", - "include": ["src"], + "extends": "./tsconfig.json", + "exclude": [] } diff --git a/discojs/discojs-node/package.json b/discojs/discojs-node/package.json index b5e963398..79ac9fee6 100644 --- a/discojs/discojs-node/package.json +++ b/discojs/discojs-node/package.json @@ -4,9 +4,10 @@ "main": "dist/index.js", "types": "dist/index.d.ts", "scripts": { + "watch": "nodemon --ext ts --ignore dist --watch ../discojs-core/dist --exec npm run", "build": "tsc", + "lint": "npx eslint --max-warnings 0 .", "test": "mocha", - "lint": "npx eslint --max-warnings 0 --ignore-pattern '*.spec.ts' .", "docs": "typedoc ./src/imports.ts --theme oxide" }, "repository": { @@ -19,9 +20,10 @@ "homepage": "https://github.com/epfml/disco#readme", "dependencies": { "@epfml/discojs-core": "*", - "@tensorflow/tfjs-node": "^4.17.0" + "@tensorflow/tfjs-node": "4" }, "devDependencies": { - "@types/node": "20" + "@types/node": "20", + "nodemon": "3" } } diff --git a/discojs/discojs-node/tsconfig.eslint.json b/discojs/discojs-node/tsconfig.eslint.json index 68db80dd8..a8d4317b4 100644 --- a/discojs/discojs-node/tsconfig.eslint.json +++ b/discojs/discojs-node/tsconfig.eslint.json @@ -1,4 +1,4 @@ { "extends": "./tsconfig.json", - "include": ["src"], + "exclude": [] } diff --git a/discojs/discojs-web/package.json b/discojs/discojs-web/package.json index 301f93975..211d6f757 100644 --- a/discojs/discojs-web/package.json +++ b/discojs/discojs-web/package.json @@ -4,9 +4,10 @@ "main": "dist/index.js", "types": "dist/index.d.ts", "scripts": { + "watch": "nodemon --ext ts --ignore dist --watch ../discojs-core/dist --exec npm run", "build": "tsc", + "lint": "npx eslint --max-warnings 0 .", "test": ": nothing", - "lint": "npx eslint --max-warnings 0 --ignore-pattern '*.spec.ts' .", "docs": "typedoc ./src/index.ts --theme oxide" }, "repository": { @@ -19,5 +20,8 @@ "homepage": "https://github.com/epfml/disco#readme", "dependencies": { "@epfml/discojs-core": "*" + }, + "devDependencies": { + "nodemon": "3" } } diff --git a/discojs/discojs-web/tsconfig.eslint.json b/discojs/discojs-web/tsconfig.eslint.json index 68db80dd8..a8d4317b4 100644 --- a/discojs/discojs-web/tsconfig.eslint.json +++ b/discojs/discojs-web/tsconfig.eslint.json @@ -1,4 +1,4 @@ { "extends": "./tsconfig.json", - "include": ["src"], + "exclude": [] } diff --git a/discojs/tsconfig.base.json b/discojs/tsconfig.base.json index 25548717d..269028bec 100644 --- a/discojs/tsconfig.base.json +++ b/discojs/tsconfig.base.json @@ -5,6 +5,7 @@ "lib": ["ES5", "DOM"], "strict": true, + "noEmit": true, "esModuleInterop": true, "skipLibCheck": true, diff --git a/docs/ONBOARDING.md b/docs/ONBOARDING.md index eaf4c963d..909742ae0 100644 --- a/docs/ONBOARDING.md +++ b/docs/ONBOARDING.md @@ -1,10 +1,10 @@ # Onboarding Disco has grown a lot since its early days, and like any sizeable code base, getting started is both -difficult and intimidating: there are a *lot* of files, it's not clear what's important at first, and even where to start +difficult and intimidating: there are a _lot_ of files, it's not clear what's important at first, and even where to start is a bit of a puzzle. This document aims at giving you an efficient process to get familiar with DISCO. -The two main technologies behind DISCO are TypeScript and distributed machine learning. In the following sections I will assume that you are familiar +The two main technologies behind DISCO are TypeScript and distributed machine learning. In the following sections I will assume that you are familiar with both to a certain extent. If not, the following references might be useful: - [JavaScript](https://eloquentjavascript.net) @@ -12,7 +12,7 @@ with both to a certain extent. If not, the following references might be useful: - [Federated and Decentralized Learning](https://arxiv.org/pdf/1912.04977) > [!IMPORTANT] -> Disco is a big project and some information has probably been omitted or is outdated. It is now *your* responsibility to add missing information or let us know on [slack](https://join.slack.com/t/disco-decentralized/shared_invite/zt-fpsb7c9h-1M9hnbaSonZ7lAgJRTyNsw)! +> Disco is a big project and some information has probably been omitted or is outdated. It is now _your_ responsibility to add missing information or let us know on [slack](https://join.slack.com/t/disco-decentralized/shared_invite/zt-fpsb7c9h-1M9hnbaSonZ7lAgJRTyNsw)! ## First steps @@ -22,7 +22,6 @@ a `server` and a `cli` (e.g., for benchmarking). Depending on what your goal is, 1. If you are going to work, contribute and improve the project, I first recommend you get a good understand of what DISCO does: play around with the [website](https://epfml.github.io/disco/#/), train a model from the pre-defined tasks, or even create your own custom task. Feedback is always appreciated, feel free to let us know on slack/in the github issues/in person if you noticed any issues or thought of an improvement. 2. Then, get a high-level understanding of the different parts of the projects in the [developer guide](../DEV.md), even if you're planning on working on a subset of the project. If you want to know more about a specific part of the project, refer to the table of contents at the end of the DEV guide. - 3. Follow the installation instructions from the [developer guide](../DEV.md) to launch a DISCO instance working in your browser. > [!TIP] @@ -33,14 +32,25 @@ As mentioned in the [developer guide](../DEV.md), there are many ways to use Dis ### Things to know As a contributor, you will certainly end up having to run TypeScript scripts. A practical way to do so is to use on ts-node: + ``` npm i -g ts-node # globally to run scripts from anywhere ts-node your_script.ts ``` Because TypeScript needs to be transpiled to JavaScript, you need to rebuild the `discojs` folder every time you make any changes to it: -``` js -npm run build -w ./discojs + +```sh +npm -w ./discojs run build +``` + +If you want to automate the building phase, you can use the watch script in every project that run the given script when changes are detected. +As each of theses calls are non-terminating (theses are watching indefinitely), you'll need to run each in a different terminal. + +```sh +npm -w ./discojs/discojs-core run watch build +npm -w ./discojs/discojs-node run watch build # another terminal +npm -w ./discojs/discojs-web run watch build # one more terminal ``` > [!TIP] @@ -48,7 +58,7 @@ npm run build -w ./discojs > In practice, that is any folder level that contains a `package.json` such as `server`, `web-client`, etc. > For example, if you are working on the CLI, you should start VSCode with the command `code server` from the root level (or `cd server; code .`) -Next you will find instructions and documentation on how to run DISCO in different settings. +Next you will find instructions and documentation on how to run DISCO in different settings. ### Using DISCO from the `web-client` @@ -66,6 +76,6 @@ A standalone example of disco can be found [in this folder](./node_example), wit 1. If you are planning to contribute to the project you should read the [contributing guide](./CONTRIBUTING.md) 2. Depending on what you will be working on you may be interested in different documentation. Have a look at the markdown guides in `docs`. Notably: - * Understanding [Disco.js inner workings](./DISCOJS.md) is key if you are planning to add a new machine learning feature and work in `discojs` - * The [Vue.js architecture guide](./VUEJS.md) explains how the browser client is implemented with Vue.js. - * Are you going to work on cryptography or privacy? This [document](./PRIVACY.md) explains the measures DISCO takes to ensure privacy and confidentiality. + - Understanding [Disco.js inner workings](./DISCOJS.md) is key if you are planning to add a new machine learning feature and work in `discojs` + - The [Vue.js architecture guide](./VUEJS.md) explains how the browser client is implemented with Vue.js. + - Are you going to work on cryptography or privacy? This [document](./PRIVACY.md) explains the measures DISCO takes to ensure privacy and confidentiality. diff --git a/docs/node_example/tsconfig.eslint.json b/docs/node_example/tsconfig.eslint.json index 512d79fca..86e88e310 100644 --- a/docs/node_example/tsconfig.eslint.json +++ b/docs/node_example/tsconfig.eslint.json @@ -1,5 +1,4 @@ { "extends": "../tsconfig.json", - "include": ["*.ts"], "exclude": [] } diff --git a/docs/node_example/tsconfig.json b/docs/node_example/tsconfig.json index 74dbc77ec..2e5603976 100644 --- a/docs/node_example/tsconfig.json +++ b/docs/node_example/tsconfig.json @@ -17,6 +17,6 @@ "typeRoots": ["node_modules/@types", "../../discojs/discojs-core/types"] }, "include": ["*.ts"], - "exclude": ["node_modules"] + "exclude": ["**/*.spec.ts"] } diff --git a/package-lock.json b/package-lock.json index a6a6c5266..fdd7d77e7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -30,6 +30,7 @@ "eslint-plugin-import": "2", "eslint-plugin-node": "11", "eslint-plugin-promise": "5", + "nodemon": "3", "ts-command-line-args": "2" } }, @@ -60,6 +61,7 @@ "eslint": "7", "eslint-config-standard-with-typescript": "21", "mocha": "9", + "nodemon": "3", "ts-node": "10", "typedoc": "0.22", "typedoc-theme-oxide": "0.1", @@ -71,10 +73,11 @@ "version": "2.1.1", "dependencies": { "@epfml/discojs-core": "*", - "@tensorflow/tfjs-node": "^4.17.0" + "@tensorflow/tfjs-node": "4" }, "devDependencies": { - "@types/node": "20" + "@types/node": "20", + "nodemon": "3" } }, "discojs/discojs-web": { @@ -82,6 +85,9 @@ "version": "2.1.1", "dependencies": { "@epfml/discojs-core": "*" + }, + "devDependencies": { + "nodemon": "3" } }, "node_modules/@aashutoshrathi/word-wrap": { @@ -285,9 +291,8 @@ }, "node_modules/@koush/wrtc": { "version": "0.5.3", - "resolved": "https://registry.npmjs.org/@koush/wrtc/-/wrtc-0.5.3.tgz", - "integrity": "sha512-hQqoSZS3/1pUJo3v91oXqFPRQZnqVxiGbEvYE4QsCGUv1hoqGyvr9Kj47RUP9xdYkHMra9HSWFqPj61U8PdSRQ==", "hasInstallScript": true, + "license": "BSD-2-Clause", "dependencies": { "@mapbox/node-pre-gyp": "^1.0.8", "nan": "^2.3.2", @@ -303,8 +308,7 @@ }, "node_modules/@mapbox/node-pre-gyp": { "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz", - "integrity": "sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==", + "license": "BSD-3-Clause", "dependencies": { "detect-libc": "^2.0.0", "https-proxy-agent": "^5.0.0", @@ -653,12 +657,6 @@ "@types/node": "*" } }, - "node_modules/@types/cookiejar": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@types/cookiejar/-/cookiejar-2.1.5.tgz", - "integrity": "sha512-he+DHOWReW0nghN24E1WUqM0efK4kI9oTqDm6XmK8ZPe2djZ90BSNdGnIyCLzCPw7/pogPlGbzI2wHGGmi4O/Q==", - "dev": true - }, "node_modules/@types/cors": { "version": "2.8.17", "dev": true, @@ -718,12 +716,6 @@ "version": "4.0.2", "license": "MIT" }, - "node_modules/@types/methods": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@types/methods/-/methods-1.1.4.tgz", - "integrity": "sha512-ymXWVrDiCxTBE3+RIrrP533E70eA+9qu7zdWoHuOmGujkYtzf4HQF96b8nwHLqhuf4ykX61IGRIB38CC6/sImQ==", - "dev": true - }, "node_modules/@types/mime": { "version": "1.3.5", "dev": true, @@ -801,26 +793,6 @@ "@types/node": "*" } }, - "node_modules/@types/superagent": { - "version": "8.1.3", - "resolved": "https://registry.npmjs.org/@types/superagent/-/superagent-8.1.3.tgz", - "integrity": "sha512-R/CfN6w2XsixLb1Ii8INfn+BT9sGPvw74OavfkW4SwY+jeUcAwLZv2+bXLJkndnimxjEBm0RPHgcjW9pLCa8cw==", - "dev": true, - "dependencies": { - "@types/cookiejar": "^2.1.5", - "@types/methods": "^1.1.4", - "@types/node": "*" - } - }, - "node_modules/@types/supertest": { - "version": "2.0.16", - "resolved": "https://registry.npmjs.org/@types/supertest/-/supertest-2.0.16.tgz", - "integrity": "sha512-6c2ogktZ06tr2ENoZivgm7YnprnhYE4ZoXGMY+oA7IuAf17M8FWvujXZGmxLv8y0PTyts4x5A+erSwVUFA8XSg==", - "dev": true, - "dependencies": { - "@types/superagent": "*" - } - }, "node_modules/@types/uuid": { "version": "9.0.8", "dev": true, @@ -1256,12 +1228,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", - "dev": true - }, "node_modules/assertion-error": { "version": "1.1.0", "dev": true, @@ -1583,8 +1549,7 @@ }, "node_modules/code-point-at": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -1728,15 +1693,6 @@ "node": ">=8" } }, - "node_modules/component-emitter": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz", - "integrity": "sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/concat-map": { "version": "0.0.1", "license": "MIT" @@ -1773,12 +1729,6 @@ "version": "1.0.6", "license": "MIT" }, - "node_modules/cookiejar": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz", - "integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==", - "dev": true - }, "node_modules/core-js": { "version": "3.29.1", "hasInstallScript": true, @@ -1952,16 +1902,6 @@ "node": ">=8" } }, - "node_modules/dezalgo": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", - "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==", - "dev": true, - "dependencies": { - "asap": "^2.0.0", - "wrappy": "1" - } - }, "node_modules/diff": { "version": "5.0.0", "dev": true, @@ -2018,9 +1958,7 @@ }, "node_modules/domexception": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", - "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", - "deprecated": "Use your platform's native DOMException instead", + "license": "MIT", "optional": true, "dependencies": { "webidl-conversions": "^4.0.2" @@ -2028,8 +1966,7 @@ }, "node_modules/domexception/node_modules/webidl-conversions": { "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "license": "BSD-2-Clause", "optional": true }, "node_modules/domhandler": { @@ -2816,12 +2753,6 @@ "dev": true, "license": "MIT" }, - "node_modules/fast-safe-stringify": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", - "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", - "dev": true - }, "node_modules/fastq": { "version": "1.17.0", "license": "ISC", @@ -2966,21 +2897,6 @@ "node": ">= 6" } }, - "node_modules/formidable": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/formidable/-/formidable-2.1.2.tgz", - "integrity": "sha512-CM3GuJ57US06mlpQ47YcunuUZ9jpm8Vx+P2CGt2j7HpgkKZO/DJYQ0Bobim8G6PFQmK5lOqOOdUXboU+h73A4g==", - "dev": true, - "dependencies": { - "dezalgo": "^1.0.4", - "hexoid": "^1.0.0", - "once": "^1.4.0", - "qs": "^6.11.0" - }, - "funding": { - "url": "https://ko-fi.com/tunnckoCore/commissions" - } - }, "node_modules/forwarded": { "version": "0.2.0", "license": "MIT", @@ -3312,15 +3228,6 @@ "he": "bin/he" } }, - "node_modules/hexoid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz", - "integrity": "sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/hosted-git-info": { "version": "2.8.9", "license": "ISC" @@ -3467,8 +3374,7 @@ }, "node_modules/invert-kv": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -3710,8 +3616,7 @@ }, "node_modules/is-utf8": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==" + "license": "MIT" }, "node_modules/is-weakref": { "version": "1.0.2", @@ -3796,8 +3701,7 @@ }, "node_modules/lcid": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha512-YiGkH6EnGrDGqLMITnGjXtGmNtjoXw9SVUzcaos8RBi7Ps0VBylkq+vOcY9QE5poLasPCR849ucFUkl0UzUyOw==", + "license": "MIT", "dependencies": { "invert-kv": "^1.0.0" }, @@ -3819,8 +3723,7 @@ }, "node_modules/load-json-file": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==", + "license": "MIT", "dependencies": { "graceful-fs": "^4.1.2", "parse-json": "^2.2.0", @@ -3834,8 +3737,7 @@ }, "node_modules/load-json-file/node_modules/strip-bom": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==", + "license": "MIT", "dependencies": { "is-utf8": "^0.2.0" }, @@ -3859,8 +3761,7 @@ }, "node_modules/lodash": { "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + "license": "MIT" }, "node_modules/lodash.camelcase": { "version": "4.3.0", @@ -4215,8 +4116,7 @@ }, "node_modules/nan": { "version": "2.18.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.18.0.tgz", - "integrity": "sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w==" + "license": "MIT" }, "node_modules/nanoid": { "version": "3.3.1", @@ -4243,13 +4143,11 @@ }, "node_modules/node-addon-api": { "version": "1.7.2", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.2.tgz", - "integrity": "sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg==" + "license": "MIT" }, "node_modules/node-cmake": { "version": "2.3.2", - "resolved": "https://registry.npmjs.org/node-cmake/-/node-cmake-2.3.2.tgz", - "integrity": "sha512-t3m0q/tB8b7eg1yAUZCx/UdC8bTPf9gNzQPWl+62fsLYE2pEeoU71auIYtgGos0G36jopbo+FCLini4NMzpFhg==", + "license": "ISC", "dependencies": { "nan": "*", "which": "^1.2.14", @@ -4261,24 +4159,21 @@ }, "node_modules/node-cmake/node_modules/ansi-regex": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/node-cmake/node_modules/camelcase": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha512-4nhGqUkc4BqbBBB4Q6zLuD7lzzrHYrjKGeYaEji/3tFR5VdJu9v+LilhGIVe8wxEJPPOeWo7eg8dwY13TZ1BNg==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/node-cmake/node_modules/cliui": { "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w==", + "license": "ISC", "dependencies": { "string-width": "^1.0.1", "strip-ansi": "^3.0.1", @@ -4287,21 +4182,18 @@ }, "node_modules/node-cmake/node_modules/decamelize": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/node-cmake/node_modules/get-caller-file": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==" + "license": "ISC" }, "node_modules/node-cmake/node_modules/is-fullwidth-code-point": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", + "license": "MIT", "dependencies": { "number-is-nan": "^1.0.0" }, @@ -4311,8 +4203,7 @@ }, "node_modules/node-cmake/node_modules/string-width": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", + "license": "MIT", "dependencies": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -4324,8 +4215,7 @@ }, "node_modules/node-cmake/node_modules/strip-ansi": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "license": "MIT", "dependencies": { "ansi-regex": "^2.0.0" }, @@ -4335,8 +4225,7 @@ }, "node_modules/node-cmake/node_modules/which": { "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -4346,8 +4235,7 @@ }, "node_modules/node-cmake/node_modules/wrap-ansi": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw==", + "license": "MIT", "dependencies": { "string-width": "^1.0.1", "strip-ansi": "^3.0.1" @@ -4358,13 +4246,11 @@ }, "node_modules/node-cmake/node_modules/y18n": { "version": "3.2.2", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", - "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==" + "license": "ISC" }, "node_modules/node-cmake/node_modules/yargs": { "version": "7.1.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.2.tgz", - "integrity": "sha512-ZEjj/dQYQy0Zx0lgLMLR8QuaqTihnxirir7EwUHp1Axq4e3+k8jXU5K0VLbNvedv1f4EWtBonDIZm0NUr+jCcA==", + "license": "MIT", "dependencies": { "camelcase": "^3.0.0", "cliui": "^3.2.0", @@ -4383,8 +4269,7 @@ }, "node_modules/node-cmake/node_modules/yargs-parser": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.1.tgz", - "integrity": "sha512-wpav5XYiddjXxirPoCTUPbqM0PXvJ9hiBMvuJgInvo4/lAOTZzUprArw17q2O1P2+GHhbBr18/iQwjL5Z9BqfA==", + "license": "ISC", "dependencies": { "camelcase": "^3.0.0", "object.assign": "^4.1.0" @@ -4408,6 +4293,55 @@ } } }, + "node_modules/nodemon": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.0.3.tgz", + "integrity": "sha512-7jH/NXbFPxVaMwmBCC2B9F/V6X1VkEdNgx3iu9jji8WxWcvhMWkmhNWhI5077zknOnZnBzba9hZP6bCPJLSReQ==", + "dev": true, + "dependencies": { + "chokidar": "^3.5.2", + "debug": "^4", + "ignore-by-default": "^1.0.1", + "minimatch": "^3.1.2", + "pstree.remy": "^1.1.8", + "semver": "^7.5.3", + "simple-update-notifier": "^2.0.0", + "supports-color": "^5.5.0", + "touch": "^3.1.0", + "undefsafe": "^2.0.5" + }, + "bin": { + "nodemon": "bin/nodemon.js" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nodemon" + } + }, + "node_modules/nodemon/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/nodemon/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/nopt": { "version": "5.0.0", "license": "ISC", @@ -4468,8 +4402,7 @@ }, "node_modules/number-is-nan": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -4589,8 +4522,7 @@ }, "node_modules/os-locale": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "integrity": "sha512-PRT7ZORmwu2MEFt4/fv3Q+mEfN4zetKxufQrkShY2oGvUms9r8otu5HfdyIFHkYXjO7laNsoVGmM2MANfuTA8g==", + "license": "MIT", "dependencies": { "lcid": "^1.0.0" }, @@ -4639,8 +4571,7 @@ }, "node_modules/parse-json": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==", + "license": "MIT", "dependencies": { "error-ex": "^1.2.0" }, @@ -4744,16 +4675,14 @@ }, "node_modules/pinkie": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/pinkie-promise": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", + "license": "MIT", "dependencies": { "pinkie": "^2.0.0" }, @@ -4860,8 +4789,7 @@ }, "node_modules/read-pkg": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ==", + "license": "MIT", "dependencies": { "load-json-file": "^1.0.0", "normalize-package-data": "^2.3.2", @@ -4873,8 +4801,7 @@ }, "node_modules/read-pkg-up": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A==", + "license": "MIT", "dependencies": { "find-up": "^1.0.0", "read-pkg": "^1.0.0" @@ -4885,8 +4812,7 @@ }, "node_modules/read-pkg-up/node_modules/find-up": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==", + "license": "MIT", "dependencies": { "path-exists": "^2.0.0", "pinkie-promise": "^2.0.0" @@ -4897,8 +4823,7 @@ }, "node_modules/read-pkg-up/node_modules/path-exists": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==", + "license": "MIT", "dependencies": { "pinkie-promise": "^2.0.0" }, @@ -4908,8 +4833,7 @@ }, "node_modules/read-pkg/node_modules/path-type": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==", + "license": "MIT", "dependencies": { "graceful-fs": "^4.1.2", "pify": "^2.0.0", @@ -4997,8 +4921,7 @@ }, "node_modules/require-main-filename": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug==" + "license": "ISC" }, "node_modules/resolve": { "version": "1.22.8", @@ -5307,6 +5230,18 @@ "readable-stream": "^3.6.0" } }, + "node_modules/simple-update-notifier": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz", + "integrity": "sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==", + "dev": true, + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/slash": { "version": "3.0.0", "dev": true, @@ -5460,52 +5395,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/superagent": { - "version": "8.1.2", - "resolved": "https://registry.npmjs.org/superagent/-/superagent-8.1.2.tgz", - "integrity": "sha512-6WTxW1EB6yCxV5VFOIPQruWGHqc3yI7hEmZK6h+pyk69Lk/Ut7rLUY6W/ONF2MjBuGjvmMiIpsrVJ2vjrHlslA==", - "dev": true, - "dependencies": { - "component-emitter": "^1.3.0", - "cookiejar": "^2.1.4", - "debug": "^4.3.4", - "fast-safe-stringify": "^2.1.1", - "form-data": "^4.0.0", - "formidable": "^2.1.2", - "methods": "^1.1.2", - "mime": "2.6.0", - "qs": "^6.11.0", - "semver": "^7.3.8" - }, - "engines": { - "node": ">=6.4.0 <13 || >=14" - } - }, - "node_modules/superagent/node_modules/mime": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", - "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", - "dev": true, - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/supertest": { - "version": "6.3.4", - "resolved": "https://registry.npmjs.org/supertest/-/supertest-6.3.4.tgz", - "integrity": "sha512-erY3HFDG0dPnhw4U+udPfrzXa4xhSG+n4rxfRuZWCUvjFWwKl+OxWf/7zk50s84/fAAs7vf5QAb9uRa0cCykxw==", - "dev": true, - "dependencies": { - "methods": "^1.1.2", - "superagent": "^8.1.2" - }, - "engines": { - "node": ">=6.4.0" - } - }, "node_modules/supports-color": { "version": "7.2.0", "license": "MIT", @@ -5593,8 +5482,7 @@ }, "node_modules/tar": { "version": "6.2.0", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.0.tgz", - "integrity": "sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==", + "license": "ISC", "dependencies": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", @@ -5712,8 +5600,7 @@ }, "node_modules/ts-node-register": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/ts-node-register/-/ts-node-register-1.0.0.tgz", - "integrity": "sha512-0i5qFowh0t1phylWB0Y0l6+K2bv1He0ncYhM+jLSzOWGYM37qjDQJQV5yER63+97q7VFETC5mkPXZH+4JgZlng==", + "license": "MIT", "dependencies": { "ts-node": ">=0.9.0" } @@ -6108,8 +5995,7 @@ }, "node_modules/which-module": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", - "integrity": "sha512-F6+WgncZi/mJDrammbTuHe1q0R5hOXv/mBaiNA2TCNT/LTHusX0V+CJnj9XT8ki5ln2UZyyddDgHfCzyrOH7MQ==" + "license": "ISC" }, "node_modules/which-typed-array": { "version": "1.1.14", @@ -6275,7 +6161,6 @@ "express": "4", "express-ws": "5", "immutable": "4", - "lodash": "4", "msgpack-lite": "0.1", "uuid": "9" }, @@ -6288,7 +6173,6 @@ "@types/express-ws": "3", "@types/mocha": "9", "@types/msgpack-lite": "0.1", - "@types/supertest": "2", "@types/uuid": "9", "@typescript-eslint/eslint-plugin": "4", "@typescript-eslint/parser": "4", @@ -6299,101 +6183,10 @@ "eslint-plugin-node": "11", "eslint-plugin-promise": "5", "mocha": "9", - "nodemon": "2", - "supertest": "6", - "ts-node": "10", - "ts-node-register": "1", + "nodemon": "3", "typescript": "4" } }, - "server/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "server/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "server/node_modules/nodemon": { - "version": "2.0.22", - "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.22.tgz", - "integrity": "sha512-B8YqaKMmyuCO7BowF1Z1/mkPqLk6cs/l63Ojtd6otKjMx47Dq1utxfRxcavH1I7VSaL8n5BUaoutadnsX3AAVQ==", - "dev": true, - "dependencies": { - "chokidar": "^3.5.2", - "debug": "^3.2.7", - "ignore-by-default": "^1.0.1", - "minimatch": "^3.1.2", - "pstree.remy": "^1.1.8", - "semver": "^5.7.1", - "simple-update-notifier": "^1.0.7", - "supports-color": "^5.5.0", - "touch": "^3.1.0", - "undefsafe": "^2.0.5" - }, - "bin": { - "nodemon": "bin/nodemon.js" - }, - "engines": { - "node": ">=8.10.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/nodemon" - } - }, - "server/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "server/node_modules/simple-update-notifier": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.1.0.tgz", - "integrity": "sha512-VpsrsJSUcJEseSbMHkrsrAVSdvVS5I96Qo1QAQ4FxQ9wXFcB+pjj7FB7/us9+GcgfW4ziHtYMc1J0PLczb55mg==", - "dev": true, - "dependencies": { - "semver": "~7.0.0" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "server/node_modules/simple-update-notifier/node_modules/semver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "server/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "web-client": { "name": "@epfml/disco-web-client", "dependencies": { diff --git a/server/package.json b/server/package.json index 065699aeb..f4b8834bb 100644 --- a/server/package.json +++ b/server/package.json @@ -6,12 +6,11 @@ "disco-server": "./dist/run_server.js" }, "scripts": { - "dev": "nodemon src/run_server.ts", - "start": "ts-node src/run_server.ts", + "watch": "nodemon --ext ts --ignore dist --watch ../discojs/discojs-node/dist --exec npm run", + "start": "npm run build && node dist/run_server.js", "build": "tsc", - "clean": "tsc --build --clean && rm -r dist || true", - "test": "mocha", - "lint": "npx eslint --max-warnings 0 ." + "lint": "npx eslint --max-warnings 0 .", + "test": "mocha" }, "author": "", "license": "ISC", @@ -22,26 +21,15 @@ "express": "4", "express-ws": "5", "immutable": "4", - "lodash": "4", "msgpack-lite": "0.1", "uuid": "9" }, - "nodemonConfig": { - "ignore": [ - "dist/*", - "models/*" - ], - "execMap": { - "ts": "node --inspect=0.0.0.0:9229 --nolazy -r ts-node/register" - } - }, "devDependencies": { "@types/chai": "4", "@types/cors": "2", "@types/express-ws": "3", "@types/mocha": "9", "@types/msgpack-lite": "0.1", - "@types/supertest": "2", "@types/uuid": "9", "@typescript-eslint/eslint-plugin": "4", "@typescript-eslint/parser": "4", @@ -52,10 +40,7 @@ "eslint-plugin-node": "11", "eslint-plugin-promise": "5", "mocha": "9", - "nodemon": "2", - "supertest": "6", - "ts-node": "10", - "ts-node-register": "1", + "nodemon": "3", "typescript": "4" }, "repository": { diff --git a/web-client/package.json b/web-client/package.json index 4e78257b7..1f75fa17e 100644 --- a/web-client/package.json +++ b/web-client/package.json @@ -2,14 +2,10 @@ "name": "@epfml/disco-web-client", "private": true, "scripts": { - "dev": "vue-cli-service serve", + "start": "vue-cli-service serve", "build": "vue-cli-service build", "lint": "vue-cli-service lint", - "test": "vue-cli-service test:unit tests", - "build17": "export NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service build", - "lint17": "export NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service lint", - "prod": "vue-cli-service serve --mode production", - "serve17": "export NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve" + "test": "vue-cli-service test:unit tests" }, "dependencies": { "@epfml/discojs": "*",