Merge pull request #30864 from backstage/blam/kubernetes

`kubernetes`: breaking change to remove support for legacy backend system
This commit is contained in:
Patrik Oldsberg
2025-08-12 17:22:15 +02:00
committed by GitHub
33 changed files with 158 additions and 990 deletions
+7
View File
@@ -0,0 +1,7 @@
---
'@backstage/plugin-kubernetes-backend': minor
---
**BREAKING CHANGE**: Removed support for the legacy backend system. This means that the deprecated `createRouter` and `KubernetesBuilder` and related types have been removed. Please refer to the [relevant documentation](https://backstage.io/docs/features/kubernetes/installation/#adding-kubernetes-backend-plugin) to configure the Kubernetes plugin.
**BREAKING CHANGE**: The deprecated types `AuthenticationStrategy`, `AuthMetadata`, `ClusterDetails`, `CustomResource`, `CustomResourcesByEntity`, `FetchResponseWrapper`, `KubernetesBuilder`, `KubernetesBuilderReturn`, `KubernetesClustersSupplier`, `KubernetesCredential`, `KubernetesEnvironment`, `KubernetesFetcher`, `KubernetesObjectsProvider`, `KubernetesObjectTypes`, `KubernetesServiceLocator`,`ObjectFetchParams`, `ObjectToFetch`,`RouterOptions` and `ServiceLocatorRequestContext` should all now be imported from `@backstage/plugin-kubernetes-node`.
+2 -18
View File
@@ -27,23 +27,8 @@
"directory": "plugins/kubernetes-backend"
},
"license": "Apache-2.0",
"exports": {
".": "./src/index.ts",
"./alpha": "./src/alpha.ts",
"./package.json": "./package.json"
},
"main": "src/index.ts",
"types": "src/index.ts",
"typesVersions": {
"*": {
"alpha": [
"src/alpha.ts"
],
"package.json": [
"package.json"
]
}
},
"files": [
"dist",
"config.d.ts"
@@ -62,7 +47,6 @@
"@aws-sdk/credential-providers": "^3.350.0",
"@aws-sdk/signature-v4": "^3.347.0",
"@azure/identity": "^4.0.0",
"@backstage/backend-common": "^0.25.0",
"@backstage/backend-plugin-api": "workspace:^",
"@backstage/catalog-client": "workspace:^",
"@backstage/catalog-model": "workspace:^",
@@ -79,9 +63,7 @@
"@google-cloud/container": "^5.0.0",
"@jest-mock/express": "^2.0.1",
"@kubernetes/client-node": "1.1.2",
"@types/express": "^4.17.6",
"@types/http-proxy-middleware": "^1.0.0",
"@types/luxon": "^3.0.0",
"compression": "^1.7.4",
"cors": "^2.8.5",
"express": "^4.17.1",
@@ -105,6 +87,8 @@
"@backstage/plugin-permission-backend": "workspace:^",
"@backstage/plugin-permission-backend-module-allow-all-policy": "workspace:^",
"@types/aws4": "^1.5.1",
"@types/express": "^4.17.6",
"@types/luxon": "^3.0.0",
"msw": "^1.0.0",
"supertest": "^7.0.0",
"ws": "^8.18.0"
@@ -1,13 +0,0 @@
## API Report File for "@backstage/plugin-kubernetes-backend"
> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
```ts
import { BackendFeature } from '@backstage/backend-plugin-api';
// @alpha (undocumented)
const _feature: BackendFeature;
export default _feature;
// (No @packageDocumentation comment for this package)
```
+47 -276
View File
@@ -3,147 +3,112 @@
> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
```ts
import { AuthenticationStrategy as AuthenticationStrategy_2 } from '@backstage/plugin-kubernetes-node';
import { AuthMetadata as AuthMetadata_2 } from '@backstage/plugin-kubernetes-node';
import { AuthService } from '@backstage/backend-plugin-api';
import { AuthenticationStrategy } from '@backstage/plugin-kubernetes-node';
import { AuthMetadata } from '@backstage/plugin-kubernetes-node';
import { BackendFeature } from '@backstage/backend-plugin-api';
import { BackstageCredentials } from '@backstage/backend-plugin-api';
import { CatalogApi } from '@backstage/catalog-client';
import { ClusterDetails as ClusterDetails_2 } from '@backstage/plugin-kubernetes-node';
import { ClusterDetails } from '@backstage/plugin-kubernetes-node';
import { Config } from '@backstage/config';
import { CustomResource as CustomResource_2 } from '@backstage/plugin-kubernetes-node';
import { DiscoveryService } from '@backstage/backend-plugin-api';
import { Duration } from 'luxon';
import express from 'express';
import { HttpAuthService } from '@backstage/backend-plugin-api';
import * as k8sAuthTypes from '@backstage/plugin-kubernetes-node';
import { KubernetesClustersSupplier as KubernetesClustersSupplier_2 } from '@backstage/plugin-kubernetes-node';
import { KubernetesCredential as KubernetesCredential_2 } from '@backstage/plugin-kubernetes-node';
import { KubernetesFetcher as KubernetesFetcher_2 } from '@backstage/plugin-kubernetes-node';
import { KubernetesObjectsProvider as KubernetesObjectsProvider_2 } from '@backstage/plugin-kubernetes-node';
import * as k8sTypes from '@backstage/plugin-kubernetes-node';
import { KubernetesClustersSupplier } from '@backstage/plugin-kubernetes-node';
import { KubernetesCredential } from '@backstage/plugin-kubernetes-node';
import { KubernetesRequestAuth } from '@backstage/plugin-kubernetes-common';
import type { KubernetesRequestBody } from '@backstage/plugin-kubernetes-common';
import { KubernetesServiceLocator as KubernetesServiceLocator_2 } from '@backstage/plugin-kubernetes-node';
import { Logger } from 'winston';
import { LoggerService } from '@backstage/backend-plugin-api';
import { ObjectToFetch as ObjectToFetch_2 } from '@backstage/plugin-kubernetes-node';
import { PermissionEvaluator } from '@backstage/plugin-permission-common';
import { ObjectToFetch } from '@backstage/plugin-kubernetes-node';
import { PermissionsService } from '@backstage/backend-plugin-api';
import { RequestHandler } from 'http-proxy-middleware';
import { RootConfigService } from '@backstage/backend-plugin-api';
import { TokenCredential } from '@azure/identity';
// @public (undocumented)
export class AksStrategy implements AuthenticationStrategy_2 {
export class AksStrategy implements AuthenticationStrategy {
// (undocumented)
getCredential(
_: ClusterDetails_2,
_: ClusterDetails,
requestAuth: KubernetesRequestAuth,
): Promise<KubernetesCredential_2>;
): Promise<KubernetesCredential>;
// (undocumented)
presentAuthMetadata(_authMetadata: AuthMetadata_2): AuthMetadata_2;
presentAuthMetadata(_authMetadata: AuthMetadata): AuthMetadata;
// (undocumented)
validateCluster(): Error[];
}
// @public (undocumented)
export class AnonymousStrategy implements AuthenticationStrategy_2 {
export class AnonymousStrategy implements AuthenticationStrategy {
// (undocumented)
getCredential(): Promise<KubernetesCredential_2>;
getCredential(): Promise<KubernetesCredential>;
// (undocumented)
presentAuthMetadata(_authMetadata: AuthMetadata_2): AuthMetadata_2;
presentAuthMetadata(_authMetadata: AuthMetadata): AuthMetadata;
// (undocumented)
validateCluster(): Error[];
}
// @public @deprecated (undocumented)
export type AuthenticationStrategy = k8sAuthTypes.AuthenticationStrategy;
// @public @deprecated (undocumented)
export type AuthMetadata = k8sAuthTypes.AuthMetadata;
// @public (undocumented)
export class AwsIamStrategy implements AuthenticationStrategy_2 {
export class AwsIamStrategy implements AuthenticationStrategy {
constructor(opts: { config: Config });
// (undocumented)
getCredential(
clusterDetails: ClusterDetails_2,
): Promise<KubernetesCredential_2>;
getCredential(clusterDetails: ClusterDetails): Promise<KubernetesCredential>;
// (undocumented)
presentAuthMetadata(_authMetadata: AuthMetadata_2): AuthMetadata_2;
presentAuthMetadata(_authMetadata: AuthMetadata): AuthMetadata;
// (undocumented)
validateCluster(): Error[];
}
// @public (undocumented)
export class AzureIdentityStrategy implements AuthenticationStrategy_2 {
export class AzureIdentityStrategy implements AuthenticationStrategy {
constructor(logger: LoggerService, tokenCredential?: TokenCredential);
// (undocumented)
getCredential(): Promise<KubernetesCredential_2>;
getCredential(): Promise<KubernetesCredential>;
// (undocumented)
presentAuthMetadata(_authMetadata: AuthMetadata_2): AuthMetadata_2;
presentAuthMetadata(_authMetadata: AuthMetadata): AuthMetadata;
// (undocumented)
validateCluster(): Error[];
}
// @public @deprecated (undocumented)
export type ClusterDetails = k8sAuthTypes.ClusterDetails;
// @public @deprecated
export function createRouter(options: RouterOptions): Promise<express.Router>;
// @public @deprecated (undocumented)
export type CustomResource = k8sAuthTypes.CustomResource;
// @public @deprecated (undocumented)
export type CustomResourcesByEntity = k8sAuthTypes.CustomResourcesByEntity;
// @public (undocumented)
export const DEFAULT_OBJECTS: ObjectToFetch_2[];
export const DEFAULT_OBJECTS: ObjectToFetch[];
// @public
export class DispatchStrategy implements AuthenticationStrategy_2 {
export class DispatchStrategy implements AuthenticationStrategy {
constructor(options: DispatchStrategyOptions);
// (undocumented)
getCredential(
clusterDetails: ClusterDetails_2,
clusterDetails: ClusterDetails,
auth: KubernetesRequestAuth,
): Promise<KubernetesCredential_2>;
): Promise<KubernetesCredential>;
// (undocumented)
presentAuthMetadata(_authMetadata: AuthMetadata_2): AuthMetadata_2;
presentAuthMetadata(_authMetadata: AuthMetadata): AuthMetadata;
// (undocumented)
validateCluster(authMetadata: AuthMetadata_2): Error[];
validateCluster(authMetadata: AuthMetadata): Error[];
}
// @public (undocumented)
export type DispatchStrategyOptions = {
authStrategyMap: {
[key: string]: AuthenticationStrategy_2;
[key: string]: AuthenticationStrategy;
};
};
// @public @deprecated (undocumented)
export type FetchResponseWrapper = k8sAuthTypes.FetchResponseWrapper;
// @public (undocumented)
export class GoogleServiceAccountStrategy implements AuthenticationStrategy_2 {
export class GoogleServiceAccountStrategy implements AuthenticationStrategy {
// (undocumented)
getCredential(): Promise<KubernetesCredential_2>;
getCredential(): Promise<KubernetesCredential>;
// (undocumented)
presentAuthMetadata(_authMetadata: AuthMetadata_2): AuthMetadata_2;
presentAuthMetadata(_authMetadata: AuthMetadata): AuthMetadata;
// (undocumented)
validateCluster(): Error[];
}
// @public (undocumented)
export class GoogleStrategy implements AuthenticationStrategy_2 {
export class GoogleStrategy implements AuthenticationStrategy {
// (undocumented)
getCredential(
_: ClusterDetails_2,
_: ClusterDetails,
requestAuth: KubernetesRequestAuth,
): Promise<KubernetesCredential_2>;
): Promise<KubernetesCredential>;
// (undocumented)
presentAuthMetadata(_authMetadata: AuthMetadata_2): AuthMetadata_2;
presentAuthMetadata(_authMetadata: AuthMetadata): AuthMetadata;
// (undocumented)
validateCluster(): Error[];
}
@@ -154,185 +119,22 @@ export const HEADER_KUBERNETES_AUTH: string;
// @public
export const HEADER_KUBERNETES_CLUSTER: string;
// @public @deprecated (undocumented)
export class KubernetesBuilder {
constructor(env: KubernetesEnvironment);
// (undocumented)
addAuthStrategy(key: string, strategy: AuthenticationStrategy_2): this;
// (undocumented)
build(): KubernetesBuilderReturn;
// (undocumented)
protected buildAuthStrategyMap(): {
[key: string]: AuthenticationStrategy_2;
};
// (undocumented)
protected buildCatalogRelationServiceLocator(
clusterSupplier: KubernetesClustersSupplier_2,
): KubernetesServiceLocator_2;
// (undocumented)
protected buildClusterSupplier(
refreshInterval: Duration,
): KubernetesClustersSupplier_2;
// (undocumented)
protected buildCustomResources(): CustomResource_2[];
// (undocumented)
protected buildFetcher(): KubernetesFetcher_2;
// (undocumented)
protected buildHttpServiceLocator(
_clusterSupplier: KubernetesClustersSupplier_2,
): KubernetesServiceLocator_2;
// (undocumented)
protected buildMultiTenantServiceLocator(
clusterSupplier: KubernetesClustersSupplier_2,
): KubernetesServiceLocator_2;
// (undocumented)
protected buildObjectsProvider(
options: KubernetesObjectsProviderOptions,
): KubernetesObjectsProvider_2;
// (undocumented)
protected buildProxy(
logger: LoggerService,
clusterSupplier: KubernetesClustersSupplier_2,
discovery: DiscoveryService,
httpAuth: HttpAuthService,
): KubernetesProxy;
// (undocumented)
protected buildRouter(
objectsProvider: KubernetesObjectsProvider_2,
clusterSupplier: KubernetesClustersSupplier_2,
catalogApi: CatalogApi,
proxy: KubernetesProxy,
permissionApi: PermissionEvaluator,
authService: AuthService,
httpAuth: HttpAuthService,
): express.Router;
// (undocumented)
protected buildServiceLocator(
method: ServiceLocatorMethod,
clusterSupplier: KubernetesClustersSupplier_2,
): KubernetesServiceLocator_2;
// (undocumented)
protected buildSingleTenantServiceLocator(
clusterSupplier: KubernetesClustersSupplier_2,
): KubernetesServiceLocator_2;
// (undocumented)
static createBuilder(env: KubernetesEnvironment): KubernetesBuilder;
// (undocumented)
protected readonly env: KubernetesEnvironment;
// (undocumented)
protected fetchClusterDetails(
clusterSupplier: KubernetesClustersSupplier_2,
options: {
credentials: BackstageCredentials;
},
): Promise<ClusterDetails_2[]>;
// (undocumented)
protected getAuthStrategyMap(): {
[key: string]: AuthenticationStrategy_2;
};
// (undocumented)
protected getClusterSupplier(): KubernetesClustersSupplier_2;
// (undocumented)
protected getFetcher(): KubernetesFetcher_2;
// (undocumented)
protected getObjectsProvider(
options: KubernetesObjectsProviderOptions,
): KubernetesObjectsProvider_2;
// (undocumented)
protected getObjectTypesToFetch(): ObjectToFetch_2[] | undefined;
// (undocumented)
protected getProxy(
logger: LoggerService,
clusterSupplier: KubernetesClustersSupplier_2,
discovery: DiscoveryService,
httpAuth: HttpAuthService,
): KubernetesProxy;
// (undocumented)
protected getServiceLocator(): KubernetesServiceLocator_2;
// (undocumented)
protected getServiceLocatorMethod(): ServiceLocatorMethod;
// (undocumented)
setAuthStrategyMap(authStrategyMap: {
[key: string]: AuthenticationStrategy_2;
}): void;
// (undocumented)
setClusterSupplier(clusterSupplier?: KubernetesClustersSupplier_2): this;
// (undocumented)
setDefaultClusterRefreshInterval(refreshInterval: Duration): this;
// (undocumented)
setFetcher(fetcher?: KubernetesFetcher_2): this;
// (undocumented)
setObjectsProvider(objectsProvider?: KubernetesObjectsProvider_2): this;
// (undocumented)
setProxy(proxy?: KubernetesProxy): this;
// (undocumented)
setServiceLocator(serviceLocator?: KubernetesServiceLocator_2): this;
}
// @public @deprecated
export type KubernetesBuilderReturn = Promise<{
router: express.Router;
clusterSupplier: KubernetesClustersSupplier_2;
customResources: CustomResource_2[];
fetcher: KubernetesFetcher_2;
proxy: KubernetesProxy;
objectsProvider: KubernetesObjectsProvider_2;
serviceLocator: KubernetesServiceLocator_2;
authStrategyMap: {
[key: string]: AuthenticationStrategy_2;
};
}>;
// @public @deprecated (undocumented)
export type KubernetesClustersSupplier =
k8sAuthTypes.KubernetesClustersSupplier;
// @public @deprecated (undocumented)
export type KubernetesCredential = k8sAuthTypes.KubernetesCredential;
// @public @deprecated (undocumented)
export interface KubernetesEnvironment {
// (undocumented)
auth?: AuthService;
// (undocumented)
catalogApi: CatalogApi;
// (undocumented)
config: Config;
// (undocumented)
discovery: DiscoveryService;
// (undocumented)
httpAuth?: HttpAuthService;
// (undocumented)
logger: LoggerService;
// (undocumented)
permissions: PermissionEvaluator;
}
// @public @deprecated (undocumented)
export type KubernetesFetcher = k8sAuthTypes.KubernetesFetcher;
// @public @deprecated (undocumented)
export type KubernetesObjectsProvider = k8sAuthTypes.KubernetesObjectsProvider;
// @public (undocumented)
export interface KubernetesObjectsProviderOptions {
// (undocumented)
config: Config;
// (undocumented)
customResources: k8sAuthTypes.CustomResource[];
customResources: k8sTypes.CustomResource[];
// (undocumented)
fetcher: k8sAuthTypes.KubernetesFetcher;
fetcher: k8sTypes.KubernetesFetcher;
// (undocumented)
logger: LoggerService;
// (undocumented)
objectTypesToFetch?: k8sAuthTypes.ObjectToFetch[];
objectTypesToFetch?: k8sTypes.ObjectToFetch[];
// (undocumented)
serviceLocator: k8sAuthTypes.KubernetesServiceLocator;
serviceLocator: k8sTypes.KubernetesServiceLocator;
}
// @public @deprecated (undocumented)
export type KubernetesObjectTypes = k8sAuthTypes.KubernetesObjectTypes;
// @public
const kubernetesPlugin: BackendFeature;
export default kubernetesPlugin;
@@ -357,58 +159,31 @@ export type KubernetesProxyOptions = {
clusterSupplier: KubernetesClustersSupplier;
authStrategy: AuthenticationStrategy;
discovery: DiscoveryService;
httpAuth?: HttpAuthService;
httpAuth: HttpAuthService;
};
// @public @deprecated (undocumented)
export type KubernetesServiceLocator = k8sAuthTypes.KubernetesServiceLocator;
// @public @deprecated (undocumented)
export type ObjectFetchParams = k8sAuthTypes.ObjectFetchParams;
// @public (undocumented)
export type ObjectsByEntityRequest = KubernetesRequestBody;
// @public @deprecated (undocumented)
export type ObjectToFetch = k8sAuthTypes.ObjectToFetch;
// @public (undocumented)
export class OidcStrategy implements AuthenticationStrategy_2 {
export class OidcStrategy implements AuthenticationStrategy {
// (undocumented)
getCredential(
clusterDetails: ClusterDetails_2,
clusterDetails: ClusterDetails,
authConfig: KubernetesRequestAuth,
): Promise<KubernetesCredential_2>;
): Promise<KubernetesCredential>;
// (undocumented)
presentAuthMetadata(_authMetadata: AuthMetadata_2): AuthMetadata_2;
presentAuthMetadata(_authMetadata: AuthMetadata): AuthMetadata;
// (undocumented)
validateCluster(authMetadata: AuthMetadata_2): Error[];
}
// @public @deprecated (undocumented)
export interface RouterOptions {
// (undocumented)
catalogApi: CatalogApi;
// (undocumented)
clusterSupplier?: KubernetesClustersSupplier;
// (undocumented)
config: RootConfigService;
// (undocumented)
discovery: DiscoveryService;
// (undocumented)
logger: Logger;
// (undocumented)
permissions: PermissionEvaluator;
validateCluster(authMetadata: AuthMetadata): Error[];
}
// @public (undocumented)
export class ServiceAccountStrategy implements AuthenticationStrategy_2 {
export class ServiceAccountStrategy implements AuthenticationStrategy {
// (undocumented)
getCredential(
clusterDetails: ClusterDetails_2,
): Promise<KubernetesCredential_2>;
getCredential(clusterDetails: ClusterDetails): Promise<KubernetesCredential>;
// (undocumented)
presentAuthMetadata(_authMetadata: AuthMetadata_2): AuthMetadata_2;
presentAuthMetadata(_authMetadata: AuthMetadata): AuthMetadata;
// (undocumented)
validateCluster(): Error[];
}
@@ -420,10 +195,6 @@ export type ServiceLocatorMethod =
| 'catalogRelation'
| 'http';
// @public @deprecated (undocumented)
export type ServiceLocatorRequestContext =
k8sAuthTypes.ServiceLocatorRequestContext;
// @public (undocumented)
export type SigningCreds = {
accessKeyId: string | undefined;
-21
View File
@@ -1,21 +0,0 @@
/*
* Copyright 2023 The Backstage Authors
*
* 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.
*/
import { kubernetesPlugin as feature } from './plugin';
/** @alpha */
const _feature = feature;
export default _feature;
@@ -19,8 +19,10 @@ import {
KubernetesRequestAuth,
} from '@backstage/plugin-kubernetes-common';
import { DispatchStrategy } from './DispatchStrategy';
import { ClusterDetails } from '../types';
import { AuthenticationStrategy } from './types';
import {
ClusterDetails,
AuthenticationStrategy,
} from '@backstage/plugin-kubernetes-node';
describe('getCredential', () => {
let strategy: DispatchStrategy;
@@ -23,4 +23,3 @@ export * from './GoogleServiceAccountStrategy';
export * from './DispatchStrategy';
export * from './ServiceAccountStrategy';
export * from './OidcStrategy';
export * from './types';
@@ -1,28 +0,0 @@
/*
* Copyright 2020 The Backstage Authors
*
* 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.
*/
import * as k8sAuthTypes from '@backstage/plugin-kubernetes-node';
// TODO remove this re-export as a breaking change after a couple of releases
/**
* @public @deprecated Import it from \@backstage/plugin-kubernetes-node instead
*/
export type AuthenticationStrategy = k8sAuthTypes.AuthenticationStrategy;
/**
* @public @deprecated Import it from \@backstage/plugin-kubernetes-node instead
*/
export type KubernetesCredential = k8sAuthTypes.KubernetesCredential;
@@ -14,7 +14,6 @@
* limitations under the License.
*/
import '@backstage/backend-common';
import {
ANNOTATION_KUBERNETES_AUTH_PROVIDER,
ANNOTATION_KUBERNETES_AWS_ASSUME_ROLE,
@@ -18,7 +18,10 @@ import {
AuthService,
BackstageCredentials,
} from '@backstage/backend-plugin-api';
import { ClusterDetails, KubernetesClustersSupplier } from '../types/types';
import {
ClusterDetails,
KubernetesClustersSupplier,
} from '@backstage/plugin-kubernetes-node';
import { CATALOG_FILTER_EXISTS, CatalogApi } from '@backstage/catalog-client';
import {
ANNOTATION_KUBERNETES_API_SERVER,
@@ -14,7 +14,6 @@
* limitations under the License.
*/
import '@backstage/backend-common';
import { ConfigReader, Config } from '@backstage/config';
import {
ANNOTATION_KUBERNETES_AUTH_PROVIDER,
@@ -23,7 +22,7 @@ import {
} from '@backstage/plugin-kubernetes-common';
import { ClusterDetails } from '@backstage/plugin-kubernetes-node';
import { ConfigClusterLocator } from './ConfigClusterLocator';
import { AuthenticationStrategy } from '../auth';
import { AuthenticationStrategy } from '@backstage/plugin-kubernetes-node';
describe('ConfigClusterLocator', () => {
let authStrategy: jest.Mocked<AuthenticationStrategy>;
@@ -21,8 +21,11 @@ import {
ANNOTATION_KUBERNETES_AWS_EXTERNAL_ID,
ANNOTATION_KUBERNETES_OIDC_TOKEN_PROVIDER,
} from '@backstage/plugin-kubernetes-common';
import { ClusterDetails, KubernetesClustersSupplier } from '../types/types';
import { AuthenticationStrategy } from '../auth';
import {
ClusterDetails,
KubernetesClustersSupplier,
AuthenticationStrategy,
} from '@backstage/plugin-kubernetes-node';
export class ConfigClusterLocator implements KubernetesClustersSupplier {
private readonly clusterDetails: ClusterDetails[];
@@ -15,7 +15,6 @@
*/
import { ANNOTATION_KUBERNETES_AUTH_PROVIDER } from '@backstage/plugin-kubernetes-common';
import '@backstage/backend-common';
import { ConfigReader, Config } from '@backstage/config';
import { GkeClusterLocator } from './GkeClusterLocator';
import * as container from '@google-cloud/container';
@@ -20,7 +20,10 @@ import { ForwardedError } from '@backstage/errors';
import * as container from '@google-cloud/container';
import { Duration } from 'luxon';
import { runPeriodically } from '../service/runPeriodically';
import { ClusterDetails, KubernetesClustersSupplier } from '../types/types';
import {
ClusterDetails,
KubernetesClustersSupplier,
} from '@backstage/plugin-kubernetes-node';
import packageinfo from '../../package.json';
interface MatchResourceLabelEntry {
@@ -20,10 +20,13 @@ import {
ANNOTATION_KUBERNETES_AUTH_PROVIDER,
} from '@backstage/plugin-kubernetes-common';
import { getCombinedClusterSupplier } from './index';
import { ClusterDetails } from '../types/types';
import { AuthenticationStrategy, DispatchStrategy } from '../auth';
import {
ClusterDetails,
AuthenticationStrategy,
} from '@backstage/plugin-kubernetes-node';
import { mockCredentials, mockServices } from '@backstage/backend-test-utils';
import { catalogServiceMock } from '@backstage/plugin-catalog-node/testUtils';
import { DispatchStrategy } from '../auth';
describe('getCombinedClusterSupplier', () => {
it('should retrieve cluster details from config', async () => {
@@ -17,8 +17,6 @@
import { CatalogApi } from '@backstage/catalog-client';
import { Config } from '@backstage/config';
import { Duration } from 'luxon';
import { ClusterDetails, KubernetesClustersSupplier } from '../types/types';
import { AuthenticationStrategy } from '../auth/types';
import { ConfigClusterLocator } from './ConfigClusterLocator';
import { GkeClusterLocator } from './GkeClusterLocator';
import { CatalogClusterLocator } from './CatalogClusterLocator';
@@ -28,6 +26,11 @@ import {
BackstageCredentials,
LoggerService,
} from '@backstage/backend-plugin-api';
import {
AuthenticationStrategy,
ClusterDetails,
KubernetesClustersSupplier,
} from '@backstage/plugin-kubernetes-node';
class CombinedClustersSupplier implements KubernetesClustersSupplier {
constructor(
@@ -14,8 +14,6 @@
* limitations under the License.
*/
import '@backstage/backend-common';
describe('test', () => {
it('unbreaks the test runner', () => {
expect(true).toBeTruthy();
+1 -2
View File
@@ -20,8 +20,6 @@ import {
} from '@backstage/backend-plugin-api';
import { catalogServiceRef } from '@backstage/plugin-catalog-node/alpha';
import { KubernetesBuilder } from './service';
import {
type AuthenticationStrategy,
kubernetesAuthStrategyExtensionPoint,
@@ -39,6 +37,7 @@ import {
kubernetesServiceLocatorExtensionPoint,
type KubernetesServiceLocatorExtensionPoint,
} from '@backstage/plugin-kubernetes-node';
import { KubernetesBuilder } from './service/KubernetesBuilder';
class ObjectsProvider implements KubernetesObjectsProviderExtensionPoint {
private objectsProvider: KubernetesObjectsProvider | undefined;
@@ -14,9 +14,8 @@
* limitations under the License.
*/
import '@backstage/backend-common';
import { Entity } from '@backstage/catalog-model';
import { ServiceLocatorRequestContext } from '../types/types';
import { ServiceLocatorRequestContext } from '@backstage/plugin-kubernetes-node';
import { MultiTenantServiceLocator } from './MultiTenantServiceLocator';
describe('MultiTenantConfigClusterLocator', () => {
@@ -20,7 +20,7 @@ import {
KubernetesClustersSupplier,
KubernetesServiceLocator,
ServiceLocatorRequestContext,
} from '../types/types';
} from '@backstage/plugin-kubernetes-node';
// This locator assumes that every service is located on every cluster
// Therefore it will always return all clusters provided
@@ -14,9 +14,8 @@
* limitations under the License.
*/
import '@backstage/backend-common';
import { Entity } from '@backstage/catalog-model';
import { ServiceLocatorRequestContext } from '../types/types';
import { ServiceLocatorRequestContext } from '@backstage/plugin-kubernetes-node';
import { SingleTenantServiceLocator } from './SingleTenantServiceLocator';
describe('SingleTenantConfigClusterLocator', () => {
@@ -19,7 +19,7 @@ import {
KubernetesClustersSupplier,
KubernetesServiceLocator,
ServiceLocatorRequestContext,
} from '../types/types';
} from '@backstage/plugin-kubernetes-node';
// This locator assumes that service is located on one cluster
// Therefore it will always return specified cluster provided in backstage.io/kubernetes-cluster annotation
@@ -27,8 +27,8 @@ import {
ClusterDetails,
KubernetesFetcher,
KubernetesServiceLocator,
} from '../types/types';
import { KubernetesCredential } from '../auth/types';
KubernetesCredential,
} from '@backstage/plugin-kubernetes-node';
import {
HEADER_KUBERNETES_CLUSTER,
HEADER_KUBERNETES_AUTH,
@@ -41,7 +41,6 @@ import {
} from '../auth';
import { getCombinedClusterSupplier } from '../cluster-locator';
import { createLegacyAuthAdapters } from '@backstage/backend-common';
import {
AuthService,
BackstageCredentials,
@@ -87,8 +86,8 @@ export interface KubernetesEnvironment {
catalogApi: CatalogApi;
discovery: DiscoveryService;
permissions: PermissionEvaluator;
auth?: AuthService;
httpAuth?: HttpAuthService;
auth: AuthService;
httpAuth: HttpAuthService;
}
/**
@@ -107,10 +106,6 @@ export type KubernetesBuilderReturn = Promise<{
authStrategyMap: { [key: string]: AuthenticationStrategy };
}>;
/**
* @deprecated Please migrate to the new backend system as this will be removed in the future.
* @public
* */
export class KubernetesBuilder {
private clusterSupplier?: KubernetesClustersSupplier;
private defaultClusterRefreshInterval: Duration = Duration.fromObject({
@@ -147,12 +142,6 @@ export class KubernetesBuilder {
} as unknown as KubernetesBuilderReturn;
}
const { auth, httpAuth } = createLegacyAuthAdapters({
auth: this.env.auth,
httpAuth: this.env.httpAuth,
discovery: this.env.discovery,
});
const customResources = this.buildCustomResources();
const fetcher = this.getFetcher();
@@ -165,7 +154,7 @@ export class KubernetesBuilder {
logger,
clusterSupplier,
this.env.discovery,
httpAuth,
this.env.httpAuth,
);
const serviceLocator = this.getServiceLocator();
@@ -185,8 +174,8 @@ export class KubernetesBuilder {
this.env.catalogApi,
proxy,
permissions,
auth,
httpAuth,
this.env.auth,
this.env.httpAuth,
);
return {
@@ -268,14 +257,13 @@ export class KubernetesBuilder {
refreshInterval: Duration,
): KubernetesClustersSupplier {
const config = this.env.config;
const { auth } = createLegacyAuthAdapters(this.env);
this.clusterSupplier = getCombinedClusterSupplier(
config,
this.env.catalogApi,
new DispatchStrategy({ authStrategyMap: this.getAuthStrategyMap() }),
this.env.logger,
refreshInterval,
auth,
this.env.auth,
);
return this.clusterSupplier;
@@ -21,8 +21,8 @@ import {
KubernetesServiceLocator,
ServiceLocatorRequestContext,
ObjectToFetch,
} from '../types/types';
import { KubernetesCredential } from '../auth/types';
KubernetesCredential,
} from '@backstage/plugin-kubernetes-node';
import {
KubernetesFanOutHandler,
DEFAULT_OBJECTS,
@@ -16,7 +16,7 @@
import { ANNOTATION_KUBERNETES_AUTH_PROVIDER } from '@backstage/plugin-kubernetes-common';
import { KubernetesClientBasedFetcher } from './KubernetesFetcher';
import { ObjectToFetch } from '../types/types';
import { ObjectToFetch } from '@backstage/plugin-kubernetes-node';
import {
MockedRequest,
RestContext,
@@ -20,7 +20,7 @@ import {
FetchResponseWrapper,
KubernetesFetcher,
ObjectFetchParams,
} from '../types/types';
} from '@backstage/plugin-kubernetes-node';
import {
ANNOTATION_KUBERNETES_AUTH_PROVIDER,
SERVICEACCOUNT_CA_PATH,
@@ -37,11 +37,11 @@ import { AddressInfo, WebSocket, WebSocketServer } from 'ws';
import { LocalKubectlProxyClusterLocator } from '../cluster-locator/LocalKubectlProxyLocator';
import {
ClusterDetails,
KubernetesClustersSupplier,
AuthenticationStrategy,
AnonymousStrategy,
KubernetesCredential,
} from '../auth';
import { ClusterDetails, KubernetesClustersSupplier } from '../types/types';
} from '@backstage/plugin-kubernetes-node';
import {
APPLICATION_JSON,
HEADER_KUBERNETES_AUTH,
@@ -52,6 +52,7 @@ import {
import type { Request } from 'express';
import { BackstageCredentials } from '@backstage/backend-plugin-api';
import { MiddlewareFactory } from '@backstage/backend-defaults/rootHttpRouter';
import { AnonymousStrategy } from '../auth';
const middleware = MiddlewareFactory.create({
logger: mockServices.logger.mock(),
@@ -78,7 +79,7 @@ describe('KubernetesProxy', () => {
};
const permissionApi = mockServices.permissions();
const mockDisocveryApi = mockServices.discovery.mock();
const mockDiscoveryApi = mockServices.discovery.mock();
registerMswTestHooks(worker);
@@ -153,7 +154,8 @@ describe('KubernetesProxy', () => {
logger,
clusterSupplier,
authStrategy,
discovery: mockDisocveryApi,
discovery: mockDiscoveryApi,
httpAuth: mockServices.httpAuth.mock(),
});
});
@@ -540,7 +542,8 @@ describe('KubernetesProxy', () => {
logger: mockServices.logger.mock(),
clusterSupplier: clusterSupplier,
authStrategy: strategy,
discovery: mockDisocveryApi,
discovery: mockDiscoveryApi,
httpAuth: mockServices.httpAuth.mock(),
});
worker.use(
@@ -662,7 +665,8 @@ describe('KubernetesProxy', () => {
logger: mockServices.logger.mock(),
clusterSupplier: new LocalKubectlProxyClusterLocator(),
authStrategy: new AnonymousStrategy(),
discovery: mockDisocveryApi,
discovery: mockDiscoveryApi,
httpAuth: mockServices.httpAuth.mock(),
});
worker.use(
@@ -31,8 +31,11 @@ import type { Cluster } from '@kubernetes/client-node';
import { createProxyMiddleware, RequestHandler } from 'http-proxy-middleware';
import fs from 'fs-extra';
import { AuthenticationStrategy } from '../auth';
import { ClusterDetails, KubernetesClustersSupplier } from '../types/types';
import {
AuthenticationStrategy,
ClusterDetails,
KubernetesClustersSupplier,
} from '@backstage/plugin-kubernetes-node';
import type { Request } from 'express';
import { IncomingHttpHeaders } from 'http';
@@ -42,7 +45,6 @@ import {
LoggerService,
PermissionsService,
} from '@backstage/backend-plugin-api';
import { createLegacyAuthAdapters } from '@backstage/backend-common';
export const APPLICATION_JSON: string = 'application/json';
@@ -80,7 +82,7 @@ export type KubernetesProxyOptions = {
clusterSupplier: KubernetesClustersSupplier;
authStrategy: AuthenticationStrategy;
discovery: DiscoveryService;
httpAuth?: HttpAuthService;
httpAuth: HttpAuthService;
};
/**
@@ -99,13 +101,7 @@ export class KubernetesProxy {
this.logger = options.logger;
this.clusterSupplier = options.clusterSupplier;
this.authStrategy = options.authStrategy;
const legacy = createLegacyAuthAdapters({
discovery: options.discovery,
httpAuth: options.httpAuth,
});
this.httpAuth = legacy.httpAuth;
this.httpAuth = options.httpAuth;
}
public createRequestHandler(
@@ -14,7 +14,6 @@
* limitations under the License.
*/
export * from './KubernetesBuilder';
export { DEFAULT_OBJECTS } from './KubernetesFanOutHandler';
export {
HEADER_KUBERNETES_CLUSTER,
@@ -25,4 +24,3 @@ export type {
KubernetesProxyCreateRequestHandlerOptions,
KubernetesProxyOptions,
} from './KubernetesProxy';
export * from './router';
@@ -15,44 +15,29 @@
*/
import { Logger } from 'winston';
import { KubernetesClustersSupplier } from '../types/types';
import { KubernetesClustersSupplier } from '@backstage/plugin-kubernetes-node';
import express from 'express';
import { KubernetesBuilder } from './KubernetesBuilder';
import { CatalogApi } from '@backstage/catalog-client';
import { PermissionEvaluator } from '@backstage/plugin-permission-common';
import {
DiscoveryService,
HttpAuthService,
RootConfigService,
AuthService,
} from '@backstage/backend-plugin-api';
/**
* @deprecated Please migrate to the new backend system as this will be removed in the future.
* @public
*/
export interface RouterOptions {
interface RouterOptions {
logger: Logger;
config: RootConfigService;
catalogApi: CatalogApi;
clusterSupplier?: KubernetesClustersSupplier;
discovery: DiscoveryService;
permissions: PermissionEvaluator;
auth: AuthService;
httpAuth: HttpAuthService;
}
/**
* creates and configure a new router for handling the kubernetes backend APIs
* @param options - specifies the options required by this plugin
* @returns a new router
* @deprecated Please migrate to the new backend system as this will be removed in the future.
* ```
* import { KubernetesBuilder } from '@backstage/plugin-kubernetes-backend';
* const { router } = await KubernetesBuilder.createBuilder({
* logger,
* config,
* }).build();
* ```
*
* @public
*/
export async function createRouter(
options: RouterOptions,
): Promise<express.Router> {
@@ -47,73 +47,3 @@ export interface KubernetesObjectsProviderOptions {
* @public
*/
export type ObjectsByEntityRequest = KubernetesRequestBody;
// TODO remove this re-export as a breaking change after a couple of releases
/**
* @public @deprecated Import it from \@backstage/plugin-kubernetes-node instead
*/
export type KubernetesObjectsProvider = k8sTypes.KubernetesObjectsProvider;
/**
* @public @deprecated Import it from \@backstage/plugin-kubernetes-node instead
*/
export type CustomResourcesByEntity = k8sTypes.CustomResourcesByEntity;
/**
* @public
* @deprecated Import it from \@backstage/plugin-kubernetes-node instead
*/
export type AuthMetadata = k8sTypes.AuthMetadata;
/**
* @public
* @deprecated Import it from \@backstage/plugin-kubernetes-node instead
*/
export type ClusterDetails = k8sTypes.ClusterDetails;
/**
* @public
* @deprecated Import it from \@backstage/plugin-kubernetes-node instead
*/
export type KubernetesClustersSupplier = k8sTypes.KubernetesClustersSupplier;
/**
* @public @deprecated Import it from \@backstage/plugin-kubernetes-node instead
*/
export type KubernetesObjectTypes = k8sTypes.KubernetesObjectTypes;
/**
* @public @deprecated Import it from \@backstage/plugin-kubernetes-node instead
*/
export type ObjectToFetch = k8sTypes.ObjectToFetch;
/**
* @public @deprecated Import it from \@backstage/plugin-kubernetes-node instead
*/
export type CustomResource = k8sTypes.CustomResource;
/**
* @public @deprecated Import it from \@backstage/plugin-kubernetes-node instead
*/
export type ObjectFetchParams = k8sTypes.ObjectFetchParams;
/**
* @public @deprecated Import it from \@backstage/plugin-kubernetes-node instead
*/
export type FetchResponseWrapper = k8sTypes.FetchResponseWrapper;
/**
* @public @deprecated Import it from \@backstage/plugin-kubernetes-node instead
*/
export type KubernetesFetcher = k8sTypes.KubernetesFetcher;
/**
* @public @deprecated Import it from \@backstage/plugin-kubernetes-node instead
*/
export type ServiceLocatorRequestContext =
k8sTypes.ServiceLocatorRequestContext;
/**
* @public @deprecated Import it from \@backstage/plugin-kubernetes-node instead
*/
export type KubernetesServiceLocator = k8sTypes.KubernetesServiceLocator;
+33 -474
View File
@@ -2527,83 +2527,6 @@ __metadata:
languageName: unknown
linkType: soft
"@backstage/backend-common@npm:^0.25.0":
version: 0.25.0
resolution: "@backstage/backend-common@npm:0.25.0"
dependencies:
"@aws-sdk/abort-controller": "npm:^3.347.0"
"@aws-sdk/client-codecommit": "npm:^3.350.0"
"@aws-sdk/client-s3": "npm:^3.350.0"
"@aws-sdk/credential-providers": "npm:^3.350.0"
"@aws-sdk/types": "npm:^3.347.0"
"@backstage/backend-dev-utils": "npm:^0.1.5"
"@backstage/backend-plugin-api": "npm:^1.0.0"
"@backstage/cli-common": "npm:^0.1.14"
"@backstage/config": "npm:^1.2.0"
"@backstage/config-loader": "npm:^1.9.1"
"@backstage/errors": "npm:^1.2.4"
"@backstage/integration": "npm:^1.15.0"
"@backstage/integration-aws-node": "npm:^0.1.12"
"@backstage/plugin-auth-node": "npm:^0.5.2"
"@backstage/types": "npm:^1.1.1"
"@google-cloud/storage": "npm:^7.0.0"
"@keyv/memcache": "npm:^1.3.5"
"@keyv/redis": "npm:^2.5.3"
"@kubernetes/client-node": "npm:0.20.0"
"@manypkg/get-packages": "npm:^1.1.3"
"@octokit/rest": "npm:^19.0.3"
"@types/cors": "npm:^2.8.6"
"@types/dockerode": "npm:^3.3.0"
"@types/express": "npm:^4.17.6"
"@types/luxon": "npm:^3.0.0"
"@types/webpack-env": "npm:^1.15.2"
archiver: "npm:^7.0.0"
base64-stream: "npm:^1.0.0"
compression: "npm:^1.7.4"
concat-stream: "npm:^2.0.0"
cors: "npm:^2.8.5"
dockerode: "npm:^4.0.0"
express: "npm:^4.17.1"
express-promise-router: "npm:^4.1.0"
fs-extra: "npm:^11.2.0"
git-url-parse: "npm:^14.0.0"
helmet: "npm:^6.0.0"
isomorphic-git: "npm:^1.23.0"
jose: "npm:^5.0.0"
keyv: "npm:^4.5.2"
knex: "npm:^3.0.0"
lodash: "npm:^4.17.21"
logform: "npm:^2.3.2"
luxon: "npm:^3.0.0"
minimatch: "npm:^9.0.0"
minimist: "npm:^1.2.5"
morgan: "npm:^1.10.0"
mysql2: "npm:^3.0.0"
node-fetch: "npm:^2.7.0"
node-forge: "npm:^1.3.1"
p-limit: "npm:^3.1.0"
path-to-regexp: "npm:^8.0.0"
pg: "npm:^8.11.3"
pg-format: "npm:^1.0.4"
raw-body: "npm:^2.4.1"
selfsigned: "npm:^2.0.0"
stoppable: "npm:^1.1.0"
tar: "npm:^6.1.12"
triple-beam: "npm:^1.4.1"
uuid: "npm:^9.0.0"
winston: "npm:^3.2.1"
winston-transport: "npm:^4.5.0"
yauzl: "npm:^3.0.0"
yn: "npm:^4.0.0"
peerDependencies:
pg-connection-string: ^2.3.0
peerDependenciesMeta:
pg-connection-string:
optional: true
checksum: 10/4db059f9d095e9eed2c0bb887893be0ede063e0a9c5ddd2b99d6a785f2d8a64780740118bc17dd5905a0ee8b4d16ee617fa12f9fa571429887051aa3911489f8
languageName: node
linkType: hard
"@backstage/backend-defaults@workspace:^, @backstage/backend-defaults@workspace:packages/backend-defaults":
version: 0.0.0-use.local
resolution: "@backstage/backend-defaults@workspace:packages/backend-defaults"
@@ -2705,7 +2628,7 @@ __metadata:
languageName: unknown
linkType: soft
"@backstage/backend-dev-utils@npm:^0.1.5, @backstage/backend-dev-utils@workspace:^, @backstage/backend-dev-utils@workspace:packages/backend-dev-utils":
"@backstage/backend-dev-utils@workspace:^, @backstage/backend-dev-utils@workspace:packages/backend-dev-utils":
version: 0.0.0-use.local
resolution: "@backstage/backend-dev-utils@workspace:packages/backend-dev-utils"
dependencies:
@@ -2782,28 +2705,6 @@ __metadata:
languageName: unknown
linkType: soft
"@backstage/backend-plugin-api@npm:^1.0.0, @backstage/backend-plugin-api@npm:^1.1.1, @backstage/backend-plugin-api@npm:^1.4.1":
version: 1.4.1
resolution: "@backstage/backend-plugin-api@npm:1.4.1"
dependencies:
"@backstage/cli-common": "npm:^0.1.15"
"@backstage/config": "npm:^1.3.3"
"@backstage/errors": "npm:^1.2.7"
"@backstage/plugin-auth-node": "npm:^0.6.5"
"@backstage/plugin-permission-common": "npm:^0.9.1"
"@backstage/plugin-permission-node": "npm:^0.10.2"
"@backstage/types": "npm:^1.2.1"
"@types/express": "npm:^4.17.6"
"@types/json-schema": "npm:^7.0.6"
"@types/luxon": "npm:^3.0.0"
json-schema: "npm:^0.4.0"
knex: "npm:^3.0.0"
luxon: "npm:^3.0.0"
zod: "npm:^3.22.4"
checksum: 10/4660bd6e0bdb48257ab058e9709a41ec0484d7c81078d978b45b89793e91f2a5849b6b53efc5b2a588f7ae34099928d75bfc75b72abbda69dd006eb264092f05
languageName: node
linkType: hard
"@backstage/backend-plugin-api@workspace:^, @backstage/backend-plugin-api@workspace:packages/backend-plugin-api":
version: 0.0.0-use.local
resolution: "@backstage/backend-plugin-api@workspace:packages/backend-plugin-api"
@@ -2869,18 +2770,6 @@ __metadata:
languageName: unknown
linkType: soft
"@backstage/catalog-client@npm:^1.10.2, @backstage/catalog-client@npm:^1.9.1":
version: 1.10.2
resolution: "@backstage/catalog-client@npm:1.10.2"
dependencies:
"@backstage/catalog-model": "npm:^1.7.5"
"@backstage/errors": "npm:^1.2.7"
cross-fetch: "npm:^4.0.0"
uri-template: "npm:^2.0.0"
checksum: 10/06a300df1bed6e2933e15342474a3027c258e7523052dd2f0e52faa4d5b720b40c11cc6dd70e7c273357449c0a2177e3ba7ce8c5fa6fd69952a72b417c05914b
languageName: node
linkType: hard
"@backstage/catalog-client@workspace:^, @backstage/catalog-client@workspace:packages/catalog-client":
version: 0.0.0-use.local
resolution: "@backstage/catalog-client@workspace:packages/catalog-client"
@@ -2895,7 +2784,7 @@ __metadata:
languageName: unknown
linkType: soft
"@backstage/catalog-model@npm:^1.7.3, @backstage/catalog-model@npm:^1.7.5, @backstage/catalog-model@workspace:^, @backstage/catalog-model@workspace:packages/catalog-model":
"@backstage/catalog-model@workspace:^, @backstage/catalog-model@workspace:packages/catalog-model":
version: 0.0.0-use.local
resolution: "@backstage/catalog-model@workspace:packages/catalog-model"
dependencies:
@@ -2910,7 +2799,7 @@ __metadata:
languageName: unknown
linkType: soft
"@backstage/cli-common@npm:^0.1.14, @backstage/cli-common@npm:^0.1.15, @backstage/cli-common@workspace:^, @backstage/cli-common@workspace:packages/cli-common":
"@backstage/cli-common@workspace:^, @backstage/cli-common@workspace:packages/cli-common":
version: 0.0.0-use.local
resolution: "@backstage/cli-common@workspace:packages/cli-common"
dependencies:
@@ -3138,7 +3027,7 @@ __metadata:
languageName: unknown
linkType: soft
"@backstage/config-loader@npm:^1.9.1, @backstage/config-loader@workspace:^, @backstage/config-loader@workspace:packages/config-loader":
"@backstage/config-loader@workspace:^, @backstage/config-loader@workspace:packages/config-loader":
version: 0.0.0-use.local
resolution: "@backstage/config-loader@workspace:packages/config-loader"
dependencies:
@@ -3166,7 +3055,7 @@ __metadata:
languageName: unknown
linkType: soft
"@backstage/config@npm:^1.2.0, @backstage/config@npm:^1.3.2, @backstage/config@npm:^1.3.3, @backstage/config@workspace:^, @backstage/config@workspace:packages/config":
"@backstage/config@workspace:^, @backstage/config@workspace:packages/config":
version: 0.0.0-use.local
resolution: "@backstage/config@workspace:packages/config"
dependencies:
@@ -3445,7 +3334,7 @@ __metadata:
languageName: unknown
linkType: soft
"@backstage/errors@npm:^1.2.4, @backstage/errors@npm:^1.2.7, @backstage/errors@workspace:^, @backstage/errors@workspace:packages/errors":
"@backstage/errors@workspace:^, @backstage/errors@workspace:packages/errors":
version: 0.0.0-use.local
resolution: "@backstage/errors@workspace:packages/errors"
dependencies:
@@ -3628,7 +3517,7 @@ __metadata:
languageName: unknown
linkType: soft
"@backstage/integration-aws-node@npm:^0.1.12, @backstage/integration-aws-node@workspace:^, @backstage/integration-aws-node@workspace:packages/integration-aws-node":
"@backstage/integration-aws-node@workspace:^, @backstage/integration-aws-node@workspace:packages/integration-aws-node":
version: 0.0.0-use.local
resolution: "@backstage/integration-aws-node@workspace:packages/integration-aws-node"
dependencies:
@@ -3678,7 +3567,7 @@ __metadata:
languageName: unknown
linkType: soft
"@backstage/integration@npm:^1.15.0, @backstage/integration@workspace:^, @backstage/integration@workspace:packages/integration":
"@backstage/integration@workspace:^, @backstage/integration@workspace:packages/integration":
version: 0.0.0-use.local
resolution: "@backstage/integration@workspace:packages/integration"
dependencies:
@@ -4306,54 +4195,6 @@ __metadata:
languageName: unknown
linkType: soft
"@backstage/plugin-auth-node@npm:^0.5.2":
version: 0.5.6
resolution: "@backstage/plugin-auth-node@npm:0.5.6"
dependencies:
"@backstage/backend-common": "npm:^0.25.0"
"@backstage/backend-plugin-api": "npm:^1.1.1"
"@backstage/catalog-client": "npm:^1.9.1"
"@backstage/catalog-model": "npm:^1.7.3"
"@backstage/config": "npm:^1.3.2"
"@backstage/errors": "npm:^1.2.7"
"@backstage/types": "npm:^1.2.1"
"@types/express": "npm:^4.17.6"
"@types/passport": "npm:^1.0.3"
express: "npm:^4.17.1"
jose: "npm:^5.0.0"
lodash: "npm:^4.17.21"
passport: "npm:^0.7.0"
winston: "npm:^3.2.1"
zod: "npm:^3.22.4"
zod-to-json-schema: "npm:^3.21.4"
zod-validation-error: "npm:^3.4.0"
checksum: 10/b286fcf7b8a274697a649567c4f96f9816f46b8a28729087e8338525a2a1d276e6960588313f4d60ae5711a9f9ca12b1ba49370f7496181f16fc80b2b629f31a
languageName: node
linkType: hard
"@backstage/plugin-auth-node@npm:^0.6.5":
version: 0.6.5
resolution: "@backstage/plugin-auth-node@npm:0.6.5"
dependencies:
"@backstage/backend-plugin-api": "npm:^1.4.1"
"@backstage/catalog-client": "npm:^1.10.2"
"@backstage/catalog-model": "npm:^1.7.5"
"@backstage/config": "npm:^1.3.3"
"@backstage/errors": "npm:^1.2.7"
"@backstage/types": "npm:^1.2.1"
"@types/express": "npm:^4.17.6"
"@types/passport": "npm:^1.0.3"
express: "npm:^4.17.1"
jose: "npm:^5.0.0"
lodash: "npm:^4.17.21"
passport: "npm:^0.7.0"
zod: "npm:^3.22.4"
zod-to-json-schema: "npm:^3.21.4"
zod-validation-error: "npm:^3.4.0"
checksum: 10/0518d9e245aa6060db8178a51a23de064f5d2fe7cd0e8336db904767159e75992ac5185ee1f07a9664628fb172f9e3db5fdb1255c63f24bbcc449d308b7d3d84
languageName: node
linkType: hard
"@backstage/plugin-auth-node@workspace:^, @backstage/plugin-auth-node@workspace:plugins/auth-node":
version: 0.0.0-use.local
resolution: "@backstage/plugin-auth-node@workspace:plugins/auth-node"
@@ -5575,7 +5416,6 @@ __metadata:
"@aws-sdk/signature-v4": "npm:^3.347.0"
"@azure/identity": "npm:^4.0.0"
"@backstage/backend-app-api": "workspace:^"
"@backstage/backend-common": "npm:^0.25.0"
"@backstage/backend-defaults": "workspace:^"
"@backstage/backend-plugin-api": "workspace:^"
"@backstage/backend-test-utils": "workspace:^"
@@ -6095,7 +5935,7 @@ __metadata:
languageName: unknown
linkType: soft
"@backstage/plugin-permission-common@npm:^0.9.1, @backstage/plugin-permission-common@workspace:^, @backstage/plugin-permission-common@workspace:plugins/permission-common":
"@backstage/plugin-permission-common@workspace:^, @backstage/plugin-permission-common@workspace:plugins/permission-common":
version: 0.0.0-use.local
resolution: "@backstage/plugin-permission-common@workspace:plugins/permission-common"
dependencies:
@@ -6111,24 +5951,6 @@ __metadata:
languageName: unknown
linkType: soft
"@backstage/plugin-permission-node@npm:^0.10.2":
version: 0.10.2
resolution: "@backstage/plugin-permission-node@npm:0.10.2"
dependencies:
"@backstage/backend-plugin-api": "npm:^1.4.1"
"@backstage/config": "npm:^1.3.3"
"@backstage/errors": "npm:^1.2.7"
"@backstage/plugin-auth-node": "npm:^0.6.5"
"@backstage/plugin-permission-common": "npm:^0.9.1"
"@types/express": "npm:^4.17.6"
express: "npm:^4.17.1"
express-promise-router: "npm:^4.1.0"
zod: "npm:^3.22.4"
zod-to-json-schema: "npm:^3.20.4"
checksum: 10/6a5addb61caf5f7fa92169e4e122b7c861db42141a7eb254ea933780679d1ccc0d9e3ea2f6131ef11f20ddac3347f1b485a715667ecb7de1cc8651a44f2f8d7d
languageName: node
linkType: hard
"@backstage/plugin-permission-node@workspace:^, @backstage/plugin-permission-node@workspace:plugins/permission-node":
version: 0.0.0-use.local
resolution: "@backstage/plugin-permission-node@workspace:plugins/permission-node"
@@ -7634,7 +7456,7 @@ __metadata:
languageName: unknown
linkType: soft
"@backstage/types@npm:^1.1.1, @backstage/types@npm:^1.2.1, @backstage/types@workspace:^, @backstage/types@workspace:packages/types":
"@backstage/types@workspace:^, @backstage/types@workspace:packages/types":
version: 0.0.0-use.local
resolution: "@backstage/types@workspace:packages/types"
dependencies:
@@ -9829,13 +9651,6 @@ __metadata:
languageName: node
linkType: hard
"@ioredis/commands@npm:^1.1.1":
version: 1.1.1
resolution: "@ioredis/commands@npm:1.1.1"
checksum: 10/eab61d07f6c40901a24cce1f7e8676268753243c0ee6ee34981cf63b404608ac7c7acd41dd550018d2cd5e62741446641135d760e61afbf0a86db4db2687aac3
languageName: node
linkType: hard
"@iovalkey/commands@npm:^0.1.0":
version: 0.1.0
resolution: "@iovalkey/commands@npm:0.1.0"
@@ -10386,16 +10201,6 @@ __metadata:
languageName: node
linkType: hard
"@keyv/memcache@npm:^1.3.5":
version: 1.4.1
resolution: "@keyv/memcache@npm:1.4.1"
dependencies:
json-buffer: "npm:^3.0.1"
memjs: "npm:^1.3.2"
checksum: 10/a3db21549ec445925c28419b19210984875aa03d1ce513792064336c7785c0e6d3ac015e71ca328a2e83f4ed409475f057a37d86c7fb2a11832740b024bcc3ff
languageName: node
linkType: hard
"@keyv/memcache@npm:^2.0.1":
version: 2.0.2
resolution: "@keyv/memcache@npm:2.0.2"
@@ -10409,15 +10214,6 @@ __metadata:
languageName: node
linkType: hard
"@keyv/redis@npm:^2.5.3":
version: 2.8.5
resolution: "@keyv/redis@npm:2.8.5"
dependencies:
ioredis: "npm:^5.4.1"
checksum: 10/7243abf11ab698b3f97f0c86bd56f1ec79a26b0e422b23c026d8dd2ad9f629852eaf683354c863508d142b934c73b985cd01f62583b07dfcd2b6842b52b853c3
languageName: node
linkType: hard
"@keyv/redis@npm:^4.0.1":
version: 4.4.1
resolution: "@keyv/redis@npm:4.4.1"
@@ -10488,32 +10284,6 @@ __metadata:
languageName: node
linkType: hard
"@kubernetes/client-node@npm:0.20.0":
version: 0.20.0
resolution: "@kubernetes/client-node@npm:0.20.0"
dependencies:
"@types/js-yaml": "npm:^4.0.1"
"@types/node": "npm:^20.1.1"
"@types/request": "npm:^2.47.1"
"@types/ws": "npm:^8.5.3"
byline: "npm:^5.0.0"
isomorphic-ws: "npm:^5.0.0"
js-yaml: "npm:^4.1.0"
jsonpath-plus: "npm:^7.2.0"
openid-client: "npm:^5.3.0"
request: "npm:^2.88.0"
rfc4648: "npm:^1.3.0"
stream-buffers: "npm:^3.0.2"
tar: "npm:^6.1.11"
tslib: "npm:^2.4.1"
ws: "npm:^8.11.0"
dependenciesMeta:
openid-client:
optional: true
checksum: 10/1d53a062f4d9a574b6400fa04dbbaea090aa2c69a8d65d609b90d3d606f384f60c191d2f969602a29eaaff1eebf30b4cbbc56a479910bd85c98205c4d3219e00
languageName: node
linkType: hard
"@kubernetes/client-node@npm:1.1.2":
version: 1.1.2
resolution: "@kubernetes/client-node@npm:1.1.2"
@@ -20381,7 +20151,7 @@ __metadata:
languageName: node
linkType: hard
"@types/dockerode@npm:^3.3.0, @types/dockerode@npm:^3.3.29":
"@types/dockerode@npm:^3.3.29":
version: 3.3.38
resolution: "@types/dockerode@npm:3.3.38"
dependencies:
@@ -21052,7 +20822,7 @@ __metadata:
languageName: node
linkType: hard
"@types/node@npm:^20.1.1, @types/node@npm:^20.16.0":
"@types/node@npm:^20.16.0":
version: 20.17.30
resolution: "@types/node@npm:20.17.30"
dependencies:
@@ -21385,7 +21155,7 @@ __metadata:
languageName: node
linkType: hard
"@types/request@npm:^2.47.1, @types/request@npm:^2.48.8":
"@types/request@npm:^2.48.8":
version: 2.48.12
resolution: "@types/request@npm:2.48.12"
dependencies:
@@ -21796,7 +21566,7 @@ __metadata:
languageName: node
linkType: hard
"@types/ws@npm:*, @types/ws@npm:^8.0.0, @types/ws@npm:^8.5.10, @types/ws@npm:^8.5.3, @types/ws@npm:^8.5.4":
"@types/ws@npm:*, @types/ws@npm:^8.0.0, @types/ws@npm:^8.5.10, @types/ws@npm:^8.5.4":
version: 8.18.1
resolution: "@types/ws@npm:8.18.1"
dependencies:
@@ -23920,7 +23690,7 @@ __metadata:
languageName: node
linkType: hard
"ajv@npm:^6.12.2, ajv@npm:^6.12.4, ajv@npm:^6.12.5, ajv@npm:^6.12.6, ajv@npm:^6.5.5":
"ajv@npm:^6.12.2, ajv@npm:^6.12.4, ajv@npm:^6.12.5, ajv@npm:^6.12.6":
version: 6.12.6
resolution: "ajv@npm:6.12.6"
dependencies:
@@ -24450,7 +24220,7 @@ __metadata:
languageName: node
linkType: hard
"asn1@npm:^0.2.4, asn1@npm:^0.2.6, asn1@npm:~0.2.3":
"asn1@npm:^0.2.4, asn1@npm:^0.2.6":
version: 0.2.6
resolution: "asn1@npm:0.2.6"
dependencies:
@@ -24459,7 +24229,7 @@ __metadata:
languageName: node
linkType: hard
"assert-plus@npm:1.0.0, assert-plus@npm:^1.0.0":
"assert-plus@npm:^1.0.0":
version: 1.0.0
resolution: "assert-plus@npm:1.0.0"
checksum: 10/f4f991ae2df849cc678b1afba52d512a7cbf0d09613ba111e72255409ff9158550c775162a47b12d015d1b82b3c273e8e25df0e4783d3ddb008a293486d00a07
@@ -24698,13 +24468,6 @@ __metadata:
languageName: node
linkType: hard
"aws-sign2@npm:~0.7.0":
version: 0.7.0
resolution: "aws-sign2@npm:0.7.0"
checksum: 10/2ac497d739f71be3264cf096a33ab256a1fea7fe80b87dc51ec29374505bd5a661279ef1c22989d68528ea61ed634021ca63b31cf1d3c2a3682ffc106f7d0e96
languageName: node
linkType: hard
"aws-ssl-profiles@npm:^1.1.1":
version: 1.1.1
resolution: "aws-ssl-profiles@npm:1.1.1"
@@ -24712,7 +24475,7 @@ __metadata:
languageName: node
linkType: hard
"aws4@npm:^1.11.0, aws4@npm:^1.12.0, aws4@npm:^1.8.0":
"aws4@npm:^1.11.0, aws4@npm:^1.12.0":
version: 1.13.2
resolution: "aws4@npm:1.13.2"
checksum: 10/290b9f84facbad013747725bfd8b4c42d0b3b04b5620d8418f0219832ef95a7dc597a4af7b1589ae7fce18bacde96f40911c3cda36199dd04d9f8e01f72fa50a
@@ -25046,7 +24809,7 @@ __metadata:
languageName: node
linkType: hard
"bcrypt-pbkdf@npm:^1.0.0, bcrypt-pbkdf@npm:^1.0.2":
"bcrypt-pbkdf@npm:^1.0.2":
version: 1.0.2
resolution: "bcrypt-pbkdf@npm:1.0.2"
dependencies:
@@ -25900,13 +25663,6 @@ __metadata:
languageName: node
linkType: hard
"caseless@npm:~0.12.0":
version: 0.12.0
resolution: "caseless@npm:0.12.0"
checksum: 10/ea1efdf430975fdbac3505cdd21007f7ac5aa29b6d4d1c091f965853cd1bf87e4b08ea07b31a6d688b038872b7cdf0589d9262d59c699d199585daad052aeb20
languageName: node
linkType: hard
"ccount@npm:^2.0.0":
version: 2.0.0
resolution: "ccount@npm:2.0.0"
@@ -26595,7 +26351,7 @@ __metadata:
languageName: node
linkType: hard
"combined-stream@npm:^1.0.6, combined-stream@npm:^1.0.8, combined-stream@npm:~1.0.6":
"combined-stream@npm:^1.0.6, combined-stream@npm:^1.0.8":
version: 1.0.8
resolution: "combined-stream@npm:1.0.8"
dependencies:
@@ -27819,15 +27575,6 @@ __metadata:
languageName: node
linkType: hard
"dashdash@npm:^1.12.0":
version: 1.14.1
resolution: "dashdash@npm:1.14.1"
dependencies:
assert-plus: "npm:^1.0.0"
checksum: 10/137b287fa021201ce100cef772c8eeeaaafdd2aa7282864022acf3b873021e54cb809e9c060fa164840bf54ff72d00d6e2d8da1ee5a86d7200eeefa1123a8f7f
languageName: node
linkType: hard
"data-uri-to-buffer@npm:^4.0.0":
version: 4.0.1
resolution: "data-uri-to-buffer@npm:4.0.1"
@@ -28922,16 +28669,6 @@ __metadata:
languageName: node
linkType: hard
"ecc-jsbn@npm:~0.1.1":
version: 0.1.2
resolution: "ecc-jsbn@npm:0.1.2"
dependencies:
jsbn: "npm:~0.1.0"
safer-buffer: "npm:^2.1.0"
checksum: 10/d43591f2396196266e186e6d6928038cc11c76c3699a912cb9c13757060f7bbc7f17f47c4cb16168cdeacffc7965aef021142577e646fb3cb88810c15173eb57
languageName: node
linkType: hard
"ecdsa-sig-formatter@npm:1.0.11, ecdsa-sig-formatter@npm:^1.0.11":
version: 1.0.11
resolution: "ecdsa-sig-formatter@npm:1.0.11"
@@ -30683,7 +30420,7 @@ __metadata:
languageName: node
linkType: hard
"extend@npm:3.0.2, extend@npm:^3.0.0, extend@npm:^3.0.2, extend@npm:~3.0.2":
"extend@npm:3.0.2, extend@npm:^3.0.0, extend@npm:^3.0.2":
version: 3.0.2
resolution: "extend@npm:3.0.2"
checksum: 10/59e89e2dc798ec0f54b36d82f32a27d5f6472c53974f61ca098db5d4648430b725387b53449a34df38fd0392045434426b012f302b3cc049a6500ccf82877e4e
@@ -30715,13 +30452,6 @@ __metadata:
languageName: node
linkType: hard
"extsprintf@npm:1.3.0":
version: 1.3.0
resolution: "extsprintf@npm:1.3.0"
checksum: 10/26967d6c7ecbfb5bc5b7a6c43503dc5fafd9454802037e9fa1665e41f615da4ff5918bd6cb871a3beabed01a31eca1ccd0bdfb41231f50ad50d405a430f78377
languageName: node
linkType: hard
"extsprintf@npm:^1.2.0":
version: 1.4.0
resolution: "extsprintf@npm:1.4.0"
@@ -31348,13 +31078,6 @@ __metadata:
languageName: node
linkType: hard
"forever-agent@npm:~0.6.1":
version: 0.6.1
resolution: "forever-agent@npm:0.6.1"
checksum: 10/c1e1644d5e074ac063ecbc3fb8582013ef91fff0e3fa41e76db23d2f62bc6d9677aac86db950917deed4fe1fdd772df780cfaa352075f23deec9c015313afb97
languageName: node
linkType: hard
"fork-ts-checker-webpack-plugin@npm:^6.5.0":
version: 6.5.0
resolution: "fork-ts-checker-webpack-plugin@npm:6.5.0"
@@ -31463,17 +31186,6 @@ __metadata:
languageName: node
linkType: hard
"form-data@npm:~2.3.2":
version: 2.3.3
resolution: "form-data@npm:2.3.3"
dependencies:
asynckit: "npm:^0.4.0"
combined-stream: "npm:^1.0.6"
mime-types: "npm:^2.1.12"
checksum: 10/1b6f3ccbf4540e535887b42218a2431a3f6cfdea320119c2affa2a7a374ad8fdd1e60166fc865181f45d49b1684c3e90e7b2190d3fe016692957afb9cf0d0d02
languageName: node
linkType: hard
"format@npm:^0.2.0":
version: 0.2.2
resolution: "format@npm:0.2.2"
@@ -32044,15 +31756,6 @@ __metadata:
languageName: node
linkType: hard
"getpass@npm:^0.1.1":
version: 0.1.7
resolution: "getpass@npm:0.1.7"
dependencies:
assert-plus: "npm:^1.0.0"
checksum: 10/ab18d55661db264e3eac6012c2d3daeafaab7a501c035ae0ccb193c3c23e9849c6e29b6ac762b9c2adae460266f925d55a3a2a3a3c8b94be2f222df94d70c046
languageName: node
linkType: hard
"git-hooks-list@npm:^3.0.0":
version: 3.1.0
resolution: "git-hooks-list@npm:3.1.0"
@@ -32701,16 +32404,6 @@ __metadata:
languageName: node
linkType: hard
"har-validator@npm:~5.1.3":
version: 5.1.3
resolution: "har-validator@npm:5.1.3"
dependencies:
ajv: "npm:^6.5.5"
har-schema: "npm:^2.0.0"
checksum: 10/5903ddf55f4403bb102a86dc2da073593716c7aa422863c244cb406b69e006551553c904e30ed5d123788675ae827f977b3b366211dc730b33a2b619f926199f
languageName: node
linkType: hard
"harmony-reflect@npm:^1.4.6":
version: 1.6.1
resolution: "harmony-reflect@npm:1.6.1"
@@ -33236,17 +32929,6 @@ __metadata:
languageName: node
linkType: hard
"http-signature@npm:~1.2.0":
version: 1.2.0
resolution: "http-signature@npm:1.2.0"
dependencies:
assert-plus: "npm:^1.0.0"
jsprim: "npm:^1.2.2"
sshpk: "npm:^1.7.0"
checksum: 10/2ff7112e6b0d8f08b382dfe705078c655501f2ddd76cf589d108445a9dd388a0a9be928c37108261519a7f53e6bbd1651048d74057b804807cce1ec49e87a95b
languageName: node
linkType: hard
"http2-wrapper@npm:^1.0.0-beta.5.2":
version: 1.0.0-beta.5.2
resolution: "http2-wrapper@npm:1.0.0-beta.5.2"
@@ -33747,23 +33429,6 @@ __metadata:
languageName: node
linkType: hard
"ioredis@npm:^5.4.1":
version: 5.4.1
resolution: "ioredis@npm:5.4.1"
dependencies:
"@ioredis/commands": "npm:^1.1.1"
cluster-key-slot: "npm:^1.1.0"
debug: "npm:^4.3.4"
denque: "npm:^2.1.0"
lodash.defaults: "npm:^4.2.0"
lodash.isarguments: "npm:^3.1.0"
redis-errors: "npm:^1.2.0"
redis-parser: "npm:^3.0.0"
standard-as-callback: "npm:^2.1.0"
checksum: 10/9043b812ac58065e80c759d130602cc64490fcaeaacf93723453fda04c7ba61dab0e2f50380eacb045592378ededf44f270c0d43e13e3e8b8d7c5a8d7fecb823
languageName: node
linkType: hard
"iovalkey@npm:^0.3.3":
version: 0.3.3
resolution: "iovalkey@npm:0.3.3"
@@ -34486,7 +34151,7 @@ __metadata:
languageName: node
linkType: hard
"is-typedarray@npm:^1.0.0, is-typedarray@npm:~1.0.0":
"is-typedarray@npm:^1.0.0":
version: 1.0.0
resolution: "is-typedarray@npm:1.0.0"
checksum: 10/4b433bfb0f9026f079f4eb3fbaa4ed2de17c9995c3a0b5c800bec40799b4b2a8b4e051b1ada77749deb9ded4ae52fe2096973f3a93ff83df1a5a7184a669478c
@@ -34721,13 +34386,6 @@ __metadata:
languageName: node
linkType: hard
"isstream@npm:~0.1.2":
version: 0.1.2
resolution: "isstream@npm:0.1.2"
checksum: 10/22d9c181015226d4534a227539256897bbbcb7edd1066ca4fc4d3a06dbd976325dfdd16b3983c7d236a89f256805c1a685a772e0364e98873d3819b064ad35a1
languageName: node
linkType: hard
"istanbul-lib-coverage@npm:^3.0.0, istanbul-lib-coverage@npm:^3.2.0":
version: 3.2.0
resolution: "istanbul-lib-coverage@npm:3.2.0"
@@ -35524,13 +35182,6 @@ __metadata:
languageName: node
linkType: hard
"jsbn@npm:~0.1.0":
version: 0.1.1
resolution: "jsbn@npm:0.1.1"
checksum: 10/5450133242845100e694f0ef9175f44c012691a9b770b2571e677314e6f70600abb10777cdfc9a0c6a9f2ac6d134577403633de73e2fcd0f97875a67744e2d14
languageName: node
linkType: hard
"jscodeshift-add-imports@npm:^1.0.10":
version: 1.0.11
resolution: "jscodeshift-add-imports@npm:1.0.11"
@@ -35699,7 +35350,7 @@ __metadata:
languageName: node
linkType: hard
"json-buffer@npm:3.0.1, json-buffer@npm:^3.0.1":
"json-buffer@npm:3.0.1":
version: 3.0.1
resolution: "json-buffer@npm:3.0.1"
checksum: 10/82876154521b7b68ba71c4f969b91572d1beabadd87bd3a6b236f85fbc7dc4695089191ed60bb59f9340993c51b33d479f45b6ba9f3548beb519705281c32c3c
@@ -35801,7 +35452,7 @@ __metadata:
languageName: node
linkType: hard
"json-schema@npm:0.4.0, json-schema@npm:^0.4.0":
"json-schema@npm:^0.4.0":
version: 0.4.0
resolution: "json-schema@npm:0.4.0"
checksum: 10/8b3b64eff4a807dc2a3045b104ed1b9335cd8d57aa74c58718f07f0f48b8baa3293b00af4dcfbdc9144c3aafea1e97982cc27cc8e150fc5d93c540649507a458
@@ -35834,7 +35485,7 @@ __metadata:
languageName: node
linkType: hard
"json-stringify-safe@npm:^5.0.1, json-stringify-safe@npm:~5.0.1":
"json-stringify-safe@npm:^5.0.1":
version: 5.0.1
resolution: "json-stringify-safe@npm:5.0.1"
checksum: 10/59169a081e4eeb6f9559ae1f938f656191c000e0512aa6df9f3c8b2437a4ab1823819c6b9fd1818a4e39593ccfd72e9a051fdd3e2d1e340ed913679e888ded8c
@@ -35937,13 +35588,6 @@ __metadata:
languageName: node
linkType: hard
"jsonpath-plus@npm:^7.2.0":
version: 7.2.0
resolution: "jsonpath-plus@npm:7.2.0"
checksum: 10/f602445b1aa2d55abc2875859fd948f942980ef6400ca2a0362c7a6aa6f912467865262f4d092e04a16889fa74f0dbf6fd67b9dc9583485a5059be6e0a62c6c2
languageName: node
linkType: hard
"jsonpath@npm:^1.1.1":
version: 1.1.1
resolution: "jsonpath@npm:1.1.1"
@@ -35981,18 +35625,6 @@ __metadata:
languageName: node
linkType: hard
"jsprim@npm:^1.2.2":
version: 1.4.2
resolution: "jsprim@npm:1.4.2"
dependencies:
assert-plus: "npm:1.0.0"
extsprintf: "npm:1.3.0"
json-schema: "npm:0.4.0"
verror: "npm:1.10.0"
checksum: 10/df2bf234eab1b5078d01bcbff3553d50a243f7b5c10a169745efeda6344d62798bd1d85bcca6a8446f3b5d0495e989db45f9de8dae219f0f9796e70e0c776089
languageName: node
linkType: hard
"jss-plugin-camel-case@npm:^10.10.0, jss-plugin-camel-case@npm:^10.5.1":
version: 10.10.0
resolution: "jss-plugin-camel-case@npm:10.10.0"
@@ -36214,7 +35846,7 @@ __metadata:
languageName: node
linkType: hard
"keyv@npm:^4.0.0, keyv@npm:^4.5.2":
"keyv@npm:^4.0.0":
version: 4.5.4
resolution: "keyv@npm:4.5.4"
dependencies:
@@ -38424,7 +38056,7 @@ __metadata:
languageName: node
linkType: hard
"mime-types@npm:2.1.35, mime-types@npm:^2.1.12, mime-types@npm:^2.1.18, mime-types@npm:^2.1.27, mime-types@npm:^2.1.31, mime-types@npm:~2.1.17, mime-types@npm:~2.1.19, mime-types@npm:~2.1.24, mime-types@npm:~2.1.34":
"mime-types@npm:2.1.35, mime-types@npm:^2.1.12, mime-types@npm:^2.1.18, mime-types@npm:^2.1.27, mime-types@npm:^2.1.31, mime-types@npm:~2.1.17, mime-types@npm:~2.1.24, mime-types@npm:~2.1.34":
version: 2.1.35
resolution: "mime-types@npm:2.1.35"
dependencies:
@@ -40037,13 +39669,6 @@ __metadata:
languageName: node
linkType: hard
"oauth-sign@npm:~0.9.0":
version: 0.9.0
resolution: "oauth-sign@npm:0.9.0"
checksum: 10/1809a366d258f41fdf4ab5310cff3d1e15f96b187503bc7333cef4351de7bd0f52cb269bc95800f1fae5fb04dd886287df1471985fd67e8484729fdbcf857119
languageName: node
linkType: hard
"oauth4webapi@npm:^3.4.1":
version: 3.5.0
resolution: "oauth4webapi@npm:3.5.0"
@@ -40422,7 +40047,7 @@ __metadata:
languageName: node
linkType: hard
"openid-client@npm:^5.3.0, openid-client@npm:^5.4.3, openid-client@npm:^5.5.0":
"openid-client@npm:^5.4.3, openid-client@npm:^5.5.0":
version: 5.7.1
resolution: "openid-client@npm:5.7.1"
dependencies:
@@ -42590,7 +42215,7 @@ __metadata:
languageName: node
linkType: hard
"psl@npm:^1.1.28, psl@npm:^1.1.33":
"psl@npm:^1.1.33":
version: 1.8.0
resolution: "psl@npm:1.8.0"
checksum: 10/5f62a8eca06cb4a017983d15b92b0d38dc8699d637eabc8cb482c59b4106c9760f59cc8afabcb8bb7b98f0322907680d8f0f59226386fffab5248d180bc04578
@@ -42690,13 +42315,6 @@ __metadata:
languageName: node
linkType: hard
"qs@npm:~6.5.2":
version: 6.5.3
resolution: "qs@npm:6.5.3"
checksum: 10/485c990fba7ad17671e16c92715fb064c1600337738f5d140024eb33a49fbc1ed31890d3db850117c760caeb9c9cc9f4ba22a15c20dd119968e41e3d3fe60b28
languageName: node
linkType: hard
"querystring-es3@npm:^0.2.1":
version: 0.2.1
resolution: "querystring-es3@npm:0.2.1"
@@ -44253,34 +43871,6 @@ __metadata:
languageName: node
linkType: hard
"request@npm:^2.88.0":
version: 2.88.2
resolution: "request@npm:2.88.2"
dependencies:
aws-sign2: "npm:~0.7.0"
aws4: "npm:^1.8.0"
caseless: "npm:~0.12.0"
combined-stream: "npm:~1.0.6"
extend: "npm:~3.0.2"
forever-agent: "npm:~0.6.1"
form-data: "npm:~2.3.2"
har-validator: "npm:~5.1.3"
http-signature: "npm:~1.2.0"
is-typedarray: "npm:~1.0.0"
isstream: "npm:~0.1.2"
json-stringify-safe: "npm:~5.0.1"
mime-types: "npm:~2.1.19"
oauth-sign: "npm:~0.9.0"
performance-now: "npm:^2.1.0"
qs: "npm:~6.5.2"
safe-buffer: "npm:^5.1.2"
tough-cookie: "npm:~2.5.0"
tunnel-agent: "npm:^0.6.0"
uuid: "npm:^3.3.2"
checksum: 10/005b8b237b56f1571cfd4ecc09772adaa2e82dcb884fc14ea2bb25e23dbf7c2009f9929e0b6d3fd5802e33ed8ee705a3b594c8f9467c1458cd973872bf89db8e
languageName: node
linkType: hard
"require-directory@npm:^2.1.1":
version: 2.1.1
resolution: "require-directory@npm:2.1.1"
@@ -45053,7 +44643,7 @@ __metadata:
languageName: node
linkType: hard
"safer-buffer@npm:>= 2.1.2 < 3, safer-buffer@npm:>= 2.1.2 < 3.0.0, safer-buffer@npm:^2.0.2, safer-buffer@npm:^2.1.0, safer-buffer@npm:~2.1.0":
"safer-buffer@npm:>= 2.1.2 < 3, safer-buffer@npm:>= 2.1.2 < 3.0.0, safer-buffer@npm:^2.0.2, safer-buffer@npm:~2.1.0":
version: 2.1.2
resolution: "safer-buffer@npm:2.1.2"
checksum: 10/7eaf7a0cf37cc27b42fb3ef6a9b1df6e93a1c6d98c6c6702b02fe262d5fcbd89db63320793b99b21cb5348097d0a53de81bd5f4e8b86e20cc9412e3f1cfb4e83
@@ -46171,27 +45761,6 @@ __metadata:
languageName: node
linkType: hard
"sshpk@npm:^1.7.0":
version: 1.16.1
resolution: "sshpk@npm:1.16.1"
dependencies:
asn1: "npm:~0.2.3"
assert-plus: "npm:^1.0.0"
bcrypt-pbkdf: "npm:^1.0.0"
dashdash: "npm:^1.12.0"
ecc-jsbn: "npm:~0.1.1"
getpass: "npm:^0.1.1"
jsbn: "npm:~0.1.0"
safer-buffer: "npm:^2.0.2"
tweetnacl: "npm:~0.14.0"
bin:
sshpk-conv: bin/sshpk-conv
sshpk-sign: bin/sshpk-sign
sshpk-verify: bin/sshpk-verify
checksum: 10/b437fd3fd2777b29b5425b57d3d352b5771d5c61ddb0e000ddc6ff4b8a5b69c2d1d6b188787a0577df2b125045a492d2c9d03452067e87c49b013bd273e1c70a
languageName: node
linkType: hard
"ssri@npm:^10.0.0":
version: 10.0.5
resolution: "ssri@npm:10.0.5"
@@ -47745,16 +47314,6 @@ __metadata:
languageName: node
linkType: hard
"tough-cookie@npm:~2.5.0":
version: 2.5.0
resolution: "tough-cookie@npm:2.5.0"
dependencies:
psl: "npm:^1.1.28"
punycode: "npm:^2.1.1"
checksum: 10/024cb13a4d1fe9af57f4323dff765dd9b217cc2a69be77e3b8a1ca45600aa33a097b6ad949f225d885e904f4bd3ceccef104741ef202d8378e6ca78e850ff82f
languageName: node
linkType: hard
"tr46@npm:^3.0.0":
version: 3.0.0
resolution: "tr46@npm:3.0.0"
@@ -48113,7 +47672,7 @@ __metadata:
languageName: node
linkType: hard
"tweetnacl@npm:^0.14.3, tweetnacl@npm:~0.14.0":
"tweetnacl@npm:^0.14.3":
version: 0.14.5
resolution: "tweetnacl@npm:0.14.5"
checksum: 10/04ee27901cde46c1c0a64b9584e04c96c5fe45b38c0d74930710751ea991408b405747d01dfae72f80fc158137018aea94f9c38c651cb9c318f0861a310c3679
@@ -49140,7 +48699,7 @@ __metadata:
languageName: node
linkType: hard
"uuid@npm:^3.3.2, uuid@npm:^3.4.0":
"uuid@npm:^3.4.0":
version: 3.4.0
resolution: "uuid@npm:3.4.0"
bin:
@@ -49983,7 +49542,7 @@ __metadata:
languageName: node
linkType: hard
"ws@npm:*, ws@npm:^8.11.0, ws@npm:^8.12.0, ws@npm:^8.13.0, ws@npm:^8.17.1, ws@npm:^8.18.0, ws@npm:^8.2.3, ws@npm:^8.8.0":
"ws@npm:*, ws@npm:^8.12.0, ws@npm:^8.13.0, ws@npm:^8.17.1, ws@npm:^8.18.0, ws@npm:^8.2.3, ws@npm:^8.8.0":
version: 8.18.3
resolution: "ws@npm:8.18.3"
peerDependencies: