-
+ |
{x.keys}
|
diff --git a/webapp/javascript/components/Sidebar.jsx b/webapp/javascript/components/Sidebar.jsx
index ecda24c9a3..5b34b70608 100644
--- a/webapp/javascript/components/Sidebar.jsx
+++ b/webapp/javascript/components/Sidebar.jsx
@@ -1,33 +1,33 @@
-import React, { useState, useEffect } from "react";
-import { connect } from "react-redux";
-import "react-dom";
-
-import { withShortcut } from "react-keybind";
-import Modal from "react-modal";
-import clsx from "clsx";
-
-import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
-import { faFileAlt } from "@fortawesome/free-solid-svg-icons/faFileAlt";
-import { faKeyboard } from "@fortawesome/free-solid-svg-icons/faKeyboard";
-import { faColumns } from "@fortawesome/free-solid-svg-icons/faColumns";
-import { faBell } from "@fortawesome/free-solid-svg-icons/faBell";
-import { faSignOutAlt } from "@fortawesome/free-solid-svg-icons/faSignOutAlt";
-import { faChartBar } from "@fortawesome/free-solid-svg-icons/faChartBar";
-import { faWindowMaximize } from "@fortawesome/free-regular-svg-icons";
-import { faGithub } from "@fortawesome/free-brands-svg-icons/faGithub";
-import ShortcutsModal from "./ShortcutsModal";
-import SlackIcon from "./SlackIcon";
-
-import { fetchNames } from "../redux/actions";
-import history from "../util/history";
+import React, { useState, useEffect } from 'react';
+import { connect } from 'react-redux';
+import 'react-dom';
+
+import { withShortcut } from 'react-keybind';
+import Modal from 'react-modal';
+import clsx from 'clsx';
+
+import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
+import { faFileAlt } from '@fortawesome/free-solid-svg-icons/faFileAlt';
+import { faKeyboard } from '@fortawesome/free-solid-svg-icons/faKeyboard';
+import { faColumns } from '@fortawesome/free-solid-svg-icons/faColumns';
+import { faBell } from '@fortawesome/free-solid-svg-icons/faBell';
+import { faSignOutAlt } from '@fortawesome/free-solid-svg-icons/faSignOutAlt';
+import { faChartBar } from '@fortawesome/free-solid-svg-icons/faChartBar';
+import { faWindowMaximize } from '@fortawesome/free-regular-svg-icons';
+import { faGithub } from '@fortawesome/free-brands-svg-icons/faGithub';
+import ShortcutsModal from './ShortcutsModal';
+import SlackIcon from './SlackIcon';
+
+import { fetchNames } from '../redux/actions';
+import history from '../util/history';
const modalStyle = {
overlay: {
- backgroundColor: "rgba(0,0,0,0.75)",
+ backgroundColor: 'rgba(0,0,0,0.75)',
},
content: {
- background: "#222",
- border: "1px solid #111",
+ background: '#222',
+ border: '1px solid #111',
},
};
@@ -44,10 +44,10 @@ function SidebarItem(props) {
}
function signOut() {
- const form = document.createElement("form");
+ const form = document.createElement('form');
- form.method = "POST";
- form.action = "/logout";
+ form.method = 'POST';
+ form.action = '/logout';
document.body.appendChild(form);
@@ -56,7 +56,7 @@ function signOut() {
const initialState = {
shortcutsModalOpen: false,
- currentRoute: "/",
+ currentRoute: '/',
};
function Sidebar(props) {
@@ -84,9 +84,9 @@ function Sidebar(props) {
useEffect(() => {
shortcut.registerShortcut(
showShortcutsModal,
- ["shift+?"],
- "Shortcuts",
- "Show Keyboard Shortcuts Modal"
+ ['shift+?'],
+ 'Shortcuts',
+ 'Show Keyboard Shortcuts Modal'
);
// console.log('history: ', history.location.pathname);
@@ -95,13 +95,13 @@ function Sidebar(props) {
return (
- updateRoute("/")} />
+ updateRoute('/')} />
@@ -109,11 +109,11 @@ function Sidebar(props) {
@@ -121,11 +121,11 @@ function Sidebar(props) {
@@ -176,7 +176,7 @@ function Sidebar(props) {
diff --git a/webapp/javascript/components/SlackIcon.jsx b/webapp/javascript/components/SlackIcon.jsx
index 4731c663f2..d4b5ca7079 100644
--- a/webapp/javascript/components/SlackIcon.jsx
+++ b/webapp/javascript/components/SlackIcon.jsx
@@ -1,4 +1,4 @@
-import React from "react";
+import React from 'react';
export default function Slackicon() {
return (
diff --git a/webapp/javascript/components/TagsBar.jsx b/webapp/javascript/components/TagsBar.jsx
index dc093e6ffa..e5eb018093 100644
--- a/webapp/javascript/components/TagsBar.jsx
+++ b/webapp/javascript/components/TagsBar.jsx
@@ -1,8 +1,8 @@
-import React, { useState, useEffect } from "react";
-import { bindActionCreators } from "redux";
-import { connect } from "react-redux";
-import "react-dom";
-import { Menu, SubMenu, MenuItem, MenuButton } from "@szhsin/react-menu";
+import React, { useState, useEffect } from 'react';
+import { bindActionCreators } from 'redux';
+import { connect } from 'react-redux';
+import 'react-dom';
+import { Menu, SubMenu, MenuItem, MenuButton } from '@szhsin/react-menu';
import {
fetchTags,
@@ -10,8 +10,8 @@ import {
setQuery,
abortFetchTags,
abortFetchTagValues,
-} from "../redux/actions";
-import "../util/prism";
+} from '../redux/actions';
+import '../util/prism';
function TagsBar({ query, actions, tags, tagValuesLoading }) {
const [queryVal, setQuery] = useState(query);
@@ -33,14 +33,14 @@ function TagsBar({ query, actions, tags, tagValuesLoading }) {
const inputOnChange = (v) => {
setQuery(v);
window.Prism.highlightElement(
- document.getElementById("highlighting-content")
+ document.getElementById('highlighting-content')
);
};
useEffect(() => {
if (window.Prism) {
window.Prism.highlightElement(
- document.getElementById("highlighting-content")
+ document.getElementById('highlighting-content')
);
}
}, [queryVal]);
@@ -60,12 +60,12 @@ function TagsBar({ query, actions, tags, tagValuesLoading }) {
const case1Regexp = new RegExp(`${tagKey}=.+?(\\}|,)`);
if (queryVal.match(case1Regexp)) {
newQuery = queryVal.replace(case1Regexp, `${tagKey}="${tagValue}"$1`);
- } else if (queryVal.indexOf("{}") !== -1) {
- newQuery = queryVal.replace("}", `${tagKey}="${tagValue}"}`);
- } else if (queryVal.indexOf("}") !== -1) {
- newQuery = queryVal.replace("}", `, ${tagKey}="${tagValue}"}`);
+ } else if (queryVal.indexOf('{}') !== -1) {
+ newQuery = queryVal.replace('}', `${tagKey}="${tagValue}"}`);
+ } else if (queryVal.indexOf('}') !== -1) {
+ newQuery = queryVal.replace('}', `, ${tagKey}="${tagValue}"}`);
} else {
- console.warn("TODO: handle this case");
+ console.warn('TODO: handle this case');
}
actions.setQuery(newQuery);
};
@@ -109,7 +109,7 @@ function TagsBar({ query, actions, tags, tagValuesLoading }) {
value={tagValue}
onClick={(e) => onTagsValueChange(tag, e.value)}
className={
- queryVal.includes(`${tag}="${tagValue}"`) ? "active" : ""
+ queryVal.includes(`${tag}="${tagValue}"`) ? 'active' : ''
}
>
{tagValue}
diff --git a/webapp/javascript/components/TimelineChart.jsx b/webapp/javascript/components/TimelineChart.jsx
index 7f6f37bc0b..b8871ae99f 100644
--- a/webapp/javascript/components/TimelineChart.jsx
+++ b/webapp/javascript/components/TimelineChart.jsx
@@ -1,35 +1,35 @@
-import { connect } from "react-redux";
-import "react-dom";
-import React from "react";
+import { connect } from 'react-redux';
+import 'react-dom';
+import React from 'react';
-import ReactFlot from "react-flot";
-import "react-flot/flot/jquery.flot.time.min";
-import "react-flot/flot/jquery.flot.selection.min";
-import "react-flot/flot/jquery.flot.crosshair.min";
-import { bindActionCreators } from "redux";
+import ReactFlot from 'react-flot';
+import 'react-flot/flot/jquery.flot.time.min';
+import 'react-flot/flot/jquery.flot.selection.min';
+import 'react-flot/flot/jquery.flot.crosshair.min';
+import { bindActionCreators } from 'redux';
import {
setDateRange,
setLeftDateRange,
setRightDateRange,
-} from "../redux/actions";
-import { formatAsOBject } from "../util/formatDate";
+} from '../redux/actions';
+import { formatAsOBject } from '../util/formatDate';
class TimelineChart extends ReactFlot {
componentDidMount() {
this.draw();
- $(`#${this.props.id}`).bind("plotselected", (event, ranges) => {
- if (this.props.viewSide === "both" || this.props.viewSide === "none") {
+ $(`#${this.props.id}`).bind('plotselected', (event, ranges) => {
+ if (this.props.viewSide === 'both' || this.props.viewSide === 'none') {
this.props.actions.setDateRange(
Math.round(ranges.xaxis.from / 1000),
Math.round(ranges.xaxis.to / 1000)
);
- } else if (this.props.viewSide === "left") {
+ } else if (this.props.viewSide === 'left') {
this.props.actions.setLeftDateRange(
Math.round(ranges.xaxis.from / 1000),
Math.round(ranges.xaxis.to / 1000)
);
- } else if (this.props.viewSide === "right") {
+ } else if (this.props.viewSide === 'right') {
this.props.actions.setRightDateRange(
Math.round(ranges.xaxis.from / 1000),
Math.round(ranges.xaxis.to / 1000)
@@ -37,7 +37,7 @@ class TimelineChart extends ReactFlot {
}
});
- $(`#${this.props.id}`).bind("plothover", (evt, position) => {
+ $(`#${this.props.id}`).bind('plothover', (evt, position) => {
if (position) {
this.lockCrosshair({
x: item.datapoint[0],
diff --git a/webapp/javascript/components/TimelineChartWrapper.jsx b/webapp/javascript/components/TimelineChartWrapper.jsx
index eca12c8b1c..bf2fd6397c 100644
--- a/webapp/javascript/components/TimelineChartWrapper.jsx
+++ b/webapp/javascript/components/TimelineChartWrapper.jsx
@@ -1,82 +1,84 @@
/* eslint-disable */
-import React from "react";
-import { connect } from "react-redux";
-import { bindActionCreators } from "redux";
-import TimelineChart from "./TimelineChart";
-import { formatAsOBject } from "../util/formatDate";
+import React from 'react';
+import { connect } from 'react-redux';
+import { bindActionCreators } from 'redux';
+import TimelineChart from './TimelineChart';
+import { formatAsOBject } from '../util/formatDate';
class TimelineChartWrapper extends React.Component {
constructor() {
super();
this.state = {
flotOptions: {
- margin: {
- top: 0,
- left: 0,
- bottom: 0,
- right: 0,
- },
- selection: {
- mode: "x",
- },
- crosshair: {
- mode: "x",
- color: "#C3170D",
- lineWidth: "1",
- },
- grid: {
- borderWidth: 1,
margin: {
- left: 16,
- right: 16,
+ top: 0,
+ left: 0,
+ bottom: 0,
+ right: 0,
+ },
+ selection: {
+ mode: 'x',
+ },
+ crosshair: {
+ mode: 'x',
+ color: '#C3170D',
+ lineWidth: '1',
+ },
+ grid: {
+ borderWidth: 1,
+ margin: {
+ left: 16,
+ right: 16,
+ },
+ },
+ yaxis: {
+ show: false,
+ min: 0,
+ },
+ points: {
+ show: false,
+ radius: 0.1,
+ },
+ lines: {
+ show: false,
+ steps: true,
+ lineWidth: 1.0,
+ },
+ bars: {
+ show: true,
+ fill: true,
+ },
+ xaxis: {
+ mode: 'time',
+ timezone: 'browser',
+ reserveSpace: false,
},
},
- yaxis: {
- show: false,
- min: 0,
- },
- points: {
- show: false,
- radius: 0.1,
- },
- lines: {
- show: false,
- steps: true,
- lineWidth: 1.0,
- },
- bars: {
- show: true,
- fill: true,
- },
- xaxis: {
- mode: "time",
- timezone: "browser",
- reserveSpace: false,
- }
- }}
+ };
}
componentDidMount() {
let newFlotOptions = this.state.flotOptions;
newFlotOptions.grid.markings = this.plotMarkings();
- this.setState({flotOptions: newFlotOptions})
+ this.setState({ flotOptions: newFlotOptions });
}
componentDidUpdate(prevProps) {
if (this.props.viewSide == 'none') return;
- if (prevProps.leftFrom !== this.props.leftFrom ||
+ if (
+ prevProps.leftFrom !== this.props.leftFrom ||
prevProps.leftUntil !== this.props.leftUntil ||
prevProps.rightFrom !== this.props.rightFrom ||
- prevProps.rightUntil !== this.props.rightUntil) {
- let newFlotOptions = this.state.flotOptions;
- newFlotOptions.grid.markings = this.plotMarkings();
+ prevProps.rightUntil !== this.props.rightUntil
+ ) {
+ let newFlotOptions = this.state.flotOptions;
+ newFlotOptions.grid.markings = this.plotMarkings();
- this.setState({flotOptions: newFlotOptions})
+ this.setState({ flotOptions: newFlotOptions });
}
-
}
plotMarkings = () => {
@@ -87,7 +89,9 @@ class TimelineChartWrapper extends React.Component {
let leftFromInt = new Date(formatAsOBject(this.props.leftFrom)).getTime();
let leftUntilInt = new Date(formatAsOBject(this.props.leftUntil)).getTime();
let rightFromInt = new Date(formatAsOBject(this.props.rightFrom)).getTime();
- let rightUntilInt = new Date(formatAsOBject(this.props.rightUntil)).getTime();
+ let rightUntilInt = new Date(
+ formatAsOBject(this.props.rightUntil)
+ ).getTime();
let nonActiveBorder = 0.2;
let nonActiveBackground = 0.09;
@@ -96,50 +100,69 @@ class TimelineChartWrapper extends React.Component {
{
xaxis: {
from: leftFromInt,
- to: leftUntilInt
+ to: leftUntilInt,
},
- color: this.props.viewSide === "left" ? "rgba(200, 102, 204, 0.35)" : `rgba(255, 102, 204, ${nonActiveBackground})`,
+ color:
+ this.props.viewSide === 'left'
+ ? 'rgba(200, 102, 204, 0.35)'
+ : `rgba(255, 102, 204, ${nonActiveBackground})`,
},
{
- color: this.props.viewSide === "left" ? "rgba(200, 102, 204, 1)" : `rgba(255, 102, 204, ${nonActiveBorder})`,
+ color:
+ this.props.viewSide === 'left'
+ ? 'rgba(200, 102, 204, 1)'
+ : `rgba(255, 102, 204, ${nonActiveBorder})`,
lineWidth: 3,
- xaxis: { from: leftFromInt, to: leftFromInt }
+ xaxis: { from: leftFromInt, to: leftFromInt },
},
{
- color: this.props.viewSide === "left" ? "rgba(200, 102, 204, 1)" : `rgba(255, 102, 204, ${nonActiveBorder})`,
+ color:
+ this.props.viewSide === 'left'
+ ? 'rgba(200, 102, 204, 1)'
+ : `rgba(255, 102, 204, ${nonActiveBorder})`,
lineWidth: 3,
- xaxis: { from: leftUntilInt, to: leftUntilInt }
+ xaxis: { from: leftUntilInt, to: leftUntilInt },
},
- ]
+ ];
let rightMarkings = [
{
xaxis: {
from: rightFromInt,
- to: rightUntilInt
+ to: rightUntilInt,
},
- color: this.props.viewSide === "right" ? "rgba(19, 152, 246, 0.35)" : `rgba(19, 152, 246, ${nonActiveBackground})`,
+ color:
+ this.props.viewSide === 'right'
+ ? 'rgba(19, 152, 246, 0.35)'
+ : `rgba(19, 152, 246, ${nonActiveBackground})`,
},
{
- color: this.props.viewSide === "right" ? "rgba(19, 152, 246, 1)" : `rgba(19, 152, 246, ${nonActiveBorder})`,
+ color:
+ this.props.viewSide === 'right'
+ ? 'rgba(19, 152, 246, 1)'
+ : `rgba(19, 152, 246, ${nonActiveBorder})`,
lineWidth: 3,
- xaxis: { from: rightFromInt, to: rightFromInt }
+ xaxis: { from: rightFromInt, to: rightFromInt },
},
{
- color: this.props.viewSide === "right" ? "rgba(19, 152, 246, 1)" : `rgba(19, 152, 246, ${nonActiveBorder})`,
+ color:
+ this.props.viewSide === 'right'
+ ? 'rgba(19, 152, 246, 1)'
+ : `rgba(19, 152, 246, ${nonActiveBorder})`,
lineWidth: 3,
- xaxis: { from: rightUntilInt, to: rightUntilInt }
+ xaxis: { from: rightUntilInt, to: rightUntilInt },
},
- ]
+ ];
- return this.props.viewSide === "none" ? [] : leftMarkings.concat(rightMarkings);
+ return this.props.viewSide === 'none'
+ ? []
+ : leftMarkings.concat(rightMarkings);
};
-
render = () => {
const flotData = this.props.timeline
- ? [this.props.timeline.map((x) => [x[0], x[1] === 0 ? null : x[1] - 1])]
- : [];
+ ? [this.props.timeline.map((x) => [x[0], x[1] === 0 ? null : x[1] - 1])]
+ : [];
return (
- )
- }
+ );
+ };
}
const mapStateToProps = (state) => ({
@@ -159,10 +182,7 @@ const mapStateToProps = (state) => ({
});
const mapDispatchToProps = (dispatch) => ({
- actions: bindActionCreators(
- { },
- dispatch
- ),
+ actions: bindActionCreators({}, dispatch),
});
export default connect(
diff --git a/webapp/javascript/components/ZoomOutButton.jsx b/webapp/javascript/components/ZoomOutButton.jsx
index 193d442dce..f4df9645fe 100644
--- a/webapp/javascript/components/ZoomOutButton.jsx
+++ b/webapp/javascript/components/ZoomOutButton.jsx
@@ -1,9 +1,9 @@
-import React from "react";
-import { connect } from "react-redux";
+import React from 'react';
+import { connect } from 'react-redux';
-import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
-import { faSearchMinus } from "@fortawesome/free-solid-svg-icons/faSearchMinus";
-import { setDateRange } from "../redux/actions";
+import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
+import { faSearchMinus } from '@fortawesome/free-solid-svg-icons/faSearchMinus';
+import { setDateRange } from '../redux/actions';
function ZoomOutButton(props) {
const { from, until, setDateRange } = props;
diff --git a/webapp/javascript/index.jsx b/webapp/javascript/index.jsx
index 639fc21319..aa04dd858f 100644
--- a/webapp/javascript/index.jsx
+++ b/webapp/javascript/index.jsx
@@ -1,25 +1,25 @@
-import ReactDOM from "react-dom";
-import React from "react";
+import ReactDOM from 'react-dom';
+import React from 'react';
-import { Provider } from "react-redux";
-import { ShortcutProvider } from "react-keybind";
-import { Router, Switch, Route } from "react-router-dom";
-import FPSStats from "react-fps-stats";
-import store from "./redux/store";
+import { Provider } from 'react-redux';
+import { ShortcutProvider } from 'react-keybind';
+import { Router, Switch, Route } from 'react-router-dom';
+import FPSStats from 'react-fps-stats';
+import store from './redux/store';
-import PyroscopeApp from "./components/PyroscopeApp";
-import ComparisonApp from "./components/ComparisonApp";
-import ComparisonDiffApp from "./components/ComparisonDiffApp";
-import Sidebar from "./components/Sidebar";
-import Notifications from "./components/Notifications";
+import PyroscopeApp from './components/PyroscopeApp';
+import ComparisonApp from './components/ComparisonApp';
+import ComparisonDiffApp from './components/ComparisonDiffApp';
+import Sidebar from './components/Sidebar';
+import Notifications from './components/Notifications';
-import history from "./util/history";
+import history from './util/history';
let showFps = false;
try {
// run this to enable FPS meter:
// window.localStorage.setItem("showFps", true);
- showFps = window.localStorage.getItem("showFps");
+ showFps = window.localStorage.getItem('showFps');
} catch (e) {
console.error(e);
}
@@ -43,7 +43,7 @@ ReactDOM.render(
- {showFps ? : ""}
+ {showFps ? : ''}
,
- document.getElementById("root")
+ document.getElementById('root')
);
diff --git a/webapp/javascript/redux/actionTypes.js b/webapp/javascript/redux/actionTypes.js
index fd24c817a7..07c66c5219 100644
--- a/webapp/javascript/redux/actionTypes.js
+++ b/webapp/javascript/redux/actionTypes.js
@@ -1,20 +1,20 @@
-export const SET_DATE_RANGE = "SET_DATE_RANGE";
-export const SET_FROM = "SET_FROM";
-export const SET_UNTIL = "SET_UNTIL";
-export const SET_MAX_NODES = "SET_MAX_NODES";
-export const SET_QUERY = "SET_QUERY";
-export const REFRESH = "REFRESH";
-export const REQUEST_TIMELINE = "REQUEST_TIMELINE";
-export const RECEIVE_TIMELINE = "RECEIVE_TIMELINE";
-export const REQUEST_NAMES = "REQUEST_NAMES";
-export const RECEIVE_NAMES = "RECEIVE_NAMES";
-export const SET_LEFT_FROM = "SET_LEFT_FROM";
-export const SET_LEFT_UNTIL = "SET_LEFT_UNTIL";
-export const SET_RIGHT_FROM = "SET_RIGHT_FROM";
-export const SET_RIGHT_UNTIL = "SET_RIGHT_UNTIL";
-export const SET_LEFT_DATE_RANGE = "SET_LEFT_DATE_RANGE";
-export const SET_RIGHT_DATE_RANGE = "SET_RIGHT_DATE_RANGE";
-export const REQUEST_TAGS = "REQUEST_TAGS";
-export const RECEIVE_TAGS = "RECEIVE_TAGS";
-export const REQUEST_TAG_VALUES = "REQUEST_TAG_VALUES";
-export const RECEIVE_TAG_VALUES = "RECEIVE_TAG_VALUES";
+export const SET_DATE_RANGE = 'SET_DATE_RANGE';
+export const SET_FROM = 'SET_FROM';
+export const SET_UNTIL = 'SET_UNTIL';
+export const SET_MAX_NODES = 'SET_MAX_NODES';
+export const SET_QUERY = 'SET_QUERY';
+export const REFRESH = 'REFRESH';
+export const REQUEST_TIMELINE = 'REQUEST_TIMELINE';
+export const RECEIVE_TIMELINE = 'RECEIVE_TIMELINE';
+export const REQUEST_NAMES = 'REQUEST_NAMES';
+export const RECEIVE_NAMES = 'RECEIVE_NAMES';
+export const SET_LEFT_FROM = 'SET_LEFT_FROM';
+export const SET_LEFT_UNTIL = 'SET_LEFT_UNTIL';
+export const SET_RIGHT_FROM = 'SET_RIGHT_FROM';
+export const SET_RIGHT_UNTIL = 'SET_RIGHT_UNTIL';
+export const SET_LEFT_DATE_RANGE = 'SET_LEFT_DATE_RANGE';
+export const SET_RIGHT_DATE_RANGE = 'SET_RIGHT_DATE_RANGE';
+export const REQUEST_TAGS = 'REQUEST_TAGS';
+export const RECEIVE_TAGS = 'RECEIVE_TAGS';
+export const REQUEST_TAG_VALUES = 'REQUEST_TAG_VALUES';
+export const RECEIVE_TAG_VALUES = 'RECEIVE_TAG_VALUES';
diff --git a/webapp/javascript/redux/actions.js b/webapp/javascript/redux/actions.js
index cca883a8a3..fd2c640626 100644
--- a/webapp/javascript/redux/actions.js
+++ b/webapp/javascript/redux/actions.js
@@ -19,8 +19,8 @@ import {
SET_LEFT_UNTIL,
SET_RIGHT_FROM,
SET_RIGHT_UNTIL,
-} from "./actionTypes";
-import { isAbortError } from "../util/abort";
+} from './actionTypes';
+import { isAbortError } from '../util/abort';
export const setDateRange = (from, until) => ({
type: SET_DATE_RANGE,
@@ -219,7 +219,7 @@ export function fetchNames() {
currentNamesController = new AbortController();
dispatch(requestNames());
- return fetch("/label-values?label=__name__", {
+ return fetch('/label-values?label=__name__', {
signal: currentNamesController.signal,
})
.then((response) => response.json())
diff --git a/webapp/javascript/redux/enhancers/updateUrl.js b/webapp/javascript/redux/enhancers/updateUrl.js
index 49a88a56d6..344dc1e453 100644
--- a/webapp/javascript/redux/enhancers/updateUrl.js
+++ b/webapp/javascript/redux/enhancers/updateUrl.js
@@ -1,5 +1,5 @@
-import createSlicer from "redux-localstorage/lib/createSlicer";
-import mergeState from "redux-localstorage/lib/util/mergeState";
+import createSlicer from 'redux-localstorage/lib/createSlicer';
+import mergeState from 'redux-localstorage/lib/util/mergeState';
export default function updateUrl(paths, config) {
const cfg = {
@@ -13,7 +13,7 @@ export default function updateUrl(paths, config) {
const { merge } = cfg;
return (next) => (reducer, initialState, enhancer) => {
- if (typeof initialState === "function" && typeof enhancer === "undefined") {
+ if (typeof initialState === 'function' && typeof enhancer === 'undefined') {
enhancer = initialState;
initialState = undefined;
}
@@ -28,15 +28,15 @@ export default function updateUrl(paths, config) {
paths.forEach((x) => {
const val = urlParams.get(x);
if (val) {
- persistedState[x] = val.startsWith("json:")
- ? JSON.parse(val.replace("json:", ""))
+ persistedState[x] = val.startsWith('json:')
+ ? JSON.parse(val.replace('json:', ''))
: val;
}
});
finalInitialState = merge(initialState, persistedState);
} catch (e) {
- console.warn("Failed to retrieve initialize state from URL:", e);
+ console.warn('Failed to retrieve initialize state from URL:', e);
}
const store = next(reducer, finalInitialState, enhancer);
@@ -50,15 +50,15 @@ export default function updateUrl(paths, config) {
paths.forEach((x) => {
if (state[x]) {
const val =
- typeof state[x] === "string"
+ typeof state[x] === 'string'
? state[x]
: `json:${JSON.stringify(state[x])}`;
urlParams.set(x, val);
}
});
- history.pushState({}, "title", `/?${urlParams.toString()}`);
+ history.pushState({}, 'title', `/?${urlParams.toString()}`);
} catch (e) {
- console.warn("Unable to persist state to URL:", e);
+ console.warn('Unable to persist state to URL:', e);
}
});
diff --git a/webapp/javascript/redux/reducers/filters.js b/webapp/javascript/redux/reducers/filters.js
index a32063c749..b18e2c040d 100644
--- a/webapp/javascript/redux/reducers/filters.js
+++ b/webapp/javascript/redux/reducers/filters.js
@@ -1,4 +1,4 @@
-import uniqBy from "lodash/fp/uniqBy";
+import uniqBy from 'lodash/fp/uniqBy';
import {
SET_DATE_RANGE,
SET_FROM,
@@ -20,20 +20,20 @@ import {
SET_LEFT_UNTIL,
SET_RIGHT_UNTIL,
SET_QUERY,
-} from "../actionTypes";
+} from '../actionTypes';
const defaultName = window.initialState.appNames.find(
- (x) => x !== "pyroscope.server.cpu"
+ (x) => x !== 'pyroscope.server.cpu'
);
const initialState = {
- from: "now-1h",
- leftFrom: "now-1h",
- rightFrom: "now-30m",
- until: "now",
- leftUntil: "now-30m",
- rightUntil: "now",
- query: `${defaultName || "pyroscope.server.cpu"}{}`,
+ from: 'now-1h',
+ leftFrom: 'now-1h',
+ rightFrom: 'now-30m',
+ until: 'now',
+ leftUntil: 'now-30m',
+ rightUntil: 'now',
+ query: `${defaultName || 'pyroscope.server.cpu'}{}`,
names: window.initialState.appNames,
timeline: null,
isJSONLoading: false,
@@ -137,7 +137,7 @@ export default function (state = initialState, action) {
...state,
areTagsLoading: false,
tags: action.payload.tags.reduce((acc, tag) => {
- if (tag !== "__name__") {
+ if (tag !== '__name__') {
acc[tag] = [];
}
return acc;
@@ -152,7 +152,7 @@ export default function (state = initialState, action) {
case RECEIVE_TAG_VALUES:
return {
...state,
- tagValuesLoading: "",
+ tagValuesLoading: '',
tags: {
...state.tags,
[action.payload.tag]: action.payload.values,
diff --git a/webapp/javascript/redux/reducers/index.js b/webapp/javascript/redux/reducers/index.js
index 4996d2e552..ac28bd8028 100644
--- a/webapp/javascript/redux/reducers/index.js
+++ b/webapp/javascript/redux/reducers/index.js
@@ -1,4 +1,4 @@
-import filters from "./filters";
+import filters from './filters';
export default filters;
// export default combineReducers({ });
diff --git a/webapp/javascript/redux/store.js b/webapp/javascript/redux/store.js
index d165ff253a..154fff426b 100644
--- a/webapp/javascript/redux/store.js
+++ b/webapp/javascript/redux/store.js
@@ -1,12 +1,12 @@
-import thunkMiddleware from "redux-thunk";
+import thunkMiddleware from 'redux-thunk';
-import { createStore, applyMiddleware } from "redux";
-import { composeWithDevTools } from "redux-devtools-extension";
+import { createStore, applyMiddleware } from 'redux';
+import { composeWithDevTools } from 'redux-devtools-extension';
-import ReduxQuerySync from "redux-query-sync";
+import ReduxQuerySync from 'redux-query-sync';
-import rootReducer from "./reducers";
-import history from "../util/history";
+import rootReducer from './reducers';
+import history from '../util/history';
import {
setLeftFrom,
@@ -17,9 +17,9 @@ import {
setUntil,
setMaxNodes,
setQuery,
-} from "./actions";
+} from './actions';
-import { parseLabels, encodeLabels } from "../util/key";
+import { parseLabels, encodeLabels } from '../util/key';
const enhancer = composeWithDevTools(
applyMiddleware(thunkMiddleware)
@@ -30,54 +30,54 @@ const enhancer = composeWithDevTools(
const store = createStore(rootReducer, enhancer);
const defaultName = window.initialState.appNames.find(
- (x) => x !== "pyroscope.server.cpu"
+ (x) => x !== 'pyroscope.server.cpu'
);
ReduxQuerySync({
store, // your Redux store
params: {
from: {
- defaultValue: "now-1h",
+ defaultValue: 'now-1h',
selector: (state) => state.from,
action: setFrom,
},
until: {
- defaultValue: "now",
+ defaultValue: 'now',
selector: (state) => state.until,
action: setUntil,
},
leftFrom: {
- defaultValue: "now-1h",
+ defaultValue: 'now-1h',
selector: (state) => state.leftFrom,
action: setLeftFrom,
},
leftUntil: {
- defaultValue: "now-30m",
+ defaultValue: 'now-30m',
selector: (state) => state.leftUntil,
action: setLeftUntil,
},
rightFrom: {
- defaultValue: "now-30m",
+ defaultValue: 'now-30m',
selector: (state) => state.rightFrom,
action: setRightFrom,
},
rightUntil: {
- defaultValue: "now",
+ defaultValue: 'now',
selector: (state) => state.rightUntil,
action: setRightUntil,
},
query: {
- defaultValue: `${defaultName || "pyroscope.server.cpu"}{}`,
+ defaultValue: `${defaultName || 'pyroscope.server.cpu'}{}`,
selector: (state) => state.query,
action: setQuery,
},
maxNodes: {
- defaultValue: "1024",
+ defaultValue: '1024',
selector: (state) => state.maxNodes,
action: setMaxNodes,
},
},
- initialTruth: "location",
+ initialTruth: 'location',
replaceState: false,
history,
});
diff --git a/webapp/javascript/util/abort.js b/webapp/javascript/util/abort.js
index 9272a71887..04564dbb84 100644
--- a/webapp/javascript/util/abort.js
+++ b/webapp/javascript/util/abort.js
@@ -4,6 +4,5 @@ export function isAbortError(err) {
}
// https://developer.mozilla.org/en-US/docs/Web/API/DOMException
- return err.name === 'AbortError'
- || err.code === 20;
+ return err.name === 'AbortError' || err.code === 20;
}
diff --git a/webapp/javascript/util/fitMode.js b/webapp/javascript/util/fitMode.js
index ce64687dfe..26967cd0ab 100644
--- a/webapp/javascript/util/fitMode.js
+++ b/webapp/javascript/util/fitMode.js
@@ -3,9 +3,9 @@
// Let's use an Enum in case we want to use new modes,
// for example a new heuristic based on the language
export const FitModes = {
- TAIL: "TAIL",
- HEAD: "HEAD",
-}
+ TAIL: 'TAIL',
+ HEAD: 'HEAD',
+};
const margin = 3;
@@ -18,19 +18,26 @@ const margin = 3;
* @param {string} fullText - The text that will be first tried.
* @param {string} shortText - The text that willbe used when fullText can't fit. It's normally a substring of the original text.
*/
-export function fitToCanvasRect({ mode, charSize, rectWidth, fullText, shortText }){
+export function fitToCanvasRect({
+ mode,
+ charSize,
+ rectWidth,
+ fullText,
+ shortText,
+}) {
switch (mode) {
case FitModes.TAIL:
// Case 1:
// content fits rectangle width
// | rectangle |
// | text |
- if (charSize * fullText.length <= rectWidth) { // assume it's a monospaced font
+ if (charSize * fullText.length <= rectWidth) {
+ // assume it's a monospaced font
return {
mode,
text: fullText,
marginLeft: margin,
- }
+ };
}
// assume it's a monospaced font
@@ -43,12 +50,13 @@ export function fitToCanvasRect({ mode, charSize, rectWidth, fullText, shortText
// | rectangle |
// | long_text_text |
// | shorttext |
- if (shortTextWidth <= rectWidth) { // assume it's a monospaced font
+ if (shortTextWidth <= rectWidth) {
+ // assume it's a monospaced font
return {
mode,
text: shortText,
marginLeft: margin,
- }
+ };
}
// Case 3:
@@ -60,8 +68,8 @@ export function fitToCanvasRect({ mode, charSize, rectWidth, fullText, shortText
return {
mode,
text: shortText,
- marginLeft: -((shortTextWidth - rectWidth) + margin),
- }
+ marginLeft: -(shortTextWidth - rectWidth + margin),
+ };
// Case 3:
// Normal
@@ -71,11 +79,10 @@ export function fitToCanvasRect({ mode, charSize, rectWidth, fullText, shortText
mode,
text: fullText,
marginLeft: margin,
- }
+ };
}
}
-
/**
* Returns an inline style in React format
* used to fit the content into a table cell
@@ -86,17 +93,17 @@ export function fitIntoTableCell(mode) {
switch (mode) {
case FitModes.TAIL:
return {
- // prints from right to left
- direction: "rtl",
- overflow: "hidden",
- textOverflow: "ellipsis",
+ // prints from right to left
+ direction: 'rtl',
+ overflow: 'hidden',
+ textOverflow: 'ellipsis',
};
case FitModes.HEAD:
default:
return {
- overflow: "hidden",
- textOverflow: "ellipsis",
+ overflow: 'hidden',
+ textOverflow: 'ellipsis',
};
}
}
diff --git a/webapp/javascript/util/flamebearer.js b/webapp/javascript/util/flamebearer.js
index 0759031d4e..d481721806 100644
--- a/webapp/javascript/util/flamebearer.js
+++ b/webapp/javascript/util/flamebearer.js
@@ -28,10 +28,9 @@ function deltaDiff(levels, start, step) {
}
export function deltaDiffWrapper(format, levels) {
- if (format === "double") {
+ if (format === 'double') {
deltaDiff(levels, 0, 7);
deltaDiff(levels, 3, 7);
-
} else {
deltaDiff(levels, 0, 4);
}
@@ -49,35 +48,35 @@ export function deltaDiffWrapper(format, levels) {
// j = 6 : position in the main index (jStep)
const formatSingle = {
- format: "single",
- jStep : 4,
- jName : 3,
- getBarOffset: (level, j) => level[j],
- getBarTotal: (level, j) => level[j + 1],
+ format: 'single',
+ jStep: 4,
+ jName: 3,
+ getBarOffset: (level, j) => level[j],
+ getBarTotal: (level, j) => level[j + 1],
getBarTotalDiff: (level, j) => 0,
- getBarSelf: (level, j) => level[j + 2],
- getBarSelfDiff: (level, j) => 0,
- getBarName: (level, j) => level[j + 3],
-}
+ getBarSelf: (level, j) => level[j + 2],
+ getBarSelfDiff: (level, j) => 0,
+ getBarName: (level, j) => level[j + 3],
+};
const formatDouble = {
- format: "double",
- jStep : 7,
- jName : 6,
- getBarOffset: (level, j) => (level[j] + level[j + 3]),
- getBarTotal: (level, j) => (level[j + 4] + level[j + 1]),
- getBarTotalLeft: (level, j) => level[j + 1],
- getBarTotalRght: (level, j) => level[j + 4],
- getBarTotalDiff: (level, j) => (level[j + 4] - level[j + 1]),
- getBarSelf: (level, j) => (level[j + 5] + level[j + 2]),
- getBarSelfLeft: (level, j) => level[j + 2],
- getBarSelfRght: (level, j) => level[j + 5],
- getBarSelfDiff: (level, j) => (level[j + 5] - level[j + 2]),
- getBarName: (level, j) => level[j + 6],
-}
+ format: 'double',
+ jStep: 7,
+ jName: 6,
+ getBarOffset: (level, j) => level[j] + level[j + 3],
+ getBarTotal: (level, j) => level[j + 4] + level[j + 1],
+ getBarTotalLeft: (level, j) => level[j + 1],
+ getBarTotalRght: (level, j) => level[j + 4],
+ getBarTotalDiff: (level, j) => level[j + 4] - level[j + 1],
+ getBarSelf: (level, j) => level[j + 5] + level[j + 2],
+ getBarSelfLeft: (level, j) => level[j + 2],
+ getBarSelfRght: (level, j) => level[j + 5],
+ getBarSelfDiff: (level, j) => level[j + 5] - level[j + 2],
+ getBarName: (level, j) => level[j + 6],
+};
export function parseFlamebearerFormat(format) {
- const isSingle = format !== "double";
+ const isSingle = format !== 'double';
if (isSingle) return formatSingle;
else return formatDouble;
}
diff --git a/webapp/javascript/util/format.js b/webapp/javascript/util/format.js
index 1030b83540..6a2490845c 100644
--- a/webapp/javascript/util/format.js
+++ b/webapp/javascript/util/format.js
@@ -2,17 +2,12 @@ export function numberWithCommas(x) {
return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',');
}
-const suffixes = [
- "K",
- "M",
- "G",
- "T",
-];
+const suffixes = ['K', 'M', 'G', 'T'];
export function shortNumber(x) {
let suffix = '';
- for(var i = 0; x > 1000 && i < suffixes.length; i++) {
+ for (var i = 0; x > 1000 && i < suffixes.length; i++) {
suffix = suffixes[i];
x /= 1000;
}
@@ -22,15 +17,15 @@ export function shortNumber(x) {
export function formatPercent(ratio) {
const percent = Math.round(10000 * ratio) / 100;
- return percent+'%';
+ return percent + '%';
}
const durations = [
- [60, "minute"],
- [60, "hour"],
- [24, "day"],
- [30, "month"],
- [12, "year"],
+ [60, 'minute'],
+ [60, 'hour'],
+ [24, 'day'],
+ [30, 'month'],
+ [12, 'year'],
];
// this is a class and not a function because we can save some time by
@@ -39,7 +34,7 @@ export class DurationFormatter {
constructor(maxDur) {
this.divider = 1;
this.suffix = 'second';
- for(var i = 0; i < durations.length; i++) {
+ for (var i = 0; i < durations.length; i++) {
if (maxDur >= durations[i][0]) {
this.divider *= durations[i][0];
maxDur /= durations[i][0];
@@ -63,20 +58,19 @@ export class DurationFormatter {
}
}
-
const bytes = [
- [1024, "KB"],
- [1024, "MB"],
- [1024, "GB"],
- [1024, "TB"],
- [1024, "PB"],
+ [1024, 'KB'],
+ [1024, 'MB'],
+ [1024, 'GB'],
+ [1024, 'TB'],
+ [1024, 'PB'],
];
export class BytesFormatter {
constructor(maxBytes) {
this.divider = 1;
this.suffix = 'bytes';
- for(var i = 0; i < bytes.length; i++) {
+ for (var i = 0; i < bytes.length; i++) {
if (maxBytes >= bytes[i][0]) {
this.divider *= bytes[i][0];
maxBytes /= bytes[i][0];
@@ -101,18 +95,18 @@ export class BytesFormatter {
}
const objects = [
- [1000, "K"],
- [1000, "M"],
- [1000, "G"],
- [1000, "T"],
- [1000, "P"],
+ [1000, 'K'],
+ [1000, 'M'],
+ [1000, 'G'],
+ [1000, 'T'],
+ [1000, 'P'],
];
export class ObjectsFormatter {
constructor(maxObjects) {
this.divider = 1;
this.suffix = '';
- for(var i = 0; i < objects.length; i++) {
+ for (var i = 0; i < objects.length; i++) {
if (maxObjects >= objects[i][0]) {
this.divider *= objects[i][0];
maxObjects /= objects[i][0];
@@ -136,7 +130,6 @@ export class ObjectsFormatter {
}
}
-
export function getPackageNameFromStackTrace(spyName, stackTrace) {
// TODO: actually make sure these make sense and add tests
const regexpLookup = {
@@ -160,13 +153,13 @@ export function getPackageNameFromStackTrace(spyName, stackTrace) {
return stackTrace;
}
-export function getFormatter(max, sampleRate, units){
+export function getFormatter(max, sampleRate, units) {
switch (units) {
- case "samples":
+ case 'samples':
return new DurationFormatter(max / sampleRate);
- case "objects":
+ case 'objects':
return new ObjectsFormatter(max);
- case "bytes":
+ case 'bytes':
return new BytesFormatter(max);
default:
return new DurationFormatter(max / sampleRate);
diff --git a/webapp/javascript/util/formatDate.js b/webapp/javascript/util/formatDate.js
index 1f5508e86a..2245e54c09 100644
--- a/webapp/javascript/util/formatDate.js
+++ b/webapp/javascript/util/formatDate.js
@@ -1,15 +1,15 @@
/* eslint-disable no-underscore-dangle */
// we import moment/src/moment instead of moment because we don't want to load locales
-import moment from "moment/src/moment";
+import moment from 'moment/src/moment';
const multiplierMapping = {
- s: "second",
- m: "minute",
- h: "hour",
- d: "day",
- w: "week",
- M: "month",
- y: "year",
+ s: 'second',
+ m: 'minute',
+ h: 'hour',
+ d: 'day',
+ w: 'week',
+ M: 'month',
+ y: 'year',
};
export function convertPresetsToDate(from) {
@@ -17,7 +17,7 @@ export function convertPresetsToDate(from) {
const { number, multiplier } = groups;
let _multiplier = multiplierMapping[multiplier];
if (number > 1) {
- _multiplier += "s";
+ _multiplier += 's';
}
const _from = moment().add(-number, _multiplier).toDate() / 1000;
@@ -25,17 +25,17 @@ export function convertPresetsToDate(from) {
}
export function readableRange(from, until) {
- const dateFormat = "YYYY-MM-DD hh:mm A";
- if (/^now-/.test(from) && until === "now") {
+ const dateFormat = 'YYYY-MM-DD hh:mm A';
+ if (/^now-/.test(from) && until === 'now') {
const { number, _multiplier } = convertPresetsToDate(from);
return `Last ${number} ${_multiplier}`;
}
- if (until === "now" && !/^now-/.test(from)) {
+ if (until === 'now' && !/^now-/.test(from)) {
return `${moment(Math.round(from * 1000)).format(dateFormat)} - now`;
}
- if (until !== "now" && /^now-/.test(from)) {
+ if (until !== 'now' && /^now-/.test(from)) {
const { _from } = convertPresetsToDate(from);
return `${moment(Math.round(_from * 1000)).format(dateFormat)} - ${moment(
Math.round(until * 1000)
@@ -62,7 +62,7 @@ export function formatAsOBject(value) {
const { _from } = convertPresetsToDate(value);
return _from * 1000;
}
- if (value === "now") {
+ if (value === 'now') {
return moment().toDate();
}
return moment(value * 1000).toDate();
diff --git a/webapp/javascript/util/history.js b/webapp/javascript/util/history.js
index f2f9372265..a758b95d32 100644
--- a/webapp/javascript/util/history.js
+++ b/webapp/javascript/util/history.js
@@ -1,4 +1,4 @@
// src/myHistory.js
-import { createBrowserHistory } from "history";
+import { createBrowserHistory } from 'history';
const history = createBrowserHistory();
export default history;
diff --git a/webapp/javascript/util/key.js b/webapp/javascript/util/key.js
index 88b20b4610..29c49a3ea6 100644
--- a/webapp/javascript/util/key.js
+++ b/webapp/javascript/util/key.js
@@ -23,7 +23,10 @@ export function encodeLabels(v) {
} else {
res += 'unknown{';
}
- res += v.filter((x) => x.name !== '__name__').map((x) => `${x.name}=${x.value}`).join(',');
+ res += v
+ .filter((x) => x.name !== '__name__')
+ .map((x) => `${x.name}=${x.value}`)
+ .join(',');
res += '}';
return res;
}
diff --git a/webapp/javascript/util/murmur3.js b/webapp/javascript/util/murmur3.js
index 629f3cb220..43f54b4759 100644
--- a/webapp/javascript/util/murmur3.js
+++ b/webapp/javascript/util/murmur3.js
@@ -7,8 +7,16 @@
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
export default function murmurhash3_32_gc(key, seed) {
- let remainder; let bytes; let h1; let h1b; let c1; let c1b; let c2; let c2b; let k1; let
- i;
+ let remainder;
+ let bytes;
+ let h1;
+ let h1b;
+ let c1;
+ let c1b;
+ let c2;
+ let c2b;
+ let k1;
+ let i;
remainder = key.length & 3; // key.length % 4
bytes = key.length - remainder;
@@ -18,41 +26,58 @@ export default function murmurhash3_32_gc(key, seed) {
i = 0;
while (i < bytes) {
- k1 = ((key.charCodeAt(i) & 0xff))
- | ((key.charCodeAt(++i) & 0xff) << 8)
- | ((key.charCodeAt(++i) & 0xff) << 16)
- | ((key.charCodeAt(++i) & 0xff) << 24);
+ k1 =
+ (key.charCodeAt(i) & 0xff) |
+ ((key.charCodeAt(++i) & 0xff) << 8) |
+ ((key.charCodeAt(++i) & 0xff) << 16) |
+ ((key.charCodeAt(++i) & 0xff) << 24);
++i;
- k1 = ((((k1 & 0xffff) * c1) + ((((k1 >>> 16) * c1) & 0xffff) << 16))) & 0xffffffff;
+ k1 =
+ ((k1 & 0xffff) * c1 + ((((k1 >>> 16) * c1) & 0xffff) << 16)) & 0xffffffff;
k1 = (k1 << 15) | (k1 >>> 17);
- k1 = ((((k1 & 0xffff) * c2) + ((((k1 >>> 16) * c2) & 0xffff) << 16))) & 0xffffffff;
+ k1 =
+ ((k1 & 0xffff) * c2 + ((((k1 >>> 16) * c2) & 0xffff) << 16)) & 0xffffffff;
h1 ^= k1;
h1 = (h1 << 13) | (h1 >>> 19);
- h1b = ((((h1 & 0xffff) * 5) + ((((h1 >>> 16) * 5) & 0xffff) << 16))) & 0xffffffff;
- h1 = (((h1b & 0xffff) + 0x6b64) + ((((h1b >>> 16) + 0xe654) & 0xffff) << 16));
+ h1b =
+ ((h1 & 0xffff) * 5 + ((((h1 >>> 16) * 5) & 0xffff) << 16)) & 0xffffffff;
+ h1 = (h1b & 0xffff) + 0x6b64 + ((((h1b >>> 16) + 0xe654) & 0xffff) << 16);
}
k1 = 0;
switch (remainder) {
- case 3: k1 ^= (key.charCodeAt(i + 2) & 0xff) << 16;
- case 2: k1 ^= (key.charCodeAt(i + 1) & 0xff) << 8;
- case 1: k1 ^= (key.charCodeAt(i) & 0xff);
+ case 3:
+ k1 ^= (key.charCodeAt(i + 2) & 0xff) << 16;
+ case 2:
+ k1 ^= (key.charCodeAt(i + 1) & 0xff) << 8;
+ case 1:
+ k1 ^= key.charCodeAt(i) & 0xff;
- k1 = (((k1 & 0xffff) * c1) + ((((k1 >>> 16) * c1) & 0xffff) << 16)) & 0xffffffff;
+ k1 =
+ ((k1 & 0xffff) * c1 + ((((k1 >>> 16) * c1) & 0xffff) << 16)) &
+ 0xffffffff;
k1 = (k1 << 15) | (k1 >>> 17);
- k1 = (((k1 & 0xffff) * c2) + ((((k1 >>> 16) * c2) & 0xffff) << 16)) & 0xffffffff;
+ k1 =
+ ((k1 & 0xffff) * c2 + ((((k1 >>> 16) * c2) & 0xffff) << 16)) &
+ 0xffffffff;
h1 ^= k1;
}
h1 ^= key.length;
h1 ^= h1 >>> 16;
- h1 = (((h1 & 0xffff) * 0x85ebca6b) + ((((h1 >>> 16) * 0x85ebca6b) & 0xffff) << 16)) & 0xffffffff;
+ h1 =
+ ((h1 & 0xffff) * 0x85ebca6b +
+ ((((h1 >>> 16) * 0x85ebca6b) & 0xffff) << 16)) &
+ 0xffffffff;
h1 ^= h1 >>> 13;
- h1 = ((((h1 & 0xffff) * 0xc2b2ae35) + ((((h1 >>> 16) * 0xc2b2ae35) & 0xffff) << 16))) & 0xffffffff;
+ h1 =
+ ((h1 & 0xffff) * 0xc2b2ae35 +
+ ((((h1 >>> 16) * 0xc2b2ae35) & 0xffff) << 16)) &
+ 0xffffffff;
h1 ^= h1 >>> 16;
return h1 >>> 0;
diff --git a/webapp/javascript/util/prism.js b/webapp/javascript/util/prism.js
index 7f62a1330c..28cdbe96ea 100644
--- a/webapp/javascript/util/prism.js
+++ b/webapp/javascript/util/prism.js
@@ -1,4 +1,491 @@
/* PrismJS 1.24.1
https://prismjs.com/download.html#themes=prism-funky&languages=promql */
-var _self="undefined"!=typeof window?window:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{},Prism=function(u){var c=/\blang(?:uage)?-([\w-]+)\b/i,n=0,e={},M={manual:u.Prism&&u.Prism.manual,disableWorkerMessageHandler:u.Prism&&u.Prism.disableWorkerMessageHandler,util:{encode:function e(n){return n instanceof W?new W(n.type,e(n.content),n.alias):Array.isArray(n)?n.map(e):n.replace(/&/g,"&").replace(/=l.reach);y+=m.value.length,m=m.next){var b=m.value;if(t.length>n.length)return;if(!(b instanceof W)){var k,x=1;if(h){if(!(k=z(v,y,n,f)))break;var w=k.index,A=k.index+k[0].length,P=y;for(P+=m.value.length;P<=w;)m=m.next,P+=m.value.length;if(P-=m.value.length,y=P,m.value instanceof W)continue;for(var E=m;E!==t.tail&&(Pl.reach&&(l.reach=N);var j=m.prev;O&&(j=I(t,j,O),y+=O.length),q(t,j,x);var C=new W(o,g?M.tokenize(S,g):S,d,S);if(m=I(t,j,C),L&&I(t,m,L),1l.reach&&(l.reach=_.reach)}}}}}}(e,a,n,a.head,0),function(e){var n=[],t=e.head.next;for(;t!==e.tail;)n.push(t.value),t=t.next;return n}(a)},hooks:{all:{},add:function(e,n){var t=M.hooks.all;t[e]=t[e]||[],t[e].push(n)},run:function(e,n){var t=M.hooks.all[e];if(t&&t.length)for(var r,a=0;r=t[a++];)r(n)}},Token:W};function W(e,n,t,r){this.type=e,this.content=n,this.alias=t,this.length=0|(r||"").length}function z(e,n,t,r){e.lastIndex=n;var a=e.exec(t);if(a&&r&&a[1]){var i=a[1].length;a.index+=i,a[0]=a[0].slice(i)}return a}function i(){var e={value:null,prev:null,next:null},n={value:null,prev:e,next:null};e.next=n,this.head=e,this.tail=n,this.length=0}function I(e,n,t){var r=n.next,a={value:t,prev:n,next:r};return n.next=a,r.prev=a,e.length++,a}function q(e,n,t){for(var r=n.next,a=0;a"+a.content+""+a.tag+">"},!u.document)return u.addEventListener&&(M.disableWorkerMessageHandler||u.addEventListener("message",function(e){var n=JSON.parse(e.data),t=n.language,r=n.code,a=n.immediateClose;u.postMessage(M.highlight(r,M.languages[t],t)),a&&u.close()},!1)),M;var t=M.util.currentScript();function r(){M.manual||M.highlightAll()}if(t&&(M.filename=t.src,t.hasAttribute("data-manual")&&(M.manual=!0)),!M.manual){var a=document.readyState;"loading"===a||"interactive"===a&&t&&t.defer?document.addEventListener("DOMContentLoaded",r):window.requestAnimationFrame?window.requestAnimationFrame(r):window.setTimeout(r,16)}return M}(_self);"undefined"!=typeof module&&module.exports&&(module.exports=Prism),"undefined"!=typeof global&&(global.Prism=Prism);
-!function(t){var n=["on","ignoring","group_right","group_left","by","without"],a=["sum","min","max","avg","group","stddev","stdvar","count","count_values","bottomk","topk","quantile"].concat(n,["offset"]);t.languages.promql={comment:{pattern:/(^[ \t]*)#.*/m,lookbehind:!0},"vector-match":{pattern:new RegExp("((?:"+n.join("|")+")\\s*)\\([^)]*\\)"),lookbehind:!0,inside:{"label-key":{pattern:/\b[^,]*\b/,alias:"attr-name"},punctuation:/[(),]/}},"context-labels":{pattern:/\{[^{}]*\}/,inside:{"label-key":{pattern:/\b[a-z_]\w*(?=\s*(?:=|![=~]))/,alias:"attr-name"},"label-value":{pattern:/(["'`])(?:\\[\s\S]|(?!\1)[^\\])*\1/,greedy:!0,alias:"attr-value"},punctuation:/\{|\}|=~?|![=~]|,/}},"context-range":[{pattern:/\[[\w\s:]+\]/,inside:{punctuation:/\[|\]|:/,"range-duration":{pattern:/\b(?:\d+(?:[smhdwy]|ms))+\b/i,alias:"number"}}},{pattern:/(\boffset\s+)\w+/,lookbehind:!0,inside:{"range-duration":{pattern:/\b(?:\d+(?:[smhdwy]|ms))+\b/i,alias:"number"}}}],keyword:new RegExp("\\b(?:"+a.join("|")+")\\b","i"),function:/\b[a-z_]\w*(?=\s*\()/i,number:/[-+]?(?:(?:\b\d+(?:\.\d+)?|\B\.\d+)(?:e[-+]?\d+)?\b|\b(?:0x[0-9a-f]+|nan|inf)\b)/i,operator:/[\^*/%+-]|==|!=|<=|<|>=|>|\b(?:and|unless|or)\b/i,punctuation:/[{};()`,.[\]]/}}(Prism);
+var _self =
+ 'undefined' != typeof window
+ ? window
+ : 'undefined' != typeof WorkerGlobalScope &&
+ self instanceof WorkerGlobalScope
+ ? self
+ : {},
+ Prism = (function (u) {
+ var c = /\blang(?:uage)?-([\w-]+)\b/i,
+ n = 0,
+ e = {},
+ M = {
+ manual: u.Prism && u.Prism.manual,
+ disableWorkerMessageHandler:
+ u.Prism && u.Prism.disableWorkerMessageHandler,
+ util: {
+ encode: function e(n) {
+ return n instanceof W
+ ? new W(n.type, e(n.content), n.alias)
+ : Array.isArray(n)
+ ? n.map(e)
+ : n
+ .replace(/&/g, '&')
+ .replace(/= l.reach);
+ y += m.value.length, m = m.next
+ ) {
+ var b = m.value;
+ if (t.length > n.length) return;
+ if (!(b instanceof W)) {
+ var k,
+ x = 1;
+ if (h) {
+ if (!(k = z(v, y, n, f))) break;
+ var w = k.index,
+ A = k.index + k[0].length,
+ P = y;
+ for (P += m.value.length; P <= w; )
+ (m = m.next), (P += m.value.length);
+ if (
+ ((P -= m.value.length),
+ (y = P),
+ m.value instanceof W)
+ )
+ continue;
+ for (
+ var E = m;
+ E !== t.tail &&
+ (P < A || 'string' == typeof E.value);
+ E = E.next
+ )
+ x++, (P += E.value.length);
+ x--, (b = n.slice(y, P)), (k.index -= y);
+ } else if (!(k = z(v, 0, b, f))) continue;
+ var w = k.index,
+ S = k[0],
+ O = b.slice(0, w),
+ L = b.slice(w + S.length),
+ N = y + b.length;
+ l && N > l.reach && (l.reach = N);
+ var j = m.prev;
+ O && ((j = I(t, j, O)), (y += O.length)), q(t, j, x);
+ var C = new W(o, g ? M.tokenize(S, g) : S, d, S);
+ if (((m = I(t, j, C)), L && I(t, m, L), 1 < x)) {
+ var _ = { cause: o + ',' + u, reach: N };
+ e(n, t, r, m.prev, y, _),
+ l && _.reach > l.reach && (l.reach = _.reach);
+ }
+ }
+ }
+ }
+ }
+ })(e, a, n, a.head, 0),
+ (function (e) {
+ var n = [],
+ t = e.head.next;
+ for (; t !== e.tail; ) n.push(t.value), (t = t.next);
+ return n;
+ })(a)
+ );
+ },
+ hooks: {
+ all: {},
+ add: function (e, n) {
+ var t = M.hooks.all;
+ (t[e] = t[e] || []), t[e].push(n);
+ },
+ run: function (e, n) {
+ var t = M.hooks.all[e];
+ if (t && t.length) for (var r, a = 0; (r = t[a++]); ) r(n);
+ },
+ },
+ Token: W,
+ };
+ function W(e, n, t, r) {
+ (this.type = e),
+ (this.content = n),
+ (this.alias = t),
+ (this.length = 0 | (r || '').length);
+ }
+ function z(e, n, t, r) {
+ e.lastIndex = n;
+ var a = e.exec(t);
+ if (a && r && a[1]) {
+ var i = a[1].length;
+ (a.index += i), (a[0] = a[0].slice(i));
+ }
+ return a;
+ }
+ function i() {
+ var e = { value: null, prev: null, next: null },
+ n = { value: null, prev: e, next: null };
+ (e.next = n), (this.head = e), (this.tail = n), (this.length = 0);
+ }
+ function I(e, n, t) {
+ var r = n.next,
+ a = { value: t, prev: n, next: r };
+ return (n.next = a), (r.prev = a), e.length++, a;
+ }
+ function q(e, n, t) {
+ for (var r = n.next, a = 0; a < t && r !== e.tail; a++) r = r.next;
+ ((n.next = r).prev = n), (e.length -= a);
+ }
+ if (
+ ((u.Prism = M),
+ (W.stringify = function n(e, t) {
+ if ('string' == typeof e) return e;
+ if (Array.isArray(e)) {
+ var r = '';
+ return (
+ e.forEach(function (e) {
+ r += n(e, t);
+ }),
+ r
+ );
+ }
+ var a = {
+ type: e.type,
+ content: n(e.content, t),
+ tag: 'span',
+ classes: ['token', e.type],
+ attributes: {},
+ language: t,
+ },
+ i = e.alias;
+ i &&
+ (Array.isArray(i)
+ ? Array.prototype.push.apply(a.classes, i)
+ : a.classes.push(i)),
+ M.hooks.run('wrap', a);
+ var l = '';
+ for (var o in a.attributes)
+ l +=
+ ' ' +
+ o +
+ '="' +
+ (a.attributes[o] || '').replace(/"/g, '"') +
+ '"';
+ return (
+ '<' +
+ a.tag +
+ ' class="' +
+ a.classes.join(' ') +
+ '"' +
+ l +
+ '>' +
+ a.content +
+ '' +
+ a.tag +
+ '>'
+ );
+ }),
+ !u.document)
+ )
+ return (
+ u.addEventListener &&
+ (M.disableWorkerMessageHandler ||
+ u.addEventListener(
+ 'message',
+ function (e) {
+ var n = JSON.parse(e.data),
+ t = n.language,
+ r = n.code,
+ a = n.immediateClose;
+ u.postMessage(M.highlight(r, M.languages[t], t)),
+ a && u.close();
+ },
+ !1
+ )),
+ M
+ );
+ var t = M.util.currentScript();
+ function r() {
+ M.manual || M.highlightAll();
+ }
+ if (
+ (t &&
+ ((M.filename = t.src),
+ t.hasAttribute('data-manual') && (M.manual = !0)),
+ !M.manual)
+ ) {
+ var a = document.readyState;
+ 'loading' === a || ('interactive' === a && t && t.defer)
+ ? document.addEventListener('DOMContentLoaded', r)
+ : window.requestAnimationFrame
+ ? window.requestAnimationFrame(r)
+ : window.setTimeout(r, 16);
+ }
+ return M;
+ })(_self);
+'undefined' != typeof module && module.exports && (module.exports = Prism),
+ 'undefined' != typeof global && (global.Prism = Prism);
+!(function (t) {
+ var n = ['on', 'ignoring', 'group_right', 'group_left', 'by', 'without'],
+ a = [
+ 'sum',
+ 'min',
+ 'max',
+ 'avg',
+ 'group',
+ 'stddev',
+ 'stdvar',
+ 'count',
+ 'count_values',
+ 'bottomk',
+ 'topk',
+ 'quantile',
+ ].concat(n, ['offset']);
+ t.languages.promql = {
+ comment: { pattern: /(^[ \t]*)#.*/m, lookbehind: !0 },
+ 'vector-match': {
+ pattern: new RegExp('((?:' + n.join('|') + ')\\s*)\\([^)]*\\)'),
+ lookbehind: !0,
+ inside: {
+ 'label-key': { pattern: /\b[^,]*\b/, alias: 'attr-name' },
+ punctuation: /[(),]/,
+ },
+ },
+ 'context-labels': {
+ pattern: /\{[^{}]*\}/,
+ inside: {
+ 'label-key': {
+ pattern: /\b[a-z_]\w*(?=\s*(?:=|![=~]))/,
+ alias: 'attr-name',
+ },
+ 'label-value': {
+ pattern: /(["'`])(?:\\[\s\S]|(?!\1)[^\\])*\1/,
+ greedy: !0,
+ alias: 'attr-value',
+ },
+ punctuation: /\{|\}|=~?|![=~]|,/,
+ },
+ },
+ 'context-range': [
+ {
+ pattern: /\[[\w\s:]+\]/,
+ inside: {
+ punctuation: /\[|\]|:/,
+ 'range-duration': {
+ pattern: /\b(?:\d+(?:[smhdwy]|ms))+\b/i,
+ alias: 'number',
+ },
+ },
+ },
+ {
+ pattern: /(\boffset\s+)\w+/,
+ lookbehind: !0,
+ inside: {
+ 'range-duration': {
+ pattern: /\b(?:\d+(?:[smhdwy]|ms))+\b/i,
+ alias: 'number',
+ },
+ },
+ },
+ ],
+ keyword: new RegExp('\\b(?:' + a.join('|') + ')\\b', 'i'),
+ function: /\b[a-z_]\w*(?=\s*\()/i,
+ number: /[-+]?(?:(?:\b\d+(?:\.\d+)?|\B\.\d+)(?:e[-+]?\d+)?\b|\b(?:0x[0-9a-f]+|nan|inf)\b)/i,
+ operator: /[\^*/%+-]|==|!=|<=|<|>=|>|\b(?:and|unless|or)\b/i,
+ punctuation: /[{};()`,.[\]]/,
+ };
+})(Prism);
diff --git a/webapp/javascript/util/updateRequests.js b/webapp/javascript/util/updateRequests.js
index 344af1e920..c9ec5e5c3a 100644
--- a/webapp/javascript/util/updateRequests.js
+++ b/webapp/javascript/util/updateRequests.js
@@ -1,4 +1,9 @@
-export function buildRenderURL(state, fromOverride=null, untilOverride=null, side=null) {
+export function buildRenderURL(
+ state,
+ fromOverride = null,
+ untilOverride = null,
+ side = null
+) {
let { from, until, query } = state;
if (fromOverride) {
@@ -9,7 +14,9 @@ export function buildRenderURL(state, fromOverride=null, untilOverride=null, sid
until = untilOverride;
}
- let url = `render?from=${encodeURIComponent(from)}&until=${encodeURIComponent(until)}`;
+ let url = `render?from=${encodeURIComponent(from)}&until=${encodeURIComponent(
+ until
+ )}`;
url += `&query=${encodeURIComponent(query)}`;
@@ -22,7 +29,17 @@ export function buildRenderURL(state, fromOverride=null, untilOverride=null, sid
}
// TODO: merge buildRenderURL and buildDiffRenderURL
-export function buildDiffRenderURL(state, { from: fromOverride, until: untilOverride, leftFrom: leftFromOverride, leftUntil: leftUntilOverride, rightFrom: rightFromOverride, rightUntil: rightUntilOverride } = {}) {
+export function buildDiffRenderURL(
+ state,
+ {
+ from: fromOverride,
+ until: untilOverride,
+ leftFrom: leftFromOverride,
+ leftUntil: leftUntilOverride,
+ rightFrom: rightFromOverride,
+ rightUntil: rightUntilOverride,
+ } = {}
+) {
let { from, until, leftFrom, leftUntil, rightFrom, rightUntil } = state;
from = fromOverride || from;
until = untilOverride || until;
diff --git a/webapp/sass/components/button.scss b/webapp/sass/components/button.scss
index 5894861811..8ed2673f25 100644
--- a/webapp/sass/components/button.scss
+++ b/webapp/sass/components/button.scss
@@ -28,7 +28,7 @@
border-right-color: $active-color;
border-top-color: $active-color;
border-bottom-color: $active-color;
- transition: 0.3s cubic-bezier(.17,.67,.83,.67);
+ transition: 0.3s cubic-bezier(0.17, 0.67, 0.83, 0.67);
font-weight: 600;
&:hover {
diff --git a/webapp/sass/components/daterangepicker.scss b/webapp/sass/components/daterangepicker.scss
index 596cd03e30..10ede8d0a2 100644
--- a/webapp/sass/components/daterangepicker.scss
+++ b/webapp/sass/components/daterangepicker.scss
@@ -2,8 +2,8 @@
@use "../mixins/outline" as *;
// DatePicker Component styles
-@import "../../node_modules/react-datepicker/dist/react-datepicker.css";
-@import "../../node_modules/react-datepicker/dist/react-datepicker-cssmodules.css";
+@import '../../node_modules/react-datepicker/dist/react-datepicker.css';
+@import '../../node_modules/react-datepicker/dist/react-datepicker-cssmodules.css';
.drp-button {
white-space: nowrap;
@@ -70,7 +70,6 @@
.drp-preset {
@include outline;
-
border: none;
text-align: left;
padding: 2px 0;
@@ -90,7 +89,7 @@
background: $btn-hover-color;
}
- &:hover{
+ &:hover {
cursor: pointer;
}
}
diff --git a/webapp/sass/components/labels.scss b/webapp/sass/components/labels.scss
index 519cddf306..160b3f79b0 100644
--- a/webapp/sass/components/labels.scss
+++ b/webapp/sass/components/labels.scss
@@ -1,12 +1,10 @@
@use "../variables" as *;
@use "../mixins/outline" as *;
-
.labels {
min-width: 350px;
visibility: none;
-
&.visible {
visibility: block;
}
@@ -31,7 +29,7 @@
padding: 0 6px;
margin-right: 10px;
line-height: 1.6;
- &:hover{
+ &:hover {
background: $btn-hover-color;
}
.label-name {
@@ -43,7 +41,6 @@
}
}
.label-value {
-
}
.label-delete-btn {
border: none;
@@ -59,7 +56,7 @@
top: -30px;
right: -16px;
- background: #FF4136;
+ background: #ff4136;
padding: 5px;
line-height: 0.65;
border-radius: 50%;
@@ -81,7 +78,5 @@
margin-right: 10px;
}
.labels-new-btn {
-
}
}
-
diff --git a/webapp/sass/components/tagsbar.scss b/webapp/sass/components/tagsbar.scss
index 2a006b19dc..ff0cad4f0f 100644
--- a/webapp/sass/components/tagsbar.scss
+++ b/webapp/sass/components/tagsbar.scss
@@ -1,7 +1,7 @@
@use "../variables" as *;
-@import "../../node_modules/@szhsin/react-menu/dist/index.css";
-@import "../prism.scss";
+@import '../../node_modules/@szhsin/react-menu/dist/index.css';
+@import '../prism.scss';
.tags-bar {
display: flex;
@@ -17,7 +17,7 @@
margin-right: 5px;
padding-right: 20px;
&::after {
- content: "▾";
+ content: '▾';
position: absolute;
top: 3px;
right: 5px;
@@ -30,7 +30,8 @@
padding: 0.25rem 0;
}
- .rc-menu, .rc-menu__item {
+ .rc-menu,
+ .rc-menu__item {
background-color: $btn-color;
color: $white;
}
@@ -72,7 +73,7 @@
border-bottom-right-radius: 0px;
border-right: none;
caret-color: #fff;
- color: rgba(0,0,0,0);
+ color: rgba(0, 0, 0, 0);
// color: red;
letter-spacing: 0;
font-family: arial;
@@ -83,17 +84,17 @@
border-top-left-radius: 0px;
border-bottom-left-radius: 0px;
caret-color: #fff;
- background-color: #0074D9;
- border-color: darken(#0074D9, 10%);
+ background-color: #0074d9;
+ border-color: darken(#0074d9, 10%);
letter-spacing: 0;
font-family: arial;
font-size: 16px;
&:hover {
- background-color: lighten(#0074D9, 10%);
+ background-color: lighten(#0074d9, 10%);
}
}
- .tags-highlighted{
+ .tags-highlighted {
height: 0;
width: 0;
margin-top: -17px;
@@ -118,7 +119,7 @@
.rc-menu__item {
$xpadding: 0.375rem;
$ypadding: 1.5rem;
- $ypadding: 1.0rem;
+ $ypadding: 1rem;
padding: $xpadding $ypadding;
}
diff --git a/webapp/sass/login.scss b/webapp/sass/login.scss
index 161ec680fa..9bdec027c2 100644
--- a/webapp/sass/login.scss
+++ b/webapp/sass/login.scss
@@ -1,9 +1,15 @@
-body.login-page{
+body.login-page {
$c0: darken(#feb40e, 10%);
$c1: darken(#3dc1d3, 10%);
$c2: darken(#d12838, 30%);
// $c2: darken(#3dc1d3, 10%);
- background: radial-gradient(farthest-side at 0% 0%, rgba(0,0,0, 0.3) 60%, rgba(0,0,0, 0.6)),url(data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20version%3D%221.1%22%20x%3D%220%22%20y%3D%220%22%20width%3D%22160%22%20height%3D%2215%22%20viewBox%3D%220%200%20160%2015%22%20preserveAspectRatio%3D%22xMinYMin%22%3E%3Cpath%20fill%3D%22none%22%20stroke%3D%22%23000000%22%20stroke-opacity%3D%220.13%22%20stroke-miterlimit%3D%2210%22%20d%3D%22M0%200.5c26.7%200%2053.3%2014%2080%2014%2026.7%200%2053.3-14%2080-14M0-4.5c26.7%200%2053.3%2014%2080%2014%2026.7%200%2053.3-14%2080-14M0-9.5c26.7%200%2053.3%2014%2080%2014%2026.7%200%2053.3-14%2080-14M0%205.5c26.7%200%2053.3%2014%2080%2014%2026.7%200%2053.3-14%2080-14M0%2010.5c26.7%200%2053.3%2014%2080%2014%2026.7%200%2053.3-14%2080-14%22%2F%3E%3C%2Fsvg%3E), linear-gradient(180deg, $c1 0, $c2 100%) fixed;
+ background: radial-gradient(
+ farthest-side at 0% 0%,
+ rgba(0, 0, 0, 0.3) 60%,
+ rgba(0, 0, 0, 0.6)
+ ),
+ url(data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20version%3D%221.1%22%20x%3D%220%22%20y%3D%220%22%20width%3D%22160%22%20height%3D%2215%22%20viewBox%3D%220%200%20160%2015%22%20preserveAspectRatio%3D%22xMinYMin%22%3E%3Cpath%20fill%3D%22none%22%20stroke%3D%22%23000000%22%20stroke-opacity%3D%220.13%22%20stroke-miterlimit%3D%2210%22%20d%3D%22M0%200.5c26.7%200%2053.3%2014%2080%2014%2026.7%200%2053.3-14%2080-14M0-4.5c26.7%200%2053.3%2014%2080%2014%2026.7%200%2053.3-14%2080-14M0-9.5c26.7%200%2053.3%2014%2080%2014%2026.7%200%2053.3-14%2080-14M0%205.5c26.7%200%2053.3%2014%2080%2014%2026.7%200%2053.3-14%2080-14M0%2010.5c26.7%200%2053.3%2014%2080%2014%2026.7%200%2053.3-14%2080-14%22%2F%3E%3C%2Fsvg%3E),
+ linear-gradient(180deg, $c1 0, $c2 100%) fixed;
background-size: cover, auto, auto;
}
@@ -13,7 +19,11 @@ body.login-page{
right: 0;
top: 0;
bottom: 0;
- background-image: radial-gradient(farthest-corner at 0% 0%, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 1));
+ background-image: radial-gradient(
+ farthest-corner at 0% 0%,
+ rgba(0, 0, 0, 0.5) 0%,
+ rgba(0, 0, 0, 1)
+ );
transition: background-size 2s ease-out, opacity 2s ease-out;
&.fade-out {
opacity: 0;
@@ -26,7 +36,7 @@ body.login-page{
// height: 550px;
padding: 0 0;
background-color: rgba(0, 0, 0, 0.6);
- box-shadow: 0 3px 30px 0 rgba(0,0,0,0.3);
+ box-shadow: 0 3px 30px 0 rgba(0, 0, 0, 0.3);
// background-color: darken(#3dc1d3, 48%);
border-radius: 10px;
margin: auto;
@@ -37,7 +47,7 @@ body.login-page{
right: 0;
top: 20%;
padding-bottom: 50px;
- overflow: hidden; //adding overflow hidden
+ overflow: hidden; //adding overflow hidden
.login-to-continue {
margin: 20px 70px 30px;
@@ -53,7 +63,7 @@ body.login-page{
}
.welcome-logo {
- background-image: url("../images/logo-v3-small.svg");
+ background-image: url('../images/logo-v3-small.svg');
$w: 100px;
width: $w;
height: $w;
@@ -81,7 +91,7 @@ body.login-page{
width: 100%;
color: white;
margin: 0 auto 15px;
- text-shadow: 0 1px 2px rgba(0,0,0,0.33);
+ text-shadow: 0 1px 2px rgba(0, 0, 0, 0.33);
transition: background-color 0.2s ease-in;
svg {
display: inline-block;
@@ -98,28 +108,28 @@ body.login-page{
}
}
-.sign-in-button-github{
+.sign-in-button-github {
background-color: #464646;
&:hover {
background-color: darken(#464646, 5%);
}
}
-.sign-in-button-gitlab{
+.sign-in-button-gitlab {
background-color: #fc6d26;
&:hover {
background-color: darken(#fc6d26, 5%);
}
}
-.sign-in-button-google{
+.sign-in-button-google {
background-color: #e84d3c;
&:hover {
background-color: darken(#e84d3c, 5%);
}
}
-.sign-in-button-go-back{
+.sign-in-button-go-back {
background-color: #333;
span {
width: 180px;
@@ -128,5 +138,3 @@ body.login-page{
background-color: darken(#333, 5%);
}
}
-
-
diff --git a/webapp/sass/prism.scss b/webapp/sass/prism.scss
index 3b548254f7..3b6c90d673 100644
--- a/webapp/sass/prism.scss
+++ b/webapp/sass/prism.scss
@@ -6,62 +6,62 @@ https://prismjs.com/download.html#themes=prism-funky&languages=promql */
* @author Lea Verou
*/
-code[class*="language-"],
-pre[class*="language-"] {
- font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
- font-size: 1em;
- text-align: left;
- white-space: pre;
- word-spacing: normal;
- word-break: normal;
- word-wrap: normal;
- line-height: 1.5;
-
- -moz-tab-size: 4;
- -o-tab-size: 4;
- tab-size: 4;
-
- -webkit-hyphens: none;
- -moz-hyphens: none;
- -ms-hyphens: none;
- hyphens: none;
+code[class*='language-'],
+pre[class*='language-'] {
+ font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
+ font-size: 1em;
+ text-align: left;
+ white-space: pre;
+ word-spacing: normal;
+ word-break: normal;
+ word-wrap: normal;
+ line-height: 1.5;
+
+ -moz-tab-size: 4;
+ -o-tab-size: 4;
+ tab-size: 4;
+
+ -webkit-hyphens: none;
+ -moz-hyphens: none;
+ -ms-hyphens: none;
+ hyphens: none;
}
/* Code blocks */
-pre[class*="language-"] {
- padding: .4em .8em;
- margin: .5em 0;
- overflow: auto;
- background-size: 1em 1em;
+pre[class*='language-'] {
+ padding: 0.4em 0.8em;
+ margin: 0.5em 0;
+ overflow: auto;
+ background-size: 1em 1em;
}
-code[class*="language-"] {
- background: black;
- color: #999;
- box-shadow: -.3em 0 0 .3em black, .3em 0 0 .3em black;
+code[class*='language-'] {
+ background: black;
+ color: #999;
+ box-shadow: -0.3em 0 0 0.3em black, 0.3em 0 0 0.3em black;
}
/* Inline code */
-:not(pre) > code[class*="language-"] {
- padding: .2em;
- border-radius: .3em;
- box-shadow: none;
- white-space: normal;
+:not(pre) > code[class*='language-'] {
+ padding: 0.2em;
+ border-radius: 0.3em;
+ box-shadow: none;
+ white-space: normal;
}
.token.comment,
.token.prolog,
.token.doctype,
.token.cdata {
- color: #aaa;
+ color: #aaa;
}
.token.punctuation {
- color: #999;
+ color: #999;
}
.token.namespace {
- opacity: .7;
+ opacity: 0.7;
}
.token.property,
@@ -70,7 +70,7 @@ code[class*="language-"] {
.token.number,
.token.constant,
.token.symbol {
- color: #0cf;
+ color: #0cf;
}
.token.selector,
@@ -78,7 +78,7 @@ code[class*="language-"] {
.token.string,
.token.char,
.token.builtin {
- color: #33a2e5;
+ color: #33a2e5;
}
.token.operator,
@@ -87,46 +87,45 @@ code[class*="language-"] {
.language-css .token.string,
.token.variable,
.token.inserted {
- color: yellowgreen;
+ color: yellowgreen;
}
.token.atrule,
.token.attr-value,
.token.keyword {
- color: #74e680;
+ color: #74e680;
}
.token.regex,
.token.important {
- color: orange;
+ color: orange;
}
.token.important,
.token.bold {
- font-weight: bold;
+ font-weight: bold;
}
.token.italic {
- font-style: italic;
+ font-style: italic;
}
.token.entity {
- cursor: help;
+ cursor: help;
}
.token.deleted {
- color: red;
+ color: red;
}
/* Plugin styles: Diff Highlight */
pre.diff-highlight.diff-highlight > code .token.deleted:not(.prefix),
pre > code.diff-highlight.diff-highlight .token.deleted:not(.prefix) {
- background-color: rgba(255, 0, 0, .3);
- display: inline;
+ background-color: rgba(255, 0, 0, 0.3);
+ display: inline;
}
pre.diff-highlight.diff-highlight > code .token.inserted:not(.prefix),
pre > code.diff-highlight.diff-highlight .token.inserted:not(.prefix) {
- background-color: rgba(0, 255, 128, .3);
- display: inline;
+ background-color: rgba(0, 255, 128, 0.3);
+ display: inline;
}
-
diff --git a/webapp/sass/profile.scss b/webapp/sass/profile.scss
index 9243fd3f22..60bbdbd5fc 100644
--- a/webapp/sass/profile.scss
+++ b/webapp/sass/profile.scss
@@ -6,17 +6,17 @@
@use "components/tagsbar";
@use "components/button";
-@import "~sanitize.css";
-@import "~sanitize.css/forms.css";
-@import "~sanitize.css/typography.css";
+@import '~sanitize.css';
+@import '~sanitize.css/forms.css';
+@import '~sanitize.css/typography.css';
-@import "login.scss";
+@import 'login.scss';
-@import "../javascript/components/FlameGraph/FlameGraphComponent/styles.css";
+@import '../javascript/components/FlameGraph/FlameGraphComponent/styles.css';
body {
- font: 400 16px/1.7 -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica,
- Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
+ font: 400 16px/1.7 -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica,
+ Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol';
background-color: $bg-color;
color: white;
@@ -65,14 +65,14 @@ tt {
margin: 0;
padding: 0;
font-weight: 400;
- background-image: url("../images/logo-v3-small.svg");
+ background-image: url('../images/logo-v3-small.svg');
background-size: 40px 40px;
background-position: 0px 8px;
background-repeat: no-repeat;
}
.logo::after {
- content: "Pyroscope";
+ content: 'Pyroscope';
font-weight: 400;
padding-left: 44px;
font-size: 25px;
@@ -135,7 +135,7 @@ input {
&.double {
display: flex;
- width: 50%
+ width: 50%;
}
}
@@ -170,7 +170,7 @@ body {
}
@media only screen and (max-width: 1023px) {
.logo::after {
- content: "";
+ content: '';
}
.labels {
margin-left: 5px;
@@ -235,7 +235,8 @@ $pane-width: 6px;
width: 35px;
text-align: center;
- &:first-child, &:last-child {
+ &:first-child,
+ &:last-child {
width: 40px;
}
}
@@ -341,7 +342,6 @@ $pane-width: 6px;
max-width: auto;
white-space: nowrap;
-
}
&:first-child .color-reference {
@@ -405,7 +405,7 @@ $pane-width: 6px;
right: 20px;
cursor: pointer;
&:after {
- content: "✕";
+ content: '✕';
position: absolute;
top: 0;
right: 0;
@@ -417,7 +417,7 @@ $pane-width: 6px;
}
// hit-area
&:before {
- content: "";
+ content: '';
cursor: pointer;
top: -20px;
right: -20px;
@@ -576,14 +576,14 @@ $sidebar-tooltip-color: #777;
margin: 0;
padding: 0;
font-weight: 400;
- background-image: url("../images/logo-v3-small.svg");
+ background-image: url('../images/logo-v3-small.svg');
background-size: $logo-width $logo-width;
background-position: $logo-offset $logo-offset;
background-repeat: no-repeat;
}
.logo::after {
- content: "";
+ content: '';
font-weight: 400;
padding-left: 44px;
font-size: 25px;
@@ -594,7 +594,8 @@ $sidebar-tooltip-color: #777;
flex-grow: 1;
}
- .logo, .sidebar-item {
+ .logo,
+ .sidebar-item {
width: $sidebar-size;
height: $sidebar-size;
@@ -614,10 +615,11 @@ $sidebar-tooltip-color: #777;
font-size: 14px;
color: rgba(#fff, 0.66);
}
- &:active, &:hover {
+ &:active,
+ &:hover {
opacity: 1;
.sidebar-external-link {
- display:block;
+ display: block;
}
}
@@ -642,7 +644,8 @@ $sidebar-tooltip-color: #777;
// }
// }
- a, button {
+ a,
+ button {
display: block;
line-height: $sidebar-size;
height: $sidebar-size;
@@ -656,11 +659,12 @@ $sidebar-tooltip-color: #777;
padding: 0;
width: 100%;
cursor: pointer;
- &:active, &:hover{
+ &:active,
+ &:hover {
opacity: 1;
}
- &.active-route {
+ &.active-route {
opacity: 1;
color: white;
background-color: rgba(#000, 0.33);
@@ -738,7 +742,7 @@ $sidebar-tooltip-color: #777;
text-align: center;
font-weight: bold;
cursor: pointer;
- background-color: rgba(0,0,0,0.1);
+ background-color: rgba(0, 0, 0, 0.1);
padding: 15px;
&::before {
content: '×';
@@ -748,7 +752,6 @@ $sidebar-tooltip-color: #777;
}
}
-
.fit-mode-select {
margin: 0 10px;
}
diff --git a/webapp/sass/variables.scss b/webapp/sass/variables.scss
index 67fa2b6ce1..5f27503e68 100644
--- a/webapp/sass/variables.scss
+++ b/webapp/sass/variables.scss
@@ -19,10 +19,6 @@ $btn-color: #272727;
$btn-hover-color: #3b3b3b;
$btn-border-color: #4d4d4d;
-
-
-
-
/* SCSS HEX */
$bdazzled-blue: #3d5a80ff;
$pale-cerulean: #98c1d9ff;
@@ -37,7 +33,6 @@ $black-olive: #403d39ff;
$eerie-black: #252422ff;
$flame: #eb5e28ff;
-
/* SCSS HEX */
$space-cadet: #2d3142ff;
$silver: #bfc0c0ff;
@@ -45,7 +40,6 @@ $white: #ffffffff;
$mandarin: #ef8354ff;
$independence: #4f5d75ff;
-
// $bg-color: $space-cadet;
// $btn-color: $silver;
// $btn-hover-color: $mandarin;
@@ -58,15 +52,11 @@ $beau-blue: #bdd5eaff;
$ghost-white: #f7f7ffff;
$orange-red-crayola: #fe5f55ff;
-
// $bg-color: $black-coral;
// $btn-color: $blue-yonder;
// $btn-hover-color: $beau-blue;
// $btn-border-color: $beau-blue;
-
-
-
/* SCSS HEX */
$rich-black-fogra-29: #0d1b2aff;
$oxford-blue: #1b263bff;
@@ -74,15 +64,11 @@ $bdazzled-blue: #415a77ff;
$shadow-blue: #778da9ff;
$platinum: #e0e1ddff;
-
-
-
// $bg-color: $rich-black-fogra-29;
// $btn-color: $oxford-blue;
// $btn-hover-color: $bdazzled-blue;
// $btn-border-color: $bdazzled-blue;
-
/* SCSS HEX */
$davys-grey: #484a47ff;
$cadet: #5c6d70ff;
@@ -90,8 +76,6 @@ $burnished-brown: #a37774ff;
$middle-red: #e88873ff;
$melon: #e0ac9dff;
-
-
// $bg-color: $davys-grey;
// $btn-color: $cadet;
// $btn-hover-color: $middle-red;
diff --git a/webapp/templates/forbidden.html b/webapp/templates/forbidden.html
index a456837466..828bf00dd0 100644
--- a/webapp/templates/forbidden.html
+++ b/webapp/templates/forbidden.html
@@ -1,20 +1,19 @@
+
+
+
+
+ Pyroscope
+
+ {{- if .BaseURL }}
+
+ {{- end }}
+
+
-
-
-
-
- Pyroscope
-
- {{- if .BaseURL }}
-
- {{- end }}
-
-
-
-
-
+
+
-
-
+
+
diff --git a/webapp/templates/index.html b/webapp/templates/index.html
index 5ce92e54ea..3e1639f165 100644
--- a/webapp/templates/index.html
+++ b/webapp/templates/index.html
@@ -1,26 +1,36 @@
-
-
-
-
-
- Pyroscope
-
- {{- if .BaseURL }}
-
- {{- end }}
- {{ .ExtraMetadata }}
- <%= extra_metadata %>
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+ Pyroscope
+
+ {{- if .BaseURL }}
+
+ {{- end }} {{ .ExtraMetadata }} <%= extra_metadata %>
+
+
+
+
+
+
+
+
+
+
+
diff --git a/webapp/templates/login.html b/webapp/templates/login.html
index df7885e3b0..e051ef89f2 100644
--- a/webapp/templates/login.html
+++ b/webapp/templates/login.html
@@ -1,70 +1,143 @@
-
-
-
-
-
-
-
- Pyroscope
-
- {{- if .BaseURL }}
-
- {{- end }}
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+ Pyroscope
+
+ {{- if .BaseURL }}
+
+ {{- end }}
+
+
+
+
+
+
+
+
+
+
diff --git a/webapp/templates/redirect.html b/webapp/templates/redirect.html
index 8a8bf0e9be..099dcfc6a5 100644
--- a/webapp/templates/redirect.html
+++ b/webapp/templates/redirect.html
@@ -1,29 +1,28 @@
+
+
+
+
+ Pyroscope
+
+ {{- if .BaseURL }}
+
+ {{- end }}
+
+
-
-
-
-
- Pyroscope
-
- {{- if .BaseURL }}
-
- {{- end }}
-
-
-
-
-
+
+
-
-
+
+
diff --git a/webapp/templates/welcome.html b/webapp/templates/welcome.html
index 84aa909737..83f48e0076 100644
--- a/webapp/templates/welcome.html
+++ b/webapp/templates/welcome.html
@@ -1,28 +1,27 @@
+
+
+
+
+ Pyroscope
+
+ {{- if .BaseURL }}
+
+ {{- end }}
+
+
-
-
-
-
- Pyroscope
-
- {{- if .BaseURL }}
-
- {{- end }}
-
-
-
-
-
+
+
-
-
+
+
diff --git a/yarn.lock b/yarn.lock
index 22c99afdfc..67092921a6 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1683,6 +1683,11 @@
resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e"
integrity sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==
+"@types/parse-json@^4.0.0":
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0"
+ integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==
+
"@types/prettier@^2.0.0":
version "2.1.6"
resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.1.6.tgz#f4b1efa784e8db479cdb8b14403e2144b1e9ff03"
@@ -2907,6 +2912,14 @@ chalk@^4.0.0, chalk@^4.1.0:
ansi-styles "^4.1.0"
supports-color "^7.1.0"
+chalk@^4.1.1:
+ version "4.1.2"
+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01"
+ integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
+ dependencies:
+ ansi-styles "^4.1.0"
+ supports-color "^7.1.0"
+
char-regex@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf"
@@ -3183,6 +3196,11 @@ colorette@^1.2.1, colorette@^1.2.2, colorette@^1.3.0:
resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.3.0.tgz#ff45d2f0edb244069d3b772adeb04fed38d0a0af"
integrity sha512-ecORCqbSFP7Wm8Y6lyqMJjexBQqXSF7SSeaTyGGphogUjBlFP9m9o08wy86HL2uB7fMTxtOUzLMk7ogKcxMg1w==
+colorette@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.4.0.tgz#5190fbb87276259a86ad700bff2c6d6faa3fca40"
+ integrity sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==
+
colors@^1.1.2:
version "1.4.0"
resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78"
@@ -3215,7 +3233,7 @@ commander@^6.2.0:
resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c"
integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==
-commander@^7.0.0:
+commander@^7.0.0, commander@^7.2.0:
version "7.2.0"
resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7"
integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==
@@ -3499,6 +3517,17 @@ cosmiconfig@^5.0.0:
js-yaml "^3.13.1"
parse-json "^4.0.0"
+cosmiconfig@^7.0.0:
+ version "7.0.1"
+ resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.1.tgz#714d756522cace867867ccb4474c5d01bbae5d6d"
+ integrity sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==
+ dependencies:
+ "@types/parse-json" "^4.0.0"
+ import-fresh "^3.2.1"
+ parse-json "^5.0.0"
+ path-type "^4.0.0"
+ yaml "^1.10.0"
+
create-react-context@^0.3.0:
version "0.3.0"
resolved "https://registry.yarnpkg.com/create-react-context/-/create-react-context-0.3.0.tgz#546dede9dc422def0d3fc2fe03afe0bc0f4f7d8c"
@@ -3744,7 +3773,7 @@ debug@^4.1.0:
dependencies:
ms "^2.1.1"
-debug@^4.3.2:
+debug@^4.3.1, debug@^4.3.2:
version "4.3.2"
resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b"
integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==
@@ -4282,6 +4311,13 @@ eslint-module-utils@^2.6.0:
debug "^2.6.9"
pkg-dir "^2.0.0"
+eslint-plugin-cypress@^2.12.1:
+ version "2.12.1"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-cypress/-/eslint-plugin-cypress-2.12.1.tgz#9aeee700708ca8c058e00cdafe215199918c2632"
+ integrity sha512-c2W/uPADl5kospNDihgiLc7n87t5XhUbFDoTl6CfVkmG+kDAb5Ux10V9PoLPu9N+r7znpc+iQlcmAqT1A/89HA==
+ dependencies:
+ globals "^11.12.0"
+
eslint-plugin-import@^2.22.1:
version "2.22.1"
resolved "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.22.1.tgz#0896c7e6a0cf44109a2d97b95903c2bb689d7702"
@@ -4990,6 +5026,11 @@ get-intrinsic@^1.0.1, get-intrinsic@^1.0.2:
has "^1.0.3"
has-symbols "^1.0.1"
+get-own-enumerable-property-symbols@^3.0.0:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664"
+ integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==
+
get-package-type@^0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a"
@@ -5160,7 +5201,7 @@ global-dirs@^3.0.0:
dependencies:
ini "2.0.0"
-globals@^11.1.0:
+globals@^11.1.0, globals@^11.12.0:
version "11.12.0"
resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
@@ -5480,6 +5521,11 @@ humanize-duration@^3.25.1:
resolved "https://registry.yarnpkg.com/humanize-duration/-/humanize-duration-3.25.1.tgz#50e12bf4b3f515ec91106107ee981e8cfe955d6f"
integrity sha512-P+dRo48gpLgc2R9tMRgiDRNULPKCmqFYgguwqOO2C0fjO35TgdURDQDANSR1Nt92iHlbHGMxOTnsB8H8xnMa2Q==
+husky@^7.0.2:
+ version "7.0.2"
+ resolved "https://registry.yarnpkg.com/husky/-/husky-7.0.2.tgz#21900da0f30199acca43a46c043c4ad84ae88dff"
+ integrity sha512-8yKEWNX4z2YsofXAMT7KvA1g8p+GxtB1ffV8XtpAEGuXNAbCV5wdNKH+qTpw8SM9fh4aMPDR+yQuKfgnreyZlg==
+
iconv-lite@0.4.24, iconv-lite@^0.4.24:
version "0.4.24"
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
@@ -5519,7 +5565,7 @@ import-fresh@^2.0.0:
caller-path "^2.0.0"
resolve-from "^3.0.0"
-import-fresh@^3.0.0:
+import-fresh@^3.0.0, import-fresh@^3.2.1:
version "3.3.0"
resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b"
integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==
@@ -5899,6 +5945,11 @@ is-number@^7.0.0:
resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
+is-obj@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f"
+ integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8=
+
is-obj@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982"
@@ -5974,6 +6025,11 @@ is-regex@^1.1.0:
dependencies:
has-symbols "^1.0.1"
+is-regexp@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069"
+ integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk=
+
is-stream@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
@@ -6763,6 +6819,39 @@ lines-and-columns@^1.1.6:
resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00"
integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=
+lint-staged@^11.1.2:
+ version "11.1.2"
+ resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-11.1.2.tgz#4dd78782ae43ee6ebf2969cad9af67a46b33cd90"
+ integrity sha512-6lYpNoA9wGqkL6Hew/4n1H6lRqF3qCsujVT0Oq5Z4hiSAM7S6NksPJ3gnr7A7R52xCtiZMcEUNNQ6d6X5Bvh9w==
+ dependencies:
+ chalk "^4.1.1"
+ cli-truncate "^2.1.0"
+ commander "^7.2.0"
+ cosmiconfig "^7.0.0"
+ debug "^4.3.1"
+ enquirer "^2.3.6"
+ execa "^5.0.0"
+ listr2 "^3.8.2"
+ log-symbols "^4.1.0"
+ micromatch "^4.0.4"
+ normalize-path "^3.0.0"
+ please-upgrade-node "^3.2.0"
+ string-argv "0.3.1"
+ stringify-object "^3.3.0"
+
+listr2@^3.8.2:
+ version "3.12.1"
+ resolved "https://registry.yarnpkg.com/listr2/-/listr2-3.12.1.tgz#75e515b86c66b60baf253542cc0dced6b60fedaf"
+ integrity sha512-oB1DlXlCzGPbvWhqYBZUQEPJKqsmebQWofXG6Mpbe3uIvoNl8mctBEojyF13ZyqwQ91clCWXpwsWp+t98K4FOQ==
+ dependencies:
+ cli-truncate "^2.1.0"
+ colorette "^1.4.0"
+ log-update "^4.0.0"
+ p-map "^4.0.0"
+ rxjs "^6.6.7"
+ through "^2.3.8"
+ wrap-ansi "^7.0.0"
+
listr2@^3.8.3:
version "3.11.0"
resolved "https://registry.yarnpkg.com/listr2/-/listr2-3.11.0.tgz#9771b02407875aa78e73d6e0ff6541bbec0aaee9"
@@ -6930,7 +7019,7 @@ log-symbols@^2.2.0:
dependencies:
chalk "^2.0.1"
-log-symbols@^4.0.0:
+log-symbols@^4.0.0, log-symbols@^4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503"
integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==
@@ -7147,6 +7236,14 @@ micromatch@^4.0.2:
braces "^3.0.1"
picomatch "^2.0.5"
+micromatch@^4.0.4:
+ version "4.0.4"
+ resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9"
+ integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==
+ dependencies:
+ braces "^3.0.1"
+ picomatch "^2.2.3"
+
mime-db@1.45.0:
version "1.45.0"
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.45.0.tgz#cceeda21ccd7c3a745eba2decd55d4b73e7879ea"
@@ -7973,6 +8070,11 @@ picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.2.1:
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad"
integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==
+picomatch@^2.2.3:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972"
+ integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==
+
pify@^2.0.0, pify@^2.2.0, pify@^2.3.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
@@ -8028,6 +8130,13 @@ pkg-dir@^4.1.0, pkg-dir@^4.2.0:
dependencies:
find-up "^4.0.0"
+please-upgrade-node@^3.2.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz#aeddd3f994c933e4ad98b99d9a556efa0e2fe942"
+ integrity sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==
+ dependencies:
+ semver-compare "^1.0.0"
+
popper.js@^1.14.4:
version "1.16.1"
resolved "https://registry.yarnpkg.com/popper.js/-/popper.js-1.16.1.tgz#2a223cb3dc7b6213d740e40372be40de43e65b1b"
@@ -9126,6 +9235,11 @@ schema-utils@^3.0.0, schema-utils@^3.1.0:
ajv "^6.12.5"
ajv-keywords "^3.5.2"
+semver-compare@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc"
+ integrity sha1-De4hahyUGrN+nvsXiPavxf9VN/w=
+
"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.6.0, semver@^5.7.0, semver@^5.7.1:
version "5.7.1"
resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
@@ -9494,6 +9608,11 @@ stealthy-require@^1.1.1:
resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b"
integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=
+string-argv@0.3.1:
+ version "0.3.1"
+ resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.1.tgz#95e2fbec0427ae19184935f816d74aaa4c5c19da"
+ integrity sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==
+
string-length@^4.0.1:
version "4.0.1"
resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.1.tgz#4a973bf31ef77c4edbceadd6af2611996985f8a1"
@@ -9589,6 +9708,15 @@ string_decoder@~1.1.1:
dependencies:
safe-buffer "~5.1.0"
+stringify-object@^3.3.0:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629"
+ integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==
+ dependencies:
+ get-own-enumerable-property-symbols "^3.0.0"
+ is-obj "^1.0.1"
+ is-regexp "^1.0.0"
+
strip-ansi@^3.0.0, strip-ansi@^3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
@@ -10524,6 +10652,11 @@ yallist@^4.0.0:
resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
+yaml@^1.10.0:
+ version "1.10.2"
+ resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b"
+ integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==
+
yargs-parser@^18.1.2:
version "18.1.3"
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0"
|