소스 검색

Regenerating variabless sas on theme edit v1

Dominik Prokop 6 년 전
부모
커밋
2542a43ec0

+ 4 - 7
package.json

@@ -17,13 +17,12 @@
     "@babel/preset-react": "^7.0.0",
     "@babel/preset-typescript": "^7.1.0",
     "@rtsao/plugin-proposal-class-properties": "^7.0.1-patch.1",
-    "@types/chokidar": "^1.7.5",
     "@types/classnames": "^2.2.6",
     "@types/d3": "^4.10.1",
     "@types/enzyme": "^3.1.13",
     "@types/jest": "^23.3.2",
     "@types/jquery": "^1.10.35",
-    "@types/node": "^10.12.24",
+    "@types/node": "^8.0.31",
     "@types/react": "^16.7.6",
     "@types/react-dom": "^16.0.9",
     "@types/react-grid-layout": "^0.16.6",
@@ -37,8 +36,8 @@
     "babel-jest": "^23.6.0",
     "babel-loader": "^8.0.4",
     "babel-plugin-angularjs-annotate": "^0.9.0",
-    "chokidar": "^2.1.0",
     "clean-webpack-plugin": "^0.1.19",
+    "concurrently": "^4.1.0",
     "css-loader": "^0.28.7",
     "enzyme": "^3.6.0",
     "enzyme-adapter-react-16": "^1.5.0",
@@ -72,7 +71,6 @@
     "jest-date-mock": "^1.0.6",
     "lint-staged": "^8.1.3",
     "load-grunt-tasks": "3.5.2",
-    "log-timestamp": "^0.2.1",
     "mini-css-extract-plugin": "^0.4.0",
     "mocha": "^4.0.1",
     "monaco-editor": "^0.15.6",
@@ -116,7 +114,7 @@
   },
   "scripts": {
     "dev": "webpack --progress --colors --mode development --config scripts/webpack/webpack.dev.js",
-    "start": "webpack-dev-server --progress --colors --mode development --config scripts/webpack/webpack.hot.js",
+    "start": "node ./scripts/cli/start.js",
     "watch": "webpack --progress --colors --watch --mode development --config scripts/webpack/webpack.dev.js",
     "build": "grunt build",
     "test": "grunt test",
@@ -126,8 +124,7 @@
     "api-tests": "jest --notify --watch --config=tests/api/jest.js",
     "precommit": "grunt precommit",
     "storybook": "cd packages/grafana-ui && yarn storybook",
-    "tmp": "nodemon -e ts -w ./packages/grafana-ui/src/themes -x yarn run tmp:exec",
-    "tmp:exec": "ts-node --project ./scripts/cli/tsconfig.json ./scripts/cli/watch.ts"
+    "themes:generate": "ts-node --project ./scripts/cli/tsconfig.json ./scripts/cli/generateSassVariableFiles.ts"
   },
   "husky": {
     "hooks": {

+ 15 - 14
packages/grafana-ui/src/themes/_variables.dark.scss.tmpl.ts

@@ -8,23 +8,24 @@ export const darkThemeVarsTemplate = (theme: GrafanaTheme) => `
 
   // Grays
   // -------------------------
-  $black: #000;
-  $dark-1: #141414;
-  $dark-2: #1f1f20;
-  $dark-3: #262628;
-  $dark-4: #333333;
-  $dark-5: #444444;
-  $gray-1: #555555;
-  $gray-2: #8e8e8e;
-  $gray-3: #b3b3b3;
-  $gray-4: #d8d9da;
-  $gray-5: #ececec;
-  $gray-7: #fbfbfb;
+  $black: ${theme.colors.black};
+  $dark-1: ${theme.colors.dark2};
+  $dark-2: ${theme.colors.dark2};
+  $dark-3: ${theme.colors.dark3};
+  $dark-4: ${theme.colors.dark4};
+  $dark-5: ${theme.colors.dark5};
+  $gray-1: ${theme.colors.gray1};
+  $gray-2: ${theme.colors.gray2};
+  $gray-3: ${theme.colors.gray3};
+  $gray-4: ${theme.colors.gray4};
+  $gray-5: ${theme.colors.gray5};
+  $gray-6: ${theme.colors.gray6};
+  $gray-7: ${theme.colors.gray7};
 
   $gray-blue: #212327;
   $input-black: #09090b;
 
-  $white: #fff;
+  $white: ${theme.colors.white};
 
   // Accent colors
   // -------------------------
@@ -383,5 +384,5 @@ export const darkThemeVarsTemplate = (theme: GrafanaTheme) => `
 
   $vertical-resize-handle-bg: $dark-5;
   $vertical-resize-handle-dots: $gray-1;
-$vertical-resize-handle-dots-hover: $gray-2;
+  $vertical-resize-handle-dots-hover: $gray-2;
 `;

+ 385 - 0
packages/grafana-ui/src/themes/_variables.light.scss.tmpl.ts

@@ -0,0 +1,385 @@
+import { GrafanaTheme } from '../types';
+
+export const lightThemeVarsTemplate = (theme: GrafanaTheme) => `
+  // Global values
+  // --------------------------------------------------
+
+  $theme-name: light;
+
+  // Grays
+  // -------------------------
+  $black: ${theme.colors.black};
+  $dark-1: ${theme.colors.dark1};
+  $dark-2: ${theme.colors.dark2};
+  $dark-3: ${theme.colors.dark3};
+  $dark-4: ${theme.colors.dark4};
+  $dark-5: ${theme.colors.dark5};
+  $gray-1: ${theme.colors.gray1};
+  $gray-2: ${theme.colors.gray2};
+  $gray-3: ${theme.colors.gray3};
+  $gray-4: ${theme.colors.gray4};
+  $gray-5: ${theme.colors.gray5};
+  $gray-6: ${theme.colors.gray6};
+  $gray-7: ${theme.colors.gray7};
+
+  $white: ${theme.colors.white};
+
+  // Accent colors
+  // -------------------------
+  $blue: ${theme.colors.blue};
+  $blue-light: #00a8e6;
+  $green: #3aa655;
+  $red: #d44939;
+  $yellow: #ff851b;
+  $orange: #ff7941;
+  $purple: #9954bb;
+  $variable: $blue;
+
+  $brand-primary: $orange;
+  $brand-success: $green;
+  $brand-warning: $orange;
+  $brand-danger: $red;
+
+  $query-red: $red;
+  $query-green: $green;
+  $query-purple: $purple;
+  $query-orange: $orange;
+  $query-keyword: $blue;
+
+  // Status colors
+  // -------------------------
+  $online: #01a64f;
+  $warn: #f79520;
+  $critical: #ec2128;
+
+  // Scaffolding
+  // -------------------------
+  $body-bg: $gray-7;
+  $page-bg: $gray-7;
+
+  $body-color: $gray-1;
+  $text-color: $gray-1;
+  $text-color-strong: $dark-2;
+  $text-color-weak: $gray-2;
+  $text-color-faint: $gray-4;
+  $text-color-emphasis: $dark-5;
+
+  $text-shadow-faint: none;
+  $textShadow: none;
+
+  // gradients
+  $brand-gradient: linear-gradient(
+    to right,
+    rgba(255, 213, 0, 1) 0%,
+    rgba(255, 68, 0, 1) 99%,
+    rgba(255, 68, 0, 1) 100%
+  );
+
+  $page-gradient: linear-gradient(180deg, $white 10px, $gray-7 100px);
+  $edit-gradient: linear-gradient(-60deg, $gray-7, #f5f6f9 70%, $gray-7 98%);
+
+  // Links
+  // -------------------------
+  $link-color: $gray-1;
+  $link-color-disabled: lighten($link-color, 30%);
+  $link-hover-color: darken($link-color, 20%);
+  $external-link-color: $blue-light;
+
+  // Typography
+  // -------------------------
+  $headings-color: $text-color;
+  $abbr-border-color: $gray-2 !default;
+  $text-muted: $text-color-weak;
+
+  $hr-border-color: $dark-3 !default;
+
+  // Panel
+  // -------------------------
+  $panel-bg: $white;
+  $panel-border: solid 1px $gray-5;
+  $panel-header-hover-bg: $gray-6;
+  $panel-corner: $gray-4;
+
+  // Page header
+  $page-header-bg: linear-gradient(90deg, $white, $gray-7);
+  $page-header-shadow: inset 0px -3px 10px $gray-6;
+  $page-header-border-color: $gray-4;
+
+  $divider-border-color: $gray-2;
+
+  // Graphite Target Editor
+  $tight-form-bg: #eaebee;
+  $tight-form-func-bg: $gray-5;
+  $tight-form-func-highlight-bg: $gray-6;
+
+  $modal-backdrop-bg: $body-bg;
+  $code-tag-bg: $gray-6;
+  $code-tag-border: darken($code-tag-bg, 3%);
+
+  // cards
+  $card-background: linear-gradient(135deg, $gray-6, $gray-5);
+  $card-background-hover: linear-gradient(135deg, $gray-5, $gray-6);
+  $card-shadow: -1px -1px 0 0 hsla(0, 0%, 100%, 0.1), 1px 1px 0 0 rgba(0, 0, 0, 0.1);
+
+  // Lists
+  $list-item-bg: linear-gradient(135deg, $gray-5, $gray-6); //$card-background;
+  $list-item-hover-bg: darken($gray-5, 5%);
+  $list-item-link-color: $text-color;
+  $list-item-shadow: $card-shadow;
+
+  $empty-list-cta-bg: $gray-6;
+
+  // Scrollbars
+  $scrollbarBackground: $gray-5;
+  $scrollbarBackground2: $gray-5;
+  $scrollbarBorder: $gray-4;
+
+  // Tables
+  // -------------------------
+  $table-bg: transparent; // overall background-color
+  $table-bg-accent: $gray-5; // for striping
+  $table-border: $gray-3; // table and cell border
+
+  $table-bg-odd: $gray-6;
+  $table-bg-hover: $gray-5;
+
+  // Buttons
+  // -------------------------
+  $btn-primary-bg: $brand-primary;
+  $btn-primary-bg-hl: lighten($brand-primary, 8%);
+
+  $btn-secondary-bg: $blue;
+  $btn-secondary-bg-hl: lighten($blue, 4%);
+
+  $btn-success-bg: lighten($green, 3%);
+  $btn-success-bg-hl: darken($green, 3%);
+
+  $btn-warning-bg: lighten($orange, 3%);
+  $btn-warning-bg-hl: darken($orange, 3%);
+
+  $btn-danger-bg: lighten($red, 3%);
+  $btn-danger-bg-hl: darken($red, 3%);
+
+  $btn-inverse-bg: $gray-6;
+  $btn-inverse-bg-hl: darken($gray-6, 5%);
+  $btn-inverse-text-color: $gray-1;
+  $btn-inverse-text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4);
+
+  $btn-link-color: $gray-1;
+
+  $iconContainerBackground: $white;
+
+  $btn-divider-left: $gray-4;
+  $btn-divider-right: $gray-7;
+
+  $btn-drag-image: '../img/grab_light.svg';
+
+  // Forms
+  // -------------------------
+  $input-bg: $white;
+  $input-bg-disabled: $gray-5;
+
+  $input-color: $dark-3;
+  $input-border-color: $gray-5;
+  $input-box-shadow: none;
+  $input-border-focus: $blue !default;
+  $input-box-shadow-focus: $blue !default;
+  $input-color-placeholder: $gray-4 !default;
+  $input-label-bg: $gray-5;
+  $input-label-border-color: $gray-5;
+  $input-color-select-arrow: $gray-1;
+
+  // Input placeholder text color
+  $placeholderText: $gray-2;
+
+  // search
+  $search-shadow: 0 5px 30px 0 $gray-4;
+  $search-filter-box-bg: $gray-7;
+
+  // Typeahead
+  $typeahead-shadow: 0 5px 10px 0 $gray-5;
+  $typeahead-selected-bg: $gray-6;
+  $typeahead-selected-color: $yellow;
+
+  // Dropdowns
+  // -------------------------
+  $dropdownBackground: $white;
+  $dropdownBorder: $gray-4;
+  $dropdownDividerTop: $gray-6;
+  $dropdownDividerBottom: $white;
+
+  $dropdownLinkColor: $dark-3;
+  $dropdownLinkColorHover: $link-color;
+  $dropdownLinkColorActive: $link-color;
+
+  $dropdownLinkBackgroundHover: $gray-6;
+
+  // Horizontal forms & lists
+  // -------------------------
+  $horizontalComponentOffset: 180px;
+
+  // Navbar
+  // -------------------------
+  $navbarHeight: 52px;
+
+  $navbarBackground: $white;
+  $navbarBorder: 1px solid $gray-4;
+  $navbarShadow: 0 0 3px #c1c1c1;
+
+  $navbarLinkColor: #444;
+
+  $navbarButtonBackground: lighten($navbarBackground, 3%);
+  $navbarButtonBackgroundHighlight: lighten($navbarBackground, 5%);
+
+  $navbar-button-border: $gray-4;
+
+  // Sidemenu
+  // -------------------------
+  $side-menu-bg: $dark-2;
+  $side-menu-bg-mobile: rgba(0, 0, 0, 0); //$gray-6;
+  $side-menu-item-hover-bg: $gray-1;
+  $side-menu-shadow: 5px 0px 10px -5px $gray-1;
+  $side-menu-link-color: $gray-6;
+
+  // Menu dropdowns
+  // -------------------------
+  $menu-dropdown-bg: $gray-7;
+  $menu-dropdown-hover-bg: $gray-6;
+  $menu-dropdown-shadow: 5px 5px 10px -5px $gray-1;
+
+  // Tabs
+  // -------------------------
+  $tab-border-color: $gray-5;
+
+  // Toolbar
+  $toolbar-bg: white;
+
+  // Form states and alerts
+  // -------------------------
+  $warning-text-color: lighten($orange, 10%);
+  $error-text-color: lighten($red, 10%);
+  $success-text-color: lighten($green, 10%);
+  $info-text-color: $blue;
+
+  $alert-error-bg: linear-gradient(90deg, #d44939, #e04d3d);
+  $alert-success-bg: linear-gradient(90deg, #3aa655, #47b274);
+  $alert-warning-bg: linear-gradient(90deg, #d44939, #e04d3d);
+  $alert-info-bg: $blue;
+
+  // popover
+  $popover-bg: $page-bg;
+  $popover-color: $text-color;
+  $popover-border-color: $gray-5;
+  $popover-shadow: 0 0 20px $white;
+
+  $popover-help-bg: $blue;
+  $popover-help-color: $gray-6;
+
+  $popover-error-bg: $btn-danger-bg;
+
+  // Tooltips and popovers
+  // -------------------------
+  $tooltipColor: $popover-help-color;
+  $tooltipArrowWidth: 5px;
+  $tooltipLinkColor: lighten($popover-help-color, 5%);
+  $graph-tooltip-bg: $gray-5;
+
+  $tooltipBackground: $gray-1;
+  $tooltipColor: $gray-7;
+  $tooltipArrowColor: $tooltipBackground; // Used by Angular tooltip
+  $tooltipBackgroundError: $brand-danger;
+
+  // images
+  $checkboxImageUrl: '../img/checkbox_white.png';
+
+  // info box
+  $info-box-border-color: lighten($blue, 20%);
+
+  // footer
+  $footer-link-color: $gray-3;
+  $footer-link-hover: $dark-5;
+
+  // json explorer
+  $json-explorer-default-color: black;
+  $json-explorer-string-color: green;
+  $json-explorer-number-color: blue;
+  $json-explorer-boolean-color: red;
+  $json-explorer-null-color: #855a00;
+  $json-explorer-undefined-color: rgb(202, 11, 105);
+  $json-explorer-function-color: #ff20ed;
+  $json-explorer-rotate-time: 100ms;
+  $json-explorer-toggler-opacity: 0.6;
+  $json-explorer-bracket-color: blue;
+  $json-explorer-key-color: #00008b;
+  $json-explorer-url-color: blue;
+
+  // Changelog and diff
+  // -------------------------
+  $diff-label-bg: $gray-5;
+  $diff-label-fg: $gray-2;
+
+  $diff-arrow-color: $dark-3;
+  $diff-group-bg: $gray-7;
+
+  $diff-json-bg: $gray-5;
+  $diff-json-fg: $gray-2;
+
+  $diff-json-added: lighten(desaturate($green, 30%), 10%);
+  $diff-json-deleted: desaturate($red, 35%);
+
+  $diff-json-old: #5a372a;
+  $diff-json-new: #664e33;
+
+  $diff-json-changed-fg: $gray-6;
+  $diff-json-changed-num: $gray-4;
+
+  $diff-json-icon: $gray-4;
+
+  //Submenu
+  $variable-option-bg: $blue-light;
+
+  //Switch Slider
+  // -------------------------
+  $switch-bg: $white;
+  $switch-slider-color: $gray-7;
+  $switch-slider-off-bg: $gray-5;
+  $switch-slider-on-bg: linear-gradient(90deg, $yellow, $red);
+  $switch-slider-shadow: 0 0 3px $dark-5;
+
+  //Checkbox
+  // -------------------------
+  $checkbox-bg: $gray-6;
+  $checkbox-border: 1px solid $gray-3;
+  $checkbox-checked-bg: linear-gradient(0deg, $yellow, $red);
+  $checkbox-color: $gray-7;
+
+  //Panel Edit
+  // -------------------------
+  $panel-editor-shadow: 0px 0px 8px $gray-3;
+  $panel-editor-side-menu-shadow: drop-shadow(0 0 2px $gray-3);
+  $panel-editor-viz-item-shadow: 0 0 4px $gray-3;
+  $panel-editor-viz-item-border: 1px solid $gray-3;
+  $panel-editor-viz-item-shadow-hover: 0 0 4px $blue-light;
+  $panel-editor-viz-item-border-hover: 1px solid $blue-light;
+  $panel-editor-viz-item-bg: $white;
+  $panel-editor-tabs-line-color: $dark-5;
+  $panel-editor-viz-item-bg-hover: lighten($blue, 62%);
+
+  $panel-options-group-border: none;
+  $panel-options-group-header-bg: $gray-5;
+
+  $panel-grid-placeholder-bg: lighten($blue, 62%);
+  $panel-grid-placeholder-shadow: 0 0 4px $blue-light;
+
+  // logs
+  $logs-color-unkown: $gray-5;
+
+  // toggle-group
+  $button-toggle-group-btn-active-bg: $brand-primary;
+  $button-toggle-group-btn-active-shadow: inset 0 0 4px $white;
+  $button-toggle-group-btn-seperator-border: 1px solid $gray-6;
+
+  $vertical-resize-handle-bg: $gray-4;
+  $vertical-resize-handle-dots: $gray-3;
+  $vertical-resize-handle-dots-hover: $gray-2;
+`;

+ 1 - 1
public/app/core/specs/search_results.test.ts

@@ -4,7 +4,7 @@ import appEvents from 'app/core/app_events';
 
 jest.mock('app/core/app_events', () => {
   return {
-    emit: jest.fn<any>(),
+    emit: jest.fn(),
   };
 });
 

+ 3 - 3
public/app/features/playlist/specs/playlist_srv.test.ts

@@ -2,7 +2,7 @@ import { PlaylistSrv } from '../playlist_srv';
 
 const dashboards = [{ url: 'dash1' }, { url: 'dash2' }];
 
-const createPlaylistSrv = (): [PlaylistSrv, { url: jest.MockInstance<any> }] => {
+const createPlaylistSrv = (): [PlaylistSrv, { url: jest.MockInstance<any, any> }] => {
   const mockBackendSrv = {
     get: jest.fn(url => {
       switch (url) {
@@ -27,7 +27,7 @@ const createPlaylistSrv = (): [PlaylistSrv, { url: jest.MockInstance<any> }] =>
   return [new PlaylistSrv(mockLocation, mockTimeout, mockBackendSrv), mockLocation];
 };
 
-const mockWindowLocation = (): [jest.MockInstance<any>, () => void] => {
+const mockWindowLocation = (): [jest.MockInstance<any, any>, () => void] => {
   const oldLocation = window.location;
   const hrefMock = jest.fn();
 
@@ -50,7 +50,7 @@ const mockWindowLocation = (): [jest.MockInstance<any>, () => void] => {
 
 describe('PlaylistSrv', () => {
   let srv: PlaylistSrv;
-  let hrefMock: jest.MockInstance<any>;
+  let hrefMock: jest.MockInstance<any, any>;
   let unmockLocation: () => void;
   const initialUrl = 'http://localhost/playlist';
 

+ 4 - 3
public/sass/_variables.dark.scss

@@ -5,8 +5,8 @@ $theme-name: dark;
 
 // Grays
 // -------------------------
-$black: #000;
-$dark-1: #141414;
+$black: #000000;
+$dark-1: #1f1f20;
 $dark-2: #1f1f20;
 $dark-3: #262628;
 $dark-4: #333333;
@@ -16,12 +16,13 @@ $gray-2: #8e8e8e;
 $gray-3: #b3b3b3;
 $gray-4: #d8d9da;
 $gray-5: #ececec;
+$gray-6: #f4f5f8;
 $gray-7: #fbfbfb;
 
 $gray-blue: #212327;
 $input-black: #09090b;
 
-$white: #fff;
+$white: #ffffff;
 
 // Accent colors
 // -------------------------

+ 47 - 55
public/sass/_variables.light.scss

@@ -3,24 +3,10 @@
 
 $theme-name: light;
 
-// New Colors
-// -------------------------
-$sapphire-faint: #f5f9ff;
-$sapphire-light: #a8caff;
-$sapphire-base: #3274d9;
-$sapphire-shade: #1f60c4;
-$lobster-base: #e02f44;
-$lobster-shade: #c4162a;
-$green-base: #37872d;
-$green-shade: #19730e;
-$green-base: #3eb15b;
-$green-shade: #369b4f;
-$purple-shade: #8f3bb8;
-$yellow-base: #f2cc0c;
-
 // Grays
 // -------------------------
-$black: #000;
+$black: #000000;
+$dark-1: #13161d;
 $dark-2: #1e2028;
 $dark-3: #303133;
 $dark-4: #35373f;
@@ -33,35 +19,35 @@ $gray-5: #dde4ed;
 $gray-6: #e9edf2;
 $gray-7: #f7f8fa;
 
-$white: #fff;
+$white: #ffffff;
 
 // Accent colors
 // -------------------------
 $blue: #0083b3;
 $blue-light: #00a8e6;
 $green: #3aa655;
-$red: $lobster-base;
+$red: #d44939;
 $yellow: #ff851b;
 $orange: #ff7941;
 $purple: #9954bb;
-$variable: $purple-shade;
+$variable: $blue;
 
 $brand-primary: $orange;
 $brand-success: $green;
 $brand-warning: $orange;
-$brand-danger: $lobster-base;
+$brand-danger: $red;
 
-$query-red: $lobster-base;
+$query-red: $red;
 $query-green: $green;
 $query-purple: $purple;
 $query-orange: $orange;
-$query-keyword: $sapphire-base;
+$query-keyword: $blue;
 
 // Status colors
 // -------------------------
-$online: $green-shade;
+$online: #01a64f;
 $warn: #f79520;
-$critical: $lobster-shade;
+$critical: #ec2128;
 
 // Scaffolding
 // -------------------------
@@ -76,6 +62,7 @@ $text-color-faint: $gray-4;
 $text-color-emphasis: $dark-5;
 
 $text-shadow-faint: none;
+$textShadow: none;
 
 // gradients
 $brand-gradient: linear-gradient(to right, rgba(255, 213, 0, 1) 0%, rgba(255, 68, 0, 1) 99%, rgba(255, 68, 0, 1) 100%);
@@ -88,7 +75,7 @@ $edit-gradient: linear-gradient(-60deg, $gray-7, #f5f6f9 70%, $gray-7 98%);
 $link-color: $gray-1;
 $link-color-disabled: lighten($link-color, 30%);
 $link-hover-color: darken($link-color, 20%);
-$external-link-color: $sapphire-shade;
+$external-link-color: $blue-light;
 
 // Typography
 // -------------------------
@@ -150,17 +137,20 @@ $table-bg-hover: $gray-5;
 
 // Buttons
 // -------------------------
-$btn-primary-bg: $green-base;
-$btn-primary-bg-hl: $green-shade;
+$btn-primary-bg: $brand-primary;
+$btn-primary-bg-hl: lighten($brand-primary, 8%);
 
-$btn-secondary-bg: $sapphire-base;
-$btn-secondary-bg-hl: $sapphire-shade;
+$btn-secondary-bg: $blue;
+$btn-secondary-bg-hl: lighten($blue, 4%);
 
-$btn-success-bg: $green-base;
-$btn-success-bg-hl: $green-shade;
+$btn-success-bg: lighten($green, 3%);
+$btn-success-bg-hl: darken($green, 3%);
 
-$btn-danger-bg: $lobster-base;
-$btn-danger-bg-hl: $lobster-shade;
+$btn-warning-bg: lighten($orange, 3%);
+$btn-warning-bg-hl: darken($orange, 3%);
+
+$btn-danger-bg: lighten($red, 3%);
+$btn-danger-bg-hl: darken($red, 3%);
 
 $btn-inverse-bg: $gray-6;
 $btn-inverse-bg-hl: darken($gray-6, 5%);
@@ -184,8 +174,8 @@ $input-bg-disabled: $gray-5;
 $input-color: $dark-3;
 $input-border-color: $gray-5;
 $input-box-shadow: none;
-$input-border-focus: $sapphire-light !default;
-$input-box-shadow-focus: $sapphire-light !default;
+$input-border-focus: $blue !default;
+$input-box-shadow-focus: $blue !default;
 $input-color-placeholder: $gray-4 !default;
 $input-label-bg: $gray-5;
 $input-label-border-color: $gray-5;
@@ -259,13 +249,14 @@ $toolbar-bg: white;
 // Form states and alerts
 // -------------------------
 $warning-text-color: lighten($orange, 10%);
-$error-text-color: $lobster-shade;
+$error-text-color: lighten($red, 10%);
 $success-text-color: lighten($green, 10%);
+$info-text-color: $blue;
 
-$alert-error-bg: linear-gradient(90deg, $lobster-base, $lobster-shade);
-$alert-success-bg: linear-gradient(90deg, $green-base, $green-shade);
-$alert-warning-bg: linear-gradient(90deg, $lobster-base, $lobster-shade);
-$alert-info-bg: $sapphire-base;
+$alert-error-bg: linear-gradient(90deg, #d44939, #e04d3d);
+$alert-success-bg: linear-gradient(90deg, #3aa655, #47b274);
+$alert-warning-bg: linear-gradient(90deg, #d44939, #e04d3d);
+$alert-info-bg: $blue;
 
 // popover
 $popover-bg: $page-bg;
@@ -273,7 +264,7 @@ $popover-color: $text-color;
 $popover-border-color: $gray-5;
 $popover-shadow: 0 0 20px $white;
 
-$popover-help-bg: $sapphire-base;
+$popover-help-bg: $blue;
 $popover-help-color: $gray-6;
 
 $popover-error-bg: $btn-danger-bg;
@@ -294,7 +285,7 @@ $tooltipBackgroundError: $brand-danger;
 $checkboxImageUrl: '../img/checkbox_white.png';
 
 // info box
-$info-box-border-color: $sapphire-base;
+$info-box-border-color: lighten($blue, 20%);
 
 // footer
 $footer-link-color: $gray-3;
@@ -303,16 +294,16 @@ $footer-link-hover: $dark-5;
 // json explorer
 $json-explorer-default-color: black;
 $json-explorer-string-color: green;
-$json-explorer-number-color: $sapphire-base;
-$json-explorer-boolean-color: $lobster-base;
+$json-explorer-number-color: blue;
+$json-explorer-boolean-color: red;
 $json-explorer-null-color: #855a00;
 $json-explorer-undefined-color: rgb(202, 11, 105);
 $json-explorer-function-color: #ff20ed;
 $json-explorer-rotate-time: 100ms;
 $json-explorer-toggler-opacity: 0.6;
-$json-explorer-bracket-color: $sapphire-base;
+$json-explorer-bracket-color: blue;
 $json-explorer-key-color: #00008b;
-$json-explorer-url-color: $sapphire-base;
+$json-explorer-url-color: blue;
 
 // Changelog and diff
 // -------------------------
@@ -323,35 +314,35 @@ $diff-arrow-color: $dark-3;
 $diff-group-bg: $gray-7;
 
 $diff-json-bg: $gray-5;
-$diff-json-fg: $gray-1;
+$diff-json-fg: $gray-2;
 
-$diff-json-added: $sapphire-shade;
-$diff-json-deleted: $lobster-shade;
+$diff-json-added: lighten(desaturate($green, 30%), 10%);
+$diff-json-deleted: desaturate($red, 35%);
 
 $diff-json-old: #5a372a;
 $diff-json-new: #664e33;
 
-$diff-json-changed-fg: $gray-7;
+$diff-json-changed-fg: $gray-6;
 $diff-json-changed-num: $gray-4;
 
 $diff-json-icon: $gray-4;
 
 //Submenu
-$variable-option-bg: $dropdownLinkBackgroundHover;
+$variable-option-bg: $blue-light;
 
 //Switch Slider
 // -------------------------
 $switch-bg: $white;
 $switch-slider-color: $gray-7;
 $switch-slider-off-bg: $gray-5;
-$switch-slider-on-bg: linear-gradient(90deg, #ff9830, #e55400);
+$switch-slider-on-bg: linear-gradient(90deg, $yellow, $red);
 $switch-slider-shadow: 0 0 3px $dark-5;
 
 //Checkbox
 // -------------------------
 $checkbox-bg: $gray-6;
 $checkbox-border: 1px solid $gray-3;
-$checkbox-checked-bg: linear-gradient(0deg, #ff9830, #e55400);
+$checkbox-checked-bg: linear-gradient(0deg, $yellow, $red);
 $checkbox-color: $gray-7;
 
 //Panel Edit
@@ -365,11 +356,12 @@ $panel-editor-viz-item-border-hover: 1px solid $blue-light;
 $panel-editor-viz-item-bg: $white;
 $panel-editor-tabs-line-color: $dark-5;
 $panel-editor-viz-item-bg-hover: lighten($blue, 62%);
+
 $panel-options-group-border: none;
 $panel-options-group-header-bg: $gray-5;
 
-$panel-grid-placeholder-bg: $sapphire-faint;
-$panel-grid-placeholder-shadow: 0 0 4px $sapphire-light;
+$panel-grid-placeholder-bg: lighten($blue, 62%);
+$panel-grid-placeholder-shadow: 0 0 4px $blue-light;
 
 // logs
 $logs-color-unkown: $gray-5;

+ 35 - 0
scripts/cli/generateSassVariableFiles.ts

@@ -0,0 +1,35 @@
+import fs from 'fs';
+import darkTheme from '@grafana/ui/src/themes/dark';
+import lightTheme from '@grafana/ui/src/themes/light';
+import { darkThemeVarsTemplate } from '@grafana/ui/src/themes/_variables.dark.scss.tmpl';
+import { lightThemeVarsTemplate } from '@grafana/ui/src/themes/_variables.light.scss.tmpl';
+
+const darkThemeVariablesPath = __dirname + '/../../public/sass/_variables.dark.scss';
+const lightThemeVariablesPath = __dirname + '/../../public/sass/_variables.light.scss';
+
+const writeVariablesFile = async (path: string, data: string) => {
+  return new Promise((resolve, reject) => {
+    fs.writeFile(path, data, e => {
+      if (e) {
+        reject(e);
+      } else {
+        resolve(data);
+      }
+    });
+  });
+};
+
+const generateSassVariableFiles = async () => {
+  try {
+    await Promise.all([
+      writeVariablesFile(darkThemeVariablesPath, darkThemeVarsTemplate(darkTheme)),
+      writeVariablesFile(lightThemeVariablesPath, lightThemeVarsTemplate(lightTheme)),
+    ]);
+    console.log('\nSASS variable files generated');
+  } catch (error) {
+    console.error('\nWriting SASS variable files failed', error);
+    process.exit(1);
+  }
+};
+
+generateSassVariableFiles();

+ 0 - 7
scripts/cli/nodemon.json

@@ -1,7 +0,0 @@
-
-{
-  "watch": ["packages/grafana-ui/src/themes"],
-  "ext": "ts",
-  "ignore": ["src/**/*.spec.ts"],
-  "exec": "ts-node ./src/index.ts"
-}

+ 23 - 0
scripts/cli/start.js

@@ -0,0 +1,23 @@
+const concurrently = require('concurrently');
+
+const startTask = async () => {
+  try {
+    const res = await concurrently([
+      {
+        command: 'nodemon -e ts -w ./packages/grafana-ui/src/themes -x yarn run themes:generate',
+        name: 'SASS variables generator',
+      },
+      {
+        command: 'webpack-dev-server --progress --colors --mode development --config scripts/webpack/webpack.hot.js',
+        name: 'Dev server',
+      },
+    ], {
+      killOthers: ['failure', 'failure'],
+  });
+  } catch (e) {
+    console.error(e);
+    process.exit(1);
+  }
+};
+
+startTask();

+ 0 - 24
scripts/cli/watch.ts

@@ -1,24 +0,0 @@
-// import chokidar from 'chokidar';
-import darkTheme from '@grafana/ui/src/themes/dark';
-import { darkThemeVarsTemplate } from '@grafana/ui/src/themes/_variables.dark.scss.tmpl';
-import fs from 'fs';
-
-console.log(__dirname + '../../packages/grafana-ui/src/themes/dark.ts');
-
-const fileToWatch = [
-  __dirname + '/../../packages/grafana-ui/src/themes/dark.ts',
-  __dirname + '/../../packages/grafana-ui/src/themes/light.ts',
-];
-// const watchService = chokidar.watch(fileToWatch);
-console.log(`Watching for file changes on ${fileToWatch}`);
-
-// watchService.on('change', path => {
-
-const result = darkThemeVarsTemplate(darkTheme);
-console.log(result);
-
-fs.writeFile(__dirname + '/../../public/sass/_variables.dark.scss', result, e => {
-  console.log(e);
-});
-
-// });

+ 45 - 60
yarn.lock

@@ -1506,14 +1506,6 @@
   resolved "https://registry.yarnpkg.com/@types/cheerio/-/cheerio-0.22.10.tgz#780d552467824be4a241b29510a7873a7432c4a6"
   integrity sha512-fOM/Jhv51iyugY7KOBZz2ThfT1gwvsGCfWxpLpZDgkGjpEO4Le9cld07OdskikLjDUQJ43dzDaVRSFwQlpdqVg==
 
-"@types/chokidar@^1.7.5":
-  version "1.7.5"
-  resolved "https://registry.yarnpkg.com/@types/chokidar/-/chokidar-1.7.5.tgz#1fa78c8803e035bed6d98e6949e514b133b0c9b6"
-  integrity sha512-PDkSRY7KltW3M60hSBlerxI8SFPXsO3AL/aRVsO4Kh9IHRW74Ih75gUuTd/aE4LSSFqypb10UIX3QzOJwBQMGQ==
-  dependencies:
-    "@types/events" "*"
-    "@types/node" "*"
-
 "@types/classnames@^2.2.6":
   version "2.2.7"
   resolved "https://registry.yarnpkg.com/@types/classnames/-/classnames-2.2.7.tgz#fb68cc9be8487e6ea5b13700e759bfbab7e0fefd"
@@ -1734,11 +1726,6 @@
     "@types/cheerio" "*"
     "@types/react" "*"
 
-"@types/events@*":
-  version "3.0.0"
-  resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7"
-  integrity sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==
-
 "@types/geojson@*":
   version "7946.0.5"
   resolved "https://registry.yarnpkg.com/@types/geojson/-/geojson-7946.0.5.tgz#9aea839ea5af4b1bc079f1d9fa977d48665e02b0"
@@ -1764,11 +1751,16 @@
   resolved "https://registry.yarnpkg.com/@types/node/-/node-11.9.0.tgz#35fea17653490dab82e1d5e69731abfdbf13160d"
   integrity sha512-ry4DOrC+xenhQbzk1iIPzCZGhhPGEFv7ia7Iu6XXSLVluiJIe9FfG7Iu3mObH9mpxEXCWLCMU4JWbCCR9Oy1Zg==
 
-"@types/node@^10.12.18", "@types/node@^10.12.24":
+"@types/node@^10.12.18":
   version "10.12.25"
   resolved "https://registry.yarnpkg.com/@types/node/-/node-10.12.25.tgz#0d01a7dd6127de60d861ece4a650963042abb538"
   integrity sha512-IcvnGLGSQFDvC07Bz2I8SX+QKErDZbUdiQq7S2u3XyzTyJfUmT0sWJMbeQkMzpTAkO7/N7sZpW/arUM2jfKsbQ==
 
+"@types/node@^8.0.31":
+  version "8.10.40"
+  resolved "https://registry.yarnpkg.com/@types/node/-/node-8.10.40.tgz#4314888d5cd537945d73e9ce165c04cc550144a4"
+  integrity sha512-RRSjdwz63kS4u7edIwJUn8NqKLLQ6LyqF/X4+4jp38MBT3Vwetewi2N4dgJEshLbDwNgOJXNYoOwzVZUSSLhkQ==
+
 "@types/prop-types@*":
   version "15.5.8"
   resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.5.8.tgz#8ae4e0ea205fe95c3901a5a1df7f66495e3a56ce"
@@ -4702,7 +4694,7 @@ child-process-promise@^2.2.1:
     node-version "^1.0.0"
     promise-polyfill "^6.0.1"
 
-chokidar@^2.0.0, chokidar@^2.0.2, chokidar@^2.0.4, chokidar@^2.1.0:
+chokidar@^2.0.0, chokidar@^2.0.2, chokidar@^2.0.4:
   version "2.1.1"
   resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.1.tgz#adc39ad55a2adf26548bd2afa048f611091f9184"
   integrity sha512-gfw3p2oQV2wEt+8VuMlNsPjCxDxvvgnm/kz+uATu805mWVF8IJN7uz9DN7iBz+RMJISmiVbCOBFs9qBGMjtPfQ==
@@ -5216,6 +5208,21 @@ concat-stream@1.6.2, concat-stream@^1.4.6, concat-stream@^1.5.0, concat-stream@^
     readable-stream "^2.2.2"
     typedarray "^0.0.6"
 
+concurrently@^4.1.0:
+  version "4.1.0"
+  resolved "https://registry.yarnpkg.com/concurrently/-/concurrently-4.1.0.tgz#17fdf067da71210685d9ea554423ef239da30d33"
+  integrity sha512-pwzXCE7qtOB346LyO9eFWpkFJVO3JQZ/qU/feGeaAHiX1M3Rw3zgXKc5cZ8vSH5DGygkjzLFDzA/pwoQDkRNGg==
+  dependencies:
+    chalk "^2.4.1"
+    date-fns "^1.23.0"
+    lodash "^4.17.10"
+    read-pkg "^4.0.1"
+    rxjs "^6.3.3"
+    spawn-command "^0.0.2-1"
+    supports-color "^4.5.0"
+    tree-kill "^1.1.0"
+    yargs "^12.0.1"
+
 config-chain@~1.1.11:
   version "1.1.12"
   resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.12.tgz#0fde8d091200eb5e808caf25fe618c02f48e4efa"
@@ -6076,7 +6083,7 @@ data-urls@^1.0.0:
     whatwg-mimetype "^2.2.0"
     whatwg-url "^7.0.0"
 
-date-fns@^1.27.2:
+date-fns@^1.23.0, date-fns@^1.27.2:
   version "1.30.1"
   resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.30.1.tgz#2e71bf0b119153dbb4cc4e88d9ea5acfb50dc05c"
   integrity sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==
@@ -6127,7 +6134,7 @@ debug@^4.0.1, debug@^4.1.0:
   dependencies:
     ms "^2.1.1"
 
-debuglog@*, debuglog@^1.0.1:
+debuglog@^1.0.1:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492"
   integrity sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI=
@@ -9054,7 +9061,7 @@ import-local@^2.0.0:
     pkg-dir "^3.0.0"
     resolve-cwd "^2.0.0"
 
-imurmurhash@*, imurmurhash@^0.1.4:
+imurmurhash@^0.1.4:
   version "0.1.4"
   resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
   integrity sha1-khi5srkoojixPcT7a21XbyMUU+o=
@@ -10764,11 +10771,6 @@ lockfile@^1.0.4:
   dependencies:
     signal-exit "^3.0.2"
 
-lodash._baseindexof@*:
-  version "3.1.0"
-  resolved "https://registry.yarnpkg.com/lodash._baseindexof/-/lodash._baseindexof-3.1.0.tgz#fe52b53a1c6761e42618d654e4a25789ed61822c"
-  integrity sha1-/lK1OhxnYeQmGNZU5KJXie1hgiw=
-
 lodash._baseuniq@~4.6.0:
   version "4.6.0"
   resolved "https://registry.yarnpkg.com/lodash._baseuniq/-/lodash._baseuniq-4.6.0.tgz#0ebb44e456814af7905c6212fa2c9b2d51b841e8"
@@ -10777,29 +10779,12 @@ lodash._baseuniq@~4.6.0:
     lodash._createset "~4.0.0"
     lodash._root "~3.0.0"
 
-lodash._bindcallback@*:
-  version "3.0.1"
-  resolved "https://registry.yarnpkg.com/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz#e531c27644cf8b57a99e17ed95b35c748789392e"
-  integrity sha1-5THCdkTPi1epnhftlbNcdIeJOS4=
-
-lodash._cacheindexof@*:
-  version "3.0.2"
-  resolved "https://registry.yarnpkg.com/lodash._cacheindexof/-/lodash._cacheindexof-3.0.2.tgz#3dc69ac82498d2ee5e3ce56091bafd2adc7bde92"
-  integrity sha1-PcaayCSY0u5ePOVgkbr9Ktx73pI=
-
-lodash._createcache@*:
-  version "3.1.2"
-  resolved "https://registry.yarnpkg.com/lodash._createcache/-/lodash._createcache-3.1.2.tgz#56d6a064017625e79ebca6b8018e17440bdcf093"
-  integrity sha1-VtagZAF2JeeevKa4AY4XRAvc8JM=
-  dependencies:
-    lodash._getnative "^3.0.0"
-
 lodash._createset@~4.0.0:
   version "4.0.3"
   resolved "https://registry.yarnpkg.com/lodash._createset/-/lodash._createset-4.0.3.tgz#0f4659fbb09d75194fa9e2b88a6644d363c9fe26"
   integrity sha1-D0ZZ+7CddRlPqeK4imZE02PJ/iY=
 
-lodash._getnative@*, lodash._getnative@^3.0.0:
+lodash._getnative@^3.0.0:
   version "3.9.1"
   resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5"
   integrity sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=
@@ -10893,11 +10878,6 @@ lodash.mergewith@^4.6.0:
   resolved "https://registry.yarnpkg.com/lodash.mergewith/-/lodash.mergewith-4.6.1.tgz#639057e726c3afbdb3e7d42741caa8d6e4335927"
   integrity sha512-eWw5r+PYICtEBgrBE5hhlT6aAa75f411bgDz/ZL2KZqYV03USvucsxcHUIlGTDTECs1eunpI7HOV7U+WLDvNdQ==
 
-lodash.restparam@*:
-  version "3.6.1"
-  resolved "https://registry.yarnpkg.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805"
-  integrity sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=
-
 lodash.some@^4.6.0:
   version "4.6.0"
   resolved "https://registry.yarnpkg.com/lodash.some/-/lodash.some-4.6.0.tgz#1bb9f314ef6b8baded13b549169b2a945eb68e4d"
@@ -10948,11 +10928,6 @@ lodash@~4.3.0:
   resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.3.0.tgz#efd9c4a6ec53f3b05412429915c3e4824e4d25a4"
   integrity sha1-79nEpuxT87BUEkKZFcPkgk5NJaQ=
 
-log-prefix@0.1.1:
-  version "0.1.1"
-  resolved "https://registry.yarnpkg.com/log-prefix/-/log-prefix-0.1.1.tgz#3ec492138c8044c9f9732298492dca87850cac90"
-  integrity sha512-aP1Lst8OCdZKATqzXDN0JBissNVZuiKLyo6hOXDBxaQ1jHDsaxh2J1i5Pp0zMy6ayTKDWfUlLMXyLaQe1PJ48g==
-
 log-symbols@^1.0.2:
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-1.0.2.tgz#376ff7b58ea3086a0f09facc74617eca501e1a18"
@@ -10967,13 +10942,6 @@ log-symbols@^2.0.0, log-symbols@^2.1.0, log-symbols@^2.2.0:
   dependencies:
     chalk "^2.0.1"
 
-log-timestamp@^0.2.1:
-  version "0.2.1"
-  resolved "https://registry.yarnpkg.com/log-timestamp/-/log-timestamp-0.2.1.tgz#02d4fd07550d6e3226d2741d89e7c693410276d6"
-  integrity sha512-a+hFCox7Up3gBrfREwXGjUEozdqjJrqpy82a41BUSEKlmvEZbsjR9vaYh/2PNFwydxX1r3zgfS/mAdNmRY/lKQ==
-  dependencies:
-    log-prefix "0.1.1"
-
 log-update@^2.3.0:
   version "2.3.0"
   resolved "https://registry.yarnpkg.com/log-update/-/log-update-2.3.0.tgz#88328fd7d1ce7938b29283746f0b1bc126b24708"
@@ -14504,7 +14472,7 @@ readable-stream@~1.1.10:
     isarray "0.0.1"
     string_decoder "~0.10.x"
 
-readdir-scoped-modules@*, readdir-scoped-modules@^1.0.0:
+readdir-scoped-modules@^1.0.0:
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/readdir-scoped-modules/-/readdir-scoped-modules-1.0.2.tgz#9fafa37d286be5d92cbaebdee030dc9b5f406747"
   integrity sha1-n6+jfShr5dksuuve4DDcm19AZ0c=
@@ -15902,6 +15870,11 @@ space-separated-tokens@^1.0.0:
   dependencies:
     trim "0.0.1"
 
+spawn-command@^0.0.2-1:
+  version "0.0.2-1"
+  resolved "https://registry.yarnpkg.com/spawn-command/-/spawn-command-0.0.2-1.tgz#62f5e9466981c1b796dc5929937e11c9c6921bd0"
+  integrity sha1-YvXpRmmBwbeW3Fkpk34RycaSG9A=
+
 spawn-promise@^0.1.8:
   version "0.1.8"
   resolved "https://registry.yarnpkg.com/spawn-promise/-/spawn-promise-0.1.8.tgz#a5bea98814c48f52cbe02720e7fe2d6fc3b5119a"
@@ -16346,6 +16319,13 @@ supports-color@^3.1.2, supports-color@^3.2.3:
   dependencies:
     has-flag "^1.0.0"
 
+supports-color@^4.5.0:
+  version "4.5.0"
+  resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.5.0.tgz#be7a0de484dec5c5cddf8b3d59125044912f635b"
+  integrity sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=
+  dependencies:
+    has-flag "^2.0.0"
+
 supports-color@^5.1.0, supports-color@^5.3.0, supports-color@^5.4.0:
   version "5.5.0"
   resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
@@ -16776,6 +16756,11 @@ traverse@^0.6.6:
   resolved "https://registry.yarnpkg.com/traverse/-/traverse-0.6.6.tgz#cbdf560fd7b9af632502fed40f918c157ea97137"
   integrity sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc=
 
+tree-kill@^1.1.0:
+  version "1.2.1"
+  resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.1.tgz#5398f374e2f292b9dcc7b2e71e30a5c3bb6c743a"
+  integrity sha512-4hjqbObwlh2dLyW4tcz0Ymw0ggoaVDMveUB9w8kFSQScdRLo0gxO9J7WFcUBo+W3C1TLdFIEwNOWebgZZ0RH9Q==
+
 trim-newlines@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613"
@@ -18057,7 +18042,7 @@ yargs@^11.0.0, yargs@^11.1.0:
     y18n "^3.2.1"
     yargs-parser "^9.0.2"
 
-yargs@^12.0.5:
+yargs@^12.0.1, yargs@^12.0.5:
   version "12.0.5"
   resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13"
   integrity sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==