@eventcatalog/core 5.0.0-beta.8 → 5.0.0

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 (467) hide show
  1. package/LICENSE +234 -134
  2. package/README.md +5 -5
  3. package/dist/analytics/analytics.cjs +18 -3
  4. package/dist/analytics/analytics.d.cts +1 -1
  5. package/dist/analytics/analytics.d.ts +1 -1
  6. package/dist/analytics/analytics.js +3 -2
  7. package/dist/analytics/log-build.cjs +157 -76
  8. package/dist/analytics/log-build.d.cts +2 -2
  9. package/dist/analytics/log-build.d.ts +2 -2
  10. package/dist/analytics/log-build.js +7 -5
  11. package/dist/analytics/studio-usage.cjs +90 -0
  12. package/dist/analytics/studio-usage.d.cts +5 -0
  13. package/dist/analytics/studio-usage.d.ts +5 -0
  14. package/dist/analytics/studio-usage.js +10 -0
  15. package/dist/analytics/telemetry.cjs +42 -0
  16. package/dist/analytics/telemetry.d.cts +20 -0
  17. package/dist/analytics/telemetry.d.ts +20 -0
  18. package/dist/analytics/telemetry.js +8 -0
  19. package/dist/catalog-runtime.cjs +1 -1
  20. package/dist/{chunk-RFIXKATC.js → chunk-4G7FSRPN.js} +35 -42
  21. package/dist/{chunk-AWOO63ME.js → chunk-AD7CL772.js} +11 -4
  22. package/dist/chunk-CA6WCQ2T.js +54 -0
  23. package/dist/chunk-CPW6G62V.js +17 -0
  24. package/dist/{chunk-PU25TOOJ.js → chunk-JZN4RSMF.js} +1 -1
  25. package/dist/{chunk-4W55ZOOS.js → chunk-NEAVAFSJ.js} +66 -35
  26. package/dist/{chunk-C6T2AAFR.js → chunk-NIVST4WY.js} +9 -3
  27. package/dist/{chunk-ENAG6UH7.js → chunk-NKNOXQ62.js} +1 -6
  28. package/dist/{chunk-AYNZXUB5.js → chunk-OX6TSVHY.js} +5 -5
  29. package/dist/{chunk-36RYTYT5.js → chunk-PD7KTSYN.js} +1 -1
  30. package/dist/{chunk-RDIZJ7UT.js → chunk-RE7UTPWH.js} +1 -1
  31. package/dist/chunk-S5GWAUG5.js +29 -0
  32. package/dist/{chunk-T4G3VVZ4.js → chunk-YQGRMDRB.js} +4 -2
  33. package/dist/constants.cjs +1 -1
  34. package/dist/constants.js +1 -1
  35. package/dist/docs/api/02-config.md +57 -7
  36. package/dist/docs/development/00-why-eventcatalog.md +11 -11
  37. package/dist/docs/development/01-fundamentals.md +20 -13
  38. package/dist/docs/development/01-getting-started/configuration-overview.md +2 -2
  39. package/dist/docs/development/01-getting-started/installation.md +9 -1
  40. package/dist/docs/development/_getting-started.mdx +1 -1
  41. package/dist/docs/development/ask-your-architecture/01-intro.md +5 -5
  42. package/dist/docs/development/ask-your-architecture/02-eventcatalog-assistant/01-what-is-eventcatalog-assistant.md +0 -4
  43. package/dist/docs/development/ask-your-architecture/02-eventcatalog-assistant/02-configuration.md +15 -3
  44. package/dist/docs/development/ask-your-architecture/02-eventcatalog-assistant/03-bring-your-own-tools.md +0 -3
  45. package/dist/docs/development/ask-your-architecture/02-eventcatalog-assistant/_category_.json +1 -1
  46. package/dist/docs/development/ask-your-architecture/02-llms.txt.md +1 -1
  47. package/dist/docs/development/ask-your-architecture/{05-skills/01-introduction.md → 03-install-skills.md} +57 -7
  48. package/dist/docs/development/ask-your-architecture/03-mcp-server/_category_.json +1 -1
  49. package/dist/docs/development/ask-your-architecture/03-mcp-server/getting-started.md +86 -33
  50. package/dist/docs/development/ask-your-architecture/03-mcp-server/introduction.md +14 -4
  51. package/dist/docs/development/ask-your-architecture/03-schemas.txt.md +1 -1
  52. package/dist/docs/development/ask-your-architecture/04-agents/_category_.json +1 -1
  53. package/dist/docs/development/authentication/01-introduction.md +2 -23
  54. package/dist/docs/development/authentication/02-enabling-authentication.md +0 -20
  55. package/dist/docs/development/authentication/07-rbac-middleware.md +0 -2
  56. package/dist/docs/development/authentication/providers/03-setting-up-github.md +0 -2
  57. package/dist/docs/development/authentication/providers/03a-setting-up-google.md +0 -2
  58. package/dist/docs/development/authentication/providers/04-setting-up-azure-ad.md +0 -2
  59. package/dist/docs/development/authentication/providers/05-setting-up-okta.md +0 -3
  60. package/dist/docs/development/authentication/providers/06-setting-up-auth0.md +0 -2
  61. package/dist/docs/development/bring-your-own-documentation/01-introduction.md +0 -4
  62. package/dist/docs/development/bring-your-own-documentation/custom-pages/01-introduction.md +0 -3
  63. package/dist/docs/development/bring-your-own-documentation/custom-pages/02-adding-custom-docs.md +0 -17
  64. package/dist/docs/development/bring-your-own-documentation/custom-pages/03-components.md +0 -4
  65. package/dist/docs/development/bring-your-own-documentation/custom-pages/04-owners.md +0 -2
  66. package/dist/docs/development/bring-your-own-documentation/resource-docs/01-introduction.md +1 -3
  67. package/dist/docs/development/bring-your-own-documentation/resource-docs/02-adding-resource-docs.md +1 -4
  68. package/dist/docs/development/bring-your-own-documentation/resource-docs/03-categories.md +0 -2
  69. package/dist/docs/development/bring-your-own-documentation/resource-docs/04-versioning.md +1 -3
  70. package/dist/docs/development/components/components/11-flow.md +17 -0
  71. package/dist/docs/development/components/components/15-nodegraph.md +43 -10
  72. package/dist/docs/development/components/components/18-remote-schema.md +1 -4
  73. package/dist/docs/development/components/custom-components/07-reference.md +14 -0
  74. package/dist/docs/development/customization/02-themes.md +0 -5
  75. package/dist/docs/development/customization/03-search.md +1 -1
  76. package/dist/docs/development/customization/05-custom-pages-and-api-routes/01-introduction.md +0 -2
  77. package/dist/docs/development/customization/05-custom-pages-and-api-routes/04-reference.md +7 -1
  78. package/dist/docs/development/customization/05-resource-sidebar.md +1 -1
  79. package/dist/docs/development/customization/09-embed-eventcatalog.md +20 -25
  80. package/dist/docs/development/deployment/hosting-options.md +7 -2
  81. package/dist/docs/development/developer-tools/eventcatalog-linter/how-to/05-fix-common-problems.md +16 -0
  82. package/dist/docs/development/developer-tools/eventcatalog-linter/reference/03-rules.md +31 -1
  83. package/dist/docs/development/developer-tools/eventcatalog-linter/reference/05-supported-resources.md +1 -1
  84. package/dist/docs/development/governance/architecture-change-detection/01-introduction.md +0 -10
  85. package/dist/docs/development/governance/architecture-change-detection/06-pipeline-gates.md +0 -4
  86. package/dist/docs/development/guides/97-architecture-graph.md +1 -1
  87. package/dist/docs/development/guides/99-adding-analytics.md +0 -7
  88. package/dist/docs/development/guides/domains/03-model-subdomains.md +2 -2
  89. package/dist/docs/development/guides/domains/04-add-resources-to-domains/01-add-systems-to-domains.md +3 -1
  90. package/dist/docs/development/guides/domains/04-add-resources-to-domains/02-add-services-to-domains.md +5 -1
  91. package/dist/docs/development/guides/domains/04-add-resources-to-domains/03-add-messages-to-domains.md +2 -2
  92. package/dist/docs/development/guides/domains/04-add-resources-to-domains/05-add-entities-to-domains.md +1 -1
  93. package/dist/docs/development/guides/domains/04-add-resources-to-domains/06-domain-resources-page.md +40 -0
  94. package/dist/docs/development/guides/domains/06-visualize-domains/01-domain-diagram.md +89 -0
  95. package/dist/docs/development/guides/domains/06-visualize-domains/_category_.json +1 -2
  96. package/dist/docs/development/guides/domains/09-reference.md +4 -4
  97. package/dist/docs/development/guides/owners/automated-teams-and-users/create-your-own-connector.md +0 -2
  98. package/dist/docs/development/guides/owners/automated-teams-and-users/sync-from-github.md +0 -3
  99. package/dist/docs/development/guides/owners/automated-teams-and-users/sync-from-microsoft-entra.md +0 -2
  100. package/dist/docs/development/guides/resources/adrs/03-linking-resources.md +8 -0
  101. package/dist/docs/development/guides/resources/adrs/06-reference.md +4 -4
  102. package/dist/docs/development/guides/resources/agents/11-reference.md +1 -1
  103. package/dist/docs/development/guides/resources/data/04-reference.md +1 -1
  104. package/dist/docs/development/guides/resources/data-products/07-reference.md +1 -1
  105. package/dist/docs/development/guides/resources/entities/05-entity-maps.md +1 -1
  106. package/dist/docs/development/guides/resources/entities/06-reference.md +2 -2
  107. package/dist/docs/development/guides/resources/flows/01-introduction.md +11 -1
  108. package/dist/docs/development/guides/resources/flows/03-model-flow-steps.md +65 -6
  109. package/dist/docs/development/guides/resources/flows/05-explore-flows.md +112 -0
  110. package/dist/docs/development/guides/resources/flows/06-reference.md +25 -4
  111. package/dist/docs/development/guides/resources/messages/01-what-are-messages.md +19 -0
  112. package/dist/docs/development/guides/resources/messages/04-message-channels/01-introduction.md +16 -0
  113. package/dist/docs/development/guides/resources/messages/04-message-channels/05-reference.md +2 -1
  114. package/dist/docs/development/guides/resources/messages/10-reference.md +6 -3
  115. package/dist/docs/development/guides/resources/schemas/04-explore-schemas/01-schema-explorer.md +2 -2
  116. package/dist/docs/development/guides/resources/schemas/04-explore-schemas/02-fields-explorer.md +0 -9
  117. package/dist/docs/development/guides/resources/schemas/05-schema-api.md +0 -3
  118. package/dist/docs/development/guides/resources/schemas/06-schema-mcp.md +11 -3
  119. package/dist/docs/development/guides/resources/services/04-add-resources-to-services/03-add-entities-to-services.md +1 -1
  120. package/dist/docs/development/guides/resources/services/05-resources-page.md +50 -0
  121. package/dist/docs/development/guides/resources/services/08-reference.md +2 -1
  122. package/dist/docs/development/guides/systems/01-introduction.md +1 -1
  123. package/dist/docs/development/guides/systems/02-create-system.md +2 -2
  124. package/dist/docs/development/guides/systems/03-add-resources-to-systems.md +35 -9
  125. package/dist/docs/development/guides/systems/04-model-relationships-and-actors.md +5 -3
  126. package/dist/docs/development/guides/systems/05-system-context-maps.md +39 -22
  127. package/dist/docs/development/guides/systems/06-reference.md +4 -4
  128. package/dist/docs/development/license/01-license-file.md +151 -0
  129. package/dist/docs/development/license/_category_.json +12 -0
  130. package/dist/docs/development/license-keys/_category_.json +3 -3
  131. package/dist/docs/development/license-keys/integrations.md +7 -37
  132. package/dist/docs/development/license-keys/license-validation.md +4 -0
  133. package/dist/docs/development/license-keys/overview.md +5 -1
  134. package/dist/docs/development/license-keys/plans.md +4 -2
  135. package/dist/docs/development/studio/01-introduction.md +60 -0
  136. package/dist/docs/development/studio/02-create-a-canvas.md +103 -0
  137. package/dist/docs/development/studio/03-set-up-persistent-storage.md +59 -0
  138. package/dist/docs/development/studio/04-collaborate-on-a-canvas.md +78 -0
  139. package/dist/docs/development/studio/05-connect-your-agent.md +102 -0
  140. package/dist/docs/development/studio/06-run-studio-in-production.md +54 -0
  141. package/dist/docs/development/studio/07-reference.md +294 -0
  142. package/dist/docs/development/studio/_category_.json +12 -0
  143. package/dist/docs/development/upgrading/v5.md +345 -0
  144. package/dist/docs/federation/00-overview.md +2 -8
  145. package/dist/docs/federation/01-first-federation.md +6 -18
  146. package/dist/docs/federation/explanation/how-it-works.md +0 -4
  147. package/dist/docs/federation/explanation/lockfile-and-cache.md +0 -4
  148. package/dist/docs/federation/explanation/mvp-status-and-feedback.md +0 -4
  149. package/dist/docs/federation/explanation/ownership-and-references.md +0 -4
  150. package/dist/docs/federation/how-to/configure-github-sources.md +6 -5
  151. package/dist/docs/federation/how-to/configure-validation-rules.md +0 -4
  152. package/dist/docs/federation/how-to/run-in-ci.md +2 -9
  153. package/dist/docs/federation/how-to/share-assets-and-components.md +0 -4
  154. package/dist/docs/federation/how-to/use-local-sources.md +0 -4
  155. package/dist/docs/federation/legacy-federation/00-introduction.md +4 -22
  156. package/dist/docs/federation/legacy-federation/01-installation.md +7 -58
  157. package/dist/docs/federation/legacy-federation/02-plugin-configuration.md +3 -21
  158. package/dist/docs/federation/legacy-federation/03-examples.md +3 -5
  159. package/dist/docs/federation/legacy-federation/04-configuration.md +3 -8
  160. package/dist/docs/federation/legacy-federation/05-setup-team-catalog.md +3 -6
  161. package/dist/docs/federation/reference/cli.md +2 -8
  162. package/dist/docs/federation/reference/configuration.md +0 -4
  163. package/dist/docs/federation/reference/diagnostic-rules.md +0 -5
  164. package/dist/docs/federation/reference/generated-output.md +0 -4
  165. package/dist/docs/federation/reference/supported-content.md +0 -4
  166. package/dist/docs/federation/reference/troubleshooting.md +0 -14
  167. package/dist/docs/plugins/02-generators.md +1 -1
  168. package/dist/docs/plugins/amazon-apigateway/00-intro.md +3 -28
  169. package/dist/docs/plugins/amazon-apigateway/01-installation.md +4 -56
  170. package/dist/docs/plugins/amazon-apigateway/02-plugin-configuration.md +1 -6
  171. package/dist/docs/plugins/apicurio/00-intro.md +2 -31
  172. package/dist/docs/plugins/apicurio/01-installation.md +2 -26
  173. package/dist/docs/plugins/apicurio/02-plugin-configuration.md +5 -13
  174. package/dist/docs/plugins/apicurio/03-features.md +1 -3
  175. package/dist/docs/plugins/asyncapi/00-intro.md +2 -28
  176. package/dist/docs/plugins/asyncapi/01-installation.md +3 -54
  177. package/dist/docs/plugins/asyncapi/02-plugin-configuration.md +2 -1
  178. package/dist/docs/plugins/aws-glue-registry/00-intro.md +4 -32
  179. package/dist/docs/plugins/aws-glue-registry/00a-installation.md +3 -53
  180. package/dist/docs/plugins/azure-schema-registry/00-intro.md +4 -32
  181. package/dist/docs/plugins/azure-schema-registry/01-installation.md +6 -33
  182. package/dist/docs/plugins/azure-schema-registry/02-plugin-configuration.md +1 -14
  183. package/dist/docs/plugins/azure-schema-registry/04-examples.md +0 -2
  184. package/dist/docs/plugins/backstage/00-overview.md +1 -7
  185. package/dist/docs/plugins/backstage/01-get-started.md +6 -15
  186. package/dist/docs/plugins/backstage/06-configuration.md +2 -8
  187. package/dist/docs/plugins/confluent-schema-registry/00-intro.md +2 -29
  188. package/dist/docs/plugins/confluent-schema-registry/01-installation.md +2 -26
  189. package/dist/docs/plugins/eventbridge/00-intro.md +0 -4
  190. package/dist/docs/plugins/eventbridge/00a-installation.md +1 -87
  191. package/dist/docs/plugins/eventbridge/03-api.md +2 -20
  192. package/dist/docs/plugins/github/00-intro.md +0 -31
  193. package/dist/docs/plugins/github/01-installation.md +2 -34
  194. package/dist/docs/plugins/graphql/00-intro.md +0 -30
  195. package/dist/docs/plugins/graphql/01-installation.md +1 -53
  196. package/dist/docs/plugins/graphql/02-plugin-configuration.md +0 -1
  197. package/dist/docs/plugins/hookdeck/01-intro.md +1 -1
  198. package/dist/docs/plugins/openapi/00-intro.md +0 -30
  199. package/dist/docs/plugins/openapi/01-installation.md +1 -57
  200. package/dist/docs/plugins/openapi/02-plugin-configuration.md +0 -5
  201. package/dist/docs/plugins/openapi/03-features.md +0 -4
  202. package/dist/eventcatalog-config-file-utils.cjs +34 -41
  203. package/dist/eventcatalog-config-file-utils.d.cts +56 -58
  204. package/dist/eventcatalog-config-file-utils.d.ts +56 -58
  205. package/dist/eventcatalog-config-file-utils.js +1 -1
  206. package/dist/eventcatalog.cjs +408 -281
  207. package/dist/eventcatalog.config.d.cts +26 -15
  208. package/dist/eventcatalog.config.d.ts +26 -15
  209. package/dist/eventcatalog.js +46 -27
  210. package/dist/features.cjs +36 -49
  211. package/dist/features.d.cts +1 -3
  212. package/dist/features.d.ts +1 -3
  213. package/dist/features.js +4 -6
  214. package/dist/federation/federate.cjs +37 -44
  215. package/dist/federation/federate.js +5 -5
  216. package/dist/federation/source-provider.js +2 -2
  217. package/dist/generate.cjs +37 -42
  218. package/dist/generate.js +4 -4
  219. package/dist/resolve-catalog-dependencies.cjs +34 -41
  220. package/dist/resolve-catalog-dependencies.js +2 -2
  221. package/dist/runtime-dependencies/@eventcatalog__visualiser__studio-fonts.css.mjs +3 -0
  222. package/dist/runtime-dependencies/@eventcatalog__visualiser__studio.css.mjs +3 -0
  223. package/dist/runtime-dependencies/@eventcatalog__visualiser__studio.mjs +3 -0
  224. package/dist/runtime-dependencies/htmlparser2.mjs +3 -0
  225. package/dist/runtime-dependencies/manifest.json +5 -1
  226. package/dist/runtime-dependencies/react-syntax-highlighter__dist__cjs__create-element.js.mjs +3 -0
  227. package/dist/utils/child-process-signals.cjs +53 -0
  228. package/dist/utils/child-process-signals.d.cts +19 -0
  229. package/dist/utils/child-process-signals.d.ts +19 -0
  230. package/dist/utils/child-process-signals.js +6 -0
  231. package/dist/utils/cli-logger.cjs +1 -1
  232. package/dist/utils/cli-logger.js +2 -2
  233. package/dist/utils/license-status.cjs +11 -4
  234. package/dist/utils/license-status.d.cts +3 -2
  235. package/dist/utils/license-status.d.ts +3 -2
  236. package/dist/utils/license-status.js +1 -1
  237. package/eventcatalog/astro.config.mjs +21 -1
  238. package/eventcatalog/integrations/config-loader.mjs +56 -58
  239. package/eventcatalog/integrations/skip-startup-reload.mjs +31 -0
  240. package/eventcatalog/integrations/stable-dependency-order.mjs +29 -0
  241. package/eventcatalog/integrations/storage.mjs +20 -0
  242. package/eventcatalog/integrations/studio-server.mjs +4 -1
  243. package/eventcatalog/src/components/CatalogGraph/CatalogForceGraph.tsx +39 -0
  244. package/eventcatalog/src/components/ChatPanel/ChatPanel.tsx +2 -0
  245. package/eventcatalog/src/components/Homepage/CatalogDashboard.astro +342 -0
  246. package/eventcatalog/src/components/MDX/NodeGraph/AstroNodeGraph.tsx +60 -4
  247. package/eventcatalog/src/components/MDX/NodeGraph/NodeGraph.astro +5 -1
  248. package/eventcatalog/src/components/NavigationProgress.astro +7 -0
  249. package/eventcatalog/src/components/SchemaExplorer/ApiContentViewer.tsx +2 -0
  250. package/eventcatalog/src/components/SchemaExplorer/ExamplesViewer.tsx +2 -0
  251. package/eventcatalog/src/components/SchemaExplorer/SchemaCodeModal.tsx +2 -0
  252. package/eventcatalog/src/components/SchemaExplorer/SchemaContentViewer.tsx +2 -0
  253. package/eventcatalog/src/components/Search/SearchDataLoader.astro +16 -28
  254. package/eventcatalog/src/components/Search/SearchModal.tsx +2 -10
  255. package/eventcatalog/src/components/Search/search-utils.ts +26 -0
  256. package/eventcatalog/src/components/Seo.astro +5 -1
  257. package/eventcatalog/src/components/Settings/AssistantSettingsForm.tsx +53 -48
  258. package/eventcatalog/src/components/Settings/GeneralSettingsForm.tsx +183 -178
  259. package/eventcatalog/src/components/Settings/LicenseSettings.tsx +140 -31
  260. package/eventcatalog/src/components/Settings/LlmAccessSettingsForm.tsx +40 -35
  261. package/eventcatalog/src/components/Settings/LogoUpload.tsx +1 -1
  262. package/eventcatalog/src/components/Settings/McpSettingsForm.tsx +9 -8
  263. package/eventcatalog/src/components/Settings/Row.tsx +7 -4
  264. package/eventcatalog/src/components/Settings/SettingsShared.tsx +3 -3
  265. package/eventcatalog/src/components/SideNav/NestedSideBar/index.tsx +37 -76
  266. package/eventcatalog/src/components/SideNav/NestedSideBar/storage.ts +2 -0
  267. package/eventcatalog/src/components/SideNav/NestedSideBar/utils.ts +122 -1
  268. package/eventcatalog/src/components/SideNav/SideNav.astro +9 -1
  269. package/eventcatalog/src/components/TrialBadge.astro +20 -9
  270. package/eventcatalog/src/content.config.ts +19 -2
  271. package/eventcatalog/src/features/auth/error.astro +4 -2
  272. package/eventcatalog/src/features/auth/login.astro +2 -1
  273. package/eventcatalog/src/features/auth/middleware/middleware-auth.ts +21 -1
  274. package/eventcatalog/src/features/auth/unauthorized.astro +1 -1
  275. package/eventcatalog/src/features/fields/pages/fields.astro +1 -1
  276. package/eventcatalog/src/features/integrations/eventcatalog-features.ts +13 -7
  277. package/eventcatalog/src/features/mcp/apps/architecture-diagram/node-chat.tsx +6 -45
  278. package/eventcatalog/src/features/mcp/apps/canvas/shared.ts +3 -3
  279. package/eventcatalog/src/features/mcp/apps/canvas/styles.css +3 -1
  280. package/eventcatalog/src/features/mcp/apps/canvas/view.tsx +7 -5
  281. package/eventcatalog/src/features/mcp/apps/generated/canvas.html +123 -98
  282. package/eventcatalog/src/features/mcp/apps/generated/viewer.html +118 -101
  283. package/eventcatalog/src/features/mcp/mcp-server.ts +20 -4
  284. package/eventcatalog/src/features/server/start.ts +25 -0
  285. package/eventcatalog/src/features/storage/database.ts +88 -0
  286. package/eventcatalog/src/features/storage/migrations.ts +85 -0
  287. package/eventcatalog/src/features/storage/sql/database.sql +5 -0
  288. package/eventcatalog/src/features/storage/sql/migrations/0001-studio-canvases.sql +12 -0
  289. package/eventcatalog/src/features/storage/sql/migrations.sql +15 -0
  290. package/eventcatalog/src/features/storage/sql.ts +28 -0
  291. package/eventcatalog/src/features/studio/agent-choreography.ts +13 -10
  292. package/eventcatalog/src/features/studio/agents.ts +28 -0
  293. package/eventcatalog/src/features/studio/api/canvases-api.ts +219 -0
  294. package/eventcatalog/src/features/studio/api/canvases.ts +25 -0
  295. package/eventcatalog/src/features/studio/api/client.ts +40 -0
  296. package/eventcatalog/src/features/studio/canvas-actions.ts +160 -34
  297. package/eventcatalog/src/features/studio/canvas-preview.ts +1 -2
  298. package/eventcatalog/src/features/studio/catalog.ts +16 -14
  299. package/eventcatalog/src/features/studio/components/CanvasHeader.tsx +274 -105
  300. package/eventcatalog/src/features/studio/components/CanvasStatusMenu.tsx +15 -14
  301. package/eventcatalog/src/features/studio/components/ConnectAgentDialog.tsx +272 -119
  302. package/eventcatalog/src/features/studio/components/ConnectionsChooser.tsx +1 -2
  303. package/eventcatalog/src/features/studio/components/DeleteCanvasDialog.tsx +65 -0
  304. package/eventcatalog/src/features/studio/components/Dialog.tsx +60 -0
  305. package/eventcatalog/src/features/studio/components/JoinForm.tsx +101 -26
  306. package/eventcatalog/src/features/studio/components/LeftPanel.tsx +122 -230
  307. package/eventcatalog/src/features/studio/components/NodeDetails.tsx +183 -0
  308. package/eventcatalog/src/features/studio/components/OpenInStudioDialog.tsx +79 -0
  309. package/eventcatalog/src/features/studio/components/Presence.tsx +52 -45
  310. package/eventcatalog/src/features/studio/components/ShareDialog.tsx +277 -141
  311. package/eventcatalog/src/features/studio/components/ShortcutsDialog.tsx +41 -0
  312. package/eventcatalog/src/features/studio/components/StudioDesigner.tsx +1314 -385
  313. package/eventcatalog/src/features/studio/components/StudioNotice.astro +24 -0
  314. package/eventcatalog/src/features/studio/document-name.ts +7 -0
  315. package/eventcatalog/src/features/studio/from-visualiser.ts +138 -0
  316. package/eventcatalog/src/features/studio/hooks/presence-sender.ts +19 -2
  317. package/eventcatalog/src/features/studio/hooks/use-canvas-webmcp.ts +9 -3
  318. package/eventcatalog/src/features/studio/hooks/use-comments.ts +2 -2
  319. package/eventcatalog/src/features/studio/hooks/use-follow-camera.ts +8 -3
  320. package/eventcatalog/src/features/studio/hooks/use-studio-flow.ts +244 -32
  321. package/eventcatalog/src/features/studio/identity.ts +25 -1
  322. package/eventcatalog/src/features/studio/limits.ts +2 -0
  323. package/eventcatalog/src/features/studio/pages/[id].astro +42 -16
  324. package/eventcatalog/src/features/studio/pages/index.astro +596 -373
  325. package/eventcatalog/src/features/studio/pages/webmcp-relay.ts +12 -15
  326. package/eventcatalog/src/features/studio/server/canvas-mcp.ts +8 -23
  327. package/eventcatalog/src/features/studio/server/runtime.ts +150 -46
  328. package/eventcatalog/src/features/studio/server/sql/storage.sql +18 -0
  329. package/eventcatalog/src/features/studio/server/storage.ts +53 -73
  330. package/eventcatalog/src/features/studio/webmcp-relay/LICENSE +21 -0
  331. package/eventcatalog/src/features/studio/webmcp-relay/README.md +5 -0
  332. package/eventcatalog/src/features/studio/webmcp-relay/embed.js +2 -0
  333. package/eventcatalog/src/features/studio/webmcp-relay/widget.html +10 -0
  334. package/eventcatalog/src/features/studio/webmcp-relay/widget.js +1 -0
  335. package/eventcatalog/src/features/tools/catalog-tools.ts +3 -1
  336. package/eventcatalog/src/layouts/BaseLayout.astro +4 -4
  337. package/eventcatalog/src/layouts/SettingsLayout.astro +2 -2
  338. package/eventcatalog/src/layouts/VerticalSideBarLayout.astro +3 -2
  339. package/eventcatalog/src/pages/_index.astro +5 -342
  340. package/eventcatalog/src/pages/architecture/[type]/[id]/[version]/_index.data.spec.ts +2 -3
  341. package/eventcatalog/src/pages/architecture/[type]/[id]/[version]/_index.data.ts +0 -7
  342. package/eventcatalog/src/pages/architecture/[type]/[id]/[version]/index.astro +3 -1
  343. package/eventcatalog/src/pages/diagrams/[id]/[version]/_index.data.ts +0 -7
  344. package/eventcatalog/src/pages/diagrams/[id]/[version]/embed.astro +1 -0
  345. package/eventcatalog/src/pages/diagrams/[id]/[version]/index.astro +1 -0
  346. package/eventcatalog/src/pages/directory/[type]/_index.data.ts +5 -7
  347. package/eventcatalog/src/pages/directory/[type]/index.astro +3 -1
  348. package/eventcatalog/src/pages/discover/[type]/_index.data.ts +5 -7
  349. package/eventcatalog/src/pages/discover/[type]/index.astro +3 -1
  350. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/[docType]/[docId]/[docVersion]/_index.data.ts +0 -7
  351. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/[docType]/[docId]/[docVersion]/index.astro +1 -0
  352. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/[docType]/[docId]/_index.data.ts +0 -7
  353. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/[docType]/[docId]/index.astro +1 -0
  354. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/_index.data.ts +0 -7
  355. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/asyncapi/[filename].astro +3 -1
  356. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/asyncapi/_[filename].data.ts +0 -7
  357. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/changelog/_index.data.ts +0 -7
  358. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/changelog/index.astro +1 -0
  359. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/examples/[...filename].astro +1 -0
  360. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/examples/_[...filename].data.ts +0 -4
  361. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/field-lineage/_index.data.ts +0 -7
  362. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/field-lineage/index.astro +1 -0
  363. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/graphql/[filename].astro +3 -1
  364. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/graphql/_[filename].data.ts +0 -7
  365. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/index.astro +1 -0
  366. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/resources/_index.data.spec.ts +2 -3
  367. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/resources/_index.data.ts +0 -7
  368. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/resources/index.astro +1 -0
  369. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/spec/[filename].astro +1 -0
  370. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/spec/_[filename].data.ts +0 -7
  371. package/eventcatalog/src/pages/docs/[type]/[id]/_index.data.ts +0 -7
  372. package/eventcatalog/src/pages/docs/[type]/[id]/index.astro +2 -1
  373. package/eventcatalog/src/pages/docs/[type]/[id]/language/[dictionaryId]/_index.data.ts +0 -7
  374. package/eventcatalog/src/pages/docs/[type]/[id]/language/[dictionaryId]/index.astro +1 -0
  375. package/eventcatalog/src/pages/docs/[type]/[id]/language/_index.data.ts +0 -7
  376. package/eventcatalog/src/pages/docs/[type]/[id]/language/index.astro +1 -0
  377. package/eventcatalog/src/pages/docs/custom/[...path]/_index.data.ts +0 -7
  378. package/eventcatalog/src/pages/docs/custom/[...path]/index.astro +1 -0
  379. package/eventcatalog/src/pages/docs/services/[id]/[docType]/[docId]/index.astro +1 -1
  380. package/eventcatalog/src/pages/docs/services/[id]/[version]/resources/index.astro +1 -0
  381. package/eventcatalog/src/pages/docs/services/[id]/asyncapi/[filename].astro +1 -1
  382. package/eventcatalog/src/pages/docs/services/[id]/changelog/index.astro +1 -1
  383. package/eventcatalog/src/pages/docs/services/[id]/graphql/[filename].astro +1 -1
  384. package/eventcatalog/src/pages/docs/services/[id]/spec/[filename].astro +1 -1
  385. package/eventcatalog/src/pages/docs/teams/[id]/_index.data.ts +0 -7
  386. package/eventcatalog/src/pages/docs/teams/[id]/index.astro +1 -0
  387. package/eventcatalog/src/pages/docs/users/[id]/_index.data.ts +0 -7
  388. package/eventcatalog/src/pages/docs/users/[id]/index.astro +1 -0
  389. package/eventcatalog/src/pages/index.astro +4 -2
  390. package/eventcatalog/src/pages/schemas/[type]/[id]/[version]/_index.data.ts +0 -7
  391. package/eventcatalog/src/pages/schemas/[type]/[id]/[version]/index.astro +9 -1
  392. package/eventcatalog/src/pages/schemas/explorer/_index.data.ts +0 -7
  393. package/eventcatalog/src/pages/schemas/explorer/index.astro +4 -2
  394. package/eventcatalog/src/pages/settings/license.astro +9 -1
  395. package/eventcatalog/src/pages/triggers/[type]/[id]/[version]/_index.data.ts +0 -7
  396. package/eventcatalog/src/pages/triggers/[type]/[id]/[version]/index.astro +1 -0
  397. package/eventcatalog/src/pages/visualiser/[type]/[id]/[version]/_index.data.ts +0 -7
  398. package/eventcatalog/src/pages/visualiser/[type]/[id]/[version]/data/_index.data.ts +0 -7
  399. package/eventcatalog/src/pages/visualiser/[type]/[id]/[version]/data/index.astro +1 -0
  400. package/eventcatalog/src/pages/visualiser/[type]/[id]/[version]/entity-map/_index.data.ts +0 -7
  401. package/eventcatalog/src/pages/visualiser/[type]/[id]/[version]/entity-map/index.astro +1 -0
  402. package/eventcatalog/src/pages/visualiser/[type]/[id]/[version]/index.astro +1 -0
  403. package/eventcatalog/src/pages/visualiser/[type]/[id]/_index.data.ts +38 -0
  404. package/eventcatalog/src/pages/visualiser/[type]/[id]/index.astro +18 -41
  405. package/eventcatalog/src/pages/visualiser/designs/[id]/_index.data.ts +0 -7
  406. package/eventcatalog/src/pages/visualiser/designs/[id]/index.astro +2 -1
  407. package/eventcatalog/src/pages/visualiser/domains/[id]/[version]/entity-map/_index.data.ts +0 -7
  408. package/eventcatalog/src/pages/visualiser/domains/[id]/[version]/entity-map/index.astro +1 -0
  409. package/eventcatalog/src/pages/visualiser/domains/[id]/[version]/index.astro +1 -0
  410. package/eventcatalog/src/pages/visualiser/domains/[id]/[version]/systems-context/_index.data.ts +0 -7
  411. package/eventcatalog/src/pages/visualiser/domains/[id]/[version]/systems-context/index.astro +1 -0
  412. package/eventcatalog/src/pages/visualiser/systems/[id]/[version]/context/_index.data.ts +0 -7
  413. package/eventcatalog/src/pages/visualiser/systems/[id]/[version]/context/index.astro +1 -0
  414. package/eventcatalog/src/pages/visualiser/systems/[id]/[version]/index.astro +1 -0
  415. package/eventcatalog/src/types/react-syntax-highlighter.d.ts +10 -0
  416. package/eventcatalog/src/utils/collections/flows.ts +20 -7
  417. package/eventcatalog/src/utils/collections/resource-owners.ts +8 -2
  418. package/eventcatalog/src/utils/collections/resources.ts +2 -0
  419. package/eventcatalog/src/utils/collections/util.ts +8 -4
  420. package/eventcatalog/src/utils/git.ts +11 -0
  421. package/eventcatalog/src/utils/homepage-dashboard.ts +143 -0
  422. package/eventcatalog/src/utils/license.ts +1 -1
  423. package/eventcatalog/src/utils/link-validation.ts +25 -19
  424. package/eventcatalog/src/utils/node-graphs/domain-entity-map.ts +3 -1
  425. package/eventcatalog/src/utils/node-graphs/domain-levels-node-graph.ts +3 -3
  426. package/eventcatalog/src/utils/node-graphs/field-node-graph.ts +4 -2
  427. package/eventcatalog/src/utils/node-graphs/layout-node-graph.ts +20 -1
  428. package/eventcatalog/src/utils/node-graphs/node-resource.ts +67 -0
  429. package/eventcatalog/src/utils/node-graphs/systems-node-graph.ts +1 -1
  430. package/eventcatalog/src/utils/page-loaders/hybrid-page.ts +4 -15
  431. package/eventcatalog/src/utils/page-title.ts +15 -0
  432. package/eventcatalog/src/utils/syntax-highlighter-renderer.ts +64 -0
  433. package/eventcatalog/src/utils/trial.ts +13 -0
  434. package/package.json +11 -11
  435. package/dist/docs/development/ask-your-architecture/05-skills/02-installation.md +0 -60
  436. package/dist/docs/development/ask-your-architecture/05-skills/_category_.json +0 -11
  437. package/dist/docs/development/ask-your-architecture/06-slack-integration/01-introduction.md +0 -63
  438. package/dist/docs/development/ask-your-architecture/06-slack-integration/02-slack-app-setup.md +0 -154
  439. package/dist/docs/development/ask-your-architecture/06-slack-integration/03-installation.md +0 -169
  440. package/dist/docs/development/ask-your-architecture/06-slack-integration/04-deployment.md +0 -236
  441. package/dist/docs/development/ask-your-architecture/06-slack-integration/05-usage.md +0 -140
  442. package/dist/docs/development/ask-your-architecture/06-slack-integration/06-troubleshooting.md +0 -268
  443. package/dist/docs/development/ask-your-architecture/06-slack-integration/_category_.json +0 -13
  444. package/dist/docs/development/guides/domains/06-visualize-domains/01-domain-integration-map.md +0 -40
  445. package/dist/runtime-dependencies/@mcp-b__webmcp-local-relay.mjs +0 -3
  446. package/eventcatalog/src/features/studio/canvas-doc.ts +0 -409
  447. package/eventcatalog/src/features/studio/clipboard.ts +0 -97
  448. package/eventcatalog/src/features/studio/components/CanvasControls.tsx +0 -154
  449. package/eventcatalog/src/features/studio/components/Comments.tsx +0 -770
  450. package/eventcatalog/src/features/studio/components/ContainerChooser.tsx +0 -145
  451. package/eventcatalog/src/features/studio/components/DragGhost.tsx +0 -115
  452. package/eventcatalog/src/features/studio/components/Picture.tsx +0 -21
  453. package/eventcatalog/src/features/studio/components/PropertiesPanel.tsx +0 -212
  454. package/eventcatalog/src/features/studio/components/canvas-nodes.tsx +0 -255
  455. package/eventcatalog/src/features/studio/components/icons.ts +0 -53
  456. package/eventcatalog/src/features/studio/components/status.ts +0 -51
  457. package/eventcatalog/src/features/studio/edges.ts +0 -56
  458. package/eventcatalog/src/features/studio/flow-state.ts +0 -92
  459. package/eventcatalog/src/features/studio/grouping.ts +0 -226
  460. package/eventcatalog/src/features/studio/layout.ts +0 -42
  461. package/eventcatalog/src/features/studio/levels.ts +0 -282
  462. package/eventcatalog/src/features/studio/node-types.ts +0 -205
  463. package/eventcatalog/src/features/studio/pages/new.astro +0 -24
  464. package/eventcatalog/src/features/studio/pages/wake.ts +0 -15
  465. package/eventcatalog/src/features/studio/placement.ts +0 -197
  466. package/eventcatalog/src/features/studio/studio.css +0 -273
  467. package/dist/{chunk-A2RZR3U4.js → chunk-6K7XZAYI.js} +3 -3
@@ -51,65 +51,58 @@ var import_promises = require("fs/promises");
51
51
  var import_node_fs = require("fs");
52
52
  var import_node_path = __toESM(require("path"), 1);
53
53
  var import_node_url = require("url");
54
- var import_node_os = require("os");
54
+ var import_node_module = require("module");
55
55
  async function cleanup(projectDirectory) {
56
56
  const filePath = import_node_path.default.join(projectDirectory, "eventcatalog.config.mjs");
57
57
  if ((0, import_node_fs.existsSync)(filePath)) {
58
58
  await (0, import_promises.rm)(filePath);
59
59
  }
60
60
  }
61
- var findNodeModulesDirectory = (directory) => {
62
- let currentDirectory = directory;
63
- while (true) {
64
- const nodeModulesDirectory = import_node_path.default.join(currentDirectory, "node_modules");
65
- if ((0, import_node_fs.existsSync)(nodeModulesDirectory)) {
66
- return nodeModulesDirectory;
67
- }
68
- const parentDirectory = import_node_path.default.dirname(currentDirectory);
69
- if (parentDirectory === currentDirectory) {
70
- return void 0;
71
- }
72
- currentDirectory = parentDirectory;
73
- }
74
- };
75
- var linkNodeModulesIntoTempDirectory = async ({ projectDirectory, tempDir }) => {
76
- const nodeModulesDirectory = findNodeModulesDirectory(projectDirectory);
77
- if (!nodeModulesDirectory) {
78
- return;
79
- }
80
- await (0, import_promises.symlink)(nodeModulesDirectory, import_node_path.default.join(tempDir, "node_modules"), "dir");
61
+ var hidesConfigModuleTypeWarning = false;
62
+ var loads = 0;
63
+ var hideConfigModuleTypeWarning = () => {
64
+ if (hidesConfigModuleTypeWarning) return;
65
+ hidesConfigModuleTypeWarning = true;
66
+ const emitWarning = process.emitWarning;
67
+ process.emitWarning = function(warning, ...args) {
68
+ const code = typeof args[0] === "object" ? args[0]?.code : args[1];
69
+ const message = typeof warning === "string" ? warning : warning?.message;
70
+ if (code === "MODULE_TYPELESS_PACKAGE_JSON" && message?.includes("eventcatalog.config.js")) return;
71
+ return emitWarning.call(this, warning, ...args);
72
+ };
81
73
  };
82
- var createTemporaryConfigDirectory = async (projectDirectory) => {
83
- const nodeModulesDirectory = findNodeModulesDirectory(projectDirectory);
84
- if (nodeModulesDirectory) {
85
- return (0, import_promises.mkdtemp)(import_node_path.default.join(nodeModulesDirectory, ".eventcatalog-config-"));
74
+ var AS_MODULE_QUERY = "eventcatalog-config-as-module";
75
+ var loadsMarkedConfigsAsModules = false;
76
+ var loadMarkedConfigsAsModules = () => {
77
+ if (loadsMarkedConfigsAsModules) return;
78
+ loadsMarkedConfigsAsModules = true;
79
+ const hook = `export async function load(url, context, nextLoad) {
80
+ return nextLoad(url, url.includes('${AS_MODULE_QUERY}=') ? { ...context, format: 'module' } : context);
81
+ }`;
82
+ (0, import_node_module.register)(`data:text/javascript,${encodeURIComponent(hook)}`);
83
+ };
84
+ var isCommonJSPackage = async (projectDirectory) => {
85
+ try {
86
+ const packageJson = JSON.parse(await (0, import_promises.readFile)(import_node_path.default.join(projectDirectory, "package.json"), "utf-8"));
87
+ return packageJson?.type === "commonjs";
88
+ } catch {
89
+ return false;
86
90
  }
87
- const tempDir = await (0, import_promises.mkdtemp)(import_node_path.default.join((0, import_node_os.tmpdir)(), "eventcatalog-config-"));
88
- await linkNodeModulesIntoTempDirectory({ projectDirectory, tempDir });
89
- return tempDir;
90
91
  };
91
92
  var getEventCatalogConfigFile = async (projectDirectory) => {
92
- let tempDir;
93
93
  try {
94
- let configFilePath = import_node_path.default.join(projectDirectory, "eventcatalog.config.js");
95
- const filePath = import_node_path.default.join(projectDirectory, "package.json");
96
- const packageJson = JSON.parse(await (0, import_promises.readFile)(filePath, "utf-8"));
97
- if (packageJson?.type !== "module") {
98
- tempDir = await createTemporaryConfigDirectory(projectDirectory);
99
- configFilePath = import_node_path.default.join(tempDir, "eventcatalog.config.mjs");
100
- await (0, import_promises.copyFile)(import_node_path.default.join(projectDirectory, "eventcatalog.config.js"), configFilePath);
101
- }
102
- const configFileURL = `${(0, import_node_url.pathToFileURL)(configFilePath).href}?t=${Date.now()}`;
94
+ hideConfigModuleTypeWarning();
95
+ const asModule = await isCommonJSPackage(projectDirectory);
96
+ if (asModule) loadMarkedConfigsAsModules();
97
+ const configFileURL = (0, import_node_url.pathToFileURL)(import_node_path.default.join(projectDirectory, "eventcatalog.config.js")).href;
98
+ const query = `${asModule ? AS_MODULE_QUERY : "loaded"}=${Date.now()}-${loads++}`;
103
99
  const config = await import(
104
100
  /* @vite-ignore */
105
- configFileURL
101
+ `${configFileURL}?${query}`
106
102
  );
107
103
  return config.default;
108
104
  } finally {
109
105
  await cleanup(projectDirectory);
110
- if (tempDir) {
111
- await (0, import_promises.rm)(tempDir, { recursive: true, force: true });
112
- }
113
106
  }
114
107
  };
115
108
 
@@ -633,7 +626,7 @@ var createFileSystemSourceProvider = (projectDirectory) => ({
633
626
  // src/federation/github-source-provider.ts
634
627
  var import_node_child_process = require("child_process");
635
628
  var import_promises7 = __toESM(require("fs/promises"), 1);
636
- var import_node_os2 = __toESM(require("os"), 1);
629
+ var import_node_os = __toESM(require("os"), 1);
637
630
  var import_node_path7 = __toESM(require("path"), 1);
638
631
  var import_node_util = require("util");
639
632
  var import_sdk2 = __toESM(require("@eventcatalog/sdk"), 1);
@@ -690,7 +683,7 @@ var getGitEnvironment = (token) => {
690
683
  var createCheckout = (executeFile, token) => async (source, ref, callback) => {
691
684
  const { owner, repository } = parseGitHubSource(source);
692
685
  const catalogPath = import_node_path7.default.posix.normalize(source.path ?? ".");
693
- const directory = await import_promises7.default.mkdtemp(import_node_path7.default.join(import_node_os2.default.tmpdir(), "eventcatalog-federation-"));
686
+ const directory = await import_promises7.default.mkdtemp(import_node_path7.default.join(import_node_os.default.tmpdir(), "eventcatalog-federation-"));
694
687
  const env = getGitEnvironment(token);
695
688
  try {
696
689
  const git = (args) => executeFile("git", args, { cwd: directory, env, encoding: "utf8" });
@@ -2,15 +2,15 @@ import {
2
2
  FederationConflictError,
3
3
  FederationDiagnosticError,
4
4
  federateCatalog
5
- } from "../chunk-AYNZXUB5.js";
5
+ } from "../chunk-OX6TSVHY.js";
6
+ import "../chunk-WRNH5C3U.js";
6
7
  import "../chunk-5EPNFDT5.js";
7
- import "../chunk-A2RZR3U4.js";
8
+ import "../chunk-6K7XZAYI.js";
9
+ import "../chunk-352FGP6W.js";
8
10
  import "../chunk-R7Z5ALYI.js";
9
11
  import "../chunk-JJPB6EOZ.js";
10
12
  import "../chunk-SDZQJTJW.js";
11
- import "../chunk-352FGP6W.js";
12
- import "../chunk-WRNH5C3U.js";
13
- import "../chunk-RFIXKATC.js";
13
+ import "../chunk-4G7FSRPN.js";
14
14
  export {
15
15
  FederationConflictError,
16
16
  FederationDiagnosticError,
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  createFederationSourceProvider
3
- } from "../chunk-A2RZR3U4.js";
4
- import "../chunk-SDZQJTJW.js";
3
+ } from "../chunk-6K7XZAYI.js";
5
4
  import "../chunk-352FGP6W.js";
5
+ import "../chunk-SDZQJTJW.js";
6
6
  export {
7
7
  createFederationSourceProvider
8
8
  };
package/dist/generate.cjs CHANGED
@@ -46,65 +46,58 @@ var import_promises = require("fs/promises");
46
46
  var import_node_fs = require("fs");
47
47
  var import_node_path = __toESM(require("path"), 1);
48
48
  var import_node_url = require("url");
49
- var import_node_os = require("os");
49
+ var import_node_module = require("module");
50
50
  async function cleanup(projectDirectory) {
51
51
  const filePath = import_node_path.default.join(projectDirectory, "eventcatalog.config.mjs");
52
52
  if ((0, import_node_fs.existsSync)(filePath)) {
53
53
  await (0, import_promises.rm)(filePath);
54
54
  }
55
55
  }
56
- var findNodeModulesDirectory = (directory) => {
57
- let currentDirectory = directory;
58
- while (true) {
59
- const nodeModulesDirectory = import_node_path.default.join(currentDirectory, "node_modules");
60
- if ((0, import_node_fs.existsSync)(nodeModulesDirectory)) {
61
- return nodeModulesDirectory;
62
- }
63
- const parentDirectory = import_node_path.default.dirname(currentDirectory);
64
- if (parentDirectory === currentDirectory) {
65
- return void 0;
66
- }
67
- currentDirectory = parentDirectory;
68
- }
56
+ var hidesConfigModuleTypeWarning = false;
57
+ var loads = 0;
58
+ var hideConfigModuleTypeWarning = () => {
59
+ if (hidesConfigModuleTypeWarning) return;
60
+ hidesConfigModuleTypeWarning = true;
61
+ const emitWarning = process.emitWarning;
62
+ process.emitWarning = function(warning, ...args) {
63
+ const code = typeof args[0] === "object" ? args[0]?.code : args[1];
64
+ const message = typeof warning === "string" ? warning : warning?.message;
65
+ if (code === "MODULE_TYPELESS_PACKAGE_JSON" && message?.includes("eventcatalog.config.js")) return;
66
+ return emitWarning.call(this, warning, ...args);
67
+ };
69
68
  };
70
- var linkNodeModulesIntoTempDirectory = async ({ projectDirectory, tempDir }) => {
71
- const nodeModulesDirectory = findNodeModulesDirectory(projectDirectory);
72
- if (!nodeModulesDirectory) {
73
- return;
74
- }
75
- await (0, import_promises.symlink)(nodeModulesDirectory, import_node_path.default.join(tempDir, "node_modules"), "dir");
69
+ var AS_MODULE_QUERY = "eventcatalog-config-as-module";
70
+ var loadsMarkedConfigsAsModules = false;
71
+ var loadMarkedConfigsAsModules = () => {
72
+ if (loadsMarkedConfigsAsModules) return;
73
+ loadsMarkedConfigsAsModules = true;
74
+ const hook = `export async function load(url, context, nextLoad) {
75
+ return nextLoad(url, url.includes('${AS_MODULE_QUERY}=') ? { ...context, format: 'module' } : context);
76
+ }`;
77
+ (0, import_node_module.register)(`data:text/javascript,${encodeURIComponent(hook)}`);
76
78
  };
77
- var createTemporaryConfigDirectory = async (projectDirectory) => {
78
- const nodeModulesDirectory = findNodeModulesDirectory(projectDirectory);
79
- if (nodeModulesDirectory) {
80
- return (0, import_promises.mkdtemp)(import_node_path.default.join(nodeModulesDirectory, ".eventcatalog-config-"));
79
+ var isCommonJSPackage = async (projectDirectory) => {
80
+ try {
81
+ const packageJson = JSON.parse(await (0, import_promises.readFile)(import_node_path.default.join(projectDirectory, "package.json"), "utf-8"));
82
+ return packageJson?.type === "commonjs";
83
+ } catch {
84
+ return false;
81
85
  }
82
- const tempDir = await (0, import_promises.mkdtemp)(import_node_path.default.join((0, import_node_os.tmpdir)(), "eventcatalog-config-"));
83
- await linkNodeModulesIntoTempDirectory({ projectDirectory, tempDir });
84
- return tempDir;
85
86
  };
86
87
  var getEventCatalogConfigFile = async (projectDirectory) => {
87
- let tempDir;
88
88
  try {
89
- let configFilePath = import_node_path.default.join(projectDirectory, "eventcatalog.config.js");
90
- const filePath = import_node_path.default.join(projectDirectory, "package.json");
91
- const packageJson = JSON.parse(await (0, import_promises.readFile)(filePath, "utf-8"));
92
- if (packageJson?.type !== "module") {
93
- tempDir = await createTemporaryConfigDirectory(projectDirectory);
94
- configFilePath = import_node_path.default.join(tempDir, "eventcatalog.config.mjs");
95
- await (0, import_promises.copyFile)(import_node_path.default.join(projectDirectory, "eventcatalog.config.js"), configFilePath);
96
- }
97
- const configFileURL = `${(0, import_node_url.pathToFileURL)(configFilePath).href}?t=${Date.now()}`;
89
+ hideConfigModuleTypeWarning();
90
+ const asModule = await isCommonJSPackage(projectDirectory);
91
+ if (asModule) loadMarkedConfigsAsModules();
92
+ const configFileURL = (0, import_node_url.pathToFileURL)(import_node_path.default.join(projectDirectory, "eventcatalog.config.js")).href;
93
+ const query = `${asModule ? AS_MODULE_QUERY : "loaded"}=${Date.now()}-${loads++}`;
98
94
  const config = await import(
99
95
  /* @vite-ignore */
100
- configFileURL
96
+ `${configFileURL}?${query}`
101
97
  );
102
98
  return config.default;
103
99
  } finally {
104
100
  await cleanup(projectDirectory);
105
- if (tempDir) {
106
- await (0, import_promises.rm)(tempDir, { recursive: true, force: true });
107
- }
108
101
  }
109
102
  };
110
103
 
@@ -112,7 +105,7 @@ var getEventCatalogConfigFile = async (projectDirectory) => {
112
105
  var import_picocolors = __toESM(require("picocolors"), 1);
113
106
 
114
107
  // package.json
115
- var version = "5.0.0-beta.8";
108
+ var version = "5.0.0";
116
109
 
117
110
  // src/constants.ts
118
111
  var VERSION = version;
@@ -226,10 +219,12 @@ var generate = async (PROJECT_DIRECTORY) => {
226
219
  for (const { plugin } of errors) {
227
220
  logger.error(` - ${plugin}`, "generator");
228
221
  }
222
+ process.exitCode = 1;
229
223
  }
230
224
  } catch (error) {
231
225
  console.error(error);
232
226
  await cleanup(PROJECT_DIRECTORY);
227
+ process.exitCode = 1;
233
228
  }
234
229
  };
235
230
  // Annotate the CommonJS export names for ESM import in node:
package/dist/generate.js CHANGED
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  generate
3
- } from "./chunk-T4G3VVZ4.js";
4
- import "./chunk-PU25TOOJ.js";
5
- import "./chunk-RDIZJ7UT.js";
6
- import "./chunk-RFIXKATC.js";
3
+ } from "./chunk-YQGRMDRB.js";
4
+ import "./chunk-JZN4RSMF.js";
5
+ import "./chunk-RE7UTPWH.js";
6
+ import "./chunk-4G7FSRPN.js";
7
7
  export {
8
8
  generate
9
9
  };
@@ -45,65 +45,58 @@ var import_promises = require("fs/promises");
45
45
  var import_node_fs = require("fs");
46
46
  var import_node_path = __toESM(require("path"), 1);
47
47
  var import_node_url = require("url");
48
- var import_node_os = require("os");
48
+ var import_node_module = require("module");
49
49
  async function cleanup(projectDirectory) {
50
50
  const filePath = import_node_path.default.join(projectDirectory, "eventcatalog.config.mjs");
51
51
  if ((0, import_node_fs.existsSync)(filePath)) {
52
52
  await (0, import_promises.rm)(filePath);
53
53
  }
54
54
  }
55
- var findNodeModulesDirectory = (directory) => {
56
- let currentDirectory = directory;
57
- while (true) {
58
- const nodeModulesDirectory = import_node_path.default.join(currentDirectory, "node_modules");
59
- if ((0, import_node_fs.existsSync)(nodeModulesDirectory)) {
60
- return nodeModulesDirectory;
61
- }
62
- const parentDirectory = import_node_path.default.dirname(currentDirectory);
63
- if (parentDirectory === currentDirectory) {
64
- return void 0;
65
- }
66
- currentDirectory = parentDirectory;
67
- }
55
+ var hidesConfigModuleTypeWarning = false;
56
+ var loads = 0;
57
+ var hideConfigModuleTypeWarning = () => {
58
+ if (hidesConfigModuleTypeWarning) return;
59
+ hidesConfigModuleTypeWarning = true;
60
+ const emitWarning = process.emitWarning;
61
+ process.emitWarning = function(warning, ...args) {
62
+ const code = typeof args[0] === "object" ? args[0]?.code : args[1];
63
+ const message = typeof warning === "string" ? warning : warning?.message;
64
+ if (code === "MODULE_TYPELESS_PACKAGE_JSON" && message?.includes("eventcatalog.config.js")) return;
65
+ return emitWarning.call(this, warning, ...args);
66
+ };
68
67
  };
69
- var linkNodeModulesIntoTempDirectory = async ({ projectDirectory, tempDir }) => {
70
- const nodeModulesDirectory = findNodeModulesDirectory(projectDirectory);
71
- if (!nodeModulesDirectory) {
72
- return;
73
- }
74
- await (0, import_promises.symlink)(nodeModulesDirectory, import_node_path.default.join(tempDir, "node_modules"), "dir");
68
+ var AS_MODULE_QUERY = "eventcatalog-config-as-module";
69
+ var loadsMarkedConfigsAsModules = false;
70
+ var loadMarkedConfigsAsModules = () => {
71
+ if (loadsMarkedConfigsAsModules) return;
72
+ loadsMarkedConfigsAsModules = true;
73
+ const hook = `export async function load(url, context, nextLoad) {
74
+ return nextLoad(url, url.includes('${AS_MODULE_QUERY}=') ? { ...context, format: 'module' } : context);
75
+ }`;
76
+ (0, import_node_module.register)(`data:text/javascript,${encodeURIComponent(hook)}`);
75
77
  };
76
- var createTemporaryConfigDirectory = async (projectDirectory) => {
77
- const nodeModulesDirectory = findNodeModulesDirectory(projectDirectory);
78
- if (nodeModulesDirectory) {
79
- return (0, import_promises.mkdtemp)(import_node_path.default.join(nodeModulesDirectory, ".eventcatalog-config-"));
78
+ var isCommonJSPackage = async (projectDirectory) => {
79
+ try {
80
+ const packageJson = JSON.parse(await (0, import_promises.readFile)(import_node_path.default.join(projectDirectory, "package.json"), "utf-8"));
81
+ return packageJson?.type === "commonjs";
82
+ } catch {
83
+ return false;
80
84
  }
81
- const tempDir = await (0, import_promises.mkdtemp)(import_node_path.default.join((0, import_node_os.tmpdir)(), "eventcatalog-config-"));
82
- await linkNodeModulesIntoTempDirectory({ projectDirectory, tempDir });
83
- return tempDir;
84
85
  };
85
86
  var getEventCatalogConfigFile = async (projectDirectory) => {
86
- let tempDir;
87
87
  try {
88
- let configFilePath = import_node_path.default.join(projectDirectory, "eventcatalog.config.js");
89
- const filePath = import_node_path.default.join(projectDirectory, "package.json");
90
- const packageJson = JSON.parse(await (0, import_promises.readFile)(filePath, "utf-8"));
91
- if (packageJson?.type !== "module") {
92
- tempDir = await createTemporaryConfigDirectory(projectDirectory);
93
- configFilePath = import_node_path.default.join(tempDir, "eventcatalog.config.mjs");
94
- await (0, import_promises.copyFile)(import_node_path.default.join(projectDirectory, "eventcatalog.config.js"), configFilePath);
95
- }
96
- const configFileURL = `${(0, import_node_url.pathToFileURL)(configFilePath).href}?t=${Date.now()}`;
88
+ hideConfigModuleTypeWarning();
89
+ const asModule = await isCommonJSPackage(projectDirectory);
90
+ if (asModule) loadMarkedConfigsAsModules();
91
+ const configFileURL = (0, import_node_url.pathToFileURL)(import_node_path.default.join(projectDirectory, "eventcatalog.config.js")).href;
92
+ const query = `${asModule ? AS_MODULE_QUERY : "loaded"}=${Date.now()}-${loads++}`;
97
93
  const config = await import(
98
94
  /* @vite-ignore */
99
- configFileURL
95
+ `${configFileURL}?${query}`
100
96
  );
101
97
  return config.default;
102
98
  } finally {
103
99
  await cleanup(projectDirectory);
104
- if (tempDir) {
105
- await (0, import_promises.rm)(tempDir, { recursive: true, force: true });
106
- }
107
100
  }
108
101
  };
109
102
 
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  resolve_catalog_dependencies_default
3
- } from "./chunk-36RYTYT5.js";
4
- import "./chunk-RFIXKATC.js";
3
+ } from "./chunk-PD7KTSYN.js";
4
+ import "./chunk-4G7FSRPN.js";
5
5
  export {
6
6
  resolve_catalog_dependencies_default as default
7
7
  };
@@ -0,0 +1,3 @@
1
+ export * from "@eventcatalog/visualiser/studio-fonts.css";
2
+ import * as dependency from "@eventcatalog/visualiser/studio-fonts.css";
3
+ export default dependency.default;
@@ -0,0 +1,3 @@
1
+ export * from "@eventcatalog/visualiser/studio.css";
2
+ import * as dependency from "@eventcatalog/visualiser/studio.css";
3
+ export default dependency.default;
@@ -0,0 +1,3 @@
1
+ export * from "@eventcatalog/visualiser/studio";
2
+ import * as dependency from "@eventcatalog/visualiser/studio";
3
+ export default dependency.default;
@@ -0,0 +1,3 @@
1
+ export * from "htmlparser2";
2
+ import * as dependency from "htmlparser2";
3
+ export default dependency.default;
@@ -21,6 +21,9 @@
21
21
  "@eventcatalog/sdk": "@eventcatalog__sdk.mjs",
22
22
  "@eventcatalog/visualiser": "@eventcatalog__visualiser.mjs",
23
23
  "@eventcatalog/visualiser/layout": "@eventcatalog__visualiser__layout.mjs",
24
+ "@eventcatalog/visualiser/studio": "@eventcatalog__visualiser__studio.mjs",
25
+ "@eventcatalog/visualiser/studio-fonts.css": "@eventcatalog__visualiser__studio-fonts.css.mjs",
26
+ "@eventcatalog/visualiser/studio.css": "@eventcatalog__visualiser__studio.css.mjs",
24
27
  "@eventcatalog/visualiser/styles-core.css": "@eventcatalog__visualiser__styles-core.css.mjs",
25
28
  "@fontsource/inter": "@fontsource__inter.mjs",
26
29
  "@fontsource/inter/400.css": "@fontsource__inter__400.css.mjs",
@@ -37,7 +40,6 @@
37
40
  "@hocuspocus/provider": "@hocuspocus__provider.mjs",
38
41
  "@hocuspocus/server": "@hocuspocus__server.mjs",
39
42
  "@iconify-json/logos": "@iconify-json__logos.mjs",
40
- "@mcp-b/webmcp-local-relay": "@mcp-b__webmcp-local-relay.mjs",
41
43
  "@mcp-b/webmcp-polyfill": "@mcp-b__webmcp-polyfill.mjs",
42
44
  "@mermaid-js/layout-elk": "@mermaid-js__layout-elk.mjs",
43
45
  "@mermaid-js/layout-elk/dist/mermaid-layout-elk.core.mjs": "@mermaid-js__layout-elk__dist__mermaid-layout-elk.core.mjs.mjs",
@@ -91,6 +93,7 @@
91
93
  "gray-matter": "gray-matter.mjs",
92
94
  "hono": "hono.mjs",
93
95
  "html-to-image": "html-to-image.mjs",
96
+ "htmlparser2": "htmlparser2.mjs",
94
97
  "js-yaml": "js-yaml.mjs",
95
98
  "jsonpath-plus": "jsonpath-plus.mjs",
96
99
  "jsonwebtoken": "jsonwebtoken.mjs",
@@ -114,6 +117,7 @@
114
117
  "react-hotkeys-hook": "react-hotkeys-hook.mjs",
115
118
  "react-markdown": "react-markdown.mjs",
116
119
  "react-syntax-highlighter": "react-syntax-highlighter.mjs",
120
+ "react-syntax-highlighter/dist/cjs/create-element.js": "react-syntax-highlighter__dist__cjs__create-element.js.mjs",
117
121
  "react-syntax-highlighter/dist/cjs/styles/prism": "react-syntax-highlighter__dist__cjs__styles__prism.mjs",
118
122
  "react-syntax-highlighter/dist/cjs/styles/prism/index.js": "react-syntax-highlighter__dist__cjs__styles__prism__index.js.mjs",
119
123
  "react-syntax-highlighter/dist/esm/languages/prism/graphql": "react-syntax-highlighter__dist__esm__languages__prism__graphql.mjs",
@@ -0,0 +1,3 @@
1
+ export * from "react-syntax-highlighter/dist/cjs/create-element.js";
2
+ import * as dependency from "react-syntax-highlighter/dist/cjs/create-element.js";
3
+ export default dependency.default;
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/utils/child-process-signals.ts
21
+ var child_process_signals_exports = {};
22
+ __export(child_process_signals_exports, {
23
+ stopChildWithParent: () => stopChildWithParent
24
+ });
25
+ module.exports = __toCommonJS(child_process_signals_exports);
26
+ var import_node_os = require("os");
27
+ var FORWARDED_SIGNALS = ["SIGINT", "SIGTERM", "SIGHUP"];
28
+ var isRunning = (child) => child.exitCode === null && child.signalCode === null;
29
+ var stopChildWithParent = (child, parent = process) => {
30
+ let received;
31
+ const onSignal = (signal) => {
32
+ received = signal;
33
+ if (isRunning(child)) child.kill(signal);
34
+ };
35
+ const onExit = () => {
36
+ if (isRunning(child)) child.kill("SIGTERM");
37
+ };
38
+ for (const signal of FORWARDED_SIGNALS) parent.on(signal, onSignal);
39
+ parent.on("exit", onExit);
40
+ return {
41
+ childClosed: () => {
42
+ for (const signal of FORWARDED_SIGNALS) parent.off(signal, onSignal);
43
+ parent.off("exit", onExit);
44
+ if (!received) return false;
45
+ parent.exit(128 + import_node_os.constants.signals[received]);
46
+ return true;
47
+ }
48
+ };
49
+ };
50
+ // Annotate the CommonJS export names for ESM import in node:
51
+ 0 && (module.exports = {
52
+ stopChildWithParent
53
+ });
@@ -0,0 +1,19 @@
1
+ import { ChildProcess } from 'node:child_process';
2
+
3
+ type Child = Pick<ChildProcess, 'kill' | 'exitCode' | 'signalCode'>;
4
+ type Parent = Pick<NodeJS.Process, 'on' | 'off' | 'exit'>;
5
+ /**
6
+ * Stops a child process along with the CLI. Without this, `kill` or a container stopping the CLI
7
+ * stopped the CLI only: its child (e.g. the server `eventcatalog start` runs) kept running and holding
8
+ * its port. A signal the CLI receives is passed to the child, which can finish what it's doing; the
9
+ * CLI then exits as the signal would have stopped it (128 + the signal's number). It exits explicitly
10
+ * rather than raising the signal again, which a container's first process (PID 1) would ignore.
11
+ *
12
+ * Call `childClosed` once the child has closed: it returns true when the CLI is exiting because of a
13
+ * signal, so the caller shouldn't report the child's exit as a failure.
14
+ */
15
+ declare const stopChildWithParent: (child: Child, parent?: Parent) => {
16
+ childClosed: () => boolean;
17
+ };
18
+
19
+ export { stopChildWithParent };
@@ -0,0 +1,19 @@
1
+ import { ChildProcess } from 'node:child_process';
2
+
3
+ type Child = Pick<ChildProcess, 'kill' | 'exitCode' | 'signalCode'>;
4
+ type Parent = Pick<NodeJS.Process, 'on' | 'off' | 'exit'>;
5
+ /**
6
+ * Stops a child process along with the CLI. Without this, `kill` or a container stopping the CLI
7
+ * stopped the CLI only: its child (e.g. the server `eventcatalog start` runs) kept running and holding
8
+ * its port. A signal the CLI receives is passed to the child, which can finish what it's doing; the
9
+ * CLI then exits as the signal would have stopped it (128 + the signal's number). It exits explicitly
10
+ * rather than raising the signal again, which a container's first process (PID 1) would ignore.
11
+ *
12
+ * Call `childClosed` once the child has closed: it returns true when the CLI is exiting because of a
13
+ * signal, so the caller shouldn't report the child's exit as a failure.
14
+ */
15
+ declare const stopChildWithParent: (child: Child, parent?: Parent) => {
16
+ childClosed: () => boolean;
17
+ };
18
+
19
+ export { stopChildWithParent };
@@ -0,0 +1,6 @@
1
+ import {
2
+ stopChildWithParent
3
+ } from "../chunk-S5GWAUG5.js";
4
+ export {
5
+ stopChildWithParent
6
+ };
@@ -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 = "5.0.0-beta.8";
39
+ var version = "5.0.0";
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-PU25TOOJ.js";
4
- import "../chunk-RDIZJ7UT.js";
3
+ } from "../chunk-JZN4RSMF.js";
4
+ import "../chunk-RE7UTPWH.js";
5
5
  export {
6
6
  logger
7
7
  };
@@ -44,6 +44,9 @@ var import_license2 = require("@eventcatalog/license");
44
44
  var TRIAL_LENGTH_DAYS = 60;
45
45
  var LICENSE_FAQ_URL = "https://www.eventcatalog.dev/license-faq";
46
46
  var LICENSE_RENEW_URL = "https://eventcatalog.cloud";
47
+ var BUY_BUSINESS_URL = "https://www.eventcatalog.dev/buy?source=cli";
48
+ var PRICING_URL = "https://www.eventcatalog.dev/pricing";
49
+ var FREE_USE_NOTE = "Under $10M revenue and $10M raised, an individual or an open-source project? You qualify for Free Use; get a free key at eventcatalog.cloud.";
47
50
  var DAY_IN_MS = 24 * 60 * 60 * 1e3;
48
51
  var getTrialStatus = (tsd, now = Date.now()) => {
49
52
  if (typeof tsd !== "number" || !Number.isFinite(tsd) || tsd <= 0) return;
@@ -162,15 +165,17 @@ var formatDate = (date) => date.toLocaleDateString(void 0, { dateStyle: "medium"
162
165
  var formatDays = (days) => `${days} ${days === 1 ? "day" : "days"}`;
163
166
  var PLAIN = { bold: (text) => text, dim: (text) => text, link: (text) => text };
164
167
  var COLOURS = { bold: import_picocolors.default.bold, dim: import_picocolors.default.dim, link: (text) => import_picocolors.default.cyan(text) };
165
- var render = ({ headline, rows, links }, colours) => {
168
+ var render = ({ headline, rows, links, note }, colours) => {
166
169
  const width = Math.max(0, ...[...rows, ...links].map(([label]) => label.length));
167
170
  const row = ([label, value]) => `${colours.dim(label.padEnd(width))} ${value}`;
168
171
  return [
169
172
  colours.bold(headline),
170
173
  ...rows.length ? ["", ...rows.map(row)] : [],
171
- ...links.length ? ["", ...links.map(([label, url]) => row([label, colours.link(url)]))] : []
174
+ ...links.length ? ["", ...links.map(([label, url]) => row([label, colours.link(url)]))] : [],
175
+ ...note?.length ? ["", ...note.map(colours.dim)] : []
172
176
  ].join("\n");
173
177
  };
178
+ var FREE_USE_LINES = FREE_USE_NOTE.split(/(?<=\?) /);
174
179
  var message = (content) => ({
175
180
  ...content,
176
181
  text: render(content, PLAIN)
@@ -217,7 +222,8 @@ var getLicenseStatusMessage = (license, tsd, now = Date.now()) => {
217
222
  color: trial.ended ? "yellow" : "green",
218
223
  headline: trial.ended ? "Your EventCatalog trial has ended" : `You're on the ${TRIAL_LENGTH_DAYS}-day EventCatalog trial`,
219
224
  rows: trialRows,
220
- links: trial.ended ? [["Get a license", LICENSE_RENEW_URL], licensing] : [licensing]
225
+ links: trial.ended ? [["Get a license", LICENSE_RENEW_URL], ["Buy Business", BUY_BUSINESS_URL], licensing] : [["Buy a license", PRICING_URL], licensing],
226
+ note: trial.ended ? FREE_USE_LINES : void 0
221
227
  });
222
228
  }
223
229
  if (license.state === "expired") {
@@ -231,7 +237,8 @@ var getLicenseStatusMessage = (license, tsd, now = Date.now()) => {
231
237
  title: "EventCatalog license",
232
238
  color: "yellow",
233
239
  headline: "Your commercial license has expired",
234
- rows: [...licensedTo, ...expiredOn, ...trialRows],
240
+ // A catalog has a license or is on the trial: an expired license is renewed, not replaced by the trial
241
+ rows: [...licensedTo, ...expiredOn],
235
242
  links: [renew, licensing]
236
243
  });
237
244
  }