diff --git a/.changeset/clickable-log-components.md b/.changeset/clickable-log-components.md
new file mode 100644
index 000000000..85acd64a9
--- /dev/null
+++ b/.changeset/clickable-log-components.md
@@ -0,0 +1,5 @@
+---
+'@openchoreo/backstage-plugin-openchoreo-observability': minor
+---
+
+Made component names in the project-level logging view clickable, allowing users to navigate directly to the component-scoped logging view while preserving the current time range and any relevant filters.
diff --git a/packages/test-utils/package.json b/packages/test-utils/package.json
index b36971bdb..865c5ada8 100644
--- a/packages/test-utils/package.json
+++ b/packages/test-utils/package.json
@@ -12,14 +12,13 @@
"directory": "packages/test-utils"
},
"backstage": {
- "role": "node-library"
+ "role": "common-library"
},
"scripts": {
"test": "backstage-cli package test",
"clean": "backstage-cli package clean"
},
"dependencies": {
- "@backstage/backend-test-utils": "^1.11.3",
"@backstage/catalog-model": "^1.9.0"
},
"devDependencies": {
diff --git a/plugins/openchoreo-observability/src/components/RuntimeLogs/LogEntry.test.tsx b/plugins/openchoreo-observability/src/components/RuntimeLogs/LogEntry.test.tsx
index c71371266..100d21001 100644
--- a/plugins/openchoreo-observability/src/components/RuntimeLogs/LogEntry.test.tsx
+++ b/plugins/openchoreo-observability/src/components/RuntimeLogs/LogEntry.test.tsx
@@ -1,4 +1,5 @@
import { useState } from 'react';
+import { MemoryRouter, useLocation } from 'react-router-dom';
import { render, screen } from '@testing-library/react';
import userEvent from '@testing-library/user-event';
import { LogEntry } from './LogEntry';
@@ -48,7 +49,11 @@ function renderLogEntry(
expanded,
onToggleExpand: () => setExpanded(prev => !prev),
};
- return ;
+ return (
+
+
+
+ );
};
return render();
}
@@ -97,6 +102,21 @@ describe('LogEntry', () => {
expect(screen.getByText('api-service')).toBeInTheDocument();
});
+ it('renders component name link with correct path', () => {
+ renderLogEntry({
+ selectedFields: [...allFields, LogEntryField.ComponentName],
+ entityNamespace: 'my-namespace',
+ entityKind: 'Component',
+ });
+
+ const link = screen.getByRole('link', { name: 'api-service' });
+ expect(link).toBeInTheDocument();
+ expect(link).toHaveAttribute(
+ 'href',
+ '/catalog/my-namespace/component/api-service/runtime-logs',
+ );
+ });
+
it('expands to show metadata on row click', async () => {
const user = userEvent.setup();
renderLogEntry();
@@ -176,4 +196,43 @@ describe('LogEntry', () => {
expect(screen.getByText('fallback-project')).toBeInTheDocument();
expect(screen.getByText('fallback-component')).toBeInTheDocument();
});
+
+ it('navigates to component runtime logs and stops propagation on component name link click', async () => {
+ const user = userEvent.setup();
+ const onToggleExpand = jest.fn();
+
+ const LocationDisplay = () => {
+ const location = useLocation();
+ return {location.pathname};
+ };
+
+ render(
+
+
+
+ ,
+ );
+
+ // Assert initial location is '/'
+ expect(screen.getByTestId('location-path')).toHaveTextContent('/');
+
+ const link = screen.getByRole('link', { name: 'api-service' });
+ await user.click(link);
+
+ // Assert the location updated to runtime-logs path
+ expect(screen.getByTestId('location-path')).toHaveTextContent(
+ '/catalog/default/component/api-service/runtime-logs',
+ );
+
+ // Assert propagation was stopped (onToggleExpand was NOT called)
+ expect(onToggleExpand).not.toHaveBeenCalled();
+ });
});
diff --git a/plugins/openchoreo-observability/src/components/RuntimeLogs/LogEntry.tsx b/plugins/openchoreo-observability/src/components/RuntimeLogs/LogEntry.tsx
index aa0edcf2c..907a62fe3 100644
--- a/plugins/openchoreo-observability/src/components/RuntimeLogs/LogEntry.tsx
+++ b/plugins/openchoreo-observability/src/components/RuntimeLogs/LogEntry.tsx
@@ -9,8 +9,12 @@ import {
} from '@material-ui/core';
import FileCopyOutlined from '@material-ui/icons/FileCopyOutlined';
import { LogEntry as LogEntryType, LogEntryField } from './types';
+import { Link } from '@backstage/core-components';
+import { useLocation } from 'react-router-dom';
import { useLogEntryStyles } from './styles';
import { getColumnStyle } from './columns';
+import { Entity } from '@backstage/catalog-model';
+import { buildRuntimeLogsBasePath } from '@openchoreo/backstage-plugin-react';
/**
* Render-prop slot for a per-row action button (assistant integration,
@@ -29,6 +33,8 @@ interface LogEntryProps {
environmentName?: string;
projectName?: string;
componentName?: string;
+ entityNamespace?: string;
+ entityKind?: string;
/**
* Whether this row is currently expanded. Controlled by the parent so that
* expansion survives the virtualizer unmounting the row off-screen.
@@ -53,12 +59,15 @@ export const LogEntry: FC = ({
environmentName,
projectName,
componentName,
+ entityNamespace,
+ entityKind,
expanded,
onToggleExpand,
getLogsSnapshot,
renderRowAction,
}) => {
const classes = useLogEntryStyles();
+ const location = useLocation();
const [copySuccess, setCopySuccess] = useState(false);
const handleCopyLog = async (event: MouseEvent) => {
@@ -140,13 +149,32 @@ export const LogEntry: FC = ({
}
if (field === LogEntryField.ComponentName) {
+ const compName = log.metadata?.componentName ?? componentName ?? '';
+ const entity: Entity = {
+ apiVersion: 'backstage.io/v1alpha1',
+ kind: entityKind || 'Component',
+ metadata: {
+ name: compName,
+ namespace: entityNamespace,
+ },
+ };
+ const basePath = buildRuntimeLogsBasePath(entity);
return (
- {log.metadata?.componentName ?? componentName ?? ''}
+ {compName ? (
+ e.stopPropagation()}
+ >
+ {compName}
+
+ ) : (
+ ''
+ )}
);
}
diff --git a/plugins/openchoreo-observability/src/components/RuntimeLogs/LogsTable.tsx b/plugins/openchoreo-observability/src/components/RuntimeLogs/LogsTable.tsx
index f332a8fbf..506f4b298 100644
--- a/plugins/openchoreo-observability/src/components/RuntimeLogs/LogsTable.tsx
+++ b/plugins/openchoreo-observability/src/components/RuntimeLogs/LogsTable.tsx
@@ -21,6 +21,8 @@ interface LogsTableProps {
environmentName?: string;
projectName?: string;
componentName?: string;
+ entityNamespace?: string;
+ entityKind?: string;
renderRowAction?: RenderLogRowAction;
}
@@ -37,6 +39,8 @@ export const LogsTable: FC = ({
environmentName,
projectName,
componentName,
+ entityNamespace,
+ entityKind,
renderRowAction,
}) => {
const classes = useLogsTableStyles();
@@ -164,6 +168,8 @@ export const LogsTable: FC = ({
environmentName={environmentName}
projectName={projectName}
componentName={componentName}
+ entityNamespace={entityNamespace}
+ entityKind={entityKind}
expanded={expanded.has(key)}
onToggleExpand={() => toggle(key)}
getLogsSnapshot={getLogsSnapshot}
diff --git a/plugins/openchoreo-observability/src/components/RuntimeLogs/ObservabilityProjectRuntimeLogsPage.tsx b/plugins/openchoreo-observability/src/components/RuntimeLogs/ObservabilityProjectRuntimeLogsPage.tsx
index a02a108a9..c59856328 100644
--- a/plugins/openchoreo-observability/src/components/RuntimeLogs/ObservabilityProjectRuntimeLogsPage.tsx
+++ b/plugins/openchoreo-observability/src/components/RuntimeLogs/ObservabilityProjectRuntimeLogsPage.tsx
@@ -241,6 +241,8 @@ const ObservabilityProjectRuntimeLogsContent = ({
selectedEnvironment?.displayName || selectedEnvironment?.name
}
projectName={projectName}
+ entityNamespace={entity.metadata.namespace}
+ entityKind="component"
renderRowAction={renderRowAction}
/>
>
diff --git a/plugins/openchoreo-observability/src/components/RuntimeLogs/ObservabilityRuntimeLogsPage.tsx b/plugins/openchoreo-observability/src/components/RuntimeLogs/ObservabilityRuntimeLogsPage.tsx
index 44df01637..903a64eb6 100644
--- a/plugins/openchoreo-observability/src/components/RuntimeLogs/ObservabilityRuntimeLogsPage.tsx
+++ b/plugins/openchoreo-observability/src/components/RuntimeLogs/ObservabilityRuntimeLogsPage.tsx
@@ -257,6 +257,8 @@ const ObservabilityRuntimeLogsContent = ({
}
projectName={project}
componentName={componentName}
+ entityNamespace={entity.metadata.namespace}
+ entityKind={entity.kind}
renderRowAction={renderRowAction}
/>
>
diff --git a/plugins/openchoreo/src/components/Environments/components/SetupDetailPane.test.tsx b/plugins/openchoreo/src/components/Environments/components/SetupDetailPane.test.tsx
index 860ef6d17..502bdf4ff 100644
--- a/plugins/openchoreo/src/components/Environments/components/SetupDetailPane.test.tsx
+++ b/plugins/openchoreo/src/components/Environments/components/SetupDetailPane.test.tsx
@@ -319,6 +319,10 @@ describe('SetupDetailPane', () => {
await user.click(screen.getByRole('checkbox', { name: /auto deploy/i }));
await user.click(screen.getByRole('button', { name: /confirm/i }));
+ await waitFor(() => {
+ expect(screen.queryByRole('dialog')).toBeNull();
+ });
+
await waitFor(() => {
expect(mockShowError).toHaveBeenCalledWith(
'Failed to update auto deploy setting: boom',
@@ -356,6 +360,10 @@ describe('SetupDetailPane', () => {
await user.click(screen.getByRole('checkbox', { name: /auto deploy/i }));
await user.click(screen.getByRole('button', { name: /confirm/i }));
+ await waitFor(() => {
+ expect(screen.queryByRole('dialog')).toBeNull();
+ });
+
expect(mockUpdateAutoDeploy).toHaveBeenCalledWith(true);
await waitFor(() => {
expect(mockShowError).toHaveBeenCalledWith(
diff --git a/plugins/openchoreo/src/components/Secrets/CreateSecretDialog.test.tsx b/plugins/openchoreo/src/components/Secrets/CreateSecretDialog.test.tsx
index 3a1ab9d9a..e435395da 100644
--- a/plugins/openchoreo/src/components/Secrets/CreateSecretDialog.test.tsx
+++ b/plugins/openchoreo/src/components/Secrets/CreateSecretDialog.test.tsx
@@ -166,7 +166,7 @@ describe('CreateSecretDialog — SSH Auth', () => {
await selectSshAuth(user);
await pasteSshKey(user, VALID_KEY);
expect(screen.getByRole('button', { name: 'Create' })).toBeEnabled();
- });
+ }, 15000);
// The two tests below interact with multiple fields (SSH Key ID + multiline
// SSH key + dynamically-added Key/Value rows). userEvent.type is per-keystroke
diff --git a/plugins/openchoreo/src/setupTests.ts b/plugins/openchoreo/src/setupTests.ts
index 7b0828bfa..70a2f4e8e 100644
--- a/plugins/openchoreo/src/setupTests.ts
+++ b/plugins/openchoreo/src/setupTests.ts
@@ -1 +1,32 @@
+/* eslint-disable no-console */
import '@testing-library/jest-dom';
+
+(globalThis as any).IS_REACT_ACT_ENVIRONMENT = true;
+if (typeof window !== 'undefined') {
+ (window as any).IS_REACT_ACT_ENVIRONMENT = true;
+}
+if (typeof global !== 'undefined') {
+ (global as any).IS_REACT_ACT_ENVIRONMENT = true;
+}
+
+const originalConsoleError = console.error;
+console.error = (...args: any[]) => {
+ if (
+ typeof args[0] === 'string' &&
+ (args[0].includes('Could not parse CSS stylesheet') ||
+ args[0].includes('css parsing') ||
+ args[0].includes('not configured to support act'))
+ ) {
+ return;
+ }
+ if (
+ args[0] &&
+ typeof args[0] === 'object' &&
+ (args[0].message?.includes('Could not parse CSS stylesheet') ||
+ args[0].type === 'css parsing' ||
+ args[0].message?.includes('not configured to support act'))
+ ) {
+ return;
+ }
+ originalConsoleError(...args);
+};
diff --git a/yarn.lock b/yarn.lock
index 613b5a613..3678a308b 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1669,7 +1669,7 @@ __metadata:
languageName: node
linkType: hard
-"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.23.9, @babel/parser@npm:^7.29.7":
+"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.15, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.23.9, @babel/parser@npm:^7.29.7":
version: 7.29.7
resolution: "@babel/parser@npm:7.29.7"
dependencies:
@@ -2088,6 +2088,18 @@ __metadata:
languageName: node
linkType: hard
+"@backstage/backend-app-api@npm:^1.7.1":
+ version: 1.7.1
+ resolution: "@backstage/backend-app-api@npm:1.7.1"
+ dependencies:
+ "@backstage/backend-plugin-api": "npm:^1.9.2"
+ "@backstage/config": "npm:^1.3.8"
+ "@backstage/connections": "npm:^0.1.0"
+ "@backstage/errors": "npm:^1.3.1"
+ checksum: 10c0/4bf44d45a7fa2a398ab37bd2b74b023b59d2fd5b0f0948ed25a88f5467a61fba2ee8f1587b781b2fca9975d91b8ed0496eed01bbd0d6d61a0259c293e995d20e
+ languageName: node
+ linkType: hard
+
"@backstage/backend-defaults@npm:^0.15.1":
version: 0.15.1
resolution: "@backstage/backend-defaults@npm:0.15.1"
@@ -2263,6 +2275,95 @@ __metadata:
languageName: node
linkType: hard
+"@backstage/backend-defaults@npm:^0.17.3":
+ version: 0.17.4
+ resolution: "@backstage/backend-defaults@npm:0.17.4"
+ dependencies:
+ "@aws-sdk/abort-controller": "npm:^3.347.0"
+ "@aws-sdk/client-codecommit": "npm:^3.350.0"
+ "@aws-sdk/client-s3": "npm:^3.350.0"
+ "@aws-sdk/credential-providers": "npm:^3.350.0"
+ "@aws-sdk/rds-signer": "npm:^3.0.0"
+ "@aws-sdk/types": "npm:^3.347.0"
+ "@azure/identity": "npm:^4.0.0"
+ "@azure/storage-blob": "npm:^12.5.0"
+ "@backstage/backend-app-api": "npm:^1.7.1"
+ "@backstage/backend-dev-utils": "npm:^0.1.7"
+ "@backstage/backend-plugin-api": "npm:^1.9.2"
+ "@backstage/cli-node": "npm:^0.3.3"
+ "@backstage/config": "npm:^1.3.8"
+ "@backstage/config-loader": "npm:^1.10.12"
+ "@backstage/errors": "npm:^1.3.1"
+ "@backstage/integration": "npm:^2.0.3"
+ "@backstage/integration-aws-node": "npm:^0.2.0"
+ "@backstage/plugin-auth-node": "npm:^0.7.2"
+ "@backstage/plugin-events-node": "npm:^0.4.23"
+ "@backstage/plugin-permission-common": "npm:^0.9.9"
+ "@backstage/plugin-permission-node": "npm:^0.11.1"
+ "@backstage/types": "npm:^1.2.2"
+ "@google-cloud/storage": "npm:^7.0.0"
+ "@keyv/memcache": "npm:^2.0.1"
+ "@keyv/redis": "npm:^4.0.1"
+ "@keyv/valkey": "npm:^1.0.1"
+ "@manypkg/get-packages": "npm:^1.1.3"
+ "@octokit/rest": "npm:^19.0.3"
+ "@opentelemetry/api": "npm:^1.9.0"
+ "@types/cors": "npm:^2.8.6"
+ "@types/express": "npm:^4.17.6"
+ archiver: "npm:^7.0.0"
+ base64-stream: "npm:^1.0.0"
+ compression: "npm:^1.7.4"
+ concat-stream: "npm:^2.0.0"
+ cookie: "npm:^0.7.0"
+ cors: "npm:^2.8.5"
+ cron: "npm:^3.0.0"
+ express: "npm:^4.22.0"
+ express-promise-router: "npm:^4.1.0"
+ express-rate-limit: "npm:^8.2.2"
+ fs-extra: "npm:^11.2.0"
+ git-url-parse: "npm:^15.0.0"
+ helmet: "npm:^6.0.0"
+ infinispan: "npm:^0.13.0"
+ iovalkey: "npm:^0.3.3"
+ is-glob: "npm:^4.0.3"
+ jose: "npm:^5.0.0"
+ keyv: "npm:^5.2.1"
+ knex: "npm:^3.0.0"
+ lodash: "npm:^4.17.21"
+ logform: "npm:^2.3.2"
+ luxon: "npm:^3.0.0"
+ minimatch: "npm:^10.2.1"
+ mysql2: "npm:^3.0.0"
+ node-fetch: "npm:^2.7.0"
+ node-forge: "npm:^1.3.2"
+ p-limit: "npm:^3.1.0"
+ path-to-regexp: "npm:^8.0.0"
+ pg: "npm:^8.11.3"
+ pg-connection-string: "npm:^2.3.0"
+ pg-format: "npm:^1.0.4"
+ rate-limit-redis: "npm:^4.2.0"
+ raw-body: "npm:^2.4.1"
+ selfsigned: "npm:^2.0.0"
+ tar: "npm:^7.5.6"
+ triple-beam: "npm:^1.4.1"
+ winston: "npm:^3.2.1"
+ winston-transport: "npm:^4.5.0"
+ yauzl: "npm:^3.2.1"
+ yn: "npm:^4.0.0"
+ zod: "npm:^3.25.76 || ^4.0.0"
+ zod-to-json-schema: "npm:^3.25.1"
+ peerDependencies:
+ "@google-cloud/cloud-sql-connector": ^1.4.0
+ better-sqlite3: ^12.0.0
+ peerDependenciesMeta:
+ "@google-cloud/cloud-sql-connector":
+ optional: true
+ better-sqlite3:
+ optional: true
+ checksum: 10c0/6958d8c087bd6d2ec43801468b8d0d34489c2b8163319eacd546fe8141f4af7af7c3668fc874d1b9106a7d0abce8eeb480d99c2d1cd78c27283c7548e8316b56
+ languageName: node
+ linkType: hard
+
"@backstage/backend-dev-utils@npm:^0.1.6, @backstage/backend-dev-utils@npm:^0.1.7":
version: 0.1.7
resolution: "@backstage/backend-dev-utils@npm:0.1.7"
@@ -2316,17 +2417,38 @@ __metadata:
languageName: node
linkType: hard
+"@backstage/backend-plugin-api@npm:^1.9.2":
+ version: 1.9.2
+ resolution: "@backstage/backend-plugin-api@npm:1.9.2"
+ dependencies:
+ "@backstage/cli-common": "npm:^0.2.2"
+ "@backstage/config": "npm:^1.3.8"
+ "@backstage/errors": "npm:^1.3.1"
+ "@backstage/plugin-auth-node": "npm:^0.7.2"
+ "@backstage/plugin-permission-common": "npm:^0.9.9"
+ "@backstage/plugin-permission-node": "npm:^0.11.1"
+ "@backstage/types": "npm:^1.2.2"
+ "@types/express": "npm:^4.17.6"
+ "@types/json-schema": "npm:^7.0.6"
+ "@types/luxon": "npm:^3.0.0"
+ knex: "npm:^3.0.0"
+ luxon: "npm:^3.0.0"
+ zod: "npm:^3.25.76 || ^4.0.0"
+ checksum: 10c0/4ece1a7a599d558954cb5f97d1fd5840a5c8691a4006ebacbbed471588df133535c206cf972c29f4324d41a22b3826379a05149225dcef0e3a864ad7b98d264d
+ languageName: node
+ linkType: hard
+
"@backstage/backend-test-utils@npm:^1.11.3":
- version: 1.11.3
- resolution: "@backstage/backend-test-utils@npm:1.11.3"
+ version: 1.11.4
+ resolution: "@backstage/backend-test-utils@npm:1.11.4"
dependencies:
- "@backstage/backend-app-api": "npm:^1.7.0"
- "@backstage/backend-defaults": "npm:^0.17.1"
- "@backstage/backend-plugin-api": "npm:^1.9.1"
+ "@backstage/backend-app-api": "npm:^1.7.1"
+ "@backstage/backend-defaults": "npm:^0.17.3"
+ "@backstage/backend-plugin-api": "npm:^1.9.2"
"@backstage/config": "npm:^1.3.8"
"@backstage/errors": "npm:^1.3.1"
- "@backstage/plugin-auth-node": "npm:^0.7.1"
- "@backstage/plugin-events-node": "npm:^0.4.22"
+ "@backstage/plugin-auth-node": "npm:^0.7.2"
+ "@backstage/plugin-events-node": "npm:^0.4.23"
"@backstage/plugin-permission-common": "npm:^0.9.9"
"@backstage/types": "npm:^1.2.2"
"@keyv/memcache": "npm:^2.0.1"
@@ -2356,7 +2478,7 @@ __metadata:
peerDependenciesMeta:
"@types/jest":
optional: true
- checksum: 10c0/73111bd769f700a140df64b9c76319e32b76655227b647542bf5cbc1409addb03f6d56aabf67da7c9adc7ee34fe4e81f9eba9010368e1ae3d207326526858e69
+ checksum: 10c0/6b53de951e3ee8c55c24e811e60de0074e12ef0a04f95ca66d634f6067ef2bfcb7b176d08236eb78c3a81ca8d97600f15ae823fcf4fdb9f27f4120c283792394
languageName: node
linkType: hard
@@ -2374,6 +2496,21 @@ __metadata:
languageName: node
linkType: hard
+"@backstage/catalog-client@npm:^1.16.0":
+ version: 1.16.0
+ resolution: "@backstage/catalog-client@npm:1.16.0"
+ dependencies:
+ "@backstage/catalog-model": "npm:^1.9.0"
+ "@backstage/errors": "npm:^1.3.1"
+ "@backstage/filter-predicates": "npm:^0.1.3"
+ "@backstage/plugin-catalog-common": "npm:^1.1.10"
+ cross-fetch: "npm:^4.0.0"
+ lodash: "npm:^4.17.21"
+ uri-template: "npm:^2.0.0"
+ checksum: 10c0/82b01a3d60051900aa2133c84ada0be2e23c5a1aad3535825a92a6858b564e79cc5f996d74c6ab26a504768941f38d606b3304b6af49913f26fa0a2f8941da0c
+ languageName: node
+ linkType: hard
+
"@backstage/catalog-model@npm:^1.7.6, @backstage/catalog-model@npm:^1.9.0":
version: 1.9.0
resolution: "@backstage/catalog-model@npm:1.9.0"
@@ -2781,6 +2918,37 @@ __metadata:
languageName: node
linkType: hard
+"@backstage/cli-node@npm:^0.3.3":
+ version: 0.3.3
+ resolution: "@backstage/cli-node@npm:0.3.3"
+ dependencies:
+ "@backstage/cli-common": "npm:^0.2.2"
+ "@backstage/errors": "npm:^1.3.1"
+ "@backstage/types": "npm:^1.2.2"
+ "@manypkg/get-packages": "npm:^1.1.3"
+ "@yarnpkg/lockfile": "npm:^1.1.0"
+ "@yarnpkg/parsers": "npm:^3.0.0"
+ chalk: "npm:^4.0.0"
+ cleye: "npm:^2.6.0"
+ fs-extra: "npm:^11.2.0"
+ keytar: "npm:^7.9.0"
+ pirates: "npm:^4.0.6"
+ proper-lockfile: "npm:^4.1.2"
+ semver: "npm:^7.5.3"
+ yaml: "npm:^2.0.0"
+ zod: "npm:^3.25.76 || ^4.0.0"
+ peerDependencies:
+ "@swc/core": ^1.15.6
+ dependenciesMeta:
+ keytar:
+ optional: true
+ peerDependenciesMeta:
+ "@swc/core":
+ optional: true
+ checksum: 10c0/02b4369c09137073313cbeb320ae26eaed0cebbd3b4345ba4367c8d20719b44f066d0146c420612e9742c0966ed83255781f05c5da51125897dae2db37587cd2
+ languageName: node
+ linkType: hard
+
"@backstage/cli@npm:^0.36.2":
version: 0.36.2
resolution: "@backstage/cli@npm:0.36.2"
@@ -2861,6 +3029,28 @@ __metadata:
languageName: node
linkType: hard
+"@backstage/config-loader@npm:^1.10.12":
+ version: 1.10.12
+ resolution: "@backstage/config-loader@npm:1.10.12"
+ dependencies:
+ "@backstage/cli-common": "npm:^0.2.2"
+ "@backstage/config": "npm:^1.3.8"
+ "@backstage/errors": "npm:^1.3.1"
+ "@backstage/types": "npm:^1.2.2"
+ "@types/json-schema": "npm:^7.0.6"
+ ajv: "npm:^8.10.0"
+ chokidar: "npm:^3.5.2"
+ fs-extra: "npm:^11.2.0"
+ json-schema-merge-allof: "npm:^0.8.1"
+ json-schema-traverse: "npm:^1.0.0"
+ lodash: "npm:^4.17.21"
+ minimist: "npm:^1.2.5"
+ typescript-json-schema: "npm:^0.67.0"
+ yaml: "npm:^2.0.0"
+ checksum: 10c0/b1eaed65f116d6d448755a03a975034a2d2ee91aad096efbea3b238a4e7e4b5baf9c13174003fcf8b7c57c8788f477f10b82f2ec3b8f59e71401d02e70705e2e
+ languageName: node
+ linkType: hard
+
"@backstage/config@npm:^1.3.3, @backstage/config@npm:^1.3.6, @backstage/config@npm:^1.3.8":
version: 1.3.8
resolution: "@backstage/config@npm:1.3.8"
@@ -2872,6 +3062,19 @@ __metadata:
languageName: node
linkType: hard
+"@backstage/connections@npm:^0.1.0":
+ version: 0.1.0
+ resolution: "@backstage/connections@npm:0.1.0"
+ dependencies:
+ "@backstage/backend-plugin-api": "npm:^1.9.2"
+ "@backstage/config": "npm:^1.3.8"
+ "@backstage/errors": "npm:^1.3.1"
+ "@backstage/types": "npm:^1.2.2"
+ zod: "npm:^3.25.76 || ^4.0.0"
+ checksum: 10c0/c290f5ddbf73a9e6be48328518d59461d313129da5c8179fbd28c311780c29981022c0dd9af41620a891bd9ebb01fedbf2995d8829be7ad804576daada5d69fa
+ languageName: node
+ linkType: hard
+
"@backstage/core-app-api@npm:^1.19.4, @backstage/core-app-api@npm:^1.20.1":
version: 1.20.1
resolution: "@backstage/core-app-api@npm:1.20.1"
@@ -3344,6 +3547,25 @@ __metadata:
languageName: node
linkType: hard
+"@backstage/integration@npm:^2.0.3":
+ version: 2.0.3
+ resolution: "@backstage/integration@npm:2.0.3"
+ dependencies:
+ "@azure/identity": "npm:^4.0.0"
+ "@azure/storage-blob": "npm:^12.5.0"
+ "@backstage/config": "npm:^1.3.8"
+ "@backstage/errors": "npm:^1.3.1"
+ "@octokit/auth-app": "npm:^4.0.0"
+ "@octokit/rest": "npm:^19.0.3"
+ cross-fetch: "npm:^4.0.0"
+ git-url-parse: "npm:^15.0.0"
+ lodash: "npm:^4.17.21"
+ luxon: "npm:^3.0.0"
+ p-throttle: "npm:^4.1.1"
+ checksum: 10c0/d56a5be601813b541dbb1899624a4379944ff3c44e3fca47ddd00ca0cf785fc3b4f1beead2be55af8dfa8adc03fb8f804f80784e66d7a85d615c4830a0dbbdb6
+ languageName: node
+ linkType: hard
+
"@backstage/module-federation-common@npm:^0.1.4":
version: 0.1.4
resolution: "@backstage/module-federation-common@npm:0.1.4"
@@ -3628,6 +3850,29 @@ __metadata:
languageName: node
linkType: hard
+"@backstage/plugin-auth-node@npm:^0.7.2":
+ version: 0.7.2
+ resolution: "@backstage/plugin-auth-node@npm:0.7.2"
+ dependencies:
+ "@backstage/backend-plugin-api": "npm:^1.9.2"
+ "@backstage/catalog-client": "npm:^1.16.0"
+ "@backstage/catalog-model": "npm:^1.9.0"
+ "@backstage/config": "npm:^1.3.8"
+ "@backstage/errors": "npm:^1.3.1"
+ "@backstage/types": "npm:^1.2.2"
+ "@types/express": "npm:^4.17.6"
+ "@types/passport": "npm:^1.0.3"
+ express: "npm:^4.22.0"
+ jose: "npm:^5.0.0"
+ lodash: "npm:^4.17.21"
+ passport: "npm:^0.7.0"
+ zod: "npm:^3.25.76 || ^4.0.0"
+ zod-to-json-schema: "npm:^3.25.1"
+ zod-validation-error: "npm:^4.0.2"
+ checksum: 10c0/f03cae9a92db961db544af75852df16ed97a427cdd849b5112d0157551b4444082076821145cc4bc4dce59a7c433c24ea3f65d903dd089447cd554f0a8f5a3bc
+ languageName: node
+ linkType: hard
+
"@backstage/plugin-auth-react@npm:^0.1.27":
version: 0.1.27
resolution: "@backstage/plugin-auth-react@npm:0.1.27"
@@ -4010,6 +4255,23 @@ __metadata:
languageName: node
linkType: hard
+"@backstage/plugin-events-node@npm:^0.4.23":
+ version: 0.4.23
+ resolution: "@backstage/plugin-events-node@npm:0.4.23"
+ dependencies:
+ "@backstage/backend-plugin-api": "npm:^1.9.2"
+ "@backstage/errors": "npm:^1.3.1"
+ "@backstage/types": "npm:^1.2.2"
+ "@types/content-type": "npm:^1.1.8"
+ "@types/express": "npm:^4.17.6"
+ content-type: "npm:^1.0.5"
+ cross-fetch: "npm:^4.0.0"
+ express: "npm:^4.22.0"
+ uri-template: "npm:^2.0.0"
+ checksum: 10c0/dd82274bd7cc80f1ab5841c6ef9af9dd5aeab3c5916614bcce1e761989965f3186dc16ca41dc01f0ce9b24fb14ee36f4caec9a1800f8c054122c9bd266399e5b
+ languageName: node
+ linkType: hard
+
"@backstage/plugin-home-react@npm:^0.1.38":
version: 0.1.38
resolution: "@backstage/plugin-home-react@npm:0.1.38"
@@ -4301,6 +4563,23 @@ __metadata:
languageName: node
linkType: hard
+"@backstage/plugin-permission-node@npm:^0.11.1":
+ version: 0.11.1
+ resolution: "@backstage/plugin-permission-node@npm:0.11.1"
+ dependencies:
+ "@backstage/backend-plugin-api": "npm:^1.9.2"
+ "@backstage/config": "npm:^1.3.8"
+ "@backstage/errors": "npm:^1.3.1"
+ "@backstage/plugin-permission-common": "npm:^0.9.9"
+ "@types/express": "npm:^4.17.6"
+ express: "npm:^4.22.0"
+ express-promise-router: "npm:^4.1.0"
+ zod: "npm:^3.25.76 || ^4.0.0"
+ zod-to-json-schema: "npm:^3.25.1"
+ checksum: 10c0/96efe0e8ccdecc4c640cf693d29988de226bd7cce9495e973d4e8ba7e26838bfa23678b47f668c2d33d1c1ea70b7613291a919bcbf67700cc507df316b637a8b
+ languageName: node
+ linkType: hard
+
"@backstage/plugin-permission-react@npm:^0.4.39":
version: 0.4.39
resolution: "@backstage/plugin-permission-react@npm:0.4.39"
@@ -7015,6 +7294,15 @@ __metadata:
languageName: node
linkType: hard
+"@jsdoc/salty@npm:^0.2.1":
+ version: 0.2.12
+ resolution: "@jsdoc/salty@npm:0.2.12"
+ dependencies:
+ lodash: "npm:^4.18.1"
+ checksum: 10c0/46eff8275fed2102dea17762a1ee6266532b154ebce99326775e5cd4a1953d2f0ad4f6418539af09d017c855f65ce71a01270a62d16d0006e04776997aac5bd6
+ languageName: node
+ linkType: hard
+
"@jsep-plugin/assignment@npm:^1.3.0":
version: 1.3.0
resolution: "@jsep-plugin/assignment@npm:1.3.0"
@@ -9444,7 +9732,6 @@ __metadata:
version: 0.0.0-use.local
resolution: "@openchoreo/test-utils@workspace:packages/test-utils"
dependencies:
- "@backstage/backend-test-utils": "npm:^1.11.3"
"@backstage/catalog-model": "npm:^1.9.0"
"@backstage/cli": "npm:^0.36.2"
languageName: unknown
@@ -13807,6 +14094,13 @@ __metadata:
languageName: node
linkType: hard
+"@types/linkify-it@npm:^5":
+ version: 5.0.0
+ resolution: "@types/linkify-it@npm:5.0.0"
+ checksum: 10c0/7bbbf45b9dde17bf3f184fee585aef0e7342f6954f0377a24e4ff42ab5a85d5b806aaa5c8d16e2faf2a6b87b2d94467a196b7d2b85c9c7de2f0eaac5487aaab8
+ languageName: node
+ linkType: hard
+
"@types/lodash@npm:^4.14.189":
version: 4.17.20
resolution: "@types/lodash@npm:4.17.20"
@@ -13842,6 +14136,16 @@ __metadata:
languageName: node
linkType: hard
+"@types/markdown-it@npm:^14.1.1":
+ version: 14.1.2
+ resolution: "@types/markdown-it@npm:14.1.2"
+ dependencies:
+ "@types/linkify-it": "npm:^5"
+ "@types/mdurl": "npm:^2"
+ checksum: 10c0/34f709f0476bd4e7b2ba7c3341072a6d532f1f4cb6f70aef371e403af8a08a7c372ba6907ac426bc618d356dab660c5b872791ff6c1ead80c483e0d639c6f127
+ languageName: node
+ linkType: hard
+
"@types/mdast@npm:^3.0.0":
version: 3.0.15
resolution: "@types/mdast@npm:3.0.15"
@@ -13860,6 +14164,13 @@ __metadata:
languageName: node
linkType: hard
+"@types/mdurl@npm:^2":
+ version: 2.0.0
+ resolution: "@types/mdurl@npm:2.0.0"
+ checksum: 10c0/cde7bb571630ed1ceb3b92a28f7b59890bb38b8f34cd35326e2df43eebfc74985e6aa6fd4184e307393bad8a9e0783a519a3f9d13c8e03788c0f98e5ec869c5e
+ languageName: node
+ linkType: hard
+
"@types/methods@npm:^1.1.4":
version: 1.1.4
resolution: "@types/methods@npm:1.1.4"
@@ -16829,6 +17140,15 @@ __metadata:
languageName: node
linkType: hard
+"catharsis@npm:^0.9.0":
+ version: 0.9.0
+ resolution: "catharsis@npm:0.9.0"
+ dependencies:
+ lodash: "npm:^4.17.15"
+ checksum: 10c0/9ac03ca48154ac63cfdb6c1645481d9d04f3c3e0dea131debf3116a0c12aa47e8864be7dcf770932c46d75bdd844a99f0c116c234e57232ad1f427751498e7ed
+ languageName: node
+ linkType: hard
+
"ccount@npm:^2.0.0":
version: 2.0.1
resolution: "ccount@npm:2.0.1"
@@ -17071,7 +17391,7 @@ __metadata:
languageName: node
linkType: hard
-"cleye@npm:^2.3.0":
+"cleye@npm:^2.3.0, cleye@npm:^2.6.0":
version: 2.6.0
resolution: "cleye@npm:2.6.0"
dependencies:
@@ -21061,7 +21381,7 @@ __metadata:
languageName: node
linkType: hard
-"formstream@npm:^1.1.1":
+"formstream@npm:^1.1.1, formstream@npm:^1.5.2":
version: 1.5.2
resolution: "formstream@npm:1.5.2"
dependencies:
@@ -21758,7 +22078,7 @@ __metadata:
languageName: node
linkType: hard
-"graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.5, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.11, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9":
+"graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.5, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.1.9, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.11, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9":
version: 4.2.11
resolution: "graceful-fs@npm:4.2.11"
checksum: 10c0/386d011a553e02bc594ac2ca0bd6d9e4c22d7fa8cfbfc448a6d148c59ea881b092db9dbe3547ae4b88e55f1b01f7c4a2ecc53b310c042793e63aa44cf6c257f2
@@ -22822,6 +23142,20 @@ __metadata:
languageName: node
linkType: hard
+"infinispan@npm:^0.13.0":
+ version: 0.13.0
+ resolution: "infinispan@npm:0.13.0"
+ dependencies:
+ buffer-xor: "npm:^2.0.2"
+ jsdoc: "npm:^4.0.2"
+ log4js: "npm:^6.4.6"
+ protobufjs: "npm:^7.0.0"
+ underscore: "npm:^1.13.3"
+ urllib: "npm:^4.9.0"
+ checksum: 10c0/1aa487b35584dc490e481b9530fee98c41485c69a250bbc8c52583fc898e01221233d977a4c51cd6f5e3734ab1b447b5c5b5b34820d78dd007320198e833d4ce
+ languageName: node
+ linkType: hard
+
"inflight@npm:^1.0.4":
version: 1.0.6
resolution: "inflight@npm:1.0.6"
@@ -24355,6 +24689,15 @@ __metadata:
languageName: node
linkType: hard
+"js2xmlparser@npm:^4.0.2":
+ version: 4.0.2
+ resolution: "js2xmlparser@npm:4.0.2"
+ dependencies:
+ xmlcreate: "npm:^2.0.4"
+ checksum: 10c0/b00de9351649d67d225e21734a08f456a4ecb3c29cafcd3bbecb36a8ab61ec841fad7f425bed50e21936fe387f472e49cfe75ce71d0beaacb0475b077c88ed39
+ languageName: node
+ linkType: hard
+
"jsbn@npm:^1.1.0":
version: 1.1.0
resolution: "jsbn@npm:1.1.0"
@@ -24362,6 +24705,31 @@ __metadata:
languageName: node
linkType: hard
+"jsdoc@npm:^4.0.2":
+ version: 4.0.5
+ resolution: "jsdoc@npm:4.0.5"
+ dependencies:
+ "@babel/parser": "npm:^7.20.15"
+ "@jsdoc/salty": "npm:^0.2.1"
+ "@types/markdown-it": "npm:^14.1.1"
+ bluebird: "npm:^3.7.2"
+ catharsis: "npm:^0.9.0"
+ escape-string-regexp: "npm:^2.0.0"
+ js2xmlparser: "npm:^4.0.2"
+ klaw: "npm:^3.0.0"
+ markdown-it: "npm:^14.1.0"
+ markdown-it-anchor: "npm:^8.6.7"
+ marked: "npm:^4.0.10"
+ mkdirp: "npm:^1.0.4"
+ requizzle: "npm:^0.2.3"
+ strip-json-comments: "npm:^3.1.0"
+ underscore: "npm:~1.13.2"
+ bin:
+ jsdoc: jsdoc.js
+ checksum: 10c0/8192c234f60c58ee67342eb0532f66118849a921df9486fe15132c9228badb5e1bc7d10233b0821e661ab02e94c045f4cb8c110f6264620aae9b73bee84e1cc5
+ languageName: node
+ linkType: hard
+
"jsdom@npm:^20.0.0":
version: 20.0.3
resolution: "jsdom@npm:20.0.3"
@@ -24855,6 +25223,15 @@ __metadata:
languageName: node
linkType: hard
+"klaw@npm:^3.0.0":
+ version: 3.0.0
+ resolution: "klaw@npm:3.0.0"
+ dependencies:
+ graceful-fs: "npm:^4.1.9"
+ checksum: 10c0/8391cf6df6337dce02e44628b620b39412d007eff162d907d37063c23986041d9b5c3558851d473c2fae92c1ccb0fde8864e36f9c55ac339fc469b517a2caa1b
+ languageName: node
+ linkType: hard
+
"kleur@npm:^3.0.3":
version: 3.0.3
resolution: "kleur@npm:3.0.3"
@@ -25527,6 +25904,16 @@ __metadata:
languageName: node
linkType: hard
+"markdown-it-anchor@npm:^8.6.7":
+ version: 8.6.7
+ resolution: "markdown-it-anchor@npm:8.6.7"
+ peerDependencies:
+ "@types/markdown-it": "*"
+ markdown-it: "*"
+ checksum: 10c0/f117866488013b7e4085a6b59d12bf62879181aef65ea2851f01ed1b763b8c052580c2c27fa8bd009421886220c6beeb373a65af9e885ce63a36ee9f8dcd0e89
+ languageName: node
+ linkType: hard
+
"markdown-it@npm:^14.1.0":
version: 14.1.0
resolution: "markdown-it@npm:14.1.0"
@@ -25588,7 +25975,7 @@ __metadata:
languageName: node
linkType: hard
-"marked@npm:^4.0.14":
+"marked@npm:^4.0.10, marked@npm:^4.0.14":
version: 4.3.0
resolution: "marked@npm:4.3.0"
bin:
@@ -27133,7 +27520,7 @@ __metadata:
languageName: node
linkType: hard
-"mkdirp@npm:^1.0.3":
+"mkdirp@npm:^1.0.3, mkdirp@npm:^1.0.4":
version: 1.0.4
resolution: "mkdirp@npm:1.0.4"
bin:
@@ -30011,6 +30398,16 @@ __metadata:
languageName: node
linkType: hard
+"qs@npm:^6.15.0":
+ version: 6.15.3
+ resolution: "qs@npm:6.15.3"
+ dependencies:
+ es-define-property: "npm:^1.0.1"
+ side-channel: "npm:^1.1.1"
+ checksum: 10c0/8f3f6e45ece255347d57696628401cde29e9ec649fff698b53bd3150dea7cefdf33036e1bc1826b9f110bfa7cb0ec4ab9f5297eca628ce216c55af82c304e08e
+ languageName: node
+ linkType: hard
+
"quansync@npm:^0.2.7":
version: 0.2.11
resolution: "quansync@npm:0.2.11"
@@ -31386,6 +31783,15 @@ __metadata:
languageName: node
linkType: hard
+"requizzle@npm:^0.2.3":
+ version: 0.2.4
+ resolution: "requizzle@npm:0.2.4"
+ dependencies:
+ lodash: "npm:^4.17.21"
+ checksum: 10c0/ad138f987943aeda5f96cd1ccba9752c96352a729a7e3c3e2545568703f7fc9b978d9b46715803408ef178b0d61d36a4b1b506b367b7e78fe6d041fa5bfa5e06
+ languageName: node
+ linkType: hard
+
"reselect@npm:5.1.1, reselect@npm:^5.1.0, reselect@npm:^5.1.1":
version: 5.1.1
resolution: "reselect@npm:5.1.1"
@@ -32418,6 +32824,16 @@ __metadata:
languageName: node
linkType: hard
+"side-channel-list@npm:^1.0.1":
+ version: 1.0.1
+ resolution: "side-channel-list@npm:1.0.1"
+ dependencies:
+ es-errors: "npm:^1.3.0"
+ object-inspect: "npm:^1.13.4"
+ checksum: 10c0/d346c787fd2f9f1c2fdea14f00e8250118db0e7596d85a6cb9faa75f105d31a73a8f7a341c93d7df2a2429098c3d37a77bd3be9e88c37094b8c01807bc77c7a2
+ languageName: node
+ linkType: hard
+
"side-channel-map@npm:^1.0.1":
version: 1.0.1
resolution: "side-channel-map@npm:1.0.1"
@@ -32456,6 +32872,19 @@ __metadata:
languageName: node
linkType: hard
+"side-channel@npm:^1.1.1":
+ version: 1.1.1
+ resolution: "side-channel@npm:1.1.1"
+ dependencies:
+ es-errors: "npm:^1.3.0"
+ object-inspect: "npm:^1.13.4"
+ side-channel-list: "npm:^1.0.1"
+ side-channel-map: "npm:^1.0.1"
+ side-channel-weakmap: "npm:^1.0.2"
+ checksum: 10c0/dc0ab81d67f61bda9247d053ce93f41c3fd8ad2bdcb9cf9d8d2f8540d488f26d87a5e99ebfc07eea49ec025867b2452b705442d974b1478f0395e69f6bfb3270
+ languageName: node
+ linkType: hard
+
"signal-exit@npm:^3.0.2, signal-exit@npm:^3.0.3, signal-exit@npm:^3.0.7":
version: 3.0.7
resolution: "signal-exit@npm:3.0.7"
@@ -33192,7 +33621,7 @@ __metadata:
languageName: node
linkType: hard
-"strip-json-comments@npm:^3.1.1":
+"strip-json-comments@npm:^3.1.0, strip-json-comments@npm:^3.1.1":
version: 3.1.1
resolution: "strip-json-comments@npm:3.1.1"
checksum: 10c0/9681a6257b925a7fa0f285851c0e613cc934a50661fa7bb41ca9cbbff89686bb4a0ee366e6ecedc4daafd01e83eee0720111ab294366fe7c185e935475ebcecd
@@ -34375,7 +34804,7 @@ __metadata:
languageName: node
linkType: hard
-"type-fest@npm:^4.3.1, type-fest@npm:^4.39.1":
+"type-fest@npm:^4.3.1, type-fest@npm:^4.39.1, type-fest@npm:^4.41.0":
version: 4.41.0
resolution: "type-fest@npm:4.41.0"
checksum: 10c0/f5ca697797ed5e88d33ac8f1fec21921839871f808dc59345c9cf67345bfb958ce41bd821165dbf3ae591cedec2bf6fe8882098dfdd8dc54320b859711a2c1e4
@@ -34616,6 +35045,13 @@ __metadata:
languageName: node
linkType: hard
+"underscore@npm:~1.13.2":
+ version: 1.13.8
+ resolution: "underscore@npm:1.13.8"
+ checksum: 10c0/6677688daeda30484823e77c0b89ce4dcf29964a77d5a06f37299c007ab4bb1c66a0ff75e0d274620b62a1fe2a6ba29879f8214533ca611d71a1ae504f2bfc9b
+ languageName: node
+ linkType: hard
+
"undici-types@npm:~5.26.4":
version: 5.26.5
resolution: "undici-types@npm:5.26.5"
@@ -34660,6 +35096,13 @@ __metadata:
languageName: node
linkType: hard
+"undici@npm:^7.24.0":
+ version: 7.28.0
+ resolution: "undici@npm:7.28.0"
+ checksum: 10c0/fe781983a26098795e99bb1f64906cbb7d0bcaa029a26baade007b53ea67f2631d189b8f9671a31f4c8d0cb3773b7559608628ba54452fef51fec90e7c78bb0d
+ languageName: node
+ linkType: hard
+
"unicode-emoji-modifier-base@npm:^1.0.0":
version: 1.0.0
resolution: "unicode-emoji-modifier-base@npm:1.0.0"
@@ -34990,6 +35433,21 @@ __metadata:
languageName: node
linkType: hard
+"urllib@npm:^4.9.0":
+ version: 4.9.1
+ resolution: "urllib@npm:4.9.1"
+ dependencies:
+ form-data: "npm:^4.0.5"
+ formstream: "npm:^1.5.2"
+ mime-types: "npm:^2.1.35"
+ qs: "npm:^6.15.0"
+ type-fest: "npm:^4.41.0"
+ undici: "npm:^7.24.0"
+ ylru: "npm:^2.0.0"
+ checksum: 10c0/e73d0b0a3ae781e65ab79729e539519d4b941a28e0d8be55e4a1de9cd4723d6611cbaa74bc23cf855504b3461064ccdfed8bb2ad25621e0b97ddebcee6058a7a
+ languageName: node
+ linkType: hard
+
"urlpattern-polyfill@npm:^8.0.0":
version: 8.0.2
resolution: "urlpattern-polyfill@npm:8.0.2"
@@ -36011,6 +36469,13 @@ __metadata:
languageName: node
linkType: hard
+"xmlcreate@npm:^2.0.4":
+ version: 2.0.4
+ resolution: "xmlcreate@npm:2.0.4"
+ checksum: 10c0/fc4234e2d1942877d761d4f3d64410b54633d2ec60b13a5d56a6a06545aba39a0df8ed7ded10785a302f632eb4f0a4fedbf4bf10e17892e11d5075244b9e5705
+ languageName: node
+ linkType: hard
+
"xtend@npm:^4.0.0, xtend@npm:^4.0.2":
version: 4.0.2
resolution: "xtend@npm:4.0.2"
@@ -36130,6 +36595,13 @@ __metadata:
languageName: node
linkType: hard
+"ylru@npm:^2.0.0":
+ version: 2.0.0
+ resolution: "ylru@npm:2.0.0"
+ checksum: 10c0/f44f0b3cdeedff3cc298c3db680bf9eb536d6fb8cff1d881b7497e181d52173f9e206f95d2a869fd2596515c2ae21aad57e2c0e98f51da40a0179858bdb34201
+ languageName: node
+ linkType: hard
+
"yml-loader@npm:^2.1.0":
version: 2.1.0
resolution: "yml-loader@npm:2.1.0"