diff --git a/README.md b/README.md index 75f331963..7a6e661a7 100644 --- a/README.md +++ b/README.md @@ -31,23 +31,11 @@ docker pull verdaccio/verdaccio:5.x-next ## Development -The `5.x` still under development, key points: +Please check [docs/development.md](docs/development.md) for further notes. -- We use **pnpm** as monorepo management. `npm i -g pnpm@latest`. -- Please check [the roadmap](https://github.com/verdaccio/verdaccio/issues/1690) if you want to contribute +## Roadmap -``` -pnpm install -pnpm build -``` - -running the test - -``` -pnpm test -``` - -We are still experimenting with few things, be patience, Verdaccio v4 will run for still long period until this is getting done. +Please check [the roadmap](https://github.com/verdaccio/verdaccio/discussions/1690) if you are willing to contribute. ## Donations diff --git a/docs/development.md b/docs/development.md new file mode 100644 index 000000000..46463f187 --- /dev/null +++ b/docs/development.md @@ -0,0 +1,108 @@ +## Development notes + +The `5.x` still under development, key points: + +Ensure you have `nvm` installed or the latest Node.js (check `.nvmrc` +for mode details). + +```bash +nvm install +``` + +Verdaccio uses **pnpm** as monorepo management. To install + +```bash +npm i -g pnpm@latest +``` + +Install all needed packages + +```bash +pnpm install +``` + +For building the application: + +```bash +pnpm build +``` + +Running the test + +``` +pnpm test +``` + +### Running the application (with UI hot reloading) + +```bash +pnpm start +``` + +with hot reloading (server and UI), `nodemon` will restart the server and `babel` runs +in watch mode. + +```bash +pnpm start:watch +``` + +Running with `ts-node` + +``` +pnpm start:ts +``` + +### Running the Website + +We use _Gatsbyjs_ as development stack for website, +please [for more information check their official guidelines.](https://www.gatsbyjs.com/docs/quick-start/) + +``` +pnpm website:develop +``` + +### Running E2E + +For running the CLI test + +``` +pnpm test:e2e:cli +``` + +For running the UI test + +``` +pnpm test:e2e:ui +``` + +### Linting + +Linting the code. + +```bash +pnpm lint +``` + +For website runs + +```bash +pnpm website:lint +``` + +Formatting the code with prettier + +```bash +pnpm prettier +``` + +### Debugging + +Run the server in debug mode (it does not include UI hot reload) +with `--inspect` support. + +``` +pnpm debug +pnpm debug:break +``` + +> requires `pnpm build` previously diff --git a/nodemon.json b/nodemon.json new file mode 100644 index 000000000..80885c0b0 --- /dev/null +++ b/nodemon.json @@ -0,0 +1,16 @@ +{ + "verbose": false, + "ext": "ts,json,js", + "ignore": [ + "*.test.js", + "*.spec.js", + "website/*", + "test/*", + "assets/*", + "docker-examples/*", + "packages/plugins/ui-theme/*", + "scripts/*", + "systemd/*", + "docs/*" + ] +} diff --git a/package.json b/package.json index 2cc469eaa..171440c19 100644 --- a/package.json +++ b/package.json @@ -105,6 +105,7 @@ "lint-staged": "8.2.1", "nock": "12.0.3", "npm-run-all": "4.1.5", + "nodemon": "^2.0.6", "prettier": "2.0.5", "rimraf": "3.0.2", "selfsigned": "1.10.7", @@ -119,7 +120,6 @@ "verdaccio-memory": "workspace:*" }, "scripts": { - "dev": "cross-env BABEL_ENV=registry babel-node --extensions \".ts,.tsx\" packages/cli/src", "clean": "pnpm recursive run clean", "build": "pnpm recursive run build", "docker": "docker build -t verdaccio/verdaccio:local . --no-cache", @@ -129,12 +129,15 @@ "test": "pnpm recursive test --filter ./packages", "test:e2e:cli": "pnpm test --filter ...@verdaccio/e2e-cli", "test:e2e:ui": "pnpm test --filter ...@verdaccio/e2e-ui", - "start": "concurrently --kill-others \"pnpm start:server\" \"pnpm start:web\"", - "start:server": "node packages/verdaccio/debug/bootstrap.js --listen 8000", - "start:web": "pnpm start --filter ...@verdaccio/ui-theme", + "start": "concurrently --kill-others \"pnpm _start:server\" \"pnpm _start:web\"", + "start:watch": "concurrently --kill-others \"pnpm _build:watch\" \"pnpm _start:server\" \"pnpm _debug:reload\"", + "_build:watch": "pnpm run --parallel watch --filter ./packages", + "_start:server": "node packages/verdaccio/debug/bootstrap.js --listen 8000", + "_start:web": "pnpm start --filter ...@verdaccio/ui-theme", + "_debug:reload": "nodemon -d 3 packages/verdaccio/debug/bootstrap.js", "start:ts": "ts-node packages/verdaccio/src/start.ts -- --listen 8000", - "debug": "node --inspect packages/verdaccio/debug/bootstrap.js", - "debug:break": "node --inspect-brk packages/verdaccio/debug/bootstrap.js", + "debug": "node --inspect packages/verdaccio/debug/bootstrap.js", + "debug:break": "node --inspect-brk packages/verdaccio/debug/bootstrap.js", "website:lint": "cd website && yarn lint", "website:develop": "cd website && yarn develop", "website:build": "cd website && yarn build", diff --git a/packages/api/package.json b/packages/api/package.json index f5da6f4eb..9b694769b 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -19,6 +19,7 @@ "type-check": "tsc --noEmit -p tsconfig.build.json", "build:types": "tsc --emitDeclarationOnly -p tsconfig.build.json", "build:js": "babel src/ --out-dir build/ --copy-files --extensions \".ts,.tsx\" --source-maps", + "watch": "pnpm build:js -- --watch", "build": "pnpm run build:js && pnpm run build:types" }, "license": "MIT", diff --git a/packages/auth/package.json b/packages/auth/package.json index 7ad0fa550..543fa1efa 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -19,6 +19,7 @@ "type-check": "tsc --noEmit -p tsconfig.build.json", "build:types": "tsc --emitDeclarationOnly -p tsconfig.build.json", "build:js": "babel src/ --out-dir build/ --copy-files --extensions \".ts,.tsx\" --source-maps", + "watch": "pnpm build:js -- --watch", "build": "pnpm run build:js && pnpm run build:types" }, "license": "MIT", diff --git a/packages/cli/package.json b/packages/cli/package.json index 35e211b4e..d223db05e 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -24,6 +24,7 @@ "type-check": "tsc --noEmit -p tsconfig.build.json", "build:types": "tsc --emitDeclarationOnly -p tsconfig.build.json", "build:js": "babel src/ --out-dir build/ --copy-files --extensions \".ts,.tsx\" --source-maps", + "watch": "pnpm build:js -- --watch", "build": "pnpm run build:js && pnpm run build:types" }, "dependencies": { diff --git a/packages/config/package.json b/packages/config/package.json index 32ee94c84..9c3a8d7f4 100644 --- a/packages/config/package.json +++ b/packages/config/package.json @@ -20,6 +20,7 @@ "type-check": "tsc --noEmit -p tsconfig.build.json", "build:types": "tsc --emitDeclarationOnly -p tsconfig.build.json", "build:js": "babel src/ --out-dir build/ --copy-files --extensions \".ts,.tsx\" --source-maps", + "watch": "pnpm build:js -- --watch", "build": "pnpm run build:js && pnpm run build:types" }, "dependencies": { diff --git a/packages/core/commons-api/package.json b/packages/core/commons-api/package.json index bd83be54f..071a1ca61 100644 --- a/packages/core/commons-api/package.json +++ b/packages/core/commons-api/package.json @@ -38,6 +38,7 @@ "test": "cross-env NODE_ENV=test BABEL_ENV=test jest", "build:types": "tsc --emitDeclarationOnly -p tsconfig.build.json", "build:js": "babel src/ --out-dir build/ --copy-files --extensions \".ts,.tsx\" --source-maps", + "watch": "pnpm build:js -- --watch", "build": "pnpm run build:js && pnpm run build:types" }, "funding": { diff --git a/packages/core/file-locking/package.json b/packages/core/file-locking/package.json index b26f4e3e1..14ca4bb36 100644 --- a/packages/core/file-locking/package.json +++ b/packages/core/file-locking/package.json @@ -37,6 +37,7 @@ "test": "cross-env NODE_ENV=test BABEL_ENV=test jest", "build:types": "tsc --emitDeclarationOnly -p tsconfig.build.json", "build:js": "babel src/ --out-dir build/ --copy-files --extensions \".ts,.tsx\" --source-maps", + "watch": "pnpm build:js -- --watch", "build": "pnpm run build:js && pnpm run build:types" }, "funding": { diff --git a/packages/core/htpasswd/package.json b/packages/core/htpasswd/package.json index 97c8f1bfc..a897478e9 100644 --- a/packages/core/htpasswd/package.json +++ b/packages/core/htpasswd/package.json @@ -44,6 +44,7 @@ "type-check": "tsc --noEmit -p tsconfig.build.json", "build:types": "tsc --emitDeclarationOnly -p tsconfig.build.json", "build:js": "babel src/ --out-dir build/ --copy-files --extensions \".ts,.tsx\" --source-maps", + "watch": "pnpm build:js -- --watch", "build": "pnpm run build:js && pnpm run build:types" }, "funding": { diff --git a/packages/core/local-storage/package.json b/packages/core/local-storage/package.json index cad71be53..06a9cd90b 100644 --- a/packages/core/local-storage/package.json +++ b/packages/core/local-storage/package.json @@ -52,6 +52,7 @@ "type-check": "tsc --noEmit -p tsconfig.build.json", "build:types": "tsc --emitDeclarationOnly -p tsconfig.build.json", "build:js": "babel src/ --out-dir build/ --copy-files --extensions \".ts,.tsx\" --source-maps", + "watch": "pnpm build:js -- --watch", "build": "pnpm run build:js && pnpm run build:types" }, "funding": { diff --git a/packages/core/readme/package.json b/packages/core/readme/package.json index 2117025f0..cee92cd59 100644 --- a/packages/core/readme/package.json +++ b/packages/core/readme/package.json @@ -42,6 +42,7 @@ "test": "cross-env NODE_ENV=test BABEL_ENV=test jest", "build:types": "tsc --emitDeclarationOnly -p tsconfig.build.json", "build:js": "babel src/ --out-dir build/ --copy-files --extensions \".ts,.tsx\" --source-maps", + "watch": "pnpm build:js -- --watch", "build": "pnpm run build:js && pnpm run build:types" }, "funding": { diff --git a/packages/core/streams/package.json b/packages/core/streams/package.json index f60de2c40..ed0cdbe71 100644 --- a/packages/core/streams/package.json +++ b/packages/core/streams/package.json @@ -31,6 +31,7 @@ "type-check": "tsc --noEmit -p tsconfig.build.json", "build:types": "tsc --emitDeclarationOnly -p tsconfig.build.json", "build:js": "babel src/ --out-dir build/ --copy-files --extensions \".ts,.tsx\" --source-maps", + "watch": "pnpm build:js -- --watch", "build": "pnpm run build:js && pnpm run build:types" }, "funding": { diff --git a/packages/hooks/package.json b/packages/hooks/package.json index 2028a8570..f085d6cb3 100644 --- a/packages/hooks/package.json +++ b/packages/hooks/package.json @@ -35,6 +35,7 @@ "type-check": "tsc --noEmit -p tsconfig.build.json", "build:types": "tsc --emitDeclarationOnly -p tsconfig.build.json", "build:js": "babel src/ --out-dir build/ --copy-files --extensions \".ts,.tsx\" --source-maps", + "watch": "pnpm build:js -- --watch", "build": "pnpm run build:js && pnpm run build:types" }, "gitHead": "7c246ede52ff717707fcae66dd63fc4abd536982" diff --git a/packages/loaders/package.json b/packages/loaders/package.json index a6993d264..1e2383182 100644 --- a/packages/loaders/package.json +++ b/packages/loaders/package.json @@ -31,6 +31,7 @@ "type-check": "tsc --noEmit -p tsconfig.build.json", "build:types": "tsc --emitDeclarationOnly -p tsconfig.build.json", "build:js": "babel src/ --out-dir build/ --copy-files --extensions \".ts,.tsx\" --source-maps", + "watch": "pnpm build:js -- --watch", "build": "pnpm run build:js && pnpm run build:types" }, "gitHead": "7c246ede52ff717707fcae66dd63fc4abd536982" diff --git a/packages/logger-prettify/package.json b/packages/logger-prettify/package.json index 49b8b2bc8..49f48c7c8 100644 --- a/packages/logger-prettify/package.json +++ b/packages/logger-prettify/package.json @@ -20,6 +20,7 @@ "type-check": "tsc --noEmit -p tsconfig.build.json", "build:types": "tsc --emitDeclarationOnly -p tsconfig.build.json", "build:js": "babel src/ --out-dir build/ --copy-files --extensions \".ts,.tsx\" --source-maps", + "watch": "pnpm build:js -- --watch", "build": "pnpm run build:js && pnpm run build:types" }, "dependencies": { diff --git a/packages/logger/package.json b/packages/logger/package.json index 0fa39edcc..f35a76f80 100644 --- a/packages/logger/package.json +++ b/packages/logger/package.json @@ -20,6 +20,7 @@ "type-check": "tsc --noEmit -p tsconfig.build.json", "build:types": "tsc --emitDeclarationOnly -p tsconfig.build.json", "build:js": "babel src/ --out-dir build/ --copy-files --extensions \".ts,.tsx\" --source-maps", + "watch": "pnpm build:js -- --watch", "build": "cross-env BABEL_ENV=registry babel src/ --out-dir build/ --copy-files --extensions \".ts,.tsx\" --source-maps" }, "dependencies": { diff --git a/packages/middleware/package.json b/packages/middleware/package.json index 31ab2becc..08363d005 100644 --- a/packages/middleware/package.json +++ b/packages/middleware/package.json @@ -19,6 +19,7 @@ "type-check": "tsc --noEmit -p tsconfig.build.json", "build:types": "tsc --emitDeclarationOnly -p tsconfig.build.json", "build:js": "babel src/ --out-dir build/ --copy-files --extensions \".ts,.tsx\" --source-maps", + "watch": "pnpm build:js -- --watch", "build": "pnpm run build:js && pnpm run build:types" }, "dependencies": { diff --git a/packages/mock/package.json b/packages/mock/package.json index c6ad6ef4f..272714055 100644 --- a/packages/mock/package.json +++ b/packages/mock/package.json @@ -20,6 +20,7 @@ "type-check": "tsc --noEmit -p tsconfig.build.json", "build:types": "tsc --emitDeclarationOnly -p tsconfig.build.json", "build:js": "babel src/ --out-dir build/ --copy-files --extensions \".ts,.tsx\" --source-maps", + "watch": "pnpm build:js -- --watch", "build": "pnpm run build:js && pnpm run build:types" }, "dependencies": { diff --git a/packages/node-api/package.json b/packages/node-api/package.json index 113107b4a..792e6eace 100644 --- a/packages/node-api/package.json +++ b/packages/node-api/package.json @@ -18,6 +18,7 @@ "type-check": "tsc --noEmit -p tsconfig.build.json", "build:types": "tsc --emitDeclarationOnly -p tsconfig.build.json", "build:js": "babel src/ --out-dir build/ --copy-files --extensions \".ts,.tsx\" --source-maps", + "watch": "pnpm build:js -- --watch", "build": "pnpm run build:js && pnpm run build:types", "test": "cross-env NODE_ENV=test BABEL_ENV=test jest" }, diff --git a/packages/plugins/audit/package.json b/packages/plugins/audit/package.json index c83b8b220..ffa3c0a4a 100644 --- a/packages/plugins/audit/package.json +++ b/packages/plugins/audit/package.json @@ -38,6 +38,7 @@ "build:types": "tsc --emitDeclarationOnly -p tsconfig.build.json", "build:js": "babel src/ --out-dir build/ --copy-files --extensions \".ts,.tsx\" --source-maps", "build": "pnpm run build:js && pnpm run build:types", + "watch": "pnpm build:js -- --watch", "test": "cross-env NODE_ENV=test BABEL_ENV=test jest" }, "funding": { diff --git a/packages/plugins/auth-memory/package.json b/packages/plugins/auth-memory/package.json index c35a60ffc..31f48a45d 100644 --- a/packages/plugins/auth-memory/package.json +++ b/packages/plugins/auth-memory/package.json @@ -33,6 +33,7 @@ "build:types": "tsc --emitDeclarationOnly -p tsconfig.build.json", "build:js": "babel src/ --out-dir build/ --copy-files --extensions \".ts,.tsx\" --source-maps", "build": "pnpm run build:js && pnpm run build:types", + "watch": "pnpm build:js -- --watch", "test": "cross-env NODE_ENV=test BABEL_ENV=test jest" }, "funding": { diff --git a/packages/plugins/memory/package.json b/packages/plugins/memory/package.json index d3fe20a87..f9bb797c6 100644 --- a/packages/plugins/memory/package.json +++ b/packages/plugins/memory/package.json @@ -35,6 +35,7 @@ "build:types": "tsc --emitDeclarationOnly -p tsconfig.build.json", "build:js": "babel src/ --out-dir build/ --copy-files --extensions \".ts,.tsx\" --source-maps", "build": "pnpm run build:js && pnpm run build:types", + "watch": "pnpm build:js -- --watch", "test": "cross-env NODE_ENV=test BABEL_ENV=test jest" }, "funding": { diff --git a/packages/proxy/package.json b/packages/proxy/package.json index 3bed3e3ac..e5275df02 100644 --- a/packages/proxy/package.json +++ b/packages/proxy/package.json @@ -20,6 +20,7 @@ "type-check": "tsc --noEmit -p tsconfig.build.json", "build:types": "tsc --emitDeclarationOnly -p tsconfig.build.json", "build:js": "babel src/ --out-dir build/ --copy-files --extensions \".ts,.tsx\" --source-maps", + "watch": "pnpm build:js -- --watch", "build": "pnpm run build:js && pnpm run build:types" }, "dependencies": { diff --git a/packages/server/package.json b/packages/server/package.json index 0229acbf8..c9d4b743e 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -41,6 +41,7 @@ "test": "cross-env NODE_ENV=test BABEL_ENV=test jest", "type-check": "tsc --noEmit -p tsconfig.build.json", "build:types": "tsc --emitDeclarationOnly -p tsconfig.build.json", + "watch": "pnpm build:js -- --watch", "build:js": "babel src/ --out-dir build/ --copy-files --extensions \".ts,.tsx\" --source-maps", "build": "pnpm run build:js && pnpm run build:types" } diff --git a/packages/store/package.json b/packages/store/package.json index 4996f053b..e85ec8d3c 100644 --- a/packages/store/package.json +++ b/packages/store/package.json @@ -20,6 +20,7 @@ "type-check": "tsc --noEmit -p tsconfig.build.json", "build:types": "tsc --emitDeclarationOnly -p tsconfig.build.json", "build:js": "babel src/ --out-dir build/ --copy-files --extensions \".ts,.tsx\" --source-maps", + "watch": "pnpm build:js -- --watch", "build": "pnpm run build:js && pnpm run build:types" }, "dependencies": { diff --git a/packages/store/src/metadata-utils.ts b/packages/store/src/metadata-utils.ts index 0e442a1b7..1afc1a0e2 100644 --- a/packages/store/src/metadata-utils.ts +++ b/packages/store/src/metadata-utils.ts @@ -3,13 +3,12 @@ import _ from 'lodash'; import { DIST_TAGS } from '@verdaccio/commons-api'; import { Package } from '@verdaccio/types'; - /** * Function gets a local info and an info from uplinks and tries to merge it exported for unit tests only. * @param {*} local * @param {*} up - * @param {*} config + * @param {*} config sds * @static */ export function mergeVersions(local: Package, up: Package) { diff --git a/packages/utils/package.json b/packages/utils/package.json index afa90b7ff..96543b4a4 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -27,6 +27,7 @@ "type-check": "tsc --noEmit -p tsconfig.build.json", "build:types": "tsc --emitDeclarationOnly -p tsconfig.build.json", "build:js": "babel src/ --out-dir build/ --copy-files --extensions \".ts,.tsx\" --source-maps", + "watch": "pnpm build:js -- --watch", "build": "pnpm run build:js && pnpm run build:types" } } diff --git a/packages/web/package.json b/packages/web/package.json index ab1cd1dfb..5d55ab104 100644 --- a/packages/web/package.json +++ b/packages/web/package.json @@ -30,6 +30,7 @@ "type-check": "tsc --noEmit -p tsconfig.build.json", "build:types": "tsc --emitDeclarationOnly -p tsconfig.build.json", "build:js": "babel src/ --out-dir build/ --copy-files --extensions \".ts,.tsx\" --source-maps", + "watch": "pnpm build:js -- --watch", "build": "pnpm run build:js && pnpm run build:types" }, "gitHead": "7c246ede52ff717707fcae66dd63fc4abd536982" diff --git a/packages/web/src/web-api.ts b/packages/web/src/web-api.ts index 9d6998676..87498137a 100644 --- a/packages/web/src/web-api.ts +++ b/packages/web/src/web-api.ts @@ -19,10 +19,8 @@ export function webAPI(config: Config, auth: IAuth, storage: IStorageHandler): R SearchInstance.configureStorage(storage); // validate all of these params as a package name - // this might be too harsh, so ask if it causes trouble - // $FlowFixMe + // this might be too harsh, so ask if it causes trouble= route.param('package', validatePackage); - // $FlowFixMe route.param('filename', validateName); route.param('version', validateName); route.param('anything', match(/.*/)); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c0f7a8c75..5de3f027d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -91,6 +91,7 @@ importers: kleur: 3.0.3 lint-staged: 8.2.1 nock: 12.0.3 + nodemon: 2.0.6 npm-run-all: 4.1.5 prettier: 2.0.5 rimraf: 3.0.2 @@ -195,6 +196,7 @@ importers: kleur: 3.0.3 lint-staged: 8.2.1 nock: 12.0.3 + nodemon: ^2.0.6 npm-run-all: 4.1.5 prettier: 2.0.5 rimraf: 3.0.2 @@ -6177,7 +6179,6 @@ packages: resolution: integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ== /@sindresorhus/is/0.14.0: - dev: false engines: node: '>=6' resolution: @@ -6236,7 +6237,6 @@ packages: /@szmarczak/http-timer/1.1.2: dependencies: defer-to-connect: 1.1.3 - dev: false engines: node: '>=6' resolution: @@ -7515,6 +7515,10 @@ packages: /abab/2.0.4: resolution: integrity: sha512-Eu9ELJWCz/c1e9gTiCY+FceWxcqzjYEbqMgtndnuSqZSUCOL73TWNK2mHfIj4Cw2E/ongOp+JISVNCmovt2KYQ== + /abbrev/1.1.1: + dev: true + resolution: + integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== /abort-controller/3.0.0: dependencies: event-target-shim: 5.0.1 @@ -7768,7 +7772,6 @@ packages: /ansi-align/3.0.0: dependencies: string-width: 3.1.0 - dev: false resolution: integrity: sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw== /ansi-colors/3.2.4: @@ -8811,10 +8814,9 @@ packages: chalk: 3.0.0 cli-boxes: 2.2.0 string-width: 4.2.0 - term-size: 2.2.0 + term-size: 2.2.1 type-fest: 0.8.1 widest-line: 3.1.0 - dev: false engines: node: '>=8' resolution: @@ -9159,7 +9161,6 @@ packages: lowercase-keys: 2.0.0 normalize-url: 4.5.0 responselike: 1.0.2 - dev: false engines: node: '>=8' resolution: @@ -9498,7 +9499,6 @@ packages: dev: true engines: node: '>= 8.10.0' - optional: true optionalDependencies: fsevents: 2.1.3 resolution: @@ -9570,7 +9570,6 @@ packages: resolution: integrity: sha1-T6kXw+WclKAEzWH47lCdplFocUM= /cli-boxes/2.2.0: - dev: false engines: node: '>=6' resolution: @@ -9694,7 +9693,6 @@ packages: /clone-response/1.0.2: dependencies: mimic-response: 1.0.1 - dev: false resolution: integrity: sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws= /clone/1.0.4: @@ -9958,7 +9956,6 @@ packages: unique-string: 2.0.0 write-file-atomic: 3.0.3 xdg-basedir: 4.0.0 - dev: false engines: node: '>=8' resolution: @@ -10527,7 +10524,6 @@ packages: resolution: integrity: sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== /crypto-random-string/2.0.0: - dev: false engines: node: '>=8' resolution: @@ -10956,7 +10952,6 @@ packages: /decompress-response/3.3.0: dependencies: mimic-response: 1.0.1 - dev: false engines: node: '>=4' resolution: @@ -11090,7 +11085,6 @@ packages: resolution: integrity: sha1-xlYFHpgX2f8I7YgUd/P+QBnz730= /defer-to-connect/1.1.3: - dev: false resolution: integrity: sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ== /defer-to-connect/2.0.0: @@ -11513,7 +11507,6 @@ packages: /dot-prop/5.3.0: dependencies: is-obj: 2.0.0 - dev: false engines: node: '>=8' resolution: @@ -11582,7 +11575,6 @@ packages: resolution: integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== /duplexer3/0.1.4: - dev: false resolution: integrity: sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= /duplexify/3.7.1: @@ -11989,7 +11981,6 @@ packages: resolution: integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== /escape-goat/2.1.1: - dev: false engines: node: '>=8' resolution: @@ -14530,7 +14521,6 @@ packages: /global-dirs/2.0.1: dependencies: ini: 1.3.5 - dev: false engines: node: '>=8' resolution: @@ -14780,7 +14770,6 @@ packages: p-cancelable: 1.1.0 to-readable-stream: 1.0.0 url-parse-lax: 3.0.0 - dev: false engines: node: '>=8.6' resolution: @@ -15087,7 +15076,6 @@ packages: resolution: integrity: sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= /has-yarn/2.1.0: - dev: false engines: node: '>=8' resolution: @@ -15454,7 +15442,6 @@ packages: resolution: integrity: sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w== /http-cache-semantics/4.1.0: - dev: false resolution: integrity: sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== /http-deceiver/1.2.7: @@ -15659,6 +15646,10 @@ packages: dev: false resolution: integrity: sha1-xg7taebY/bazEEofy8ocGS3FtQE= + /ignore-by-default/1.0.1: + dev: true + resolution: + integrity: sha1-SMptcvbGo68Aqa1K5odr44ieKwk= /ignore-walk/3.0.3: dependencies: minimatch: 3.0.4 @@ -15768,7 +15759,6 @@ packages: resolution: integrity: sha1-M1238qev/VOqpHHUuAId7ja387E= /import-lazy/2.1.0: - dev: false engines: node: '>=4' resolution: @@ -16281,7 +16271,6 @@ packages: dependencies: global-dirs: 2.0.1 is-path-inside: 3.0.2 - dev: false engines: node: '>=8' resolution: @@ -16316,7 +16305,6 @@ packages: resolution: integrity: sha1-lVOxIbD6wohp2p7UWeIMdUN4hGE= /is-npm/4.0.0: - dev: false engines: node: '>=8' resolution: @@ -16596,7 +16584,6 @@ packages: resolution: integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== /is-yarn-global/0.3.0: - dev: false resolution: integrity: sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw== /is/3.3.0: @@ -17330,7 +17317,6 @@ packages: resolution: integrity: sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ== /json-buffer/3.0.0: - dev: false resolution: integrity: sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg= /json-buffer/3.0.1: @@ -17549,7 +17535,6 @@ packages: /keyv/3.1.0: dependencies: json-buffer: 3.0.0 - dev: false resolution: integrity: sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA== /keyv/4.0.1: @@ -17632,7 +17617,6 @@ packages: /latest-version/5.1.0: dependencies: package-json: 6.5.0 - dev: false engines: node: '>=8' resolution: @@ -18324,13 +18308,11 @@ packages: resolution: integrity: sha1-TjNms55/VFfjXxMkvfb4jQv8cwY= /lowercase-keys/1.0.1: - dev: false engines: node: '>=0.10.0' resolution: integrity: sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== /lowercase-keys/2.0.0: - dev: false engines: node: '>=8' resolution: @@ -18873,7 +18855,6 @@ packages: resolution: integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== /mimic-response/1.0.1: - dev: false engines: node: '>=4' resolution: @@ -19385,6 +19366,25 @@ packages: dev: true resolution: integrity: sha512-JHEQ1iWPGK+38VLB2H9ef2otU4l8s3yAMt9Xf934r6+ojCYDMHPMqvCc9TnzfeFSP1QEOeU6YZEd3+De0LTCgg== + /nodemon/2.0.6: + dependencies: + chokidar: 3.4.3 + debug: 3.2.6 + ignore-by-default: 1.0.1 + minimatch: 3.0.4 + pstree.remy: 1.1.8 + semver: 5.7.1 + supports-color: 5.5.0 + touch: 3.1.0 + undefsafe: 2.0.3 + update-notifier: 4.1.1 + dev: true + engines: + node: '>=8.10.0' + hasBin: true + requiresBuild: true + resolution: + integrity: sha512-4I3YDSKXg6ltYpcnZeHompqac4E6JeAMpGm8tJnB9Y3T0ehasLa4139dJOcCrB93HHrUMsCrKtoAlXTqT5n4AQ== /noms/0.0.0: dependencies: inherits: 2.0.4 @@ -19395,6 +19395,13 @@ packages: /noop-logger/0.1.1: resolution: integrity: sha1-lKKxYzxPExdVMAfYlm/Q6EG2pMI= + /nopt/1.0.10: + dependencies: + abbrev: 1.1.1 + dev: true + hasBin: true + resolution: + integrity: sha1-bd0hvSoxQXuScn3Vhfim83YI6+4= /normalize-package-data/2.5.0: dependencies: hosted-git-info: 2.8.8 @@ -19451,7 +19458,6 @@ packages: resolution: integrity: sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg== /normalize-url/4.5.0: - dev: false engines: node: '>=8' resolution: @@ -19975,7 +19981,6 @@ packages: resolution: integrity: sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ== /p-cancelable/1.1.0: - dev: false engines: node: '>=6' resolution: @@ -20181,7 +20186,6 @@ packages: registry-auth-token: 4.2.0 registry-url: 5.1.0 semver: 6.3.0 - dev: false engines: node: '>=8' resolution: @@ -21243,7 +21247,6 @@ packages: resolution: integrity: sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= /prepend-http/2.0.0: - dev: false engines: node: '>=4' resolution: @@ -21472,6 +21475,10 @@ packages: /psl/1.8.0: resolution: integrity: sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== + /pstree.remy/1.1.8: + dev: true + resolution: + integrity: sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w== /public-encrypt/4.0.3: dependencies: bn.js: 4.11.9 @@ -21526,7 +21533,6 @@ packages: /pupa/2.0.1: dependencies: escape-goat: 2.1.1 - dev: false engines: node: '>=8' resolution: @@ -22218,7 +22224,6 @@ packages: dev: true engines: node: '>=8.10.0' - optional: true resolution: integrity: sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ== /rechoir/0.6.2: @@ -22384,7 +22389,6 @@ packages: /registry-auth-token/4.2.0: dependencies: rc: 1.2.8 - dev: false engines: node: '>=6.0.0' resolution: @@ -22392,7 +22396,6 @@ packages: /registry-url/5.1.0: dependencies: rc: 1.2.8 - dev: false engines: node: '>=8' resolution: @@ -22801,7 +22804,6 @@ packages: /responselike/1.0.2: dependencies: lowercase-keys: 1.0.1 - dev: false resolution: integrity: sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec= /responselike/2.0.0: @@ -23120,7 +23122,6 @@ packages: /semver-diff/3.1.1: dependencies: semver: 6.3.0 - dev: false engines: node: '>=8' resolution: @@ -24693,14 +24694,7 @@ packages: node: '>=4' resolution: integrity: sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk= - /term-size/2.2.0: - dev: false - engines: - node: '>=8' - resolution: - integrity: sha512-a6sumDlzyHVJWb8+YofY4TW112G6p2FCPEAFk+59gIYHv3XHRhm9ltVQ9kli4hNWeQBwSpe8cRN25x0ROunMOw== /term-size/2.2.1: - dev: true engines: node: '>=8' resolution: @@ -24908,7 +24902,6 @@ packages: resolution: integrity: sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= /to-readable-stream/1.0.0: - dev: false engines: node: '>=6' resolution: @@ -24952,6 +24945,13 @@ packages: /toposort/2.0.2: resolution: integrity: sha1-riF2gXXRVZ1IvvNUILL0li8JwzA= + /touch/3.1.0: + dependencies: + nopt: 1.0.10 + dev: true + hasBin: true + resolution: + integrity: sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA== /tough-cookie/2.3.4: dependencies: punycode: 1.4.1 @@ -25279,6 +25279,12 @@ packages: node: '>=0.10.0' resolution: integrity: sha1-5z3T17DXxe2G+6xrCufYxqadUPo= + /undefsafe/2.0.3: + dependencies: + debug: 2.6.9 + dev: true + resolution: + integrity: sha512-nrXZwwXrD/T/JXeygJqdCO6NZZ1L66HrxM/Z7mIq2oPanoN0F1nLx3lwJMu6AwJY69hdixaFQOuoYsMjE5/C2A== /underscore.string/3.3.5: dependencies: sprintf-js: 1.1.2 @@ -25407,7 +25413,6 @@ packages: /unique-string/2.0.0: dependencies: crypto-random-string: 2.0.0 - dev: false engines: node: '>=8' resolution: @@ -25579,7 +25584,6 @@ packages: pupa: 2.0.1 semver-diff: 3.1.1 xdg-basedir: 4.0.0 - dev: false engines: node: '>=8' resolution: @@ -25634,7 +25638,6 @@ packages: /url-parse-lax/3.0.0: dependencies: prepend-http: 2.0.0 - dev: false engines: node: '>=4' resolution: @@ -26496,7 +26499,6 @@ packages: /widest-line/3.1.0: dependencies: string-width: 4.2.0 - dev: false engines: node: '>=8' resolution: @@ -26637,7 +26639,6 @@ packages: resolution: integrity: sha1-R0tQhlrzpJqcRlfwWs0UVFj3fYI= /xdg-basedir/4.0.0: - dev: false engines: node: '>=8' resolution: