diff --git a/.changeset/silent-waves-pretend.md b/.changeset/silent-waves-pretend.md new file mode 100644 index 0000000000..5986579fe6 --- /dev/null +++ b/.changeset/silent-waves-pretend.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-auth-backend-module-aws-alb-provider': minor +'@backstage/plugin-auth-backend': patch +--- + +Migrated the AWS ALB auth provider to new `@backstage/plugin-auth-backend-module-aws-alb-provider` module package. diff --git a/package.json b/package.json index c19dea9d3b..7530e1aa82 100644 --- a/package.json +++ b/package.json @@ -47,6 +47,7 @@ ] }, "resolutions": { + "csstype": ">=3.0.2 <=3.1.2", "@types/react": "^18", "@types/react-dom": "^18", "jest-haste-map@^29.7.0": "patch:jest-haste-map@npm%3A29.7.0#./.yarn/patches/jest-haste-map-npm-29.7.0-e3be419eff.patch", diff --git a/packages/backend/package.json b/packages/backend/package.json index fe072cf11a..6e5494f162 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -35,6 +35,7 @@ "@backstage/plugin-adr-backend": "workspace:^", "@backstage/plugin-app-backend": "workspace:^", "@backstage/plugin-auth-backend": "workspace:^", + "@backstage/plugin-auth-backend-module-aws-alb-provider": "workspace:^", "@backstage/plugin-auth-node": "workspace:^", "@backstage/plugin-azure-devops-backend": "workspace:^", "@backstage/plugin-azure-sites-backend": "workspace:^", diff --git a/plugins/auth-backend-module-aws-alb-provider/.eslintrc.js b/plugins/auth-backend-module-aws-alb-provider/.eslintrc.js new file mode 100644 index 0000000000..e2a53a6ad2 --- /dev/null +++ b/plugins/auth-backend-module-aws-alb-provider/.eslintrc.js @@ -0,0 +1 @@ +module.exports = require('@backstage/cli/config/eslint-factory')(__dirname); diff --git a/plugins/auth-backend-module-aws-alb-provider/README.md b/plugins/auth-backend-module-aws-alb-provider/README.md new file mode 100644 index 0000000000..dd92ae7ba2 --- /dev/null +++ b/plugins/auth-backend-module-aws-alb-provider/README.md @@ -0,0 +1,8 @@ +# Auth Module: AWS ALB Provider + +This module provides an GitHub auth provider implementation for `@backstage/plugin-auth-backend`. + +## Links + +- [Backstage](https://backstage.io) +- [Repository](https://github.com/backstage/backstage/tree/master/plugins/auth-backend-module-github-provider) diff --git a/plugins/auth-backend-module-aws-alb-provider/api-report.md b/plugins/auth-backend-module-aws-alb-provider/api-report.md new file mode 100644 index 0000000000..88e00d87c1 --- /dev/null +++ b/plugins/auth-backend-module-aws-alb-provider/api-report.md @@ -0,0 +1,47 @@ +## API Report File for "@backstage/plugin-auth-backend-module-aws-alb-provider" + +> 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'; +import { JWTHeaderParameters } from 'jose'; +import { KeyObject } from 'crypto'; +import passport from 'passport'; +import { ProxyAuthenticator } from '@backstage/plugin-auth-node'; +import { SignInResolverFactory } from '@backstage/plugin-auth-node'; + +// @public (undocumented) +export const authModuleAwsAlbProvider: () => BackendFeature; + +// @public (undocumented) +export const awsAlbAuthenticator: ProxyAuthenticator< + { + issuer: string; + getKey: (header: JWTHeaderParameters) => Promise; + }, + AwsAlbResult +>; + +// @public +export type AwsAlbResult = { + fullProfile: PassportProfile; + expiresInSeconds?: number; + accessToken: string; +}; + +// @public +export namespace awsAlbSignInResolvers { + const // (undocumented) + emailMatchingUserEntityProfileEmail: SignInResolverFactory< + AwsAlbResult, + unknown + >; +} + +// @public (undocumented) +export type PassportProfile = passport.Profile & { + avatarUrl?: string; +}; +``` diff --git a/plugins/auth-backend-module-aws-alb-provider/catalog-info.yaml b/plugins/auth-backend-module-aws-alb-provider/catalog-info.yaml new file mode 100644 index 0000000000..b3ced6b59d --- /dev/null +++ b/plugins/auth-backend-module-aws-alb-provider/catalog-info.yaml @@ -0,0 +1,10 @@ +apiVersion: backstage.io/v1alpha1 +kind: Component +metadata: + name: backstage-plugin-auth-backend-module-aws-alb-provider + title: '@backstage/plugin-auth-backend-module-aws-alb-provider' + description: The aws-alb provider module for the Backstage auth backend. +spec: + lifecycle: experimental + type: backstage-backend-plugin-module + owner: maintainers diff --git a/plugins/auth-backend-module-aws-alb-provider/package.json b/plugins/auth-backend-module-aws-alb-provider/package.json new file mode 100644 index 0000000000..41e3e409e2 --- /dev/null +++ b/plugins/auth-backend-module-aws-alb-provider/package.json @@ -0,0 +1,55 @@ +{ + "name": "@backstage/plugin-auth-backend-module-aws-alb-provider", + "description": "The aws-alb provider module for the Backstage auth backend.", + "version": "0.0.0", + "main": "src/index.ts", + "types": "src/index.ts", + "license": "Apache-2.0", + "publishConfig": { + "access": "public", + "main": "dist/index.cjs.js", + "types": "dist/index.d.ts" + }, + "backstage": { + "role": "backend-plugin-module" + }, + "homepage": "https://backstage.io", + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage", + "directory": "plugins/auth-backend-module-aws-alb-provider" + }, + "keywords": [ + "backstage" + ], + "scripts": { + "start": "backstage-cli package start", + "build": "backstage-cli package build", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", + "clean": "backstage-cli package clean", + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack" + }, + "dependencies": { + "@backstage/backend-common": "workspace:^", + "@backstage/backend-plugin-api": "workspace:^", + "@backstage/errors": "workspace:^", + "@backstage/plugin-auth-backend": "workspace:^", + "@backstage/plugin-auth-node": "workspace:^", + "@types/passport": "^1.0.3", + "jose": "^4.6.0", + "jwt-decode": "^3.1.0", + "node-cache": "^5.1.2", + "passport": "^0.7.0" + }, + "devDependencies": { + "@backstage/backend-test-utils": "workspace:^", + "@backstage/cli": "workspace:^", + "@backstage/config": "workspace:^", + "express": "^4.18.2" + }, + "files": [ + "dist" + ] +} diff --git a/plugins/auth-backend-module-aws-alb-provider/src/authenticator.test.ts b/plugins/auth-backend-module-aws-alb-provider/src/authenticator.test.ts new file mode 100644 index 0000000000..bfcbfce622 --- /dev/null +++ b/plugins/auth-backend-module-aws-alb-provider/src/authenticator.test.ts @@ -0,0 +1,181 @@ +/* + * 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 { + ALB_ACCESS_TOKEN_HEADER, + ALB_JWT_HEADER, + awsAlbAuthenticator, +} from './authenticator'; +import { jwtVerify } from 'jose'; +import express from 'express'; +import { AuthenticationError } from '@backstage/errors'; +import { Config } from '@backstage/config'; + +const jwtMock = jwtVerify as jest.Mocked; +const mockJwt = + 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IktFWV9JRCIsImlzcyI6IklTU1VFUl9VUkwifQ.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IlVzZXIgTmFtZSIsImlhdCI6MTUxNjIzOTAyMn0.uMCSBGhij1xn5pnot8XgD-huQuTIBOFGs6kkW_p_X94'; +const mockAccessToken = 'ACCESS_TOKEN'; +const mockClaims = { + sub: '1234567890', + name: 'User Name', + family_name: 'Name', + given_name: 'User', + picture: 'PICTURE_URL', + email: 'user.name@email.test', + exp: 1632833763, + iss: 'ISSUER_URL', +}; +jest.mock('jose'); + +beforeEach(() => { + jest.clearAllMocks(); +}); +describe('AwsAlbProvider', () => { + const mockRequest = { + header: jest.fn(name => { + if (name === ALB_JWT_HEADER) { + return mockJwt; + } else if (name === ALB_ACCESS_TOKEN_HEADER) { + return mockAccessToken; + } + return undefined; + }), + } as unknown as express.Request; + const mockRequestWithoutJwt = { + header: jest.fn(name => { + if (name === ALB_ACCESS_TOKEN_HEADER) { + return mockAccessToken; + } + return undefined; + }), + } as unknown as express.Request; + const mockRequestWithoutAccessToken = { + header: jest.fn(name => { + if (name === ALB_JWT_HEADER) { + return mockJwt; + } + return undefined; + }), + } as unknown as express.Request; + + describe('should transform to type AwsAlbResponse', () => { + it('when JWT is valid and identity is resolved successfully', async () => { + jwtMock.mockReturnValueOnce(Promise.resolve({ payload: mockClaims })); + + const response = await awsAlbAuthenticator.authenticate( + { req: mockRequest }, + { issuer: 'ISSUER_URL', getKey: jest.fn() }, + ); + expect(response).toEqual({ + result: { + fullProfile: { + provider: 'unknown', + id: mockClaims.sub, + displayName: mockClaims.name, + username: mockClaims.email.split('@')[0].toLowerCase(), + name: { + familyName: mockClaims.family_name, + givenName: mockClaims.given_name, + }, + emails: [{ value: mockClaims.email.toLowerCase() }], + photos: [{ value: mockClaims.picture }], + }, + expiresInSeconds: mockClaims.exp, + accessToken: mockAccessToken, + }, + }); + }); + }); + describe('should fail when', () => { + it('Access token is missing', async () => { + await expect( + awsAlbAuthenticator.authenticate( + { req: mockRequestWithoutAccessToken }, + { issuer: 'ISSUER_URL', getKey: jest.fn() }, + ), + ).rejects.toThrow(AuthenticationError); + }); + + it('JWT is missing', async () => { + await expect( + awsAlbAuthenticator.authenticate( + { req: mockRequestWithoutJwt }, + { issuer: 'ISSUER_URL', getKey: jest.fn() }, + ), + ).rejects.toThrow(AuthenticationError); + }); + + it('JWT is invalid', async () => { + jwtMock.mockImplementationOnce(() => { + throw new Error('bad JWT'); + }); + + await expect( + awsAlbAuthenticator.authenticate( + { req: mockRequest }, + { issuer: 'ISSUER_URL', getKey: jest.fn() }, + ), + ).rejects.toThrow( + 'Exception occurred during JWT processing: Error: bad JWT', + ); + }); + + it('issuer is missing', async () => { + jwtMock.mockReturnValueOnce({}); + + await expect( + awsAlbAuthenticator.authenticate( + { req: mockRequest }, + { issuer: 'ISSUER_URL', getKey: jest.fn() }, + ), + ).rejects.toThrow( + 'Exception occurred during JWT processing: AuthenticationError: Issuer mismatch on JWT token', + ); + }); + + it('issuer is invalid', async () => { + jwtMock.mockReturnValueOnce({ + iss: 'INVALID_ISSUE_URL', + }); + + await expect( + awsAlbAuthenticator.authenticate( + { req: mockRequest }, + { issuer: 'ISSUER_URL', getKey: jest.fn() }, + ), + ).rejects.toThrow( + 'Exception occurred during JWT processing: AuthenticationError: Issuer mismatch on JWT token', + ); + }); + }); + describe('should initialize', () => { + it('with default options', async () => { + const config = { + config: { + getString: jest + .fn() + .mockReturnValueOnce('ISSUER_URL') + .mockReturnValueOnce('TEST_REGION'), + } as unknown as Config, + }; + + expect(awsAlbAuthenticator.initialize(config)).toEqual({ + issuer: 'ISSUER_URL', + getKey: expect.any(Function), + }); + }); + }); +}); diff --git a/plugins/auth-backend-module-aws-alb-provider/src/authenticator.ts b/plugins/auth-backend-module-aws-alb-provider/src/authenticator.ts new file mode 100644 index 0000000000..1da92e43e4 --- /dev/null +++ b/plugins/auth-backend-module-aws-alb-provider/src/authenticator.ts @@ -0,0 +1,89 @@ +/* + * 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 { AuthenticationError } from '@backstage/errors'; +import { AwsAlbClaims, AwsAlbResult, PassportProfile } from './types'; +import { jwtVerify } from 'jose'; +import { createProxyAuthenticator } from '@backstage/plugin-auth-node'; +import NodeCache from 'node-cache'; +import { makeProfileInfo, provisionKeyCache } from './helpers'; + +export const ALB_JWT_HEADER = 'x-amzn-oidc-data'; +export const ALB_ACCESS_TOKEN_HEADER = 'x-amzn-oidc-accesstoken'; + +/** @public */ +export const awsAlbAuthenticator = createProxyAuthenticator({ + defaultProfileTransform: async (result: AwsAlbResult) => { + return { + profile: makeProfileInfo(result.fullProfile, result.accessToken), + }; + }, + initialize({ config }) { + const issuer = config.getString('issuer'); + const region = config.getString('region'); + const keyCache = new NodeCache({ stdTTL: 3600 }); + const getKey = provisionKeyCache(region, keyCache); + return { issuer, getKey }; + }, + async authenticate({ req }, { issuer, getKey }) { + const jwt = req.header(ALB_JWT_HEADER); + const accessToken = req.header(ALB_ACCESS_TOKEN_HEADER); + + if (jwt === undefined) { + throw new AuthenticationError( + `Missing ALB OIDC header: ${ALB_JWT_HEADER}`, + ); + } + + if (accessToken === undefined) { + throw new AuthenticationError( + `Missing ALB OIDC header: ${ALB_ACCESS_TOKEN_HEADER}`, + ); + } + + try { + const verifyResult = await jwtVerify(jwt, getKey); + const claims = verifyResult.payload as AwsAlbClaims; + + if (issuer && claims?.iss !== issuer) { + throw new AuthenticationError('Issuer mismatch on JWT token'); + } + + const fullProfile: PassportProfile = { + provider: 'unknown', + id: claims.sub, + displayName: claims.name, + username: claims.email.split('@')[0].toLowerCase(), + name: { + familyName: claims.family_name, + givenName: claims.given_name, + }, + emails: [{ value: claims.email.toLowerCase() }], + photos: [{ value: claims.picture }], + }; + + return { + result: { + fullProfile, + expiresInSeconds: claims.exp, + accessToken, + }, + }; + } catch (e) { + throw new Error(`Exception occurred during JWT processing: ${e}`); + } + }, +}); diff --git a/plugins/auth-backend-module-aws-alb-provider/src/helpers.test.ts b/plugins/auth-backend-module-aws-alb-provider/src/helpers.test.ts new file mode 100644 index 0000000000..07ad118cea --- /dev/null +++ b/plugins/auth-backend-module-aws-alb-provider/src/helpers.test.ts @@ -0,0 +1,142 @@ +import NodeCache from 'node-cache'; +import { makeProfileInfo, provisionKeyCache } from './helpers'; +import * as crypto from 'crypto'; +import { JWTHeaderParameters } from 'jose'; +import { PassportProfile } from '@backstage/plugin-auth-node'; +import jwtDecoder from 'jwt-decode'; + +/* + * 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. + */ + +const mockKey = async () => { + return `-----BEGIN PUBLIC KEY----- +MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEnuN4LlaJhaUpx+qZFTzYCrSBLk0I +yOlxJ2VW88mLAQGJ7HPAvOdylxZsItMnzCuqNzZvie8m/NJsOjhDncVkrw== +-----END PUBLIC KEY----- +`; +}; +jest.mock('crypto'); +const cryptoMock = crypto as jest.Mocked; +jest.mock('node-fetch', () => ({ + __esModule: true, + default: async () => { + return { + text: async () => { + return mockKey(); + }, + }; + }, +})); + +const jwtMock = jwtDecoder as jest.Mocked; +jest.mock('jwt-decode'); + +describe('helpers', () => { + const nodeCache = jest.fn() as unknown as NodeCache; + nodeCache.set = jest.fn(); + + beforeEach(() => { + jest.clearAllMocks(); + }); + it('should create a key', () => { + const getKey = provisionKeyCache('eu-west-1', nodeCache); + expect(getKey).toBeDefined(); + }); + it('should return a key from cache', async () => { + const getKey = provisionKeyCache('eu-west-1', nodeCache); + + cryptoMock.createPublicKey.mockReturnValueOnce('key'); + nodeCache.get = jest.fn().mockReturnValue('key'); + + const key = await getKey({ kid: 'kid' } as unknown as JWTHeaderParameters); + + expect(key).toBe('key'); + }); + it('should update cache if key is not found', async () => { + const getKey = provisionKeyCache('eu-west-1', nodeCache); + + nodeCache.get = jest.fn().mockReturnValue(undefined); + jest.spyOn(nodeCache, 'set'); + cryptoMock.createPublicKey.mockReturnValue({ + export: jest.fn().mockReturnValue('key'), + }); + + await getKey({ kid: 'kid' } as unknown as JWTHeaderParameters); + expect(nodeCache.set).toHaveBeenCalledWith('kid', 'key'); + }); + it('should throw error if key is not found', async () => { + const getKey = provisionKeyCache('eu-west-1', nodeCache); + + nodeCache.get = jest.fn().mockReturnValue(undefined); + cryptoMock.createPublicKey.mockReturnValue(undefined); + + await expect( + getKey({ kid: 'kid' } as unknown as JWTHeaderParameters), + ).rejects.toThrow(); + }); + it('should throw if key is not present in request header', async () => { + const getKey = provisionKeyCache('eu-west-1', nodeCache); + + nodeCache.get = jest.fn().mockReturnValue(undefined); + + await expect(getKey({} as unknown as JWTHeaderParameters)).rejects.toThrow( + 'No key id was specified in header', + ); + }); +}); + +describe('makeProfileInfo', () => { + it('should return profile info', () => { + const profile = { + id: 'id', + displayName: 'displayName', + username: 'username', + name: { + familyName: 'familyName', + givenName: 'givenName', + }, + emails: [{ value: 'email' }], + photos: [{ value: 'picture' }], + } as PassportProfile; + const accessToken = 'accessToken'; + const result = { + email: 'email', + picture: 'picture', + displayName: 'displayName', + }; + expect(makeProfileInfo(profile, accessToken)).toEqual(result); + }); + it('should return profile info from id token', () => { + jwtMock.mockReturnValueOnce({ + email: 'email', + picture: 'picture', + name: 'displayName', + }); + const profile = { + name: { + familyName: 'familyName', + givenName: 'givenName', + }, + } as PassportProfile; + const idToken = 'idToken'; + const result = { + email: 'email', + picture: 'picture', + displayName: 'displayName', + }; + expect(makeProfileInfo(profile, idToken)).toEqual(result); + }); +}); diff --git a/plugins/auth-backend-module-aws-alb-provider/src/helpers.ts b/plugins/auth-backend-module-aws-alb-provider/src/helpers.ts new file mode 100644 index 0000000000..cdc19174ea --- /dev/null +++ b/plugins/auth-backend-module-aws-alb-provider/src/helpers.ts @@ -0,0 +1,88 @@ +/* + * 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 { PassportProfile } from './types'; +import { ProfileInfo } from '@backstage/plugin-auth-node'; +import { KeyObject } from 'crypto'; +import jwtDecoder from 'jwt-decode'; +import NodeCache from 'node-cache'; +import * as crypto from 'crypto'; +import { JWTHeaderParameters } from 'jose'; +import { AuthenticationError } from '@backstage/errors'; + +export const makeProfileInfo = ( + profile: PassportProfile, + idToken?: string, +): ProfileInfo => { + let email: string | undefined = undefined; + if (profile.emails && profile.emails.length > 0) { + const [firstEmail] = profile.emails; + email = firstEmail.value; + } + + let picture: string | undefined = undefined; + if (profile.avatarUrl) { + picture = profile.avatarUrl; + } else if (profile.photos && profile.photos.length > 0) { + const [firstPhoto] = profile.photos; + picture = firstPhoto.value; + } + + let displayName: string | undefined = + profile.displayName ?? profile.username ?? profile.id; + + if ((!email || !picture || !displayName) && idToken) { + try { + const decoded: Record = jwtDecoder(idToken); + if (!email && decoded.email) { + email = decoded.email; + } + if (!picture && decoded.picture) { + picture = decoded.picture; + } + if (!displayName && decoded.name) { + displayName = decoded.name; + } + } catch (e) { + throw new Error(`Failed to parse id token and get profile info, ${e}`); + } + } + + return { + email, + picture, + displayName, + }; +}; + +export const provisionKeyCache = (region: string, keyCache: NodeCache) => { + return async (header: JWTHeaderParameters): Promise => { + if (!header.kid) { + throw new AuthenticationError('No key id was specified in header'); + } + const optionalCacheKey = keyCache.get(header.kid); + if (optionalCacheKey) { + return crypto.createPublicKey(optionalCacheKey); + } + const keyText: string = await fetch( + `https://public-keys.auth.elb.${encodeURIComponent( + region, + )}.amazonaws.com/${encodeURIComponent(header.kid)}`, + ).then(response => response.text()); + const keyValue = crypto.createPublicKey(keyText); + keyCache.set(header.kid, keyValue.export()); + return keyValue; + }; +}; diff --git a/plugins/auth-backend-module-aws-alb-provider/src/index.d.ts b/plugins/auth-backend-module-aws-alb-provider/src/index.d.ts new file mode 100644 index 0000000000..e000bc66e7 --- /dev/null +++ b/plugins/auth-backend-module-aws-alb-provider/src/index.d.ts @@ -0,0 +1,17 @@ +/* + * 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. + */ + +export { type PassportProfile } from './types'; diff --git a/plugins/auth-backend-module-aws-alb-provider/src/index.ts b/plugins/auth-backend-module-aws-alb-provider/src/index.ts new file mode 100644 index 0000000000..f84a1bc842 --- /dev/null +++ b/plugins/auth-backend-module-aws-alb-provider/src/index.ts @@ -0,0 +1,27 @@ +/* + * 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. + */ + +/** + * The auth-backend-module-aws-alb-provider backend module for the auth-backend plugin. + * + * @packageDocumentation + */ + +export { awsAlbAuthenticator } from './authenticator'; +export { authModuleAwsAlbProvider } from './module'; +export { awsAlbSignInResolvers } from './resolvers'; +export { type AwsAlbResult } from './types'; +export { type PassportProfile } from './types'; diff --git a/plugins/auth-backend-module-aws-alb-provider/src/module.ts b/plugins/auth-backend-module-aws-alb-provider/src/module.ts new file mode 100644 index 0000000000..14e35252af --- /dev/null +++ b/plugins/auth-backend-module-aws-alb-provider/src/module.ts @@ -0,0 +1,48 @@ +/* + * 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 { createBackendModule } from '@backstage/backend-plugin-api'; +import { + authProvidersExtensionPoint, + commonSignInResolvers, + createProxyAuthProviderFactory, +} from '@backstage/plugin-auth-node'; +import { awsAlbAuthenticator } from './authenticator'; +import { awsAlbSignInResolvers } from './resolvers'; + +/** @public */ +export const authModuleAwsAlbProvider = createBackendModule({ + pluginId: 'auth', + moduleId: 'awsAlbProvider', + register(reg) { + reg.registerInit({ + deps: { + providers: authProvidersExtensionPoint, + }, + async init({ providers }) { + providers.registerProvider({ + providerId: 'awsAlb', + factory: createProxyAuthProviderFactory({ + authenticator: awsAlbAuthenticator, + signInResolverFactories: { + ...commonSignInResolvers, + ...awsAlbSignInResolvers, + }, + }), + }); + }, + }); + }, +}); diff --git a/plugins/auth-backend-module-aws-alb-provider/src/resolvers.ts b/plugins/auth-backend-module-aws-alb-provider/src/resolvers.ts new file mode 100644 index 0000000000..602498ed57 --- /dev/null +++ b/plugins/auth-backend-module-aws-alb-provider/src/resolvers.ts @@ -0,0 +1,46 @@ +/* + * 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 { + createSignInResolverFactory, + SignInInfo, +} from '@backstage/plugin-auth-node'; +import { AwsAlbResult } from './types'; +/** + * Available sign-in resolvers for the Google auth provider. + * + * @public + */ +export namespace awsAlbSignInResolvers { + export const emailMatchingUserEntityProfileEmail = + createSignInResolverFactory({ + create() { + return async (info: SignInInfo, ctx) => { + if (!info.result.fullProfile.emails) { + throw new Error( + 'Login failed, user profile does not contain an email', + ); + } + return ctx.signInWithCatalogUser({ + filter: { + kind: ['User'], + 'spec.profile.email': info.result.fullProfile.emails[0].value, + }, + }); + }; + }, + }); +} diff --git a/plugins/auth-backend-module-aws-alb-provider/src/types.ts b/plugins/auth-backend-module-aws-alb-provider/src/types.ts new file mode 100644 index 0000000000..0bd3f9e74f --- /dev/null +++ b/plugins/auth-backend-module-aws-alb-provider/src/types.ts @@ -0,0 +1,46 @@ +/* + * 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 passport from 'passport'; + +/** + * JWT header extraction result, containing the raw value and the parsed JWT + * payload. + * + * @public + */ +export type AwsAlbResult = { + fullProfile: PassportProfile; + expiresInSeconds?: number; + accessToken: string; +}; +/** + * @public + */ +export type PassportProfile = passport.Profile & { + avatarUrl?: string; +}; + +export type AwsAlbClaims = { + sub: string; + name: string; + family_name: string; + given_name: string; + picture: string; + email: string; + exp: number; + iss: string; +}; diff --git a/plugins/auth-backend/api-report.md b/plugins/auth-backend/api-report.md index c269a09d2c..72dfac3186 100644 --- a/plugins/auth-backend/api-report.md +++ b/plugins/auth-backend/api-report.md @@ -8,6 +8,7 @@ import { AuthProviderFactory as AuthProviderFactory_2 } from '@backstage/plugin- import { AuthProviderRouteHandlers as AuthProviderRouteHandlers_2 } from '@backstage/plugin-auth-node'; import { AuthResolverCatalogUserQuery as AuthResolverCatalogUserQuery_2 } from '@backstage/plugin-auth-node'; import { AuthResolverContext as AuthResolverContext_2 } from '@backstage/plugin-auth-node'; +import { AwsAlbResult as AwsAlbResult_2 } from '@backstage/plugin-auth-backend-module-aws-alb-provider'; import { BackendFeature } from '@backstage/backend-plugin-api'; import { BackstageSignInResult } from '@backstage/plugin-auth-node'; import { CacheService } from '@backstage/backend-plugin-api'; @@ -72,12 +73,8 @@ export type AuthResolverContext = AuthResolverContext_2; // @public @deprecated (undocumented) export type AuthResponse = ClientAuthResponse; -// @public (undocumented) -export type AwsAlbResult = { - fullProfile: Profile; - expiresInSeconds?: number; - accessToken: string; -}; +// @public @deprecated +export type AwsAlbResult = AwsAlbResult_2; // @public (undocumented) export type BitbucketOAuthResult = { @@ -400,9 +397,9 @@ export const providers: Readonly<{ create: ( options?: | { - authHandler?: AuthHandler | undefined; + authHandler?: AuthHandler | undefined; signIn: { - resolver: SignInResolver; + resolver: SignInResolver; }; } | undefined, diff --git a/plugins/auth-backend/package.json b/plugins/auth-backend/package.json index af5bd43f44..1ffa65c055 100644 --- a/plugins/auth-backend/package.json +++ b/plugins/auth-backend/package.json @@ -39,6 +39,7 @@ "@backstage/config": "workspace:^", "@backstage/errors": "workspace:^", "@backstage/plugin-auth-backend-module-atlassian-provider": "workspace:^", + "@backstage/plugin-auth-backend-module-aws-alb-provider": "workspace:^", "@backstage/plugin-auth-backend-module-gcp-iap-provider": "workspace:^", "@backstage/plugin-auth-backend-module-github-provider": "workspace:^", "@backstage/plugin-auth-backend-module-gitlab-provider": "workspace:^", diff --git a/plugins/auth-backend/src/providers/aws-alb/index.ts b/plugins/auth-backend/src/providers/aws-alb/index.ts index 9b3e8920ac..6784888b1f 100644 --- a/plugins/auth-backend/src/providers/aws-alb/index.ts +++ b/plugins/auth-backend/src/providers/aws-alb/index.ts @@ -15,4 +15,4 @@ */ export { awsAlb } from './provider'; -export type { AwsAlbResult } from './provider'; +export type { AwsAlbResult } from './types'; diff --git a/plugins/auth-backend/src/providers/aws-alb/provider.test.ts b/plugins/auth-backend/src/providers/aws-alb/provider.test.ts deleted file mode 100644 index 6ba545191b..0000000000 --- a/plugins/auth-backend/src/providers/aws-alb/provider.test.ts +++ /dev/null @@ -1,287 +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 express from 'express'; -import { jwtVerify } from 'jose'; -import { - ALB_ACCESS_TOKEN_HEADER, - ALB_JWT_HEADER, - AwsAlbAuthProvider, -} from './provider'; -import { makeProfileInfo } from '../../lib/passport'; -import { AuthResolverContext } from '../types'; -import { AuthenticationError } from '@backstage/errors'; - -const jwtMock = jwtVerify as jest.Mocked; - -const mockKey = async () => { - return `-----BEGIN PUBLIC KEY----- -MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEnuN4LlaJhaUpx+qZFTzYCrSBLk0I -yOlxJ2VW88mLAQGJ7HPAvOdylxZsItMnzCuqNzZvie8m/NJsOjhDncVkrw== ------END PUBLIC KEY----- -`; -}; -const mockJwt = - 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IktFWV9JRCIsImlzcyI6IklTU1VFUl9VUkwifQ.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IlVzZXIgTmFtZSIsImlhdCI6MTUxNjIzOTAyMn0.uMCSBGhij1xn5pnot8XgD-huQuTIBOFGs6kkW_p_X94'; -const mockAccessToken = 'ACCESS_TOKEN'; -const mockClaims = { - sub: '1234567890', - name: 'User Name', - family_name: 'Name', - given_name: 'User', - picture: 'PICTURE_URL', - email: 'user.name@email.test', - exp: 1632833763, - iss: 'ISSUER_URL', -}; - -jest.mock('jose'); -jest.mock('node-fetch', () => ({ - __esModule: true, - default: async () => { - return { - text: async () => { - return mockKey(); - }, - }; - }, -})); - -beforeEach(() => { - jest.clearAllMocks(); -}); - -describe('AwsAlbAuthProvider', () => { - const mockRequest = { - header: jest.fn(name => { - if (name === ALB_JWT_HEADER) { - return mockJwt; - } else if (name === ALB_ACCESS_TOKEN_HEADER) { - return mockAccessToken; - } - return undefined; - }), - } as unknown as express.Request; - const mockRequestWithoutJwt = { - header: jest.fn(name => { - if (name === ALB_ACCESS_TOKEN_HEADER) { - return mockAccessToken; - } - return undefined; - }), - } as unknown as express.Request; - const mockRequestWithoutAccessToken = { - header: jest.fn(name => { - if (name === ALB_JWT_HEADER) { - return mockJwt; - } - return undefined; - }), - } as unknown as express.Request; - - const mockResponse = { - end: jest.fn(), - header: () => jest.fn(), - json: jest.fn().mockReturnThis(), - status: jest.fn(), - } as unknown as express.Response; - - describe('should transform to type AwsAlbResponse', () => { - it('when JWT is valid and identity is resolved successfully', async () => { - const provider = new AwsAlbAuthProvider({ - region: 'eu-west-1', - issuer: 'ISSUER_URL', - resolverContext: {} as AuthResolverContext, - authHandler: async ({ fullProfile }) => ({ - profile: makeProfileInfo(fullProfile), - }), - signInResolver: async () => { - return { - token: - 'eyblob.eyJzdWIiOiJ1c2VyOmRlZmF1bHQvamltbXltYXJrdW0iLCJlbnQiOlsidXNlcjpkZWZhdWx0L2ppbW15bWFya3VtIl19.eyblob', - }; - }, - }); - - jwtMock.mockReturnValueOnce(Promise.resolve({ payload: mockClaims })); - - await provider.refresh(mockRequest, mockResponse); - - expect(mockResponse.json).toHaveBeenCalledWith({ - backstageIdentity: { - token: - 'eyblob.eyJzdWIiOiJ1c2VyOmRlZmF1bHQvamltbXltYXJrdW0iLCJlbnQiOlsidXNlcjpkZWZhdWx0L2ppbW15bWFya3VtIl19.eyblob', - identity: { - ownershipEntityRefs: ['user:default/jimmymarkum'], - type: 'user', - userEntityRef: 'user:default/jimmymarkum', - }, - }, - profile: { - displayName: 'User Name', - email: 'user.name@email.test', - picture: 'PICTURE_URL', - }, - providerInfo: { - accessToken: mockAccessToken, - expiresInSeconds: mockClaims.exp, - }, - }); - }); - }); - - describe('should fail when', () => { - it('Access token is missing', async () => { - const provider = new AwsAlbAuthProvider({ - region: 'eu-west-1', - issuer: 'ISSUER_URL', - resolverContext: {} as AuthResolverContext, - authHandler: async ({ fullProfile }) => ({ - profile: makeProfileInfo(fullProfile), - }), - signInResolver: async () => { - return { id: 'user.name', token: 'TOKEN' }; - }, - }); - - await expect( - provider.refresh(mockRequestWithoutAccessToken, mockResponse), - ).rejects.toThrow(AuthenticationError); - }); - - it('JWT is missing', async () => { - const provider = new AwsAlbAuthProvider({ - region: 'eu-west-1', - issuer: 'ISSUER_URL', - resolverContext: {} as AuthResolverContext, - authHandler: async ({ fullProfile }) => ({ - profile: makeProfileInfo(fullProfile), - }), - signInResolver: async () => { - return { id: 'user.name', token: 'TOKEN' }; - }, - }); - - await expect( - provider.refresh(mockRequestWithoutJwt, mockResponse), - ).rejects.toThrow(AuthenticationError); - }); - - it('JWT is invalid', async () => { - const provider = new AwsAlbAuthProvider({ - region: 'eu-west-1', - issuer: 'ISSUER_URL', - resolverContext: {} as AuthResolverContext, - authHandler: async ({ fullProfile }) => ({ - profile: makeProfileInfo(fullProfile), - }), - signInResolver: async () => { - return { id: 'user.name', token: 'TOKEN' }; - }, - }); - - jwtMock.mockImplementationOnce(() => { - throw new Error('bad JWT'); - }); - - await expect(provider.refresh(mockRequest, mockResponse)).rejects.toThrow( - AuthenticationError, - ); - }); - - it('issuer is missing', async () => { - const provider = new AwsAlbAuthProvider({ - region: 'eu-west-1', - issuer: 'ISSUER_URL', - resolverContext: {} as AuthResolverContext, - authHandler: async ({ fullProfile }) => ({ - profile: makeProfileInfo(fullProfile), - }), - signInResolver: async () => { - return { id: 'user.name', token: 'TOKEN' }; - }, - }); - - jwtMock.mockReturnValueOnce({}); - - await expect(provider.refresh(mockRequest, mockResponse)).rejects.toThrow( - AuthenticationError, - ); - }); - - it('issuer is invalid', async () => { - const provider = new AwsAlbAuthProvider({ - region: 'eu-west-1', - issuer: 'ISSUER_URL', - resolverContext: {} as AuthResolverContext, - authHandler: async ({ fullProfile }) => ({ - profile: makeProfileInfo(fullProfile), - }), - signInResolver: async () => { - return { id: 'user.name', token: 'TOKEN' }; - }, - }); - - jwtMock.mockReturnValueOnce({ - iss: 'INVALID_ISSUE_URL', - }); - - await expect(provider.refresh(mockRequest, mockResponse)).rejects.toThrow( - AuthenticationError, - ); - }); - - it('SignInResolver rejects', async () => { - const provider = new AwsAlbAuthProvider({ - region: 'eu-west-1', - issuer: 'ISSUER_URL', - resolverContext: {} as AuthResolverContext, - authHandler: async ({ fullProfile }) => ({ - profile: makeProfileInfo(fullProfile), - }), - signInResolver: async () => { - throw new Error(); - }, - }); - - jwtMock.mockReturnValueOnce(mockClaims); - - await expect(provider.refresh(mockRequest, mockResponse)).rejects.toThrow( - AuthenticationError, - ); - }); - - it('AuthHandler rejects', async () => { - const provider = new AwsAlbAuthProvider({ - region: 'eu-west-1', - issuer: 'ISSUER_URL', - resolverContext: {} as AuthResolverContext, - authHandler: async () => { - throw new Error(); - }, - signInResolver: async () => { - return { id: 'user.name', token: 'TOKEN' }; - }, - }); - - jwtMock.mockReturnValueOnce(mockClaims); - - await expect(provider.refresh(mockRequest, mockResponse)).rejects.toThrow( - AuthenticationError, - ); - }); - }); -}); diff --git a/plugins/auth-backend/src/providers/aws-alb/provider.ts b/plugins/auth-backend/src/providers/aws-alb/provider.ts index 5af606539e..3883bbc88c 100644 --- a/plugins/auth-backend/src/providers/aws-alb/provider.ts +++ b/plugins/auth-backend/src/providers/aws-alb/provider.ts @@ -15,202 +15,13 @@ */ import { - AuthHandler, - AuthProviderRouteHandlers, - AuthResolverContext, - AuthResponse, - SignInResolver, -} from '../types'; -import express from 'express'; -import fetch from 'node-fetch'; -import * as crypto from 'crypto'; -import { KeyObject } from 'crypto'; -import NodeCache from 'node-cache'; -import { JWTHeaderParameters, jwtVerify } from 'jose'; -import { Profile as PassportProfile } from 'passport'; -import { makeProfileInfo } from '../../lib/passport'; -import { AuthenticationError } from '@backstage/errors'; -import { prepareBackstageIdentityResponse } from '../prepareBackstageIdentityResponse'; + AwsAlbResult, + awsAlbAuthenticator, +} from '@backstage/plugin-auth-backend-module-aws-alb-provider'; +import { createProxyAuthProviderFactory } from '@backstage/plugin-auth-node'; +import { AuthHandler, SignInResolver } from '../types'; import { createAuthProviderIntegration } from '../createAuthProviderIntegration'; -export const ALB_JWT_HEADER = 'x-amzn-oidc-data'; -export const ALB_ACCESS_TOKEN_HEADER = 'x-amzn-oidc-accesstoken'; - -type Options = { - region: string; - issuer?: string; - authHandler: AuthHandler; - signInResolver: SignInResolver; - resolverContext: AuthResolverContext; -}; - -export type AwsAlbHeaders = { - alg: string; - kid: string; - signer: string; - iss: string; - client: string; - exp: number; -}; - -export type AwsAlbClaims = { - sub: string; - name: string; - family_name: string; - given_name: string; - picture: string; - email: string; - exp: number; - iss: string; -}; - -/** @public */ -export type AwsAlbResult = { - fullProfile: PassportProfile; - expiresInSeconds?: number; - accessToken: string; -}; - -export type AwsAlbProviderInfo = { - /** - * An access token issued for the signed in user. - */ - accessToken: string; - /** - * Expiry of the access token in seconds. - */ - expiresInSeconds?: number; -}; - -export type AwsAlbResponse = AuthResponse; - -export class AwsAlbAuthProvider implements AuthProviderRouteHandlers { - private readonly region: string; - private readonly issuer?: string; - private readonly resolverContext: AuthResolverContext; - private readonly keyCache: NodeCache; - private readonly authHandler: AuthHandler; - private readonly signInResolver: SignInResolver; - - constructor(options: Options) { - this.region = options.region; - this.issuer = options.issuer; - this.authHandler = options.authHandler; - this.signInResolver = options.signInResolver; - this.resolverContext = options.resolverContext; - this.keyCache = new NodeCache({ stdTTL: 3600 }); - } - - frameHandler(): Promise { - return Promise.resolve(undefined); - } - - async refresh(req: express.Request, res: express.Response): Promise { - try { - const result = await this.getResult(req); - const response = await this.handleResult(result); - res.json(response); - } catch (e) { - throw new AuthenticationError( - 'Exception occurred during AWS ALB token refresh', - e, - ); - } - } - - start(): Promise { - return Promise.resolve(undefined); - } - - private async getResult(req: express.Request): Promise { - const jwt = req.header(ALB_JWT_HEADER); - const accessToken = req.header(ALB_ACCESS_TOKEN_HEADER); - - if (jwt === undefined) { - throw new AuthenticationError( - `Missing ALB OIDC header: ${ALB_JWT_HEADER}`, - ); - } - - if (accessToken === undefined) { - throw new AuthenticationError( - `Missing ALB OIDC header: ${ALB_ACCESS_TOKEN_HEADER}`, - ); - } - - try { - const verifyResult = await jwtVerify(jwt, this.getKey); - const claims = verifyResult.payload as AwsAlbClaims; - - if (this.issuer && claims.iss !== this.issuer) { - throw new AuthenticationError('Issuer mismatch on JWT token'); - } - - const fullProfile: PassportProfile = { - provider: 'unknown', - id: claims.sub, - displayName: claims.name, - username: claims.email.split('@')[0].toLowerCase(), - name: { - familyName: claims.family_name, - givenName: claims.given_name, - }, - emails: [{ value: claims.email.toLowerCase() }], - photos: [{ value: claims.picture }], - }; - - return { - fullProfile, - expiresInSeconds: claims.exp, - accessToken, - }; - } catch (e) { - throw new Error(`Exception occurred during JWT processing: ${e}`); - } - } - - private async handleResult(result: AwsAlbResult): Promise { - const { profile } = await this.authHandler(result, this.resolverContext); - const backstageIdentity = await this.signInResolver( - { - result, - profile, - }, - this.resolverContext, - ); - - return { - providerInfo: { - accessToken: result.accessToken, - expiresInSeconds: result.expiresInSeconds, - }, - backstageIdentity: prepareBackstageIdentityResponse(backstageIdentity), - profile, - }; - } - - getKey = async (header: JWTHeaderParameters): Promise => { - if (!header.kid) { - throw new AuthenticationError('No key id was specified in header'); - } - const optionalCacheKey = this.keyCache.get(header.kid); - if (optionalCacheKey) { - return crypto.createPublicKey(optionalCacheKey); - } - const keyText: string = await fetch( - `https://public-keys.auth.elb.${encodeURIComponent( - this.region, - )}.amazonaws.com/${encodeURIComponent(header.kid)}`, - ).then(response => response.text()); - const keyValue = crypto.createPublicKey(keyText); - this.keyCache.set( - header.kid, - keyValue.export({ format: 'pem', type: 'spki' }), - ); - return keyValue; - }; -} - /** * Auth provider integration for AWS ALB auth * @@ -219,13 +30,14 @@ export class AwsAlbAuthProvider implements AuthProviderRouteHandlers { export const awsAlb = createAuthProviderIntegration({ create(options?: { /** - * The profile transformation function used to verify and convert the auth response - * into the profile that will be presented to the user. + * The profile transformation function used to verify and convert the auth + * response into the profile that will be presented to the user. The default + * implementation just provides the authenticated email that the IAP + * presented. */ authHandler?: AuthHandler; - /** - * Configure sign-in for this provider, without it the provider can not be used to sign users in. + * Configures sign-in for this provider. */ signIn: { /** @@ -234,29 +46,10 @@ export const awsAlb = createAuthProviderIntegration({ resolver: SignInResolver; }; }) { - return ({ config, resolverContext }) => { - const region = config.getString('region'); - const issuer = config.getOptionalString('iss'); - - if (options?.signIn.resolver === undefined) { - throw new Error( - 'SignInResolver is required to use this authentication provider', - ); - } - - const authHandler: AuthHandler = options?.authHandler - ? options.authHandler - : async ({ fullProfile }) => ({ - profile: makeProfileInfo(fullProfile), - }); - - return new AwsAlbAuthProvider({ - region, - issuer, - signInResolver: options?.signIn.resolver, - authHandler, - resolverContext, - }); - }; + return createProxyAuthProviderFactory({ + authenticator: awsAlbAuthenticator, + profileTransform: options?.authHandler, + signInResolver: options?.signIn?.resolver, + }); }, }); diff --git a/plugins/auth-backend/src/providers/aws-alb/types.ts b/plugins/auth-backend/src/providers/aws-alb/types.ts new file mode 100644 index 0000000000..2640a4a7be --- /dev/null +++ b/plugins/auth-backend/src/providers/aws-alb/types.ts @@ -0,0 +1,26 @@ +/* + * Copyright 2021 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 { AwsAlbResult as _AwsAlbResult } from '@backstage/plugin-auth-backend-module-aws-alb-provider'; + +/** + * The result of the initial auth challenge. This is the input to the auth + * callbacks. + * + * @public + * @deprecated import from `@backstage/plugin-auth-backend-module-aws-alb-provider` instead + */ +export type AwsAlbResult = _AwsAlbResult; diff --git a/yarn.lock b/yarn.lock index fd0650d51c..ef06cce840 100644 --- a/yarn.lock +++ b/yarn.lock @@ -12,7 +12,7 @@ __metadata: languageName: node linkType: hard -"@adobe/css-tools@npm:^4.3.1": +"@adobe/css-tools@npm:^4.3.2": version: 4.3.2 resolution: "@adobe/css-tools@npm:4.3.2" checksum: 9667d61d55dc3b0a315c530ae84e016ce5267c4dd8ac00abb40108dc98e07b98e3090ce8b87acd51a41a68d9e84dcccb08cdf21c902572a9cf9dcaf830da4ae3 @@ -1535,7 +1535,7 @@ __metadata: languageName: node linkType: hard -"@azure/core-util@npm:^1.0.0, @azure/core-util@npm:^1.1.0, @azure/core-util@npm:^1.1.1, @azure/core-util@npm:^1.2.0, @azure/core-util@npm:^1.3.0, @azure/core-util@npm:^1.6.1": +"@azure/core-util@npm:^1.0.0, @azure/core-util@npm:^1.1.0, @azure/core-util@npm:^1.1.1, @azure/core-util@npm:^1.2.0, @azure/core-util@npm:^1.3.0": version: 1.6.1 resolution: "@azure/core-util@npm:1.6.1" dependencies: @@ -1545,28 +1545,6 @@ __metadata: languageName: node linkType: hard -"@azure/identity@npm:^3.2.1": - version: 3.4.1 - resolution: "@azure/identity@npm:3.4.1" - dependencies: - "@azure/abort-controller": ^1.0.0 - "@azure/core-auth": ^1.5.0 - "@azure/core-client": ^1.4.0 - "@azure/core-rest-pipeline": ^1.1.0 - "@azure/core-tracing": ^1.0.0 - "@azure/core-util": ^1.6.1 - "@azure/logger": ^1.0.0 - "@azure/msal-browser": ^3.5.0 - "@azure/msal-node": ^2.5.1 - events: ^3.0.0 - jws: ^4.0.0 - open: ^8.0.0 - stoppable: ^1.1.0 - tslib: ^2.2.0 - checksum: dedb09a5073503fda3e5bf23a76e4839627ee6724967e2a26fd536322c3907e19ff04bf9c3ad2716a4eecc2f602e03be3be1230271a572fc3f44879c737014c4 - languageName: node - linkType: hard - "@azure/identity@npm:^4.0.0": version: 4.0.0 resolution: "@azure/identity@npm:4.0.0" @@ -1677,13 +1655,13 @@ __metadata: languageName: node linkType: hard -"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.16.0, @babel/code-frame@npm:^7.16.7, @babel/code-frame@npm:^7.18.6, @babel/code-frame@npm:^7.22.13, @babel/code-frame@npm:^7.8.3": - version: 7.22.13 - resolution: "@babel/code-frame@npm:7.22.13" +"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.16.0, @babel/code-frame@npm:^7.16.7, @babel/code-frame@npm:^7.18.6, @babel/code-frame@npm:^7.22.13, @babel/code-frame@npm:^7.23.5, @babel/code-frame@npm:^7.8.3": + version: 7.23.5 + resolution: "@babel/code-frame@npm:7.23.5" dependencies: - "@babel/highlight": ^7.22.13 + "@babel/highlight": ^7.23.4 chalk: ^2.4.2 - checksum: 22e342c8077c8b77eeb11f554ecca2ba14153f707b85294fcf6070b6f6150aae88a7b7436dd88d8c9289970585f3fe5b9b941c5aa3aa26a6d5a8ef3f292da058 + checksum: d90981fdf56a2824a9b14d19a4c0e8db93633fd488c772624b4e83e0ceac6039a27cd298a247c3214faa952bf803ba23696172ae7e7235f3b97f43ba278c569a languageName: node linkType: hard @@ -1694,38 +1672,38 @@ __metadata: languageName: node linkType: hard -"@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.19.6, @babel/core@npm:^7.23.0, @babel/core@npm:^7.23.3": - version: 7.23.3 - resolution: "@babel/core@npm:7.23.3" +"@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.19.6, @babel/core@npm:^7.23.0, @babel/core@npm:^7.23.5": + version: 7.23.5 + resolution: "@babel/core@npm:7.23.5" dependencies: "@ampproject/remapping": ^2.2.0 - "@babel/code-frame": ^7.22.13 - "@babel/generator": ^7.23.3 + "@babel/code-frame": ^7.23.5 + "@babel/generator": ^7.23.5 "@babel/helper-compilation-targets": ^7.22.15 "@babel/helper-module-transforms": ^7.23.3 - "@babel/helpers": ^7.23.2 - "@babel/parser": ^7.23.3 + "@babel/helpers": ^7.23.5 + "@babel/parser": ^7.23.5 "@babel/template": ^7.22.15 - "@babel/traverse": ^7.23.3 - "@babel/types": ^7.23.3 + "@babel/traverse": ^7.23.5 + "@babel/types": ^7.23.5 convert-source-map: ^2.0.0 debug: ^4.1.0 gensync: ^1.0.0-beta.2 json5: ^2.2.3 semver: ^6.3.1 - checksum: d306c1fa68972f4e085e9e7ad165aee80eb801ef331f6f07808c86309f03534d638b82ad00a3bc08f4d3de4860ccd38512b2790a39e6acc2caf9ea21e526afe7 + checksum: 5e5dfb1e61f298676f1fca18c646dbf6fb164ca1056b0169b8d42b7f5c35e026d81823582ccb2358e93a61b035e22b3ad37e2abaae4bf43f1ffb93b6ce19466e languageName: node linkType: hard -"@babel/generator@npm:^7.23.3, @babel/generator@npm:^7.7.2": - version: 7.23.3 - resolution: "@babel/generator@npm:7.23.3" +"@babel/generator@npm:^7.23.5, @babel/generator@npm:^7.7.2": + version: 7.23.5 + resolution: "@babel/generator@npm:7.23.5" dependencies: - "@babel/types": ^7.23.3 + "@babel/types": ^7.23.5 "@jridgewell/gen-mapping": ^0.3.2 "@jridgewell/trace-mapping": ^0.3.17 jsesc: ^2.5.1 - checksum: b6e71cca852d4e1aa01a28a30b8c74ffc3b8d56ccb7ae3ee783028ee015f63ad861a2e386c3eb490a9a8634db485a503a33521680f4af510151e90346c46da17 + checksum: 845ddda7cf38a3edf4be221cc8a439dee9ea6031355146a1a74047aa8007bc030305b27d8c68ec9e311722c910610bde38c0e13a9ce55225251e7cb7e7f3edc8 languageName: node linkType: hard @@ -1935,10 +1913,10 @@ __metadata: languageName: node linkType: hard -"@babel/helper-string-parser@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-string-parser@npm:7.22.5" - checksum: 836851ca5ec813077bbb303acc992d75a360267aa3b5de7134d220411c852a6f17de7c0d0b8c8dcc0f567f67874c00f4528672b2a4f1bc978a3ada64c8c78467 +"@babel/helper-string-parser@npm:^7.23.4": + version: 7.23.4 + resolution: "@babel/helper-string-parser@npm:7.23.4" + checksum: c0641144cf1a7e7dc93f3d5f16d5327465b6cf5d036b48be61ecba41e1eece161b48f46b7f960951b67f8c3533ce506b16dece576baef4d8b3b49f8c65410f90 languageName: node linkType: hard @@ -1967,34 +1945,34 @@ __metadata: languageName: node linkType: hard -"@babel/helpers@npm:^7.23.2": - version: 7.23.2 - resolution: "@babel/helpers@npm:7.23.2" +"@babel/helpers@npm:^7.23.5": + version: 7.23.5 + resolution: "@babel/helpers@npm:7.23.5" dependencies: "@babel/template": ^7.22.15 - "@babel/traverse": ^7.23.2 - "@babel/types": ^7.23.0 - checksum: aaf4828df75ec460eaa70e5c9f66e6dadc28dae3728ddb7f6c13187dbf38030e142194b83d81aa8a31bbc35a5529a5d7d3f3cf59d5d0b595f5dd7f9d8f1ced8e + "@babel/traverse": ^7.23.5 + "@babel/types": ^7.23.5 + checksum: c16dc8a3bb3d0e02c7ee1222d9d0865ed4b92de44fb8db43ff5afd37a0fc9ea5e2906efa31542c95b30c1a3a9540d66314663c9a23b5bb9b5ec76e8ebc896064 languageName: node linkType: hard -"@babel/highlight@npm:^7.0.0, @babel/highlight@npm:^7.22.13": - version: 7.22.20 - resolution: "@babel/highlight@npm:7.22.20" +"@babel/highlight@npm:^7.0.0, @babel/highlight@npm:^7.23.4": + version: 7.23.4 + resolution: "@babel/highlight@npm:7.23.4" dependencies: "@babel/helper-validator-identifier": ^7.22.20 chalk: ^2.4.2 js-tokens: ^4.0.0 - checksum: 84bd034dca309a5e680083cd827a766780ca63cef37308404f17653d32366ea76262bd2364b2d38776232f2d01b649f26721417d507e8b4b6da3e4e739f6d134 + checksum: 643acecdc235f87d925979a979b539a5d7d1f31ae7db8d89047269082694122d11aa85351304c9c978ceeb6d250591ccadb06c366f358ccee08bb9c122476b89 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.22.15, @babel/parser@npm:^7.23.0, @babel/parser@npm:^7.23.3": - version: 7.23.3 - resolution: "@babel/parser@npm:7.23.3" +"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.22.15, @babel/parser@npm:^7.23.0, @babel/parser@npm:^7.23.5": + version: 7.23.5 + resolution: "@babel/parser@npm:7.23.5" bin: parser: ./bin/babel-parser.js - checksum: 4aa7366e401b5467192c1dbf2bef99ac0958c45ef69ed6704abbae68f98fab6409a527b417d1528fddc49d7664450670528adc7f45abb04db5fafca7ed766d57 + checksum: ea763629310f71580c4a3ea9d3705195b7ba994ada2cc98f9a584ebfdacf54e92b2735d351672824c2c2b03c7f19206899f4d95650d85ce514a822b19a8734c7 languageName: node linkType: hard @@ -3131,22 +3109,22 @@ __metadata: languageName: node linkType: hard -"@babel/runtime-corejs3@npm:^7.20.7, @babel/runtime-corejs3@npm:^7.22.15, @babel/runtime-corejs3@npm:^7.23.2": - version: 7.23.2 - resolution: "@babel/runtime-corejs3@npm:7.23.2" +"@babel/runtime-corejs3@npm:^7.20.7, @babel/runtime-corejs3@npm:^7.22.15, @babel/runtime-corejs3@npm:^7.23.5": + version: 7.23.6 + resolution: "@babel/runtime-corejs3@npm:7.23.6" dependencies: core-js-pure: ^3.30.2 regenerator-runtime: ^0.14.0 - checksum: 922f25c47996a8af604cea82441e41be8b11910e96c662511e54120078f4c64258c045a28a311467a8f14a0c17f46a1f057f7c0501e567869a4343a6ce017962 + checksum: 92576ea17ff674025aa3cd208bfb8301e4bde432cfa404b56f94242948cbd40125c1a4c9c54a99134e08ded8bcde305633a22b1f4c676687c3b868557d23b762 languageName: node linkType: hard -"@babel/runtime@npm:^7.0.0, @babel/runtime@npm:^7.1.2, @babel/runtime@npm:^7.10.1, @babel/runtime@npm:^7.12.1, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.13.10, @babel/runtime@npm:^7.15.4, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.18.6, @babel/runtime@npm:^7.2.0, @babel/runtime@npm:^7.20.1, @babel/runtime@npm:^7.20.13, @babel/runtime@npm:^7.20.6, @babel/runtime@npm:^7.21.0, @babel/runtime@npm:^7.23.2, @babel/runtime@npm:^7.23.4, @babel/runtime@npm:^7.3.1, @babel/runtime@npm:^7.4.4, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.6.0, @babel/runtime@npm:^7.7.6, @babel/runtime@npm:^7.8.3, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.8.7, @babel/runtime@npm:^7.9.2": - version: 7.23.5 - resolution: "@babel/runtime@npm:7.23.5" +"@babel/runtime@npm:^7.0.0, @babel/runtime@npm:^7.1.2, @babel/runtime@npm:^7.10.1, @babel/runtime@npm:^7.12.1, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.13.10, @babel/runtime@npm:^7.15.4, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.18.6, @babel/runtime@npm:^7.2.0, @babel/runtime@npm:^7.20.1, @babel/runtime@npm:^7.20.13, @babel/runtime@npm:^7.20.6, @babel/runtime@npm:^7.21.0, @babel/runtime@npm:^7.23.2, @babel/runtime@npm:^7.23.6, @babel/runtime@npm:^7.3.1, @babel/runtime@npm:^7.4.4, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.6.0, @babel/runtime@npm:^7.7.6, @babel/runtime@npm:^7.8.3, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.8.7, @babel/runtime@npm:^7.9.2": + version: 7.23.6 + resolution: "@babel/runtime@npm:7.23.6" dependencies: regenerator-runtime: ^0.14.0 - checksum: 164d9802424f06908e62d29b8fd3a87db55accf82f46f964ac481dcead11ff7df8391e3696e5fa91a8ca10ea8845bf650acd730fa88cf13f8026cd8d5eec6936 + checksum: 1a8eaf3d3a103ef5227b60ca7ab5c589118c36ca65ef2d64e65380b32a98a3f3b5b3ef96660fa0471b079a18b619a8317f3e7f03ab2b930c45282a8b69ed9a16 languageName: node linkType: hard @@ -3161,32 +3139,32 @@ __metadata: languageName: node linkType: hard -"@babel/traverse@npm:^7.23.2, @babel/traverse@npm:^7.23.3, @babel/traverse@npm:^7.4.5": - version: 7.23.3 - resolution: "@babel/traverse@npm:7.23.3" +"@babel/traverse@npm:^7.23.5, @babel/traverse@npm:^7.4.5": + version: 7.23.5 + resolution: "@babel/traverse@npm:7.23.5" dependencies: - "@babel/code-frame": ^7.22.13 - "@babel/generator": ^7.23.3 + "@babel/code-frame": ^7.23.5 + "@babel/generator": ^7.23.5 "@babel/helper-environment-visitor": ^7.22.20 "@babel/helper-function-name": ^7.23.0 "@babel/helper-hoist-variables": ^7.22.5 "@babel/helper-split-export-declaration": ^7.22.6 - "@babel/parser": ^7.23.3 - "@babel/types": ^7.23.3 + "@babel/parser": ^7.23.5 + "@babel/types": ^7.23.5 debug: ^4.1.0 globals: ^11.1.0 - checksum: f4e0c05f2f82368b9be7e1fed38cfcc2e1074967a8b76ac837b89661adbd391e99d0b1fd8c31215ffc3a04d2d5d7ee5e627914a09082db84ec5606769409fe2b + checksum: 0558b05360850c3ad6384e85bd55092126a8d5f93e29a8e227dd58fa1f9e1a4c25fd337c07c7ae509f0983e7a2b1e761ffdcfaa77a1e1bedbc867058e1de5a7d languageName: node linkType: hard -"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.22.10, @babel/types@npm:^7.22.15, @babel/types@npm:^7.22.5, @babel/types@npm:^7.23.0, @babel/types@npm:^7.23.3, @babel/types@npm:^7.3.0, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4, @babel/types@npm:^7.8.3": - version: 7.23.3 - resolution: "@babel/types@npm:7.23.3" +"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.22.10, @babel/types@npm:^7.22.15, @babel/types@npm:^7.22.5, @babel/types@npm:^7.23.0, @babel/types@npm:^7.23.5, @babel/types@npm:^7.3.0, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4, @babel/types@npm:^7.8.3": + version: 7.23.5 + resolution: "@babel/types@npm:7.23.5" dependencies: - "@babel/helper-string-parser": ^7.22.5 + "@babel/helper-string-parser": ^7.23.4 "@babel/helper-validator-identifier": ^7.22.20 to-fast-properties: ^2.0.0 - checksum: b96f1ec495351aeb2a5f98dd494aafa17df02a351548ae96999460f35c933261c839002a34c1e83552ff0d9f5e94d0b5b8e105d38131c7c9b0f5a6588676f35d + checksum: 3d21774480a459ef13b41c2e32700d927af649e04b70c5d164814d8e04ab584af66a93330602c2925e1a6925c2b829cc153418a613a4e7d79d011be1f29ad4b2 languageName: node linkType: hard @@ -3490,14 +3468,15 @@ __metadata: languageName: unknown linkType: soft -"@backstage/catalog-client@npm:^1.4.6": - version: 1.4.6 - resolution: "@backstage/catalog-client@npm:1.4.6" +"@backstage/catalog-client@npm:^1.5.0": + version: 1.5.1 + resolution: "@backstage/catalog-client@npm:1.5.1" dependencies: "@backstage/catalog-model": ^1.4.3 "@backstage/errors": ^1.2.3 cross-fetch: ^4.0.0 - checksum: c62b479ea8865c23046f742d75db5fb36827627e78cfdff64e713eb72abd11fef071b8150c07e695e5e6d879d257a8a9dc85ec132b7c64229c6a0bd2ef821200 + uri-template: ^2.0.0 + checksum: 786fa1bafba3d44d88855d8479879577e33816f1f9d2e110b275fc22ca4348f8dce0ebe789d580786a38e9986989c98172f7a07c1e2145b8da689608a2aa4ec2 languageName: node linkType: hard @@ -3886,21 +3865,21 @@ __metadata: languageName: node linkType: hard -"@backstage/core-components@npm:^0.13.8": - version: 0.13.8 - resolution: "@backstage/core-components@npm:0.13.8" +"@backstage/core-components@npm:^0.13.8, @backstage/core-components@npm:^0.13.9": + version: 0.13.9 + resolution: "@backstage/core-components@npm:0.13.9" dependencies: "@backstage/config": ^1.1.1 - "@backstage/core-plugin-api": ^1.8.0 + "@backstage/core-plugin-api": ^1.8.1 "@backstage/errors": ^1.2.3 - "@backstage/theme": ^0.4.4 + "@backstage/theme": ^0.5.0 "@backstage/version-bridge": ^1.0.7 "@date-io/core": ^1.3.13 "@material-table/core": ^3.1.0 "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 "@material-ui/lab": 4.0.0-alpha.61 - "@react-hookz/web": ^20.0.0 + "@react-hookz/web": ^23.0.0 "@types/react": ^16.13.1 || ^17.0.0 "@types/react-sparklines": ^1.7.0 "@types/react-text-truncate": ^0.14.0 @@ -3912,8 +3891,8 @@ __metadata: dagre: ^0.8.5 history: ^5.0.0 immer: ^9.0.1 - linkify-react: 4.1.2 - linkifyjs: 4.1.2 + linkify-react: 4.1.3 + linkifyjs: 4.1.3 lodash: ^4.17.21 pluralize: ^8.0.0 qs: ^6.9.4 @@ -3930,12 +3909,12 @@ __metadata: react-window: ^1.8.6 remark-gfm: ^3.0.1 zen-observable: ^0.10.0 - zod: ^3.21.4 + zod: ^3.22.4 peerDependencies: react: ^16.13.1 || ^17.0.0 || ^18.0.0 react-dom: ^16.13.1 || ^17.0.0 || ^18.0.0 react-router-dom: 6.0.0-beta.0 || ^6.3.0 - checksum: 45bbf5af46837611c8c7fecde2afba49b2f958f9a8f047fe956b382a9a420a7e80c29f56ac2a5ecc8aa43e87c3b7a8446256d42aa642171f3439b5dd2a84bb0b + checksum: 6674d70f5043cf2a6bca0097ce5fa2d1cb6594a4870c3c64e357ac9cc54b85e33502e9257918c9eebb3e87249d798ee9e223eacc5b02014b4196bd0f9804c2ac languageName: node linkType: hard @@ -4012,9 +3991,9 @@ __metadata: languageName: unknown linkType: soft -"@backstage/core-plugin-api@npm:^1.3.0, @backstage/core-plugin-api@npm:^1.5.0, @backstage/core-plugin-api@npm:^1.8.0": - version: 1.8.0 - resolution: "@backstage/core-plugin-api@npm:1.8.0" +"@backstage/core-plugin-api@npm:^1.3.0, @backstage/core-plugin-api@npm:^1.5.0, @backstage/core-plugin-api@npm:^1.8.0, @backstage/core-plugin-api@npm:^1.8.1": + version: 1.8.1 + resolution: "@backstage/core-plugin-api@npm:1.8.1" dependencies: "@backstage/config": ^1.1.1 "@backstage/types": ^1.1.1 @@ -4026,7 +4005,7 @@ __metadata: react: ^16.13.1 || ^17.0.0 || ^18.0.0 react-dom: ^16.13.1 || ^17.0.0 || ^18.0.0 react-router-dom: 6.0.0-beta.0 || ^6.3.0 - checksum: 1f78c4737c0e30682a3169d967943698cb95b3dccea1e60bd72e82dd14847192f5180db658b8d0b6811d6fb13830085ca3ecc6ea0be58771d0b517f877c97bbb + checksum: 8fa85beb719f65b2dc2ab69df7e7354d280ce63ca163ce820dec43ac7ffe95ce1c3ae1175774f034ea3787cb997e0bc630f42b644b166b7f9929f6166e7c2607 languageName: node linkType: hard @@ -4175,23 +4154,24 @@ __metadata: languageName: unknown linkType: soft -"@backstage/frontend-plugin-api@npm:^0.3.0": - version: 0.3.0 - resolution: "@backstage/frontend-plugin-api@npm:0.3.0" +"@backstage/frontend-plugin-api@npm:^0.4.0": + version: 0.4.0 + resolution: "@backstage/frontend-plugin-api@npm:0.4.0" dependencies: - "@backstage/core-components": ^0.13.8 - "@backstage/core-plugin-api": ^1.8.0 + "@backstage/config": ^1.1.1 + "@backstage/core-components": ^0.13.9 + "@backstage/core-plugin-api": ^1.8.1 "@backstage/types": ^1.1.1 "@backstage/version-bridge": ^1.0.7 "@material-ui/core": ^4.12.4 "@types/react": ^16.13.1 || ^17.0.0 lodash: ^4.17.21 - zod: ^3.21.4 + zod: ^3.22.4 zod-to-json-schema: ^3.21.4 peerDependencies: react: ^16.13.1 || ^17.0.0 || ^18.0.0 react-router-dom: 6.0.0-beta.0 || ^6.3.0 - checksum: 195b0cd480839ff54a07aa37eb3bc644c321ecd6bce258159ba457f63dc79486b59c73180aaf6f7e824d0dbf8dfd9cb96fe8d5843d5e64467e44551f78419dc2 + checksum: 6b19944a070b8e0c0d9a33c39d50f0bf1a3dfb5884833bd96286508573528a4b254660f0044eeeeecf4f7d392b71a95e3b9665903d83cb27aa04625155284b2b languageName: node linkType: hard @@ -4257,13 +4237,13 @@ __metadata: languageName: unknown linkType: soft -"@backstage/integration-react@npm:^1.1.21": - version: 1.1.21 - resolution: "@backstage/integration-react@npm:1.1.21" +"@backstage/integration-react@npm:^1.1.21, @backstage/integration-react@npm:^1.1.22": + version: 1.1.22 + resolution: "@backstage/integration-react@npm:1.1.22" dependencies: "@backstage/config": ^1.1.1 - "@backstage/core-plugin-api": ^1.8.0 - "@backstage/integration": ^1.7.2 + "@backstage/core-plugin-api": ^1.8.1 + "@backstage/integration": ^1.8.0 "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 "@types/react": ^16.13.1 || ^17.0.0 @@ -4271,7 +4251,7 @@ __metadata: react: ^16.13.1 || ^17.0.0 || ^18.0.0 react-dom: ^16.13.1 || ^17.0.0 || ^18.0.0 react-router-dom: 6.0.0-beta.0 || ^6.3.0 - checksum: 5acbd36910954fd640eb586281436a579c08a5de8f1b226c86aab5028dcb3746190e740f5631d647e717f2c8aacde4a3efcd54fced7a75a8dcf5827c15213ab7 + checksum: 76fb82f1f947574259d393406bdc30919636e451dbbab357b640f70b2b8b869564fad10da74088f12b497996b84b8e3f55ddea355a9ee61c27f549a2805773a5 languageName: node linkType: hard @@ -4299,11 +4279,11 @@ __metadata: languageName: unknown linkType: soft -"@backstage/integration@npm:^1.7.2": - version: 1.7.2 - resolution: "@backstage/integration@npm:1.7.2" +"@backstage/integration@npm:^1.8.0": + version: 1.8.0 + resolution: "@backstage/integration@npm:1.8.0" dependencies: - "@azure/identity": ^3.2.1 + "@azure/identity": ^4.0.0 "@backstage/config": ^1.1.1 "@octokit/auth-app": ^4.0.0 "@octokit/rest": ^19.0.3 @@ -4311,7 +4291,7 @@ __metadata: git-url-parse: ^13.0.0 lodash: ^4.17.21 luxon: ^3.0.0 - checksum: 6e9c63ea9da6d8769eb8cd05db01f91be70dc13d86a09c7be9835b1f57dac4fb64a3089be3b84b5329b9bacc887cda1dec3860bb04c9f58f78c458f96c942384 + checksum: 2cf2956cf2d37e7e0a1c21e60e5bb2e435c4d1a70f63fe915932ee618f3b673c3907e0dc5832a8221a1592e3c8338f333768a9f9693b7ed3bd8e7af1d7ebb2cb languageName: node linkType: hard @@ -4751,6 +4731,27 @@ __metadata: languageName: unknown linkType: soft +"@backstage/plugin-auth-backend-module-aws-alb-provider@workspace:^, @backstage/plugin-auth-backend-module-aws-alb-provider@workspace:plugins/auth-backend-module-aws-alb-provider": + version: 0.0.0-use.local + resolution: "@backstage/plugin-auth-backend-module-aws-alb-provider@workspace:plugins/auth-backend-module-aws-alb-provider" + dependencies: + "@backstage/backend-common": "workspace:^" + "@backstage/backend-plugin-api": "workspace:^" + "@backstage/backend-test-utils": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/config": "workspace:^" + "@backstage/errors": "workspace:^" + "@backstage/plugin-auth-backend": "workspace:^" + "@backstage/plugin-auth-node": "workspace:^" + "@types/passport": ^1.0.3 + express: ^4.18.2 + jose: ^4.6.0 + jwt-decode: ^3.1.0 + node-cache: ^5.1.2 + passport: ^0.7.0 + languageName: unknown + linkType: soft + "@backstage/plugin-auth-backend-module-gcp-iap-provider@workspace:^, @backstage/plugin-auth-backend-module-gcp-iap-provider@workspace:plugins/auth-backend-module-gcp-iap-provider": version: 0.0.0-use.local resolution: "@backstage/plugin-auth-backend-module-gcp-iap-provider@workspace:plugins/auth-backend-module-gcp-iap-provider" @@ -4953,6 +4954,7 @@ __metadata: "@backstage/config": "workspace:^" "@backstage/errors": "workspace:^" "@backstage/plugin-auth-backend-module-atlassian-provider": "workspace:^" + "@backstage/plugin-auth-backend-module-aws-alb-provider": "workspace:^" "@backstage/plugin-auth-backend-module-gcp-iap-provider": "workspace:^" "@backstage/plugin-auth-backend-module-github-provider": "workspace:^" "@backstage/plugin-auth-backend-module-gitlab-provider": "workspace:^" @@ -5812,7 +5814,7 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-catalog-common@^1.0.10, @backstage/plugin-catalog-common@^1.0.18, @backstage/plugin-catalog-common@workspace:^, @backstage/plugin-catalog-common@workspace:plugins/catalog-common": +"@backstage/plugin-catalog-common@^1.0.10, @backstage/plugin-catalog-common@workspace:^, @backstage/plugin-catalog-common@workspace:plugins/catalog-common": version: 0.0.0-use.local resolution: "@backstage/plugin-catalog-common@workspace:plugins/catalog-common" dependencies: @@ -5823,6 +5825,17 @@ __metadata: languageName: unknown linkType: soft +"@backstage/plugin-catalog-common@npm:^1.0.19": + version: 1.0.19 + resolution: "@backstage/plugin-catalog-common@npm:1.0.19" + dependencies: + "@backstage/catalog-model": ^1.4.3 + "@backstage/plugin-permission-common": ^0.7.11 + "@backstage/plugin-search-common": ^1.2.9 + checksum: 692085592f9e4635069bad43deb4ade0ee707c4c1997966c8c90d5a282fc578ecd8674c5d0ee21d8e27ef9595f8019827e9ccab756f62a293c7855fc9a15abee + languageName: node + linkType: hard + "@backstage/plugin-catalog-graph@workspace:^, @backstage/plugin-catalog-graph@workspace:plugins/catalog-graph": version: 0.0.0-use.local resolution: "@backstage/plugin-catalog-graph@workspace:plugins/catalog-graph" @@ -5921,20 +5934,20 @@ __metadata: linkType: soft "@backstage/plugin-catalog-react@npm:^1.2.4, @backstage/plugin-catalog-react@npm:^1.9.1": - version: 1.9.1 - resolution: "@backstage/plugin-catalog-react@npm:1.9.1" + version: 1.9.2 + resolution: "@backstage/plugin-catalog-react@npm:1.9.2" dependencies: - "@backstage/catalog-client": ^1.4.6 + "@backstage/catalog-client": ^1.5.0 "@backstage/catalog-model": ^1.4.3 - "@backstage/core-components": ^0.13.8 - "@backstage/core-plugin-api": ^1.8.0 + "@backstage/core-components": ^0.13.9 + "@backstage/core-plugin-api": ^1.8.1 "@backstage/errors": ^1.2.3 - "@backstage/frontend-plugin-api": ^0.3.0 - "@backstage/integration-react": ^1.1.21 - "@backstage/plugin-catalog-common": ^1.0.18 - "@backstage/plugin-permission-common": ^0.7.10 - "@backstage/plugin-permission-react": ^0.4.17 - "@backstage/theme": ^0.4.4 + "@backstage/frontend-plugin-api": ^0.4.0 + "@backstage/integration-react": ^1.1.22 + "@backstage/plugin-catalog-common": ^1.0.19 + "@backstage/plugin-permission-common": ^0.7.11 + "@backstage/plugin-permission-react": ^0.4.18 + "@backstage/theme": ^0.5.0 "@backstage/types": ^1.1.1 "@backstage/version-bridge": ^1.0.7 "@material-ui/core": ^4.12.2 @@ -5953,7 +5966,7 @@ __metadata: react: ^16.13.1 || ^17.0.0 || ^18.0.0 react-dom: ^16.13.1 || ^17.0.0 || ^18.0.0 react-router-dom: 6.0.0-beta.0 || ^6.3.0 - checksum: aa57e828a161db545353d06460ec62f13fa6ca9e44d378e903a8ce9bbbc24fb22dfe9ab264f4e8150ef7543afe26ee887afe7a305670b79e0818b9d8d098550e + checksum: e363db83bb85a6dac23616104aa52b019c4f32341fb757c40cf0321ad12427ffcad647b54b38d2d47a7299571e95c2cd226e01c6f9dde585d5377a4dc95a1df6 languageName: node linkType: hard @@ -7296,20 +7309,20 @@ __metadata: linkType: soft "@backstage/plugin-home-react@npm:^0.1.5": - version: 0.1.5 - resolution: "@backstage/plugin-home-react@npm:0.1.5" + version: 0.1.6 + resolution: "@backstage/plugin-home-react@npm:0.1.6" dependencies: - "@backstage/core-components": ^0.13.8 - "@backstage/core-plugin-api": ^1.8.0 + "@backstage/core-components": ^0.13.9 + "@backstage/core-plugin-api": ^1.8.1 "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 - "@rjsf/utils": 5.13.6 + "@rjsf/utils": 5.15.0 "@types/react": ^16.13.1 || ^17.0.0 peerDependencies: react: ^16.13.1 || ^17.0.0 || ^18.0.0 react-dom: ^16.13.1 || ^17.0.0 || ^18.0.0 react-router-dom: 6.0.0-beta.0 || ^6.3.0 - checksum: 9ea922ec0ade7f12721552266a5e0513778a42594039a05819ca6ab7c253b84bd281c302c0a56e5c49f895dbba8ac404ab8521b8493b5908fe8af01cbbda31d6 + checksum: ecd2d6d6b2f0793bb0180b07ec7559230361eb3174d7a962bc08fabc2c29bf21f9705ae5b9a6977005ecac4009dc5806b0d8ecac67eecb6507141764a96d1def languageName: node linkType: hard @@ -8304,7 +8317,21 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-permission-common@^0.7.10, @backstage/plugin-permission-common@workspace:^, @backstage/plugin-permission-common@workspace:plugins/permission-common": +"@backstage/plugin-permission-common@npm:^0.7.11": + version: 0.7.11 + resolution: "@backstage/plugin-permission-common@npm:0.7.11" + dependencies: + "@backstage/config": ^1.1.1 + "@backstage/errors": ^1.2.3 + "@backstage/types": ^1.1.1 + cross-fetch: ^4.0.0 + uuid: ^8.0.0 + zod: ^3.22.4 + checksum: 79bb7d3d6ceba80701331d4d0cca32640183dc8466e82c04bd5307048a19c1fb044917b1e6047ff171f377b34c2d34662db65591a24ab468bdc19065f13942ce + languageName: node + linkType: hard + +"@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: @@ -8342,13 +8369,13 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-permission-react@npm:^0.4.17": - version: 0.4.17 - resolution: "@backstage/plugin-permission-react@npm:0.4.17" +"@backstage/plugin-permission-react@npm:^0.4.18": + version: 0.4.18 + resolution: "@backstage/plugin-permission-react@npm:0.4.18" dependencies: "@backstage/config": ^1.1.1 - "@backstage/core-plugin-api": ^1.8.0 - "@backstage/plugin-permission-common": ^0.7.10 + "@backstage/core-plugin-api": ^1.8.1 + "@backstage/plugin-permission-common": ^0.7.11 "@types/react": ^16.13.1 || ^17.0.0 cross-fetch: ^4.0.0 react-use: ^17.2.4 @@ -8357,7 +8384,7 @@ __metadata: react: ^16.13.1 || ^17.0.0 || ^18.0.0 react-dom: ^16.13.1 || ^17.0.0 || ^18.0.0 react-router-dom: 6.0.0-beta.0 || ^6.3.0 - checksum: 6baa30e83b68d27fc06411453100cc5fe98895021fe5a3db88c677e68430a8561744bc4581205e20f8326394e749b5e2ff19bb8037ecc86af6cae75124498111 + checksum: da1386b814fcb0b7350cebc1975d88cdf4c97a474f292a56d4e15ce63bb25a54d34d17067865363fa051983d9fa5170afce6a38299bc7c3ab82f1e44c708b13b languageName: node linkType: hard @@ -9102,6 +9129,16 @@ __metadata: languageName: unknown linkType: soft +"@backstage/plugin-search-common@npm:^1.2.9": + version: 1.2.9 + resolution: "@backstage/plugin-search-common@npm:1.2.9" + dependencies: + "@backstage/plugin-permission-common": ^0.7.11 + "@backstage/types": ^1.1.1 + checksum: 5dc4db9870ae0ba816526b5c2531a52af2e2bc5c94adf0636948ed20a9f913937283db6e59a9bdbfa9e62a6da77db9013dcc8ddcfb66132321ad86d3cdf70446 + languageName: node + linkType: hard + "@backstage/plugin-search-common@workspace:^, @backstage/plugin-search-common@workspace:plugins/search-common": version: 0.0.0-use.local resolution: "@backstage/plugin-search-common@workspace:plugins/search-common" @@ -10161,6 +10198,22 @@ __metadata: languageName: node linkType: hard +"@backstage/theme@npm:^0.5.0": + version: 0.5.0 + resolution: "@backstage/theme@npm:0.5.0" + dependencies: + "@emotion/react": ^11.10.5 + "@emotion/styled": ^11.10.5 + "@mui/material": ^5.12.2 + peerDependencies: + "@material-ui/core": ^4.12.2 + "@types/react": ^16.13.1 || ^17.0.0 + react: ^16.13.1 || ^17.0.0 || ^18.0.0 + react-dom: ^16.13.1 || ^17.0.0 || ^18.0.0 + checksum: b3f7ebb3d37daa72ea41ff2cd2bc01df2fcdacf411576e28c8a8b8c9c656c3c2f7e1ce6e82d00add10aecbcaf58f6024cc87a47986618d61eb8b95ec85464d37 + languageName: node + linkType: hard + "@backstage/theme@workspace:^, @backstage/theme@workspace:packages/theme": version: 0.0.0-use.local resolution: "@backstage/theme@workspace:packages/theme" @@ -10546,16 +10599,16 @@ __metadata: linkType: hard "@codemirror/language@npm:^6.0.0": - version: 6.9.3 - resolution: "@codemirror/language@npm:6.9.3" + version: 6.10.0 + resolution: "@codemirror/language@npm:6.10.0" dependencies: "@codemirror/state": ^6.0.0 - "@codemirror/view": ^6.0.0 + "@codemirror/view": ^6.23.0 "@lezer/common": ^1.1.0 "@lezer/highlight": ^1.0.0 "@lezer/lr": ^1.0.0 style-mod: ^4.0.0 - checksum: 774a40bc91c748d418a9a774161a5b083061124e4439bb753072bc657ec4c4784f595161c10c7c3935154b22291bf6dc74c9abe827033db32e217ac3963478f3 + checksum: 3bfd9968f5a34ce22434489a5b226db5f3bc454a1ae7c4381587ff4270ac6af61b10f93df560cb73e9a77cc13d4843722a7a7b94dbed02a3ab1971dd329b9e81 languageName: node linkType: hard @@ -10590,10 +10643,10 @@ __metadata: languageName: node linkType: hard -"@codemirror/state@npm:^6.0.0, @codemirror/state@npm:^6.1.1, @codemirror/state@npm:^6.1.4": - version: 6.1.4 - resolution: "@codemirror/state@npm:6.1.4" - checksum: ef6bc495d3b89d2f0202b6b1c0fc3e3610f8d815f4ca91f86153d6093c9b93ddbe2cfb787802d07514a7114f0b200cf2eeb54c1cd34d7e00eff774ecea97d845 +"@codemirror/state@npm:^6.0.0, @codemirror/state@npm:^6.1.1, @codemirror/state@npm:^6.4.0": + version: 6.4.0 + resolution: "@codemirror/state@npm:6.4.0" + checksum: c5236fe5786f1b85d17273a5c17fa8aeb063658c1404ab18caeb6e7591663ec96b65d453ab8162f75839c3801b04cd55ba4bc48f44cb61ebfeeee383f89553c7 languageName: node linkType: hard @@ -10609,14 +10662,14 @@ __metadata: languageName: node linkType: hard -"@codemirror/view@npm:^6.0.0": - version: 6.22.1 - resolution: "@codemirror/view@npm:6.22.1" +"@codemirror/view@npm:^6.0.0, @codemirror/view@npm:^6.23.0": + version: 6.23.0 + resolution: "@codemirror/view@npm:6.23.0" dependencies: - "@codemirror/state": ^6.1.4 + "@codemirror/state": ^6.4.0 style-mod: ^4.1.0 w3c-keyname: ^2.2.4 - checksum: 8643d86cf8c34433a410b28b1339c9a333c519e815890bf6494ca35a47d6ed38b51a13480cf4f6bea319ab2a17991e1ba47cd1b4a2c5a99fb76bad014682925a + checksum: 6e5f2314a3da2c724dc6a525654d949d3f2fcf7009f4d85f980d52ddc885c8969717e903ca1d9132afbe7c524af5d19bff8285fd394106282a965ae83aa47db4 languageName: node linkType: hard @@ -10797,13 +10850,13 @@ __metadata: linkType: hard "@emotion/react@npm:^11.10.5": - version: 11.11.1 - resolution: "@emotion/react@npm:11.11.1" + version: 11.11.3 + resolution: "@emotion/react@npm:11.11.3" dependencies: "@babel/runtime": ^7.18.3 "@emotion/babel-plugin": ^11.11.0 "@emotion/cache": ^11.11.0 - "@emotion/serialize": ^1.1.2 + "@emotion/serialize": ^1.1.3 "@emotion/use-insertion-effect-with-fallbacks": ^1.0.1 "@emotion/utils": ^1.2.1 "@emotion/weak-memoize": ^0.3.1 @@ -10813,20 +10866,20 @@ __metadata: peerDependenciesMeta: "@types/react": optional: true - checksum: aec3c36650f5f0d3d4445ff44d73dd88712b1609645b6af3e6d08049cfbc51f1785fe13dea1a1d4ab1b0800d68f2339ab11e459687180362b1ef98863155aae5 + checksum: 2e4b223591569f0a41686d5bd72dc8778629b7be33267e4a09582979e6faee4d7218de84e76294ed827058d4384d75557b5d71724756539c1f235e9a69e62b2e languageName: node linkType: hard -"@emotion/serialize@npm:^1.1.2": - version: 1.1.2 - resolution: "@emotion/serialize@npm:1.1.2" +"@emotion/serialize@npm:^1.1.2, @emotion/serialize@npm:^1.1.3": + version: 1.1.3 + resolution: "@emotion/serialize@npm:1.1.3" dependencies: "@emotion/hash": ^0.9.1 "@emotion/memoize": ^0.8.1 "@emotion/unitless": ^0.8.1 "@emotion/utils": ^1.2.1 csstype: ^3.0.2 - checksum: 413c352e657f1b5e27ea6437b3ef7dcc3860669b7ae17fd5c18bfbd44e033af1acc56b64d252284a813ca4f3b3e1b0841c42d3fb08e02d2df56fd3cd63d72986 + checksum: 5a756ce7e2692322683978d8ed2e84eadd60bd6f629618a82c5018c84d98684b117e57fad0174f68ec2ec0ac089bb2e0bcc8ea8c2798eb904b6d3236aa046063 languageName: node linkType: hard @@ -10901,6 +10954,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/aix-ppc64@npm:0.19.10": + version: 0.19.10 + resolution: "@esbuild/aix-ppc64@npm:0.19.10" + conditions: os=aix & cpu=ppc64 + languageName: node + linkType: hard + "@esbuild/android-arm64@npm:0.16.17": version: 0.16.17 resolution: "@esbuild/android-arm64@npm:0.16.17" @@ -10915,9 +10975,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/android-arm64@npm:0.19.8": - version: 0.19.8 - resolution: "@esbuild/android-arm64@npm:0.19.8" +"@esbuild/android-arm64@npm:0.19.10": + version: 0.19.10 + resolution: "@esbuild/android-arm64@npm:0.19.10" conditions: os=android & cpu=arm64 languageName: node linkType: hard @@ -10936,9 +10996,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/android-arm@npm:0.19.8": - version: 0.19.8 - resolution: "@esbuild/android-arm@npm:0.19.8" +"@esbuild/android-arm@npm:0.19.10": + version: 0.19.10 + resolution: "@esbuild/android-arm@npm:0.19.10" conditions: os=android & cpu=arm languageName: node linkType: hard @@ -10957,9 +11017,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/android-x64@npm:0.19.8": - version: 0.19.8 - resolution: "@esbuild/android-x64@npm:0.19.8" +"@esbuild/android-x64@npm:0.19.10": + version: 0.19.10 + resolution: "@esbuild/android-x64@npm:0.19.10" conditions: os=android & cpu=x64 languageName: node linkType: hard @@ -10978,9 +11038,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/darwin-arm64@npm:0.19.8": - version: 0.19.8 - resolution: "@esbuild/darwin-arm64@npm:0.19.8" +"@esbuild/darwin-arm64@npm:0.19.10": + version: 0.19.10 + resolution: "@esbuild/darwin-arm64@npm:0.19.10" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard @@ -10999,9 +11059,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/darwin-x64@npm:0.19.8": - version: 0.19.8 - resolution: "@esbuild/darwin-x64@npm:0.19.8" +"@esbuild/darwin-x64@npm:0.19.10": + version: 0.19.10 + resolution: "@esbuild/darwin-x64@npm:0.19.10" conditions: os=darwin & cpu=x64 languageName: node linkType: hard @@ -11020,9 +11080,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/freebsd-arm64@npm:0.19.8": - version: 0.19.8 - resolution: "@esbuild/freebsd-arm64@npm:0.19.8" +"@esbuild/freebsd-arm64@npm:0.19.10": + version: 0.19.10 + resolution: "@esbuild/freebsd-arm64@npm:0.19.10" conditions: os=freebsd & cpu=arm64 languageName: node linkType: hard @@ -11041,9 +11101,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/freebsd-x64@npm:0.19.8": - version: 0.19.8 - resolution: "@esbuild/freebsd-x64@npm:0.19.8" +"@esbuild/freebsd-x64@npm:0.19.10": + version: 0.19.10 + resolution: "@esbuild/freebsd-x64@npm:0.19.10" conditions: os=freebsd & cpu=x64 languageName: node linkType: hard @@ -11062,9 +11122,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-arm64@npm:0.19.8": - version: 0.19.8 - resolution: "@esbuild/linux-arm64@npm:0.19.8" +"@esbuild/linux-arm64@npm:0.19.10": + version: 0.19.10 + resolution: "@esbuild/linux-arm64@npm:0.19.10" conditions: os=linux & cpu=arm64 languageName: node linkType: hard @@ -11083,9 +11143,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-arm@npm:0.19.8": - version: 0.19.8 - resolution: "@esbuild/linux-arm@npm:0.19.8" +"@esbuild/linux-arm@npm:0.19.10": + version: 0.19.10 + resolution: "@esbuild/linux-arm@npm:0.19.10" conditions: os=linux & cpu=arm languageName: node linkType: hard @@ -11104,9 +11164,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-ia32@npm:0.19.8": - version: 0.19.8 - resolution: "@esbuild/linux-ia32@npm:0.19.8" +"@esbuild/linux-ia32@npm:0.19.10": + version: 0.19.10 + resolution: "@esbuild/linux-ia32@npm:0.19.10" conditions: os=linux & cpu=ia32 languageName: node linkType: hard @@ -11125,9 +11185,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-loong64@npm:0.19.8": - version: 0.19.8 - resolution: "@esbuild/linux-loong64@npm:0.19.8" +"@esbuild/linux-loong64@npm:0.19.10": + version: 0.19.10 + resolution: "@esbuild/linux-loong64@npm:0.19.10" conditions: os=linux & cpu=loong64 languageName: node linkType: hard @@ -11146,9 +11206,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-mips64el@npm:0.19.8": - version: 0.19.8 - resolution: "@esbuild/linux-mips64el@npm:0.19.8" +"@esbuild/linux-mips64el@npm:0.19.10": + version: 0.19.10 + resolution: "@esbuild/linux-mips64el@npm:0.19.10" conditions: os=linux & cpu=mips64el languageName: node linkType: hard @@ -11167,9 +11227,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-ppc64@npm:0.19.8": - version: 0.19.8 - resolution: "@esbuild/linux-ppc64@npm:0.19.8" +"@esbuild/linux-ppc64@npm:0.19.10": + version: 0.19.10 + resolution: "@esbuild/linux-ppc64@npm:0.19.10" conditions: os=linux & cpu=ppc64 languageName: node linkType: hard @@ -11188,9 +11248,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-riscv64@npm:0.19.8": - version: 0.19.8 - resolution: "@esbuild/linux-riscv64@npm:0.19.8" +"@esbuild/linux-riscv64@npm:0.19.10": + version: 0.19.10 + resolution: "@esbuild/linux-riscv64@npm:0.19.10" conditions: os=linux & cpu=riscv64 languageName: node linkType: hard @@ -11209,9 +11269,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-s390x@npm:0.19.8": - version: 0.19.8 - resolution: "@esbuild/linux-s390x@npm:0.19.8" +"@esbuild/linux-s390x@npm:0.19.10": + version: 0.19.10 + resolution: "@esbuild/linux-s390x@npm:0.19.10" conditions: os=linux & cpu=s390x languageName: node linkType: hard @@ -11230,9 +11290,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-x64@npm:0.19.8": - version: 0.19.8 - resolution: "@esbuild/linux-x64@npm:0.19.8" +"@esbuild/linux-x64@npm:0.19.10": + version: 0.19.10 + resolution: "@esbuild/linux-x64@npm:0.19.10" conditions: os=linux & cpu=x64 languageName: node linkType: hard @@ -11251,9 +11311,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/netbsd-x64@npm:0.19.8": - version: 0.19.8 - resolution: "@esbuild/netbsd-x64@npm:0.19.8" +"@esbuild/netbsd-x64@npm:0.19.10": + version: 0.19.10 + resolution: "@esbuild/netbsd-x64@npm:0.19.10" conditions: os=netbsd & cpu=x64 languageName: node linkType: hard @@ -11272,9 +11332,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/openbsd-x64@npm:0.19.8": - version: 0.19.8 - resolution: "@esbuild/openbsd-x64@npm:0.19.8" +"@esbuild/openbsd-x64@npm:0.19.10": + version: 0.19.10 + resolution: "@esbuild/openbsd-x64@npm:0.19.10" conditions: os=openbsd & cpu=x64 languageName: node linkType: hard @@ -11293,9 +11353,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/sunos-x64@npm:0.19.8": - version: 0.19.8 - resolution: "@esbuild/sunos-x64@npm:0.19.8" +"@esbuild/sunos-x64@npm:0.19.10": + version: 0.19.10 + resolution: "@esbuild/sunos-x64@npm:0.19.10" conditions: os=sunos & cpu=x64 languageName: node linkType: hard @@ -11314,9 +11374,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/win32-arm64@npm:0.19.8": - version: 0.19.8 - resolution: "@esbuild/win32-arm64@npm:0.19.8" +"@esbuild/win32-arm64@npm:0.19.10": + version: 0.19.10 + resolution: "@esbuild/win32-arm64@npm:0.19.10" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard @@ -11335,9 +11395,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/win32-ia32@npm:0.19.8": - version: 0.19.8 - resolution: "@esbuild/win32-ia32@npm:0.19.8" +"@esbuild/win32-ia32@npm:0.19.10": + version: 0.19.10 + resolution: "@esbuild/win32-ia32@npm:0.19.10" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard @@ -11356,9 +11416,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/win32-x64@npm:0.19.8": - version: 0.19.8 - resolution: "@esbuild/win32-x64@npm:0.19.8" +"@esbuild/win32-x64@npm:0.19.10": + version: 0.19.10 + resolution: "@esbuild/win32-x64@npm:0.19.10" conditions: os=win32 & cpu=x64 languageName: node linkType: hard @@ -12514,13 +12574,13 @@ __metadata: languageName: node linkType: hard -"@jridgewell/source-map@npm:^0.3.2": - version: 0.3.2 - resolution: "@jridgewell/source-map@npm:0.3.2" +"@jridgewell/source-map@npm:^0.3.3": + version: 0.3.5 + resolution: "@jridgewell/source-map@npm:0.3.5" dependencies: "@jridgewell/gen-mapping": ^0.3.0 "@jridgewell/trace-mapping": ^0.3.9 - checksum: 1b83f0eb944e77b70559a394d5d3b3f98a81fcc186946aceb3ef42d036762b52ef71493c6c0a3b7c1d2f08785f53ba2df1277fe629a06e6109588ff4cdcf7482 + checksum: 1ad4dec0bdafbade57920a50acec6634f88a0eb735851e0dda906fa9894e7f0549c492678aad1a10f8e144bfe87f238307bf2a914a1bc85b7781d345417e9f6f languageName: node linkType: hard @@ -12541,7 +12601,7 @@ __metadata: languageName: node linkType: hard -"@jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.17, @jridgewell/trace-mapping@npm:^0.3.18, @jridgewell/trace-mapping@npm:^0.3.9": +"@jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.17, @jridgewell/trace-mapping@npm:^0.3.18, @jridgewell/trace-mapping@npm:^0.3.20, @jridgewell/trace-mapping@npm:^0.3.9": version: 0.3.20 resolution: "@jridgewell/trace-mapping@npm:0.3.20" dependencies: @@ -13269,14 +13329,14 @@ __metadata: languageName: node linkType: hard -"@mui/base@npm:5.0.0-beta.25": - version: 5.0.0-beta.25 - resolution: "@mui/base@npm:5.0.0-beta.25" +"@mui/base@npm:5.0.0-beta.29": + version: 5.0.0-beta.29 + resolution: "@mui/base@npm:5.0.0-beta.29" dependencies: - "@babel/runtime": ^7.23.4 + "@babel/runtime": ^7.23.6 "@floating-ui/react-dom": ^2.0.4 - "@mui/types": ^7.2.10 - "@mui/utils": ^5.14.19 + "@mui/types": ^7.2.11 + "@mui/utils": ^5.15.2 "@popperjs/core": ^2.11.8 clsx: ^2.0.0 prop-types: ^15.8.1 @@ -13287,28 +13347,28 @@ __metadata: peerDependenciesMeta: "@types/react": optional: true - checksum: ce22c38593db1bbbb162574bd297bc3f2f5040ed6e304965e17aff55e4d15782e813196bd67c9b82757ee67675ad6d557e22541f84e4d7a4b6f3349dc83741f3 + checksum: 40481f18d5b4c560e0f9868876727203af76954b5b8b208bfc01da666229f8eef45852b5d87403aa42b4c8515a5b9d2e99d4ae40446289d7456c56310fce72c7 languageName: node linkType: hard -"@mui/core-downloads-tracker@npm:^5.14.19": - version: 5.14.19 - resolution: "@mui/core-downloads-tracker@npm:5.14.19" - checksum: e71c886f12bbd83791638545017c0b8439c3c6b51125979fea105f938f2f5b109629d4deddd38448c05b8be10b3249334324f1505c1306c52a2b8d315a1005c3 +"@mui/core-downloads-tracker@npm:^5.15.2": + version: 5.15.2 + resolution: "@mui/core-downloads-tracker@npm:5.15.2" + checksum: 8c88ac73a1d87c8ce565f6295dcd084c643580848e8f59159402e9db89975263da06305a0e605d3744479e917c2d297319496534bca9df8338e203162f1e7c33 languageName: node linkType: hard "@mui/material@npm:^5.12.2": - version: 5.14.19 - resolution: "@mui/material@npm:5.14.19" + version: 5.15.2 + resolution: "@mui/material@npm:5.15.2" dependencies: - "@babel/runtime": ^7.23.4 - "@mui/base": 5.0.0-beta.25 - "@mui/core-downloads-tracker": ^5.14.19 - "@mui/system": ^5.14.19 - "@mui/types": ^7.2.10 - "@mui/utils": ^5.14.19 - "@types/react-transition-group": ^4.4.9 + "@babel/runtime": ^7.23.6 + "@mui/base": 5.0.0-beta.29 + "@mui/core-downloads-tracker": ^5.15.2 + "@mui/system": ^5.15.2 + "@mui/types": ^7.2.11 + "@mui/utils": ^5.15.2 + "@types/react-transition-group": ^4.4.10 clsx: ^2.0.0 csstype: ^3.1.2 prop-types: ^15.8.1 @@ -13327,16 +13387,16 @@ __metadata: optional: true "@types/react": optional: true - checksum: 8fc63b7ecb98c5eb8f67190cde096f83100af9271fe2113e1d3edb13a08650f611e7ff186b04c66695958cc88480011ab31dc950cf0fd6e0fbb6c727ec834cbd + checksum: 7586b0160c686214c4d3a6f8af76306413bfe13286a4679ca7696b764615f511b5d5b27a8129e15ae81856492317e7f139f4bd075f6b2dfe6e60de46755d7dbc languageName: node linkType: hard -"@mui/private-theming@npm:^5.14.19": - version: 5.14.19 - resolution: "@mui/private-theming@npm:5.14.19" +"@mui/private-theming@npm:^5.15.2": + version: 5.15.2 + resolution: "@mui/private-theming@npm:5.15.2" dependencies: - "@babel/runtime": ^7.23.4 - "@mui/utils": ^5.14.19 + "@babel/runtime": ^7.23.6 + "@mui/utils": ^5.15.2 prop-types: ^15.8.1 peerDependencies: "@types/react": ^17.0.0 || ^18.0.0 @@ -13344,15 +13404,15 @@ __metadata: peerDependenciesMeta: "@types/react": optional: true - checksum: ee17fa123ae671fcfb6e59787e9a5b6d650d4a53ea575f5d5519dd187c9b04fbb50f12f2da5a663d3ba3a82d503086faa18bf3b68923237de78f44e401e04935 + checksum: 63cc69adc3eca03533dd72296aac6449abe133522f6f5c62c8497e57dbd092c131cba3488ee8d97dfb76c31a194df014f4da3b2d30027614e987ed72581a4acf languageName: node linkType: hard -"@mui/styled-engine@npm:^5.14.19": - version: 5.14.19 - resolution: "@mui/styled-engine@npm:5.14.19" +"@mui/styled-engine@npm:^5.15.2": + version: 5.15.2 + resolution: "@mui/styled-engine@npm:5.15.2" dependencies: - "@babel/runtime": ^7.23.4 + "@babel/runtime": ^7.23.6 "@emotion/cache": ^11.11.0 csstype: ^3.1.2 prop-types: ^15.8.1 @@ -13365,19 +13425,19 @@ __metadata: optional: true "@emotion/styled": optional: true - checksum: 2b8dc8e08e47e18ad6345d25539d5978ef153cb23abff3d98c3cf2795f836e446279021392c2071142ffbae17e19906235acfb3e73dc0f14440b138f919a26a4 + checksum: daa15b61be2e785c9719e091047a5900aa5aa0b6a9dfbc2ea373f6718f6ec3485f44e05596cd9506a90a7c55d8d372233a80cbeca4d81ceb8d5e6a10ce0f8292 languageName: node linkType: hard "@mui/styles@npm:^5.14.18": - version: 5.14.19 - resolution: "@mui/styles@npm:5.14.19" + version: 5.15.2 + resolution: "@mui/styles@npm:5.15.2" dependencies: - "@babel/runtime": ^7.23.4 + "@babel/runtime": ^7.23.6 "@emotion/hash": ^0.9.1 - "@mui/private-theming": ^5.14.19 - "@mui/types": ^7.2.10 - "@mui/utils": ^5.14.19 + "@mui/private-theming": ^5.15.2 + "@mui/types": ^7.2.11 + "@mui/utils": ^5.15.2 clsx: ^2.0.0 csstype: ^3.1.2 hoist-non-react-statics: ^3.3.2 @@ -13396,19 +13456,19 @@ __metadata: peerDependenciesMeta: "@types/react": optional: true - checksum: 03780cba63ee5dca4bd3f81aa8634039e6a18291eb2f89cdcee236669e4b05a2593a3e5e74c21378950cc34a790163d2d3b80d2b649fd368a5b09439f198489e + checksum: 53ee6fb6c1114469dfeacbf5d26fc6ef7bc897428258301515012fcea95f5abcc73d5b70d1ea1da9382f7742aa7da7a9749a7594331e78f85b6b4cd8f8216d11 languageName: node linkType: hard -"@mui/system@npm:^5.14.19": - version: 5.14.19 - resolution: "@mui/system@npm:5.14.19" +"@mui/system@npm:^5.15.2": + version: 5.15.2 + resolution: "@mui/system@npm:5.15.2" dependencies: - "@babel/runtime": ^7.23.4 - "@mui/private-theming": ^5.14.19 - "@mui/styled-engine": ^5.14.19 - "@mui/types": ^7.2.10 - "@mui/utils": ^5.14.19 + "@babel/runtime": ^7.23.6 + "@mui/private-theming": ^5.15.2 + "@mui/styled-engine": ^5.15.2 + "@mui/types": ^7.2.11 + "@mui/utils": ^5.15.2 clsx: ^2.0.0 csstype: ^3.1.2 prop-types: ^15.8.1 @@ -13424,27 +13484,27 @@ __metadata: optional: true "@types/react": optional: true - checksum: aea4935cf72a7c4fe3d03eb040491204b0c20fbae19fc73173ec925c9025375601f6b7007e53b5ab6ea44a4dd74b94e9acc9ada85461db1deae9062f8506a99a + checksum: ce6297a4cfa6f91891fa84679e05e40e12c4a27fe4fb34d78cbcbae172da293c05fa6f07c24fec66c864eac64179aeec1f7a70358e376b8c16ffc8e91f93a904 languageName: node linkType: hard -"@mui/types@npm:^7.2.10": - version: 7.2.10 - resolution: "@mui/types@npm:7.2.10" +"@mui/types@npm:^7.2.11": + version: 7.2.11 + resolution: "@mui/types@npm:7.2.11" peerDependencies: "@types/react": ^17.0.0 || ^18.0.0 peerDependenciesMeta: "@types/react": optional: true - checksum: b9c4629929450e243015d79cf6b102824336db07b852e55f114aca85dbad0b39f831e9c65ad94b028a65c08d33be9f7de1afb530a4e6a80be5702b396ccb90b1 + checksum: ce6bbe8ba963af218bf86797f4c8adbf0f294047adeaf6596d3bb4a96f1b01701f1b1ae7dcfe2f7972f6e23c85eee4187e496fb481541713ed8bf12e96f3c34f languageName: node linkType: hard -"@mui/utils@npm:^5.14.15, @mui/utils@npm:^5.14.19": - version: 5.14.19 - resolution: "@mui/utils@npm:5.14.19" +"@mui/utils@npm:^5.14.15, @mui/utils@npm:^5.15.2": + version: 5.15.2 + resolution: "@mui/utils@npm:5.15.2" dependencies: - "@babel/runtime": ^7.23.4 + "@babel/runtime": ^7.23.6 "@types/prop-types": ^15.7.11 prop-types: ^15.8.1 react-is: ^18.2.0 @@ -13454,7 +13514,7 @@ __metadata: peerDependenciesMeta: "@types/react": optional: true - checksum: f53f746eb33bc5d700b9f2b454e211ca17f5aa320cd30f54a82a347e4da0c61b872f323f01ff4b5247d3f992ac4f72a69ac79974300a6dedf01ff6b8f6d75b49 + checksum: c78ad9fb1a5fa1dc5955cada77227c605f1e5bf45503bf2bb0080bc92cf28bdcf1cbb83322d19162c5424ec245a66cef849603c7681fa1ec89093e0b1922dc58 languageName: node linkType: hard @@ -13783,8 +13843,8 @@ __metadata: linkType: hard "@octokit/app@npm:^13.1.5": - version: 13.1.5 - resolution: "@octokit/app@npm:13.1.5" + version: 13.1.8 + resolution: "@octokit/app@npm:13.1.8" dependencies: "@octokit/auth-app": ^4.0.13 "@octokit/auth-unauthenticated": ^3.0.0 @@ -13793,7 +13853,7 @@ __metadata: "@octokit/plugin-paginate-rest": ^6.0.0 "@octokit/types": ^9.0.0 "@octokit/webhooks": ^10.0.0 - checksum: bc1b348c2b80d701d68672455e6f3d6ae7dbed09e2b5ba323fb941316d7055d101d20d1a803b0b5b98d60a6e7bd9907da4a1cca4445263e2180270aab783c3a4 + checksum: c51c23dc8f439da09c14c834551891d1e11a137935e036340e81bab428925027cb936737e5d43169149f13ae0a7ccd266edb7a0bc6735e3cd1ff106a690a48de languageName: node linkType: hard @@ -14015,10 +14075,10 @@ __metadata: languageName: node linkType: hard -"@octokit/openapi-types@npm:^17.2.0": - version: 17.2.0 - resolution: "@octokit/openapi-types@npm:17.2.0" - checksum: 29995e34f98d9d64ba234d64a7ae9486c66d2bb6ac0d30d9a42decdbb4b03b13e811769b1e1505a1748ff20c22d35724985e6c128cd11a3f14f8322201520093 +"@octokit/openapi-types@npm:^18.0.0": + version: 18.1.1 + resolution: "@octokit/openapi-types@npm:18.1.1" + checksum: 94f42977fd2fcb9983c781fd199bc11218885a1226d492680bfb1268524a1b2af48a768eef90c63b80a2874437de641d59b3b7f640a5afa93e7c21fe1a79069a languageName: node linkType: hard @@ -14044,26 +14104,25 @@ __metadata: linkType: hard "@octokit/plugin-rest-endpoint-methods@npm:^7.1.1, @octokit/plugin-rest-endpoint-methods@npm:^7.1.2": - version: 7.1.2 - resolution: "@octokit/plugin-rest-endpoint-methods@npm:7.1.2" + version: 7.2.3 + resolution: "@octokit/plugin-rest-endpoint-methods@npm:7.2.3" dependencies: - "@octokit/types": ^9.2.3 - deprecation: ^2.3.1 + "@octokit/types": ^10.0.0 peerDependencies: "@octokit/core": ">=3" - checksum: 159d29bf28d7aecbe39f08c25cf376d39b6c90ce17e50a55eafb44f3e4b9e1053a300c1edd72f308ae386146a17cbad46c410c1cfd000b048adf9c21d6922a1a + checksum: 21dfb98514dbe900c29cddb13b335bbce43d613800c6b17eba3c1fd31d17e69c1960f3067f7bf864bb38fdd5043391f4a23edee42729d8c7fbabd00569a80336 languageName: node linkType: hard "@octokit/plugin-retry@npm:^4.1.3": - version: 4.1.3 - resolution: "@octokit/plugin-retry@npm:4.1.3" + version: 4.1.6 + resolution: "@octokit/plugin-retry@npm:4.1.6" dependencies: "@octokit/types": ^9.0.0 bottleneck: ^2.15.3 peerDependencies: "@octokit/core": ">=3" - checksum: f9ed5869be23dddcf1ee896ce996e46a412a586259b55612ba44c82cdeed91436102e6e3ec57db879bd91a4446dcafbaa94632e4e059c6af56d9cca9b163eacb + checksum: 9bebaf7fc9c34683d7e97c0398ab9f5a164ce8770e92e8b8a65ed8e85ee3b0fddc5c72dfb18da112e2f643434d217ec7092f57496808c4ae6c2a824f42ae1ccf languageName: node linkType: hard @@ -14148,6 +14207,15 @@ __metadata: languageName: node linkType: hard +"@octokit/types@npm:^10.0.0": + version: 10.0.0 + resolution: "@octokit/types@npm:10.0.0" + dependencies: + "@octokit/openapi-types": ^18.0.0 + checksum: 8aafba2ff0cd2435fb70c291bf75ed071c0fa8a865cf6169648732068a35dec7b85a345851f18920ec5f3e94ee0e954988485caac0da09ec3f6781cc44fe153a + languageName: node + linkType: hard + "@octokit/types@npm:^6.0.3, @octokit/types@npm:^6.10.0, @octokit/types@npm:^6.12.2, @octokit/types@npm:^6.16.1, @octokit/types@npm:^6.8.2": version: 6.41.0 resolution: "@octokit/types@npm:6.41.0" @@ -14167,11 +14235,11 @@ __metadata: linkType: hard "@octokit/types@npm:^9.0.0, @octokit/types@npm:^9.2.2, @octokit/types@npm:^9.2.3": - version: 9.2.3 - resolution: "@octokit/types@npm:9.2.3" + version: 9.3.2 + resolution: "@octokit/types@npm:9.3.2" dependencies: - "@octokit/openapi-types": ^17.2.0 - checksum: 6806413089f20a8302237ef85aa2e83bace7499e95fdc3db2d304f9e6dc6e87fb6766452f92e08ddf475046b69753e11beabaeff6733c38bdaf3e21dfd7d3341 + "@octokit/openapi-types": ^18.0.0 + checksum: f55d096aaed3e04b8308d4422104fb888f355988056ba7b7ef0a4c397b8a3e54290d7827b06774dbe0c9ce55280b00db486286954f9c265aa6b03091026d9da8 languageName: node linkType: hard @@ -14344,8 +14412,8 @@ __metadata: linkType: hard "@oriflame/backstage-plugin-score-card@npm:^0.7.0": - version: 0.7.0 - resolution: "@oriflame/backstage-plugin-score-card@npm:0.7.0" + version: 0.7.1 + resolution: "@oriflame/backstage-plugin-score-card@npm:0.7.1" dependencies: "@backstage/catalog-model": ^1.1.5 "@backstage/config": ^1.0.6 @@ -14363,7 +14431,7 @@ __metadata: peerDependencies: react: ^16.13.1 || ^17.0.0 react-dom: ^16.13.1 || ^17.0.0 - checksum: 72ce56c8df0cc4611a0a66c7d22659f911ac8d265b3b2802cd4c35b7b0415a70d6c448eb681fd77bd4ab9167ffa560e8facc0b06301fc55ac933bdaf0d9e336d + checksum: f1526eb239354a070180f6a30b3fc14b4b3835de37e05720bda8e79f169e862730eb124e2a85a8fd38e8310a0b32bd60b4f36344e780169fcfc1d0332621eac8 languageName: node linkType: hard @@ -15151,21 +15219,6 @@ __metadata: languageName: node linkType: hard -"@rjsf/utils@npm:5.13.6": - version: 5.13.6 - resolution: "@rjsf/utils@npm:5.13.6" - dependencies: - json-schema-merge-allof: ^0.8.1 - jsonpointer: ^5.0.1 - lodash: ^4.17.21 - lodash-es: ^4.17.21 - react-is: ^18.2.0 - peerDependencies: - react: ^16.14.0 || >=17 - checksum: 1e6cdca9f547db4b96561752150c0aa4255426fa32ae84ea017b221e5816e7eb9ed985e9dbb73f1d83baaae36f892f1d10e2bf81d8a53f7e42b2bfc7df52d8e4 - languageName: node - linkType: hard - "@rjsf/utils@npm:5.15.0": version: 5.15.0 resolution: "@rjsf/utils@npm:5.15.0" @@ -15592,15 +15645,6 @@ __metadata: languageName: node linkType: hard -"@sinonjs/commons@npm:^1.7.0": - version: 1.8.3 - resolution: "@sinonjs/commons@npm:1.8.3" - dependencies: - type-detect: 4.0.8 - checksum: 6159726db5ce6bf9f2297f8427f7ca5b3dff45b31e5cee23496f1fa6ef0bb4eab878b23fb2c5e6446381f6a66aba4968ef2fc255c1180d753d4b8c271636a2e5 - languageName: node - linkType: hard - "@sinonjs/commons@npm:^2.0.0": version: 2.0.0 resolution: "@sinonjs/commons@npm:2.0.0" @@ -15610,41 +15654,32 @@ __metadata: languageName: node linkType: hard -"@sinonjs/fake-timers@npm:^10.0.2": - version: 10.0.2 - resolution: "@sinonjs/fake-timers@npm:10.0.2" +"@sinonjs/commons@npm:^3.0.0": + version: 3.0.0 + resolution: "@sinonjs/commons@npm:3.0.0" dependencies: - "@sinonjs/commons": ^2.0.0 - checksum: c62aa98e7cefda8dedc101ce227abc888dc46b8ff9706c5f0a8dfd9c3ada97d0a5611384738d9ba0b26b59f99c2ba24efece8e779bb08329e9e87358fa309824 + type-detect: 4.0.8 + checksum: b4b5b73d4df4560fb8c0c7b38c7ad4aeabedd362f3373859d804c988c725889cde33550e4bcc7cd316a30f5152a2d1d43db71b6d0c38f5feef71fd8d016763f8 languageName: node linkType: hard -"@sinonjs/fake-timers@npm:^7.0.4": - version: 7.1.2 - resolution: "@sinonjs/fake-timers@npm:7.1.2" +"@sinonjs/fake-timers@npm:^10.0.2, @sinonjs/fake-timers@npm:^10.3.0": + version: 10.3.0 + resolution: "@sinonjs/fake-timers@npm:10.3.0" dependencies: - "@sinonjs/commons": ^1.7.0 - checksum: c84773d7973edad5511a31d2cc75023447b5cf714a84de9bb50eda45dda88a0d3bd2c30bf6e6e936da50a048d5352e2151c694e13e59b97d187ba1f329e9a00c + "@sinonjs/commons": ^3.0.0 + checksum: 614d30cb4d5201550c940945d44c9e0b6d64a888ff2cd5b357f95ad6721070d6b8839cd10e15b76bf5e14af0bcc1d8f9ec00d49a46318f1f669a4bec1d7f3148 languageName: node linkType: hard -"@sinonjs/fake-timers@npm:^9.1.2": - version: 9.1.2 - resolution: "@sinonjs/fake-timers@npm:9.1.2" - dependencies: - "@sinonjs/commons": ^1.7.0 - checksum: 7d3aef54e17c1073101cb64d953157c19d62a40e261a30923fa1ee337b049c5f29cc47b1f0c477880f42b5659848ba9ab897607ac8ea4acd5c30ddcfac57fca6 - languageName: node - linkType: hard - -"@sinonjs/samsam@npm:^7.0.1": - version: 7.0.1 - resolution: "@sinonjs/samsam@npm:7.0.1" +"@sinonjs/samsam@npm:^8.0.0": + version: 8.0.0 + resolution: "@sinonjs/samsam@npm:8.0.0" dependencies: "@sinonjs/commons": ^2.0.0 lodash.get: ^4.4.2 type-detect: ^4.0.8 - checksum: 291efb158d54c67dee23ddabcb28873d22063449b692aaa3b2a4f1826d2f79d38695574063c92e9c17573cc805cd6acbf0ab0c66c9f3aed7afd0f12a2b905615 + checksum: 95e40d0bb9f7288e27c379bee1b03c3dc51e7e78b9d5ea6aef66a690da7e81efc4715145b561b449cefc5361a171791e3ce30fb1a46ab247d4c0766024c60a60 languageName: node linkType: hard @@ -16433,8 +16468,8 @@ __metadata: linkType: hard "@stoplight/spectral-rulesets@npm:^1.14.1, @stoplight/spectral-rulesets@npm:^1.18.0": - version: 1.18.0 - resolution: "@stoplight/spectral-rulesets@npm:1.18.0" + version: 1.18.1 + resolution: "@stoplight/spectral-rulesets@npm:1.18.1" dependencies: "@asyncapi/specs": ^4.1.0 "@stoplight/better-ajv-errors": 1.0.3 @@ -16450,7 +16485,7 @@ __metadata: json-schema-traverse: ^1.0.0 lodash: ~4.17.21 tslib: ^2.3.0 - checksum: 7abdc837acf64f1408bd71bf98169af6dad9b9adcdb7758ab705599989bf7f5c3e5739bd409f959f21e2d9e06919c6cbfff2500fd3180f45b2f4e1dbf2c62129 + checksum: 2eeff0fb3ffb7a2f3fca8c92c4d766925f62fabdc92b1899d3bc620a29e4ff8e68aacc63b8a77ede4030ee9127a12022e94117773ba5fd278acd7ba15c0fe5a0 languageName: node linkType: hard @@ -17155,82 +17190,90 @@ __metadata: languageName: node linkType: hard -"@swc/core-darwin-arm64@npm:1.3.100": - version: 1.3.100 - resolution: "@swc/core-darwin-arm64@npm:1.3.100" +"@swc/core-darwin-arm64@npm:1.3.102": + version: 1.3.102 + resolution: "@swc/core-darwin-arm64@npm:1.3.102" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@swc/core-darwin-x64@npm:1.3.100": - version: 1.3.100 - resolution: "@swc/core-darwin-x64@npm:1.3.100" +"@swc/core-darwin-x64@npm:1.3.102": + version: 1.3.102 + resolution: "@swc/core-darwin-x64@npm:1.3.102" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@swc/core-linux-arm64-gnu@npm:1.3.100": - version: 1.3.100 - resolution: "@swc/core-linux-arm64-gnu@npm:1.3.100" +"@swc/core-linux-arm-gnueabihf@npm:1.3.102": + version: 1.3.102 + resolution: "@swc/core-linux-arm-gnueabihf@npm:1.3.102" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"@swc/core-linux-arm64-gnu@npm:1.3.102": + version: 1.3.102 + resolution: "@swc/core-linux-arm64-gnu@npm:1.3.102" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@swc/core-linux-arm64-musl@npm:1.3.100": - version: 1.3.100 - resolution: "@swc/core-linux-arm64-musl@npm:1.3.100" +"@swc/core-linux-arm64-musl@npm:1.3.102": + version: 1.3.102 + resolution: "@swc/core-linux-arm64-musl@npm:1.3.102" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@swc/core-linux-x64-gnu@npm:1.3.100": - version: 1.3.100 - resolution: "@swc/core-linux-x64-gnu@npm:1.3.100" +"@swc/core-linux-x64-gnu@npm:1.3.102": + version: 1.3.102 + resolution: "@swc/core-linux-x64-gnu@npm:1.3.102" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@swc/core-linux-x64-musl@npm:1.3.100": - version: 1.3.100 - resolution: "@swc/core-linux-x64-musl@npm:1.3.100" +"@swc/core-linux-x64-musl@npm:1.3.102": + version: 1.3.102 + resolution: "@swc/core-linux-x64-musl@npm:1.3.102" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@swc/core-win32-arm64-msvc@npm:1.3.100": - version: 1.3.100 - resolution: "@swc/core-win32-arm64-msvc@npm:1.3.100" +"@swc/core-win32-arm64-msvc@npm:1.3.102": + version: 1.3.102 + resolution: "@swc/core-win32-arm64-msvc@npm:1.3.102" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@swc/core-win32-ia32-msvc@npm:1.3.100": - version: 1.3.100 - resolution: "@swc/core-win32-ia32-msvc@npm:1.3.100" +"@swc/core-win32-ia32-msvc@npm:1.3.102": + version: 1.3.102 + resolution: "@swc/core-win32-ia32-msvc@npm:1.3.102" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@swc/core-win32-x64-msvc@npm:1.3.100": - version: 1.3.100 - resolution: "@swc/core-win32-x64-msvc@npm:1.3.100" +"@swc/core-win32-x64-msvc@npm:1.3.102": + version: 1.3.102 + resolution: "@swc/core-win32-x64-msvc@npm:1.3.102" conditions: os=win32 & cpu=x64 languageName: node linkType: hard "@swc/core@npm:^1.3.46": - version: 1.3.100 - resolution: "@swc/core@npm:1.3.100" + version: 1.3.102 + resolution: "@swc/core@npm:1.3.102" dependencies: - "@swc/core-darwin-arm64": 1.3.100 - "@swc/core-darwin-x64": 1.3.100 - "@swc/core-linux-arm64-gnu": 1.3.100 - "@swc/core-linux-arm64-musl": 1.3.100 - "@swc/core-linux-x64-gnu": 1.3.100 - "@swc/core-linux-x64-musl": 1.3.100 - "@swc/core-win32-arm64-msvc": 1.3.100 - "@swc/core-win32-ia32-msvc": 1.3.100 - "@swc/core-win32-x64-msvc": 1.3.100 + "@swc/core-darwin-arm64": 1.3.102 + "@swc/core-darwin-x64": 1.3.102 + "@swc/core-linux-arm-gnueabihf": 1.3.102 + "@swc/core-linux-arm64-gnu": 1.3.102 + "@swc/core-linux-arm64-musl": 1.3.102 + "@swc/core-linux-x64-gnu": 1.3.102 + "@swc/core-linux-x64-musl": 1.3.102 + "@swc/core-win32-arm64-msvc": 1.3.102 + "@swc/core-win32-ia32-msvc": 1.3.102 + "@swc/core-win32-x64-msvc": 1.3.102 "@swc/counter": ^0.1.1 "@swc/types": ^0.1.5 peerDependencies: @@ -17240,6 +17283,8 @@ __metadata: optional: true "@swc/core-darwin-x64": optional: true + "@swc/core-linux-arm-gnueabihf": + optional: true "@swc/core-linux-arm64-gnu": optional: true "@swc/core-linux-arm64-musl": @@ -17257,7 +17302,7 @@ __metadata: peerDependenciesMeta: "@swc/helpers": optional: true - checksum: b68553db388c36b1859f0e8b5231a608277e17ae7fd7a928ea8b448432532176914f84675426d40aa9710617b2e7fb626aaa8358b6b2506b3c43f82db725c41e + checksum: 45c0edb06f87a811e28fb3ed587fbe6b7ca67ff2440fe15666d43729788903a4af61e3b57842aecc0b2b70e3c9981b698d8233746ba94dfb5a19e1c62eea33ad languageName: node linkType: hard @@ -17391,10 +17436,10 @@ __metadata: linkType: hard "@testing-library/jest-dom@npm:^6.0.0": - version: 6.1.5 - resolution: "@testing-library/jest-dom@npm:6.1.5" + version: 6.1.6 + resolution: "@testing-library/jest-dom@npm:6.1.6" dependencies: - "@adobe/css-tools": ^4.3.1 + "@adobe/css-tools": ^4.3.2 "@babel/runtime": ^7.9.2 aria-query: ^5.0.0 chalk: ^3.0.0 @@ -17416,7 +17461,7 @@ __metadata: optional: true vitest: optional: true - checksum: 67f1433c7eb8649db6676df97d1144cf288e2d94c61e89531c05c587b56f2277454c558c97bcca567d5060ebd39caba5ba01d49dc57b3f005837477a401ad113 + checksum: 8d1a80678027915228b483a116fb9e358d25e2faffcd9a2c40b371752fbd53b5cb87351215866a43dd09393e7d364c46fc43923566b00ef63bbf3576d47da940 languageName: node linkType: hard @@ -17457,11 +17502,11 @@ __metadata: linkType: hard "@testing-library/user-event@npm:^14.0.0": - version: 14.5.1 - resolution: "@testing-library/user-event@npm:14.5.1" + version: 14.5.2 + resolution: "@testing-library/user-event@npm:14.5.2" peerDependencies: "@testing-library/dom": ">=7.21.4" - checksum: 3e6bc9fd53dfe2f3648190193ed2fd4bca2a1bfb47f68810df3b33f05412526e5fd5c4ef9dc5375635e0f4cdf1859916867b597eed22bda1321e04242ea6c519 + checksum: d76937dffcf0082fbf3bb89eb2b81a31bf5448048dd61c33928c5f10e33a58e035321d39145cefd469bb5a499c68a5b4086b22f1a44e3e7c7e817dc5f6782867 languageName: node linkType: hard @@ -17609,16 +17654,16 @@ __metadata: languageName: node linkType: hard -"@types/babel__core@npm:^7.1.14, @types/babel__core@npm:^7.20.4": - version: 7.20.4 - resolution: "@types/babel__core@npm:7.20.4" +"@types/babel__core@npm:^7.1.14, @types/babel__core@npm:^7.20.5": + version: 7.20.5 + resolution: "@types/babel__core@npm:7.20.5" dependencies: "@babel/parser": ^7.20.7 "@babel/types": ^7.20.7 "@types/babel__generator": "*" "@types/babel__template": "*" "@types/babel__traverse": "*" - checksum: 75ed6072213423d2b827740d68bbf96f5a7050ce8bd842dde0ceec8d352d06e847166bac757df4beba55525b65f8727c0432adeb5cb4f83aa42e155ac555767e + checksum: a3226f7930b635ee7a5e72c8d51a357e799d19cbf9d445710fa39ab13804f79ab1a54b72ea7d8e504659c7dfc50675db974b526142c754398d7413aa4bc30845 languageName: node linkType: hard @@ -18500,9 +18545,9 @@ __metadata: linkType: hard "@types/luxon@npm:*, @types/luxon@npm:^3.0.0, @types/luxon@npm:~3.3.0": - version: 3.3.6 - resolution: "@types/luxon@npm:3.3.6" - checksum: 44fd3e617fb5d9e370a8d5529de3e703b295bfe225936e786e0b5e7fce662ef82012a6ec29cd2763afbd59bf9a9ab43186bad5c51aa552d963cd5e8c8f4e1d4f + version: 3.3.7 + resolution: "@types/luxon@npm:3.3.7" + checksum: 97026557e92bcba308a5592f981591cd200d493fc8997874d79acecf6a2ec41debeded3ac5cd80c371ef7f6f56cc0d1be0a5aca846e03d3e6b4a2be37256fe2f languageName: node linkType: hard @@ -18609,30 +18654,30 @@ __metadata: linkType: hard "@types/node-fetch@npm:^2.5.0, @types/node-fetch@npm:^2.5.12, @types/node-fetch@npm:^2.5.7": - version: 2.6.9 - resolution: "@types/node-fetch@npm:2.6.9" + version: 2.6.10 + resolution: "@types/node-fetch@npm:2.6.10" dependencies: "@types/node": "*" form-data: ^4.0.0 - checksum: 212269aff4b251477c13c33cee6cea23e4fd630be6c0bfa3714968cce7efd7055b52f2f82aab3394596d8c758335cc802e7c5fa3f775e7f2a472fa914c90dc15 + checksum: e0c9a6023752ff6c744a33a3045b9adb11fd1882997ef891bf7ce91f937ddab91c0acee4c8e806a8a5aec0e8d8c132709141e8512fec28030d7cc9ef92c7ff1e languageName: node linkType: hard "@types/node-forge@npm:^1.3.0": - version: 1.3.10 - resolution: "@types/node-forge@npm:1.3.10" + version: 1.3.11 + resolution: "@types/node-forge@npm:1.3.11" dependencies: "@types/node": "*" - checksum: 363af42c83956c7e2483a71e398a02101ef6a55b4d86386c276315ca98bad02d6050b99fdbe13debcd1bcda250086b4a5b5c15a6fb2953d32420d269865ca7f8 + checksum: 1e86bd55b92a492eaafd75f6d01f31e7d86a5cdadd0c6bcdc0b1df4103b7f99bb75b832efd5217c7ddda5c781095dc086a868e20b9de00f5a427ddad4c296cd5 languageName: node linkType: hard "@types/node@npm:*, @types/node@npm:>=12.12.47, @types/node@npm:>=13.7.0, @types/node@npm:^20.1.1": - version: 20.10.4 - resolution: "@types/node@npm:20.10.4" + version: 20.10.6 + resolution: "@types/node@npm:20.10.6" dependencies: undici-types: ~5.26.4 - checksum: 054b296417e771ab524bea63cf3289559c6bdf290d45428f7cc68e9b00030ff7a0ece47b8c99a26b4f47a443919813bcf42beadff2f0bea7d8125fa541d92eb0 + checksum: ada40e4ccbda3697dca88f8d13f4c996c493be6fbc15f5f5d3b91096d56bd700786a2c148a92a2b4c5d1f133379e63f754a786b3aebfc6a7d09fc7ea16dc017b languageName: node linkType: hard @@ -18651,9 +18696,9 @@ __metadata: linkType: hard "@types/node@npm:^16.11.26, @types/node@npm:^16.7.10, @types/node@npm:^16.9.2": - version: 16.18.68 - resolution: "@types/node@npm:16.18.68" - checksum: 094ae9ed80eed2af4bd34d551467e307f2ecb6efb0f8b872feebfb9da5ea4b446c5883c9abe2349f8ea2b78bdacd8726a946c27c2a246676c4c330e41ccb9284 + version: 16.18.69 + resolution: "@types/node@npm:16.18.69" + checksum: ac7076062e59169ac1907e9347d939ed5f79c6a3ec2a531fe7186caf2fcf8d66de9b87ad42d92c4dfa6cb44b1018ab89fef1e054a82af36deea04ba32a5a670a languageName: node linkType: hard @@ -18665,11 +18710,11 @@ __metadata: linkType: hard "@types/node@npm:^18.17.8": - version: 18.19.3 - resolution: "@types/node@npm:18.19.3" + version: 18.19.4 + resolution: "@types/node@npm:18.19.4" dependencies: undici-types: ~5.26.4 - checksum: 58c4fa45a78fcec75c78182a4b266395905957633654eb0311c5f9c30ac15c179ea2287ab1af034e46c2db7bb0589ef0000ee64c1de8f568a0aad29eaadb100c + checksum: 3a32a31b2df85d4bebb5e3c91ec1a0908d587a2a2fd31ab4eeebd609d1c04bbcc9ba97e290e3230f843c9f43f17efb9f5cde56412b4b0f5acbfe5577179b23c8 languageName: node linkType: hard @@ -18879,11 +18924,11 @@ __metadata: linkType: hard "@types/react-dom@npm:^18": - version: 18.2.17 - resolution: "@types/react-dom@npm:18.2.17" + version: 18.2.18 + resolution: "@types/react-dom@npm:18.2.18" dependencies: "@types/react": "*" - checksum: 7a4e704ed4be6e0c3ccd8a22ff69386fe548304bf4db090513f42e059ff4c65f7a427790320051524d6578a2e4c9667bb7a80a4c989b72361c019fbe851d9385 + checksum: 8e3da404c980e2b2a76da3852f812ea6d8b9d0e7f5923fbaf3bfbbbfa1d59116ff91c129de8f68e9b7668a67ae34484fe9df74d5a7518cf8591ec07a0c4dad57 languageName: node linkType: hard @@ -18953,12 +18998,12 @@ __metadata: languageName: node linkType: hard -"@types/react-transition-group@npm:^4.2.0, @types/react-transition-group@npm:^4.4.9": - version: 4.4.9 - resolution: "@types/react-transition-group@npm:4.4.9" +"@types/react-transition-group@npm:^4.2.0, @types/react-transition-group@npm:^4.4.10": + version: 4.4.10 + resolution: "@types/react-transition-group@npm:4.4.10" dependencies: "@types/react": "*" - checksum: be9e256e53919a7cf3b4a075f6d01c0a2dd3a67911dd28276aa6158be4beade4ca5327cbf1f096c28b413e04989f069122319b02e5a09c280d903a0accea9ead + checksum: fe2ea11f70251e9f79f368e198c18fd469b1d4f1e1d44e4365845b44e15974b0ec925100036f449b023b0ca3480a82725c5f0a73040e282ad32ec7b0def9b57c languageName: node linkType: hard @@ -18981,13 +19026,13 @@ __metadata: linkType: hard "@types/react@npm:^18": - version: 18.2.42 - resolution: "@types/react@npm:18.2.42" + version: 18.2.46 + resolution: "@types/react@npm:18.2.46" dependencies: "@types/prop-types": "*" "@types/scheduler": "*" csstype: ^3.0.2 - checksum: d2019afdf48303a3a598a97cc9dd2284e3c04b369e791f6ba3c33232b7f8645daff97b093a19f8b3ce75ac8a261b47552cb4513226ab16d843eb9443b0f91844 + checksum: cb0e4dc7f41988a059e1246a19ec377101f5b16097ec4bf7000ef3c431ec0c8c873f40e95075821f908db1f4e3352775f0f18cea53dcad14dce67c0f5110f2bd languageName: node linkType: hard @@ -19490,14 +19535,14 @@ __metadata: linkType: hard "@typescript-eslint/eslint-plugin@npm:^6.12.0": - version: 6.13.1 - resolution: "@typescript-eslint/eslint-plugin@npm:6.13.1" + version: 6.14.0 + resolution: "@typescript-eslint/eslint-plugin@npm:6.14.0" dependencies: "@eslint-community/regexpp": ^4.5.1 - "@typescript-eslint/scope-manager": 6.13.1 - "@typescript-eslint/type-utils": 6.13.1 - "@typescript-eslint/utils": 6.13.1 - "@typescript-eslint/visitor-keys": 6.13.1 + "@typescript-eslint/scope-manager": 6.14.0 + "@typescript-eslint/type-utils": 6.14.0 + "@typescript-eslint/utils": 6.14.0 + "@typescript-eslint/visitor-keys": 6.14.0 debug: ^4.3.4 graphemer: ^1.4.0 ignore: ^5.2.4 @@ -19510,25 +19555,25 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 568093d76c200a8502047d74f29300110a59b9f2a5cbf995a6cbe419c803a7ec22220e9592a884401d2dde72c79346b4cc0ee393e7b422924ad4a8a2040af3b0 + checksum: ec688fd71b21576bfe0e4176889fddf3c13d8b07792461b84017d689ed11a9bffbf4d2ab61e9bdb254e43d2c1e159d5c2fc21bdfa6a6c2d64f9e1956a668fbe8 languageName: node linkType: hard "@typescript-eslint/parser@npm:^6.7.2": - version: 6.13.1 - resolution: "@typescript-eslint/parser@npm:6.13.1" + version: 6.14.0 + resolution: "@typescript-eslint/parser@npm:6.14.0" dependencies: - "@typescript-eslint/scope-manager": 6.13.1 - "@typescript-eslint/types": 6.13.1 - "@typescript-eslint/typescript-estree": 6.13.1 - "@typescript-eslint/visitor-keys": 6.13.1 + "@typescript-eslint/scope-manager": 6.14.0 + "@typescript-eslint/types": 6.14.0 + "@typescript-eslint/typescript-estree": 6.14.0 + "@typescript-eslint/visitor-keys": 6.14.0 debug: ^4.3.4 peerDependencies: eslint: ^7.0.0 || ^8.0.0 peerDependenciesMeta: typescript: optional: true - checksum: 58b7fef6f2d02c8f4737f9908a8d335a20bee20dba648233a69f28e7b39237791d2b9fbb818e628dcc053ddf16507b161ace7f1139e093d72365f1270c426de3 + checksum: 5fbe8d7431654c14ba6c9782d3728026ad5c90e02c9c4319f45df972e653cf5c15ba320dce70cdffa9fb7ce4c4263c37585e7bc1c909d1252d0a599880963063 languageName: node linkType: hard @@ -19542,22 +19587,22 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/scope-manager@npm:6.13.1": - version: 6.13.1 - resolution: "@typescript-eslint/scope-manager@npm:6.13.1" +"@typescript-eslint/scope-manager@npm:6.14.0": + version: 6.14.0 + resolution: "@typescript-eslint/scope-manager@npm:6.14.0" dependencies: - "@typescript-eslint/types": 6.13.1 - "@typescript-eslint/visitor-keys": 6.13.1 - checksum: 109a213f82719e10f8c6a0168f2e105dc1369c7e0c075c1f30af137030fc866a3a585a77ff78a9a3538afc213061c8aedbb4462a91f26cbd90eefbab8b89ea10 + "@typescript-eslint/types": 6.14.0 + "@typescript-eslint/visitor-keys": 6.14.0 + checksum: 0b577d42db925426a9838fe61703c226e18b697374fbe20cf9b93ba30fe58bf4a7f7f42491a4d24b7f3cc12d9a189fe3524c0e9b7708727e710d95b908250a14 languageName: node linkType: hard -"@typescript-eslint/type-utils@npm:6.13.1": - version: 6.13.1 - resolution: "@typescript-eslint/type-utils@npm:6.13.1" +"@typescript-eslint/type-utils@npm:6.14.0": + version: 6.14.0 + resolution: "@typescript-eslint/type-utils@npm:6.14.0" dependencies: - "@typescript-eslint/typescript-estree": 6.13.1 - "@typescript-eslint/utils": 6.13.1 + "@typescript-eslint/typescript-estree": 6.14.0 + "@typescript-eslint/utils": 6.14.0 debug: ^4.3.4 ts-api-utils: ^1.0.1 peerDependencies: @@ -19565,7 +19610,7 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: e39d28dd2f3b47a26b4f6aa2c7a301bdd769ce9148d734be93441a813c3d1111eba1d655677355bba5519f3d4dbe93e4ff4e46830216b0302df0070bf7a80057 + checksum: 09988f25279598840673c41ba44b03756f2dfb31284ab72af97c170711a0f31e5c53d6b120aa83f31438565e82aae1a1ca4d1ed0de4890654dd6a6a33d88202c languageName: node linkType: hard @@ -19576,10 +19621,10 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/types@npm:6.13.1": - version: 6.13.1 - resolution: "@typescript-eslint/types@npm:6.13.1" - checksum: bb1d52f1646bab9acd3ec874567ffbaaaf7fe4a5f79845bdacbfea46d15698e58d45797da05b08c23f9496a17229b7f2c1363d000fd89ce4e79874fd57ba1d4a +"@typescript-eslint/types@npm:6.14.0": + version: 6.14.0 + resolution: "@typescript-eslint/types@npm:6.14.0" + checksum: 624e6c5227f596dcc9757348d09c5a09b846a62938b8b4409614cf8108013b64ed8b270c32e87ea8890dd09ed896b82e92872c3574dbf07dcda11a168d69dd1f languageName: node linkType: hard @@ -19601,12 +19646,12 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:6.13.1": - version: 6.13.1 - resolution: "@typescript-eslint/typescript-estree@npm:6.13.1" +"@typescript-eslint/typescript-estree@npm:6.14.0": + version: 6.14.0 + resolution: "@typescript-eslint/typescript-estree@npm:6.14.0" dependencies: - "@typescript-eslint/types": 6.13.1 - "@typescript-eslint/visitor-keys": 6.13.1 + "@typescript-eslint/types": 6.14.0 + "@typescript-eslint/visitor-keys": 6.14.0 debug: ^4.3.4 globby: ^11.1.0 is-glob: ^4.0.3 @@ -19615,24 +19660,24 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 09aa0f5cbd60e84df4f58f3d479be352549600b24dbefe75c686ea89252526c52c1c06ce1ae56c0405dd7337002e741c2ba02b71fb1caa3b94a740a70fcc8699 + checksum: 495d7616463685bfd8138ffa9fbc0a7f9130ff8a3f6f85775960b4f0a3fdc259ae53b104cdfe562b60310860b5a6c8387307790734555084aa087e3bb9c28a69 languageName: node linkType: hard -"@typescript-eslint/utils@npm:6.13.1": - version: 6.13.1 - resolution: "@typescript-eslint/utils@npm:6.13.1" +"@typescript-eslint/utils@npm:6.14.0": + version: 6.14.0 + resolution: "@typescript-eslint/utils@npm:6.14.0" dependencies: "@eslint-community/eslint-utils": ^4.4.0 "@types/json-schema": ^7.0.12 "@types/semver": ^7.5.0 - "@typescript-eslint/scope-manager": 6.13.1 - "@typescript-eslint/types": 6.13.1 - "@typescript-eslint/typescript-estree": 6.13.1 + "@typescript-eslint/scope-manager": 6.14.0 + "@typescript-eslint/types": 6.14.0 + "@typescript-eslint/typescript-estree": 6.14.0 semver: ^7.5.4 peerDependencies: eslint: ^7.0.0 || ^8.0.0 - checksum: 14f64840869c8755af4d287cfc74abc424dc139559e87ca1a8b0e850f4fa56311d99dfb61a43dd4433eae5914be12b4b3390e55de1f236dce6701830d17e31c9 + checksum: 36e8501cb85647947189f31017c36d6f6ac7ef0399fa0e18eb64f1b83e00f1e8ace1d9ac5015ef4d9c1b820179f1def8d61d7ea9e5d61433eb848cf5c49dc8b0 languageName: node linkType: hard @@ -19664,13 +19709,13 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/visitor-keys@npm:6.13.1": - version: 6.13.1 - resolution: "@typescript-eslint/visitor-keys@npm:6.13.1" +"@typescript-eslint/visitor-keys@npm:6.14.0": + version: 6.14.0 + resolution: "@typescript-eslint/visitor-keys@npm:6.14.0" dependencies: - "@typescript-eslint/types": 6.13.1 + "@typescript-eslint/types": 6.14.0 eslint-visitor-keys: ^3.4.1 - checksum: d15d362203a2fe995ea62a59d5b44c15c8fb1fb30ff59dd1542a980f75b3b62035303dfb781d83709921613f6ac8cc5bf57b70f6e20d820aec8b7911f07152e9 + checksum: fc593c4e94d5739be7bd88e42313a301bc9806fad758b6a0a1bafd296ff41522be602caf4976beec84e363b0f56585bb98df3c157f70de984de721798501fd8a languageName: node linkType: hard @@ -19898,17 +19943,17 @@ __metadata: linkType: hard "@vitejs/plugin-react@npm:^4.0.4": - version: 4.2.0 - resolution: "@vitejs/plugin-react@npm:4.2.0" + version: 4.2.1 + resolution: "@vitejs/plugin-react@npm:4.2.1" dependencies: - "@babel/core": ^7.23.3 + "@babel/core": ^7.23.5 "@babel/plugin-transform-react-jsx-self": ^7.23.3 "@babel/plugin-transform-react-jsx-source": ^7.23.3 - "@types/babel__core": ^7.20.4 + "@types/babel__core": ^7.20.5 react-refresh: ^0.14.0 peerDependencies: vite: ^4.2.0 || ^5.0.0 - checksum: 515dc270dc433d9d80806501221d152f627aabc342916e9dc0d1d840fec76bc00daf3e41738f9aad286de89ee9325fd423372298bd04a3bfd618601ae62d515d + checksum: 08d227d27ff2304e395e746bd2d4b5fee40587f69d7e2fcd6beb7d91163c1f1dc26d843bc48e2ffb8f38c6b8a1b9445fb07840e3dcc841f97b56bbb8205346aa languageName: node linkType: hard @@ -20264,12 +20309,12 @@ __metadata: languageName: node linkType: hard -"acorn@npm:^8.2.4, acorn@npm:^8.4.1, acorn@npm:^8.5.0, acorn@npm:^8.7.1, acorn@npm:^8.9.0": - version: 8.10.0 - resolution: "acorn@npm:8.10.0" +"acorn@npm:^8.2.4, acorn@npm:^8.4.1, acorn@npm:^8.7.1, acorn@npm:^8.8.2, acorn@npm:^8.9.0": + version: 8.11.3 + resolution: "acorn@npm:8.11.3" bin: acorn: bin/acorn - checksum: 538ba38af0cc9e5ef983aee196c4b8b4d87c0c94532334fa7e065b2c8a1f85863467bb774231aae91613fcda5e68740c15d97b1967ae3394d20faddddd8af61d + checksum: 76d8e7d559512566b43ab4aadc374f11f563f0a9e21626dd59cb2888444e9445923ae9f3699972767f18af61df89cd89f5eaaf772d1327b055b45cb829b4a88c languageName: node linkType: hard @@ -21108,13 +21153,13 @@ __metadata: linkType: hard "aws-sdk-client-mock@npm:^3.0.0": - version: 3.0.0 - resolution: "aws-sdk-client-mock@npm:3.0.0" + version: 3.0.1 + resolution: "aws-sdk-client-mock@npm:3.0.1" dependencies: "@types/sinon": ^10.0.10 - sinon: ^14.0.2 + sinon: ^16.1.3 tslib: ^2.1.0 - checksum: 6298de923260bc824d0c2788196f8839a20da8d64ed82e662913f19417ab872c6cb4c029c5f8f2782da0a4c16e37a8ac077da0bdb19c4e0c82707cf286f7c5d3 + checksum: e875af24a765d7883059c101a629a58bbb2ec3a055443562f9410ebd96823691dfae25d69b962dc3c22ad5867971c37b378d05f3c8344bbb992b1a624a0fb836 languageName: node linkType: hard @@ -21189,13 +21234,13 @@ __metadata: linkType: hard "axios@npm:^1.4.0, axios@npm:^1.6.0": - version: 1.6.2 - resolution: "axios@npm:1.6.2" + version: 1.6.3 + resolution: "axios@npm:1.6.3" dependencies: follow-redirects: ^1.15.0 form-data: ^4.0.0 proxy-from-env: ^1.1.0 - checksum: 4a7429e2b784be0f2902ca2680964391eae7236faa3967715f30ea45464b98ae3f1c6f631303b13dfe721b17126b01f486c7644b9ef276bfc63112db9fd379f8 + checksum: 07ef3bb83fc2dacc1ae2c97f2bbd04ef7701f5655f9037789d79ee78b698ffa50eaa8465c2017d4d3e9ce7d94cb779f730acaab32ce9036d0a4933c1e89df4da languageName: node linkType: hard @@ -22525,9 +22570,9 @@ __metadata: linkType: hard "classnames@npm:*, classnames@npm:^2.2.5, classnames@npm:^2.2.6, classnames@npm:^2.3.1": - version: 2.3.2 - resolution: "classnames@npm:2.3.2" - checksum: 2c62199789618d95545c872787137262e741f9db13328e216b093eea91c85ef2bfb152c1f9e63027204e2559a006a92eb74147d46c800a9f96297ae1d9f96f4e + version: 2.3.3 + resolution: "classnames@npm:2.3.3" + checksum: 0cb4db9cc3b8d2363c81f857f85b30351605fe683c89d140939aed4e06895a9570be737494ef3907e7069e2b98ed25ba3960fbf087b33309a18707fc38565e95 languageName: node linkType: hard @@ -23456,13 +23501,20 @@ __metadata: languageName: node linkType: hard -"cookie@npm:0.5.0, cookie@npm:^0.5.0, cookie@npm:~0.5.0": +"cookie@npm:0.5.0, cookie@npm:^0.5.0": version: 0.5.0 resolution: "cookie@npm:0.5.0" checksum: 1f4bd2ca5765f8c9689a7e8954183f5332139eb72b6ff783d8947032ec1fdf43109852c178e21a953a30c0dd42257828185be01b49d1eb1a67fd054ca588a180 languageName: node linkType: hard +"cookie@npm:~0.6.0": + version: 0.6.0 + resolution: "cookie@npm:0.6.0" + checksum: f56a7d32a07db5458e79c726b77e3c2eff655c36792f2b6c58d351fb5f61531e5b1ab7f46987150136e366c65213cbe31729e02a3eaed630c3bf7334635fb410 + languageName: node + linkType: hard + "cookiejar@npm:^2.1.4": version: 2.1.4 resolution: "cookiejar@npm:2.1.4" @@ -24090,17 +24142,10 @@ __metadata: languageName: node linkType: hard -"csstype@npm:^2.0.0, csstype@npm:^2.5.2, csstype@npm:^2.6.7": - version: 2.6.21 - resolution: "csstype@npm:2.6.21" - checksum: 2ce8bc832375146eccdf6115a1f8565a27015b74cce197c35103b4494955e9516b246140425ad24103864076aa3e1257ac9bab25a06c8d931dd87a6428c9dccf - languageName: node - linkType: hard - -"csstype@npm:^3.0.2, csstype@npm:^3.1.2": - version: 3.0.9 - resolution: "csstype@npm:3.0.9" - checksum: 199f9af7e673f9f188525c3102a329d637ff46c52f6385a4427ff5cb17adcb736189150170a7af7c5701d18d7704bdad130273f4aa7e44c6c4f9967e6115dc93 +"csstype@npm:>=3.0.2 <=3.1.2": + version: 3.1.2 + resolution: "csstype@npm:3.1.2" + checksum: e1a52e6c25c1314d6beef5168da704ab29c5186b877c07d822bd0806717d9a265e8493a2e35ca7e68d0f5d472d43fac1cdce70fd79fd0853dff81f3028d857b5 languageName: node linkType: hard @@ -24864,7 +24909,7 @@ __metadata: languageName: node linkType: hard -"diff@npm:^5.0.0": +"diff@npm:^5.0.0, diff@npm:^5.1.0": version: 5.1.0 resolution: "diff@npm:5.1.0" checksum: c7bf0df7c9bfbe1cf8a678fd1b2137c4fb11be117a67bc18a0e03ae75105e8533dbfb1cda6b46beb3586ef5aed22143ef9d70713977d5fb1f9114e21455fba90 @@ -25881,32 +25926,35 @@ __metadata: linkType: hard "esbuild@npm:^0.19.0": - version: 0.19.8 - resolution: "esbuild@npm:0.19.8" + version: 0.19.10 + resolution: "esbuild@npm:0.19.10" dependencies: - "@esbuild/android-arm": 0.19.8 - "@esbuild/android-arm64": 0.19.8 - "@esbuild/android-x64": 0.19.8 - "@esbuild/darwin-arm64": 0.19.8 - "@esbuild/darwin-x64": 0.19.8 - "@esbuild/freebsd-arm64": 0.19.8 - "@esbuild/freebsd-x64": 0.19.8 - "@esbuild/linux-arm": 0.19.8 - "@esbuild/linux-arm64": 0.19.8 - "@esbuild/linux-ia32": 0.19.8 - "@esbuild/linux-loong64": 0.19.8 - "@esbuild/linux-mips64el": 0.19.8 - "@esbuild/linux-ppc64": 0.19.8 - "@esbuild/linux-riscv64": 0.19.8 - "@esbuild/linux-s390x": 0.19.8 - "@esbuild/linux-x64": 0.19.8 - "@esbuild/netbsd-x64": 0.19.8 - "@esbuild/openbsd-x64": 0.19.8 - "@esbuild/sunos-x64": 0.19.8 - "@esbuild/win32-arm64": 0.19.8 - "@esbuild/win32-ia32": 0.19.8 - "@esbuild/win32-x64": 0.19.8 + "@esbuild/aix-ppc64": 0.19.10 + "@esbuild/android-arm": 0.19.10 + "@esbuild/android-arm64": 0.19.10 + "@esbuild/android-x64": 0.19.10 + "@esbuild/darwin-arm64": 0.19.10 + "@esbuild/darwin-x64": 0.19.10 + "@esbuild/freebsd-arm64": 0.19.10 + "@esbuild/freebsd-x64": 0.19.10 + "@esbuild/linux-arm": 0.19.10 + "@esbuild/linux-arm64": 0.19.10 + "@esbuild/linux-ia32": 0.19.10 + "@esbuild/linux-loong64": 0.19.10 + "@esbuild/linux-mips64el": 0.19.10 + "@esbuild/linux-ppc64": 0.19.10 + "@esbuild/linux-riscv64": 0.19.10 + "@esbuild/linux-s390x": 0.19.10 + "@esbuild/linux-x64": 0.19.10 + "@esbuild/netbsd-x64": 0.19.10 + "@esbuild/openbsd-x64": 0.19.10 + "@esbuild/sunos-x64": 0.19.10 + "@esbuild/win32-arm64": 0.19.10 + "@esbuild/win32-ia32": 0.19.10 + "@esbuild/win32-x64": 0.19.10 dependenciesMeta: + "@esbuild/aix-ppc64": + optional: true "@esbuild/android-arm": optional: true "@esbuild/android-arm64": @@ -25953,7 +26001,7 @@ __metadata: optional: true bin: esbuild: bin/esbuild - checksum: 1dff99482ecbfcc642ec66c71e4dc5c73ce6aef68e8158a4937890b570e86a95959ac47e0f14785ba70df5a673ae4289df88a162e9759b02367ed28074cee8ba + checksum: b97f2f837c931e065839fe9adebba44b80aaa81c6b32dca4e1e77c068a0afb045d08a94d86abdacb29daef783ec092f0db688a31f3d463e2e42ac17e5a478265 languageName: node linkType: hard @@ -26105,8 +26153,8 @@ __metadata: linkType: hard "eslint-plugin-import@npm:^2.25.4": - version: 2.29.0 - resolution: "eslint-plugin-import@npm:2.29.0" + version: 2.29.1 + resolution: "eslint-plugin-import@npm:2.29.1" dependencies: array-includes: ^3.1.7 array.prototype.findlastindex: ^1.2.3 @@ -26124,10 +26172,10 @@ __metadata: object.groupby: ^1.0.1 object.values: ^1.1.7 semver: ^6.3.1 - tsconfig-paths: ^3.14.2 + tsconfig-paths: ^3.15.0 peerDependencies: eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 - checksum: 19ee541fb95eb7a796f3daebe42387b8d8262bbbcc4fd8a6e92f63a12035f3d2c6cb8bc0b6a70864fa14b1b50ed6b8e6eed5833e625e16cb6bb98b665beff269 + checksum: e65159aef808136d26d029b71c8c6e4cb5c628e65e5de77f1eb4c13a379315ae55c9c3afa847f43f4ff9df7e54515c77ffc6489c6a6f81f7dd7359267577468c languageName: node linkType: hard @@ -26799,6 +26847,7 @@ __metadata: "@backstage/plugin-adr-backend": "workspace:^" "@backstage/plugin-app-backend": "workspace:^" "@backstage/plugin-auth-backend": "workspace:^" + "@backstage/plugin-auth-backend-module-aws-alb-provider": "workspace:^" "@backstage/plugin-auth-node": "workspace:^" "@backstage/plugin-azure-devops-backend": "workspace:^" "@backstage/plugin-azure-sites-backend": "workspace:^" @@ -26986,8 +27035,8 @@ __metadata: linkType: hard "express-openapi-validator@npm:^5.0.4": - version: 5.1.1 - resolution: "express-openapi-validator@npm:5.1.1" + version: 5.1.2 + resolution: "express-openapi-validator@npm:5.1.2" dependencies: "@apidevtools/json-schema-ref-parser": ^9.1.2 "@types/multer": ^1.4.7 @@ -27004,7 +27053,7 @@ __metadata: multer: ^1.4.5-lts.1 ono: ^7.1.3 path-to-regexp: ^6.2.0 - checksum: 33392d9f08c477f582675c3a747792380c6b87270cabd26ceea62cb683299cbb6ec4493e8a88ab1a91ba68657876006dc165697b733b8fcba0555c52841d3a39 + checksum: e02eaad8549893f874916cfc52a9d81f1ef15c553e726876e6b73cc93469a21e28e42d1d25449aa04c764f8d024b1ea664b7ce6083abdd8513168ece7929ee20 languageName: node linkType: hard @@ -27673,12 +27722,12 @@ __metadata: linkType: hard "follow-redirects@npm:^1.0.0, follow-redirects@npm:^1.14.0, follow-redirects@npm:^1.14.9, follow-redirects@npm:^1.15.0": - version: 1.15.2 - resolution: "follow-redirects@npm:1.15.2" + version: 1.15.4 + resolution: "follow-redirects@npm:1.15.4" peerDependenciesMeta: debug: optional: true - checksum: faa66059b66358ba65c234c2f2a37fcec029dc22775f35d9ad6abac56003268baf41e55f9ee645957b32c7d9f62baf1f0b906e68267276f54ec4b4c597c2b190 + checksum: e178d1deff8b23d5d24ec3f7a94cde6e47d74d0dc649c35fc9857041267c12ec5d44650a0c5597ef83056ada9ea6ca0c30e7c4f97dbf07d035086be9e6a5b7b6 languageName: node linkType: hard @@ -28775,11 +28824,11 @@ __metadata: linkType: hard "graphql-ws@npm:^5.14.0, graphql-ws@npm:^5.4.1, graphql-ws@npm:^5.9.0": - version: 5.14.2 - resolution: "graphql-ws@npm:5.14.2" + version: 5.14.3 + resolution: "graphql-ws@npm:5.14.3" peerDependencies: graphql: ">=0.11 <=16" - checksum: ee9affa2478b9d262405986f07616267b4db10ae45cf32fffb551572fb5bf5e1e3aa6652375511b3ff640d382c74c1327ce75ff1ee2fa8b964b3ef3d55d97f75 + checksum: c5bfdeb6d06f528e2222e71bf830b2f4f3e5b95419453d3b650cef9fe012e0126f121e4858d950edf3db1fb209a056b592643751624d1bc1fc71ecbe546d53d5 languageName: node linkType: hard @@ -30707,8 +30756,8 @@ __metadata: linkType: hard "isomorphic-git@npm:^1.23.0": - version: 1.25.0 - resolution: "isomorphic-git@npm:1.25.0" + version: 1.25.2 + resolution: "isomorphic-git@npm:1.25.2" dependencies: async-lock: ^1.1.0 clean-git-ref: ^2.0.1 @@ -30723,7 +30772,7 @@ __metadata: simple-get: ^4.0.1 bin: isogit: cli.cjs - checksum: d7f97cc3a7c7deb45077e3308c72aadd20a4a2ecf1c4ba929edb4e658356453bfe10daa38dcb5a34de0432e0a98ad91cfc540e62a8604aec9fd07ab5e7197299 + checksum: b8e7a1b66c393ac1ab30fd0deb561b97e4ca249aad97367f11be8ed18b20132460bec89451752e3533e64a5a8c47b3509dc5a7dee2eea266c812b45df633b441 languageName: node linkType: hard @@ -31512,7 +31561,7 @@ __metadata: languageName: node linkType: hard -"jose@npm:^4.14.6, jose@npm:^4.15.1, jose@npm:^4.6.0": +"jose@npm:^4.14.6, jose@npm:^4.15.4, jose@npm:^4.6.0": version: 4.15.4 resolution: "jose@npm:4.15.4" checksum: dccad91cb3357f36423774a0b89ad830dd84b31090de65cd139b85488439f16a00f8c59c0773825e8a1adb0dd9d13ad725ad66e6ea33880ecb3959bb99e1ea5b @@ -32638,16 +32687,6 @@ __metadata: languageName: node linkType: hard -"linkify-react@npm:4.1.2": - version: 4.1.2 - resolution: "linkify-react@npm:4.1.2" - peerDependencies: - linkifyjs: ^4.0.0 - react: ">= 15.0.0" - checksum: c262e5aeb95cce014256ef417756c405bffd88e4cbe133185bc031113728e982025f8fa6f0ee76f67c84e030bcc093b50fa833724612c09762244d9efe22d192 - languageName: node - linkType: hard - "linkify-react@npm:4.1.3": version: 4.1.3 resolution: "linkify-react@npm:4.1.3" @@ -32658,13 +32697,6 @@ __metadata: languageName: node linkType: hard -"linkifyjs@npm:4.1.2": - version: 4.1.2 - resolution: "linkifyjs@npm:4.1.2" - checksum: 42d594fdf5347e0b35ab9b9a46d0eb290f1a39f092a4e883e0dfa97bb8c3ff5dde57d6ff80d1580f2b6d0b4620269b49bf865c2013b341f1ce084038e9abab01 - languageName: node - linkType: hard - "linkifyjs@npm:4.1.3": version: 4.1.3 resolution: "linkifyjs@npm:4.1.3" @@ -33177,9 +33209,9 @@ __metadata: linkType: hard "lru-cache@npm:^10.0.1, lru-cache@npm:^9.1.1 || ^10.0.0": - version: 10.0.1 - resolution: "lru-cache@npm:10.0.1" - checksum: 06f8d0e1ceabd76bb6f644a26dbb0b4c471b79c7b514c13c6856113879b3bf369eb7b497dad4ff2b7e2636db202412394865b33c332100876d838ad1372f0181 + version: 10.1.0 + resolution: "lru-cache@npm:10.1.0" + checksum: 58056d33e2500fbedce92f8c542e7c11b50d7d086578f14b7074d8c241422004af0718e08a6eaae8705cee09c77e39a61c1c79e9370ba689b7010c152e6a76ab languageName: node linkType: hard @@ -34773,8 +34805,8 @@ __metadata: linkType: hard "msw@npm:^2.0.0, msw@npm:^2.0.8": - version: 2.0.10 - resolution: "msw@npm:2.0.10" + version: 2.0.11 + resolution: "msw@npm:2.0.11" dependencies: "@bundled-es-modules/cookie": ^2.0.0 "@bundled-es-modules/js-levenshtein": ^2.0.1 @@ -34804,7 +34836,7 @@ __metadata: optional: true bin: msw: cli/index.js - checksum: 1f18c835019a0c7c24280777885a9e8878bba0de3be2e7dcc2362c0850e69b18198fb9774ac1cf39690ca7e82b9e59b318b753f79761a91ce55d6659c2289d61 + checksum: a87175f53e3b510dfdfb16e11f2b0d399a9859ce1f249a70741045ce6325b3512075878921d4bd30ad6cb0789cd6fc4f9eac5db68ae425777e96ad208285242d languageName: node linkType: hard @@ -35042,16 +35074,16 @@ __metadata: languageName: node linkType: hard -"nise@npm:^5.1.2": - version: 5.1.2 - resolution: "nise@npm:5.1.2" +"nise@npm:^5.1.4": + version: 5.1.5 + resolution: "nise@npm:5.1.5" dependencies: "@sinonjs/commons": ^2.0.0 - "@sinonjs/fake-timers": ^7.0.4 + "@sinonjs/fake-timers": ^10.0.2 "@sinonjs/text-encoding": ^0.7.1 just-extend: ^4.0.2 path-to-regexp: ^1.7.0 - checksum: 688c557333dcbc5b41f4f1f1b0ea32fb0f8b424541a8958140bc61074980362c954b2aeb027c282de26b9ddcb4b230656f68ac4206777499e405dd7e716ec1f8 + checksum: c763dc62c5796cafa5c9268e14a5b34db6e6fa2f1dbc57a891fe5d7ea632a87868e22b5bb34965006f984630793ea11368351e94971163228d9e20b2e88edce8 languageName: node linkType: hard @@ -35922,14 +35954,14 @@ __metadata: linkType: hard "openid-client@npm:^5.2.1, openid-client@npm:^5.3.0, openid-client@npm:^5.4.3": - version: 5.6.1 - resolution: "openid-client@npm:5.6.1" + version: 5.6.2 + resolution: "openid-client@npm:5.6.2" dependencies: - jose: ^4.15.1 + jose: ^4.15.4 lru-cache: ^6.0.0 object-hash: ^2.2.0 oidc-token-hash: ^5.0.3 - checksum: 9d939cec57540e6dd3f67e9a248ec5ecec3b439b7ab5bd2e9fb4481bd03e8d030deedd87a447348194be7f3e93e84085841b0414033caf86479870f526cdbc2f + checksum: e61bc7170bb53d9b50098476b68b72e07f93769caae8ae12ffb885c2dac5fb2fdf6de437a9eb29c5501f52b296f01c083de8d6f3500f2999fc863c9f9f5142fa languageName: node linkType: hard @@ -40836,17 +40868,17 @@ __metadata: languageName: node linkType: hard -"sinon@npm:^14.0.2": - version: 14.0.2 - resolution: "sinon@npm:14.0.2" +"sinon@npm:^16.1.3": + version: 16.1.3 + resolution: "sinon@npm:16.1.3" dependencies: - "@sinonjs/commons": ^2.0.0 - "@sinonjs/fake-timers": ^9.1.2 - "@sinonjs/samsam": ^7.0.1 - diff: ^5.0.0 - nise: ^5.1.2 + "@sinonjs/commons": ^3.0.0 + "@sinonjs/fake-timers": ^10.3.0 + "@sinonjs/samsam": ^8.0.0 + diff: ^5.1.0 + nise: ^5.1.4 supports-color: ^7.2.0 - checksum: de7730cd7785a457e42f9a93e955780c870296036a13816e3c0c5648360afae82fdc748e36c854cf26fb8abd117855a7211aee49265c334fa61439aae17a1b72 + checksum: 83e5ccd724efdb5d1471e41b2cfaf4a46d9fe2cc76c15a23dedfbd741f7d448e6aec3d34a8253a79bdf8ddcc5bd889c5277ae71879e4709c621cb41094fbcdab languageName: node linkType: hard @@ -42033,9 +42065,9 @@ __metadata: languageName: node linkType: hard -"swagger-client@npm:^3.24.5": - version: 3.24.5 - resolution: "swagger-client@npm:3.24.5" +"swagger-client@npm:^3.24.6": + version: 3.24.6 + resolution: "swagger-client@npm:3.24.6" dependencies: "@babel/runtime-corejs3": ^7.22.15 "@swagger-api/apidom-core": ">=0.83.0 <1.0.0" @@ -42043,7 +42075,7 @@ __metadata: "@swagger-api/apidom-json-pointer": ">=0.83.0 <1.0.0" "@swagger-api/apidom-ns-openapi-3-1": ">=0.83.0 <1.0.0" "@swagger-api/apidom-reference": ">=0.83.0 <1.0.0" - cookie: ~0.5.0 + cookie: ~0.6.0 deepmerge: ~4.3.0 fast-json-patch: ^3.0.0-1 is-plain-object: ^5.0.0 @@ -42053,15 +42085,15 @@ __metadata: qs: ^6.10.2 traverse: ~0.6.6 undici: ^5.24.0 - checksum: d41ff94f9a506b99e7b30334c96a5011b14acf2af5204648b70e5b8e1902f3bf62ca2297b4e5f7536a3f0bb0a9cd4aa83d439b9352d0f1e3a110409201cae0bc + checksum: 8bb1aeea4576fdd88543c4e011b1f087c52b34e5a069d560937a5c32a6e1e6c7eda243810886f8b09e4e12062e8f2768edaa5e6193140a28f9604bac42b18104 languageName: node linkType: hard "swagger-ui-react@npm:^5.0.0": - version: 5.10.3 - resolution: "swagger-ui-react@npm:5.10.3" + version: 5.10.5 + resolution: "swagger-ui-react@npm:5.10.5" dependencies: - "@babel/runtime-corejs3": ^7.23.2 + "@babel/runtime-corejs3": ^7.23.5 "@braintree/sanitize-url": =6.0.4 base64-js: ^1.5.1 classnames: ^2.3.1 @@ -42090,7 +42122,7 @@ __metadata: reselect: ^4.1.8 serialize-error: ^8.1.0 sha.js: ^2.4.11 - swagger-client: ^3.24.5 + swagger-client: ^3.24.6 url-parse: ^1.5.10 xml: =1.0.1 xml-but-prettier: ^1.0.1 @@ -42098,7 +42130,7 @@ __metadata: peerDependencies: react: ">=17.0.0" react-dom: ">=17.0.0" - checksum: 505dfb7b6f09b75bd637ac89796a6c4c8f3833b3907463f6824c37732cb4d19d045408fd92070dd1d93416996063bd97749de4397b2fca978df8025f2243b60c + checksum: 79256d68d56389d089a953f7d6c3a95a67c0b4e2794ae3992ba60adc0312aeb4446d8ba1e20687fcd7708d562e7c15fa733dbcb54cd8f99948ebf4c4513fa042 languageName: node linkType: hard @@ -42300,14 +42332,14 @@ __metadata: linkType: hard "terser-webpack-plugin@npm:*, terser-webpack-plugin@npm:^5.1.3, terser-webpack-plugin@npm:^5.3.7": - version: 5.3.9 - resolution: "terser-webpack-plugin@npm:5.3.9" + version: 5.3.10 + resolution: "terser-webpack-plugin@npm:5.3.10" dependencies: - "@jridgewell/trace-mapping": ^0.3.17 + "@jridgewell/trace-mapping": ^0.3.20 jest-worker: ^27.4.5 schema-utils: ^3.1.1 serialize-javascript: ^6.0.1 - terser: ^5.16.8 + terser: ^5.26.0 peerDependencies: webpack: ^5.1.0 peerDependenciesMeta: @@ -42317,21 +42349,21 @@ __metadata: optional: true uglify-js: optional: true - checksum: 41705713d6f9cb83287936b21e27c658891c78c4392159f5148b5623f0e8c48559869779619b058382a4c9758e7820ea034695e57dc7c474b4962b79f553bc5f + checksum: bd6e7596cf815f3353e2a53e79cbdec959a1b0276f5e5d4e63e9d7c3c5bb5306df567729da287d1c7b39d79093e56863c569c42c6c24cc34c76aa313bd2cbcea languageName: node linkType: hard -"terser@npm:^5.10.0, terser@npm:^5.16.8": - version: 5.17.1 - resolution: "terser@npm:5.17.1" +"terser@npm:^5.10.0, terser@npm:^5.26.0": + version: 5.26.0 + resolution: "terser@npm:5.26.0" dependencies: - "@jridgewell/source-map": ^0.3.2 - acorn: ^8.5.0 + "@jridgewell/source-map": ^0.3.3 + acorn: ^8.8.2 commander: ^2.20.0 source-map-support: ~0.5.20 bin: terser: bin/terser - checksum: 69b0e80e3c4084db2819de4d6ae8a2ba79f2fcd7ed6df40fe4b602ec7bfd8e889cc63c7d5268f30990ffecbf6eeda18f857adad9386fe2c2331b398d58ed855c + checksum: 02a9bb896f04df828025af8f0eced36c315d25d310b6c2418e7dad2bed19ddeb34a9cea9b34e7c24789830fa51e1b6a9be26679980987a9c817a7e6d9cd4154b languageName: node linkType: hard @@ -42777,8 +42809,8 @@ __metadata: linkType: hard "ts-node@npm:^10.0.0, ts-node@npm:^10.4.0, ts-node@npm:^10.9.1": - version: 10.9.1 - resolution: "ts-node@npm:10.9.1" + version: 10.9.2 + resolution: "ts-node@npm:10.9.2" dependencies: "@cspotcode/source-map-support": ^0.8.0 "@tsconfig/node10": ^1.0.7 @@ -42810,7 +42842,7 @@ __metadata: ts-node-script: dist/bin-script.js ts-node-transpile-only: dist/bin-transpile.js ts-script: dist/bin-script-deprecated.js - checksum: 090adff1302ab20bd3486e6b4799e90f97726ed39e02b39e566f8ab674fd5bd5f727f43615debbfc580d33c6d9d1c6b1b3ce7d8e3cca3e20530a145ffa232c35 + checksum: fde256c9073969e234526e2cfead42591b9a2aec5222bac154b0de2fa9e4ceb30efcd717ee8bc785a56f3a119bdd5aa27b333d9dbec94ed254bd26f8944c67ac languageName: node linkType: hard @@ -42828,15 +42860,15 @@ __metadata: languageName: node linkType: hard -"tsconfig-paths@npm:^3.14.2": - version: 3.14.2 - resolution: "tsconfig-paths@npm:3.14.2" +"tsconfig-paths@npm:^3.15.0": + version: 3.15.0 + resolution: "tsconfig-paths@npm:3.15.0" dependencies: "@types/json5": ^0.0.29 json5: ^1.0.2 minimist: ^1.2.6 strip-bom: ^3.0.0 - checksum: a6162eaa1aed680537f93621b82399c7856afd10ec299867b13a0675e981acac4e0ec00896860480efc59fc10fd0b16fdc928c0b885865b52be62cadac692447 + checksum: 59f35407a390d9482b320451f52a411a256a130ff0e7543d18c6f20afab29ac19fbe55c360a93d6476213cc335a4d76ce90f67df54c4e9037f7d240920832201 languageName: node linkType: hard @@ -44108,8 +44140,8 @@ __metadata: linkType: hard "vite-plugin-html@npm:^3.2.0": - version: 3.2.0 - resolution: "vite-plugin-html@npm:3.2.0" + version: 3.2.1 + resolution: "vite-plugin-html@npm:3.2.1" dependencies: "@rollup/pluginutils": ^4.2.0 colorette: ^2.0.16 @@ -44125,7 +44157,7 @@ __metadata: pathe: ^0.2.0 peerDependencies: vite: ">=2.0.0" - checksum: f5222247b65da1c36215f0b2f509fd3975a7426b8d44546beb49f3ba51ee87b3a6b6e6afc9e7567a0d8bd1016631f2db3f934808f62a7c8f7f83fa83d8561d2d + checksum: 6add7cd7a8f9e83b0c58b20cde2d4da7e132ef56db6a60f3d4cc7022c944896236aeca6bde4c6dc2da3d506f756f63de56251adc47f0ae359c07485b24dd64db languageName: node linkType: hard @@ -45339,15 +45371,15 @@ __metadata: linkType: hard "zod-to-json-schema@npm:^3.20.4, zod-to-json-schema@npm:^3.21.4": - version: 3.22.1 - resolution: "zod-to-json-schema@npm:3.22.1" + version: 3.22.3 + resolution: "zod-to-json-schema@npm:3.22.3" peerDependencies: zod: ^3.22.4 - checksum: 7c0cdcf0acac81a9b69b26e44bc45e43aefacd5759e12f89856f0a4b957b66be27560671473ef7ab4a5883a871b6990a7f61fce3cee96ecad3823c5b7e524fa5 + checksum: 2747a3d1514f579006939c0edd6a420acae65ad016df223b09c4a542cbc8c0ae61b4d7b391228a211cde973635ed49c47b1449791982f3b32d799319bb174f42 languageName: node linkType: hard -"zod@npm:^3.21.4": +"zod@npm:^3.21.4, zod@npm:^3.22.4": version: 3.22.4 resolution: "zod@npm:3.22.4" checksum: 80bfd7f8039b24fddeb0718a2ec7c02aa9856e4838d6aa4864335a047b6b37a3273b191ef335bf0b2002e5c514ef261ffcda5a589fb084a48c336ffc4cdbab7f