diff --git a/CHANGELOG.md b/CHANGELOG.md index 02901acc9..e11d25549 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,125 @@ # Changelog +## [v1.5.0](https://github.com/UnchartedBull/OctoDash/tree/v1.5.0) (2020-05-15) + +[Full Changelog](https://github.com/UnchartedBull/OctoDash/compare/v1.4.1...v1.5.0) + +**Implemented enhancements:** + +- Model thumbnails for PrusaSlicer [\#633](https://github.com/UnchartedBull/OctoDash/issues/633) +- Add custom actions on "sleep" screen. [\#631](https://github.com/UnchartedBull/OctoDash/issues/631) +- Webcam Viewer [\#625](https://github.com/UnchartedBull/OctoDash/issues/625) +- Support for Prusa Thumbnails plugin [\#614](https://github.com/UnchartedBull/OctoDash/issues/614) +- Display preview images from Prusaslicer gcode [\#566](https://github.com/UnchartedBull/OctoDash/issues/566) +- Add refresh button to file screen [\#565](https://github.com/UnchartedBull/OctoDash/issues/565) +- OctoDash on Android [\#448](https://github.com/UnchartedBull/OctoDash/issues/448) +- Use FilamentManager [\#183](https://github.com/UnchartedBull/OctoDash/issues/183) +- Implement Change Filament Screen [\#14](https://github.com/UnchartedBull/OctoDash/issues/14) + +**Fixed bugs:** + +- Current feedrate not correctly shown in the adjust menu [\#640](https://github.com/UnchartedBull/OctoDash/issues/640) +- Update Setup API for new OctoPrint version [\#594](https://github.com/UnchartedBull/OctoDash/issues/594) +- Layer indicator not found in file [\#578](https://github.com/UnchartedBull/OctoDash/issues/578) +- Waveshare 3.5in Screen Not Detected [\#562](https://github.com/UnchartedBull/OctoDash/issues/562) +- Add connection attempt delay in X seconds for PSU Control [\#559](https://github.com/UnchartedBull/OctoDash/issues/559) +- Errors received when printing from sd [\#541](https://github.com/UnchartedBull/OctoDash/issues/541) +- Error always received on startup [\#539](https://github.com/UnchartedBull/OctoDash/issues/539) + +**Closed issues:** + +- Can't Install Octodash [\#620](https://github.com/UnchartedBull/OctoDash/issues/620) +- screensaver with hyperpixel 4" \(gpio\) [\#617](https://github.com/UnchartedBull/OctoDash/issues/617) +- only one underline in the upper left corner of the screen [\#615](https://github.com/UnchartedBull/OctoDash/issues/615) +- Development question [\#613](https://github.com/UnchartedBull/OctoDash/issues/613) +- Getting errors and Octodash wont start [\#609](https://github.com/UnchartedBull/OctoDash/issues/609) +- OctoDash on my master controller can't connect to my printer [\#596](https://github.com/UnchartedBull/OctoDash/issues/596) +- Can't install Octodash [\#593](https://github.com/UnchartedBull/OctoDash/issues/593) +- Does OctoDash work with square aspect ratio [\#579](https://github.com/UnchartedBull/OctoDash/issues/579) +- OctoScreen Rebooting Constanly [\#575](https://github.com/UnchartedBull/OctoDash/issues/575) +- cannot open display [\#574](https://github.com/UnchartedBull/OctoDash/issues/574) +- Explain ports and host in Troubleshooting guide [\#560](https://github.com/UnchartedBull/OctoDash/issues/560) +- How to get thumbnail pictures [\#556](https://github.com/UnchartedBull/OctoDash/issues/556) +- Development Question [\#544](https://github.com/UnchartedBull/OctoDash/issues/544) +- Cannot connect to octoprint [\#536](https://github.com/UnchartedBull/OctoDash/issues/536) +- Unable to view SD CARD files plugged into Prusa MK3S [\#481](https://github.com/UnchartedBull/OctoDash/issues/481) +- no start -bach: xinit: command not found [\#479](https://github.com/UnchartedBull/OctoDash/issues/479) +- IP Address/Hostname of Octoprint instance should be shown [\#465](https://github.com/UnchartedBull/OctoDash/issues/465) +- XDOTOOL CLICK LOCATIONS [\#463](https://github.com/UnchartedBull/OctoDash/issues/463) +- Support Pi Zero W. [\#462](https://github.com/UnchartedBull/OctoDash/issues/462) +- I find developer to add function to octodash [\#344](https://github.com/UnchartedBull/OctoDash/issues/344) + +**Merged pull requests:** + +- Bump @types/lodash from 4.14.150 to 4.14.151 [\#644](https://github.com/UnchartedBull/OctoDash/pull/644) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview)) +- Remember Feed- and Flow-Rate [\#643](https://github.com/UnchartedBull/OctoDash/pull/643) ([UnchartedBull](https://github.com/UnchartedBull)) +- Filament Change Process [\#642](https://github.com/UnchartedBull/OctoDash/pull/642) ([UnchartedBull](https://github.com/UnchartedBull)) +- Bump electron from 8.2.5 to 8.3.0 [\#641](https://github.com/UnchartedBull/OctoDash/pull/641) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview)) +- Bump @angular-devkit/build-angular from 0.901.5 to 0.901.6 [\#639](https://github.com/UnchartedBull/OctoDash/pull/639) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview)) +- Bump @angular/cli from 9.1.5 to 9.1.6 [\#638](https://github.com/UnchartedBull/OctoDash/pull/638) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview)) +- Bump tslib from 1.12.0 to 1.13.0 [\#637](https://github.com/UnchartedBull/OctoDash/pull/637) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview)) +- Bump @angular/language-service from 9.1.6 to 9.1.7 [\#636](https://github.com/UnchartedBull/OctoDash/pull/636) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview)) +- Bump @types/node from 14.0.0 to 14.0.1 [\#635](https://github.com/UnchartedBull/OctoDash/pull/635) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview)) +- Bump @types/node from 13.13.5 to 14.0.0 [\#634](https://github.com/UnchartedBull/OctoDash/pull/634) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview)) +- Bump tslib from 1.11.2 to 1.12.0 [\#632](https://github.com/UnchartedBull/OctoDash/pull/632) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview)) +- Bump @angular-devkit/build-angular from 0.901.4 to 0.901.5 [\#630](https://github.com/UnchartedBull/OctoDash/pull/630) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview)) +- Bump @angular/cli from 9.1.4 to 9.1.5 [\#629](https://github.com/UnchartedBull/OctoDash/pull/629) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview)) +- Bump @angular/language-service from 9.1.5 to 9.1.6 [\#628](https://github.com/UnchartedBull/OctoDash/pull/628) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview)) +- Bump @angular/language-service from 9.1.4 to 9.1.5 [\#626](https://github.com/UnchartedBull/OctoDash/pull/626) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview)) +- Bump tslib from 1.11.1 to 1.11.2 [\#621](https://github.com/UnchartedBull/OctoDash/pull/621) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview)) +- Bump @types/node from 13.13.4 to 13.13.5 [\#619](https://github.com/UnchartedBull/OctoDash/pull/619) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview)) +- Bump wait-on from 4.0.2 to 5.0.0 [\#618](https://github.com/UnchartedBull/OctoDash/pull/618) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview)) +- Bump ts-node from 8.10.0 to 8.10.1 [\#612](https://github.com/UnchartedBull/OctoDash/pull/612) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview)) +- Bump ts-node from 8.9.1 to 8.10.0 [\#611](https://github.com/UnchartedBull/OctoDash/pull/611) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview)) +- Bump electron from 8.2.4 to 8.2.5 [\#608](https://github.com/UnchartedBull/OctoDash/pull/608) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview)) +- Bump @angular-devkit/build-angular from 0.901.3 to 0.901.4 [\#606](https://github.com/UnchartedBull/OctoDash/pull/606) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview)) +- Bump @angular/cli from 9.1.3 to 9.1.4 [\#605](https://github.com/UnchartedBull/OctoDash/pull/605) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview)) +- Bump @angular/language-service from 9.1.3 to 9.1.4 [\#604](https://github.com/UnchartedBull/OctoDash/pull/604) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview)) +- Bump electron-builder from 22.5.1 to 22.6.0 [\#603](https://github.com/UnchartedBull/OctoDash/pull/603) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview)) +- Bump electron from 8.2.3 to 8.2.4 [\#602](https://github.com/UnchartedBull/OctoDash/pull/602) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview)) +- Additional Thumbnail Support [\#601](https://github.com/UnchartedBull/OctoDash/pull/601) ([jneilliii](https://github.com/jneilliii)) +- Bump eslint-plugin-simple-import-sort from 5.0.2 to 5.0.3 [\#600](https://github.com/UnchartedBull/OctoDash/pull/600) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview)) +- Bump @types/node from 13.13.3 to 13.13.4 [\#599](https://github.com/UnchartedBull/OctoDash/pull/599) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview)) +- Bump @types/node from 13.13.2 to 13.13.3 [\#598](https://github.com/UnchartedBull/OctoDash/pull/598) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview)) +- Bump ts-node from 8.9.0 to 8.9.1 [\#597](https://github.com/UnchartedBull/OctoDash/pull/597) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview)) +- Bump @angular-devkit/build-angular from 0.901.2 to 0.901.3 [\#592](https://github.com/UnchartedBull/OctoDash/pull/592) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview)) +- Bump @angular/cli from 9.1.2 to 9.1.3 [\#591](https://github.com/UnchartedBull/OctoDash/pull/591) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview)) +- Bump @angular/language-service from 9.1.2 to 9.1.3 [\#590](https://github.com/UnchartedBull/OctoDash/pull/590) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview)) +- Bump @types/node from 13.13.1 to 13.13.2 [\#589](https://github.com/UnchartedBull/OctoDash/pull/589) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview)) +- Bump eslint-config-prettier from 6.10.1 to 6.11.0 [\#588](https://github.com/UnchartedBull/OctoDash/pull/588) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview)) +- Bump @angular-devkit/build-angular from 0.901.1 to 0.901.2 [\#587](https://github.com/UnchartedBull/OctoDash/pull/587) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview)) +- Bump @angular/cli from 9.1.1 to 9.1.2 [\#586](https://github.com/UnchartedBull/OctoDash/pull/586) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview)) +- Bump prettier from 2.0.4 to 2.0.5 [\#585](https://github.com/UnchartedBull/OctoDash/pull/585) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview)) +- Bump ts-node from 8.8.2 to 8.9.0 [\#583](https://github.com/UnchartedBull/OctoDash/pull/583) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview)) +- Bump @types/node from 13.13.0 to 13.13.1 [\#582](https://github.com/UnchartedBull/OctoDash/pull/582) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview)) +- Bump ajv from 6.12.1 to 6.12.2 [\#581](https://github.com/UnchartedBull/OctoDash/pull/581) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview)) +- Bump ajv from 6.12.0 to 6.12.1 [\#580](https://github.com/UnchartedBull/OctoDash/pull/580) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview)) +- Bump @types/lodash from 4.14.149 to 4.14.150 [\#577](https://github.com/UnchartedBull/OctoDash/pull/577) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview)) +- Bump @types/node from 13.11.1 to 13.13.0 [\#576](https://github.com/UnchartedBull/OctoDash/pull/576) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview)) +- Bump electron from 8.2.2 to 8.2.3 [\#573](https://github.com/UnchartedBull/OctoDash/pull/573) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview)) +- Bump electron-builder from 22.4.1 to 22.5.1 [\#572](https://github.com/UnchartedBull/OctoDash/pull/572) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview)) +- Bump @angular/language-service from 9.1.1 to 9.1.2 [\#571](https://github.com/UnchartedBull/OctoDash/pull/571) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview)) +- Show preview while printing \(click on percentage\) [\#570](https://github.com/UnchartedBull/OctoDash/pull/570) ([UnchartedBull](https://github.com/UnchartedBull)) +- Properly handle Connection Errors [\#569](https://github.com/UnchartedBull/OctoDash/pull/569) ([UnchartedBull](https://github.com/UnchartedBull)) +- ignore first 500 error from enclosure plugin [\#568](https://github.com/UnchartedBull/OctoDash/pull/568) ([UnchartedBull](https://github.com/UnchartedBull)) +- Bump electron from 8.2.1 to 8.2.2 [\#567](https://github.com/UnchartedBull/OctoDash/pull/567) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview)) +- Bump eslint-plugin-prettier from 3.1.2 to 3.1.3 [\#564](https://github.com/UnchartedBull/OctoDash/pull/564) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview)) +- Add sdcard support [\#563](https://github.com/UnchartedBull/OctoDash/pull/563) ([harleyg321](https://github.com/harleyg321)) +- Bump wait-on from 4.0.1 to 4.0.2 [\#555](https://github.com/UnchartedBull/OctoDash/pull/555) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview)) +- Bump @types/node from 13.11.0 to 13.11.1 [\#554](https://github.com/UnchartedBull/OctoDash/pull/554) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview)) +- Bump @angular-devkit/build-angular from 0.901.0 to 0.901.1 [\#553](https://github.com/UnchartedBull/OctoDash/pull/553) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview)) +- Bump @angular/cli from 9.1.0 to 9.1.1 [\#552](https://github.com/UnchartedBull/OctoDash/pull/552) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview)) +- Bump @angular/language-service from 9.1.0 to 9.1.1 [\#551](https://github.com/UnchartedBull/OctoDash/pull/551) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview)) +- Bump electron from 8.2.0 to 8.2.1 [\#549](https://github.com/UnchartedBull/OctoDash/pull/549) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview)) +- Bump prettier from 2.0.3 to 2.0.4 [\#548](https://github.com/UnchartedBull/OctoDash/pull/548) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview)) +- Bump prettier from 2.0.2 to 2.0.3 [\#547](https://github.com/UnchartedBull/OctoDash/pull/547) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview)) +- Bump ts-node from 8.8.1 to 8.8.2 [\#545](https://github.com/UnchartedBull/OctoDash/pull/545) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview)) +- Bump rxjs from 6.5.4 to 6.5.5 [\#543](https://github.com/UnchartedBull/OctoDash/pull/543) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview)) +- Fix errors and unnecessary data shown when printing from SD [\#542](https://github.com/UnchartedBull/OctoDash/pull/542) ([harleyg321](https://github.com/harleyg321)) +- Go into standby if unable to contact OctoPrint [\#540](https://github.com/UnchartedBull/OctoDash/pull/540) ([harleyg321](https://github.com/harleyg321)) +- Bump ngx-spinner from 9.0.1 to 9.0.2 [\#538](https://github.com/UnchartedBull/OctoDash/pull/538) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview)) +- Bump @types/node from 13.9.8 to 13.11.0 [\#537](https://github.com/UnchartedBull/OctoDash/pull/537) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview)) + ## [v1.4.1](https://github.com/UnchartedBull/OctoDash/tree/v1.4.1) (2020-03-31) [Full Changelog](https://github.com/UnchartedBull/OctoDash/compare/v1.4.0...v1.4.1) diff --git a/README.md b/README.md index 873429b42..1e7ab5de1 100644 --- a/README.md +++ b/README.md @@ -47,9 +47,10 @@ For more info have a look at the [wiki](https://github.com/UnchartedBull/OctoDas ## Tips and Tricks -- OctoDash supports printing from your Raspberry and from the printers SD card, if configured in OctoPrint (v2.0.0 and up) -- OctoDash supports .ufp package preview images (v1.4.1 and up) -- You can also view the previews during print, if you press on the percentage inside the progress ring (v2.0.0 and up) +- OctoDash supports printing from your Raspberry and from the printers SD card, if configured in OctoPrint (v1.5.0 and up) +- OctoDash supports .ufp package and PrusaSlicer preview images (v1.5.0 and up) +- You can let OctoDash push out and pull in the filament during a filament change, if you setup your feed length correctly. (v1.5.0 and up) +- You can also view the previews during print, if you press on the percentage inside the progress ring (v1.5.0 and up) - You can press multiple arrows directly after another in the control view. All actions will be executed one after another, even if the prior didn't finish before pressing the button - The six actions on the right in the control view can be customized. They can either send GCode commands to your printer, restart OctoPrint or your Pi and even open iFrames so you can view your camera - You can adjust the temperatures in the home screen, by pressing on their icons (v1.4.1 and up) diff --git a/package-lock.json b/package-lock.json index 6b76e31e7..ee1e4d586 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "octodash", - "version": "1.4.1", + "version": "1.5.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -11,12 +11,12 @@ "dev": true }, "@angular-devkit/architect": { - "version": "0.901.3", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.901.3.tgz", - "integrity": "sha512-CFjSj48nOJwejmFFtenIqSZWyxRe4fRQsg16l0R4sagW7YwMJSaW6Yl9hRHM8bviPRrTpGHnxeq1x506v1ARLw==", + "version": "0.901.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.901.6.tgz", + "integrity": "sha512-0pWzn10gCZxMCrS62NlD38qE2R7l5fPfBuNylntNqvzw9L7iS1ARgqMlAKn8KLaNG6FrXONmgUWHsV987ZICIw==", "dev": true, "requires": { - "@angular-devkit/core": "9.1.3", + "@angular-devkit/core": "9.1.6", "rxjs": "6.5.4" }, "dependencies": { @@ -32,21 +32,21 @@ } }, "@angular-devkit/build-angular": { - "version": "0.901.3", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-0.901.3.tgz", - "integrity": "sha512-0ivl+rxiFWY/cWpAhflaJfUmTGNRZn3m4gyt0YNFyHh7oJcwKFVpd9lxJAM4t47Xfyj0ICpTL99UBi4aeo3lEg==", + "version": "0.901.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-0.901.6.tgz", + "integrity": "sha512-jgLFKRWSZIZZVb7fiGC0SHzBFYBkDOLTw/MRta8p81o8WzLe0uxGVP4RlIj6fZxv3Vvb1NZI4HHrgt/jASaj4A==", "dev": true, "requires": { - "@angular-devkit/architect": "0.901.3", - "@angular-devkit/build-optimizer": "0.901.3", - "@angular-devkit/build-webpack": "0.901.3", - "@angular-devkit/core": "9.1.3", + "@angular-devkit/architect": "0.901.6", + "@angular-devkit/build-optimizer": "0.901.6", + "@angular-devkit/build-webpack": "0.901.6", + "@angular-devkit/core": "9.1.6", "@babel/core": "7.9.0", "@babel/generator": "7.9.3", "@babel/preset-env": "7.9.0", "@babel/template": "7.8.6", "@jsdevtools/coverage-istanbul-loader": "3.0.3", - "@ngtools/webpack": "9.1.3", + "@ngtools/webpack": "9.1.6", "ajv": "6.12.0", "autoprefixer": "9.7.4", "babel-loader": "8.0.6", @@ -97,7 +97,7 @@ "webpack-merge": "4.2.2", "webpack-sources": "1.4.3", "webpack-subresource-integrity": "1.4.0", - "worker-plugin": "4.0.2" + "worker-plugin": "4.0.3" }, "dependencies": { "ajv": { @@ -150,9 +150,9 @@ } }, "@angular-devkit/build-optimizer": { - "version": "0.901.3", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.901.3.tgz", - "integrity": "sha512-fLRiQ1egH1qsmj5GMJ4ZWawtUYLwpIz1hKJ3WwAIFEFJF2+CDWhO1feUaXZRxPf5qwoj8S+8cSWjdcnKLf/mBw==", + "version": "0.901.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.901.6.tgz", + "integrity": "sha512-M0H9SrOq4QOYqGCIguGQDWizf+XL7whJjBtYHxI7jEjtzar3zkTFgzZ/znv49R56Zch1niH0mBgtDxCFFWqarQ==", "dev": true, "requires": { "loader-utils": "2.0.0", @@ -162,6 +162,12 @@ "webpack-sources": "1.4.3" }, "dependencies": { + "tslib": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", + "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==", + "dev": true + }, "typescript": { "version": "3.6.5", "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.6.5.tgz", @@ -171,13 +177,13 @@ } }, "@angular-devkit/build-webpack": { - "version": "0.901.3", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.901.3.tgz", - "integrity": "sha512-tZOiVNCrKaEAo7SuyXPpOoaPy/pbX70G8NFtyhKvoGt5dPbgybWTlibACyzOciBI9wUlGSaJiGPZzKTgL4O5OA==", + "version": "0.901.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.901.6.tgz", + "integrity": "sha512-jEk850AtIFK+xbXXiloVvueXTbJOL1mANR2UBrmWk7V4Bct+gHVerdXjn9vo1Tsd8BgemUYAcqvLldCx9MSDTg==", "dev": true, "requires": { - "@angular-devkit/architect": "0.901.3", - "@angular-devkit/core": "9.1.3", + "@angular-devkit/architect": "0.901.6", + "@angular-devkit/core": "9.1.6", "rxjs": "6.5.4" }, "dependencies": { @@ -193,9 +199,9 @@ } }, "@angular-devkit/core": { - "version": "9.1.3", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-9.1.3.tgz", - "integrity": "sha512-VRV96prPy0Kdlm6XmI7DITqSMSc1bINimnOhzQre3euDX5OQty+EUqaexHtMv/SPDZX1agP+buHr6viv9YEhzA==", + "version": "9.1.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-9.1.6.tgz", + "integrity": "sha512-lYXoRtsMsfyIrNAa49Hcx79FPRW6ZrWjK2yJ3avON1Q3WEHYb/DIUP+ItyOQAkNUsCVMyK4wkddsu8PsqEW6tg==", "dev": true, "requires": { "ajv": "6.12.0", @@ -238,20 +244,20 @@ } }, "@angular-devkit/schematics": { - "version": "9.1.3", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-9.1.3.tgz", - "integrity": "sha512-nNRoQPqoin5jzLKmTabIPLSqVw2Zjnk78XC4AhAM7rSisWMsZ6pw5+BNDITiKfq0LkSXfOs0DoJV/Vr9mLkn/A==", + "version": "9.1.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-9.1.6.tgz", + "integrity": "sha512-twS8Sxc6NG4A0n7yITugP0snIMJ2Rm6aOGkckomWjZAP1fPo8pup8EFGc5wUBAtAOM3DJBphEnskpwEWCkBaLg==", "dev": true, "requires": { - "@angular-devkit/core": "9.1.3", + "@angular-devkit/core": "9.1.6", "ora": "4.0.3", "rxjs": "6.5.4" }, "dependencies": { "@angular-devkit/core": { - "version": "9.1.3", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-9.1.3.tgz", - "integrity": "sha512-VRV96prPy0Kdlm6XmI7DITqSMSc1bINimnOhzQre3euDX5OQty+EUqaexHtMv/SPDZX1agP+buHr6viv9YEhzA==", + "version": "9.1.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-9.1.6.tgz", + "integrity": "sha512-lYXoRtsMsfyIrNAa49Hcx79FPRW6ZrWjK2yJ3avON1Q3WEHYb/DIUP+ItyOQAkNUsCVMyK4wkddsu8PsqEW6tg==", "dev": true, "requires": { "ajv": "6.12.0", @@ -307,16 +313,16 @@ } }, "@angular/cli": { - "version": "9.1.3", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-9.1.3.tgz", - "integrity": "sha512-/7yHOuiyMgpcoBuADPrF4Eo9VDysA57fsyrMlOH2WZmKdsjW032StS9EIOue5RNQ7y0DwrtgtnkjbpZ6nYo3Pw==", + "version": "9.1.6", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-9.1.6.tgz", + "integrity": "sha512-hQnad0LQx0n+FiMRUV2RX9+L0dLsISu7uzimGLjgJVtW6Bc1cVnaTkKhOqHRQG2Q4Iv8adKWf5UL5tMZz/roDA==", "dev": true, "requires": { - "@angular-devkit/architect": "0.901.3", - "@angular-devkit/core": "9.1.3", - "@angular-devkit/schematics": "9.1.3", - "@schematics/angular": "9.1.3", - "@schematics/update": "0.901.3", + "@angular-devkit/architect": "0.901.6", + "@angular-devkit/core": "9.1.6", + "@angular-devkit/schematics": "9.1.6", + "@schematics/angular": "9.1.6", + "@schematics/update": "0.901.6", "@yarnpkg/lockfile": "1.1.0", "ansi-colors": "4.1.1", "debug": "4.1.1", @@ -335,19 +341,19 @@ }, "dependencies": { "@angular-devkit/architect": { - "version": "0.901.3", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.901.3.tgz", - "integrity": "sha512-CFjSj48nOJwejmFFtenIqSZWyxRe4fRQsg16l0R4sagW7YwMJSaW6Yl9hRHM8bviPRrTpGHnxeq1x506v1ARLw==", + "version": "0.901.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.901.6.tgz", + "integrity": "sha512-0pWzn10gCZxMCrS62NlD38qE2R7l5fPfBuNylntNqvzw9L7iS1ARgqMlAKn8KLaNG6FrXONmgUWHsV987ZICIw==", "dev": true, "requires": { - "@angular-devkit/core": "9.1.3", + "@angular-devkit/core": "9.1.6", "rxjs": "6.5.4" } }, "@angular-devkit/core": { - "version": "9.1.3", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-9.1.3.tgz", - "integrity": "sha512-VRV96prPy0Kdlm6XmI7DITqSMSc1bINimnOhzQre3euDX5OQty+EUqaexHtMv/SPDZX1agP+buHr6viv9YEhzA==", + "version": "9.1.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-9.1.6.tgz", + "integrity": "sha512-lYXoRtsMsfyIrNAa49Hcx79FPRW6ZrWjK2yJ3avON1Q3WEHYb/DIUP+ItyOQAkNUsCVMyK4wkddsu8PsqEW6tg==", "dev": true, "requires": { "ajv": "6.12.0", @@ -529,9 +535,9 @@ "integrity": "sha512-PaHAmjMJDtg/3aGCPuq5BCRC1eZ/DBCpva9f7NrA1kqk0LcLdebm0v2uHwTOBtiz/VEgPvxiS4tXC4rjvUtfEg==" }, "@angular/language-service": { - "version": "9.1.3", - "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-9.1.3.tgz", - "integrity": "sha512-mcZDO6C2BpDinMjDeMAdohTefpFxNu/S0JEqewYQIQ8TXtKm77xDPUdNdNb4qD4zYW+c46f7UXNMX/tbYCicQw==", + "version": "9.1.7", + "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-9.1.7.tgz", + "integrity": "sha512-p4WOZFCn6H5qgII9MbPjSu/AErt0rXpsXlMHC9KJl+JgfPI3YwQuX1dLdt3xTJlxuv8/fY9UbgmPJUqR/txRCg==", "dev": true }, "@angular/material": { @@ -564,12 +570,12 @@ } }, "@babel/compat-data": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.9.0.tgz", - "integrity": "sha512-zeFQrr+284Ekvd9e7KAX954LkapWiOmQtsfHirhxqfdlX6MEC32iRE+pqUGlYIBchdevaCwvzxWGSy/YBNI85g==", + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.9.6.tgz", + "integrity": "sha512-5QPTrNen2bm7RBc7dsOmcA5hbrS4O2Vhmk5XOL4zWW/zD/hV0iinpefDlkm+tBBy8kDtFaaeEvmAqt+nURAV2g==", "dev": true, "requires": { - "browserslist": "^4.9.1", + "browserslist": "^4.11.1", "invariant": "^2.2.4", "semver": "^5.5.0" }, @@ -660,13 +666,13 @@ } }, "@babel/helper-compilation-targets": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.8.7.tgz", - "integrity": "sha512-4mWm8DCK2LugIS+p1yArqvG1Pf162upsIsjE7cNBjez+NjliQpVhj20obE520nao0o14DaTnFJv+Fw5a0JpoUw==", + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.9.6.tgz", + "integrity": "sha512-x2Nvu0igO0ejXzx09B/1fGBxY9NXQlBW2kZsSxCJft+KHN8t9XWzIvFxtPHnBOAXpVsdxZKZFbRUC8TsNKajMw==", "dev": true, "requires": { - "@babel/compat-data": "^7.8.6", - "browserslist": "^4.9.1", + "@babel/compat-data": "^7.9.6", + "browserslist": "^4.11.1", "invariant": "^2.2.4", "levenary": "^1.1.1", "semver": "^5.5.0" @@ -812,15 +818,15 @@ } }, "@babel/helper-replace-supers": { - "version": "7.8.6", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.8.6.tgz", - "integrity": "sha512-PeMArdA4Sv/Wf4zXwBKPqVj7n9UF/xg6slNRtZW84FM7JpE1CbG8B612FyM4cxrf4fMAMGO0kR7voy1ForHHFA==", + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.9.6.tgz", + "integrity": "sha512-qX+chbxkbArLyCImk3bWV+jB5gTNU/rsze+JlcF6Nf8tVTigPJSI1o1oBow/9Resa1yehUO9lIipsmu9oG4RzA==", "dev": true, "requires": { "@babel/helper-member-expression-to-functions": "^7.8.3", "@babel/helper-optimise-call-expression": "^7.8.3", - "@babel/traverse": "^7.8.6", - "@babel/types": "^7.8.6" + "@babel/traverse": "^7.9.6", + "@babel/types": "^7.9.6" } }, "@babel/helper-simple-access": { @@ -861,14 +867,14 @@ } }, "@babel/helpers": { - "version": "7.9.2", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.9.2.tgz", - "integrity": "sha512-JwLvzlXVPjO8eU9c/wF9/zOIN7X6h8DYf7mG4CiFRZRvZNKEF5dQ3H3V+ASkHoIB3mWhatgl5ONhyqHRI6MppA==", + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.9.6.tgz", + "integrity": "sha512-tI4bUbldloLcHWoRUMAj4g1bF313M/o6fBKhIsb3QnGVPwRm9JsNf/gqMkQ7zjqReABiffPV6RWj7hEglID5Iw==", "dev": true, "requires": { "@babel/template": "^7.8.3", - "@babel/traverse": "^7.9.0", - "@babel/types": "^7.9.0" + "@babel/traverse": "^7.9.6", + "@babel/types": "^7.9.6" } }, "@babel/highlight": { @@ -883,9 +889,9 @@ } }, "@babel/parser": { - "version": "7.9.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz", - "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==", + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.6.tgz", + "integrity": "sha512-AoeIEJn8vt+d/6+PXDRPaksYhnlbMIiejioBZvvMQsOjW/JYK6k/0dKnvvP3EhK5GfMBWDPtrxRtegWdAcdq9Q==", "dev": true }, "@babel/plugin-proposal-async-generator-functions": { @@ -940,9 +946,9 @@ } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.9.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.9.5.tgz", - "integrity": "sha512-VP2oXvAf7KCYTthbUHwBlewbl1Iq059f6seJGsxMizaCdgHIeczOr7FBqELhSqfkIl04Fi8okzWzl63UKbQmmg==", + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.9.6.tgz", + "integrity": "sha512-Ga6/fhGqA9Hj+y6whNpPv8psyaK5xzrQwSPsGPloVkvmH+PqW1ixdnfJ9uIO06OjQNYol3PMnfmJ8vfZtkzF+A==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.3", @@ -1201,38 +1207,38 @@ } }, "@babel/plugin-transform-modules-amd": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.9.0.tgz", - "integrity": "sha512-vZgDDF003B14O8zJy0XXLnPH4sg+9X5hFBBGN1V+B2rgrB+J2xIypSN6Rk9imB2hSTHQi5OHLrFWsZab1GMk+Q==", + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.9.6.tgz", + "integrity": "sha512-zoT0kgC3EixAyIAU+9vfaUVKTv9IxBDSabgHoUCBP6FqEJ+iNiN7ip7NBKcYqbfUDfuC2mFCbM7vbu4qJgOnDw==", "dev": true, "requires": { "@babel/helper-module-transforms": "^7.9.0", "@babel/helper-plugin-utils": "^7.8.3", - "babel-plugin-dynamic-import-node": "^2.3.0" + "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.9.0.tgz", - "integrity": "sha512-qzlCrLnKqio4SlgJ6FMMLBe4bySNis8DFn1VkGmOcxG9gqEyPIOzeQrA//u0HAKrWpJlpZbZMPB1n/OPa4+n8g==", + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.9.6.tgz", + "integrity": "sha512-7H25fSlLcn+iYimmsNe3uK1at79IE6SKW9q0/QeEHTMC9MdOZ+4bA+T1VFB5fgOqBWoqlifXRzYD0JPdmIrgSQ==", "dev": true, "requires": { "@babel/helper-module-transforms": "^7.9.0", "@babel/helper-plugin-utils": "^7.8.3", "@babel/helper-simple-access": "^7.8.3", - "babel-plugin-dynamic-import-node": "^2.3.0" + "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.9.0.tgz", - "integrity": "sha512-FsiAv/nao/ud2ZWy4wFacoLOm5uxl0ExSQ7ErvP7jpoihLR6Cq90ilOFyX9UXct3rbtKsAiZ9kFt5XGfPe/5SQ==", + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.9.6.tgz", + "integrity": "sha512-NW5XQuW3N2tTHim8e1b7qGy7s0kZ2OH3m5octc49K1SdAKGxYxeIx7hiIz05kS1R2R+hOWcsr1eYwcGhrdHsrg==", "dev": true, "requires": { "@babel/helper-hoist-variables": "^7.8.3", "@babel/helper-module-transforms": "^7.9.0", "@babel/helper-plugin-utils": "^7.8.3", - "babel-plugin-dynamic-import-node": "^2.3.0" + "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-umd": { @@ -1457,9 +1463,9 @@ } }, "@babel/runtime": { - "version": "7.9.2", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.2.tgz", - "integrity": "sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==", + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.6.tgz", + "integrity": "sha512-64AF1xY3OAkFHqOb9s4jpgk1Mm5vDZ4L3acHvAml+53nO1XbXLuDodsVpO4OIUsmemlUHMxNdYMNJmsvOwLrvQ==", "dev": true, "requires": { "regenerator-runtime": "^0.13.4" @@ -1477,29 +1483,29 @@ } }, "@babel/traverse": { - "version": "7.9.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.5.tgz", - "integrity": "sha512-c4gH3jsvSuGUezlP6rzSJ6jf8fYjLj3hsMZRx/nX0h+fmHN0w+ekubRrHPqnMec0meycA2nwCsJ7dC8IPem2FQ==", + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.6.tgz", + "integrity": "sha512-b3rAHSjbxy6VEAvlxM8OV/0X4XrG72zoxme6q1MOoe2vd0bEc+TwayhuC1+Dfgqh1QEG+pj7atQqvUprHIccsg==", "dev": true, "requires": { "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.9.5", + "@babel/generator": "^7.9.6", "@babel/helper-function-name": "^7.9.5", "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/parser": "^7.9.0", - "@babel/types": "^7.9.5", + "@babel/parser": "^7.9.6", + "@babel/types": "^7.9.6", "debug": "^4.1.0", "globals": "^11.1.0", "lodash": "^4.17.13" }, "dependencies": { "@babel/generator": { - "version": "7.9.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.5.tgz", - "integrity": "sha512-GbNIxVB3ZJe3tLeDm1HSn2AhuD/mVcyLDpgtLXa5tplmWrJdF/elxB56XNqCuD6szyNkDi6wuoKXln3QeBmCHQ==", + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.6.tgz", + "integrity": "sha512-+htwWKJbH2bL72HRluF8zumBxzuX0ZZUFl3JLNyoUjM/Ho8wnVpPXM6aUz8cfKDqQ/h7zHqKt4xzJteUosckqQ==", "dev": true, "requires": { - "@babel/types": "^7.9.5", + "@babel/types": "^7.9.6", "jsesc": "^2.5.1", "lodash": "^4.17.13", "source-map": "^0.5.0" @@ -1514,9 +1520,9 @@ } }, "@babel/types": { - "version": "7.9.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz", - "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==", + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.6.tgz", + "integrity": "sha512-qxXzvBO//jO9ZnoasKF1uJzHd2+M6Q2ZPIVfnFps8JJvXy0ZBbwbNOmE6SGIY5XOY6d1Bo5lb9d9RJ8nv3WSeA==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.9.5", @@ -1543,9 +1549,9 @@ } }, "@electron/get": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/@electron/get/-/get-1.10.0.tgz", - "integrity": "sha512-hlueNXU51c3CwQjBw/i5fwt+VfQgSQVUTdicpCHkhEjNZaa4CXJ5W1GaxSwtLE2dvRmAHjpIjUMHTqJ53uojfg==", + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@electron/get/-/get-1.12.2.tgz", + "integrity": "sha512-vAuHUbfvBQpYTJ5wB7uVIDq5c/Ry0fiTBMs7lnEYAo/qXXppIVcWdfBr57u6eRnKdVso7KSiH6p/LbQAG6Izrg==", "dev": true, "requires": { "debug": "^4.1.1", @@ -1696,12 +1702,12 @@ } }, "@ngtools/webpack": { - "version": "9.1.3", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-9.1.3.tgz", - "integrity": "sha512-yQ7LHqICC1Xf4E4Jw1jDCAJHYwPX7T7mRFxMd+R/0EBDcz1XBSh85+vnVs2PoJHVH+8ONOEkZKKSjABe1CZUvg==", + "version": "9.1.6", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-9.1.6.tgz", + "integrity": "sha512-W/9kENoiYARDGXqXSmOekQddUlQUVxfYP7JgQwqdg7JYktIpThicbV/iLBChZwWnmn9mb7MDw1IPeUTkZzrO2Q==", "dev": true, "requires": { - "@angular-devkit/core": "9.1.3", + "@angular-devkit/core": "9.1.6", "enhanced-resolve": "4.1.1", "rxjs": "6.5.4", "webpack-sources": "1.4.3" @@ -1719,19 +1725,19 @@ } }, "@schematics/angular": { - "version": "9.1.3", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-9.1.3.tgz", - "integrity": "sha512-3vxrPyvcIWvyWgbx/fpeQvMThXlmcnHTXVn2dpTcE2BzstAYdG17W3qouhvmlqd6m28orxkKKiZaJYMNTtnV/A==", + "version": "9.1.6", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-9.1.6.tgz", + "integrity": "sha512-Q9lPTf1/pXBWuFOLzwtrU88Gwkfn9JLiSb45xSQZ771cCD68tZyL4V9fH+u7139y3H3ID2xebMs7WiddAERLyw==", "dev": true, "requires": { - "@angular-devkit/core": "9.1.3", - "@angular-devkit/schematics": "9.1.3" + "@angular-devkit/core": "9.1.6", + "@angular-devkit/schematics": "9.1.6" }, "dependencies": { "@angular-devkit/core": { - "version": "9.1.3", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-9.1.3.tgz", - "integrity": "sha512-VRV96prPy0Kdlm6XmI7DITqSMSc1bINimnOhzQre3euDX5OQty+EUqaexHtMv/SPDZX1agP+buHr6viv9YEhzA==", + "version": "9.1.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-9.1.6.tgz", + "integrity": "sha512-lYXoRtsMsfyIrNAa49Hcx79FPRW6ZrWjK2yJ3avON1Q3WEHYb/DIUP+ItyOQAkNUsCVMyK4wkddsu8PsqEW6tg==", "dev": true, "requires": { "ajv": "6.12.0", @@ -1774,13 +1780,13 @@ } }, "@schematics/update": { - "version": "0.901.3", - "resolved": "https://registry.npmjs.org/@schematics/update/-/update-0.901.3.tgz", - "integrity": "sha512-kwfc9LMMi6ryN2oiat9vTqGMK1jKwI1c45Nm1xala35nsbQSQ12qeL3MrVmnSCeI14+cinFUbp8mWI9/3M+/Lg==", + "version": "0.901.6", + "resolved": "https://registry.npmjs.org/@schematics/update/-/update-0.901.6.tgz", + "integrity": "sha512-fKDjD/nGOsrPglOeMVNW+/wa8t73XBrsVneaLg3qmWp6c80JQAxwryE+3MTnBP7apZCLR2YZlKySbY54gLRs6w==", "dev": true, "requires": { - "@angular-devkit/core": "9.1.3", - "@angular-devkit/schematics": "9.1.3", + "@angular-devkit/core": "9.1.6", + "@angular-devkit/schematics": "9.1.6", "@yarnpkg/lockfile": "1.1.0", "ini": "1.3.5", "npm-package-arg": "^8.0.0", @@ -1791,9 +1797,9 @@ }, "dependencies": { "@angular-devkit/core": { - "version": "9.1.3", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-9.1.3.tgz", - "integrity": "sha512-VRV96prPy0Kdlm6XmI7DITqSMSc1bINimnOhzQre3euDX5OQty+EUqaexHtMv/SPDZX1agP+buHr6viv9YEhzA==", + "version": "9.1.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-9.1.6.tgz", + "integrity": "sha512-lYXoRtsMsfyIrNAa49Hcx79FPRW6ZrWjK2yJ3avON1Q3WEHYb/DIUP+ItyOQAkNUsCVMyK4wkddsu8PsqEW6tg==", "dev": true, "requires": { "ajv": "6.12.0", @@ -1916,9 +1922,9 @@ "dev": true }, "@types/lodash": { - "version": "4.14.150", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.150.tgz", - "integrity": "sha512-kMNLM5JBcasgYscD9x/Gvr6lTAv2NVgsKtet/hm93qMyf/D1pt+7jeEZklKJKxMVmXjxbRVQQGfqDSfipYCO6w==", + "version": "4.14.151", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.151.tgz", + "integrity": "sha512-Zst90IcBX5wnwSu7CAS0vvJkTjTELY4ssKbHiTnGcJgi170uiS8yQDdc3v6S77bRqYQIN1App5a1Pc2lceE5/g==", "dev": true }, "@types/minimatch": { @@ -1928,9 +1934,9 @@ "dev": true }, "@types/node": { - "version": "13.13.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-13.13.4.tgz", - "integrity": "sha512-x26ur3dSXgv5AwKS0lNfbjpCakGIduWU1DU91Zz58ONRWrIKGunmZBNv4P7N+e27sJkiGDsw/3fT4AtsqQBrBA==", + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.0.1.tgz", + "integrity": "sha512-FAYBGwC+W6F9+huFIDtn43cpy7+SzG+atzRiTfdp3inUKL2hXnd4rG8hylJLIh4+hqrQy1P17kvJByE/z825hA==", "dev": true }, "@types/q": { @@ -2419,38 +2425,38 @@ } }, "app-builder-bin": { - "version": "3.5.6", - "resolved": "https://registry.npmjs.org/app-builder-bin/-/app-builder-bin-3.5.6.tgz", - "integrity": "sha512-gY9ABoV5jh67IrPEwF81R8l9LwE3RqHUyU3rIKitwqMpKhplN5OZC6WEHOXO3XhwiLCIlr9LLI6OPhr3bmtQIg==", + "version": "3.5.8", + "resolved": "https://registry.npmjs.org/app-builder-bin/-/app-builder-bin-3.5.8.tgz", + "integrity": "sha512-ni3q7QTfQNWHNWuyn5x3FZu6GnQZv+TFnfgk5++svqleKEhHGqS1mIaKsh7x5pBX6NFXU3/+ktk98wA/AW4EXw==", "dev": true }, "app-builder-lib": { - "version": "22.5.1", - "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-22.5.1.tgz", - "integrity": "sha512-VtB/PD8actR1317D/0uGzuJIYbpw4pRrfMB6IyTLwGynUd3ihqiCFjejVWHjCwopgCct2kE0MvLwo8P49xHIeQ==", + "version": "22.6.0", + "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-22.6.0.tgz", + "integrity": "sha512-ky2aLYy92U+Gh6dKq/e8/bNmCotp6/GMhnX8tDZPv9detLg9WuBnWWi1ktBPlpbl1DREusy+TIh+9rgvfduQoA==", "dev": true, "requires": { "7zip-bin": "~5.0.3", "@develar/schema-utils": "~2.6.5", "async-exit-hook": "^2.0.1", "bluebird-lst": "^1.0.9", - "builder-util": "22.5.1", + "builder-util": "22.6.0", "builder-util-runtime": "8.7.0", "chromium-pickle-js": "^0.2.0", "debug": "^4.1.1", - "ejs": "^3.0.2", - "electron-publish": "22.5.1", + "ejs": "^3.1.2", + "electron-publish": "22.6.0", "fs-extra": "^9.0.0", "hosted-git-info": "^3.0.4", "is-ci": "^2.0.0", - "isbinaryfile": "^4.0.5", + "isbinaryfile": "^4.0.6", "js-yaml": "^3.13.1", "lazy-val": "^1.0.4", "minimatch": "^3.0.4", "normalize-package-data": "^2.5.0", "read-config-file": "6.0.0", "sanitize-filename": "^1.6.3", - "semver": "^7.1.3", + "semver": "^7.3.2", "temp-file": "^3.3.7" }, "dependencies": { @@ -2617,6 +2623,14 @@ "bn.js": "^4.0.0", "inherits": "^2.0.1", "minimalistic-assert": "^1.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "dev": true + } } }, "assert": { @@ -2742,6 +2756,41 @@ "integrity": "sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug==", "dev": true }, + "axios": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz", + "integrity": "sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==", + "dev": true, + "requires": { + "follow-redirects": "1.5.10" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "follow-redirects": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz", + "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==", + "dev": true, + "requires": { + "debug": "=3.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, "axobject-query": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.0.2.tgz", @@ -2941,9 +2990,9 @@ } }, "bn.js": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", - "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.1.tgz", + "integrity": "sha512-IUTD/REb78Z2eodka1QZyyEk66pciRcP6Sroka0aI3tG/iwIdYLrBD62RsubR7vqdt3WyX8p4jxeatzmRSphtA==", "dev": true }, "body-parser": { @@ -3196,21 +3245,43 @@ "requires": { "bn.js": "^4.1.0", "randombytes": "^2.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "dev": true + } } }, "browserify-sign": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", - "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.1.0.tgz", + "integrity": "sha512-VYxo7cDCeYUoBZ0ZCy4UyEUCP3smyBd4DRQM5nrFS1jJjPJjX7rP3oLRpPoWfkhQfyJ0I9ZbHbKafrFD/SGlrg==", "dev": true, "requires": { - "bn.js": "^4.1.1", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.2", - "elliptic": "^6.0.0", - "inherits": "^2.0.1", - "parse-asn1": "^5.0.0" + "bn.js": "^5.1.1", + "browserify-rsa": "^4.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.2", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.5", + "readable-stream": "^3.6.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } } }, "browserify-zlib": { @@ -3324,23 +3395,23 @@ "dev": true }, "builder-util": { - "version": "22.5.1", - "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-22.5.1.tgz", - "integrity": "sha512-CelDTP3+fvDfZfbwy3PXif7mudPaWankJ8vrRg/NtCGvL+hXnwycnJZr46d5EQL7AgQcpJ27o9LTdfu61cxTFw==", + "version": "22.6.0", + "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-22.6.0.tgz", + "integrity": "sha512-jgdES2ExJYkuXC3DEaGAjFctKNA81C4QDy8zdoc+rqdSqheTizuDNtZg02uMFklmUES4V4fggmqds+Y7wraqng==", "dev": true, "requires": { "7zip-bin": "~5.0.3", "@types/debug": "^4.1.5", "@types/fs-extra": "^8.1.0", - "app-builder-bin": "3.5.6", + "app-builder-bin": "3.5.8", "bluebird-lst": "^1.0.9", "builder-util-runtime": "8.7.0", - "chalk": "^3.0.0", + "chalk": "^4.0.0", "debug": "^4.1.1", "fs-extra": "^9.0.0", "is-ci": "^2.0.0", "js-yaml": "^3.13.1", - "source-map-support": "^0.5.16", + "source-map-support": "^0.5.19", "stat-mode": "^1.0.0", "temp-file": "^3.3.7" }, @@ -3356,9 +3427,9 @@ } }, "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.0.0.tgz", + "integrity": "sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -3408,6 +3479,22 @@ "universalify": "^1.0.0" } }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, "supports-color": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", @@ -3504,17 +3591,25 @@ } }, "tar": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.0.1.tgz", - "integrity": "sha512-bKhKrrz2FJJj5s7wynxy/fyxpE0CmCjmOQ1KV4KkgXFWOgoIT/NbTMnB1n+LFNrNk0SSBVGGxcK5AGsyC+pW5Q==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.0.2.tgz", + "integrity": "sha512-Glo3jkRtPcvpDlAs/0+hozav78yoXKFr+c4wgw62NNMO3oo4AaJdCo21Uu7lcwr55h39W2XD1LMERc64wtbItg==", "dev": true, "requires": { - "chownr": "^1.1.3", + "chownr": "^2.0.0", "fs-minipass": "^2.0.0", "minipass": "^3.0.0", "minizlib": "^2.1.0", "mkdirp": "^1.0.3", "yallist": "^4.0.0" + }, + "dependencies": { + "chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true + } } } } @@ -3623,9 +3718,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001045", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001045.tgz", - "integrity": "sha512-Y8o2Iz1KPcD6FjySbk1sPpvJqchgxk/iow0DABpGyzA1UeQAuxh63Xh0Enj5/BrsYbXtCN32JmR4ZxQTCQ6E6A==", + "version": "1.0.30001059", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001059.tgz", + "integrity": "sha512-oOrc+jPJWooKIA0IrNZ5sYlsXc7NP7KLhNWrSGEJhnfSzDvDJ0zd3i6HXsslExY9bbu+x0FQ5C61LcqmPt7bOQ==", "dev": true }, "canonical-path": { @@ -4320,6 +4415,14 @@ "requires": { "bn.js": "^4.1.0", "elliptic": "^6.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "dev": true + } } }, "create-hash": { @@ -4953,6 +5056,14 @@ "bn.js": "^4.1.0", "miller-rabin": "^4.0.0", "randombytes": "^2.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "dev": true + } } }, "dir-glob": { @@ -4965,13 +5076,13 @@ } }, "dmg-builder": { - "version": "22.5.1", - "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-22.5.1.tgz", - "integrity": "sha512-AwIiyGwgqhA8Ty/YnEU20aSzfrWZns6suOBTqddD+rLDI4jEASKGQadfvcXRSWgaK/VQW0GrhheXrhJpzZzt3g==", + "version": "22.6.0", + "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-22.6.0.tgz", + "integrity": "sha512-rJxuGhHIpcuDGBtWZMM8aLxkbZNgYO2MO5dUerDIBXebhX1K8DA23iz/uZ8ahcRNgWEv57b8GDqJbXKEfr5T0A==", "dev": true, "requires": { - "app-builder-lib": "22.5.1", - "builder-util": "22.5.1", + "app-builder-lib": "22.6.0", + "builder-util": "22.6.0", "fs-extra": "^9.0.0", "iconv-lite": "^0.5.1", "js-yaml": "^3.13.1", @@ -5146,15 +5257,18 @@ "dev": true }, "ejs": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.0.2.tgz", - "integrity": "sha512-IncmUpn1yN84hy2shb0POJ80FWrfGNY0cxO9f4v+/sG7qcBvAtVWUA1IdzY/8EYUmOVhoKJVdJjNd3AZcnxOjA==", - "dev": true + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.2.tgz", + "integrity": "sha512-zFuywxrAWtX5Mk2KAuoJNkXXbfezpNA0v7i+YC971QORguPekpjpAgeOv99YWSdKXwj7JxI2QAWDeDkE8fWtXw==", + "dev": true, + "requires": { + "jake": "^10.6.1" + } }, "electron": { - "version": "8.2.3", - "resolved": "https://registry.npmjs.org/electron/-/electron-8.2.3.tgz", - "integrity": "sha512-FJUp103c8yJBoAaj/QM/OBde57iJh95u1yGJBytMUXmLFSsx78LmNE03QN4XCODyzi76IEcasvUcK6scogRLbQ==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/electron/-/electron-8.3.0.tgz", + "integrity": "sha512-XRjiIJICZCgUr2vKSUI2PTkfP0gPFqCtqJUaTJSfCTuE3nTrxBKOUNeRMuCzEqspKkpFQU3SB3MdbMSHmZARlQ==", "dev": true, "requires": { "@electron/get": "^1.0.1", @@ -5163,26 +5277,26 @@ }, "dependencies": { "@types/node": { - "version": "12.12.35", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.35.tgz", - "integrity": "sha512-ASYsaKecA7TUsDrqIGPNk3JeEox0z/0XR/WsJJ8BIX/9+SkMSImQXKWfU/yBrSyc7ZSE/NPqLu36Nur0miCFfQ==", + "version": "12.12.39", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.39.tgz", + "integrity": "sha512-pADGfwnDkr6zagDwEiCVE4yQrv7XDkoeVa4OfA9Ju/zRTk6YNDLGtQbkdL4/56mCQQCs4AhNrBIag6jrp7ZuOg==", "dev": true } } }, "electron-builder": { - "version": "22.5.1", - "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-22.5.1.tgz", - "integrity": "sha512-7gnHN8Ml5zecDerN8/ljAwUKtE+hhGLuT/X2/zO0FJM2q2hlLx/6ZgzESFILKqnPQFEBRxQ8SL1OxjdIY0HIrw==", + "version": "22.6.0", + "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-22.6.0.tgz", + "integrity": "sha512-aLHlB6DTfjJ3MI4AUIFeWnwIozNgNlbOk2c2sTHxB10cAKp0dBVSPZ7xF5NK0uwDhElvRzJQubnHtJD6zKg42Q==", "dev": true, "requires": { "@types/yargs": "^15.0.4", - "app-builder-lib": "22.5.1", + "app-builder-lib": "22.6.0", "bluebird-lst": "^1.0.9", - "builder-util": "22.5.1", + "builder-util": "22.6.0", "builder-util-runtime": "8.7.0", - "chalk": "^3.0.0", - "dmg-builder": "22.5.1", + "chalk": "^4.0.0", + "dmg-builder": "22.6.0", "fs-extra": "^9.0.0", "is-ci": "^2.0.0", "lazy-val": "^1.0.4", @@ -5209,9 +5323,9 @@ } }, "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.0.0.tgz", + "integrity": "sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -5390,9 +5504,9 @@ } }, "yargs-parser": { - "version": "18.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.2.tgz", - "integrity": "sha512-hlIPNR3IzC1YuL1c2UwwDKpXlNFBqD1Fswwh1khz5+d8Cq/8yc/Mn0i+rQXduu8hcrFKvO7Eryk+09NecTQAAQ==", + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", "dev": true, "requires": { "camelcase": "^5.0.0", @@ -5402,16 +5516,16 @@ } }, "electron-publish": { - "version": "22.5.1", - "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-22.5.1.tgz", - "integrity": "sha512-g5bwLAHZT6A++yU1+Et+fncnFAdXXgkRao9rzTFAvhQ0QJBsmLiyOd0Ta2RI/EQcVoy6jyHtxFs7CWIXE5aZOA==", + "version": "22.6.0", + "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-22.6.0.tgz", + "integrity": "sha512-+v05SBf9qR7Os5au+fifloNHy5QxHQkUGudBj68YaTb43Pn37UkwRxSc49Lf13s4wW32ohM45g8BOVInPJEdnA==", "dev": true, "requires": { "@types/fs-extra": "^8.1.0", "bluebird-lst": "^1.0.9", - "builder-util": "22.5.1", + "builder-util": "22.6.0", "builder-util-runtime": "8.7.0", - "chalk": "^3.0.0", + "chalk": "^4.0.0", "fs-extra": "^9.0.0", "lazy-val": "^1.0.4", "mime": "^2.4.4" @@ -5428,9 +5542,9 @@ } }, "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.0.0.tgz", + "integrity": "sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -5522,9 +5636,9 @@ } }, "electron-to-chromium": { - "version": "1.3.414", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.414.tgz", - "integrity": "sha512-UfxhIvED++qLwWrAq9uYVcqF8FdeV9sU2S7qhiHYFODxzXRrd1GZRl/PjITHsTEejgibcWDraD8TQqoHb1aCBQ==", + "version": "1.3.437", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.437.tgz", + "integrity": "sha512-PBQn2q68ErqMyBUABh9Gh8R6DunGky8aB5y3N5lPM7OVpldwyUbAK5AX9WcwE/5F6ceqvQ+iQLYkJYRysAs6Bg==", "dev": true }, "elliptic": { @@ -5540,6 +5654,14 @@ "inherits": "^2.0.1", "minimalistic-assert": "^1.0.0", "minimalistic-crypto-utils": "^1.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "dev": true + } } }, "emoji-regex": { @@ -5590,9 +5712,9 @@ } }, "entities": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.0.tgz", - "integrity": "sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.2.tgz", + "integrity": "sha512-dmD3AvJQBUjKpcNkoqr+x+IF0SdRtPz9Vk0uTy4yWqga9ibB6s4v++QFWNohjiUGoMlF552ZvNyXDxz5iW0qmw==", "dev": true }, "env-paths": { @@ -6142,9 +6264,9 @@ "dev": true }, "eventemitter3": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.0.tgz", - "integrity": "sha512-qerSRB0p+UDEssxTtm6EDKcE7W4OaoisfIMl4CngyEhjpYglocpNg6UEqCvemdGhosAsg4sO2dXJOdyBifPGCg==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.4.tgz", + "integrity": "sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ==", "dev": true }, "events": { @@ -6538,6 +6660,15 @@ "dev": true, "optional": true }, + "filelist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.1.tgz", + "integrity": "sha512-8zSK6Nu0DQIC08mUC46sWGXi+q3GGpKydAG36k+JDba6VRpkevvOWUW5a/PhShij4+vHT9M+ghgG7eM+a9JDUQ==", + "dev": true, + "requires": { + "minimatch": "^3.0.4" + } + }, "fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", @@ -7107,13 +7238,33 @@ "dev": true }, "hash-base": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", - "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", "dev": true, "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } } }, "hash.js": { @@ -7970,20 +8121,37 @@ "dev": true }, "istanbul-lib-instrument": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.1.tgz", - "integrity": "sha512-imIchxnodll7pvQBYOqUu88EufLCU56LMeFPZZM/fJZ1irYcYdqroaV+ACK1Ila8ls09iEYArp+nqyC6lW1Vfg==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", + "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", "dev": true, "requires": { "@babel/core": "^7.7.5", - "@babel/parser": "^7.7.5", - "@babel/template": "^7.7.4", - "@babel/traverse": "^7.7.4", "@istanbuljs/schema": "^0.1.2", "istanbul-lib-coverage": "^3.0.0", "semver": "^6.3.0" } }, + "jake": { + "version": "10.6.1", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.6.1.tgz", + "integrity": "sha512-pHUK3+V0BjOb1XSi95rbBksrMdIqLVC9bJqDnshVyleYsET3H0XAq+3VB2E3notcYvv4wRdRHn13p7vobG+wfQ==", + "dev": true, + "requires": { + "async": "0.9.x", + "chalk": "^2.4.2", + "filelist": "^1.0.1", + "minimatch": "^3.0.4" + }, + "dependencies": { + "async": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", + "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=", + "dev": true + } + } + }, "jest-worker": { "version": "25.1.0", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-25.1.0.tgz", @@ -8733,6 +8901,14 @@ "requires": { "bn.js": "^4.0.0", "brorand": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "dev": true + } } }, "mime": { @@ -8852,9 +9028,9 @@ "dev": true }, "minipass": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.1.tgz", - "integrity": "sha512-UFqVihv6PQgwj8/yTGvl9kPz7xIAY+R5z6XYjRInD3Gk3qx6QGSD6zEcpeG4Dy/lQnv1J6zv8ejV90hyYIKf3w==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz", + "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==", "dev": true, "requires": { "yallist": "^4.0.0" @@ -8879,9 +9055,9 @@ } }, "minipass-pipeline": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.2.tgz", - "integrity": "sha512-3JS5A2DKhD2g0Gg8x3yamO0pj7YeKGwVlDS90pF++kxptwx/F+B//roxf9SqYil5tQo65bijy+dAuAFZmYOouA==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.3.tgz", + "integrity": "sha512-cFOknTvng5vqnwOpDsZTWhNll6Jf8o2x+/diplafmxpuIymAjzoOolZG0VvQf3V2HgqzJNhnuKHYp2BqDgz8IQ==", "dev": true, "requires": { "minipass": "^3.0.0" @@ -9127,9 +9303,9 @@ } }, "node-releases": { - "version": "1.1.53", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.53.tgz", - "integrity": "sha512-wp8zyQVwef2hpZ/dJH7SfSrIPD6YoJz6BDQDpGEkcA0s3LpAQoxBIYmfIq6QAhC1DhwsyCgTaTTcONwX8qzCuQ==", + "version": "1.1.55", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.55.tgz", + "integrity": "sha512-H3R3YR/8TjT5WPin/wOoHOUPHgvj8leuU/Keta/rwelEQN9pA/S2Dx8/se4pZ2LBxSd0nAGzsNzhqwa77v7F1w==", "dev": true }, "normalize-package-data": { @@ -9278,9 +9454,9 @@ } }, "npm-registry-fetch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-4.0.3.tgz", - "integrity": "sha512-WGvUx0lkKFhu9MbiGFuT9nG2NpfQ+4dCJwRwwtK2HK5izJEvwDxMeUyqbuMS7N/OkpVCqDorV6rO5E4V9F8lJw==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-4.0.4.tgz", + "integrity": "sha512-6jb34hX/iYNQebqWUHtU8YF6Cjb1H6ouTFPClYsyiW6lpFkljTpdeftm53rRojtja1rKAvKNIIiTS5Sjpw4wsA==", "dev": true, "requires": { "JSONStream": "^1.3.4", @@ -9311,9 +9487,9 @@ } }, "safe-buffer": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", - "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "dev": true }, "semver": { @@ -10152,9 +10328,9 @@ } }, "portfinder": { - "version": "1.0.25", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.25.tgz", - "integrity": "sha512-6ElJnHBbxVA1XSLgBp7G1FiCkQdlqGzuF7DswL5tcea+E8UpuvPU7beVAjjRwCioTS9ZluNbu+ZyRvgTsmqEBg==", + "version": "1.0.26", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.26.tgz", + "integrity": "sha512-Xi7mKxJHHMI3rIUrnm/jjUgwhbYMkp/XKEcZX3aG4BrumLpq3nmoQMX+ClYnDZnZ/New7IatC1no5RX0zo1vXQ==", "dev": true, "requires": { "async": "^2.6.2", @@ -10798,9 +10974,9 @@ } }, "postcss-value-parser": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.0.3.tgz", - "integrity": "sha512-N7h4pG+Nnu5BEIzyeaaIYWs0LI5XC40OrRh5L60z0QjFsqGWcHcbkBvpe1WYpcIS9yQ8sOi/vIPt1ejQCrMVrg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", + "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==", "dev": true }, "prelude-ls": { @@ -10938,6 +11114,14 @@ "parse-asn1": "^5.0.0", "randombytes": "^2.0.1", "safe-buffer": "^5.1.2" + }, + "dependencies": { + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "dev": true + } } }, "pump": { @@ -11453,26 +11637,6 @@ "uuid": "^3.3.2" } }, - "request-promise-core": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.3.tgz", - "integrity": "sha512-QIs2+ArIGQVp5ZYbWD5ZLCY29D5CfWizP8eWnm8FoGD1TX61veauETVQbrV60662V0oFBkrDOuaBI8XgtuyYAQ==", - "dev": true, - "requires": { - "lodash": "^4.17.15" - } - }, - "request-promise-native": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.8.tgz", - "integrity": "sha512-dapwLGqkHtwL5AEbfenuzjTYg35Jd6KPytsC2/TLkVMz8rm+tNt72MGUWT1RP/aYawMpN6HqbNGBQaRcBtjQMQ==", - "dev": true, - "requires": { - "request-promise-core": "1.1.3", - "stealthy-require": "^1.1.1", - "tough-cookie": "^2.3.3" - } - }, "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -12337,9 +12501,9 @@ } }, "source-map-support": { - "version": "0.5.16", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz", - "integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==", + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", "dev": true, "requires": { "buffer-from": "^1.0.0", @@ -12527,12 +12691,6 @@ "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", "dev": true }, - "stealthy-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", - "dev": true - }, "stream-browserify": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", @@ -13193,9 +13351,9 @@ } }, "ts-node": { - "version": "8.9.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.9.1.tgz", - "integrity": "sha512-yrq6ODsxEFTLz0R3BX2myf0WBCSQh9A+py8PBo1dCzWIOcvisbyH6akNKqDHMgXePF2kir5mm5JXJTH3OUJYOQ==", + "version": "8.10.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.10.1.tgz", + "integrity": "sha512-bdNz1L4ekHiJul6SHtZWs1ujEKERJnHs4HxN7rjTyyVOFf3HaJ6sLqe6aPG62XTzAB/63pKRh5jTSWL0D7bsvw==", "dev": true, "requires": { "arg": "^4.1.0", @@ -13224,9 +13382,9 @@ } }, "tslib": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", - "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==" + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", + "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==" }, "tsutils": { "version": "3.17.1", @@ -13723,16 +13881,15 @@ "dev": true }, "wait-on": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-4.0.2.tgz", - "integrity": "sha512-Qpmgm3Hw/sXm7xK68FBsYy5r+Uid94/QymwnEjn9GTpfiWTUVYm0bccivVwY/BXGYO2r+5Cd8S/DzrRZqHK/9w==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-5.0.0.tgz", + "integrity": "sha512-6v9lttmGGRT7Lr16E/0rISTBIV1DN72n9+77Bpt1iBfzmhBI+75RDlacFe0Q+JizkmwWXmgHUcFG5cgx3Bwqzw==", "dev": true, "requires": { "@hapi/joi": "^17.1.1", + "axios": "^0.19.2", "lodash": "^4.17.15", "minimist": "^1.2.5", - "request": "^2.88.2", - "request-promise-native": "^1.0.8", "rxjs": "^6.5.5" } }, @@ -13834,554 +13991,14 @@ } }, "fsevents": { - "version": "1.2.12", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.12.tgz", - "integrity": "sha512-Ggd/Ktt7E7I8pxZRbGIs7vwqAPscSESMrCSkx2FtWeqmheJgCo2R74fTsZFCifr0VTPwqRpPv17+6b8Zp7th0Q==", + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", "dev": true, "optional": true, "requires": { "bindings": "^1.5.0", - "nan": "^2.12.1", - "node-pre-gyp": "*" - }, - "dependencies": { - "abbrev": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "ansi-regex": { - "version": "2.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "aproba": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "optional": true - }, - "are-we-there-yet": { - "version": "1.1.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, - "balanced-match": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "chownr": { - "version": "1.1.4", - "bundled": true, - "dev": true, - "optional": true - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "optional": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "console-control-strings": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "optional": true - }, - "core-util-is": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "debug": { - "version": "3.2.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ms": "^2.1.1" - } - }, - "deep-extend": { - "version": "0.6.0", - "bundled": true, - "dev": true, - "optional": true - }, - "delegates": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "detect-libc": { - "version": "1.0.3", - "bundled": true, - "dev": true, - "optional": true - }, - "fs-minipass": { - "version": "1.2.7", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minipass": "^2.6.0" - } - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "gauge": { - "version": "2.7.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - } - }, - "glob": { - "version": "7.1.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "has-unicode": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "iconv-lite": { - "version": "0.4.24", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "ignore-walk": { - "version": "3.0.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minimatch": "^3.0.4" - } - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "bundled": true, - "dev": true, - "optional": true - }, - "ini": { - "version": "1.3.5", - "bundled": true, - "dev": true, - "optional": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.5", - "bundled": true, - "dev": true, - "optional": true - }, - "minipass": { - "version": "2.9.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - } - }, - "minizlib": { - "version": "1.3.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minipass": "^2.9.0" - } - }, - "mkdirp": { - "version": "0.5.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minimist": "^1.2.5" - } - }, - "ms": { - "version": "2.1.2", - "bundled": true, - "dev": true, - "optional": true - }, - "needle": { - "version": "2.3.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "debug": "^3.2.6", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - } - }, - "node-pre-gyp": { - "version": "0.14.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "detect-libc": "^1.0.2", - "mkdirp": "^0.5.1", - "needle": "^2.2.1", - "nopt": "^4.0.1", - "npm-packlist": "^1.1.6", - "npmlog": "^4.0.2", - "rc": "^1.2.7", - "rimraf": "^2.6.1", - "semver": "^5.3.0", - "tar": "^4.4.2" - } - }, - "nopt": { - "version": "4.0.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "abbrev": "1", - "osenv": "^0.1.4" - } - }, - "npm-bundled": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "npm-normalize-package-bin": "^1.0.1" - } - }, - "npm-normalize-package-bin": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "npm-packlist": { - "version": "1.4.8", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1", - "npm-normalize-package-bin": "^1.0.1" - } - }, - "npmlog": { - "version": "4.1.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "object-assign": { - "version": "4.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "once": { - "version": "1.4.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "wrappy": "1" - } - }, - "os-homedir": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "os-tmpdir": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "osenv": { - "version": "0.1.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "process-nextick-args": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "rc": { - "version": "1.2.8", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - } - }, - "readable-stream": { - "version": "2.3.7", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "rimraf": { - "version": "2.7.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "glob": "^7.1.3" - } - }, - "safe-buffer": { - "version": "5.1.2", - "bundled": true, - "dev": true, - "optional": true - }, - "safer-buffer": { - "version": "2.1.2", - "bundled": true, - "dev": true, - "optional": true - }, - "sax": { - "version": "1.2.4", - "bundled": true, - "dev": true, - "optional": true - }, - "semver": { - "version": "5.7.1", - "bundled": true, - "dev": true, - "optional": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "string_decoder": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "tar": { - "version": "4.4.13", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "chownr": "^1.1.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.8.6", - "minizlib": "^1.2.1", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.2", - "yallist": "^3.0.3" - } - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "wide-align": { - "version": "1.1.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "string-width": "^1.0.2 || 2" - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "yallist": { - "version": "3.1.1", - "bundled": true, - "dev": true, - "optional": true - } + "nan": "^2.12.1" } }, "is-binary-path": { @@ -14647,9 +14264,9 @@ } }, "mime": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", - "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==", + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.5.tgz", + "integrity": "sha512-3hQhEUF027BuxZjQA3s7rIv/7VCQPa27hN9u9g87sEkWaKwQPuXOkVKtOeiyUrnWqTDiOs8Ed2rwg733mB0R5w==", "dev": true } } @@ -14782,554 +14399,14 @@ } }, "fsevents": { - "version": "1.2.12", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.12.tgz", - "integrity": "sha512-Ggd/Ktt7E7I8pxZRbGIs7vwqAPscSESMrCSkx2FtWeqmheJgCo2R74fTsZFCifr0VTPwqRpPv17+6b8Zp7th0Q==", + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", "dev": true, "optional": true, "requires": { "bindings": "^1.5.0", - "nan": "^2.12.1", - "node-pre-gyp": "*" - }, - "dependencies": { - "abbrev": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "ansi-regex": { - "version": "2.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "aproba": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "optional": true - }, - "are-we-there-yet": { - "version": "1.1.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, - "balanced-match": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "chownr": { - "version": "1.1.4", - "bundled": true, - "dev": true, - "optional": true - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "optional": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "console-control-strings": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "optional": true - }, - "core-util-is": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "debug": { - "version": "3.2.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ms": "^2.1.1" - } - }, - "deep-extend": { - "version": "0.6.0", - "bundled": true, - "dev": true, - "optional": true - }, - "delegates": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "detect-libc": { - "version": "1.0.3", - "bundled": true, - "dev": true, - "optional": true - }, - "fs-minipass": { - "version": "1.2.7", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minipass": "^2.6.0" - } - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "gauge": { - "version": "2.7.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - } - }, - "glob": { - "version": "7.1.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "has-unicode": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "iconv-lite": { - "version": "0.4.24", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "ignore-walk": { - "version": "3.0.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minimatch": "^3.0.4" - } - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "bundled": true, - "dev": true, - "optional": true - }, - "ini": { - "version": "1.3.5", - "bundled": true, - "dev": true, - "optional": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.5", - "bundled": true, - "dev": true, - "optional": true - }, - "minipass": { - "version": "2.9.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - } - }, - "minizlib": { - "version": "1.3.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minipass": "^2.9.0" - } - }, - "mkdirp": { - "version": "0.5.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minimist": "^1.2.5" - } - }, - "ms": { - "version": "2.1.2", - "bundled": true, - "dev": true, - "optional": true - }, - "needle": { - "version": "2.3.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "debug": "^3.2.6", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - } - }, - "node-pre-gyp": { - "version": "0.14.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "detect-libc": "^1.0.2", - "mkdirp": "^0.5.1", - "needle": "^2.2.1", - "nopt": "^4.0.1", - "npm-packlist": "^1.1.6", - "npmlog": "^4.0.2", - "rc": "^1.2.7", - "rimraf": "^2.6.1", - "semver": "^5.3.0", - "tar": "^4.4.2" - } - }, - "nopt": { - "version": "4.0.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "abbrev": "1", - "osenv": "^0.1.4" - } - }, - "npm-bundled": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "npm-normalize-package-bin": "^1.0.1" - } - }, - "npm-normalize-package-bin": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "npm-packlist": { - "version": "1.4.8", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1", - "npm-normalize-package-bin": "^1.0.1" - } - }, - "npmlog": { - "version": "4.1.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "object-assign": { - "version": "4.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "once": { - "version": "1.4.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "wrappy": "1" - } - }, - "os-homedir": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "os-tmpdir": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "osenv": { - "version": "0.1.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "process-nextick-args": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "rc": { - "version": "1.2.8", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - } - }, - "readable-stream": { - "version": "2.3.7", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "rimraf": { - "version": "2.7.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "glob": "^7.1.3" - } - }, - "safe-buffer": { - "version": "5.1.2", - "bundled": true, - "dev": true, - "optional": true - }, - "safer-buffer": { - "version": "2.1.2", - "bundled": true, - "dev": true, - "optional": true - }, - "sax": { - "version": "1.2.4", - "bundled": true, - "dev": true, - "optional": true - }, - "semver": { - "version": "5.7.1", - "bundled": true, - "dev": true, - "optional": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "string_decoder": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "tar": { - "version": "4.4.13", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "chownr": "^1.1.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.8.6", - "minizlib": "^1.2.1", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.2", - "yallist": "^3.0.3" - } - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "wide-align": { - "version": "1.1.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "string-width": "^1.0.2 || 2" - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "yallist": { - "version": "3.1.1", - "bundled": true, - "dev": true, - "optional": true - } + "nan": "^2.12.1" } }, "is-absolute-url": { @@ -15551,9 +14628,9 @@ } }, "worker-plugin": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/worker-plugin/-/worker-plugin-4.0.2.tgz", - "integrity": "sha512-V+1zSZMOOKk+uBzKyNIODLQLsx59zSIOaI75J1EMS0iR1qy+KQR3y/pQ3T0vIhvPfDFapGRMsoMvQNEL3okqSA==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/worker-plugin/-/worker-plugin-4.0.3.tgz", + "integrity": "sha512-7hFDYWiKcE3yHZvemsoM9lZis/PzurHAEX1ej8PLCu818Rt6QqUAiDdxHPCKZctzmhqzPpcFSgvMCiPbtooqAg==", "dev": true, "requires": { "loader-utils": "^1.1.0" diff --git a/package.json b/package.json index bdb718585..68404d57c 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "octodash", "description": "OctoDash is a simple, but beautiful dashboard for Octoprint.", - "version": "1.4.1", + "version": "1.5.0", "license": "Apache 2.0", "homepage": "https://github.com/UnchartedBull/OctoDash", "author": { @@ -82,23 +82,23 @@ "lodash": "^4.17.15", "ngx-spinner": "^9.0.2", "rxjs": "~6.5.5", - "tslib": "^1.11.1", + "tslib": "^1.13.0", "zone.js": "~0.10.3" }, "devDependencies": { - "@angular-devkit/build-angular": "~0.901.3", - "@angular/cli": "~9.1.3", + "@angular-devkit/build-angular": "~0.901.6", + "@angular/cli": "~9.1.6", "@angular/compiler-cli": "^9.0.7", - "@angular/language-service": "~9.1.3", + "@angular/language-service": "~9.1.7", "@types/ajv": "^1.0.0", - "@types/lodash": "^4.14.150", - "@types/node": "^13.13.4", + "@types/lodash": "^4.14.151", + "@types/node": "^14.0.1", "@typescript-eslint/eslint-plugin": "^1.13.0", "@typescript-eslint/parser": "^1.13.0", "codelyzer": "^5.2.2", - "electron-builder": "^22.5.1", + "electron-builder": "^22.6.0", "electron-reload": "^1.5.0", - "electron": "^8.2.3", + "electron": "^8.3.0", "eslint-config-prettier": "^6.11.0", "eslint-plugin-import": "^2.20.2", "eslint-plugin-prettier": "^3.1.3", @@ -106,8 +106,8 @@ "eslint": "^5.16.0", "npm-run-all": "^4.1.5", "prettier": "^2.0.5", - "ts-node": "~8.9.1", + "ts-node": "~8.10.1", "typescript": "~3.7.5", - "wait-on": "^4.0.2" + "wait-on": "^5.0.0" } } diff --git a/sample.config.json b/sample.config.json index 218cef434..300330e35 100644 --- a/sample.config.json +++ b/sample.config.json @@ -1,11 +1,11 @@ { "config": { "octoprint": { - "accessToken": "INSERT API KEY HERE", + "accessToken": "", "url": "http://localhost:5000/api/" }, "printer": { - "name": "NAME HERE", + "name": "", "xySpeed": 100, "zSpeed": 5, "defaultTemperatureFanSpeed": { @@ -18,7 +18,9 @@ "density": 0, "thickness": 0, "feedLength": 470, - "feedSpeed": 100 + "feedSpeed": 30, + "feedSpeedSlow": 3, + "purgeDistance": 30 }, "plugins": { "displayLayerProgress": { diff --git a/src/app/app.service.ts b/src/app/app.service.ts index dc21ed07a..4d4ec6004 100644 --- a/src/app/app.service.ts +++ b/src/app/app.service.ts @@ -34,25 +34,27 @@ export class AppService { } } - this.updateError = [".printer should have required property 'defaultTemperatureFanSpeed'"]; + this.updateError = [ + ".filament should have required property 'feedSpeedSlow'", + ".filament should have required property 'purgeDistance'", + ]; } // If the errors can be automatically fixed return true here public autoFixError(): boolean { let config = this.configService.getCurrentConfig(); - config.printer.defaultTemperatureFanSpeed = { - hotend: 200, - heatbed: 60, - fan: 100, - }; + config.filament.feedLength = 0; + config.filament.feedSpeed = 30; + config.filament.feedSpeedSlow = 5; + config.filament.purgeDistance = 30; this.configService.saveConfig(config); this.configService.updateConfig(); - return true; + return false; } private checkUpdate(): void { this.http.get('https://api.github.com/repos/UnchartedBull/OctoDash/releases/latest').subscribe( - (data: GitHubRealeaseInformation): void => { + (data: GitHubReleaseInformation): void => { if (this.version !== data.name.replace('v', '')) { this.notificationService.setUpdate( "It's time for an update", @@ -132,7 +134,7 @@ interface VersionInformation { version: string; } -interface GitHubRealeaseInformation { +interface GitHubReleaseInformation { name: string; [key: string]: string; } diff --git a/src/app/config/config.service.ts b/src/app/config/config.service.ts index f3bf158af..bc86c7dd3 100644 --- a/src/app/config/config.service.ts +++ b/src/app/config/config.service.ts @@ -236,6 +236,26 @@ export class ConfigService { public isPreheatPluginEnabled(): boolean { return this.config.plugins.preheatButton.enabled; } + + public isFilamentManagerEnabled(): boolean { + return this.config.plugins.filamentManager.enabled; + } + + public getFeedLength(): number { + return this.config.filament.feedLength; + } + + public getFeedSpeed(): number { + return this.config.filament.feedSpeed; + } + + public getFeedSpeedSlow(): number { + return this.config.filament.feedSpeedSlow; + } + + public getPurgeDistance(): number { + return this.config.filament.purgeDistance; + } } export interface Config { @@ -273,6 +293,8 @@ interface Filament { density: number; feedLength: number; feedSpeed: number; + feedSpeedSlow: number; + purgeDistance: number; } interface Plugins { @@ -385,7 +407,7 @@ const schema = { filament: { $id: '#/properties/filament', type: 'object', - required: ['density', 'thickness', 'feedLength', 'feedSpeed'], + required: ['density', 'thickness', 'feedLength', 'feedSpeed', 'feedSpeedSlow', 'purgeDistance'], properties: { density: { $id: '#/properties/filament/properties/density', @@ -403,6 +425,14 @@ const schema = { $id: '#/properties/filament/properties/feedSpeed', type: 'integer', }, + feedSpeedSlow: { + $id: '#/properties/filament/properties/feedSpeedSlow', + type: 'integer', + }, + purgeDistance: { + $id: '#/properties/filament/properties/purgeDistance', + type: 'integer', + }, }, }, plugins: { diff --git a/src/app/config/no-config/no-config.component.html b/src/app/config/no-config/no-config.component.html index 912bf4368..d5dbbdb07 100644 --- a/src/app/config/no-config/no-config.component.html +++ b/src/app/config/no-config/no-config.component.html @@ -19,40 +19,55 @@
Hey there! - It looks like this is the first time starting OctoDash!
- I'll help you setting up your config. If you encounter any issues please create an issue in - GitHub.

- Thanks for choosing OctoDash :) + It looks like this is the first start of OctoDash.
+ I'll help you set up your config and get you started.
+ If you encounter any issues please check the troubleshooting guide in the GitHub Wiki.

+ Thanks for choosing OctoDash
Sorry for bothering you again ...
We've released an update, so awesome, we needed to change the config. Please review your new config!

- Thanks for choosing OctoDash :) + Thanks for choosing OctoDash
- First, tell me some facts about your printer and filament so I can personalize OctoDash. + First, tell me some facts about your printer so I can personalize OctoDash for you.
- +
+
+ If you're unsure about any values during setup, just stick with the defaults. You can change all values (and + even more stuff) in the settings menu anytime. There is also a description of each attribute available in + the GitHub Wiki. +
- Filament - - +
+
+ + I also need some information about your extruder. + +
+ + mm - - - - g/cm³ +
+ + + mm/s +
+ These values will be used during the Filament Change Process. Be sure to have your Feed Length (length + between Extruder and Hotend) and Feed Speed configured correctly. +
-
+
Now I need to know something about your OctoPrint setup, so I can talk to your printer. @@ -70,7 +85,7 @@ name="accessToken" style="width: 67vw" required>
-
+
And now personalize me to your liking. @@ -85,14 +100,13 @@ ms -
- If you're unsure about what values to use, just use the default. You can change all values (and even - more stuff, like defining custom actions) later in the settings menu. +
+ Don't set your Value Refresh Interval too low (und 1000ms) as this may effect the performance of the + Raspberry Pi.
-
-
+
What plugins are you running? @@ -133,39 +147,39 @@ PSU Control
-
- Enclosure and PSU Control Plugin can be configured further in the settings! +
+ Enclosure and PSU Control Plugin can be configured further in the settings.
-
+
Great! I'll check everything. -
- - - +
+ + + Config Validation - {{ error }} + {{ error }}
- - - + + + Octoprint Connection - {{ octoprintConnectionError }} + {{ octoprintConnectionError }}
- - - + + + Saving Config - {{ configSaved }} + {{ configSaved }}
- done
diff --git a/src/app/config/no-config/no-config.component.scss b/src/app/config/no-config/no-config.component.scss index 73b5e52f3..8afc5fe1c 100644 --- a/src/app/config/no-config/no-config.component.scss +++ b/src/app/config/no-config/no-config.component.scss @@ -5,6 +5,11 @@ margin-left: 2vh; margin-right: 3vh; font-size: 3.6vw; + + fa-icon { + display: block; + margin-top: 2vh; + } } &__progress-bar { @@ -12,7 +17,7 @@ border-radius: 2vh; background-color: #44bd32; width: 0; - transition: width .7s ease-in-out; + transition: width 0.7s ease-in-out; &-wrapper { background-color: #718093; @@ -56,7 +61,7 @@ &-prefix { font-size: 3vw; - opacity: .7; + opacity: 0.7; padding-right: 1vw; } } @@ -83,16 +88,16 @@ } &-checked { - background-color: #2196F3; + background-color: #2196f3; width: 2.4vw; height: 2.4vw; display: block; - margin-left: .75vw; - margin-top: .75vw; - border-radius: .7vw; + margin-left: 0.75vw; + margin-top: 0.75vw; + border-radius: 0.7vw; &-disabled { - background-color: rgba(255, 255, 255, .5) + background-color: rgba(255, 255, 255, 0.5); } } } @@ -103,6 +108,15 @@ text-align: center; } + &-explanation { + font-size: 3vw; + font-style: italic; + opacity: 0.7; + margin-top: 4vh; + padding: 2vh 4vw; + text-align: center; + } + &__1 { &-welcome { display: block; @@ -115,27 +129,17 @@ } &__2 { - &-filament-divider { - display: block; + &-form { text-align: left; - margin-left: 4.3vw; - margin-top: 7vh; - margin-bottom: -7vh; - font-weight: 500; + margin-left: 4vw; } - } - &__3 { - &-explanation { - font-size: 3vw; - font-style: italic; - opacity: .7; - margin-top: 4vh; - padding: 2vh 4vw; + &-input { + margin-top: 5vh; } } - &__5 { + &__6 { &-check-wrapper { width: 100%; text-align: center; diff --git a/src/app/config/no-config/no-config.component.ts b/src/app/config/no-config/no-config.component.ts index cf129b5df..6c92ca9b9 100644 --- a/src/app/config/no-config/no-config.component.ts +++ b/src/app/config/no-config/no-config.component.ts @@ -11,7 +11,7 @@ import { Config, ConfigService } from '../config.service'; }) export class NoConfigComponent implements OnInit { public page = 0; - public totalPages = 5; + public totalPages = 6; private configUpdate: boolean; public config: Config; @@ -24,6 +24,7 @@ export class NoConfigComponent implements OnInit { public constructor(private configService: ConfigService, private http: HttpClient, private router: Router) { this.configUpdate = this.configService.isUpdate(); + console.log(this.configUpdate); if (this.configUpdate) { this.config = configService.getCurrentConfig(); } else { @@ -45,8 +46,10 @@ export class NoConfigComponent implements OnInit { filament: { thickness: 1.75, density: 1.25, - feedLength: 470, - feedSpeed: 100, + feedLength: 0, + feedSpeed: 30, + feedSpeedSlow: 3, + purgeDistance: 30, }, plugins: { displayLayerProgress: { @@ -140,7 +143,7 @@ export class NoConfigComponent implements OnInit { 'x-api-key': this.config.octoprint.accessToken, }), }; - this.http.get(this.config.octoprint.url + 'version', httpHeaders).subscribe( + this.http.get(this.config.octoprint.url + 'connection', httpHeaders).subscribe( (): void => { this.octoprintConnection = true; this.saveConfig(); @@ -188,7 +191,7 @@ export class NoConfigComponent implements OnInit { } public decreasePage(): void { - if (this.page === 4) { + if (this.page === 5) { this.config = this.configService.revertConfigForInput(this.config); } this.page -= 1; diff --git a/src/app/filament/filament.component.html b/src/app/filament/filament.component.html index 54e28528c..dd68c16b7 100644 --- a/src/app/filament/filament.component.html +++ b/src/app/filament/filament.component.html @@ -1,5 +1,133 @@ -:( - - This feature has not been implemented yet. - If you really, really want it before anything else - go to GitHub and like issue #14. -
back
+ + + + + + +
+ back + + +
+
+
+
+ skip +
+
+
+ select your new filament + + + + + + +
+ {{ spool.profile.material }} + + {{ spool.displayName }} + {{ getSpoolWeightLeft(spool.weight, spool.used) }}g left
+
+ no filament spools found +
+
+ loading spools ... +
+
+
+
+ heating the nozzle +
+
+
+
+1 +
+
+10 +
+
+
+ {{ hotendTarget }} + °C + /{{ hotendTemperature }} + °C +
+
+
-1 +
+
-10 +
+
+
+
+
+
+ {{ selectedSpool.profile.vendor }} +
+ + {{ getSpoolTemperatureOffset() }} + + °C +
+
+
+
+ wait {{ automaticHeatingStartSeconds }}s or - + start +
+
+
+ unloading filament +
+
+
+ {{ getFeedSpeed() }} mm/s +
+ stop +
+
+
+ load new filament + Only put a little filament in, I'll pull in the rest. +
+
+
+ {{ selectedSpool.displayName }} +
+
+ I'll wait for you. +
+
+ done +
+
+
+ loading filament +
+
+
+ {{ getFeedSpeed() }} mm/s +
+ stop +
+
+
+ purging filament +
{{ purgeAmount }}mm
+
+ +10mm + done +
+
+
diff --git a/src/app/filament/filament.component.scss b/src/app/filament/filament.component.scss index e69de29bb..f22c770a4 100644 --- a/src/app/filament/filament.component.scss +++ b/src/app/filament/filament.component.scss @@ -0,0 +1,311 @@ +.filament { + padding: 2vh 2vw 0; + + &__progress-bar { + height: 4vh; + border-radius: 2vh; + background-color: #44bd32; + width: 0; + transition: width 0.7s ease-in-out; + + &-wrapper { + background-color: #718093; + height: 4vh; + width: 20vw; + display: inline-block; + border-radius: 2vh; + + &-wide { + width: 50vw; + margin: 14vh auto 3vh; + display: block; + height: 7vh; + background-color: transparent; + border: 3px solid #f5f6fa; + border-radius: 3vh; + + > div { + height: 7vh; + width: 50vw; + background-color: transparent; + } + } + } + } + + &-heading { + display: block; + text-align: center; + font-size: 1rem; + } + + &-filaments { + margin-top: 2vh; + width: 94vw; + display: block; + height: 67vh; + overflow-y: scroll; + -webkit-overflow-scrolling: touch; + padding-right: 1.5vw; + + &::before { + content: ''; + width: 92vw; + height: 69.2vh; + position: fixed; + left: 1vw; + top: 31.5vh; + z-index: 2; + pointer-events: none; + background: linear-gradient(#353b48, transparent 6%, transparent 94%, #353b48); + } + + td { + font-size: 3.2vw; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + display: inline-block; + line-height: 9vh; + + &:last-of-type { + line-height: 7vh; + } + } + + tr { + background-color: #718093; + border-radius: 1vw; + padding: 0 1vw; + display: block; + margin-bottom: 2vh; + height: 10.5vh; + + &:first-of-type { + margin-top: 3.5vh; + } + + &:last-of-type { + margin-bottom: 3.5vh; + } + } + + &__type { + width: 15vw; + text-align: center; + margin-left: -2vw; + + &-box { + font-size: 2vw; + border: 3px solid; + width: auto; + padding: 1.3vh 1.5vw; + border-radius: 0.15rem; + font-weight: 500; + } + } + + &__name { + width: 62vw; + } + + &__weight-left { + width: 14vw; + text-align: right; + } + } + + &-no-filaments { + text-align: center; + font-size: 0.9rem; + margin-top: 20vh; + } + + &-heating { + &__center { + text-align: center; + } + + &__information { + display: inline-block; + width: 27vw; + font-size: 0.65rem; + text-align: left; + margin-left: 7vw; + line-height: 1rem; + overflow: visible; + vertical-align: top; + margin-top: 8vh; + margin-right: -5vw; + + &-color { + width: 5vw; + height: 5vw; + border-radius: 100%; + margin: 0 auto; + margin-bottom: 3vh; + border: 3px solid #f5f6fa; + } + + &-name { + text-align: center; + font-size: 0.8rem; + opacity: 0.7; + display: block; + } + + &-offset { + &-wrapper { + text-align: center; + margin-top: 6vh; + line-height: 2rem; + } + + &-indicator { + opacity: 0.7; + vertical-align: 0.5rem; + } + + &-value { + font-size: 2.5rem; + } + } + } + + &__controller { + display: inline-block; + width: 35vw; + border: solid 0.4vw; + border-radius: 2vw; + margin-top: 6vh; + + &-row { + display: flex; + } + + &-value { + padding: 3vh 6vw; + font-size: 6vw; + font-weight: 500; + text-align: center; + border-top: solid 0.4vw rgba(255, 255, 255, 0.5); + border-bottom: solid 0.4vw rgba(255, 255, 255, 0.5); + + &-unit { + text-align: center; + font-size: 4vw; + font-weight: 400; + } + } + + &-current { + display: block; + margin-top: 1vh; + font-size: 4vw; + + > span { + font-size: 2.8vw; + } + } + + &-control { + padding: 2vh 6vw; + font-size: 0.9rem; + flex: 1; + + &:first-of-type { + border-right: solid 0.4vw rgba(255, 255, 255, 0.5); + } + } + } + + &__start { + &-wrapper { + text-align: center; + margin-top: 4.5vh; + + > span { + font-size: 50%; + display: inline-block; + margin-left: -1vw; + margin-right: 1vw; + vertical-align: 1.2vw; + + > span { + font-size: 120%; + } + } + } + + &-heating { + display: inline-block; + background-color: #44bd32; + padding: 1vh 2vw; + border-radius: 1vw; + font-size: 0.8rem; + box-shadow: 0 10px 19px -8px rgba(0, 0, 0, 0.75); + } + } + } + + &-move { + &__speed { + font-size: 60%; + opacity: 0.8; + font-style: italic; + display: block; + text-align: center; + } + + &__wrapper { + text-align: center; + position: absolute; + width: 96vw; + bottom: 5vh; + } + + &__cancel { + display: inline-block; + background-color: #c23616; + padding: 2vh 2vw; + border-radius: 8px; + } + } + + &__done { + display: inline-block; + background-color: #44bd32; + padding: 2vh 2vw; + border-radius: 8px; + } + + &-purge { + &__amount { + text-align: center; + margin-top: 12vh; + font-size: 250%; + } + + &__more, + &__done { + display: inline-block; + padding: 2vh 2vw; + border-radius: 8px; + } + + &__more { + background-color: #7f8fa6; + margin-right: 10vw; + } + + &__done { + background-color: #44bd32; + } + } +} + +.scroll__thumb-inactive { + right: 2.5vw; + top: 36vh; + height: 57.2vh; +} diff --git a/src/app/filament/filament.component.ts b/src/app/filament/filament.component.ts index 48d61208c..56f528061 100644 --- a/src/app/filament/filament.component.ts +++ b/src/app/filament/filament.component.ts @@ -1,10 +1,313 @@ -import { Component } from '@angular/core'; +import { Component, OnInit } from '@angular/core'; +import { Router } from '@angular/router'; + +import { ConfigService } from '../config/config.service'; +import { FilamentManagerService, FilamentSpool, FilamentSpoolList } from '../plugin-service/filament-manager.service'; +import { PrinterService, PrinterStatusAPI } from '../printer.service'; @Component({ selector: 'app-filament', templateUrl: './filament.component.html', styleUrls: ['./filament.component.scss'], }) -export class FilamentComponent { - public constructor() {} +export class FilamentComponent implements OnInit { + private selectedSpool: FilamentSpool; + private currentSpool: FilamentSpool; + private totalPages = 5; + + public page: number; + private timeout: number; + private timeout2: number; + + public filamentSpools: FilamentSpoolList; + public isLoadingSpools = true; + + public hotendTarget: number; + public hotendTemperature: number; + public automaticHeatingStartSeconds: number; + public isHeating: boolean; + + private feedSpeedSlow = false; + + public purgeAmount: number; + + public constructor( + private router: Router, + private configService: ConfigService, + private filamentManagerService: FilamentManagerService, + private printerService: PrinterService, + ) {} + + public ngOnInit(): void { + if (this.configService.isFilamentManagerEnabled()) { + this.setPage(0); + } else { + this.setPage(1); + } + this.hotendTarget = this.configService.getDefaultHotendTemperature(); + this.automaticHeatingStartSeconds = 6; + this.printerService.getObservable().subscribe((printerStatus: PrinterStatusAPI): void => { + this.hotendTemperature = printerStatus.nozzle.current; + }); + } + + public increasePage(): void { + if (this.page < this.totalPages) { + if ( + (this.page === 1 && this.configService.getFeedLength() === 0) || + (this.page === 3 && this.configService.getFeedLength() === 0) + ) { + this.setPage(this.page + 2); + } else { + this.setPage(this.page + 1); + } + } else if (this.page === this.totalPages) { + this.router.navigate(['/main-screen']); + } + } + + // PAGINATION + + public decreasePage(): void { + if (this.page === 0) { + this.router.navigate(['/main-screen']); + } else if (this.page === 1 && this.configService.isFilamentManagerEnabled()) { + this.setPage(0); + } else if (this.page === 2 || this.page === 3) { + this.setPage(1); + } else if (this.page === 4 || this.page === 5) { + this.setPage(3); + } + } + + private setPage(page: number): void { + clearTimeout(this.timeout); + clearTimeout(this.timeout2); + if (this.page === 4) { + this.feedSpeedSlow = false; + } + if (page === 0) { + this.selectedSpool = null; + this.getSpools(); + } else if (page === 1) { + this.isHeating = false; + this.automaticHeatingStartSeconds = 6; + this.automaticHeatingStartTimer(); + } else if (page === 2) { + this.unloadSpool(); + } else if (page === 3) { + this.disableExtruderStepper(); + } else if (page === 4) { + this.loadSpool(); + } else if (page === 5) { + this.purgeAmount = this.configService.getPurgeDistance(); + this.purgeFilament(this.purgeAmount); + } + this.page = page; + if (this.page > 0) { + setTimeout((): void => { + document.getElementById('progressBar').style.width = this.page * (20 / this.totalPages) + 'vw'; + }, 200); + } + } + + // FILAMENT MANAGEMENT + + private getSpools(): void { + this.isLoadingSpools = true; + this.filamentManagerService + .getSpoolList() + .then((spools: FilamentSpoolList): void => { + this.filamentSpools = spools; + }) + .catch((): void => { + this.filamentSpools = null; + }) + .finally((): void => { + this.filamentManagerService + .getCurrentSpool() + .then((spool: FilamentSpool): void => { + this.currentSpool = spool; + }) + .catch((): void => { + this.currentSpool = null; + }) + .finally((): void => { + this.isLoadingSpools = false; + }); + }); + } + + public getSpoolWeightLeft(weight: number, used: number): number { + return Math.floor(weight - used); + } + + public getSpoolTemperatureOffset(): string { + return `${ + this.selectedSpool.temp_offset === 0 ? '±' : this.selectedSpool.temp_offset > 0 ? '+' : '-' + }${Math.abs(this.selectedSpool.temp_offset)}`; + } + + public getCurrentSpoolColor(): string { + if (this.currentSpool) { + return this.currentSpool.color; + } else { + return '#44bd32'; + } + } + + public getSelectedSpoolColor(): string { + if (this.selectedSpool) { + return this.selectedSpool.color; + } else { + return '#44bd32'; + } + } + + public getFeedSpeed(): number { + if (this.feedSpeedSlow) { + return this.configService.getFeedSpeedSlow(); + } else { + return this.configService.getFeedSpeed(); + } + } + + public setSpool(spool: FilamentSpool): void { + this.selectedSpool = spool; + this.hotendTarget = this.hotendTarget + spool.temp_offset; + this.increasePage(); + } + + private unloadSpool(): void { + this.printerService.extrude(this.configService.getFeedLength() * -1, this.configService.getFeedSpeed()); + setTimeout((): void => { + const unloadingProgressBar = document.getElementById('filamentUnloadBar'); + unloadingProgressBar.style.backgroundColor = this.getCurrentSpoolColor(); + const unloadTime = this.configService.getFeedLength() / this.configService.getFeedSpeed() + 0.5; + unloadingProgressBar.style.transition = 'width ' + unloadTime + 's ease-in'; + setTimeout((): void => { + unloadingProgressBar.style.width = '0vw'; + this.timeout = setTimeout((): void => { + this.increasePage(); + }, unloadTime * 1000 + 500); + }, 200); + }, 0); + } + + private loadSpool(): void { + const loadTimeFast = (this.configService.getFeedLength() * 0.8) / this.configService.getFeedSpeed(); + const loadTimeSlow = (this.configService.getFeedLength() * 0.1) / this.configService.getFeedSpeedSlow(); + const loadTime = loadTimeFast + loadTimeSlow + 0.5; + this.printerService.extrude(this.configService.getFeedLength() * 0.75, this.configService.getFeedSpeed()); + setTimeout((): void => { + const loadingProgressBar = document.getElementById('filamentLoadBar'); + loadingProgressBar.style.backgroundColor = this.getSelectedSpoolColor(); + + loadingProgressBar.style.transition = 'width ' + loadTime + 's ease-in'; + setTimeout((): void => { + loadingProgressBar.style.width = '50vw'; + this.timeout = setTimeout((): void => { + this.printerService.extrude( + this.configService.getFeedLength() * 0.17, + this.configService.getFeedSpeedSlow(), + ); + this.feedSpeedSlow = true; + this.timeout2 = setTimeout((): void => { + this.increasePage(); + }, loadTimeSlow * 1000 + 400); + }, loadTimeFast * 1000 + 200); + }, 200); + }, 0); + } + + public setSpoolSelection(): void { + this.printerService.setTemperatureHotend(0); + if (this.selectedSpool) { + this.filamentManagerService.setCurrentSpool(this.selectedSpool).finally(this.increasePage.bind(this)); + } else { + this.increasePage(); + } + } + + public stopExtruderMovement(): void { + this.printerService.stopMotors(); + clearTimeout(this.timeout); + clearTimeout(this.timeout2); + + let bar: HTMLElement; + const wrapper = (document.getElementsByClassName( + 'filament__progress-bar-wrapper-wide', + // eslint-disable-next-line @typescript-eslint/no-explicit-any + )[0] as any) as HTMLElement; + + if (document.getElementById('filamentLoadBar')) { + bar = document.getElementById('filamentLoadBar'); + } else { + bar = document.getElementById('filamentUnloadBar'); + } + + bar.style.width = Math.floor(bar.getBoundingClientRect().width) + 'px'; + wrapper.style.borderColor = '#c23616'; + } + + private disableExtruderStepper(): void { + this.printerService.executeGCode('M18 E '); + } + + // NOZZLE HEATING + + public changeHotendTarget(value: number): void { + this.hotendTarget = this.hotendTarget + value; + if (this.hotendTarget < 0) { + this.hotendTarget = 0; + } + if (this.hotendTarget > 999) { + this.hotendTarget = 999; + } + if (!this.isHeating) { + this.automaticHeatingStartSeconds = 5; + } else { + this.setNozzleTemperature(); + } + } + + private automaticHeatingStartTimer(): void { + this.automaticHeatingStartSeconds--; + if (this.automaticHeatingStartSeconds === 0) { + this.setNozzleTemperature(); + } else { + this.timeout = setTimeout(this.automaticHeatingStartTimer.bind(this), 1000); + } + } + + public setNozzleTemperature(): void { + if (this.page === 1) { + this.isHeating = true; + this.printerService.setTemperatureHotend(this.hotendTarget); + if (this.timeout) { + clearTimeout(this.timeout); + } + if (this.timeout2) { + clearTimeout(this.timeout2); + } + this.timeout2 = setTimeout(this.checkTemperature.bind(this), 1500); + } + } + + private checkTemperature(): void { + if (this.hotendTemperature >= this.hotendTarget) { + this.increasePage(); + } else { + this.timeout2 = setTimeout(this.checkTemperature.bind(this), 1500); + } + } + + public increasePurgeAmount(length: number): void { + this.purgeAmount += length; + this.purgeFilament(length); + } + + public purgeFilament(length: number): void { + this.printerService.extrude(length, this.configService.getFeedSpeedSlow()); + } } diff --git a/src/app/files.service.ts b/src/app/files.service.ts index 7fe88f260..98d2d4720 100644 --- a/src/app/files.service.ts +++ b/src/app/files.service.ts @@ -161,11 +161,11 @@ export class FilesService { filamentWeight: this.service.convertFilamentLengthToAmount(filamentLength), } : {}), - thumbnail: data.path.endsWith('.ufp.gcode') + thumbnail: data.thumbnail ? this.configService - .getURL('plugin/UltimakerFormatPackage/thumbnail/') - .replace('/api/', '/') + data.path.replace('.ufp.gcode', '.png') - : undefined, + .getURL(data.thumbnail) + .replace('/api/', '/') + : 'assets/object.svg', } as unknown) as File; resolve(file); }, @@ -191,11 +191,11 @@ export class FilesService { .get(this.configService.getURL('files' + filePath), this.configService.getHTTPHeaders()) .subscribe( (data: OctoprintFilesAPI): void => { - let thumbnail = data.path.endsWith('.ufp.gcode') + let thumbnail = data.thumbnail ? this.configService - .getURL('plugin/UltimakerFormatPackage/thumbnail/') - .replace('/api/', '/') + data.path.replace('.ufp.gcode', '.png') - : undefined; + .getURL(data.thumbnail) + .replace('/api/', '/') + : 'assets/object.svg'; resolve(thumbnail); }, (error: HttpErrorResponse): void => { diff --git a/src/app/files/files.component.html b/src/app/files/files.component.html index 9566dbecf..7e833f5df 100644 --- a/src/app/files/files.component.html +++ b/src/app/files/files.component.html @@ -70,7 +70,7 @@ {{ fileDetail.name }} {{ fileDetail.path }} {{ fileDetail.date }} - + diff --git a/src/app/octoprint-api/filesAPI.ts b/src/app/octoprint-api/filesAPI.ts index bd6cfff86..0dbcc3142 100644 --- a/src/app/octoprint-api/filesAPI.ts +++ b/src/app/octoprint-api/filesAPI.ts @@ -14,6 +14,7 @@ export interface OctoprintFilesAPI { statistics?: object; type: string; typePath: [string]; + thumbnail?: string; } export interface OctoprintFolderAPI { diff --git a/src/app/plugin-service/filament-manager.service.ts b/src/app/plugin-service/filament-manager.service.ts new file mode 100644 index 000000000..20dd32b94 --- /dev/null +++ b/src/app/plugin-service/filament-manager.service.ts @@ -0,0 +1,172 @@ +import { HttpClient, HttpErrorResponse } from '@angular/common/http'; +import { Injectable } from '@angular/core'; +import { Subscription } from 'rxjs'; + +import { ConfigService } from '../config/config.service'; +import { NotificationService } from '../notification/notification.service'; + +const colorRegexp = /\((.*)\)$/g; + +@Injectable({ + providedIn: 'root', +}) +export class FilamentManagerService { + private httpGETRequest: Subscription; + private httpPOSTRequest: Subscription; + + public constructor( + private configService: ConfigService, + private notificationService: NotificationService, + private http: HttpClient, + ) {} + + public getSpoolList(): Promise { + return new Promise((resolve, reject): void => { + if (this.httpGETRequest) { + this.httpGETRequest.unsubscribe(); + } + this.httpGETRequest = this.http + .get( + this.configService.getURL('plugin/filamentmanager/spools').replace('/api', ''), + this.configService.getHTTPHeaders(), + ) + .subscribe( + (spools: FilamentSpoolList): void => { + spools.spools.forEach((spool): void => { + let match = colorRegexp.exec(spool.name); + if (match) { + spool.color = match[1]; + spool.displayName = `${spool.profile.vendor} - ${spool.name.replace(match[0], '')}`; + } else { + spool.color = '#f5f6fa'; + spool.displayName = `${spool.profile.vendor} - ${spool.name}`; + } + colorRegexp.lastIndex = 0; + }); + resolve(spools); + }, + (error: HttpErrorResponse): void => { + this.notificationService.setError("Can't load filament spools!", error.message); + reject(); + }, + ); + }); + } + + public getCurrentSpool(): Promise { + return new Promise((resolve, reject): void => { + if (this.httpGETRequest) { + this.httpGETRequest.unsubscribe(); + } + this.httpGETRequest = this.http + .get( + this.configService.getURL('plugin/filamentmanager/selections').replace('/api', ''), + this.configService.getHTTPHeaders(), + ) + .subscribe( + (selections: FilamentSelections): void => { + if (selections.selections.length > 0) { + let match = colorRegexp.exec(selections.selections[0].spool.name); + if (match) { + selections.selections[0].spool.color = match[1]; + selections.selections[0].spool.displayName = `${ + selections.selections[0].spool.profile.vendor + } - ${selections.selections[0].spool.name.replace(match[0], '')}`; + } else { + selections.selections[0].spool.color = '#f5f6fa'; + selections.selections[0].spool.displayName = `${selections.selections[0].spool.profile.vendor} - ${selections.selections[0].spool.name}`; + } + colorRegexp.lastIndex = 0; + resolve(selections.selections[0].spool); + } + resolve(null); + }, + (error: HttpErrorResponse): void => { + this.notificationService.setError("Can't load filament spools!", error.message); + reject(); + }, + ); + }); + } + + public setCurrentSpool(spool: FilamentSpool): Promise { + return new Promise((resolve, reject): void => { + let setSpoolBody: FilamentSelectionPatch = { + selection: { + tool: 0, + spool: spool, + }, + }; + this.httpPOSTRequest = this.http + .patch( + this.configService.getURL('plugin/filamentmanager/selections/0').replace('/api', ''), + setSpoolBody, + this.configService.getHTTPHeaders(), + ) + .subscribe( + (selection: FilamentSelectionConfirm): void => { + if (selection.selection.spool.id === spool.id) { + resolve(); + } else { + this.notificationService.setError( + `Spool IDs didn't match`, + `Can't change spool. Please change spool manually in the OctoPrint UI.`, + ); + reject(); + } + }, + (error: HttpErrorResponse): void => { + this.notificationService.setError("Can't set new spool!", error.message); + reject(); + }, + ); + }); + } +} + +export interface FilamentSpoolList { + spools: FilamentSpool[]; +} + +export interface FilamentSelections { + selections: FilamentSelection[]; +} + +interface FilamentSelectionPatch { + selection: { + tool: number; + spool: FilamentSpool; + }; +} + +interface FilamentSelectionConfirm { + selection: FilamentSelection; +} + +interface FilamentSelection { + // eslint-disable-next-line camelcase + client_id: string; + spool: FilamentSpool; + tool: number; +} + +export interface FilamentSpool { + /* eslint-disable camelcase */ + cost: number; + id: number; + name: string; + displayName?: string; + color?: string; + profile: FilamentProfile; + temp_offset: number; + used: number; + weight: number; +} + +interface FilamentProfile { + density: number; + diameter: number; + id: number; + material: string; + vendor: string; +} diff --git a/src/app/print-control/print-control.component.ts b/src/app/print-control/print-control.component.ts index e1c5b7135..c52437f44 100644 --- a/src/app/print-control/print-control.component.ts +++ b/src/app/print-control/print-control.component.ts @@ -19,7 +19,12 @@ export class PrintControlComponent { public feedrate: number; public flowrate: number; - public constructor(private jobService: JobService, private printerService: PrinterService) {} + public constructor(private jobService: JobService, private printerService: PrinterService) { + this.temperatureHotend = 0; + this.temperatureHeatbed = 0; + this.flowrate = 100; + this.feedrate = 100; + } public isClickOnPreview(event: MouseEvent): boolean { const previewSwitchMin = window.innerWidth * 0.08; @@ -99,10 +104,6 @@ export class PrintControlComponent { } private loadData(): void { - this.temperatureHotend = 0; - this.temperatureHeatbed = 0; - this.flowrate = 100; - this.feedrate = 100; this.printerService .getObservable() .pipe(take(1)) diff --git a/src/app/printer.service.ts b/src/app/printer.service.ts index 847f5ce27..59b9f99c9 100644 --- a/src/app/printer.service.ts +++ b/src/app/printer.service.ts @@ -96,6 +96,10 @@ export class PrinterService { return this.observable; } + public stopMotors(): void { + this.executeGCode('M410'); + } + public jog(x: number, y: number, z: number): void { const jogPayload: JogCommand = { command: 'jog', @@ -114,6 +118,43 @@ export class PrinterService { ); } + public extrude(amount: number, speed: number): void { + let multiplier = 1; + let toBeExtruded: number; + if (amount < 0) { + multiplier = -1; + toBeExtruded = amount * -1; + } else { + toBeExtruded = amount; + } + + while (toBeExtruded > 0) { + if (toBeExtruded >= 100) { + toBeExtruded -= 100; + this.moveExtruder(100 * multiplier, speed); + } else { + this.moveExtruder(toBeExtruded * multiplier, speed); + toBeExtruded = 0; + } + } + } + + private moveExtruder(amount: number, speed: number): void { + const extrudePayload: ExtrudeCommand = { + command: 'extrude', + amount, + speed: speed * 60, + }; + this.httpPOSTRequest = this.http + .post(this.configService.getURL('printer/tool'), extrudePayload, this.configService.getHTTPHeaders()) + .subscribe( + (): void => null, + (error: HttpErrorResponse): void => { + this.notificationService.setError("Can't extrude Filament!", error.message); + }, + ); + } + public executeGCode(gCode: string): void { if (this.httpPOSTRequest) { this.httpPOSTRequest.unsubscribe(); @@ -238,13 +279,19 @@ export interface PrinterValue { } interface JogCommand { - command: string; + command: 'jog'; x: number; y: number; z: number; speed: number; } +interface ExtrudeCommand { + command: 'extrude'; + amount: number; + speed: number; +} + interface GCodeCommand { commands: string[]; } diff --git a/src/app/settings/settings.component.html b/src/app/settings/settings.component.html index 29c0307aa..638b4d03c 100644 --- a/src/app/settings/settings.component.html +++ b/src/app/settings/settings.component.html @@ -114,7 +114,7 @@ + + +
{{ fileDetail.size }}mb
- + (mm/s)
+ + +
+
Please set these values carefully, as they possibly + can destroy parts of your printer, just don't set your Feed Speed to high and your Feed + Length to long.

diff --git a/src/app/settings/settings.component.scss b/src/app/settings/settings.component.scss index d8ad46537..9be117af0 100644 --- a/src/app/settings/settings.component.scss +++ b/src/app/settings/settings.component.scss @@ -265,6 +265,13 @@ } } +.filament-feed-speed-info { + font-size: 1.7vw; + text-align: justify; + opacity: 0.7; + font-style: italic; +} + @keyframes fadein { from { opacity: 0; diff --git a/src/app/standby/standby.component.ts b/src/app/standby/standby.component.ts index 953b01302..f09800166 100644 --- a/src/app/standby/standby.component.ts +++ b/src/app/standby/standby.component.ts @@ -48,7 +48,7 @@ export class StandbyComponent implements OnInit { .post(this.configService.getURL('connection'), connectPayload, this.configService.getHTTPHeaders()) .subscribe( (): void => { - setTimeout(this.checkConnection.bind(this), 3000); + setTimeout(this.checkConnection.bind(this), 5000); }, (): void => { this.setConnectionError(); @@ -60,16 +60,29 @@ export class StandbyComponent implements OnInit { this.http.get(this.configService.getURL('connection'), this.configService.getHTTPHeaders()).subscribe( (data: OctoprintConnectionAPI): void => { if (data.current.state === 'Closed') { - if (this.connectionRetries === 0) { + if (this.connectionRetries <= 0) { this.connectionRetries = 3; this.setConnectionError(); } else { this.connectionRetries--; setTimeout(this.connectToPrinter.bind(this), 500); } - } else if (data.current.state === 'Error') { - this.connectionRetries = 3; - this.setConnectionError(); + } else if (data.current.state.includes('Error')) { + if (this.connectionRetries <= 1) { + this.connectionRetries = 3; + this.setConnectionError(); + } else { + this.connectionRetries--; + setTimeout(this.connectToPrinter.bind(this), 500); + } + } else if (data.current.state === 'Connecting') { + if (this.connectionRetries < 0) { + this.connectionRetries = 3; + this.setConnectionError(); + } else { + this.connectionRetries--; + setTimeout(this.checkConnection.bind(this), 5000); + } } else { this.disableStandby(); }