This is an automated email from the ASF dual-hosted git repository.

wu-sheng pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/skywalking-horizon-ui.git


The following commit(s) were added to refs/heads/main by this push:
     new be5beac  feat: monorepo CI fixes + ui templates + layer term aliases + 
dep bumps (#3)
be5beac is described below

commit be5beacadf3f7683ef534aa8c23d6746cd5b1537
Author: 吴晟 Wu Sheng <[email protected]>
AuthorDate: Tue May 12 13:58:27 2026 +0800

    feat: monorepo CI fixes + ui templates + layer term aliases + dep bumps (#3)
---
 .asf.yaml                                   | 16 +++----
 .github/workflows/ci.yaml                   | 44 +++++-------------
 apps/ui/index.html                          | 16 +++++++
 apps/ui/package.json                        |  4 +-
 apps/ui/src/components/shell/AppSidebar.vue | 12 ++++-
 apps/ui/src/components/shell/layers.ts      | 72 +++++++++++++++++++++++++----
 apps/ui/src/router/index.ts                 | 31 ++++++++-----
 packages/design-tokens/src/tokens.css       | 17 +++++++
 packages/templates/src/index.ts             |  5 +-
 pnpm-lock.yaml                              | 51 ++++++++++++++------
 10 files changed, 187 insertions(+), 81 deletions(-)

diff --git a/.asf.yaml b/.asf.yaml
index 824e1d5..8ddaeba 100644
--- a/.asf.yaml
+++ b/.asf.yaml
@@ -34,12 +34,10 @@ github:
     merge:   false
     rebase:  false
   dependabot_updates: false
-  protected_branches:
-    main:
-      required_status_checks:
-        strict: true
-        contexts:
-          - Required
-      required_pull_request_reviews:
-        dismiss_stale_reviews: true
-        required_approving_review_count: 1
+  # Branch protection and PR approval are intentionally OFF during pre-1.0
+  # single-author development to keep the iteration loop tight. The explicit
+  # `~` (YAML null) tells ASF infra to clear any previously-applied
+  # `protected_branches` config — omitting the key would leave prior
+  # protections in place. Re-add status-check + review gating before v1.0
+  # or when a second committer joins.
+  protected_branches: ~
diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml
index d223e30..ab7b0f8 100644
--- a/.github/workflows/ci.yaml
+++ b/.github/workflows/ci.yaml
@@ -38,27 +38,11 @@ jobs:
       - name: Check license header
         uses: apache/skywalking-eyes@5b7ee1731d036b5aac68f8bd3fc9e6f98ada082e
 
-  dependency-license:
-    name: Dependency licenses
-    runs-on: ubuntu-latest
-    timeout-minutes: 20
-    steps:
-      - uses: actions/checkout@v6
-        with:
-          persist-credentials: false
-      - uses: pnpm/action-setup@v4
-        with:
-          version: 10
-      - uses: actions/setup-node@v4
-        with:
-          node-version: '20'
-          cache: 'pnpm'
-      - run: pnpm install --frozen-lockfile
-      - name: Install license-eye
-        run: |
-          go install 
github.com/apache/skywalking-eyes/cmd/license-eye@5b7ee1731d036b5aac68f8bd3fc9e6f98ada082e
-      - name: Verify dependency licenses
-        run: license-eye -v debug dependency resolve
+  # NOTE: `license-eye dependency resolve` is deferred to a release-only
+  # workflow. The tool invokes `npm ci` internally, which fails on pnpm
+  # workspaces (no package-lock.json). When we cut an Apache release we'll
+  # add a separate job that runs the resolver against a one-shot npm install
+  # of the production dep graph. For day-to-day CI, header-check is enough.
 
   type-check:
     name: Type-check (workspaces)
@@ -69,8 +53,6 @@ jobs:
         with:
           persist-credentials: false
       - uses: pnpm/action-setup@v4
-        with:
-          version: 10
       - uses: actions/setup-node@v4
         with:
           node-version: '20'
@@ -87,8 +69,6 @@ jobs:
         with:
           persist-credentials: false
       - uses: pnpm/action-setup@v4
-        with:
-          version: 10
       - uses: actions/setup-node@v4
         with:
           node-version: '20'
@@ -105,8 +85,6 @@ jobs:
         with:
           persist-credentials: false
       - uses: pnpm/action-setup@v4
-        with:
-          version: 10
       - uses: actions/setup-node@v4
         with:
           node-version: '20'
@@ -114,17 +92,19 @@ jobs:
       - run: pnpm install --frozen-lockfile
       - run: pnpm --filter @skywalking-horizon-ui/bff build
 
-  sanity-check:
+  required:
+    # Status-check name pinned to "Required" so Apache branch protection
+    # (`.asf.yaml: protected_branches.main.required_status_checks.contexts:
+    # [Required]`) can gate on a single rolled-up signal.
     if: always() && !cancelled()
-    name: Sanity check results
-    needs: [license-header, dependency-license, type-check, build-ui, 
build-bff]
+    name: Required
+    needs: [license-header, type-check, build-ui, build-bff]
     runs-on: ubuntu-latest
     timeout-minutes: 5
     steps:
-      - name: Check results
+      - name: Check upstream jobs
         run: |
           [[ ${{ needs.license-header.result }} == 'success' ]] || exit 1
-          [[ ${{ needs.dependency-license.result }} == 'success' ]] || exit 1
           [[ ${{ needs.type-check.result }} == 'success' ]] || exit 1
           [[ ${{ needs.build-ui.result }} == 'success' ]] || exit 1
           [[ ${{ needs.build-bff.result }} == 'success' ]] || exit 1
diff --git a/apps/ui/index.html b/apps/ui/index.html
index 477bbad..e24fb19 100644
--- a/apps/ui/index.html
+++ b/apps/ui/index.html
@@ -1,4 +1,20 @@
 <!doctype html>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You 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.
+-->
 <html lang="en">
   <head>
     <meta charset="UTF-8" />
diff --git a/apps/ui/package.json b/apps/ui/package.json
index d012c50..0edc7a8 100644
--- a/apps/ui/package.json
+++ b/apps/ui/package.json
@@ -20,11 +20,11 @@
     "@vueuse/core": "^11.2.0",
     "d3": "^7.9.0",
     "d3-flame-graph": "^4.1.3",
-    "echarts": "^5.5.1",
+    "echarts": "^6.0.0",
     "element-plus": "^2.8.7",
     "graphql": "^16.9.0",
     "graphql-request": "^7.1.2",
-    "monaco-editor": "^0.52.0",
+    "monaco-editor": "^0.55.0",
     "pinia": "^2.2.6",
     "vue": "^3.5.13",
     "vue-grid-layout": "^3.0.0-beta1",
diff --git a/apps/ui/src/components/shell/AppSidebar.vue 
b/apps/ui/src/components/shell/AppSidebar.vue
index 7d09b33..bc2d198 100644
--- a/apps/ui/src/components/shell/AppSidebar.vue
+++ b/apps/ui/src/components/shell/AppSidebar.vue
@@ -20,7 +20,7 @@ import { RouterLink, useRoute, useRouter } from 'vue-router';
 import Icon, { type IconName } from '@/components/icons/Icon.vue';
 import logoSw from '@/assets/icons/logo-sw.svg?raw';
 import { useAuthStore } from '@/stores/auth';
-import { LAYERS } from './layers';
+import { LAYERS, hasTopology } from './layers';
 
 const auth = useAuthStore();
 const router = useRouter();
@@ -174,13 +174,21 @@ const sections: NavSection[] = [
           </RouterLink>
 
           <RouterLink
-            v-if="L.caps.topology"
+            v-if="hasTopology(L.caps)"
             :to="`/layer/${L.key}/topology`"
             class="sw-nav-item"
             :class="{ 'is-active': isActive(`/layer/${L.key}/topology`) }"
           >
             <Icon name="topo" /><span>Topology</span>
           </RouterLink>
+          <RouterLink
+            v-if="L.caps.endpointDependency"
+            :to="`/layer/${L.key}/dependency`"
+            class="sw-nav-item"
+            :class="{ 'is-active': isActive(`/layer/${L.key}/dependency`) }"
+          >
+            <Icon name="ep" /><span>{{ L.slots.endpointDependency ?? 
`${L.slots.endpoints ?? 'Endpoint'} dependency` }}</span>
+          </RouterLink>
           <RouterLink
             v-if="L.caps.dashboards"
             :to="`/layer/${L.key}/dashboards`"
diff --git a/apps/ui/src/components/shell/layers.ts 
b/apps/ui/src/components/shell/layers.ts
index 6556a34..9bc9f5a 100644
--- a/apps/ui/src/components/shell/layers.ts
+++ b/apps/ui/src/components/shell/layers.ts
@@ -18,21 +18,43 @@
 // Phase 2 will replace this static stub with real getMenuItems / listLayers
 // data + per-layer overrides from the BFF dashboard-template bundle. The
 // shape is what the sidebar and router will consume regardless.
+//
+// Aliases (`slots.*`) are a GLOBAL term presenter — the same alias is used
+// in the sidebar, breadcrumbs, table headers, dashboard titles, drill-down
+// labels, etc. "Endpoint" → "API" (General), "API → API" (the resulting
+// endpoint-relation feature) → "API dependency".
+//
+// `caps` is a pickable feature set per layer. Setting `caps.services =
+// false` hides the services slot entirely (e.g. a layer with only a single
+// virtual service can disable `instances` and `endpoints` but keep
+// `services`).
+//
+// Term aliases AND cap toggles are both editable from the Phase 7 admin UI
+// (Layer config) and persisted in the BFF JSON store. The values below are
+// the shipped defaults for each known layer.
 
 export interface LayerSlots {
-  /** Renamed service-equivalent (functions / workloads / clusters / apps / 
databases / …). */
+  /** Renamed service-equivalent (functions / workloads / clusters / apps / 
databases / virtual service / …). */
   services?: string;
   /** Renamed instance-equivalent (versions / pods / brokers / sessions / 
nodes / …). */
   instances?: string;
-  /** Renamed endpoint-equivalent (invocations / topics / pages / queries / 
…). */
+  /** Renamed endpoint-equivalent — e.g. "API" for General, "Topics" for MQ, 
"Pages" for Browser. */
   endpoints?: string;
+  /** Label for the endpoint-to-endpoint dependency feature. Defaults to 
`${endpoints} dependency`. */
+  endpointDependency?: string;
 }
 
 export interface LayerCaps {
   /** Per-layer landing page with KPIs / constellation / health. */
   overview?: boolean;
-  /** Topology graph. */
-  topology?: boolean;
+  /** Service map (service topology). */
+  serviceMap?: boolean;
+  /** Endpoint-to-endpoint dependency (a.k.a. "API dependency" when aliased). 
*/
+  endpointDependency?: boolean;
+  /** Instance / pod / broker topology. */
+  instanceTopology?: boolean;
+  /** Process topology (eBPF / rover sourced). */
+  processTopology?: boolean;
   /** Per-scope dashboards (Service / Instance / Endpoint / Glance). */
   dashboards?: boolean;
   /** Trace explorer (SkyWalking native or Zipkin sources). */
@@ -45,6 +67,11 @@ export interface LayerCaps {
   events?: boolean;
 }
 
+/** Convenience: `caps.serviceMap || caps.instanceTopology || 
caps.processTopology`. */
+export function hasTopology(caps: LayerCaps): boolean {
+  return Boolean(caps.serviceMap || caps.instanceTopology || 
caps.processTopology);
+}
+
 export interface LayerDef {
   key: string;
   name: string;
@@ -62,8 +89,19 @@ export const LAYERS: readonly LayerDef[] = [
     name: 'General Service',
     color: 'var(--sw-accent)',
     serviceCount: 84,
-    slots: { services: 'Services', instances: 'Instances', endpoints: 
'Endpoints' },
-    caps: { overview: true, topology: true, dashboards: true, traces: true, 
logs: true, profiling: true, events: true },
+    slots: { services: 'Services', instances: 'Instances', endpoints: 'API', 
endpointDependency: 'API dependency' },
+    caps: {
+      overview: true,
+      serviceMap: true,
+      endpointDependency: true,
+      instanceTopology: true,
+      processTopology: true,
+      dashboards: true,
+      traces: true,
+      logs: true,
+      profiling: true,
+      events: true,
+    },
   },
   {
     key: 'mesh',
@@ -71,7 +109,16 @@ export const LAYERS: readonly LayerDef[] = [
     color: 'var(--sw-info)',
     serviceCount: 22,
     slots: { services: 'Services', instances: 'Sidecars', endpoints: 
'Endpoints' },
-    caps: { overview: true, topology: true, dashboards: true, traces: true, 
logs: true, events: true },
+    caps: {
+      overview: true,
+      serviceMap: true,
+      endpointDependency: true,
+      instanceTopology: true,
+      dashboards: true,
+      traces: true,
+      logs: true,
+      events: true,
+    },
   },
   {
     key: 'k8s',
@@ -79,7 +126,7 @@ export const LAYERS: readonly LayerDef[] = [
     color: 'var(--sw-purple)',
     serviceCount: 62,
     slots: { services: 'Workloads', instances: 'Pods' },
-    caps: { overview: true, topology: true, dashboards: true, events: true },
+    caps: { overview: true, serviceMap: true, instanceTopology: true, 
dashboards: true, events: true },
   },
   {
     key: 'rum',
@@ -111,7 +158,14 @@ export const LAYERS: readonly LayerDef[] = [
     color: 'var(--sw-purple)',
     serviceCount: 18,
     slots: { services: 'Services', instances: 'Instances', endpoints: 
'Endpoints' },
-    caps: { overview: true, topology: true, dashboards: true, traces: true, 
logs: true },
+    caps: {
+      overview: true,
+      serviceMap: true,
+      endpointDependency: true,
+      dashboards: true,
+      traces: true,
+      logs: true,
+    },
   },
   {
     key: 'faas',
diff --git a/apps/ui/src/router/index.ts b/apps/ui/src/router/index.ts
index cfdde91..094512d 100644
--- a/apps/ui/src/router/index.ts
+++ b/apps/ui/src/router/index.ts
@@ -56,24 +56,31 @@ function layerSubRoutes(): RouteRecordRaw[] {
     });
   }
 
-  const caps: { key: keyof NonNullable<ReturnType<typeof findLayer>>['caps']; 
label: string; phase: string }[] = [
-    { key: 'topology', label: 'Topology', phase: 'Phase 4' },
-    { key: 'dashboards', label: 'Dashboards', phase: 'Phase 3' },
-    { key: 'traces', label: 'Traces', phase: 'Phase 5' },
-    { key: 'logs', label: 'Logs', phase: 'Phase 5' },
-    { key: 'profiling', label: 'Profiling', phase: 'Phase 8' },
-    { key: 'events', label: 'Events', phase: 'Phase 5' },
+  const layerFeatures: { path: string; label: string; phase: string; 
capCheck?: (caps: NonNullable<ReturnType<typeof findLayer>>['caps']) => boolean 
}[] = [
+    {
+      path: 'topology',
+      label: 'Topology',
+      phase: 'Phase 4',
+      capCheck: (c) => Boolean(c.serviceMap || c.instanceTopology || 
c.processTopology),
+    },
+    { path: 'dependency', label: 'API dependency', phase: 'Phase 4', capCheck: 
(c) => Boolean(c.endpointDependency) },
+    { path: 'dashboards', label: 'Dashboards', phase: 'Phase 3', capCheck: (c) 
=> Boolean(c.dashboards) },
+    { path: 'traces', label: 'Traces', phase: 'Phase 5', capCheck: (c) => 
Boolean(c.traces) },
+    { path: 'logs', label: 'Logs', phase: 'Phase 5', capCheck: (c) => 
Boolean(c.logs) },
+    { path: 'profiling', label: 'Profiling', phase: 'Phase 8', capCheck: (c) 
=> Boolean(c.profiling) },
+    { path: 'events', label: 'Events', phase: 'Phase 5', capCheck: (c) => 
Boolean(c.events) },
   ];
-  for (const c of caps) {
+  for (const f of layerFeatures) {
     sub.push({
-      path: `layer/:layerKey/${c.key}`,
+      path: `layer/:layerKey/${f.path}`,
       component: placeholder,
       props: (r) => {
         const L = findLayer(String(r.params.layerKey));
+        const supported = L && (!f.capCheck || f.capCheck(L.caps));
         return {
-          title: L ? `${L.name} · ${c.label}` : `Layer · ${c.label}`,
-          phase: c.phase,
-          note: L && !L.caps[c.key] ? `${L.name} doesn't expose 
${c.label.toLowerCase()}.` : undefined,
+          title: L ? `${L.name} · ${f.label}` : `Layer · ${f.label}`,
+          phase: f.phase,
+          note: L && !supported ? `${L.name} doesn't expose 
${f.label.toLowerCase()}.` : undefined,
         };
       },
     });
diff --git a/packages/design-tokens/src/tokens.css 
b/packages/design-tokens/src/tokens.css
index ba39b03..27489a5 100644
--- a/packages/design-tokens/src/tokens.css
+++ b/packages/design-tokens/src/tokens.css
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+
 /* SkyWalking NG — dark observability tokens */
 :root {
   --sw-bg-0: #0a0d12;        /* page bg */
diff --git a/packages/templates/src/index.ts b/packages/templates/src/index.ts
index e14d187..a981002 100644
--- a/packages/templates/src/index.ts
+++ b/packages/templates/src/index.ts
@@ -15,5 +15,8 @@
  * limitations under the License.
  */
 
-// Phase 2 will populate this with the ui-initialized-templates bundle.
+// Horizon-native template format will be designed against the new visual
+// spec, not carried forward from booster-ui / ui-initialized-templates.
+// The upstream bundle is kept locally under `docs/design/research/` as a
+// learning reference only — never imported at runtime.
 export {};
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index bd3d797..e0fd58b 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -85,8 +85,8 @@ importers:
         specifier: ^4.1.3
         version: 4.1.3
       echarts:
-        specifier: ^5.5.1
-        version: 5.6.0
+        specifier: ^6.0.0
+        version: 6.0.0
       element-plus:
         specifier: ^2.8.7
         version: 2.14.0([email protected]([email protected]))
@@ -97,8 +97,8 @@ importers:
         specifier: ^7.1.2
         version: 7.4.0([email protected])
       monaco-editor:
-        specifier: ^0.52.0
-        version: 0.52.2
+        specifier: ^0.55.0
+        version: 0.55.1
       pinia:
         specifier: ^2.2.6
         version: 2.3.1([email protected])([email protected]([email protected]))
@@ -1401,6 +1401,9 @@ packages:
   '@types/[email protected]':
     resolution: {integrity: 
sha512-dyh/xO2Fh5bYrfWaaqGrRQQGkNdmYw6AmaAUvYeUMNTWQtvb796ikLdmTchRmOlOiIJ1TDXfWgVx1QkUlQ6Hew==}
 
+  '@types/[email protected]':
+    resolution: {integrity: 
sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==}
+
   '@types/[email protected]':
     resolution: {integrity: 
sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==}
 
@@ -2083,6 +2086,9 @@ packages:
     resolution: {integrity: 
sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==}
     engines: {node: '>=8'}
 
+  [email protected]:
+    resolution: {integrity: 
sha512-WhL/YuveyGXJaerVlMYGWhvQswa7myDG17P7Vu65EWC05o8vfeNbvNf4d/BOvH99+ZW+LlQsc1GDKMa1vNK6dw==}
+
   [email protected]:
     resolution: {integrity: 
sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==}
     engines: {node: '>= 0.4'}
@@ -2090,8 +2096,8 @@ packages:
   [email protected]:
     resolution: {integrity: 
sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
 
-  [email protected]:
-    resolution: {integrity: 
sha512-oTbVTsXfKuEhxftHqL5xprgLoc0k7uScAwtryCgWF6hPYFLRwOUHiFmHGCBKP5NPFNkDVopOieyUqYGH8Fa3kA==}
+  [email protected]:
+    resolution: {integrity: 
sha512-Tte/grDQRiETQP4xz3iZWSvoHrkCQtwqd6hs+mifXcjrCuo2iKWbajFObuLJVBlDIJlOzgQPd1hsaKt/3+OMkQ==}
 
   [email protected]:
     resolution: {integrity: 
sha512-e0GOtq/aTQhVdNyDU9e02+wz9oDDM+SIOQxWME2QRjzRX5yyLAuHDE+0aE8vHb9XRC8XD37eO2u57+F09JqFhw==}
@@ -2795,6 +2801,11 @@ packages:
   [email protected]:
     resolution: {integrity: 
sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==}
 
+  [email protected]:
+    resolution: {integrity: 
sha512-uIj4+faQ+MgHgwUW1l2PsPglZLOLOT1uErt06dAPtx2kjteLAkbsd/0FiYg/MGS+i7ZKLb7w2WClxHkzOOuryQ==}
+    engines: {node: '>= 18'}
+    hasBin: true
+
   [email protected]:
     resolution: {integrity: 
sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==}
     engines: {node: '>= 0.4'}
@@ -2848,8 +2859,8 @@ packages:
   [email protected]:
     resolution: {integrity: 
sha512-ILj2TpLiysu2wkBbWjAmww7TkZb65aiQO+DkVdUTBpBXq+MHYiETENkKFMtsJZX1Lf4pe4QOrTSjIfUwN5lRdg==}
 
-  [email protected]:
-    resolution: {integrity: 
sha512-GEQWEZmfkOGLdd3XK8ryrfWz3AIP8YymVXiPHEdewrUq7mh0qrKrfHLNCXcbB6sTnMLnOZ3ztSiKcciFUkIJwQ==}
+  [email protected]:
+    resolution: {integrity: 
sha512-jz4x+TJNFHwHtwuV9vA9rMujcZRb0CEilTEwG2rRSpe/A7Jdkuj8xPKttCgOh+v/lkHy7HsZ64oj+q3xoAFl9A==}
 
   [email protected]:
     resolution: {integrity: 
sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
@@ -3719,8 +3730,8 @@ packages:
   [email protected]:
     resolution: {integrity: 
sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==}
 
-  [email protected]:
-    resolution: {integrity: 
sha512-OFXkDJKcrlx5su2XbzJvj/34Q3m6PvyCZkVPHGYpcCJ52ek4U/ymZyfuV1nKE23AyBJ51E/6Yr0mhZ7xGTO4ag==}
+  [email protected]:
+    resolution: {integrity: 
sha512-41dFXEEXuJpNecuUQq6JlbybmnHaqqpGlbH1yxnA5V9MMP4SbohSVZsJIwz+zdjQXSSlR1Vc34EgH1zxyTDvhg==}
 
 snapshots:
 
@@ -4731,6 +4742,9 @@ snapshots:
     dependencies:
       undici-types: 6.21.0
 
+  '@types/[email protected]':
+    optional: true
+
   '@types/[email protected]': {}
 
   '@types/[email protected]': {}
@@ -5531,6 +5545,10 @@ snapshots:
   [email protected]:
     optional: true
 
+  [email protected]:
+    optionalDependencies:
+      '@types/trusted-types': 2.0.7
+
   [email protected]:
     dependencies:
       call-bind-apply-helpers: 1.0.2
@@ -5539,10 +5557,10 @@ snapshots:
 
   [email protected]: {}
 
-  [email protected]:
+  [email protected]:
     dependencies:
       tslib: 2.3.0
-      zrender: 5.6.1
+      zrender: 6.0.0
 
   [email protected]:
     dependencies:
@@ -6431,6 +6449,8 @@ snapshots:
     dependencies:
       '@jridgewell/sourcemap-codec': 1.5.5
 
+  [email protected]: {}
+
   [email protected]: {}
 
   [email protected]: {}
@@ -6470,7 +6490,10 @@ snapshots:
 
   [email protected]: {}
 
-  [email protected]: {}
+  [email protected]:
+    dependencies:
+      dompurify: 3.2.7
+      marked: 14.0.0
 
   [email protected]: {}
 
@@ -7410,6 +7433,6 @@ snapshots:
 
   [email protected]: {}
 
-  [email protected]:
+  [email protected]:
     dependencies:
       tslib: 2.3.0

Reply via email to