@eventcatalog/core 3.44.0 → 3.44.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -36,7 +36,7 @@ module.exports = __toCommonJS(analytics_exports);
36
36
  var import_os = __toESM(require("os"), 1);
37
37
 
38
38
  // package.json
39
- var version = "3.44.0";
39
+ var version = "3.44.2";
40
40
 
41
41
  // src/constants.ts
42
42
  var VERSION = version;
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  raiseEvent
3
- } from "../chunk-H7IGB2WO.js";
4
- import "../chunk-W7UIDHNR.js";
3
+ } from "../chunk-LIIOK6SZ.js";
4
+ import "../chunk-THDZCUFV.js";
5
5
  export {
6
6
  raiseEvent
7
7
  };
@@ -140,7 +140,7 @@ var verifyRequiredFieldsAreInCatalogConfigFile = async (projectDirectory) => {
140
140
  var import_os = __toESM(require("os"), 1);
141
141
 
142
142
  // package.json
143
- var version = "3.44.0";
143
+ var version = "3.44.2";
144
144
 
145
145
  // src/constants.ts
146
146
  var VERSION = version;
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  log_build_default
3
- } from "../chunk-SWSSBJ6H.js";
4
- import "../chunk-H7IGB2WO.js";
3
+ } from "../chunk-BLJ5FRR3.js";
4
+ import "../chunk-LIIOK6SZ.js";
5
5
  import "../chunk-DAOXTQVS.js";
6
- import "../chunk-W7UIDHNR.js";
6
+ import "../chunk-THDZCUFV.js";
7
7
  import "../chunk-6QENHZZP.js";
8
8
  export {
9
9
  log_build_default as default
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  raiseEvent
3
- } from "./chunk-H7IGB2WO.js";
3
+ } from "./chunk-LIIOK6SZ.js";
4
4
  import {
5
5
  countResources,
6
6
  serializeCounts
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  VERSION
3
- } from "./chunk-W7UIDHNR.js";
3
+ } from "./chunk-THDZCUFV.js";
4
4
 
5
5
  // src/utils/cli-logger.ts
6
6
  import pc from "picocolors";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  VERSION
3
- } from "./chunk-W7UIDHNR.js";
3
+ } from "./chunk-THDZCUFV.js";
4
4
 
5
5
  // src/analytics/analytics.js
6
6
  import os from "os";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  logger
3
- } from "./chunk-L2JZBH6K.js";
3
+ } from "./chunk-IU3D7JRW.js";
4
4
  import {
5
5
  cleanup,
6
6
  getEventCatalogConfigFile
@@ -1,5 +1,5 @@
1
1
  // package.json
2
- var version = "3.44.0";
2
+ var version = "3.44.2";
3
3
 
4
4
  // src/constants.ts
5
5
  var VERSION = version;
@@ -25,7 +25,7 @@ __export(constants_exports, {
25
25
  module.exports = __toCommonJS(constants_exports);
26
26
 
27
27
  // package.json
28
- var version = "3.44.0";
28
+ var version = "3.44.2";
29
29
 
30
30
  // src/constants.ts
31
31
  var VERSION = version;
package/dist/constants.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  VERSION
3
- } from "./chunk-W7UIDHNR.js";
3
+ } from "./chunk-THDZCUFV.js";
4
4
  export {
5
5
  VERSION
6
6
  };
@@ -32,7 +32,7 @@ id: dboyne
32
32
  # display name for the user
33
33
  name: David Boyne
34
34
 
35
- # URL path for a profile image
35
+ # optional URL path for a profile image
36
36
  avatarUrl: "https://pbs.twimg.com/profile_images/1262283153563140096/DYRDqKg6_400x400.png"
37
37
 
38
38
  # users role in the company
@@ -67,4 +67,3 @@ It's entirely up to you what you want to add to your users markdown content but
67
67
 
68
68
  - Context of the user. Who are they?
69
69
  - Contact info for the user?
70
-
@@ -144,7 +144,7 @@ var verifyRequiredFieldsAreInCatalogConfigFile = async (projectDirectory) => {
144
144
  var import_picocolors = __toESM(require("picocolors"), 1);
145
145
 
146
146
  // package.json
147
- var version = "3.44.0";
147
+ var version = "3.44.2";
148
148
 
149
149
  // src/constants.ts
150
150
  var VERSION = version;
@@ -13,8 +13,8 @@ import {
13
13
  } from "./chunk-3H2RT3CM.js";
14
14
  import {
15
15
  log_build_default
16
- } from "./chunk-SWSSBJ6H.js";
17
- import "./chunk-H7IGB2WO.js";
16
+ } from "./chunk-BLJ5FRR3.js";
17
+ import "./chunk-LIIOK6SZ.js";
18
18
  import "./chunk-DAOXTQVS.js";
19
19
  import {
20
20
  catalogToAstro
@@ -28,13 +28,13 @@ import {
28
28
  } from "./chunk-B7HCX5HM.js";
29
29
  import {
30
30
  generate
31
- } from "./chunk-A7WJATRV.js";
31
+ } from "./chunk-RUACTEJR.js";
32
32
  import {
33
33
  logger
34
- } from "./chunk-L2JZBH6K.js";
34
+ } from "./chunk-IU3D7JRW.js";
35
35
  import {
36
36
  VERSION
37
- } from "./chunk-W7UIDHNR.js";
37
+ } from "./chunk-THDZCUFV.js";
38
38
  import {
39
39
  getEventCatalogConfigFile,
40
40
  verifyRequiredFieldsAreInCatalogConfigFile
package/dist/generate.cjs CHANGED
@@ -108,7 +108,7 @@ var getEventCatalogConfigFile = async (projectDirectory) => {
108
108
  var import_picocolors = __toESM(require("picocolors"), 1);
109
109
 
110
110
  // package.json
111
- var version = "3.44.0";
111
+ var version = "3.44.2";
112
112
 
113
113
  // src/constants.ts
114
114
  var VERSION = version;
package/dist/generate.js CHANGED
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  generate
3
- } from "./chunk-A7WJATRV.js";
4
- import "./chunk-L2JZBH6K.js";
5
- import "./chunk-W7UIDHNR.js";
3
+ } from "./chunk-RUACTEJR.js";
4
+ import "./chunk-IU3D7JRW.js";
5
+ import "./chunk-THDZCUFV.js";
6
6
  import "./chunk-6QENHZZP.js";
7
7
  export {
8
8
  generate
@@ -36,7 +36,7 @@ module.exports = __toCommonJS(cli_logger_exports);
36
36
  var import_picocolors = __toESM(require("picocolors"), 1);
37
37
 
38
38
  // package.json
39
- var version = "3.44.0";
39
+ var version = "3.44.2";
40
40
 
41
41
  // src/constants.ts
42
42
  var VERSION = version;
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  logger
3
- } from "../chunk-L2JZBH6K.js";
4
- import "../chunk-W7UIDHNR.js";
3
+ } from "../chunk-IU3D7JRW.js";
4
+ import "../chunk-THDZCUFV.js";
5
5
  export {
6
6
  logger
7
7
  };
@@ -0,0 +1,23 @@
1
+ <svg viewBox="0 0 96 96" xmlns="http://www.w3.org/2000/svg">
2
+ <defs>
3
+ <linearGradient id="a" x1="-1032.17" x2="-1059.21" y1="145.31" y2="65.43" gradientTransform="matrix(1 0 0 -1 1075 158)" gradientUnits="userSpaceOnUse">
4
+ <stop offset="0" stop-color="#114a8b"/>
5
+ <stop offset="1" stop-color="#0669bc"/>
6
+ </linearGradient>
7
+ <linearGradient id="b" x1="-1023.73" x2="-1029.98" y1="108.08" y2="105.97" gradientTransform="matrix(1 0 0 -1 1075 158)" gradientUnits="userSpaceOnUse">
8
+ <stop offset="0" stop-opacity=".3"/>
9
+ <stop offset=".07" stop-opacity=".2"/>
10
+ <stop offset=".32" stop-opacity=".1"/>
11
+ <stop offset=".62" stop-opacity=".05"/>
12
+ <stop offset="1" stop-opacity="0"/>
13
+ </linearGradient>
14
+ <linearGradient id="c" x1="-1027.16" x2="-997.48" y1="147.64" y2="68.56" gradientTransform="matrix(1 0 0 -1 1075 158)" gradientUnits="userSpaceOnUse">
15
+ <stop offset="0" stop-color="#3ccbf4"/>
16
+ <stop offset="1" stop-color="#2892df"/>
17
+ </linearGradient>
18
+ </defs>
19
+ <path fill="url(#a)" d="M33.34 6.54h26.04l-27.03 80.1a4.15 4.15 0 0 1-3.94 2.81H8.15a4.14 4.14 0 0 1-3.93-5.47L29.4 9.38a4.15 4.15 0 0 1 3.94-2.83z"/>
20
+ <path fill="#0078d4" d="M71.17 60.26H29.88a1.91 1.91 0 0 0-1.3 3.31l26.53 24.76a4.17 4.17 0 0 0 2.85 1.13h23.38z"/>
21
+ <path fill="url(#b)" d="M33.34 6.54a4.12 4.12 0 0 0-3.95 2.88L4.25 83.92a4.14 4.14 0 0 0 3.91 5.54h20.79a4.44 4.44 0 0 0 3.4-2.9l5.02-14.78 17.91 16.7a4.24 4.24 0 0 0 2.67.97h23.29L71.02 60.26H41.24L59.47 6.55z"/>
22
+ <path fill="url(#c)" d="M66.6 9.36a4.14 4.14 0 0 0-3.93-2.82H33.65a4.15 4.15 0 0 1 3.93 2.82l25.18 74.62a4.15 4.15 0 0 1-3.93 5.48h29.02a4.15 4.15 0 0 0 3.93-5.48z"/>
23
+ </svg>
@@ -0,0 +1,64 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import { buildEnvironmentUrl, findCurrentEnvironment } from './EnvironmentDropdown';
3
+
4
+ const environments = [
5
+ {
6
+ name: 'Development',
7
+ url: 'https://example.com/event-catalog/dev',
8
+ shortName: 'Dev',
9
+ },
10
+ {
11
+ name: 'UAT',
12
+ url: 'https://example.com/event-catalog/uat',
13
+ shortName: 'UAT',
14
+ },
15
+ {
16
+ name: 'Production',
17
+ url: 'https://example.com/event-catalog/prod',
18
+ shortName: 'Prod',
19
+ },
20
+ ];
21
+
22
+ describe('EnvironmentDropdown', () => {
23
+ it('finds the current environment when environments share an origin but use different base paths', () => {
24
+ expect(findCurrentEnvironment(environments, 'https://example.com/event-catalog/uat/services/foo')?.name).toBe('UAT');
25
+ });
26
+
27
+ it('builds environment urls by replacing the current environment base path', () => {
28
+ expect(
29
+ buildEnvironmentUrl(
30
+ 'https://example.com/event-catalog/prod',
31
+ 'https://example.com/event-catalog/uat/services/foo',
32
+ 'https://example.com/event-catalog/uat'
33
+ )
34
+ ).toBe('https://example.com/event-catalog/prod/services/foo');
35
+ });
36
+
37
+ it('preserves search params and hashes when switching environments', () => {
38
+ expect(
39
+ buildEnvironmentUrl(
40
+ 'https://example.com/event-catalog/prod',
41
+ 'https://example.com/event-catalog/uat/services/foo?tab=messages#latest',
42
+ 'https://example.com/event-catalog/uat'
43
+ )
44
+ ).toBe('https://example.com/event-catalog/prod/services/foo?tab=messages#latest');
45
+ });
46
+
47
+ it('keeps existing origin based environment switching for root catalogs', () => {
48
+ expect(
49
+ buildEnvironmentUrl('https://prod.example.com', 'https://uat.example.com/services/foo', 'https://uat.example.com')
50
+ ).toBe('https://prod.example.com/services/foo');
51
+ });
52
+
53
+ it('switches from a root catalog to a subpath catalog', () => {
54
+ expect(buildEnvironmentUrl('https://example.com/prod', 'https://example.com/services/foo', 'https://example.com')).toBe(
55
+ 'https://example.com/prod/services/foo'
56
+ );
57
+ });
58
+
59
+ it('preserves the current path when the current environment is unknown', () => {
60
+ expect(buildEnvironmentUrl('https://example.com/prod', 'http://localhost:3000/services/foo')).toBe(
61
+ 'https://example.com/prod/services/foo'
62
+ );
63
+ });
64
+ });
@@ -11,20 +11,56 @@ interface EnvironmentDropdownProps {
11
11
  environments: Environment[];
12
12
  }
13
13
 
14
+ const stripTrailingSlash = (pathname: string) => pathname.replace(/\/$/, '') || '/';
15
+
16
+ const startsWithPath = (pathname: string, basePathname: string) =>
17
+ basePathname === '/' || pathname === basePathname || pathname.startsWith(`${basePathname}/`);
18
+
19
+ export const findCurrentEnvironment = (environments: Environment[], currentHref: string) => {
20
+ const currentUrl = new URL(currentHref);
21
+
22
+ return (
23
+ environments
24
+ .filter((env) => {
25
+ const envUrl = new URL(env.url, currentUrl.href);
26
+ const envPathname = stripTrailingSlash(envUrl.pathname);
27
+
28
+ return envUrl.origin === currentUrl.origin && startsWithPath(currentUrl.pathname, envPathname);
29
+ })
30
+ .sort(
31
+ (a, b) =>
32
+ stripTrailingSlash(new URL(b.url, currentUrl.href).pathname).length -
33
+ stripTrailingSlash(new URL(a.url, currentUrl.href).pathname).length
34
+ )[0] || null
35
+ );
36
+ };
37
+
38
+ export const buildEnvironmentUrl = (environmentUrl: string, currentHref: string, currentEnvironmentUrl?: string) => {
39
+ const currentUrl = new URL(currentHref);
40
+ const targetUrl = new URL(environmentUrl, currentUrl.href);
41
+ const targetBasePathname = stripTrailingSlash(targetUrl.pathname);
42
+ const currentBasePathname = currentEnvironmentUrl
43
+ ? stripTrailingSlash(new URL(currentEnvironmentUrl, currentUrl.href).pathname)
44
+ : undefined;
45
+ const pathWithinEnvironment =
46
+ currentBasePathname && currentBasePathname !== '/' && startsWithPath(currentUrl.pathname, currentBasePathname)
47
+ ? currentUrl.pathname.slice(currentBasePathname.length)
48
+ : currentUrl.pathname;
49
+
50
+ targetUrl.pathname = `${targetBasePathname}${pathWithinEnvironment}`.replace(/\/+/g, '/');
51
+ targetUrl.search = currentUrl.search;
52
+ targetUrl.hash = currentUrl.hash;
53
+
54
+ return targetUrl.toString();
55
+ };
56
+
14
57
  export const EnvironmentDropdown: React.FC<EnvironmentDropdownProps> = ({ environments }) => {
15
58
  const [isOpen, setIsOpen] = useState(false);
16
59
  const [currentEnvironment, setCurrentEnvironment] = useState<Environment | null>(null);
17
60
  const dropdownRef = useRef<HTMLDivElement>(null);
18
61
 
19
62
  useEffect(() => {
20
- // Check if current URL matches any environment
21
- const currentUrl = window.location.origin;
22
- const matchedEnv = environments.find((env) => {
23
- // Normalize URLs for comparison
24
- const envUrl = new URL(env.url).origin;
25
- return envUrl === currentUrl;
26
- });
27
- setCurrentEnvironment(matchedEnv || null);
63
+ setCurrentEnvironment(findCurrentEnvironment(environments, window.location.href));
28
64
  }, [environments]);
29
65
 
30
66
  useEffect(() => {
@@ -99,11 +135,7 @@ export const EnvironmentDropdown: React.FC<EnvironmentDropdownProps> = ({ enviro
99
135
  href={env.url}
100
136
  onClick={(e) => {
101
137
  e.preventDefault();
102
- // Construct the full URL with the current path when clicked
103
- const currentPath = window.location.pathname + window.location.search + window.location.hash;
104
- const targetUrl = new URL(env.url);
105
- targetUrl.pathname = currentPath;
106
- window.location.href = targetUrl.toString();
138
+ window.location.href = buildEnvironmentUrl(env.url, window.location.href, currentEnvironment?.url);
107
139
  }}
108
140
  className={`block rounded-xl px-3 py-3 transition-colors ${
109
141
  isCurrentEnv
@@ -1,39 +1,74 @@
1
1
  import { FileText, Github } from 'lucide-react';
2
+ import { buildUrl } from '@utils/url-builder';
3
+ import type { ReactNode } from 'react';
2
4
 
3
5
  type DirectorySource = {
4
6
  provider: string;
7
+ id?: string;
5
8
  url?: string;
6
9
  };
7
10
 
11
+ const sourceLabels: Record<string, string> = {
12
+ github: 'GitHub',
13
+ 'microsoft-entra': 'Microsoft Entra ID',
14
+ };
15
+
16
+ const getSourceLabel = (source: DirectorySource) => sourceLabels[source.provider] ?? source.provider;
17
+
18
+ const SourceBadge = ({ source, icon }: { source: DirectorySource; icon: ReactNode }) => {
19
+ const label = getSourceLabel(source);
20
+ const title = `Synced from ${label}`;
21
+
22
+ if (source.url) {
23
+ return (
24
+ <a
25
+ href={source.url}
26
+ target="_blank"
27
+ rel="noreferrer"
28
+ className="group/source inline-flex h-7 w-7 items-center justify-center rounded-md border border-[rgb(var(--ec-page-border))] bg-[rgb(var(--ec-page-bg)/0.35)] transition-colors hover:bg-[rgb(var(--ec-content-hover))]"
29
+ title={title}
30
+ aria-label={title}
31
+ >
32
+ {icon}
33
+ </a>
34
+ );
35
+ }
36
+
37
+ return (
38
+ <span
39
+ className="inline-flex h-7 w-7 items-center justify-center rounded-md border border-[rgb(var(--ec-page-border))] bg-[rgb(var(--ec-page-bg)/0.35)]"
40
+ title={title}
41
+ aria-label={title}
42
+ >
43
+ {icon}
44
+ </span>
45
+ );
46
+ };
47
+
8
48
  export const DirectorySourceCell = ({ source }: { source?: DirectorySource }) => {
9
49
  if (source?.provider === 'github') {
10
- const icon = (
11
- <Github className="h-4 w-4 text-[rgb(var(--ec-icon-color))] transition-colors group-hover/source:text-[rgb(var(--ec-page-text))]" />
50
+ return (
51
+ <SourceBadge
52
+ source={source}
53
+ icon={
54
+ <Github className="h-4 w-4 text-[rgb(var(--ec-icon-color))] transition-colors group-hover/source:text-[rgb(var(--ec-page-text))]" />
55
+ }
56
+ />
12
57
  );
58
+ }
13
59
 
14
- if (source.url) {
15
- return (
16
- <a
17
- href={source.url}
18
- target="_blank"
19
- rel="noreferrer"
20
- className="group/source inline-flex h-7 w-7 items-center justify-center rounded-md border border-[rgb(var(--ec-page-border))] bg-[rgb(var(--ec-page-bg)/0.35)] transition-colors hover:bg-[rgb(var(--ec-content-hover))]"
21
- title="Synced from GitHub"
22
- aria-label="Synced from GitHub"
23
- >
24
- {icon}
25
- </a>
26
- );
27
- }
60
+ if (source?.provider === 'microsoft-entra') {
61
+ return <SourceBadge source={source} icon={<img src={buildUrl('/icons/azure.svg', true)} alt="" className="h-4 w-4" />} />;
62
+ }
28
63
 
64
+ if (source) {
29
65
  return (
30
- <span
31
- className="inline-flex h-7 w-7 items-center justify-center rounded-md border border-[rgb(var(--ec-page-border))] bg-[rgb(var(--ec-page-bg)/0.35)]"
32
- title="Synced from GitHub"
33
- aria-label="Synced from GitHub"
34
- >
35
- {icon}
36
- </span>
66
+ <SourceBadge
67
+ source={source}
68
+ icon={
69
+ <FileText className="h-4 w-4 text-[rgb(var(--ec-icon-color))] transition-colors group-hover/source:text-[rgb(var(--ec-page-text))]" />
70
+ }
71
+ />
37
72
  );
38
73
  }
39
74
 
@@ -106,6 +106,7 @@ const resourcePointer = z.object({
106
106
 
107
107
  const directoryEntrySource = z.object({
108
108
  provider: z.string(),
109
+ id: z.string().optional(),
109
110
  url: z.string().optional(),
110
111
  });
111
112
 
@@ -896,7 +897,7 @@ const users = defineCollection({
896
897
  schema: z.object({
897
898
  id: z.string(),
898
899
  name: z.string(),
899
- avatarUrl: z.string(),
900
+ avatarUrl: z.string().optional(),
900
901
  role: z.string().optional(),
901
902
  hidden: z.boolean().optional(),
902
903
  source: directoryEntrySource.optional(),
@@ -80,7 +80,11 @@ const ownedAdrsList = adrs.map((p) => ({
80
80
 
81
81
  const pageTitle = `Team | ${props.data.name}`;
82
82
  const source = props.data.source;
83
- const sourceLabel = source?.provider === 'github' ? 'GitHub' : source?.provider;
83
+ const sourceLabels: Record<string, string> = {
84
+ github: 'GitHub',
85
+ 'microsoft-entra': 'Microsoft Entra ID',
86
+ };
87
+ const sourceLabel = source?.provider ? (sourceLabels[source.provider] ?? source.provider) : undefined;
84
88
  const sourceTitle = sourceLabel ? `Synced from ${sourceLabel}` : undefined;
85
89
  ---
86
90
 
@@ -149,6 +153,7 @@ const sourceTitle = sourceLabel ? `Synced from ${sourceLabel}` : undefined;
149
153
  class="inline-flex items-center gap-1.5 text-sm text-[rgb(var(--ec-page-text-muted))] hover:text-[rgb(var(--ec-page-text))] transition-colors"
150
154
  >
151
155
  {source.provider === 'github' && <Github className="w-4 h-4 text-[rgb(var(--ec-icon-color))]" />}
156
+ {source.provider === 'microsoft-entra' && <img src={buildUrl('/icons/azure.svg', true)} class="w-4 h-4" alt="" />}
152
157
  <span>{sourceLabel}</span>
153
158
  </a>
154
159
  )
@@ -160,6 +165,7 @@ const sourceTitle = sourceLabel ? `Synced from ${sourceLabel}` : undefined;
160
165
  class="inline-flex items-center gap-1.5 text-sm text-[rgb(var(--ec-page-text-muted))]"
161
166
  >
162
167
  {source.provider === 'github' && <Github className="w-4 h-4 text-[rgb(var(--ec-icon-color))]" />}
168
+ {source.provider === 'microsoft-entra' && <img src={buildUrl('/icons/azure.svg', true)} class="w-4 h-4" alt="" />}
163
169
  <span>{sourceLabel}</span>
164
170
  </span>
165
171
  )
@@ -77,7 +77,11 @@ const associatedTeams = teams.map((o) => ({
77
77
 
78
78
  const pageTitle = `User | ${props.data.name}`;
79
79
  const source = props.data.source;
80
- const sourceLabel = source?.provider === 'github' ? 'GitHub' : source?.provider;
80
+ const sourceLabels: Record<string, string> = {
81
+ github: 'GitHub',
82
+ 'microsoft-entra': 'Microsoft Entra ID',
83
+ };
84
+ const sourceLabel = source?.provider ? (sourceLabels[source.provider] ?? source.provider) : undefined;
81
85
  const sourceTitle = sourceLabel ? `Synced from ${sourceLabel}` : undefined;
82
86
  ---
83
87
 
@@ -155,6 +159,7 @@ const sourceTitle = sourceLabel ? `Synced from ${sourceLabel}` : undefined;
155
159
  class="inline-flex items-center gap-1.5 text-sm text-[rgb(var(--ec-page-text-muted))] hover:text-[rgb(var(--ec-page-text))] transition-colors"
156
160
  >
157
161
  {source.provider === 'github' && <Github className="w-4 h-4 text-[rgb(var(--ec-icon-color))]" />}
162
+ {source.provider === 'microsoft-entra' && <img src={buildUrl('/icons/azure.svg', true)} class="w-4 h-4" alt="" />}
158
163
  <span>{sourceLabel}</span>
159
164
  </a>
160
165
  )
@@ -166,6 +171,7 @@ const sourceTitle = sourceLabel ? `Synced from ${sourceLabel}` : undefined;
166
171
  class="inline-flex items-center gap-1.5 text-sm text-[rgb(var(--ec-page-text-muted))]"
167
172
  >
168
173
  {source.provider === 'github' && <Github className="w-4 h-4 text-[rgb(var(--ec-icon-color))]" />}
174
+ {source.provider === 'microsoft-entra' && <img src={buildUrl('/icons/azure.svg', true)} class="w-4 h-4" alt="" />}
169
175
  <span>{sourceLabel}</span>
170
176
  </span>
171
177
  )
package/package.json CHANGED
@@ -7,7 +7,7 @@
7
7
  },
8
8
  "license": "SEE LICENSE IN LICENSE",
9
9
  "type": "module",
10
- "version": "3.44.0",
10
+ "version": "3.44.2",
11
11
  "publishConfig": {
12
12
  "access": "public"
13
13
  },
@@ -29,10 +29,10 @@
29
29
  ],
30
30
  "dependencies": {
31
31
  "@ai-sdk/react": "^3.0.17",
32
- "@astrojs/markdown-remark": "^7.1.1",
33
- "@astrojs/mdx": "^5.0.4",
34
- "@astrojs/node": "^10.1.0",
35
- "@astrojs/react": "^5.0.4",
32
+ "@astrojs/markdown-remark": "^7.2.0",
33
+ "@astrojs/mdx": "^6.0.1",
34
+ "@astrojs/node": "^10.1.2",
35
+ "@astrojs/react": "^5.0.6",
36
36
  "@astrojs/rss": "^4.0.18",
37
37
  "@asyncapi/avro-schema-parser": "3.0.24",
38
38
  "@asyncapi/parser": "^3.6.0",
@@ -58,7 +58,7 @@
58
58
  "@tanstack/react-table": "^8.17.3",
59
59
  "@xyflow/react": "^12.3.6",
60
60
  "ai": "^6.0.17",
61
- "astro": "^6.3.1",
61
+ "astro": "^6.4.1",
62
62
  "astro-compress": "^2.4.0",
63
63
  "astro-expressive-code": "^0.41.7",
64
64
  "astro-seo": "^0.8.4",
@@ -112,9 +112,9 @@
112
112
  "update-notifier": "^7.3.1",
113
113
  "uuid": "^10.0.0",
114
114
  "zod": "^4.3.6",
115
- "@eventcatalog/linter": "1.0.28",
115
+ "@eventcatalog/sdk": "2.24.1",
116
116
  "@eventcatalog/visualiser": "^3.22.1",
117
- "@eventcatalog/sdk": "2.24.0"
117
+ "@eventcatalog/linter": "1.0.29"
118
118
  },
119
119
  "devDependencies": {
120
120
  "@astrojs/check": "^0.9.9",