diff --git a/deploy/docker-swarm/docker-compose.ha.yaml b/deploy/docker-swarm/docker-compose.ha.yaml index 9ad2cd558772..cdde64259bf4 100644 --- a/deploy/docker-swarm/docker-compose.ha.yaml +++ b/deploy/docker-swarm/docker-compose.ha.yaml @@ -174,7 +174,7 @@ services: # - ../common/clickhouse/storage.xml:/etc/clickhouse-server/config.d/storage.xml signoz: !!merge <<: *db-depend - image: signoz/signoz:v0.90.1 + image: signoz/signoz:v0.91.0 command: - --config=/root/config/prometheus.yml ports: diff --git a/deploy/docker-swarm/docker-compose.yaml b/deploy/docker-swarm/docker-compose.yaml index 1d9f518d8178..90e94be7a066 100644 --- a/deploy/docker-swarm/docker-compose.yaml +++ b/deploy/docker-swarm/docker-compose.yaml @@ -115,7 +115,7 @@ services: # - ../common/clickhouse/storage.xml:/etc/clickhouse-server/config.d/storage.xml signoz: !!merge <<: *db-depend - image: signoz/signoz:v0.90.1 + image: signoz/signoz:v0.91.0 command: - --config=/root/config/prometheus.yml ports: diff --git a/deploy/docker/docker-compose.ha.yaml b/deploy/docker/docker-compose.ha.yaml index 215b0eed073d..c6c9f6796f33 100644 --- a/deploy/docker/docker-compose.ha.yaml +++ b/deploy/docker/docker-compose.ha.yaml @@ -177,7 +177,7 @@ services: # - ../common/clickhouse/storage.xml:/etc/clickhouse-server/config.d/storage.xml signoz: !!merge <<: *db-depend - image: signoz/signoz:${VERSION:-v0.90.1} + image: signoz/signoz:${VERSION:-v0.91.0} container_name: signoz command: - --config=/root/config/prometheus.yml diff --git a/deploy/docker/docker-compose.yaml b/deploy/docker/docker-compose.yaml index 7bc052176f5c..35db637ef0a8 100644 --- a/deploy/docker/docker-compose.yaml +++ b/deploy/docker/docker-compose.yaml @@ -110,7 +110,7 @@ services: # - ../common/clickhouse/storage.xml:/etc/clickhouse-server/config.d/storage.xml signoz: !!merge <<: *db-depend - image: signoz/signoz:${VERSION:-v0.90.1} + image: signoz/signoz:${VERSION:-v0.91.0} container_name: signoz command: - --config=/root/config/prometheus.yml diff --git a/frontend/package.json b/frontend/package.json index 7356e0bb889d..900e637cadc8 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -235,7 +235,7 @@ "sharp": "^0.33.4", "ts-jest": "^27.1.5", "ts-node": "^10.2.1", - "typescript-plugin-css-modules": "5.0.1", + "typescript-plugin-css-modules": "5.2.0", "webpack-bundle-analyzer": "^4.5.0", "webpack-cli": "^5.1.4" }, @@ -258,7 +258,6 @@ "cookie": "^0.7.1", "serialize-javascript": "6.0.2", "prismjs": "1.30.0", - "got": "11.8.5", - "stylus": "0.0.1-security" + "got": "11.8.5" } } diff --git a/frontend/src/constants/query.ts b/frontend/src/constants/query.ts index 9460602aec3c..656cdb0040f3 100644 --- a/frontend/src/constants/query.ts +++ b/frontend/src/constants/query.ts @@ -47,4 +47,5 @@ export enum QueryParams { destination = 'destination', kindString = 'kindString', tab = 'tab', + thresholds = 'thresholds', } diff --git a/frontend/src/container/CreateAlertRule/AlertRuleDocumentationRedirection.test.tsx b/frontend/src/container/CreateAlertRule/AlertRuleDocumentationRedirection.test.tsx index 1dc088d3d8f0..f7a1b1fb0f07 100644 --- a/frontend/src/container/CreateAlertRule/AlertRuleDocumentationRedirection.test.tsx +++ b/frontend/src/container/CreateAlertRule/AlertRuleDocumentationRedirection.test.tsx @@ -1,4 +1,5 @@ import ROUTES from 'constants/routes'; +import * as usePrefillAlertConditions from 'container/FormAlertRules/usePrefillAlertConditions'; import CreateAlertPage from 'pages/CreateAlert'; import { MemoryRouter, Route } from 'react-router-dom'; import { act, fireEvent, render } from 'tests/test-utils'; @@ -33,6 +34,15 @@ jest.mock('hooks/useSafeNavigate', () => ({ }), })); +jest + .spyOn(usePrefillAlertConditions, 'usePrefillAlertConditions') + .mockReturnValue({ + matchType: '3', + op: '1', + target: 100, + targetUnit: 'rpm', + }); + let mockWindowOpen: jest.Mock; window.ResizeObserver = diff --git a/frontend/src/container/CreateAlertRule/AnomalyAlertDocumentationRedirection.test.tsx b/frontend/src/container/CreateAlertRule/AnomalyAlertDocumentationRedirection.test.tsx index 498595d183ad..783f6f658531 100644 --- a/frontend/src/container/CreateAlertRule/AnomalyAlertDocumentationRedirection.test.tsx +++ b/frontend/src/container/CreateAlertRule/AnomalyAlertDocumentationRedirection.test.tsx @@ -1,4 +1,5 @@ import ROUTES from 'constants/routes'; +import * as usePrefillAlertConditions from 'container/FormAlertRules/usePrefillAlertConditions'; import CreateAlertPage from 'pages/CreateAlert'; import { MemoryRouter, Route } from 'react-router-dom'; import { act, fireEvent, render } from 'tests/test-utils'; @@ -41,6 +42,15 @@ jest.mock('hooks/useSafeNavigate', () => ({ safeNavigate: jest.fn(), }), })); +jest + .spyOn(usePrefillAlertConditions, 'usePrefillAlertConditions') + .mockReturnValue({ + matchType: '3', + op: '1', + target: 100, + targetUnit: 'rpm', + }); + describe('Anomaly Alert Documentation Redirection', () => { let mockWindowOpen: jest.Mock; diff --git a/frontend/src/container/CreateAlertRule/index.tsx b/frontend/src/container/CreateAlertRule/index.tsx index e17f6fe3bb5d..456aef831129 100644 --- a/frontend/src/container/CreateAlertRule/index.tsx +++ b/frontend/src/container/CreateAlertRule/index.tsx @@ -3,6 +3,7 @@ import logEvent from 'api/common/logEvent'; import { ENTITY_VERSION_V4 } from 'constants/app'; import { QueryParams } from 'constants/query'; import FormAlertRules, { AlertDetectionTypes } from 'container/FormAlertRules'; +import { ThresholdProps } from 'container/NewWidget/RightContainer/Threshold/types'; import { useGetCompositeQueryParam } from 'hooks/queryBuilder/useGetCompositeQueryParam'; import history from 'lib/history'; import { useEffect, useState } from 'react'; @@ -32,6 +33,12 @@ function CreateRules(): JSX.Element { ? AlertTypes.ANOMALY_BASED_ALERT : queryParams.get(QueryParams.alertType); + const { thresholds } = (location.state as { + thresholds: ThresholdProps[]; + }) || { + thresholds: null, + }; + const compositeQuery = useGetCompositeQueryParam(); function getAlertTypeFromDataSource(): AlertTypes | null { if (!compositeQuery) { @@ -96,7 +103,9 @@ function CreateRules(): JSX.Element { } const generatedUrl = `${location.pathname}?${queryParams.toString()}`; - history.replace(generatedUrl); + history.replace(generatedUrl, { + thresholds, + }); }; useEffect(() => { diff --git a/frontend/src/container/FormAlertRules/ChannelSelect/index.tsx b/frontend/src/container/FormAlertRules/ChannelSelect/index.tsx index 1dd152a87aa1..fc4134f17a2b 100644 --- a/frontend/src/container/FormAlertRules/ChannelSelect/index.tsx +++ b/frontend/src/container/FormAlertRules/ChannelSelect/index.tsx @@ -48,8 +48,8 @@ function ChannelSelect({ if (hasError) { notifications.error({ - message: error.getErrorCode(), - description: error.getErrorMessage(), + message: error?.getErrorCode?.() || 'Error', + description: error?.getErrorMessage?.() || 'Something went wrong', }); } diff --git a/frontend/src/container/FormAlertRules/FormAlertRules.styles.scss b/frontend/src/container/FormAlertRules/FormAlertRules.styles.scss index 22a272ca93fc..66d2167519f1 100644 --- a/frontend/src/container/FormAlertRules/FormAlertRules.styles.scss +++ b/frontend/src/container/FormAlertRules/FormAlertRules.styles.scss @@ -21,6 +21,24 @@ } } +.form-alert-rules-container { + &.create-mode { + padding: 16px; + } +} + +.triggered-alerts-container { + padding: 8px; +} + +.alert-rules-list-container { + padding: 8px; +} + +.planned-downtime-container { + padding: 8px; +} + .steps-container { width: 80%; } diff --git a/frontend/src/container/FormAlertRules/RuleOptions.tsx b/frontend/src/container/FormAlertRules/RuleOptions.tsx index a30321fcfd77..19f47220f149 100644 --- a/frontend/src/container/FormAlertRules/RuleOptions.tsx +++ b/frontend/src/container/FormAlertRules/RuleOptions.tsx @@ -390,7 +390,7 @@ function RuleOptions({ {ruleType !== AlertDetectionTypes.ANOMALY_DETECTION_ALERT && ( - + ': '1', + '<': '2', + '=': '3', + }, + matchType: { + avg: '3', + sum: '4', + }, +}; + +jest.mock('react-router-dom-v5-compat', () => { + const mockThreshold1 = { + index: '0d11f426-a02e-48da-867c-b79c6ef1ff06', + isEditEnabled: false, + keyIndex: 1, + selectedGraph: 'graph', + thresholdColor: 'Orange', + thresholdFormat: 'Text', + thresholdLabel: 'Caution', + thresholdOperator: '>', + thresholdTableOptions: 'A', + thresholdUnit: 'rpm', + thresholdValue: 800, + }; + const mockThreshold2 = { + index: 'edbe8ef2-fa54-4cb9-b343-7afe883bb714', + isEditEnabled: false, + keyIndex: 0, + selectedGraph: 'graph', + thresholdColor: 'Red', + thresholdFormat: 'Text', + thresholdLabel: 'Danger', + thresholdOperator: '<', + thresholdTableOptions: 'A', + thresholdUnit: 'rpm', + thresholdValue: 900, + }; + return { + ...jest.requireActual('react-router-dom-v5-compat'), + useLocation: jest.fn().mockReturnValue({ + state: { + thresholds: [mockThreshold1, mockThreshold2], + }, + }), + }; +}); + +const mockStagedQuery = { + builder: { + queryData: [ + { + reduceTo: 'avg', + }, + ], + }, +}; + +describe('usePrefillAlertConditions', () => { + it('returns the correct matchType for a single query', () => { + const { result } = renderHook(() => + usePrefillAlertConditions(mockStagedQuery as any), + ); + expect(result.current.matchType).toBe(TEST_MAPPINGS.matchType.avg); + }); + + it('returns null matchType for a single query with unsupported time aggregation', () => { + const { result } = renderHook(() => + usePrefillAlertConditions({ + builder: { queryData: [{ reduceTo: 'p90' }] }, + } as any), + ); + expect(result.current.matchType).toBe(null); + }); + + it('returns the correct matchType for multiple queries with same time aggregation', () => { + const { result } = renderHook(() => + usePrefillAlertConditions({ + builder: { + queryData: [ + { + reduceTo: 'avg', + }, + { + reduceTo: 'avg', + }, + ], + }, + } as any), + ); + expect(result.current.matchType).toBe(TEST_MAPPINGS.matchType.avg); + }); + + it('returns null matchType for multiple queries with different time aggregation', () => { + const { result } = renderHook(() => + usePrefillAlertConditions({ + builder: { + queryData: [ + { + reduceTo: 'avg', + }, + { + reduceTo: 'sum', + }, + ], + }, + } as any), + ); + expect(result.current.matchType).toBe(null); + }); + + it('returns the correct op, target, targetUnit from the higher priority threshold for multiple thresholds', () => { + const { result } = renderHook(() => + usePrefillAlertConditions(mockStagedQuery as any), + ); + expect(result.current.op).toBe(TEST_MAPPINGS.op['<']); + expect(result.current.target).toBe(900); + expect(result.current.targetUnit).toBe('rpm'); + }); +}); diff --git a/frontend/src/container/FormAlertRules/index.tsx b/frontend/src/container/FormAlertRules/index.tsx index 6a56beb05830..38ca8567a1c4 100644 --- a/frontend/src/container/FormAlertRules/index.tsx +++ b/frontend/src/container/FormAlertRules/index.tsx @@ -57,6 +57,7 @@ import { StepContainer, StepHeading, } from './styles'; +import { usePrefillAlertConditions } from './usePrefillAlertConditions'; import { getSelectedQueryOptions } from './utils'; export enum AlertDetectionTypes { @@ -113,6 +114,9 @@ function FormAlertRules({ handleSetConfig, redirectWithQueryBuilderData, } = useQueryBuilder(); + const { matchType, op, target, targetUnit } = usePrefillAlertConditions( + stagedQuery, + ); useEffect(() => { handleSetConfig(panelType || PANEL_TYPES.TIME_SERIES, dataSource); @@ -266,6 +270,13 @@ function FormAlertRules({ ...initialValue, broadcastToAll: !broadcastToSpecificChannels, ruleType, + condition: { + ...initialValue.condition, + matchType: matchType || initialValue.condition.matchType, + op: op || initialValue.condition.op, + target: target || initialValue.condition.target, + targetUnit: targetUnit || initialValue.condition.targetUnit, + }, }); setDetectionMethod(ruleType); @@ -755,7 +766,12 @@ function FormAlertRules({ <> {Element} -
+
{isNewRule && ( diff --git a/frontend/src/container/FormAlertRules/usePrefillAlertConditions.ts b/frontend/src/container/FormAlertRules/usePrefillAlertConditions.ts new file mode 100644 index 000000000000..0827aa40252c --- /dev/null +++ b/frontend/src/container/FormAlertRules/usePrefillAlertConditions.ts @@ -0,0 +1,87 @@ +import { ThresholdProps } from 'container/NewWidget/RightContainer/Threshold/types'; +import { useMemo } from 'react'; +import { useLocation } from 'react-router-dom-v5-compat'; +import { Query } from 'types/api/queryBuilder/queryBuilderData'; + +const THRESHOLD_COLORS_SORTING_ORDER = ['Red', 'Orange', 'Green', 'Blue']; + +export const usePrefillAlertConditions = ( + stagedQuery: Query | null, +): { + matchType: string | null; + op: string | null; + target: number | undefined; + targetUnit: string | undefined; +} => { + const location = useLocation(); + + // Extract and set match type + const reduceTo = useMemo(() => { + if (!stagedQuery) return null; + const isSameTimeAggregation = stagedQuery.builder.queryData.every( + (queryData) => + queryData.reduceTo === stagedQuery.builder.queryData[0].reduceTo, + ); + return isSameTimeAggregation + ? stagedQuery.builder.queryData[0].reduceTo + : null; + }, [stagedQuery]); + + const matchType = useMemo(() => { + switch (reduceTo) { + case 'avg': + return '3'; + case 'sum': + return '4'; + default: + return null; + } + }, [reduceTo]); + + // Extract and set threshold operator, value and unit + const threshold = useMemo(() => { + const { thresholds } = (location.state as { + thresholds: ThresholdProps[]; + }) || { + thresholds: null, + }; + if (!thresholds || thresholds.length === 0) return null; + const sortedThresholds = thresholds.sort((a, b) => { + const aIndex = THRESHOLD_COLORS_SORTING_ORDER.indexOf( + a.thresholdColor || '', + ); + const bIndex = THRESHOLD_COLORS_SORTING_ORDER.indexOf( + b.thresholdColor || '', + ); + return aIndex - bIndex; + }); + return sortedThresholds[0]; + }, [location.state]); + + const thresholdOperator = useMemo(() => { + const op = threshold?.thresholdOperator; + switch (op) { + case '>': + case '>=': + return '1'; + case '<': + case '<=': + return '2'; + case '=': + return '3'; + default: + return null; + } + }, [threshold]); + + const thresholdUnit = useMemo(() => threshold?.thresholdUnit, [threshold]); + + const thresholdValue = useMemo(() => threshold?.thresholdValue, [threshold]); + + return { + matchType, + op: thresholdOperator, + target: thresholdValue, + targetUnit: thresholdUnit, + }; +}; diff --git a/frontend/src/container/InfraMonitoringK8s/commonUtils.tsx b/frontend/src/container/InfraMonitoringK8s/commonUtils.tsx index e61f64e5dbd9..06e051ed669a 100644 --- a/frontend/src/container/InfraMonitoringK8s/commonUtils.tsx +++ b/frontend/src/container/InfraMonitoringK8s/commonUtils.tsx @@ -285,9 +285,13 @@ export const getFiltersFromParams = ( ): IBuilderQuery['filters'] | null => { const filtersFromParams = searchParams.get(queryKey); if (filtersFromParams) { - const decoded = decodeURIComponent(filtersFromParams); - const parsed = JSON.parse(decoded); - return parsed as IBuilderQuery['filters']; + try { + const decoded = decodeURIComponent(filtersFromParams); + const parsed = JSON.parse(decoded); + return parsed as IBuilderQuery['filters']; + } catch (error) { + return null; + } } return null; }; diff --git a/frontend/src/container/ListAlertRules/ListAlert.tsx b/frontend/src/container/ListAlertRules/ListAlert.tsx index fae18d12e9c2..638c210abe93 100644 --- a/frontend/src/container/ListAlertRules/ListAlert.tsx +++ b/frontend/src/container/ListAlertRules/ListAlert.tsx @@ -105,7 +105,7 @@ function ListAlert({ allAlertRules, refetch }: ListAlertProps): JSX.Element { // eslint-disable-next-line react-hooks/exhaustive-deps }, []); - const onEditHandler = (record: GettableAlert) => (): void => { + const onEditHandler = (record: GettableAlert, openInNewTab: boolean): void => { const compositeQuery = mapQueryDataFromApi(record.condition.compositeQuery); params.set( QueryParams.compositeQuery, @@ -117,7 +117,12 @@ function ListAlert({ allAlertRules, refetch }: ListAlertProps): JSX.Element { params.set(QueryParams.ruleId, record.id.toString()); setEditLoader(false); - history.push(`${ROUTES.ALERT_OVERVIEW}?${params.toString()}`); + + if (openInNewTab) { + window.open(`${ROUTES.ALERT_OVERVIEW}?${params.toString()}`, '_blank'); + } else { + history.push(`${ROUTES.ALERT_OVERVIEW}?${params.toString()}`); + } }; const onCloneHandler = ( @@ -250,9 +255,15 @@ function ListAlert({ allAlertRules, refetch }: ListAlertProps): JSX.Element { } return 0; }, - render: (value, record): JSX.Element => ( - {value} - ), + render: (value, record): JSX.Element => { + const onClickHandler = (e: React.MouseEvent): void => { + e.stopPropagation(); + e.preventDefault(); + onEditHandler(record, e.metaKey || e.ctrlKey); + }; + + return {value}; + }, sortOrder: sortedInfo.columnKey === 'name' ? sortedInfo.order : null, }, { @@ -311,12 +322,20 @@ function ListAlert({ allAlertRules, refetch }: ListAlertProps): JSX.Element { />, onEditHandler(record, false)} type="link" loading={editLoader} > Edit , + onEditHandler(record, true)} + type="link" + loading={editLoader} + > + Edit in New Tab + , +
- +
); } diff --git a/frontend/src/container/ListOfDashboard/DashboardsList.tsx b/frontend/src/container/ListOfDashboard/DashboardsList.tsx index d25f58cd2bb4..17310607d89f 100644 --- a/frontend/src/container/ListOfDashboard/DashboardsList.tsx +++ b/frontend/src/container/ListOfDashboard/DashboardsList.tsx @@ -57,6 +57,7 @@ import { Radius, RotateCw, Search, + SquareArrowOutUpRight, } from 'lucide-react'; // #TODO: lucide will be removing brand icons like Github in future, in that case we can use simple icons // see more: https://github.com/lucide-icons/lucide/issues/94 @@ -440,13 +441,7 @@ function DashboardsList(): JSX.Element { placement="left" overlayClassName="title-toolip" > -
{ - e.stopPropagation(); - safeNavigate(getLink()); - }} - > +
dashboard-image View +
), key: 'Configuration', - children: , + children: ( +
+ +
+ ), }, ]; diff --git a/frontend/src/pages/ErrorBoundaryFallback/ErrorBoundaryFallback.styles.scss b/frontend/src/pages/ErrorBoundaryFallback/ErrorBoundaryFallback.styles.scss index 78fd73bf0f60..33f0121b974b 100644 --- a/frontend/src/pages/ErrorBoundaryFallback/ErrorBoundaryFallback.styles.scss +++ b/frontend/src/pages/ErrorBoundaryFallback/ErrorBoundaryFallback.styles.scss @@ -1,10 +1,16 @@ .error-boundary-fallback-container { width: 100%; + height: 100%; - .actionBtn { - display: flex; - align-items: center; - gap: 4px; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + + color: var(--bg-vanilla-100); + + .error-icon { + margin-bottom: 16px; } .title, @@ -13,4 +19,8 @@ align-items: center; gap: 8px; } + + .actions { + margin-top: 16px; + } } diff --git a/frontend/src/pages/ErrorBoundaryFallback/ErrorBoundaryFallback.tsx b/frontend/src/pages/ErrorBoundaryFallback/ErrorBoundaryFallback.tsx index d8ceb5890f56..3bf26e0db1f4 100644 --- a/frontend/src/pages/ErrorBoundaryFallback/ErrorBoundaryFallback.tsx +++ b/frontend/src/pages/ErrorBoundaryFallback/ErrorBoundaryFallback.tsx @@ -1,8 +1,10 @@ import './ErrorBoundaryFallback.styles.scss'; -import { BugOutlined, UndoOutlined } from '@ant-design/icons'; -import { Button, Card, Typography } from 'antd'; +import { BugOutlined } from '@ant-design/icons'; +import { Button, Typography } from 'antd'; +import ROUTES from 'constants/routes'; import Slack from 'container/SideNav/Slack'; +import { Home, TriangleAlert } from 'lucide-react'; import { useTranslation } from 'react-i18next'; function ErrorBoundaryFallback(): JSX.Element { @@ -13,10 +15,14 @@ function ErrorBoundaryFallback(): JSX.Element { }; const handleReload = (): void => { - window.location.reload(); + // Go to home page + window.location.href = ROUTES.HOME; }; return ( - +
+
+ +
@@ -24,30 +30,28 @@ function ErrorBoundaryFallback(): JSX.Element {
- <> -

{t('contact_if_issue_exists')}

+

{t('contact_if_issue_exists')}

-
- +
+ - -
- - + +
+
); } diff --git a/frontend/yarn.lock b/frontend/yarn.lock index c3868c289e1c..a08d50896a61 100644 --- a/frontend/yarn.lock +++ b/frontend/yarn.lock @@ -38,6 +38,11 @@ resolved "https://registry.yarnpkg.com/@adobe/css-tools/-/css-tools-4.3.2.tgz#a6abc715fb6884851fca9dad37fc34739a04fd11" integrity sha512-DA5a1C0gD/pLOvhv33YMrbf2FK3oUzwNl9oOJqE4XVjuEtt6XIakRcsd7eLiOSPkp1kTRQGICTA8cKra/vFbjw== +"@adobe/css-tools@~4.3.1": + version "4.3.3" + resolved "https://registry.yarnpkg.com/@adobe/css-tools/-/css-tools-4.3.3.tgz#90749bde8b89cd41764224f5aac29cd4138f75ff" + integrity sha512-rE0Pygv0sEZ4vBWHlAgJLGDU7Pm8xoO6p3wsEceb7GYAjScrOHpEo8KK/eVkAcnSM+slAEtXjA2JpdjLp4fJQQ== + "@ampproject/remapping@^2.2.0": version "2.2.1" resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.1.tgz#99e8e11851128b8702cd57c33684f1d0f260b630" @@ -3305,6 +3310,95 @@ resolved "https://registry.yarnpkg.com/@open-draft/until/-/until-1.0.3.tgz#db9cc719191a62e7d9200f6e7bab21c5b848adca" integrity sha512-Aq58f5HiWdyDlFffbbSjAlv596h/cOnt2DO1w3DOC7OJ5EHs0hd/nycJfiu9RJbT6Yk6F1knnRRXNSpxoIVZ9Q== +"@parcel/watcher-android-arm64@2.5.1": + version "2.5.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.1.tgz#507f836d7e2042f798c7d07ad19c3546f9848ac1" + integrity sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA== + +"@parcel/watcher-darwin-arm64@2.5.1": + version "2.5.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.1.tgz#3d26dce38de6590ef79c47ec2c55793c06ad4f67" + integrity sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw== + +"@parcel/watcher-darwin-x64@2.5.1": + version "2.5.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.1.tgz#99f3af3869069ccf774e4ddfccf7e64fd2311ef8" + integrity sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg== + +"@parcel/watcher-freebsd-x64@2.5.1": + version "2.5.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.1.tgz#14d6857741a9f51dfe51d5b08b7c8afdbc73ad9b" + integrity sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ== + +"@parcel/watcher-linux-arm-glibc@2.5.1": + version "2.5.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.1.tgz#43c3246d6892381db473bb4f663229ad20b609a1" + integrity sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA== + +"@parcel/watcher-linux-arm-musl@2.5.1": + version "2.5.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.1.tgz#663750f7090bb6278d2210de643eb8a3f780d08e" + integrity sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q== + +"@parcel/watcher-linux-arm64-glibc@2.5.1": + version "2.5.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.1.tgz#ba60e1f56977f7e47cd7e31ad65d15fdcbd07e30" + integrity sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w== + +"@parcel/watcher-linux-arm64-musl@2.5.1": + version "2.5.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.1.tgz#f7fbcdff2f04c526f96eac01f97419a6a99855d2" + integrity sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg== + +"@parcel/watcher-linux-x64-glibc@2.5.1": + version "2.5.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.1.tgz#4d2ea0f633eb1917d83d483392ce6181b6a92e4e" + integrity sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A== + +"@parcel/watcher-linux-x64-musl@2.5.1": + version "2.5.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.1.tgz#277b346b05db54f55657301dd77bdf99d63606ee" + integrity sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg== + +"@parcel/watcher-win32-arm64@2.5.1": + version "2.5.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.1.tgz#7e9e02a26784d47503de1d10e8eab6cceb524243" + integrity sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw== + +"@parcel/watcher-win32-ia32@2.5.1": + version "2.5.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.1.tgz#2d0f94fa59a873cdc584bf7f6b1dc628ddf976e6" + integrity sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ== + +"@parcel/watcher-win32-x64@2.5.1": + version "2.5.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.1.tgz#ae52693259664ba6f2228fa61d7ee44b64ea0947" + integrity sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA== + +"@parcel/watcher@^2.4.1": + version "2.5.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher/-/watcher-2.5.1.tgz#342507a9cfaaf172479a882309def1e991fb1200" + integrity sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg== + dependencies: + detect-libc "^1.0.3" + is-glob "^4.0.3" + micromatch "^4.0.5" + node-addon-api "^7.0.0" + optionalDependencies: + "@parcel/watcher-android-arm64" "2.5.1" + "@parcel/watcher-darwin-arm64" "2.5.1" + "@parcel/watcher-darwin-x64" "2.5.1" + "@parcel/watcher-freebsd-x64" "2.5.1" + "@parcel/watcher-linux-arm-glibc" "2.5.1" + "@parcel/watcher-linux-arm-musl" "2.5.1" + "@parcel/watcher-linux-arm64-glibc" "2.5.1" + "@parcel/watcher-linux-arm64-musl" "2.5.1" + "@parcel/watcher-linux-x64-glibc" "2.5.1" + "@parcel/watcher-linux-x64-musl" "2.5.1" + "@parcel/watcher-win32-arm64" "2.5.1" + "@parcel/watcher-win32-ia32" "2.5.1" + "@parcel/watcher-win32-x64" "2.5.1" + "@petamoriken/float16@^3.4.7": version "3.8.0" resolved "https://registry.npmjs.org/@petamoriken/float16/-/float16-3.8.0.tgz" @@ -4431,17 +4525,17 @@ resolved "https://registry.yarnpkg.com/@types/parse5/-/parse5-6.0.3.tgz#705bb349e789efa06f43f128cef51240753424cb" integrity sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g== -"@types/postcss-modules-local-by-default@^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@types/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz#5c141c9bd3a994ae1ebe23d2ae094b24d19538f5" - integrity sha512-0VLab/pcLTLcfbxi6THSIMVYcw9hEUBGvjwwaGpW77mMgRXfGF+a76t7BxTGyLh1y68tBvrffp8UWnqvm76+yg== +"@types/postcss-modules-local-by-default@^4.0.2": + version "4.0.2" + resolved "https://registry.yarnpkg.com/@types/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.2.tgz#8fee7513dd1558d74713d817c183a33a6dc583f9" + integrity sha512-CtYCcD+L+trB3reJPny+bKWKMzPfxEyQpKIwit7kErnOexf5/faaGpkFy4I5AwbV4hp1sk7/aTg0tt0B67VkLQ== dependencies: postcss "^8.0.0" -"@types/postcss-modules-scope@^3.0.1": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@types/postcss-modules-scope/-/postcss-modules-scope-3.0.1.tgz#f0ad443c2f31f90feacb83bb357692d581388afd" - integrity sha512-LNkp3c4ML9EQj2dgslp4i80Jxj72YK3HjYzrTn6ftUVylW1zaKFGqrMlNIyqBmPWmIhZ/Y5r0Y4T49Hk1IuDUg== +"@types/postcss-modules-scope@^3.0.4": + version "3.0.4" + resolved "https://registry.yarnpkg.com/@types/postcss-modules-scope/-/postcss-modules-scope-3.0.4.tgz#f82d15ec9023c924b531a49e8087b32646233f41" + integrity sha512-//ygSisVq9kVI0sqx3UPLzWIMCmtSVrzdljtuaAEJtGoGnpjBikZ2sXO5MpH9SnWX9HRfXxHifDAXcQjupWnIQ== dependencies: postcss "^8.0.0" @@ -6557,6 +6651,13 @@ chartjs-plugin-annotation@^1.4.0: optionalDependencies: fsevents "~2.3.2" +chokidar@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-4.0.3.tgz#7be37a4c03c9aee1ecfe862a4a23b2c70c205d30" + integrity sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA== + dependencies: + readdirp "^4.0.1" + chrome-trace-event@^1.0.2: version "1.0.3" resolved "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz" @@ -7486,7 +7587,7 @@ debounce@^1.2.1: resolved "https://registry.yarnpkg.com/debounce/-/debounce-1.2.1.tgz#38881d8f4166a5c5848020c11827b834bcb3e0a5" integrity sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug== -debug@2.6.9, debug@4, debug@4.3.4, debug@^3.2.6, debug@^3.2.7, debug@^4.0.0, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.3, debug@^4.3.4, debug@^4.3.6, debug@ngokevin/debug#noTimestamp: +debug@2.6.9, debug@4, debug@4.3.4, debug@^3.2.6, debug@^3.2.7, debug@^4.0.0, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4, debug@^4.3.6, debug@ngokevin/debug#noTimestamp: version "4.3.4" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== @@ -7662,6 +7763,11 @@ destroy@1.2.0: resolved "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz" integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== +detect-libc@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" + integrity sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg== + detect-libc@^2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.4.tgz#f04715b8ba815e53b4d8109655b6508a6865a7e8" @@ -7852,16 +7958,16 @@ dotenv@8.2.0: resolved "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz" integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw== -dotenv@^16.0.3: - version "16.3.1" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.3.1.tgz#369034de7d7e5b120972693352a3bf112172cc3e" - integrity sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ== - dotenv@^16.3.1: version "16.4.5" resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.4.5.tgz#cdd3b3b604cb327e286b4762e13502f717cb099f" integrity sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg== +dotenv@^16.4.2: + version "16.6.1" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.6.1.tgz#773f0e69527a8315c7285d5ee73c4459d20a8020" + integrity sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow== + dtype@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/dtype/-/dtype-2.0.0.tgz" @@ -9122,7 +9228,7 @@ glob-to-regexp@^0.4.1: resolved "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz" integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== -glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: +glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: version "7.2.3" resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== @@ -9892,6 +9998,11 @@ immutable@^4.0.0: resolved "https://registry.npmjs.org/immutable/-/immutable-4.3.0.tgz" integrity sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg== +immutable@^5.0.2: + version "5.1.3" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-5.1.3.tgz#e6486694c8b76c37c063cca92399fa64098634d4" + integrity sha512-+chQdDfvscSF1SJqv2gn4SRO2ZyS3xL3r7IW/wWEEzrzLisnOlKiQu5ytC/BVNcS15C39WT2Hg/bjKjDMcu+zg== + import-fresh@^3.0.0, import-fresh@^3.2.1: version "3.3.0" resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz" @@ -11252,10 +11363,10 @@ less@^4.1.2: needle "^3.1.0" source-map "~0.6.0" -less@^4.1.3: - version "4.2.0" - resolved "https://registry.yarnpkg.com/less/-/less-4.2.0.tgz#cbefbfaa14a4cd388e2099b2b51f956e1465c450" - integrity sha512-P3b3HJDBtSzsXUl0im2L7gTO5Ubg8mEN6G8qoTS77iXxXX4Hvu4Qj540PZDvQ8V6DmX6iXo98k7Md0Cm1PrLaA== +less@^4.2.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/less/-/less-4.4.0.tgz#deaf881f4880ee80691beae925b8fac699d3a76d" + integrity sha512-kdTwsyRuncDfjEs0DlRILWNvxhDG/Zij4YLO4TMJgDLW+8OzpfkdPnRgrsRuY1o+oaxJGWsps5f/RVBgGmmN0w== dependencies: copy-anything "^2.0.1" parse-node-version "^1.0.1" @@ -12554,7 +12665,7 @@ nano-time@1.0.0: dependencies: big-integer "^1.6.16" -nanoid@^3.3.7: +nanoid@^3.3.11, nanoid@^3.3.7: version "3.3.11" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.11.tgz#4f4f112cefbe303202f2199838128936266d185b" integrity sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w== @@ -12637,6 +12748,11 @@ no-case@^3.0.4: lower-case "^2.0.2" tslib "^2.0.3" +node-addon-api@^7.0.0: + version "7.1.1" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-7.1.1.tgz#1aba6693b0f255258a049d621329329322aad558" + integrity sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ== + node-fetch@2.6.7: version "2.6.7" resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz" @@ -13282,7 +13398,7 @@ phin@^2.9.1, phin@^3.7.1: dependencies: centra "^2.7.0" -picocolors@^1.0.0: +picocolors@^1.0.0, picocolors@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== @@ -13473,6 +13589,15 @@ postcss-modules-local-by-default@^4.0.0: postcss-selector-parser "^6.0.2" postcss-value-parser "^4.1.0" +postcss-modules-local-by-default@^4.0.4: + version "4.2.0" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.2.0.tgz#d150f43837831dae25e4085596e84f6f5d6ec368" + integrity sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw== + dependencies: + icss-utils "^5.0.0" + postcss-selector-parser "^7.0.0" + postcss-value-parser "^4.1.0" + postcss-modules-scope@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz#9ef3151456d3bbfa120ca44898dfca6f2fa01f06" @@ -13480,6 +13605,13 @@ postcss-modules-scope@^3.0.0: dependencies: postcss-selector-parser "^6.0.4" +postcss-modules-scope@^3.1.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-3.2.1.tgz#1bbccddcb398f1d7a511e0a2d1d047718af4078c" + integrity sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA== + dependencies: + postcss-selector-parser "^7.0.0" + postcss-modules-values@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz#d7c5e7e68c3bb3c9b27cbf48ca0bb3ffb4602c9c" @@ -13588,6 +13720,14 @@ postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector cssesc "^3.0.0" util-deprecate "^1.0.2" +postcss-selector-parser@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz#4d6af97eba65d73bc4d84bcb343e865d7dd16262" + integrity sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA== + dependencies: + cssesc "^3.0.0" + util-deprecate "^1.0.2" + postcss-svgo@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-6.0.0.tgz#7b18742d38d4505a0455bbe70d52b49f00eaf69d" @@ -13608,7 +13748,7 @@ postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0, postcss-value-parser@^ resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz" integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== -postcss@8.4.38, postcss@^8.0.0, postcss@^8.1.1, postcss@^8.4.21, postcss@^8.4.24: +postcss@8.4.38, postcss@^8.0.0, postcss@^8.1.1, postcss@^8.4.24: version "8.4.38" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.38.tgz#b387d533baf2054288e337066d81c6bee9db9e0e" integrity sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A== @@ -13617,6 +13757,15 @@ postcss@8.4.38, postcss@^8.0.0, postcss@^8.1.1, postcss@^8.4.21, postcss@^8.4.24 picocolors "^1.0.0" source-map-js "^1.2.0" +postcss@^8.4.35: + version "8.5.6" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.6.tgz#2825006615a619b4f62a9e7426cc120b349a8f3c" + integrity sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg== + dependencies: + nanoid "^3.3.11" + picocolors "^1.1.1" + source-map-js "^1.2.1" + posthog-js@1.215.5: version "1.215.5" resolved "https://registry.yarnpkg.com/posthog-js/-/posthog-js-1.215.5.tgz#0512cfdb919da960b809c5f686ca147f9c2922ba" @@ -14710,6 +14859,11 @@ readable-web-to-node-stream@^3.0.0: dependencies: readable-stream "^4.7.0" +readdirp@^4.0.1: + version "4.1.2" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-4.1.2.tgz#eb85801435fbf2a7ee58f19e0921b068fc69948d" + integrity sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg== + readdirp@~3.6.0: version "3.6.0" resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz" @@ -15240,7 +15394,7 @@ sass-loader@13.3.2: dependencies: neo-async "^2.6.2" -sass@1.66.1, sass@^1.58.3: +sass@1.66.1: version "1.66.1" resolved "https://registry.yarnpkg.com/sass/-/sass-1.66.1.tgz#04b51c4671e4650aa393740e66a4e58b44d055b1" integrity sha512-50c+zTsZOJVgFfTgwwEzkjA3/QACgdNsKueWPyAR0mRINIvLAStVQBbPg14iuqEQ74NPDbXzJARJ/O4SI1zftA== @@ -15249,11 +15403,27 @@ sass@1.66.1, sass@^1.58.3: immutable "^4.0.0" source-map-js ">=0.6.2 <2.0.0" +sass@^1.70.0: + version "1.89.2" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.89.2.tgz#a771716aeae774e2b529f72c0ff2dfd46c9de10e" + integrity sha512-xCmtksBKd/jdJ9Bt9p7nPKiuqrlBMBuuGkQlkhZjjQk3Ty48lv93k5Dq6OPkKt4XwxDJ7tvlfrTa1MPA9bf+QA== + dependencies: + chokidar "^4.0.0" + immutable "^5.0.2" + source-map-js ">=0.6.2 <2.0.0" + optionalDependencies: + "@parcel/watcher" "^2.4.1" + sax@>=0.6.0, sax@^1.2.4: version "1.2.4" resolved "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== +sax@~1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.3.0.tgz#a5dbe77db3be05c9d1ee7785dbd3ea9de51593d0" + integrity sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA== + saxes@^5.0.1: version "5.0.1" resolved "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz" @@ -15604,7 +15774,7 @@ sort-object@^0.3.2: resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz" integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== -source-map-js@^1.2.0: +source-map-js@^1.2.0, source-map-js@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46" integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== @@ -16016,10 +16186,16 @@ stylis@^4.3.0: resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.3.4.tgz#ca5c6c4a35c4784e4e93a2a24dc4e9fa075250a4" integrity sha512-osIBl6BGUmSfDkyH2mB7EFvCJntXDrLhKjHTRj/rK6xLH0yuPrHULDRQzKokSOD4VoorhtKpfcfW1GAntu8now== -stylus@0.0.1-security, stylus@^0.59.0: - version "0.0.1-security" - resolved "https://registry.yarnpkg.com/stylus/-/stylus-0.0.1-security.tgz#7fbf8df07e6c1202fce29d57fed2ecbf960e6a3b" - integrity sha512-qTLX5NJwuj5dqdJyi1eAjXGE4HfjWDoPLbSIpYWn/rAEdiyZnsngS/Yj0BRjM7wC41e/+spK4QCXFqz7LM0fFQ== +stylus@^0.62.0: + version "0.62.0" + resolved "https://registry.yarnpkg.com/stylus/-/stylus-0.62.0.tgz#648a020e2bf90ed87587ab9c2f012757e977bb5d" + integrity sha512-v3YCf31atbwJQIMtPNX8hcQ+okD4NQaTuKGUWfII8eaqn+3otrbttGL1zSMZAAtiPsBztQnujVBugg/cXFUpyg== + dependencies: + "@adobe/css-tools" "~4.3.1" + debug "^4.3.2" + glob "^7.1.6" + sax "~1.3.0" + source-map "^0.7.3" super-animejs@^3.1.0: version "3.1.0" @@ -16458,7 +16634,7 @@ tsconfig-paths@^3.14.2, tsconfig-paths@^3.9.0: minimist "^1.2.6" strip-bom "^3.0.0" -tsconfig-paths@^4.1.2: +tsconfig-paths@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz#ef78e19039133446d244beac0fd6a1632e2d107c" integrity sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg== @@ -16619,27 +16795,28 @@ typedarray-to-buffer@^3.1.5: dependencies: is-typedarray "^1.0.0" -typescript-plugin-css-modules@5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/typescript-plugin-css-modules/-/typescript-plugin-css-modules-5.0.1.tgz#cd53a5891d4c8338b1d92936ba8383737a7fcf0e" - integrity sha512-hKXObfwfjx2/myRq4JeQ8D3xIWYTFqusi0hS/Aka7RFX1xQEoEkdOGDWyXNb8LmObawsUzbI30gQnZvqYXCrkA== +typescript-plugin-css-modules@5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/typescript-plugin-css-modules/-/typescript-plugin-css-modules-5.2.0.tgz#b2be2346fbe95374eace207b821a7747b2e2c376" + integrity sha512-c5pAU5d+m3GciDr/WhkFldz1NIEGBafuP/3xhFt9BEXS2gmn/LvjkoZ11vEBIuP8LkXfPNhOt1BUhM5efFuwOw== dependencies: - "@types/postcss-modules-local-by-default" "^4.0.0" - "@types/postcss-modules-scope" "^3.0.1" - dotenv "^16.0.3" + "@types/postcss-modules-local-by-default" "^4.0.2" + "@types/postcss-modules-scope" "^3.0.4" + dotenv "^16.4.2" icss-utils "^5.1.0" - less "^4.1.3" + less "^4.2.0" lodash.camelcase "^4.3.0" - postcss "^8.4.21" + postcss "^8.4.35" postcss-load-config "^3.1.4" postcss-modules-extract-imports "^3.0.0" - postcss-modules-local-by-default "^4.0.0" - postcss-modules-scope "^3.0.0" + postcss-modules-local-by-default "^4.0.4" + postcss-modules-scope "^3.1.1" reserved-words "^0.1.2" - sass "^1.58.3" + sass "^1.70.0" source-map-js "^1.0.2" - stylus "^0.59.0" - tsconfig-paths "^4.1.2" + tsconfig-paths "^4.2.0" + optionalDependencies: + stylus "^0.62.0" typescript@^4.0.5, typescript@^4.4.3: version "4.9.5" diff --git a/pkg/query-service/app/server.go b/pkg/query-service/app/server.go index 14bb1fd46721..7ea724ce1324 100644 --- a/pkg/query-service/app/server.go +++ b/pkg/query-service/app/server.go @@ -88,6 +88,7 @@ func NewServer(config signoz.Config, signoz *signoz.SigNoz, jwt *authtypes.JWT) rm, err := makeRulesManager( reader, signoz.Cache, + signoz.Alertmanager, signoz.SQLStore, signoz.TelemetryStore, signoz.Prometheus, @@ -381,6 +382,7 @@ func (s *Server) Stop(ctx context.Context) error { func makeRulesManager( ch interfaces.Reader, cache cache.Cache, + alertmanager alertmanager.Alertmanager, sqlstore sqlstore.SQLStore, telemetryStore telemetrystore.TelemetryStore, prometheus prometheus.Prometheus, @@ -401,6 +403,7 @@ func makeRulesManager( EvalDelay: constants.GetEvalDelay(), SQLStore: sqlstore, OrgGetter: orgGetter, + Alertmanager: alertmanager, } // create Manager