@eventcatalog/core 4.11.2 → 4.12.0-beta.1

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.
Files changed (243) hide show
  1. package/dist/analytics/analytics.cjs +1 -1
  2. package/dist/analytics/analytics.js +2 -2
  3. package/dist/analytics/log-build.cjs +17 -11
  4. package/dist/analytics/log-build.js +4 -4
  5. package/dist/astro-config-path.cjs +51 -0
  6. package/dist/astro-config-path.d.cts +6 -0
  7. package/dist/astro-config-path.d.ts +6 -0
  8. package/dist/astro-config-path.js +6 -0
  9. package/dist/catalog-runtime.cjs +136 -0
  10. package/dist/catalog-runtime.d.cts +12 -0
  11. package/dist/catalog-runtime.d.ts +12 -0
  12. package/dist/catalog-runtime.js +8 -0
  13. package/dist/{chunk-B7HCX5HM.js → chunk-3SJDIENM.js} +1 -1
  14. package/dist/{chunk-AFPH6ERZ.js → chunk-5QRWGO2E.js} +1 -1
  15. package/dist/{chunk-6U72KINX.js → chunk-DJCOJ77J.js} +1 -0
  16. package/dist/{chunk-LHR4G2UO.js → chunk-EEZXGNF6.js} +1 -1
  17. package/dist/{chunk-XMRPNDXB.js → chunk-ISBBAOCD.js} +1 -1
  18. package/dist/{chunk-Z6OKCHWL.js → chunk-IUPFEQMU.js} +2 -2
  19. package/dist/{chunk-6QENHZZP.js → chunk-JE6RX7SJ.js} +11 -5
  20. package/dist/{chunk-LAWEGSJH.js → chunk-LU4GFIHH.js} +1 -1
  21. package/dist/{chunk-2YJRF4ZX.js → chunk-RYPZGCRN.js} +1 -1
  22. package/dist/chunk-SAN4U2WU.js +96 -0
  23. package/dist/{chunk-EGH3ALRY.js → chunk-TVLJNFDW.js} +4 -4
  24. package/dist/chunk-U63GDPPY.js +14 -0
  25. package/dist/chunk-VIJJ7JKH.js +17 -0
  26. package/dist/constants.cjs +1 -1
  27. package/dist/constants.js +1 -1
  28. package/dist/eventcatalog-config-file-utils.cjs +13 -7
  29. package/dist/eventcatalog-config-file-utils.d.cts +86 -2
  30. package/dist/eventcatalog-config-file-utils.d.ts +86 -2
  31. package/dist/eventcatalog-config-file-utils.js +1 -1
  32. package/dist/eventcatalog.cjs +227 -561
  33. package/dist/eventcatalog.js +62 -71
  34. package/dist/features.cjs +10 -6
  35. package/dist/features.js +2 -2
  36. package/dist/federation/federate.cjs +110 -106
  37. package/dist/federation/federate.js +4 -4
  38. package/dist/generate.cjs +11 -7
  39. package/dist/generate.js +4 -4
  40. package/dist/resolve-catalog-dependencies.cjs +12 -8
  41. package/dist/resolve-catalog-dependencies.js +2 -2
  42. package/dist/runtime-dependencies/@ai-sdk__react.mjs +3 -0
  43. package/dist/runtime-dependencies/@astrojs__markdown-remark.mjs +3 -0
  44. package/dist/runtime-dependencies/@astrojs__mdx.mjs +3 -0
  45. package/dist/runtime-dependencies/@astrojs__node.mjs +3 -0
  46. package/dist/runtime-dependencies/@astrojs__react.mjs +3 -0
  47. package/dist/runtime-dependencies/@astrojs__rss.mjs +3 -0
  48. package/dist/runtime-dependencies/@asyncapi__avro-schema-parser.mjs +3 -0
  49. package/dist/runtime-dependencies/@asyncapi__parser.mjs +3 -0
  50. package/dist/runtime-dependencies/@asyncapi__react-component.mjs +3 -0
  51. package/dist/runtime-dependencies/@asyncapi__react-component__styles__default.min.css.mjs +3 -0
  52. package/dist/runtime-dependencies/@auth__core.mjs +3 -0
  53. package/dist/runtime-dependencies/@auth__core__providers__auth0.mjs +3 -0
  54. package/dist/runtime-dependencies/@auth__core__providers__github.mjs +3 -0
  55. package/dist/runtime-dependencies/@auth__core__providers__google.mjs +3 -0
  56. package/dist/runtime-dependencies/@auth__core__providers__microsoft-entra-id.mjs +3 -0
  57. package/dist/runtime-dependencies/@auth__core__providers__okta.mjs +3 -0
  58. package/dist/runtime-dependencies/@auth__core__types.mjs +3 -0
  59. package/dist/runtime-dependencies/@eventcatalog__license.mjs +3 -0
  60. package/dist/runtime-dependencies/@eventcatalog__linter.mjs +3 -0
  61. package/dist/runtime-dependencies/@eventcatalog__sdk.mjs +3 -0
  62. package/dist/runtime-dependencies/@eventcatalog__visualiser.mjs +3 -0
  63. package/dist/runtime-dependencies/@eventcatalog__visualiser__styles-core.css.mjs +3 -0
  64. package/dist/runtime-dependencies/@fontsource__inter.mjs +3 -0
  65. package/dist/runtime-dependencies/@fontsource__inter__400.css.mjs +3 -0
  66. package/dist/runtime-dependencies/@fontsource__inter__700.css.mjs +3 -0
  67. package/dist/runtime-dependencies/@headlessui__react.mjs +3 -0
  68. package/dist/runtime-dependencies/@heroicons__react.mjs +3 -0
  69. package/dist/runtime-dependencies/@heroicons__react__16__solid__EnvelopeIcon.mjs +3 -0
  70. package/dist/runtime-dependencies/@heroicons__react__20__solid.mjs +3 -0
  71. package/dist/runtime-dependencies/@heroicons__react__24__outline.mjs +3 -0
  72. package/dist/runtime-dependencies/@heroicons__react__24__outline__MagnifyingGlassIcon.mjs +3 -0
  73. package/dist/runtime-dependencies/@heroicons__react__24__outline__RectangleGroupIcon.mjs +3 -0
  74. package/dist/runtime-dependencies/@heroicons__react__24__outline__ServerIcon.mjs +3 -0
  75. package/dist/runtime-dependencies/@heroicons__react__24__solid.mjs +3 -0
  76. package/dist/runtime-dependencies/@iconify-json__logos.mjs +3 -0
  77. package/dist/runtime-dependencies/@mermaid-js__layout-elk.mjs +3 -0
  78. package/dist/runtime-dependencies/@mermaid-js__layout-elk__dist__mermaid-layout-elk.core.mjs.mjs +3 -0
  79. package/dist/runtime-dependencies/@modelcontextprotocol__sdk.mjs +3 -0
  80. package/dist/runtime-dependencies/@modelcontextprotocol__sdk__server__mcp.js.mjs +3 -0
  81. package/dist/runtime-dependencies/@modelcontextprotocol__sdk__server__webStandardStreamableHttp.js.mjs +3 -0
  82. package/dist/runtime-dependencies/@nanostores__react.mjs +3 -0
  83. package/dist/runtime-dependencies/@parcel__watcher.mjs +3 -0
  84. package/dist/runtime-dependencies/@radix-ui__react-context-menu.mjs +3 -0
  85. package/dist/runtime-dependencies/@radix-ui__react-dialog.mjs +3 -0
  86. package/dist/runtime-dependencies/@radix-ui__react-dropdown-menu.mjs +3 -0
  87. package/dist/runtime-dependencies/@radix-ui__react-popover.mjs +3 -0
  88. package/dist/runtime-dependencies/@radix-ui__react-tooltip.mjs +3 -0
  89. package/dist/runtime-dependencies/@scalar__api-reference-react.mjs +3 -0
  90. package/dist/runtime-dependencies/@scalar__api-reference-react__style.css.mjs +3 -0
  91. package/dist/runtime-dependencies/@tailwindcss__typography.mjs +3 -0
  92. package/dist/runtime-dependencies/@tailwindcss__vite.mjs +3 -0
  93. package/dist/runtime-dependencies/@tanstack__react-table.mjs +3 -0
  94. package/dist/runtime-dependencies/@xyflow__react.mjs +3 -0
  95. package/dist/runtime-dependencies/@xyflow__react__dist__style.css.mjs +3 -0
  96. package/dist/runtime-dependencies/ai.mjs +3 -0
  97. package/dist/runtime-dependencies/astro-expressive-code.mjs +3 -0
  98. package/dist/runtime-dependencies/astro-expressive-code__components.mjs +3 -0
  99. package/dist/runtime-dependencies/astro-seo.mjs +3 -0
  100. package/dist/runtime-dependencies/astro.mjs +3 -0
  101. package/dist/runtime-dependencies/astro__assets__services__sharp.mjs +3 -0
  102. package/dist/runtime-dependencies/astro__config.mjs +3 -0
  103. package/dist/runtime-dependencies/astro__jsx-runtime.mjs +3 -0
  104. package/dist/runtime-dependencies/astro__loaders.mjs +3 -0
  105. package/dist/runtime-dependencies/astro__logger__node.mjs +3 -0
  106. package/dist/runtime-dependencies/astro__types.mjs +3 -0
  107. package/dist/runtime-dependencies/astro__zod.mjs +3 -0
  108. package/dist/runtime-dependencies/auth-astro.mjs +3 -0
  109. package/dist/runtime-dependencies/auth-astro__client.mjs +3 -0
  110. package/dist/runtime-dependencies/auth-astro__server.mjs +3 -0
  111. package/dist/runtime-dependencies/boxen.mjs +3 -0
  112. package/dist/runtime-dependencies/commander.mjs +3 -0
  113. package/dist/runtime-dependencies/cross-env.mjs +3 -0
  114. package/dist/runtime-dependencies/d3-drag.mjs +3 -0
  115. package/dist/runtime-dependencies/d3-force.mjs +3 -0
  116. package/dist/runtime-dependencies/d3-selection.mjs +3 -0
  117. package/dist/runtime-dependencies/d3-zoom.mjs +3 -0
  118. package/dist/runtime-dependencies/dagre.mjs +3 -0
  119. package/dist/runtime-dependencies/diff.mjs +3 -0
  120. package/dist/runtime-dependencies/diff2html.mjs +3 -0
  121. package/dist/runtime-dependencies/diff2html__bundles__css__diff2html.min.css.mjs +3 -0
  122. package/dist/runtime-dependencies/dotenv.mjs +3 -0
  123. package/dist/runtime-dependencies/elkjs.mjs +3 -0
  124. package/dist/runtime-dependencies/elkjs__lib__elk.bundled.js.mjs +3 -0
  125. package/dist/runtime-dependencies/glob.mjs +3 -0
  126. package/dist/runtime-dependencies/gray-matter.mjs +3 -0
  127. package/dist/runtime-dependencies/hono.mjs +3 -0
  128. package/dist/runtime-dependencies/html-to-image.mjs +3 -0
  129. package/dist/runtime-dependencies/js-yaml.mjs +3 -0
  130. package/dist/runtime-dependencies/jsonpath-plus.mjs +3 -0
  131. package/dist/runtime-dependencies/jsonwebtoken.mjs +3 -0
  132. package/dist/runtime-dependencies/lodash.debounce.mjs +3 -0
  133. package/dist/runtime-dependencies/lodash.merge.mjs +3 -0
  134. package/dist/runtime-dependencies/lucide-react.mjs +3 -0
  135. package/dist/runtime-dependencies/manifest.json +136 -0
  136. package/dist/runtime-dependencies/marked.mjs +3 -0
  137. package/dist/runtime-dependencies/mdast-util-find-and-replace.mjs +3 -0
  138. package/dist/runtime-dependencies/mermaid.mjs +3 -0
  139. package/dist/runtime-dependencies/minisearch.mjs +3 -0
  140. package/dist/runtime-dependencies/nanostores.mjs +3 -0
  141. package/dist/runtime-dependencies/pagefind.mjs +3 -0
  142. package/dist/runtime-dependencies/pako.mjs +3 -0
  143. package/dist/runtime-dependencies/parse5.mjs +3 -0
  144. package/dist/runtime-dependencies/picocolors.mjs +3 -0
  145. package/dist/runtime-dependencies/picomatch.mjs +3 -0
  146. package/dist/runtime-dependencies/react-dom.mjs +3 -0
  147. package/dist/runtime-dependencies/react-dom__client.mjs +3 -0
  148. package/dist/runtime-dependencies/react-dom__server.mjs +3 -0
  149. package/dist/runtime-dependencies/react-markdown.mjs +3 -0
  150. package/dist/runtime-dependencies/react-syntax-highlighter.mjs +3 -0
  151. package/dist/runtime-dependencies/react-syntax-highlighter__dist__cjs__styles__prism.mjs +3 -0
  152. package/dist/runtime-dependencies/react-syntax-highlighter__dist__cjs__styles__prism__index.js.mjs +3 -0
  153. package/dist/runtime-dependencies/react.mjs +3 -0
  154. package/dist/runtime-dependencies/react__jsx-dev-runtime.mjs +3 -0
  155. package/dist/runtime-dependencies/react__jsx-runtime.mjs +3 -0
  156. package/dist/runtime-dependencies/recast.mjs +3 -0
  157. package/dist/runtime-dependencies/recast__parsers__babel.js.mjs +3 -0
  158. package/dist/runtime-dependencies/rehype-autolink-headings.mjs +3 -0
  159. package/dist/runtime-dependencies/rehype-expressive-code.mjs +3 -0
  160. package/dist/runtime-dependencies/rehype-expressive-code__hast.mjs +3 -0
  161. package/dist/runtime-dependencies/rehype-slug.mjs +3 -0
  162. package/dist/runtime-dependencies/remark-comment.mjs +3 -0
  163. package/dist/runtime-dependencies/remark-directive.mjs +3 -0
  164. package/dist/runtime-dependencies/remark-gfm.mjs +3 -0
  165. package/dist/runtime-dependencies/rimraf.mjs +3 -0
  166. package/dist/runtime-dependencies/semver.mjs +3 -0
  167. package/dist/runtime-dependencies/shelljs.mjs +3 -0
  168. package/dist/runtime-dependencies/sonner.mjs +3 -0
  169. package/dist/runtime-dependencies/sql.js.mjs +3 -0
  170. package/dist/runtime-dependencies/tailwindcss.mjs +3 -0
  171. package/dist/runtime-dependencies/typescript.mjs +3 -0
  172. package/dist/runtime-dependencies/unist-util-visit.mjs +3 -0
  173. package/dist/runtime-dependencies/update-notifier.mjs +3 -0
  174. package/dist/runtime-dependencies/uuid.mjs +3 -0
  175. package/dist/runtime-dependencies/zod.mjs +3 -0
  176. package/dist/runtime-dependencies/zod__v4.mjs +3 -0
  177. package/dist/search-indexer.cjs +1 -0
  178. package/dist/search-indexer.js +1 -1
  179. package/dist/utils/cli-logger.cjs +1 -1
  180. package/dist/utils/cli-logger.js +2 -2
  181. package/dist/watcher.cjs +5 -204
  182. package/dist/watcher.js +1 -2
  183. package/eventcatalog/astro.config.mjs +57 -31
  184. package/eventcatalog/integrations/catalog-assets.mjs +204 -0
  185. package/eventcatalog/integrations/config-loader.mjs +85 -0
  186. package/eventcatalog/integrations/ecstudio-watcher.mjs +11 -9
  187. package/eventcatalog/integrations/eventcatalog-runtime.mjs +252 -0
  188. package/eventcatalog/integrations/expressive-code-config.mjs +6 -0
  189. package/eventcatalog/integrations/runtime-dependencies.mjs +49 -0
  190. package/eventcatalog/integrations/runtime-dependency-manifest.mjs +15 -0
  191. package/eventcatalog/integrations/runtime-paths.mjs +16 -0
  192. package/eventcatalog/src/content.config.ts +33 -46
  193. package/eventcatalog/src/enterprise/custom-pages/routes.ts +3 -2
  194. package/eventcatalog/src/enterprise/feature.ts +2 -1
  195. package/eventcatalog/src/enterprise/fields/field-indexer.ts +5 -2
  196. package/eventcatalog/src/enterprise/fields/pages/api/fields.ts +4 -3
  197. package/eventcatalog/src/enterprise/integrations/eventcatalog-features.ts +32 -32
  198. package/eventcatalog/src/enterprise/mcp/mcp-auth.ts +1 -1
  199. package/eventcatalog/src/env.d.ts +7 -1
  200. package/eventcatalog/src/layouts/VerticalSideBarLayout.astro +15 -3
  201. package/eventcatalog/src/pages/architecture/[type]/[id]/[version]/index.astro +1 -1
  202. package/eventcatalog/src/pages/diagrams/[id]/[version]/index.astro +2 -2
  203. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/[docType]/[docId]/[docVersion]/index.astro +2 -2
  204. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/[docType]/[docId]/index.astro +2 -2
  205. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/graphql/[filename].astro +1 -1
  206. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/index.astro +2 -2
  207. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/resources/index.astro +1 -1
  208. package/eventcatalog/src/pages/docs/[type]/[id]/language/[dictionaryId]/index.astro +1 -1
  209. package/eventcatalog/src/pages/docs/[type]/[id]/language/index.astro +1 -1
  210. package/eventcatalog/src/pages/docs/teams/[id]/index.astro +2 -2
  211. package/eventcatalog/src/pages/docs/users/[id]/index.astro +2 -2
  212. package/eventcatalog/src/pages/index.astro +2 -3
  213. package/eventcatalog/src/styles/tailwind.css +3 -0
  214. package/eventcatalog/src/utils/eventcatalog-config/source.ts +9 -0
  215. package/eventcatalog/src/utils/feature.ts +2 -1
  216. package/eventcatalog/tsconfig.json +1 -4
  217. package/package.json +17 -4
  218. package/dist/catalog-to-astro-content-directory.cjs +0 -382
  219. package/dist/catalog-to-astro-content-directory.d.cts +0 -3
  220. package/dist/catalog-to-astro-content-directory.d.ts +0 -3
  221. package/dist/catalog-to-astro-content-directory.js +0 -9
  222. package/dist/chunk-BWN544LB.js +0 -73
  223. package/dist/chunk-DHH5U5PF.js +0 -53
  224. package/dist/chunk-KLOHNCNF.js +0 -101
  225. package/dist/chunk-T4RVWPIQ.js +0 -85
  226. package/dist/chunk-T5IUG523.js +0 -54
  227. package/dist/chunk-W5JQON7Z.js +0 -117
  228. package/dist/copy-core.cjs +0 -88
  229. package/dist/copy-core.d.cts +0 -4
  230. package/dist/copy-core.d.ts +0 -4
  231. package/dist/copy-core.js +0 -8
  232. package/dist/core-node-modules.cjs +0 -108
  233. package/dist/core-node-modules.d.cts +0 -7
  234. package/dist/core-node-modules.d.ts +0 -7
  235. package/dist/core-node-modules.js +0 -8
  236. package/dist/custom-components.cjs +0 -89
  237. package/dist/custom-components.d.cts +0 -4
  238. package/dist/custom-components.d.ts +0 -4
  239. package/dist/custom-components.js +0 -8
  240. package/dist/map-catalog-to-astro.cjs +0 -151
  241. package/dist/map-catalog-to-astro.d.cts +0 -28
  242. package/dist/map-catalog-to-astro.d.ts +0 -28
  243. package/dist/map-catalog-to-astro.js +0 -6
@@ -6,10 +6,11 @@
6
6
  import type { APIRoute } from 'astro';
7
7
  import { Hono } from 'hono';
8
8
  import { getFieldsDatabase } from '@enterprise/fields/fields-db';
9
- import path from 'node:path';
9
+ import { getRuntimePaths } from '../../../../../integrations/runtime-paths.mjs';
10
10
 
11
- const catalogDirectory = process.env.CATALOG_DIR || process.cwd();
12
- const dbPath = path.join(catalogDirectory, '.eventcatalog', 'fields.db');
11
+ // The CLI builds the index at this same path. Shipping it with dist-only SSR
12
+ // deployments is a separate artifact-lifecycle issue, not solved by a fallback.
13
+ const { fieldsDatabasePath: dbPath } = getRuntimePaths(process.env.PROJECT_DIR || process.cwd(), process.env.CATALOG_DIR);
13
14
 
14
15
  const app = new Hono().basePath('/api/schemas/fields');
15
16
 
@@ -6,7 +6,10 @@
6
6
  import type { AstroIntegration } from 'astro';
7
7
  import fs from 'node:fs';
8
8
  import path from 'path';
9
- import config from '../../../eventcatalog.config.js';
9
+ import { fileURLToPath } from 'node:url';
10
+ import { getRuntimePaths } from '../../../integrations/runtime-paths.mjs';
11
+ // This integration runs during Astro config evaluation, before @config exists.
12
+ import config from '../../utils/eventcatalog-config/source';
10
13
  import {
11
14
  isEventCatalogChatEnabled,
12
15
  isAuthEnabled,
@@ -20,22 +23,17 @@ import {
20
23
  isCustomPagesEnabled,
21
24
  isSSR,
22
25
  } from '../../utils/feature';
23
- import {
24
- CUSTOM_PAGES_MANIFEST_FILENAME,
25
- getCustomPageRoutes,
26
- isApiRoute,
27
- listCustomPageFiles,
28
- resolveCustomPagesPrefix,
29
- } from '../custom-pages/routes';
26
+ import { getCustomPageRoutes, isApiRoute, listCustomPageFiles, resolveCustomPagesPrefix } from '../custom-pages/routes';
30
27
 
31
- const catalogDirectory = process.env.CATALOG_DIR || process.cwd();
32
- const customPagesDirectory = path.join(catalogDirectory, 'src/custom-pages');
28
+ const { runtimeDirectory: catalogDirectory } = getRuntimePaths(process.env.PROJECT_DIR || process.cwd(), process.env.CATALOG_DIR);
29
+ const packageDirectory = fileURLToPath(new URL('../../../', import.meta.url));
30
+ const customPagesDirectory = path.join(process.env.PROJECT_DIR || process.cwd(), 'pages');
33
31
 
34
32
  // Routes are injected at astro:config:setup, so adding or removing a custom page
35
33
  // file needs a full Astro restart before its route exists. This manifest is
36
34
  // registered via addWatchFile — rewriting it with a changed file list triggers
37
35
  // that restart (a Vite-level server.restart() does NOT re-run route injection).
38
- const customPagesManifest = path.join(customPagesDirectory, CUSTOM_PAGES_MANIFEST_FILENAME);
36
+ const customPagesManifest = path.join(catalogDirectory, 'custom-pages.json');
39
37
 
40
38
  const writeCustomPagesManifest = () => {
41
39
  const content = JSON.stringify(listCustomPageFiles(customPagesDirectory));
@@ -45,7 +43,7 @@ const writeCustomPagesManifest = () => {
45
43
  return;
46
44
  }
47
45
 
48
- fs.mkdirSync(customPagesDirectory, { recursive: true });
46
+ fs.mkdirSync(catalogDirectory, { recursive: true });
49
47
  fs.writeFileSync(customPagesManifest, content);
50
48
  } catch (error: any) {
51
49
  console.warn(`[EventCatalog] Could not update the custom pages manifest: ${error.message}`);
@@ -85,25 +83,25 @@ const configureAuthentication = (params: {
85
83
  }) => {
86
84
  params.injectRoute({
87
85
  pattern: '/api/[...auth]',
88
- entrypoint: path.join(catalogDirectory, 'src/enterprise/auth/[...auth].ts'),
86
+ entrypoint: path.join(packageDirectory, 'src/enterprise/auth/[...auth].ts'),
89
87
  });
90
88
  params.injectRoute({
91
89
  pattern: '/auth/login',
92
- entrypoint: path.join(catalogDirectory, 'src/enterprise/auth/login.astro'),
90
+ entrypoint: path.join(packageDirectory, 'src/enterprise/auth/login.astro'),
93
91
  });
94
92
  params.injectRoute({
95
93
  pattern: '/auth/error',
96
- entrypoint: path.join(catalogDirectory, 'src/enterprise/auth/error.astro'),
94
+ entrypoint: path.join(packageDirectory, 'src/enterprise/auth/error.astro'),
97
95
  });
98
96
 
99
97
  params.injectRoute({
100
98
  pattern: '/unauthorized',
101
- entrypoint: path.join(catalogDirectory, 'src/enterprise/auth/unauthorized.astro'),
99
+ entrypoint: path.join(packageDirectory, 'src/enterprise/auth/unauthorized.astro'),
102
100
  });
103
101
 
104
102
  // Add the authentication middleware
105
103
  params.addMiddleware({
106
- entrypoint: path.join(catalogDirectory, 'src/enterprise/auth/middleware/middleware.ts'),
104
+ entrypoint: path.join(packageDirectory, 'src/enterprise/auth/middleware/middleware.ts'),
107
105
  order: 'pre',
108
106
  });
109
107
  };
@@ -117,7 +115,7 @@ export default function eventCatalogIntegration(): AstroIntegration {
117
115
  if (isEventCatalogChatEnabled()) {
118
116
  params.injectRoute({
119
117
  pattern: '/api/chat',
120
- entrypoint: path.join(catalogDirectory, 'src/enterprise/ai/chat-api.ts'),
118
+ entrypoint: path.join(packageDirectory, 'src/enterprise/ai/chat-api.ts'),
121
119
  });
122
120
  }
123
121
 
@@ -125,18 +123,18 @@ export default function eventCatalogIntegration(): AstroIntegration {
125
123
  if (isEventCatalogMCPEnabled()) {
126
124
  params.injectRoute({
127
125
  pattern: '/docs/mcp/[...path]',
128
- entrypoint: path.join(catalogDirectory, 'src/enterprise/mcp/mcp-server.ts'),
126
+ entrypoint: path.join(packageDirectory, 'src/enterprise/mcp/mcp-server.ts'),
129
127
  });
130
128
  }
131
129
 
132
130
  if (isEventCatalogMCPAuthEnabled()) {
133
131
  params.injectRoute({
134
132
  pattern: '/.well-known/oauth-protected-resource',
135
- entrypoint: path.join(catalogDirectory, 'src/enterprise/mcp/oauth-protected-resource.ts'),
133
+ entrypoint: path.join(packageDirectory, 'src/enterprise/mcp/oauth-protected-resource.ts'),
136
134
  });
137
135
  params.injectRoute({
138
136
  pattern: '/.well-known/oauth-protected-resource/[...path]',
139
- entrypoint: path.join(catalogDirectory, 'src/enterprise/mcp/oauth-protected-resource.ts'),
137
+ entrypoint: path.join(packageDirectory, 'src/enterprise/mcp/oauth-protected-resource.ts'),
140
138
  });
141
139
  }
142
140
 
@@ -149,24 +147,24 @@ export default function eventCatalogIntegration(): AstroIntegration {
149
147
  if (isCustomDocsEnabled()) {
150
148
  params.injectRoute({
151
149
  pattern: '/docs/custom',
152
- entrypoint: path.join(catalogDirectory, 'src/enterprise/custom-documentation/pages/docs/custom/root-index.astro'),
150
+ entrypoint: path.join(packageDirectory, 'src/enterprise/custom-documentation/pages/docs/custom/root-index.astro'),
153
151
  });
154
152
  params.injectRoute({
155
153
  pattern: '/docs/custom/[...path]',
156
154
  entrypoint: path.join(
157
- catalogDirectory,
155
+ packageDirectory,
158
156
  'src/enterprise/custom-documentation/pages/docs/custom/[...path]/index.astro'
159
157
  ),
160
158
  });
161
159
  params.injectRoute({
162
160
  pattern: '/docs/custom/[...path].mdx',
163
- entrypoint: path.join(catalogDirectory, 'src/enterprise/custom-documentation/pages/docs/custom/[...path].mdx.ts'),
161
+ entrypoint: path.join(packageDirectory, 'src/enterprise/custom-documentation/pages/docs/custom/[...path].mdx.ts'),
164
162
  });
165
163
  } else {
166
164
  // Show feature page for non-paying users
167
165
  params.injectRoute({
168
166
  pattern: '/docs/custom',
169
- entrypoint: path.join(catalogDirectory, 'src/enterprise/custom-documentation/pages/docs/custom/feature.astro'),
167
+ entrypoint: path.join(packageDirectory, 'src/enterprise/custom-documentation/pages/docs/custom/feature.astro'),
170
168
  });
171
169
  }
172
170
 
@@ -174,12 +172,12 @@ export default function eventCatalogIntegration(): AstroIntegration {
174
172
  if (isEventCatalogScaleEnabled()) {
175
173
  params.injectRoute({
176
174
  pattern: '/api/schemas/[collection]/[id]/[version]',
177
- entrypoint: path.join(catalogDirectory, 'src/enterprise/api/schemas/[collection]/[id]/[version]/index.ts'),
175
+ entrypoint: path.join(packageDirectory, 'src/enterprise/api/schemas/[collection]/[id]/[version]/index.ts'),
178
176
  });
179
177
  params.injectRoute({
180
178
  pattern: '/api/schemas/services/[id]/[version]/[specification]',
181
179
  entrypoint: path.join(
182
- catalogDirectory,
180
+ packageDirectory,
183
181
  'src/enterprise/api/schemas/services/[id]/[version]/[specification]/index.ts'
184
182
  ),
185
183
  });
@@ -189,7 +187,7 @@ export default function eventCatalogIntegration(): AstroIntegration {
189
187
  if (isFullCatalogAPIEnabled()) {
190
188
  params.injectRoute({
191
189
  pattern: '/api/catalog',
192
- entrypoint: path.join(catalogDirectory, 'src/enterprise/api/catalog.ts'),
190
+ entrypoint: path.join(packageDirectory, 'src/enterprise/api/catalog.ts'),
193
191
  });
194
192
  }
195
193
 
@@ -197,11 +195,11 @@ export default function eventCatalogIntegration(): AstroIntegration {
197
195
  if (isSSR()) {
198
196
  params.injectRoute({
199
197
  pattern: '/schemas/fields',
200
- entrypoint: path.join(catalogDirectory, 'src/enterprise/fields/pages/fields.astro'),
198
+ entrypoint: path.join(packageDirectory, 'src/enterprise/fields/pages/fields.astro'),
201
199
  });
202
200
  params.injectRoute({
203
201
  pattern: '/api/schemas/fields',
204
- entrypoint: path.join(catalogDirectory, 'src/enterprise/fields/pages/api/fields.ts'),
202
+ entrypoint: path.join(packageDirectory, 'src/enterprise/fields/pages/api/fields.ts'),
205
203
  });
206
204
  }
207
205
 
@@ -226,11 +224,11 @@ export default function eventCatalogIntegration(): AstroIntegration {
226
224
  if (isDevMode()) {
227
225
  params.injectRoute({
228
226
  pattern: '/api/dev/visualizer-layout/save',
229
- entrypoint: path.join(catalogDirectory, 'src/enterprise/visualizer-layout/save.ts'),
227
+ entrypoint: path.join(packageDirectory, 'src/enterprise/visualizer-layout/save.ts'),
230
228
  });
231
229
  params.injectRoute({
232
230
  pattern: '/api/dev/visualizer-layout/reset',
233
- entrypoint: path.join(catalogDirectory, 'src/enterprise/visualizer-layout/reset.ts'),
231
+ entrypoint: path.join(packageDirectory, 'src/enterprise/visualizer-layout/reset.ts'),
234
232
  });
235
233
  }
236
234
  },
@@ -247,6 +245,8 @@ export default function eventCatalogIntegration(): AstroIntegration {
247
245
 
248
246
  server.watcher.on('add', onCustomPageChange);
249
247
  server.watcher.on('unlink', onCustomPageChange);
248
+ server.watcher.add(customPagesDirectory);
249
+ server.watcher.add(customPagesManifest);
250
250
  },
251
251
  },
252
252
  };
@@ -5,7 +5,7 @@
5
5
 
6
6
  import jwt, { type Algorithm, type JwtPayload } from 'jsonwebtoken';
7
7
  import { createPublicKey, type JsonWebKey, type KeyObject } from 'node:crypto';
8
- import config from '../../../eventcatalog.config.js';
8
+ import config from '@config';
9
9
  import type { Config } from '../../../../src/eventcatalog.config';
10
10
 
11
11
  type ConfiguredMcpAuth = NonNullable<NonNullable<Config['mcp']>['auth']>;
@@ -1,10 +1,16 @@
1
- /// <reference path="../.astro/types.d.ts" />
2
1
  /// <reference types="astro/client" />
3
2
 
4
3
  declare const __EC_TRAILING_SLASH__: boolean;
5
4
  declare const __EC_BASE__: string;
6
5
  declare const __EC_SEARCH_TYPE__: 'resource' | 'indexed';
7
6
 
7
+ declare module '@catalog/styles';
8
+
9
+ declare module 'virtual:eventcatalog/homepage' {
10
+ const homepage: any;
11
+ export default homepage;
12
+ }
13
+
8
14
  declare module 'virtual:likec4-projects' {
9
15
  export const projectRegistry: Record<string, () => Promise<{ LikeC4View: import('react').ComponentType<any> }>>;
10
16
  export const discoveredProjects: string[];
@@ -86,7 +86,7 @@ let dataProducts: any[] = [];
86
86
  // Try and load any custom styles if they exist
87
87
  if (isCustomStylesEnabled()) {
88
88
  try {
89
- await import('../../eventcatalog.styles.css');
89
+ await import('@catalog/styles');
90
90
  } catch (error) {}
91
91
  }
92
92
 
@@ -497,13 +497,25 @@ const verticalNavAutoCollapsePaths = [buildUrl('/discover', true), buildUrl('/do
497
497
  }
498
498
 
499
499
  .app-content-wrapper {
500
- --ec-app-content-padding-left: 5rem;
501
- --ec-app-content-padding-right: 5rem;
500
+ --ec-app-content-padding-left: 1.5rem;
501
+ --ec-app-content-padding-right: 1.5rem;
502
502
  margin-left: auto;
503
503
  margin-right: auto;
504
504
  padding-left: var(--ec-app-content-padding-left);
505
505
  padding-right: var(--ec-app-content-padding-right);
506
506
  }
507
+ @media (min-width: 768px) {
508
+ .app-content-wrapper {
509
+ --ec-app-content-padding-left: 2.5rem;
510
+ --ec-app-content-padding-right: 2.5rem;
511
+ }
512
+ }
513
+ @media (min-width: 1280px) {
514
+ .app-content-wrapper {
515
+ --ec-app-content-padding-left: 3.5rem;
516
+ --ec-app-content-padding-right: 2rem;
517
+ }
518
+ }
507
519
  .app-content-wrapper--reduced-padding {
508
520
  --ec-app-content-padding-left: 2rem;
509
521
  --ec-app-content-padding-right: 2rem;
@@ -24,7 +24,7 @@ const specifications = type === 'services' ? getSpecificationsForService(props)
24
24
  <VerticalSideBarLayout title={pageTitle}>
25
25
  <main class="flex docs-layout min-h-full bg-[rgb(var(--ec-page-bg))]">
26
26
  <div class="flex docs-layout w-full">
27
- <div class="w-full min-w-0 lg:mr-2 pr-24 py-8 bg-[rgb(var(--ec-page-bg))]">
27
+ <div class="w-full min-w-0 lg:mr-2 xl:pr-12 py-8 bg-[rgb(var(--ec-page-bg))]">
28
28
  {type === 'domains' && <DomainGrid domain={domain} client:load />}
29
29
  {type === 'systems' && <SystemGrid system={props} client:load />}
30
30
  {
@@ -32,7 +32,7 @@ const chatQuery = `Tell me about the "${props.data.name}" diagram (version ${pro
32
32
  class="flex docs-layout w-full"
33
33
  style="padding-left: var(--ec-app-content-padding-left, 5rem); padding-right: var(--ec-app-content-padding-right, 5rem);"
34
34
  >
35
- <main class="diagram-content w-full lg:mr-2 pr-24 py-8 bg-[rgb(var(--ec-page-bg))]">
35
+ <main class="diagram-content w-full lg:mr-2 xl:pr-12 py-8 bg-[rgb(var(--ec-page-bg))]">
36
36
  <div class="border-b border-[rgb(var(--ec-page-border))] md:pb-2">
37
37
  <div class="flex items-start gap-4">
38
38
  <div class="min-w-0">
@@ -73,7 +73,7 @@ const chatQuery = `Tell me about the "${props.data.name}" diagram (version ${pro
73
73
  headings.length > 0 && (
74
74
  <aside
75
75
  id="eventcatalog-docs-sidebar"
76
- class="hidden xl:block sticky top-[4rem] self-start w-[280px] max-h-[calc(100vh-4rem)] overflow-y-auto py-2 flex-shrink-0 pr-10 bg-[rgb(var(--ec-page-bg))]"
76
+ class="hidden xl:block sticky top-[4rem] self-start w-[280px] max-h-[calc(100vh-4rem)] overflow-y-auto py-2 flex-shrink-0 pr-4 bg-[rgb(var(--ec-page-bg))]"
77
77
  >
78
78
  <div class="mt-8 space-y-8">
79
79
  <div>
@@ -52,7 +52,7 @@ const pagefindAttributes =
52
52
  <VerticalSideBarLayout title={pageTitle} description={props.data.summary}>
53
53
  <main class="flex docs-layout min-h-full bg-[rgb(var(--ec-page-bg))]" {...pagefindAttributes}>
54
54
  <div class="flex docs-layout w-full">
55
- <div class="w-full min-w-0 lg:mr-2 pr-24 py-8 bg-[rgb(var(--ec-page-bg))]">
55
+ <div class="w-full min-w-0 lg:mr-2 xl:pr-12 py-8 bg-[rgb(var(--ec-page-bg))]">
56
56
  {/* Header mirrors the latest-doc page ([docId]/index.astro) and the resource page. */}
57
57
  <div class="border-b border-[rgb(var(--ec-page-border))] md:pb-3 pt-4">
58
58
  <div class="flex flex-col gap-4">
@@ -108,7 +108,7 @@ const pagefindAttributes =
108
108
  </div>
109
109
  </div>
110
110
  <aside
111
- class="hidden xl:block sticky top-[4rem] self-start w-[280px] max-h-[calc(100vh-4rem)] overflow-y-auto py-2 flex-shrink-0 pr-10 bg-[rgb(var(--ec-page-bg))]"
111
+ class="hidden xl:block sticky top-[4rem] self-start w-[280px] max-h-[calc(100vh-4rem)] overflow-y-auto py-2 flex-shrink-0 pr-4 bg-[rgb(var(--ec-page-bg))]"
112
112
  >
113
113
  <div class="mt-8 space-y-8">
114
114
  <h3 class="text-xs text-[rgb(var(--ec-page-text))] font-semibold capitalize flex items-center gap-2 mb-4">
@@ -53,7 +53,7 @@ const pagefindAttributes =
53
53
  <VerticalSideBarLayout title={pageTitle} description={props.data.summary}>
54
54
  <main class="flex docs-layout min-h-full bg-[rgb(var(--ec-page-bg))]" {...pagefindAttributes}>
55
55
  <div class="flex docs-layout w-full">
56
- <div class="w-full min-w-0 lg:mr-2 pr-24 py-8 bg-[rgb(var(--ec-page-bg))]">
56
+ <div class="w-full min-w-0 lg:mr-2 xl:pr-12 py-8 bg-[rgb(var(--ec-page-bg))]">
57
57
  {/* Header mirrors the resource page (docs/[type]/[id]/[version]/index.astro) so docs feel like part of the resource. */}
58
58
  <div class="border-b border-[rgb(var(--ec-page-border))] md:pb-3 pt-4">
59
59
  <div class="flex flex-col gap-4">
@@ -107,7 +107,7 @@ const pagefindAttributes =
107
107
  </div>
108
108
  </div>
109
109
  <aside
110
- class="hidden xl:block sticky top-[4rem] self-start w-[280px] max-h-[calc(100vh-4rem)] overflow-y-auto py-2 flex-shrink-0 pr-10 bg-[rgb(var(--ec-page-bg))]"
110
+ class="hidden xl:block sticky top-[4rem] self-start w-[280px] max-h-[calc(100vh-4rem)] overflow-y-auto py-2 flex-shrink-0 pr-4 bg-[rgb(var(--ec-page-bg))]"
111
111
  >
112
112
  <div class="mt-8 space-y-8">
113
113
  <h3 class="text-xs text-[rgb(var(--ec-page-text))] font-semibold capitalize flex items-center gap-2 mb-4">
@@ -66,7 +66,7 @@ const pagefindAttributes =
66
66
  <VerticalSideBarLayout title={pageTitle} description={`GraphQL schema for ${data.name}`}>
67
67
  <main class="flex docs-layout min-h-full bg-[rgb(var(--ec-page-bg))]" {...pagefindAttributes}>
68
68
  <div class="flex docs-layout w-full">
69
- <div class="w-full min-w-0 lg:mr-2 pr-24 py-8 bg-[rgb(var(--ec-page-bg))]">
69
+ <div class="w-full min-w-0 lg:mr-2 xl:pr-12 py-8 bg-[rgb(var(--ec-page-bg))]">
70
70
  <div class="border-b border-[rgb(var(--ec-page-border))] md:pb-2">
71
71
  <div>
72
72
  <div class="flex justify-between items-start">
@@ -424,7 +424,7 @@ if (!isAdrPage && !hasCurrentFlowEmbed && !hasCurrentPageNodeGraph) {
424
424
  <VerticalSideBarLayout title={pageTitle} description={props.data.summary}>
425
425
  <main class="flex docs-layout min-h-full bg-[rgb(var(--ec-page-bg))]" {...pagefindAttributes}>
426
426
  <div class="flex docs-layout w-full">
427
- <div class="w-full min-w-0 lg:mr-2 pr-24 py-8 bg-[rgb(var(--ec-page-bg))]">
427
+ <div class="w-full min-w-0 lg:mr-2 xl:pr-12 py-8 bg-[rgb(var(--ec-page-bg))]">
428
428
  <div class="border-b border-[rgb(var(--ec-page-border))] md:pb-3 pt-4">
429
429
  <div>
430
430
  <div>
@@ -715,7 +715,7 @@ if (!isAdrPage && !hasCurrentFlowEmbed && !hasCurrentPageNodeGraph) {
715
715
  </div>
716
716
  <aside
717
717
  id="eventcatalog-docs-sidebar"
718
- class="hidden xl:block sticky top-[4rem] self-start w-[280px] max-h-[calc(100vh-4rem)] overflow-y-auto py-2 flex-shrink-0 pr-10 bg-[rgb(var(--ec-page-bg))]"
718
+ class="hidden xl:block sticky top-[4rem] self-start w-[280px] max-h-[calc(100vh-4rem)] overflow-y-auto py-2 flex-shrink-0 pr-4 bg-[rgb(var(--ec-page-bg))]"
719
719
  >
720
720
  <div class="mt-8 space-y-8">
721
721
  {
@@ -47,7 +47,7 @@ const resources: SystemResourceItem[] = resourceGroups.flatMap(({ collection, it
47
47
  <VerticalSideBarLayout title={`${data.name} | Resources`}>
48
48
  <main class="flex docs-layout min-h-full bg-[rgb(var(--ec-page-bg))]">
49
49
  <div class="flex docs-layout w-full">
50
- <div class="w-full min-w-0 lg:mr-2 pr-24 py-8 bg-[rgb(var(--ec-page-bg))]">
50
+ <div class="w-full min-w-0 lg:mr-2 xl:pr-12 py-8 bg-[rgb(var(--ec-page-bg))]">
51
51
  {/* Header mirrors the resource page (docs/[type]/[id]/[version]/index.astro). */}
52
52
  <div class="border-b border-[rgb(var(--ec-page-border))] md:pb-3 pt-4">
53
53
  <div class="flex flex-col gap-4">
@@ -55,7 +55,7 @@ const badges = [
55
55
  data-pagefind-meta={`title:${pageTitle}`}
56
56
  >
57
57
  <div class="flex docs-layout w-full">
58
- <div class="w-full min-w-0 lg:mr-2 pr-24 py-8 min-h-[50em]">
58
+ <div class="w-full min-w-0 lg:mr-2 xl:pr-12 py-8 min-h-[50em]">
59
59
  {/* Header mirrors the resource page (docs/[type]/[id]/[version]/index.astro). */}
60
60
  <div class="border-b border-[rgb(var(--ec-page-border))] md:pb-3 pt-4">
61
61
  <div class="flex flex-col gap-4">
@@ -33,7 +33,7 @@ const ownerTypeLabel = props.collection === 'domains' ? 'Domain' : 'System';
33
33
  data-pagefind-meta={`title:${pageTitle}`}
34
34
  >
35
35
  <div class="flex docs-layout w-full">
36
- <div class="w-full min-w-0 lg:mr-2 pr-24 py-8 min-h-[50em]">
36
+ <div class="w-full min-w-0 lg:mr-2 xl:pr-12 py-8 min-h-[50em]">
37
37
  {/* Header mirrors the resource page (docs/[type]/[id]/[version]/index.astro). */}
38
38
  <div class="border-b border-[rgb(var(--ec-page-border))] md:pb-3 pt-4">
39
39
  <div class="flex flex-col gap-4">
@@ -103,7 +103,7 @@ const sourceTitle = sourceLabel ? `Synced from ${sourceLabel}` : undefined;
103
103
  data-pagefind-meta={`title:${pageTitle}`}
104
104
  >
105
105
  <div class="flex docs-layout w-full">
106
- <div class="w-full min-w-0 lg:mr-2 pr-24 py-8 bg-[rgb(var(--ec-page-bg))]">
106
+ <div class="w-full min-w-0 lg:mr-2 xl:pr-12 py-8 bg-[rgb(var(--ec-page-bg))]">
107
107
  <div class="border-b border-[rgb(var(--ec-page-border))] pb-6">
108
108
  <div class="flex justify-start">
109
109
  <div class="flex flex-col justify-between space-y-3">
@@ -219,7 +219,7 @@ const sourceTitle = sourceLabel ? `Synced from ${sourceLabel}` : undefined;
219
219
  </div>
220
220
  </div>
221
221
  <aside
222
- class="hidden xl:block sticky top-[5.5rem] self-start w-[280px] max-h-[calc(100vh-5.5rem)] overflow-y-auto py-2 flex-shrink-0 pr-10 bg-[rgb(var(--ec-page-bg))]"
222
+ class="hidden xl:block sticky top-[5.5rem] self-start w-[280px] max-h-[calc(100vh-5.5rem)] overflow-y-auto py-2 flex-shrink-0 pr-4 bg-[rgb(var(--ec-page-bg))]"
223
223
  data-pagefind-ignore
224
224
  >
225
225
  <div class="py-2">
@@ -100,7 +100,7 @@ const sourceTitle = sourceLabel ? `Synced from ${sourceLabel}` : undefined;
100
100
  data-pagefind-meta={`title:${pageTitle}`}
101
101
  >
102
102
  <div class="flex docs-layout w-full">
103
- <div class="w-full min-w-0 lg:mr-2 pr-24 py-8 bg-[rgb(var(--ec-page-bg))]">
103
+ <div class="w-full min-w-0 lg:mr-2 xl:pr-12 py-8 bg-[rgb(var(--ec-page-bg))]">
104
104
  <div class="border-b border-[rgb(var(--ec-page-border))] pb-6">
105
105
  <div class="flex justify-start gap-6">
106
106
  {
@@ -225,7 +225,7 @@ const sourceTitle = sourceLabel ? `Synced from ${sourceLabel}` : undefined;
225
225
  </div>
226
226
  </div>
227
227
  <aside
228
- class="hidden xl:block sticky top-[5.5rem] self-start w-[280px] max-h-[calc(100vh-5.5rem)] overflow-y-auto py-2 flex-shrink-0 pr-10 bg-[rgb(var(--ec-page-bg))]"
228
+ class="hidden xl:block sticky top-[5.5rem] self-start w-[280px] max-h-[calc(100vh-5.5rem)] overflow-y-auto py-2 flex-shrink-0 pr-4 bg-[rgb(var(--ec-page-bg))]"
229
229
  data-pagefind-ignore
230
230
  >
231
231
  <div class="py-2">
@@ -5,6 +5,7 @@ import { resourceToCollectionMap } from '@utils/collections/util';
5
5
  import { buildUrl } from '@utils/url-builder';
6
6
  import { isCustomLandingPageEnabled, isVisualiserEnabled, isArchitectureGraphEnabled } from '@utils/feature';
7
7
  import DefaultAstroLandingPage from './_index.astro';
8
+ import CustomHomepage from 'virtual:eventcatalog/homepage';
8
9
  import config from '@config';
9
10
 
10
11
  let nodeGraphs: any[] = [];
@@ -23,9 +24,7 @@ const props = Astro.props;
23
24
  const pathToUserDefinedLandingPage = path.join(process.env.PROJECT_DIR || '', 'pages/homepage.astro');
24
25
 
25
26
  if (existsSync(pathToUserDefinedLandingPage) && isCustomLandingPageEnabled()) {
26
- const customPages = import.meta.glob('/src/custom-pages/homepage.astro', { eager: true });
27
- // @ts-ignore
28
- CustomContent = Object.values(customPages)[0]?.default || null;
27
+ CustomContent = CustomHomepage;
29
28
 
30
29
  const [{ default: pageComponents }, { default: mdxComponents }] = await Promise.all([
31
30
  import('@components/MDX/page-components'),
@@ -1,5 +1,8 @@
1
1
  @import 'tailwindcss';
2
2
 
3
+ /* Core templates live in the installed package, which automatic scanning skips. */
4
+ @source '../';
5
+
3
6
  @plugin "@tailwindcss/typography";
4
7
 
5
8
  /*
@@ -0,0 +1,9 @@
1
+ import { getEventCatalogConfigFile } from '../../../integrations/config-loader.mjs';
2
+ import type { Config } from '../../../../src/eventcatalog.config';
3
+
4
+ // Astro evaluates its config before Vite aliases exist. During application
5
+ // compilation the runtime integration replaces this module with a static
6
+ // re-export so production output includes the user's configuration.
7
+ const config: Config = await getEventCatalogConfigFile(process.env.PROJECT_DIR || process.cwd());
8
+
9
+ export default config;
@@ -1,4 +1,5 @@
1
- import config from '../../eventcatalog.config.js';
1
+ // Feature checks also run during Astro config evaluation, before @config exists.
2
+ import config from './eventcatalog-config/source';
2
3
 
3
4
  // Open-source feature flags
4
5
  export const isEventCatalogChatVisible = () => config?.chat?.enabled ?? true;
@@ -4,20 +4,17 @@
4
4
  "strict": true,
5
5
  "baseUrl": ".",
6
6
  "paths": {
7
- "@config": ["./eventcatalog.config.js"],
7
+ "@config": ["src/utils/eventcatalog-config/source.ts"],
8
8
  "@eventcatalog": ["src/utils/eventcatalog-config/catalog.ts"],
9
9
  "@icons/*": ["src/icons/*"],
10
10
  "@components/*": ["src/components/*"],
11
- "@catalog/components/*": ["src/custom-defined-components/*"],
12
11
  "@catalog/layouts/*": ["src/toolkit/layouts/*"],
13
12
  "@catalog/utils": ["src/toolkit/utils/index.ts"],
14
13
  "@catalog/utils/*": ["src/toolkit/utils/*"],
15
- "@catalog/snippets/*": ["src/snippets/*"],
16
14
  "@types": ["src/types/index.ts"],
17
15
  "@utils/*": ["src/utils/*"],
18
16
  "@layouts/*": ["src/layouts/*"],
19
17
  "@enterprise/*": ["src/enterprise/*"],
20
- "@ai/*": ["src/generated-ai/*"],
21
18
  "auth:config": ["./auth.config.ts"],
22
19
  "@stores/*": ["src/stores/*"]
23
20
  },
package/package.json CHANGED
@@ -7,7 +7,7 @@
7
7
  },
8
8
  "license": "SEE LICENSE IN LICENSE",
9
9
  "type": "module",
10
- "version": "4.11.2",
10
+ "version": "4.12.0-beta.1",
11
11
  "publishConfig": {
12
12
  "access": "public"
13
13
  },
@@ -28,6 +28,19 @@
28
28
  "!eventcatalog/node_modules/",
29
29
  "!eventcatalog/**/__tests__/",
30
30
  "!eventcatalog/**/*.{spec,test}.{js,jsx,cjs,mjs,ts,tsx,cts,mts}",
31
+ "!eventcatalog/.env*",
32
+ "!eventcatalog/.eventcatalog/",
33
+ "!eventcatalog/.eventcatalog-core/",
34
+ "!eventcatalog/eventcatalog.config.js",
35
+ "!eventcatalog/eventcatalog.styles.css",
36
+ "!eventcatalog/public/generated/",
37
+ "!eventcatalog/public/pagefind/",
38
+ "!eventcatalog/src/content/",
39
+ "!eventcatalog/src/catalog-files/",
40
+ "!eventcatalog/src/custom-defined-components/",
41
+ "!eventcatalog/src/custom-pages/",
42
+ "!eventcatalog/src/snippets/",
43
+ "!eventcatalog/src/generated-ai/",
31
44
  "bin/",
32
45
  "dist/"
33
46
  ],
@@ -121,8 +134,8 @@
121
134
  "uuid": "^11.1.1",
122
135
  "zod": "^4.3.6",
123
136
  "@eventcatalog/linter": "1.1.20",
124
- "@eventcatalog/sdk": "2.29.1",
125
- "@eventcatalog/visualiser": "^4.1.4"
137
+ "@eventcatalog/visualiser": "^4.1.4",
138
+ "@eventcatalog/sdk": "2.29.1"
126
139
  },
127
140
  "devDependencies": {
128
141
  "@astrojs/check": "^0.9.10",
@@ -155,7 +168,7 @@
155
168
  },
156
169
  "scripts": {
157
170
  "dev": "astro dev",
158
- "build:bin": "tsup && node scripts/copy-docs-to-dist.mjs",
171
+ "build:bin": "tsup && node scripts/build-runtime-dependencies.mjs && node scripts/copy-docs-to-dist.mjs",
159
172
  "test": "cross-env DISABLE_EVENTCATALOG_CACHE=true vitest",
160
173
  "test:ci": "node scripts/ci/test.js",
161
174
  "start": "astro dev",