Alerting: Package 📦 (#102899)

This commit is contained in:
Gilles De Mey
2025-04-24 13:47:24 +02:00
committed by GitHub
parent b487096460
commit 1ffd64ff79
20 changed files with 2453 additions and 97 deletions
+1
View File
@@ -435,6 +435,7 @@
/packages/grafana-ui/src/graveyard/GraphNG/ @grafana/dataviz-squad
/packages/grafana-ui/src/graveyard/TimeSeries/ @grafana/dataviz-squad
/packages/grafana-ui/src/utils/storybook/ @grafana/grafana-frontend-platform
/packages/grafana-alerting/ @grafana/alerting-frontend
# root files, mostly frontend
/.browserslistrc @grafana/frontend-ops
+1
View File
@@ -258,6 +258,7 @@
"@floating-ui/react": "0.27.7",
"@formatjs/intl-durationformat": "^0.7.0",
"@glideapps/glide-data-grid": "^6.0.0",
"@grafana/alerting": "workspace:*",
"@grafana/aws-sdk": "0.6.0",
"@grafana/azure-sdk": "0.0.7",
"@grafana/data": "workspace:*",
+202
View File
@@ -0,0 +1,202 @@
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
+9
View File
@@ -0,0 +1,9 @@
# Grafana Alerting
> **@grafana/alerting is currently in ALPHA**.
This package is a collection of types, libraries, utilities, React components and hooks for interacting with the Grafana alerting system and is meant to be the foundation of alerting-related features in Grafana and its plugins.
We plan to eventually publish this package on NPM; however, it is currently in ALPHA and is not yet ready for public consumption. We are actively working on this package and will be making breaking changes to it as we iterate on the design and implementation.
Once we've settled on a public API that we feel is stable and useful, we will publish this package on NPM and provide documentation on how to use it.
+63
View File
@@ -0,0 +1,63 @@
{
"author": "Grafana Labs",
"license": "Apache-2.0",
"name": "@grafana/alerting",
"version": "12.0.0-pre",
"private": true,
"description": "Grafana Alerting Library Build vertical integrations on top of the industry-leading alerting solution",
"keywords": [
"typescript",
"grafana",
"alerting",
"alertmanager",
"prometheus"
],
"sideEffects": false,
"repository": {
"type": "git",
"url": "http://github.com/grafana/grafana.git",
"directory": "packages/grafana-alerting"
},
"main": "src/index.ts",
"types": "src/index.ts",
"module": "src/index.ts",
"exports": {
".": {
"import": "./src/index.ts",
"require": "./src/index.ts"
},
"./internal": {
"import": "./src/internal.ts",
"require": "./src/internal.ts"
},
"./unstable": {
"import": "./src/unstable.ts",
"require": "./src/unstable.ts"
}
},
"scripts": {
"typecheck": "tsc --emitDeclarationOnly false --noEmit",
"codegen": "yarn run rtk-query-codegen-openapi ./scripts/codegen.ts"
},
"devDependencies": {
"@grafana/tsconfig": "^2.0.0",
"@rtk-query/codegen-openapi": "^2.0.0",
"@types/lodash": "^4",
"@types/react": "18.3.18",
"@types/react-dom": "18.3.5",
"react": "18.3.1",
"react-dom": "18.3.1",
"type-fest": "^4.40.0",
"typescript": "5.7.3"
},
"peerDependencies": {
"@grafana/runtime": "^12.0.0-pre",
"@grafana/ui": "^12.0.0-pre",
"react": "^18.0.0",
"react-dom": "^18.0.0"
},
"dependencies": {
"@reduxjs/toolkit": "^2.7.0",
"lodash": "^4.17.21"
}
}
+6
View File
@@ -0,0 +1,6 @@
{
"$schema": "../../node_modules/nx/schemas/project-schema.json",
"projectType": "library",
"tags": ["scope:package", "type:ui"],
"targets": {}
}
@@ -0,0 +1,21 @@
/**
* This script will generate TypeScript type definitions and a RTKQ client for the alerting k8s APIs.
* It downloads the OpenAPI schema from a running Grafana instance and generates the types.
*
* Run `yarn run codegen` from the "grafana-alerting" package to invoke this script.
*/
import { type ConfigFile } from '@rtk-query/codegen-openapi';
import { resolve } from 'node:path';
// these snapshots are generated by running "go test pkg/tests/apis/openapi_test.go", see the README in the "openapi_snapshots" directory
const OPENAPI_SCHEMA_LOCATION = resolve(
'../../../pkg/tests/apis/openapi_snapshots/notifications.alerting.grafana.app-v0alpha1.json'
);
export default {
exportName: 'alertingAPI',
schemaFile: OPENAPI_SCHEMA_LOCATION,
apiFile: '../src/grafana/api.ts',
outputFile: resolve('../src/grafana/api.gen.ts'),
tag: true,
} satisfies ConfigFile;
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,11 @@
import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react';
const BASE_URL = '/';
export const api = createApi({
reducerPath: 'grafanaAlertingAPI',
baseQuery: fetchBaseQuery({
baseUrl: BASE_URL,
}),
endpoints: () => ({}),
});
@@ -0,0 +1,50 @@
import { chain } from 'lodash';
import { Combobox, ComboboxOption } from '@grafana/ui';
import { useListContactPoints } from '../hooks/useContactPoints';
import { ContactPoint } from '../types';
import { getContactPointDescription } from '../utils';
const collator = new Intl.Collator('en', { sensitivity: 'accent' });
type ContactPointSelectorProps = {
onChange: (contactPoint: ContactPoint) => void;
};
/**
* Contact Point Combobox which lists all available contact points
* @TODO make ComboBox accept a ReactNode so we can use icons and such
*/
function ContactPointSelector({ onChange }: ContactPointSelectorProps) {
const { currentData: contactPoints, isLoading } = useListContactPoints();
// Create a mapping of options with their corresponding contact points
const contactPointOptions = chain(contactPoints?.items)
.toArray()
.map((contactPoint) => ({
option: {
label: contactPoint.spec.title,
value: contactPoint.metadata.uid ?? contactPoint.spec.title,
description: getContactPointDescription(contactPoint),
},
contactPoint,
}))
.value()
.sort((a, b) => collator.compare(a.option.label, b.option.label));
const options = contactPointOptions.map<ComboboxOption>((item) => item.option);
const handleChange = ({ value }: ComboboxOption<string>) => {
const selectedItem = contactPointOptions.find(({ option }) => option.value === value);
if (!selectedItem) {
return;
}
onChange(selectedItem.contactPoint);
};
return <Combobox loading={isLoading} onChange={handleChange} options={options} />;
}
export { ContactPointSelector };
@@ -0,0 +1,29 @@
import { fetchBaseQuery, TypedUseQueryHookResult } from '@reduxjs/toolkit/query/react';
import { config } from '@grafana/runtime';
import { alertingAPI, ListReceiverApiArg } from '../../api.gen';
import { EnhancedListReceiverResponse } from '../types';
const { namespace } = config;
// this is a workaround for the fact that the generated types are not narrow enough
type EnhancedHookResult = TypedUseQueryHookResult<
EnhancedListReceiverResponse,
ListReceiverApiArg,
ReturnType<typeof fetchBaseQuery>
>;
/**
* useListContactPoints is a hook that fetches a list of contact points
*
* This function wraps the alertingAPI.useListReceiverQuery with proper typing
* to ensure that the returned ContactPoints are correctly typed in the data.items array.
*
* It automatically uses the configured namespace for the query.
*/
function useListContactPoints() {
return alertingAPI.useListReceiverQuery<EnhancedHookResult>({ namespace });
}
export { useListContactPoints };
@@ -0,0 +1,76 @@
/**
* This file contains enhanced and type-narrowed versions of the types generated by the RTKQ codegen package.
*/
import { MergeDeep, MergeExclusive, OverrideProperties } from 'type-fest';
import {
ComGithubGrafanaGrafanaAppsAlertingNotificationsPkgApisReceiverV0Alpha1Receiver as ContactPointV0Alpha1,
ComGithubGrafanaGrafanaAppsAlertingNotificationsPkgApisReceiverV0Alpha1Integration as IntegrationV0Alpha1,
ListReceiverApiResponse,
} from '../api.gen';
type GenericIntegration = OverrideProperties<
IntegrationV0Alpha1,
{
settings: Record<string, unknown>;
}
>;
// Based on https://github.com/grafana/alerting/blob/main/receivers/email/config.go#L20-L25
type EmailIntegration = OverrideProperties<
GenericIntegration,
{
type: 'email';
settings: {
singleEmail?: boolean;
addresses: string;
message?: string;
subject?: string;
};
secureFields: never; // email doesn't have any secure fields
}
>;
// Based on https://github.com/grafana/alerting/blob/main/receivers/slack/config.go
type SlackIntegration = OverrideProperties<
GenericIntegration,
{
type: 'slack';
settings: {
endpointUrl?: string;
url?: string;
recipient?: string;
text?: string;
title?: string;
username?: string;
icon_emoji?: string;
icon_url?: string;
mentionChannel?: string;
mentionUsers?: string; // comma separated string
mentionGroups?: string; // comma separated string
color?: string;
};
// secureFields is a union type that can be either a token or a URL but you can't have both
secureFields: MergeExclusive<{ token: string }, { url: string }>;
}
>;
export type Integration = EmailIntegration | SlackIntegration | GenericIntegration;
// Enhanced version of ContactPoint with typed integrations
// ⚠️ MergeDeep does not check if the property you are overriding exists in the base type and there is no "DeepOverrideProperties" helper
export type ContactPoint = MergeDeep<
ContactPointV0Alpha1,
{
spec: {
integrations: Integration[];
};
}
>;
export type EnhancedListReceiverResponse = OverrideProperties<
ListReceiverApiResponse,
{
items: ContactPoint[];
}
>;
@@ -0,0 +1,31 @@
import { countBy, isEmpty } from 'lodash';
import { ContactPoint } from './types';
/**
* Generates a human-readable description of a ContactPoint by summarizing its integrations.
* If the ContactPoint has no integrations, it returns an empty placeholder text.
*
* For integrations, it counts the occurrences of each type and formats them as a comma-separated list.
* Multiple integrations of the same type are indicated with a count in parentheses.
*
* @param contactPoint - The ContactPoint object to describe
* @returns A string description of the ContactPoint's integrations
*/
export function getContactPointDescription(contactPoint: ContactPoint): string {
if (isEmpty(contactPoint.spec.integrations)) {
return '<empty contact point>';
}
// Count the occurrences of each integration type
const integrationCounts = countBy(contactPoint.spec.integrations, (integration) => integration.type);
const description = Object.entries(integrationCounts)
.map(([type, count]) => {
// either "email" or "email (2)" but not "email (1)"
return count > 1 ? `${type} (${count})` : type;
})
.join(', ');
return description;
}
+9
View File
@@ -0,0 +1,9 @@
/**
* Export things here that you want to be available under @grafana/alerting
*
* ⚠️ This implies everything in here is public API and should be considered stable and treated as such make sure to
* think carefully about what you export here and the interfaces / data structures.
*
* Breaking changes should be avoided to maintain backwards compatibility for consumers of this package.
*/
export default {};
@@ -0,0 +1,6 @@
/**
* Export things here that you want to be available under @grafana/alerting/internal
*/
export { alertingAPI } from './grafana/api.gen';
export default {};
@@ -0,0 +1,8 @@
/**
* Export things here that you want to be available under @grafana/alerting/unstable
*/
// Contact Points
export * from './grafana/contactPoints/types';
export { useListContactPoints } from './grafana/contactPoints/hooks/useContactPoints';
export { ContactPointSelector } from './grafana/contactPoints/components/ContactPointSelector';
@@ -0,0 +1,4 @@
{
"exclude": ["dist", "node_modules", "test", "**/*.test.ts*"],
"extends": "./tsconfig.json"
}
+12
View File
@@ -0,0 +1,12 @@
{
"compilerOptions": {
"jsx": "react-jsx",
"declarationDir": "./compiled",
"emitDeclarationOnly": true,
"isolatedModules": true,
"rootDirs": ["."]
},
"exclude": ["dist/**/*"],
"extends": "@grafana/tsconfig",
"include": ["typings/jest", "../../public/app/types/*.d.ts", "../grafana-ui/src/types/*.d.ts", "src/**/*.ts*"]
}
+312 -97
View File
@@ -99,7 +99,7 @@ __metadata:
languageName: node
linkType: hard
"@babel/core@npm:7.26.10, @babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.18.9, @babel/core@npm:^7.22.9":
"@babel/core@npm:7.26.10":
version: 7.26.10
resolution: "@babel/core@npm:7.26.10"
dependencies:
@@ -122,7 +122,43 @@ __metadata:
languageName: node
linkType: hard
"@babel/generator@npm:^7.22.9, @babel/generator@npm:^7.26.10, @babel/generator@npm:^7.27.0, @babel/generator@npm:^7.7.2":
"@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.18.9, @babel/core@npm:^7.22.9":
version: 7.26.9
resolution: "@babel/core@npm:7.26.9"
dependencies:
"@ampproject/remapping": "npm:^2.2.0"
"@babel/code-frame": "npm:^7.26.2"
"@babel/generator": "npm:^7.26.9"
"@babel/helper-compilation-targets": "npm:^7.26.5"
"@babel/helper-module-transforms": "npm:^7.26.0"
"@babel/helpers": "npm:^7.26.9"
"@babel/parser": "npm:^7.26.9"
"@babel/template": "npm:^7.26.9"
"@babel/traverse": "npm:^7.26.9"
"@babel/types": "npm:^7.26.9"
convert-source-map: "npm:^2.0.0"
debug: "npm:^4.1.0"
gensync: "npm:^1.0.0-beta.2"
json5: "npm:^2.2.3"
semver: "npm:^6.3.1"
checksum: 10/ceed199dbe25f286a0a59a2ea7879aed37c1f3bb289375d061eda4752cab2ba365e7f9e969c7fd3b9b95c930493db6eeb5a6d6f017dd135fb5a4503449aad753
languageName: node
linkType: hard
"@babel/generator@npm:^7.22.9, @babel/generator@npm:^7.26.9, @babel/generator@npm:^7.7.2":
version: 7.26.9
resolution: "@babel/generator@npm:7.26.9"
dependencies:
"@babel/parser": "npm:^7.26.9"
"@babel/types": "npm:^7.26.9"
"@jridgewell/gen-mapping": "npm:^0.3.5"
"@jridgewell/trace-mapping": "npm:^0.3.25"
jsesc: "npm:^3.0.2"
checksum: 10/95075dd6158a49efcc71d7f2c5d20194fcf245348de7723ca35e37cd5800587f1d4de2be6c4ba87b5f5fbb967c052543c109eaab14b43f6a73eb05ccd9a5bb44
languageName: node
linkType: hard
"@babel/generator@npm:^7.26.10, @babel/generator@npm:^7.27.0":
version: 7.27.0
resolution: "@babel/generator@npm:7.27.0"
dependencies:
@@ -339,6 +375,16 @@ __metadata:
languageName: node
linkType: hard
"@babel/helpers@npm:^7.26.9":
version: 7.26.9
resolution: "@babel/helpers@npm:7.26.9"
dependencies:
"@babel/template": "npm:^7.26.9"
"@babel/types": "npm:^7.26.9"
checksum: 10/267dfa7d04dff7720610497f466aa7b60652b7ec8dde5914527879350c9d655271e892117c5b2f0f083d92d2a8e5e2cf9832d4f98cd7fb72d78f796002af19a1
languageName: node
linkType: hard
"@babel/highlight@npm:^7.25.7":
version: 7.25.9
resolution: "@babel/highlight@npm:7.25.9"
@@ -351,7 +397,18 @@ __metadata:
languageName: node
linkType: hard
"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.26.10, @babel/parser@npm:^7.27.0":
"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.26.9":
version: 7.26.9
resolution: "@babel/parser@npm:7.26.9"
dependencies:
"@babel/types": "npm:^7.26.9"
bin:
parser: ./bin/babel-parser.js
checksum: 10/cb84fe3ba556d6a4360f3373cf7eb0901c46608c8d77330cc1ca021d60f5d6ebb4056a8e7f9dd0ef231923ef1fe69c87b11ce9e160d2252e089a20232a2b942b
languageName: node
linkType: hard
"@babel/parser@npm:^7.26.10, @babel/parser@npm:^7.27.0":
version: 7.27.0
resolution: "@babel/parser@npm:7.27.0"
dependencies:
@@ -1416,7 +1473,7 @@ __metadata:
languageName: node
linkType: hard
"@babel/runtime@npm:7.27.0, @babel/runtime@npm:^7.0.0, @babel/runtime@npm:^7.1.2, @babel/runtime@npm:^7.10.1, @babel/runtime@npm:^7.11.1, @babel/runtime@npm:^7.11.2, @babel/runtime@npm:^7.12.0, @babel/runtime@npm:^7.12.1, @babel/runtime@npm:^7.12.13, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.13.10, @babel/runtime@npm:^7.15.4, @babel/runtime@npm:^7.16.3, @babel/runtime@npm:^7.17.8, @babel/runtime@npm:^7.18.0, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.20.0, @babel/runtime@npm:^7.20.7, @babel/runtime@npm:^7.23.2, @babel/runtime@npm:^7.23.9, @babel/runtime@npm:^7.24.5, @babel/runtime@npm:^7.24.7, @babel/runtime@npm:^7.25.0, @babel/runtime@npm:^7.25.6, @babel/runtime@npm:^7.25.7, @babel/runtime@npm:^7.26.10, @babel/runtime@npm:^7.3.1, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.7.6, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.8.7":
"@babel/runtime@npm:7.27.0, @babel/runtime@npm:^7.0.0, @babel/runtime@npm:^7.1.2, @babel/runtime@npm:^7.10.1, @babel/runtime@npm:^7.11.1, @babel/runtime@npm:^7.11.2, @babel/runtime@npm:^7.12.0, @babel/runtime@npm:^7.12.1, @babel/runtime@npm:^7.12.13, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.13.10, @babel/runtime@npm:^7.15.4, @babel/runtime@npm:^7.16.3, @babel/runtime@npm:^7.17.8, @babel/runtime@npm:^7.18.0, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.20.0, @babel/runtime@npm:^7.20.7, @babel/runtime@npm:^7.23.2, @babel/runtime@npm:^7.23.9, @babel/runtime@npm:^7.24.5, @babel/runtime@npm:^7.24.7, @babel/runtime@npm:^7.25.0, @babel/runtime@npm:^7.25.6, @babel/runtime@npm:^7.25.7, @babel/runtime@npm:^7.3.1, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.7.6, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.8.7":
version: 7.27.0
resolution: "@babel/runtime@npm:7.27.0"
dependencies:
@@ -1425,7 +1482,18 @@ __metadata:
languageName: node
linkType: hard
"@babel/template@npm:^7.22.5, @babel/template@npm:^7.24.7, @babel/template@npm:^7.25.9, @babel/template@npm:^7.26.9, @babel/template@npm:^7.27.0, @babel/template@npm:^7.3.3":
"@babel/template@npm:^7.22.5, @babel/template@npm:^7.24.7, @babel/template@npm:^7.25.9, @babel/template@npm:^7.26.9, @babel/template@npm:^7.3.3":
version: 7.26.9
resolution: "@babel/template@npm:7.26.9"
dependencies:
"@babel/code-frame": "npm:^7.26.2"
"@babel/parser": "npm:^7.26.9"
"@babel/types": "npm:^7.26.9"
checksum: 10/240288cebac95b1cc1cb045ad143365643da0470e905e11731e63280e43480785bd259924f4aea83898ef68e9fa7c176f5f2d1e8b0a059b27966e8ca0b41a1b6
languageName: node
linkType: hard
"@babel/template@npm:^7.27.0":
version: 7.27.0
resolution: "@babel/template@npm:7.27.0"
dependencies:
@@ -1436,7 +1504,22 @@ __metadata:
languageName: node
linkType: hard
"@babel/traverse@npm:^7.18.9, @babel/traverse@npm:^7.22.8, @babel/traverse@npm:^7.25.9, @babel/traverse@npm:^7.26.10, @babel/traverse@npm:^7.26.8":
"@babel/traverse@npm:^7.18.9, @babel/traverse@npm:^7.22.8, @babel/traverse@npm:^7.25.9, @babel/traverse@npm:^7.26.8, @babel/traverse@npm:^7.26.9":
version: 7.26.9
resolution: "@babel/traverse@npm:7.26.9"
dependencies:
"@babel/code-frame": "npm:^7.26.2"
"@babel/generator": "npm:^7.26.9"
"@babel/parser": "npm:^7.26.9"
"@babel/template": "npm:^7.26.9"
"@babel/types": "npm:^7.26.9"
debug: "npm:^4.3.1"
globals: "npm:^11.1.0"
checksum: 10/c16a79522eafa0a7e40eb556bf1e8a3d50dbb0ff943a80f2c06cee2ec7ff87baa0c5d040a5cff574d9bcb3bed05e7d8c6f13b238a931c97267674b02c6cf45b4
languageName: node
linkType: hard
"@babel/traverse@npm:^7.26.10":
version: 7.27.0
resolution: "@babel/traverse@npm:7.27.0"
dependencies:
@@ -1461,6 +1544,16 @@ __metadata:
languageName: node
linkType: hard
"@babel/types@npm:^7.26.9":
version: 7.26.9
resolution: "@babel/types@npm:7.26.9"
dependencies:
"@babel/helper-string-parser": "npm:^7.25.9"
"@babel/helper-validator-identifier": "npm:^7.25.9"
checksum: 10/11b62ea7ed64ef7e39cc9b33852c1084064c3b970ae0eaa5db659241cfb776577d1e68cbff4de438bada885d3a827b52cc0f3746112d8e1bc672bb99a8eb5b56
languageName: node
linkType: hard
"@bcoe/v8-coverage@npm:^0.2.3":
version: 0.2.3
resolution: "@bcoe/v8-coverage@npm:0.2.3"
@@ -2376,15 +2469,15 @@ __metadata:
languageName: node
linkType: hard
"@formatjs/ecma402-abstract@npm:2.3.4":
version: 2.3.4
resolution: "@formatjs/ecma402-abstract@npm:2.3.4"
"@formatjs/ecma402-abstract@npm:2.3.2":
version: 2.3.2
resolution: "@formatjs/ecma402-abstract@npm:2.3.2"
dependencies:
"@formatjs/fast-memoize": "npm:2.2.7"
"@formatjs/intl-localematcher": "npm:0.6.1"
decimal.js: "npm:^10.4.3"
tslib: "npm:^2.8.0"
checksum: 10/573971ffc291096a4b9fcc80b4708124e89bf2e3ac50e0f78b41eb797e9aa1b842f4dc3665e4467a853c738386821769d9e40408a1d25bc73323a1f057a16cf2
"@formatjs/fast-memoize": "npm:2.2.6"
"@formatjs/intl-localematcher": "npm:0.5.10"
decimal.js: "npm:10"
tslib: "npm:2"
checksum: 10/db31d3d9b36033ea11ec905638ac0c1d2282f5bf53c9c06ee1d0ffd924f4bf64030702c92b56261756c4998dfa6235462689d8eda82d5913f2d7cf636a9416ae
languageName: node
linkType: hard
@@ -2397,12 +2490,12 @@ __metadata:
languageName: node
linkType: hard
"@formatjs/fast-memoize@npm:2.2.7":
version: 2.2.7
resolution: "@formatjs/fast-memoize@npm:2.2.7"
"@formatjs/fast-memoize@npm:2.2.6":
version: 2.2.6
resolution: "@formatjs/fast-memoize@npm:2.2.6"
dependencies:
tslib: "npm:^2.8.0"
checksum: 10/e7e6efc677d63a13d99a854305db471b69f64cbfebdcb6dbe507dab9aa7eaae482ca5de86f343c856ca0a2c8f251672bd1f37c572ce14af602c0287378097d43
tslib: "npm:2"
checksum: 10/efa5601dddbd94412ee567d5d067dfd206afa2d08553435f6938e69acba3309b83b9b15021cd30550d5fb93817a53b7691098a11a73f621c2d9318efad49fd76
languageName: node
linkType: hard
@@ -2428,13 +2521,13 @@ __metadata:
linkType: hard
"@formatjs/intl-durationformat@npm:^0.7.0":
version: 0.7.4
resolution: "@formatjs/intl-durationformat@npm:0.7.4"
version: 0.7.2
resolution: "@formatjs/intl-durationformat@npm:0.7.2"
dependencies:
"@formatjs/ecma402-abstract": "npm:2.3.4"
"@formatjs/intl-localematcher": "npm:0.6.1"
tslib: "npm:^2.8.0"
checksum: 10/d62273ecd635475ca91e9b501301f3f396403fa91b584c550734b19b2d194ba1316b27303fed985c1d42ae933d54eb220da6540edfdf376b0d9371ecfd0d4e15
"@formatjs/ecma402-abstract": "npm:2.3.2"
"@formatjs/intl-localematcher": "npm:0.5.10"
tslib: "npm:2"
checksum: 10/863784f3ac51779516fa29c87705af6d4f1b32191a2a48172d2ce16a99e385887a5641703a222ca2b1a0d334e1ab2587be5ef65f48c5ae8a16ba55138356a232
languageName: node
linkType: hard
@@ -2447,12 +2540,12 @@ __metadata:
languageName: node
linkType: hard
"@formatjs/intl-localematcher@npm:0.6.1":
version: 0.6.1
resolution: "@formatjs/intl-localematcher@npm:0.6.1"
"@formatjs/intl-localematcher@npm:0.5.10":
version: 0.5.10
resolution: "@formatjs/intl-localematcher@npm:0.5.10"
dependencies:
tslib: "npm:^2.8.0"
checksum: 10/c7b3bc8395d18670677f207b2fd107561fff5d6394a9b4273c29e0bea920300ec3a2eefead600ebb7761c04a770cada28f78ac059f84d00520bfb57a9db36998
tslib: "npm:2"
checksum: 10/119e36974607d5d3586570db93358c1f316c0736b83acc81dce88468435a9519a9e58a5abe6ed3078ffe40d6b4ad4613c6371e2a39cd570c9b6f561372ffb14d
languageName: node
linkType: hard
@@ -2911,6 +3004,29 @@ __metadata:
languageName: unknown
linkType: soft
"@grafana/alerting@workspace:*, @grafana/alerting@workspace:packages/grafana-alerting":
version: 0.0.0-use.local
resolution: "@grafana/alerting@workspace:packages/grafana-alerting"
dependencies:
"@grafana/tsconfig": "npm:^2.0.0"
"@reduxjs/toolkit": "npm:^2.7.0"
"@rtk-query/codegen-openapi": "npm:^2.0.0"
"@types/lodash": "npm:^4"
"@types/react": "npm:18.3.18"
"@types/react-dom": "npm:18.3.5"
lodash: "npm:^4.17.21"
react: "npm:18.3.1"
react-dom: "npm:18.3.1"
type-fest: "npm:^4.40.0"
typescript: "npm:5.7.3"
peerDependencies:
"@grafana/runtime": ^12.0.0-pre
"@grafana/ui": ^12.0.0-pre
react: ^18.0.0
react-dom: ^18.0.0
languageName: unknown
linkType: soft
"@grafana/async-query-data@npm:0.3.0":
version: 0.3.0
resolution: "@grafana/async-query-data@npm:0.3.0"
@@ -6504,6 +6620,28 @@ __metadata:
languageName: node
linkType: hard
"@reduxjs/toolkit@npm:^2.7.0":
version: 2.7.0
resolution: "@reduxjs/toolkit@npm:2.7.0"
dependencies:
"@standard-schema/spec": "npm:^1.0.0"
"@standard-schema/utils": "npm:^0.3.0"
immer: "npm:^10.0.3"
redux: "npm:^5.0.1"
redux-thunk: "npm:^3.1.0"
reselect: "npm:^5.1.0"
peerDependencies:
react: ^16.9.0 || ^17.0.0 || ^18 || ^19
react-redux: ^7.2.1 || ^8.1.3 || ^9.0.0
peerDependenciesMeta:
react:
optional: true
react-redux:
optional: true
checksum: 10/cc264efc95f9ebeafa469bf1040d106a33768a802e6f46aa678bf9f26822d049c18b5f10864aa8badb2e62febe58e242860256174528e62b09e8f897d32cd182
languageName: node
linkType: hard
"@remix-run/router@npm:1.19.1":
version: 1.19.1
resolution: "@remix-run/router@npm:1.19.1"
@@ -7023,6 +7161,20 @@ __metadata:
languageName: node
linkType: hard
"@standard-schema/spec@npm:^1.0.0":
version: 1.0.0
resolution: "@standard-schema/spec@npm:1.0.0"
checksum: 10/aee780cc1431888ca4b9aba9b24ffc8f3073fc083acc105e3951481478a2f4dc957796931b2da9e2d8329584cf211e4542275f188296c1cdff3ed44fd93a8bc8
languageName: node
linkType: hard
"@standard-schema/utils@npm:^0.3.0":
version: 0.3.0
resolution: "@standard-schema/utils@npm:0.3.0"
checksum: 10/7084f875d322792f2e0a5904009434c8374b9345b09ba89828b68fd56fa3c2b366d35bf340d9e8c72736ef01793c2f70d350c372ed79845dc3566c58d34b4b51
languageName: node
linkType: hard
"@storybook/addon-a11y@npm:^8.6.2":
version: 8.6.2
resolution: "@storybook/addon-a11y@npm:8.6.2"
@@ -7560,6 +7712,20 @@ __metadata:
languageName: node
linkType: hard
"@swagger-api/apidom-ast@npm:^1.0.0-beta.5":
version: 1.0.0-beta.12
resolution: "@swagger-api/apidom-ast@npm:1.0.0-beta.12"
dependencies:
"@babel/runtime-corejs3": "npm:^7.20.7"
"@swagger-api/apidom-error": "npm:^1.0.0-beta.12"
"@types/ramda": "npm:~0.30.0"
ramda: "npm:~0.30.0"
ramda-adjunct: "npm:^5.0.0"
unraw: "npm:^3.0.0"
checksum: 10/adbcdb40d343eb2b18804ba82e3b0059e66fbb9df5fc43d8a968e6b8b80b68356180a430fbf237892b47a40f7713c919023dc4cd9de92b2ae7ff1c717775d30f
languageName: node
linkType: hard
"@swagger-api/apidom-core@npm:>=1.0.0-beta.13 <1.0.0-rc.0, @swagger-api/apidom-core@npm:^1.0.0-beta.30, @swagger-api/apidom-core@npm:^1.0.0-beta.5":
version: 1.0.0-beta.30
resolution: "@swagger-api/apidom-core@npm:1.0.0-beta.30"
@@ -7586,6 +7752,15 @@ __metadata:
languageName: node
linkType: hard
"@swagger-api/apidom-error@npm:^1.0.0-beta.12":
version: 1.0.0-beta.12
resolution: "@swagger-api/apidom-error@npm:1.0.0-beta.12"
dependencies:
"@babel/runtime-corejs3": "npm:^7.20.7"
checksum: 10/644ad779bfb464b3cf1588f2ca230910782e61ca0478a5ec1a40b98a5715d976e59830d2867f3ffe1081e7c820c88d5d72dfce1ea4d3d2d8dcf2f8557b64feab
languageName: node
linkType: hard
"@swagger-api/apidom-json-pointer@npm:>=1.0.0-beta.13 <1.0.0-rc.0, @swagger-api/apidom-json-pointer@npm:^1.0.0-beta.3 <1.0.0-rc.0, @swagger-api/apidom-json-pointer@npm:^1.0.0-beta.30":
version: 1.0.0-beta.30
resolution: "@swagger-api/apidom-json-pointer@npm:1.0.0-beta.30"
@@ -7865,7 +8040,26 @@ __metadata:
languageName: node
linkType: hard
"@swagger-api/apidom-parser-adapter-json@npm:^1.0.0-beta.3 <1.0.0-rc.0, @swagger-api/apidom-parser-adapter-json@npm:^1.0.0-beta.30, @swagger-api/apidom-parser-adapter-json@npm:^1.0.0-beta.5":
"@swagger-api/apidom-parser-adapter-json@npm:^1.0.0-beta.3 <1.0.0-rc.0, @swagger-api/apidom-parser-adapter-json@npm:^1.0.0-beta.5":
version: 1.0.0-beta.5
resolution: "@swagger-api/apidom-parser-adapter-json@npm:1.0.0-beta.5"
dependencies:
"@babel/runtime-corejs3": "npm:^7.20.7"
"@swagger-api/apidom-ast": "npm:^1.0.0-beta.5"
"@swagger-api/apidom-core": "npm:^1.0.0-beta.5"
"@swagger-api/apidom-error": "npm:^1.0.0-beta.5"
"@types/ramda": "npm:~0.30.0"
node-gyp: "npm:latest"
ramda: "npm:~0.30.0"
ramda-adjunct: "npm:^5.0.0"
tree-sitter: "npm:=0.22.1"
tree-sitter-json: "npm:=0.24.8"
web-tree-sitter: "npm:=0.24.5"
checksum: 10/dc28419cbc068f5e2ecc58b0ccf807bb8717625c6043d7661d1488c054617384154d9990d6e5abed52f60209806f5b2a9eb5e20f3cd6d839290e69f6acc5871b
languageName: node
linkType: hard
"@swagger-api/apidom-parser-adapter-json@npm:^1.0.0-beta.30":
version: 1.0.0-beta.30
resolution: "@swagger-api/apidom-parser-adapter-json@npm:1.0.0-beta.30"
dependencies:
@@ -7974,7 +8168,26 @@ __metadata:
languageName: node
linkType: hard
"@swagger-api/apidom-parser-adapter-yaml-1-2@npm:^1.0.0-beta.3 <1.0.0-rc.0, @swagger-api/apidom-parser-adapter-yaml-1-2@npm:^1.0.0-beta.30, @swagger-api/apidom-parser-adapter-yaml-1-2@npm:^1.0.0-beta.5":
"@swagger-api/apidom-parser-adapter-yaml-1-2@npm:^1.0.0-beta.3 <1.0.0-rc.0, @swagger-api/apidom-parser-adapter-yaml-1-2@npm:^1.0.0-beta.5":
version: 1.0.0-beta.5
resolution: "@swagger-api/apidom-parser-adapter-yaml-1-2@npm:1.0.0-beta.5"
dependencies:
"@babel/runtime-corejs3": "npm:^7.20.7"
"@swagger-api/apidom-ast": "npm:^1.0.0-beta.5"
"@swagger-api/apidom-core": "npm:^1.0.0-beta.5"
"@swagger-api/apidom-error": "npm:^1.0.0-beta.5"
"@tree-sitter-grammars/tree-sitter-yaml": "npm:=0.7.0"
"@types/ramda": "npm:~0.30.0"
node-gyp: "npm:latest"
ramda: "npm:~0.30.0"
ramda-adjunct: "npm:^5.0.0"
tree-sitter: "npm:=0.22.1"
web-tree-sitter: "npm:=0.24.5"
checksum: 10/8f14014d18a674447aa1e2fac4251794538f05cd86c79debcbd7cbfa7efaa3403385d292da6f96988b3d9f60b07b81e6cfce7a1bc779240513d6526160f7c116
languageName: node
linkType: hard
"@swagger-api/apidom-parser-adapter-yaml-1-2@npm:^1.0.0-beta.30":
version: 1.0.0-beta.30
resolution: "@swagger-api/apidom-parser-adapter-yaml-1-2@npm:1.0.0-beta.30"
dependencies:
@@ -9394,6 +9607,13 @@ __metadata:
languageName: node
linkType: hard
"@types/lodash@npm:^4":
version: 4.17.16
resolution: "@types/lodash@npm:4.17.16"
checksum: 10/9a8bb7471a7521bd65d528e1bd14f79819a3eeb6f8a35a8a44649a7d773775c0813e93fd93bd32ccf350bb076c0bf02c6d47877c4625f526f6dd4d283c746aec
languageName: node
linkType: hard
"@types/logfmt@npm:^1.2.3":
version: 1.2.6
resolution: "@types/logfmt@npm:1.2.6"
@@ -9898,9 +10118,9 @@ __metadata:
linkType: hard
"@types/symlink-or-copy@npm:^1.2.0":
version: 1.2.2
resolution: "@types/symlink-or-copy@npm:1.2.2"
checksum: 10/fb8fc2a356d1d7ab222bbea772ca6bf1b4a90b1f14ea46c1522643d3afd018f3b938ead7ba04af88175432a07497c02904bf428008505acf8a4745f1bc6e3892
version: 1.2.0
resolution: "@types/symlink-or-copy@npm:1.2.0"
checksum: 10/554d9255387a9da98b685fe74b70d8b123063cf78b8f3be0de2c768cb0f37515d1edb0334be908585d77c6409e79202faf1a66ee8e78bb06ca168a2028d0c3f3
languageName: node
linkType: hard
@@ -11445,13 +11665,6 @@ __metadata:
languageName: node
linkType: hard
"b4a@npm:^1.6.4":
version: 1.6.7
resolution: "b4a@npm:1.6.7"
checksum: 10/1ac056e3bce378d4d3e570e57319360a9d3125ab6916a1921b95bea33d9ee646698ebc75467561fd6fcc80ff697612124c89bb9b95e80db94c6dc23fcb977705
languageName: node
linkType: hard
"babel-jest@npm:29.7.0, babel-jest@npm:^29.7.0":
version: 29.7.0
resolution: "babel-jest@npm:29.7.0"
@@ -11614,13 +11827,6 @@ __metadata:
languageName: node
linkType: hard
"bare-events@npm:^2.2.0":
version: 2.5.4
resolution: "bare-events@npm:2.5.4"
checksum: 10/135ef380b13f554ca2c6905bdbcfac8edae08fce85b7f953fa01f09a9f5b0da6a25e414111659bc9a6118216f0dd1f732016acd11ce91517f2afb26ebeb4b721
languageName: node
linkType: hard
"baron@npm:3.0.3":
version: 3.0.3
resolution: "baron@npm:3.0.3"
@@ -14292,7 +14498,7 @@ __metadata:
languageName: node
linkType: hard
"decimal.js@npm:^10.4.1, decimal.js@npm:^10.4.3":
"decimal.js@npm:10, decimal.js@npm:^10.4.1":
version: 10.5.0
resolution: "decimal.js@npm:10.5.0"
checksum: 10/714d49cf2f2207b268221795ede330e51452b7c451a0c02a770837d2d4faed47d603a729c2aa1d952eb6c4102d999e91c9b952c1aa016db3c5cba9fc8bf4cda2
@@ -14737,13 +14943,13 @@ __metadata:
linkType: hard
"domutils@npm:^3.0.1, domutils@npm:^3.1.0":
version: 3.2.2
resolution: "domutils@npm:3.2.2"
version: 3.1.0
resolution: "domutils@npm:3.1.0"
dependencies:
dom-serializer: "npm:^2.0.0"
domelementtype: "npm:^2.3.0"
domhandler: "npm:^5.0.3"
checksum: 10/2e08842151aa406f50fe5e6d494f4ec73c2373199fa00d1f77b56ec604e566b7f226312ae35ab8160bb7f27a27c7285d574c8044779053e499282ca9198be210
checksum: 10/9a169a6e57ac4c738269a73ab4caf785114ed70e46254139c1bbc8144ac3102aacb28a6149508395ae34aa5d6a40081f4fa5313855dc8319c6d8359866b6dfea
languageName: node
linkType: hard
@@ -16145,7 +16351,7 @@ __metadata:
languageName: node
linkType: hard
"fast-fifo@npm:^1.3.2":
"fast-fifo@npm:^1.1.0":
version: 1.3.2
resolution: "fast-fifo@npm:1.3.2"
checksum: 10/6bfcba3e4df5af7be3332703b69a7898a8ed7020837ec4395bb341bd96cc3a6d86c3f6071dd98da289618cf2234c70d84b2a6f09a33dd6f988b1ff60d8e54275
@@ -16236,11 +16442,11 @@ __metadata:
linkType: hard
"fastq@npm:^1.13.0, fastq@npm:^1.6.0":
version: 1.19.1
resolution: "fastq@npm:1.19.1"
version: 1.17.1
resolution: "fastq@npm:1.17.1"
dependencies:
reusify: "npm:^1.0.4"
checksum: 10/75679dc226316341c4f2a6b618571f51eac96779906faecd8921b984e844d6ae42fabb2df69b1071327d398d5716693ea9c9c8941f64ac9e89ec2032ce59d730
checksum: 10/a443180068b527dd7b3a63dc7f2a47ceca2f3e97b9c00a1efe5538757e6cc4056a3526df94308075d7727561baf09ebaa5b67da8dcbddb913a021c5ae69d1f69
languageName: node
linkType: hard
@@ -17357,6 +17563,7 @@ __metadata:
"@floating-ui/react": "npm:0.27.7"
"@formatjs/intl-durationformat": "npm:^0.7.0"
"@glideapps/glide-data-grid": "npm:^6.0.0"
"@grafana/alerting": "workspace:*"
"@grafana/aws-sdk": "npm:0.6.0"
"@grafana/azure-sdk": "npm:0.0.7"
"@grafana/data": "workspace:*"
@@ -18433,16 +18640,16 @@ __metadata:
linkType: hard
"i18next@npm:^23.5.1 || ^24.2.0, i18next@npm:^24.0.0":
version: 24.2.3
resolution: "i18next@npm:24.2.3"
version: 24.2.2
resolution: "i18next@npm:24.2.2"
dependencies:
"@babel/runtime": "npm:^7.26.10"
"@babel/runtime": "npm:^7.23.2"
peerDependencies:
typescript: ^5
peerDependenciesMeta:
typescript:
optional: true
checksum: 10/6c73d964f2a98b1aa2c2717fe6da66fc265bcbbc5fcd52b2bfff51ff013d30d4f7d7449c4eb7f464d27af43e2e73f2e7f1d46a144d731bd3bdb1385d4c199e4c
checksum: 10/f66ed9e56d9412e59502f5df39163631daf9f1264774732fb21edbd66a528ca7a6b67dc2e2aec95683c6c7956e42c651587a54bd8ee082bd12008880ce6cd326
languageName: node
linkType: hard
@@ -23508,12 +23715,12 @@ __metadata:
linkType: hard
"parse5-htmlparser2-tree-adapter@npm:^7.0.0":
version: 7.1.0
resolution: "parse5-htmlparser2-tree-adapter@npm:7.1.0"
version: 7.0.0
resolution: "parse5-htmlparser2-tree-adapter@npm:7.0.0"
dependencies:
domhandler: "npm:^5.0.3"
domhandler: "npm:^5.0.2"
parse5: "npm:^7.0.0"
checksum: 10/75910af9137451e9c53e1e0d712f7393f484e89e592b1809ee62ad6cedd61b98daeaa5206ff5d9f06778002c91fac311afedde4880e1916fdb44fa71199dae73
checksum: 10/23dbe45fdd338fe726cf5c55b236e1f403aeb0c1b926e18ab8ef0aa580980a25f8492d160fe2ed0ec906c3c8e38b51e68ef5620a3b9460d9458ea78946a3f7c0
languageName: node
linkType: hard
@@ -24708,6 +24915,13 @@ __metadata:
languageName: node
linkType: hard
"queue-tick@npm:^1.0.1":
version: 1.0.1
resolution: "queue-tick@npm:1.0.1"
checksum: 10/f447926c513b64a857906f017a3b350f7d11277e3c8d2a21a42b7998fa1a613d7a829091e12d142bb668905c8f68d8103416c7197856efb0c72fa835b8e254b5
languageName: node
linkType: hard
"queue-typescript@npm:^1.0.1":
version: 1.0.1
resolution: "queue-typescript@npm:1.0.1"
@@ -26606,13 +26820,20 @@ __metadata:
languageName: node
linkType: hard
"resolve.exports@npm:2.0.3, resolve.exports@npm:^2.0.0":
"resolve.exports@npm:2.0.3":
version: 2.0.3
resolution: "resolve.exports@npm:2.0.3"
checksum: 10/536efee0f30a10fac8604e6cdc7844dbc3f4313568d09f06db4f7ed8a5b8aeb8585966fe975083d1f2dfbc87cf5f8bc7ab65a5c23385c14acbb535ca79f8398a
languageName: node
linkType: hard
"resolve.exports@npm:^2.0.0":
version: 2.0.2
resolution: "resolve.exports@npm:2.0.2"
checksum: 10/f1cc0b6680f9a7e0345d783e0547f2a5110d8336b3c2a4227231dd007271ffd331fd722df934f017af90bae0373920ca0d4005da6f76cb3176c8ae426370f893
languageName: node
linkType: hard
"resolve@npm:^1.10.0, resolve@npm:^1.14.2, resolve@npm:^1.19.0, resolve@npm:^1.20.0, resolve@npm:^1.22.1, resolve@npm:^1.22.4, resolve@npm:^1.22.8":
version: 1.22.8
resolution: "resolve@npm:1.22.8"
@@ -27922,11 +28143,11 @@ __metadata:
linkType: hard
"sort-keys@npm:^5.0.0":
version: 5.1.0
resolution: "sort-keys@npm:5.1.0"
version: 5.0.0
resolution: "sort-keys@npm:5.0.0"
dependencies:
is-plain-obj: "npm:^4.0.0"
checksum: 10/d14936082b2fd1efbddb42c1f7ece39acf8c2e54e4bc65b92ee634ffc7a4a955bdfb334f28ce1273c947611c11f8a73711d147dc43922172a782eb4d71b8c3a2
checksum: 10/9c0b7a468312075be03770b260b2cc0e5d55149025e564edaed41c9ff619199698aad6712a6fe4bbc75c541efb081276ac6bbd4cf2723d742f272f7a8fe354f5
languageName: node
linkType: hard
@@ -28315,16 +28536,12 @@ __metadata:
linkType: hard
"streamx@npm:^2.12.0, streamx@npm:^2.12.5, streamx@npm:^2.13.2, streamx@npm:^2.14.0":
version: 2.22.0
resolution: "streamx@npm:2.22.0"
version: 2.15.7
resolution: "streamx@npm:2.15.7"
dependencies:
bare-events: "npm:^2.2.0"
fast-fifo: "npm:^1.3.2"
text-decoder: "npm:^1.1.0"
dependenciesMeta:
bare-events:
optional: true
checksum: 10/9c329bb316e2085e207e471ecd0da18b4ed5b1cfe5cf10e9e7fad3f8f50c6ca1a6a844bdfd9bc7521560b97f229890de82ca162a0e66115300b91a489b1cbefd
fast-fifo: "npm:^1.1.0"
queue-tick: "npm:^1.0.1"
checksum: 10/5f59f49383b41546e87b15ba54970cca262d1eb0826c5b88c4dc5329d18821fed06f92f849da68c764ad91ea05f394518510957371cb0abd3617bdabed465cdb
languageName: node
linkType: hard
@@ -29068,15 +29285,6 @@ __metadata:
languageName: node
linkType: hard
"text-decoder@npm:^1.1.0":
version: 1.2.3
resolution: "text-decoder@npm:1.2.3"
dependencies:
b4a: "npm:^1.6.4"
checksum: 10/bcdec33c0f070aeac38e46e4cafdcd567a58473ed308bdf75260bfbd8f7dc76acbc0b13226afaec4a169d0cb44cec2ab89c57b6395ccf02e941eaebbe19e124a
languageName: node
linkType: hard
"text-extensions@npm:^1.0.0":
version: 1.9.0
resolution: "text-extensions@npm:1.9.0"
@@ -29529,6 +29737,13 @@ __metadata:
languageName: node
linkType: hard
"tslib@npm:2, tslib@npm:2.8.1, tslib@npm:^2.0.0, tslib@npm:^2.0.1, tslib@npm:^2.0.3, tslib@npm:^2.1.0, tslib@npm:^2.3.0, tslib@npm:^2.3.1, tslib@npm:^2.4.0, tslib@npm:^2.4.1, tslib@npm:^2.6.2, tslib@npm:^2.7.0, tslib@npm:^2.8.0":
version: 2.8.1
resolution: "tslib@npm:2.8.1"
checksum: 10/3e2e043d5c2316461cb54e5c7fe02c30ef6dccb3384717ca22ae5c6b5bc95232a6241df19c622d9c73b809bea33b187f6dbc73030963e29950c2141bc32a79f7
languageName: node
linkType: hard
"tslib@npm:2.4.0":
version: 2.4.0
resolution: "tslib@npm:2.4.0"
@@ -29543,13 +29758,6 @@ __metadata:
languageName: node
linkType: hard
"tslib@npm:2.8.1, tslib@npm:^2.0.0, tslib@npm:^2.0.1, tslib@npm:^2.0.3, tslib@npm:^2.1.0, tslib@npm:^2.3.0, tslib@npm:^2.3.1, tslib@npm:^2.4.0, tslib@npm:^2.4.1, tslib@npm:^2.6.2, tslib@npm:^2.7.0, tslib@npm:^2.8.0":
version: 2.8.1
resolution: "tslib@npm:2.8.1"
checksum: 10/3e2e043d5c2316461cb54e5c7fe02c30ef6dccb3384717ca22ae5c6b5bc95232a6241df19c622d9c73b809bea33b187f6dbc73030963e29950c2141bc32a79f7
languageName: node
linkType: hard
"tslib@npm:^1.10.0, tslib@npm:^1.8.1":
version: 1.14.1
resolution: "tslib@npm:1.14.1"
@@ -29681,6 +29889,13 @@ __metadata:
languageName: node
linkType: hard
"type-fest@npm:^4.40.0":
version: 4.40.0
resolution: "type-fest@npm:4.40.0"
checksum: 10/dbca20979d18c6b8c87ca28cd999d9ae6b34e0c54c3a87ac65530a32f7a178d38d3788044a589f47c9fde3f3c81422e7b021ec1455f7242b724a2d9c642ce8b8
languageName: node
linkType: hard
"type-is@npm:~1.6.18":
version: 1.6.18
resolution: "type-is@npm:1.6.18"
@@ -29887,9 +30102,9 @@ __metadata:
linkType: hard
"undici@npm:^6.19.5":
version: 6.21.2
resolution: "undici@npm:6.21.2"
checksum: 10/9cd9ead22599c23aa2a7dfa5b80fa1491bebb294bf1dc64c9c0f90ea4ec8e272a4db2810e2565d65b952249f105523d2929d7cc951f88cf0a1f082143bae8d75
version: 6.19.8
resolution: "undici@npm:6.19.8"
checksum: 10/19ae4ba38b029a664d99fd330935ef59136cf99edb04ed821042f27b5a9e84777265fb744c8a7abc83f2059afb019446c69a4ebef07bbc0ed6b2de8d67ef4090
languageName: node
linkType: hard