@eventcatalog/core 5.0.0-beta.3 → 5.0.0-beta.30

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 (277) 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 +160 -77
  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-6OC46WQJ.js → chunk-55QETQZ3.js} +66 -35
  22. package/dist/{chunk-TQLRG35T.js → chunk-AD7CL772.js} +78 -45
  23. package/dist/chunk-CA6WCQ2T.js +54 -0
  24. package/dist/chunk-CPW6G62V.js +17 -0
  25. package/dist/{chunk-423S2KHN.js → chunk-FLAZ2JVN.js} +4 -2
  26. package/dist/{chunk-BH2F5WPN.js → chunk-GQI5UYXZ.js} +1 -1
  27. package/dist/{chunk-GYIVJXOJ.js → chunk-NA7OTBWW.js} +1 -1
  28. package/dist/{chunk-MDWB5HLO.js → chunk-NKNOXQ62.js} +1 -1
  29. package/dist/{chunk-3PKS2IIP.js → chunk-OX6TSVHY.js} +1 -1
  30. package/dist/{chunk-36RYTYT5.js → chunk-PD7KTSYN.js} +1 -1
  31. package/dist/chunk-S5GWAUG5.js +29 -0
  32. package/dist/{chunk-NDJOAITI.js → chunk-T3OROMAU.js} +9 -3
  33. package/dist/constants.cjs +1 -1
  34. package/dist/constants.js +1 -1
  35. package/dist/eventcatalog-config-file-utils.cjs +34 -41
  36. package/dist/eventcatalog-config-file-utils.d.cts +56 -58
  37. package/dist/eventcatalog-config-file-utils.d.ts +56 -58
  38. package/dist/eventcatalog-config-file-utils.js +1 -1
  39. package/dist/eventcatalog.cjs +531 -356
  40. package/dist/eventcatalog.config.d.cts +59 -1
  41. package/dist/eventcatalog.config.d.ts +59 -1
  42. package/dist/eventcatalog.js +63 -25
  43. package/dist/features.cjs +34 -41
  44. package/dist/features.js +2 -2
  45. package/dist/federation/federate.cjs +37 -44
  46. package/dist/federation/federate.js +2 -2
  47. package/dist/generate.cjs +37 -42
  48. package/dist/generate.js +4 -4
  49. package/dist/resolve-catalog-dependencies.cjs +34 -41
  50. package/dist/resolve-catalog-dependencies.js +2 -2
  51. package/dist/runtime-dependencies/@eventcatalog__visualiser__studio-fonts.css.mjs +3 -0
  52. package/dist/runtime-dependencies/@eventcatalog__visualiser__studio.css.mjs +3 -0
  53. package/dist/runtime-dependencies/@eventcatalog__visualiser__studio.mjs +3 -0
  54. package/dist/runtime-dependencies/@hocuspocus__provider.mjs +3 -0
  55. package/dist/runtime-dependencies/@hocuspocus__server.mjs +3 -0
  56. package/dist/runtime-dependencies/@mcp-b__webmcp-local-relay.mjs +3 -0
  57. package/dist/runtime-dependencies/@mcp-b__webmcp-polyfill.mjs +3 -0
  58. package/dist/runtime-dependencies/htmlparser2.mjs +3 -0
  59. package/dist/runtime-dependencies/manifest.json +13 -1
  60. package/dist/runtime-dependencies/react-hotkeys-hook.mjs +3 -0
  61. package/dist/runtime-dependencies/react-syntax-highlighter__dist__cjs__create-element.js.mjs +3 -0
  62. package/dist/runtime-dependencies/y-protocols.mjs +3 -0
  63. package/dist/runtime-dependencies/y-protocols__awareness.mjs +3 -0
  64. package/dist/runtime-dependencies/yjs.mjs +3 -0
  65. package/dist/utils/child-process-signals.cjs +53 -0
  66. package/dist/utils/child-process-signals.d.cts +19 -0
  67. package/dist/utils/child-process-signals.d.ts +19 -0
  68. package/dist/utils/child-process-signals.js +6 -0
  69. package/dist/utils/cli-logger.cjs +1 -1
  70. package/dist/utils/cli-logger.js +2 -2
  71. package/dist/utils/license-status.cjs +78 -45
  72. package/dist/utils/license-status.d.cts +15 -5
  73. package/dist/utils/license-status.d.ts +15 -5
  74. package/dist/utils/license-status.js +1 -1
  75. package/eventcatalog/astro.config.mjs +23 -1
  76. package/eventcatalog/integrations/config-loader.mjs +56 -58
  77. package/eventcatalog/integrations/skip-startup-reload.mjs +31 -0
  78. package/eventcatalog/integrations/stable-dependency-order.mjs +29 -0
  79. package/eventcatalog/integrations/storage.mjs +20 -0
  80. package/eventcatalog/integrations/studio-server.mjs +32 -0
  81. package/eventcatalog/src/components/CatalogGraph/CatalogForceGraph.tsx +39 -0
  82. package/eventcatalog/src/components/ChatPanel/ChatPanel.tsx +2 -0
  83. package/eventcatalog/src/components/Header.astro +3 -3
  84. package/eventcatalog/src/components/Homepage/CatalogDashboard.astro +342 -0
  85. package/eventcatalog/src/components/MDX/NodeGraph/AstroNodeGraph.tsx +60 -4
  86. package/eventcatalog/src/components/MDX/NodeGraph/NodeGraph.astro +5 -1
  87. package/eventcatalog/src/components/NavigationProgress.astro +7 -0
  88. package/eventcatalog/src/components/SchemaExplorer/ApiContentViewer.tsx +2 -0
  89. package/eventcatalog/src/components/SchemaExplorer/ExamplesViewer.tsx +2 -0
  90. package/eventcatalog/src/components/SchemaExplorer/SchemaCodeModal.tsx +2 -0
  91. package/eventcatalog/src/components/SchemaExplorer/SchemaContentViewer.tsx +2 -0
  92. package/eventcatalog/src/components/Search/SearchDataLoader.astro +16 -28
  93. package/eventcatalog/src/components/Search/SearchModal.tsx +2 -10
  94. package/eventcatalog/src/components/Search/search-utils.ts +26 -0
  95. package/eventcatalog/src/components/Seo.astro +5 -1
  96. package/eventcatalog/src/components/Settings/AssistantSettingsForm.tsx +53 -48
  97. package/eventcatalog/src/components/Settings/GeneralSettingsForm.tsx +183 -178
  98. package/eventcatalog/src/components/Settings/LicenseSettings.tsx +140 -31
  99. package/eventcatalog/src/components/Settings/LlmAccessSettingsForm.tsx +40 -35
  100. package/eventcatalog/src/components/Settings/LogoUpload.tsx +1 -1
  101. package/eventcatalog/src/components/Settings/McpSettingsForm.tsx +9 -8
  102. package/eventcatalog/src/components/Settings/Row.tsx +7 -4
  103. package/eventcatalog/src/components/Settings/SettingsShared.tsx +3 -3
  104. package/eventcatalog/src/components/SideNav/NestedSideBar/index.tsx +53 -83
  105. package/eventcatalog/src/components/SideNav/NestedSideBar/storage.ts +2 -0
  106. package/eventcatalog/src/components/SideNav/NestedSideBar/utils.ts +131 -0
  107. package/eventcatalog/src/components/SideNav/SideNav.astro +9 -1
  108. package/eventcatalog/src/components/TrialBadge.astro +20 -9
  109. package/eventcatalog/src/content.config.ts +19 -2
  110. package/eventcatalog/src/features/auth/error.astro +4 -2
  111. package/eventcatalog/src/features/auth/login.astro +2 -1
  112. package/eventcatalog/src/features/auth/middleware/middleware-auth.ts +10 -0
  113. package/eventcatalog/src/features/auth/unauthorized.astro +1 -1
  114. package/eventcatalog/src/features/fields/pages/fields.astro +1 -1
  115. package/eventcatalog/src/features/integrations/eventcatalog-features.ts +34 -1
  116. package/eventcatalog/src/features/mcp/apps/architecture-diagram/node-chat.tsx +6 -45
  117. package/eventcatalog/src/features/mcp/apps/canvas/shared.ts +47 -0
  118. package/eventcatalog/src/features/mcp/apps/canvas/styles.css +24 -0
  119. package/eventcatalog/src/features/mcp/apps/canvas/view.tsx +278 -0
  120. package/eventcatalog/src/features/mcp/apps/generated/canvas.html +272 -0
  121. package/eventcatalog/src/features/mcp/apps/generated/viewer.html +65 -65
  122. package/eventcatalog/src/features/mcp/apps/shared/app-view.tsx +2 -1
  123. package/eventcatalog/src/features/mcp/mcp-apps.ts +6 -3
  124. package/eventcatalog/src/features/mcp/mcp-server.ts +36 -5
  125. package/eventcatalog/src/features/server/start.ts +25 -0
  126. package/eventcatalog/src/features/storage/database.ts +88 -0
  127. package/eventcatalog/src/features/storage/migrations.ts +85 -0
  128. package/eventcatalog/src/features/storage/sql/database.sql +5 -0
  129. package/eventcatalog/src/features/storage/sql/migrations/0001-studio-canvases.sql +12 -0
  130. package/eventcatalog/src/features/storage/sql/migrations.sql +15 -0
  131. package/eventcatalog/src/features/storage/sql.ts +28 -0
  132. package/eventcatalog/src/features/studio/agent-choreography.ts +384 -0
  133. package/eventcatalog/src/features/studio/agents.ts +28 -0
  134. package/eventcatalog/src/features/studio/api/canvases-api.ts +219 -0
  135. package/eventcatalog/src/features/studio/api/canvases.ts +25 -0
  136. package/eventcatalog/src/features/studio/api/client.ts +40 -0
  137. package/eventcatalog/src/features/studio/canvas-actions.ts +540 -0
  138. package/eventcatalog/src/features/studio/canvas-preview.ts +52 -0
  139. package/eventcatalog/src/features/studio/catalog-resources.ts +155 -0
  140. package/eventcatalog/src/features/studio/catalog.ts +173 -0
  141. package/eventcatalog/src/features/studio/components/CanvasHeader.tsx +518 -0
  142. package/eventcatalog/src/features/studio/components/CanvasStatusMenu.tsx +118 -0
  143. package/eventcatalog/src/features/studio/components/ConnectAgentDialog.tsx +434 -0
  144. package/eventcatalog/src/features/studio/components/ConnectionsChooser.tsx +143 -0
  145. package/eventcatalog/src/features/studio/components/DeleteCanvasDialog.tsx +65 -0
  146. package/eventcatalog/src/features/studio/components/Dialog.tsx +60 -0
  147. package/eventcatalog/src/features/studio/components/JoinForm.tsx +109 -0
  148. package/eventcatalog/src/features/studio/components/LeftPanel.tsx +206 -0
  149. package/eventcatalog/src/features/studio/components/NodeDetails.tsx +183 -0
  150. package/eventcatalog/src/features/studio/components/OpenInStudioDialog.tsx +79 -0
  151. package/eventcatalog/src/features/studio/components/Presence.tsx +293 -0
  152. package/eventcatalog/src/features/studio/components/ShareDialog.tsx +396 -0
  153. package/eventcatalog/src/features/studio/components/ShortcutsDialog.tsx +41 -0
  154. package/eventcatalog/src/features/studio/components/StudioDesigner.tsx +2091 -0
  155. package/eventcatalog/src/features/studio/components/StudioNotice.astro +24 -0
  156. package/eventcatalog/src/features/studio/document-name.ts +7 -0
  157. package/eventcatalog/src/features/studio/from-visualiser.ts +138 -0
  158. package/eventcatalog/src/features/studio/hooks/presence-sender.ts +63 -0
  159. package/eventcatalog/src/features/studio/hooks/presence-store.ts +119 -0
  160. package/eventcatalog/src/features/studio/hooks/use-canvas-webmcp.ts +353 -0
  161. package/eventcatalog/src/features/studio/hooks/use-comments.ts +54 -0
  162. package/eventcatalog/src/features/studio/hooks/use-follow-camera.ts +109 -0
  163. package/eventcatalog/src/features/studio/hooks/use-studio-flow.ts +782 -0
  164. package/eventcatalog/src/features/studio/identity.ts +59 -0
  165. package/eventcatalog/src/features/studio/limits.ts +2 -0
  166. package/eventcatalog/src/features/studio/pages/[id].astro +69 -0
  167. package/eventcatalog/src/features/studio/pages/index.astro +784 -0
  168. package/eventcatalog/src/features/studio/pages/webmcp-relay.ts +27 -0
  169. package/eventcatalog/src/features/studio/server/canvas-mcp.ts +495 -0
  170. package/eventcatalog/src/features/studio/server/runtime.ts +498 -0
  171. package/eventcatalog/src/features/studio/server/sign-in.ts +18 -0
  172. package/eventcatalog/src/features/studio/server/sql/storage.sql +18 -0
  173. package/eventcatalog/src/features/studio/server/storage.ts +90 -0
  174. package/eventcatalog/src/features/studio/server/tool-icons.ts +30 -0
  175. package/eventcatalog/src/features/studio/tool-sync.ts +75 -0
  176. package/eventcatalog/src/layouts/BaseLayout.astro +4 -4
  177. package/eventcatalog/src/layouts/SettingsLayout.astro +2 -2
  178. package/eventcatalog/src/layouts/VerticalSideBarLayout.astro +13 -5
  179. package/eventcatalog/src/pages/_index.astro +5 -342
  180. package/eventcatalog/src/pages/architecture/[type]/[id]/[version]/_index.data.spec.ts +2 -3
  181. package/eventcatalog/src/pages/architecture/[type]/[id]/[version]/_index.data.ts +0 -7
  182. package/eventcatalog/src/pages/architecture/[type]/[id]/[version]/index.astro +3 -1
  183. package/eventcatalog/src/pages/diagrams/[id]/[version]/_index.data.ts +0 -7
  184. package/eventcatalog/src/pages/diagrams/[id]/[version]/embed.astro +1 -0
  185. package/eventcatalog/src/pages/diagrams/[id]/[version]/index.astro +1 -0
  186. package/eventcatalog/src/pages/directory/[type]/_index.data.ts +5 -7
  187. package/eventcatalog/src/pages/directory/[type]/index.astro +3 -1
  188. package/eventcatalog/src/pages/discover/[type]/_index.data.ts +5 -7
  189. package/eventcatalog/src/pages/discover/[type]/index.astro +3 -1
  190. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/[docType]/[docId]/[docVersion]/_index.data.ts +0 -7
  191. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/[docType]/[docId]/[docVersion]/index.astro +1 -0
  192. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/[docType]/[docId]/_index.data.ts +0 -7
  193. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/[docType]/[docId]/index.astro +1 -0
  194. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/_index.data.ts +0 -7
  195. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/asyncapi/[filename].astro +3 -1
  196. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/asyncapi/_[filename].data.ts +0 -7
  197. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/changelog/_index.data.ts +0 -7
  198. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/changelog/index.astro +1 -0
  199. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/examples/[...filename].astro +1 -0
  200. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/examples/_[...filename].data.ts +0 -4
  201. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/field-lineage/_index.data.ts +0 -7
  202. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/field-lineage/index.astro +1 -0
  203. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/graphql/[filename].astro +3 -1
  204. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/graphql/_[filename].data.ts +0 -7
  205. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/index.astro +1 -0
  206. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/resources/_index.data.spec.ts +2 -3
  207. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/resources/_index.data.ts +0 -7
  208. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/resources/index.astro +1 -0
  209. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/spec/[filename].astro +1 -0
  210. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/spec/_[filename].data.ts +0 -7
  211. package/eventcatalog/src/pages/docs/[type]/[id]/_index.data.ts +0 -7
  212. package/eventcatalog/src/pages/docs/[type]/[id]/index.astro +2 -1
  213. package/eventcatalog/src/pages/docs/[type]/[id]/language/[dictionaryId]/_index.data.ts +0 -7
  214. package/eventcatalog/src/pages/docs/[type]/[id]/language/[dictionaryId]/index.astro +1 -0
  215. package/eventcatalog/src/pages/docs/[type]/[id]/language/_index.data.ts +0 -7
  216. package/eventcatalog/src/pages/docs/[type]/[id]/language/index.astro +1 -0
  217. package/eventcatalog/src/pages/docs/custom/[...path]/_index.data.ts +0 -7
  218. package/eventcatalog/src/pages/docs/custom/[...path]/index.astro +1 -0
  219. package/eventcatalog/src/pages/docs/services/[id]/[docType]/[docId]/index.astro +1 -1
  220. package/eventcatalog/src/pages/docs/services/[id]/[version]/resources/index.astro +1 -0
  221. package/eventcatalog/src/pages/docs/services/[id]/asyncapi/[filename].astro +1 -1
  222. package/eventcatalog/src/pages/docs/services/[id]/changelog/index.astro +1 -1
  223. package/eventcatalog/src/pages/docs/services/[id]/graphql/[filename].astro +1 -1
  224. package/eventcatalog/src/pages/docs/services/[id]/spec/[filename].astro +1 -1
  225. package/eventcatalog/src/pages/docs/teams/[id]/_index.data.ts +0 -7
  226. package/eventcatalog/src/pages/docs/teams/[id]/index.astro +1 -0
  227. package/eventcatalog/src/pages/docs/users/[id]/_index.data.ts +0 -7
  228. package/eventcatalog/src/pages/docs/users/[id]/index.astro +1 -0
  229. package/eventcatalog/src/pages/index.astro +4 -2
  230. package/eventcatalog/src/pages/schemas/[type]/[id]/[version]/_index.data.ts +0 -7
  231. package/eventcatalog/src/pages/schemas/[type]/[id]/[version]/index.astro +1 -0
  232. package/eventcatalog/src/pages/schemas/explorer/_index.data.ts +0 -7
  233. package/eventcatalog/src/pages/schemas/explorer/index.astro +4 -2
  234. package/eventcatalog/src/pages/settings/license.astro +9 -1
  235. package/eventcatalog/src/pages/triggers/[type]/[id]/[version]/_index.data.ts +0 -7
  236. package/eventcatalog/src/pages/triggers/[type]/[id]/[version]/index.astro +1 -0
  237. package/eventcatalog/src/pages/visualiser/[type]/[id]/[version]/_index.data.ts +0 -7
  238. package/eventcatalog/src/pages/visualiser/[type]/[id]/[version]/data/_index.data.ts +0 -7
  239. package/eventcatalog/src/pages/visualiser/[type]/[id]/[version]/data/index.astro +1 -0
  240. package/eventcatalog/src/pages/visualiser/[type]/[id]/[version]/entity-map/_index.data.ts +0 -7
  241. package/eventcatalog/src/pages/visualiser/[type]/[id]/[version]/entity-map/index.astro +1 -0
  242. package/eventcatalog/src/pages/visualiser/[type]/[id]/[version]/index.astro +1 -0
  243. package/eventcatalog/src/pages/visualiser/[type]/[id]/_index.data.ts +38 -0
  244. package/eventcatalog/src/pages/visualiser/[type]/[id]/index.astro +18 -41
  245. package/eventcatalog/src/pages/visualiser/designs/[id]/_index.data.ts +0 -7
  246. package/eventcatalog/src/pages/visualiser/designs/[id]/index.astro +2 -1
  247. package/eventcatalog/src/pages/visualiser/domains/[id]/[version]/entity-map/_index.data.ts +0 -7
  248. package/eventcatalog/src/pages/visualiser/domains/[id]/[version]/entity-map/index.astro +1 -0
  249. package/eventcatalog/src/pages/visualiser/domains/[id]/[version]/index.astro +1 -0
  250. package/eventcatalog/src/pages/visualiser/domains/[id]/[version]/systems-context/_index.data.ts +0 -7
  251. package/eventcatalog/src/pages/visualiser/domains/[id]/[version]/systems-context/index.astro +1 -0
  252. package/eventcatalog/src/pages/visualiser/systems/[id]/[version]/context/_index.data.ts +0 -7
  253. package/eventcatalog/src/pages/visualiser/systems/[id]/[version]/context/index.astro +1 -0
  254. package/eventcatalog/src/pages/visualiser/systems/[id]/[version]/index.astro +1 -0
  255. package/eventcatalog/src/types/react-syntax-highlighter.d.ts +10 -0
  256. package/eventcatalog/src/utils/collections/util.ts +8 -4
  257. package/eventcatalog/src/utils/feature.ts +8 -0
  258. package/eventcatalog/src/utils/git.ts +22 -5
  259. package/eventcatalog/src/utils/homepage-dashboard.ts +143 -0
  260. package/eventcatalog/src/utils/license.ts +1 -1
  261. package/eventcatalog/src/utils/link-validation.ts +25 -19
  262. package/eventcatalog/src/utils/node-graphs/domain-entity-map.ts +3 -1
  263. package/eventcatalog/src/utils/node-graphs/domain-levels-node-graph.ts +3 -3
  264. package/eventcatalog/src/utils/node-graphs/export-mermaid.ts +0 -2
  265. package/eventcatalog/src/utils/node-graphs/field-node-graph.ts +4 -2
  266. package/eventcatalog/src/utils/node-graphs/layout-node-graph.ts +20 -1
  267. package/eventcatalog/src/utils/node-graphs/node-resource.ts +67 -0
  268. package/eventcatalog/src/utils/node-graphs/systems-node-graph.ts +1 -1
  269. package/eventcatalog/src/utils/page-loaders/hybrid-page.ts +4 -15
  270. package/eventcatalog/src/utils/page-title.ts +15 -0
  271. package/eventcatalog/src/utils/syntax-highlighter-renderer.ts +64 -0
  272. package/eventcatalog/src/utils/trial.ts +14 -1
  273. package/package.json +19 -13
  274. package/dist/runtime-dependencies/shelljs.mjs +0 -3
  275. package/eventcatalog/public/studio-bg.png +0 -0
  276. package/eventcatalog/src/components/Studio/StudioPageModal.tsx +0 -150
  277. package/eventcatalog/src/pages/studio.astro +0 -316
@@ -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
 
@@ -176,13 +169,27 @@ var verifyRequiredFieldsAreInCatalogConfigFile = async (projectDirectory) => {
176
169
  var import_os = __toESM(require("os"), 1);
177
170
 
178
171
  // package.json
179
- var version = "5.0.0-beta.3";
172
+ var version = "5.0.0-beta.30";
180
173
 
181
174
  // src/constants.ts
182
175
  var VERSION = version;
183
176
 
177
+ // src/analytics/telemetry.ts
178
+ var TELEMETRY_REQUEST_TIMEOUT_MS = 2e3;
179
+ var isOptOutEnvValue = (value) => {
180
+ if (typeof value !== "string") return false;
181
+ const normalized = value.trim().toLowerCase();
182
+ return normalized === "1" || normalized === "true";
183
+ };
184
+ var isTelemetryDisabled = (config, env) => {
185
+ if (isOptOutEnvValue(env.EVENTCATALOG_TELEMETRY_DISABLED)) return true;
186
+ if (isOptOutEnvValue(env.DO_NOT_TRACK)) return true;
187
+ return config?.telemetry === false;
188
+ };
189
+
184
190
  // src/analytics/analytics.js
185
- async function raiseEvent(eventData) {
191
+ async function raiseEvent(eventData, config) {
192
+ if (isTelemetryDisabled(config, process.env)) return;
186
193
  if (typeof eventData?.command !== "string" || typeof eventData?.cId !== "string") return;
187
194
  const url = "https://queue.simpleanalyticscdn.com/events";
188
195
  const userAgent = `@eventcatalog/eventcatalog@${VERSION} (${import_os.default.platform()}; ${import_os.default.arch()}; Node/${process.version})`;
@@ -204,7 +211,8 @@ async function raiseEvent(eventData) {
204
211
  const response = await fetch(url, {
205
212
  method: "POST",
206
213
  headers,
207
- body: JSON.stringify(payload)
214
+ body: JSON.stringify(payload),
215
+ signal: AbortSignal.timeout(TELEMETRY_REQUEST_TIMEOUT_MS)
208
216
  });
209
217
  if (!response.ok) {
210
218
  throw new Error(`Failed to raise analytics event: ${response.status}`);
@@ -281,10 +289,12 @@ function serializeCounts(counts) {
281
289
 
282
290
  // src/utils/license-status.ts
283
291
  var import_boxen = __toESM(require("boxen"), 1);
292
+ var import_picocolors = __toESM(require("picocolors"), 1);
284
293
  var import_license2 = require("@eventcatalog/license");
285
294
 
286
295
  // eventcatalog/src/utils/trial.ts
287
- var TRIAL_LENGTH_DAYS = 90;
296
+ var TRIAL_LENGTH_DAYS = 60;
297
+ 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.";
288
298
  var DAY_IN_MS = 24 * 60 * 60 * 1e3;
289
299
  var getTrialStatus = (tsd, now = Date.now()) => {
290
300
  if (typeof tsd !== "number" || !Number.isFinite(tsd) || tsd <= 0) return;
@@ -311,6 +321,57 @@ var getLicenseAnalytics = (license = { state: "none" }, tsd) => ({
311
321
  licenseExpiry: "expiresAt" in license ? license.expiresAt?.getTime() : void 0,
312
322
  trialExpiry: getTrialStatus(tsd)?.endsAt.getTime()
313
323
  });
324
+ var COLOURS = { bold: import_picocolors.default.bold, dim: import_picocolors.default.dim, link: (text) => import_picocolors.default.cyan(text) };
325
+ var FREE_USE_LINES = FREE_USE_NOTE.split(/(?<=\?) /);
326
+
327
+ // src/analytics/studio-usage.js
328
+ var import_node_fs3 = __toESM(require("fs"), 1);
329
+ var import_node_path5 = __toESM(require("path"), 1);
330
+ var DAY_IN_MS3 = 24 * 60 * 60 * 1e3;
331
+ var DEFAULT_DATABASE_PATH = ".eventcatalog/eventcatalog.db";
332
+ var getStudioMode = (configFile) => {
333
+ const enabled = configFile.studio?.enabled;
334
+ if (enabled === false) return "off";
335
+ return configFile.output === "server" && enabled === true ? "server" : "dev";
336
+ };
337
+ var getStorageType = (configFile) => configFile.storage?.type || "memory";
338
+ var loadSqlite = () => {
339
+ const emitWarning = process.emitWarning;
340
+ process.emitWarning = function(warning, ...args) {
341
+ const type = typeof args[0] === "object" ? args[0]?.type : args[0];
342
+ const message = typeof warning === "string" ? warning : warning?.message;
343
+ if (type === "ExperimentalWarning" && message?.startsWith("SQLite")) return;
344
+ return emitWarning.call(this, warning, ...args);
345
+ };
346
+ try {
347
+ return process.getBuiltinModule?.("node:sqlite");
348
+ } catch {
349
+ return void 0;
350
+ } finally {
351
+ process.emitWarning = emitWarning;
352
+ }
353
+ };
354
+ var UNKNOWN = "canvases:unknown";
355
+ var serializeStudioUsage = (projectDirectory, configFile, now = Date.now()) => {
356
+ if (getStudioMode(configFile) === "off" || getStorageType(configFile) !== "sqlite") return UNKNOWN;
357
+ const file = import_node_path5.default.resolve(projectDirectory, configFile.storage.path ?? DEFAULT_DATABASE_PATH);
358
+ if (!import_node_fs3.default.existsSync(file)) return "canvases:0,changed7d:0,changed30d:0,deleted:0";
359
+ let database;
360
+ try {
361
+ const sqlite = loadSqlite();
362
+ if (!sqlite?.DatabaseSync) return UNKNOWN;
363
+ database = new sqlite.DatabaseSync(file, { readOnly: true });
364
+ const canvases = database.prepare(
365
+ "SELECT COUNT(*) AS total, SUM(updated_at >= ?) AS changed7d, SUM(updated_at >= ?) AS changed30d FROM studio_canvases"
366
+ ).get(now - 7 * DAY_IN_MS3, now - 30 * DAY_IN_MS3);
367
+ const { deleted } = database.prepare("SELECT COUNT(*) AS deleted FROM studio_deleted_canvases").get();
368
+ return `canvases:${canvases.total},changed7d:${canvases.changed7d ?? 0},changed30d:${canvases.changed30d ?? 0},deleted:${deleted}`;
369
+ } catch {
370
+ return UNKNOWN;
371
+ } finally {
372
+ database?.close();
373
+ }
374
+ };
314
375
 
315
376
  // src/analytics/log-build.js
316
377
  var isMCPEnabled = (configFile) => configFile.output === "server" && (configFile.mcp?.enabled ?? true);
@@ -325,7 +386,9 @@ var getFeatures = async (configFile) => {
325
386
  environments: Array.isArray(configFile.environments) && configFile.environments.length > 0,
326
387
  output: configFile.output || "static",
327
388
  mcp,
328
- mcpAuth: mcp && (configFile.mcp?.auth?.enabled ?? false)
389
+ mcpAuth: mcp && (configFile.mcp?.auth?.enabled ?? false),
390
+ studio: getStudioMode(configFile),
391
+ storage: getStorageType(configFile)
329
392
  };
330
393
  };
331
394
  var getDirectoryProvider = (source) => {
@@ -367,50 +430,70 @@ var toCloudResourceCounts = (counts) => ({
367
430
  customPages: counts.customPages || 0,
368
431
  customApis: counts.customApis || 0
369
432
  });
370
- var reportCloudResourceInventory = async (configFile, resourceCounts) => {
433
+ var getEnabledCloudAnalytics = (configFile) => {
371
434
  const analytics = configFile.cloud?.analytics;
372
- if (!analytics?.enabled || !analytics.trackingId || !analytics.writeKey) return;
435
+ if (!analytics?.enabled || !analytics.trackingId || !analytics.writeKey) return null;
436
+ return analytics;
437
+ };
438
+ var reportCloudResourceInventory = async (configFile, resourceCounts) => {
439
+ const analytics = getEnabledCloudAnalytics(configFile);
440
+ if (!analytics) return;
373
441
  const endpoint = analytics.endpoint || CLOUD_ANALYTICS_ENDPOINT;
374
- await fetch(endpoint, {
375
- method: "POST",
376
- headers: {
377
- "Content-Type": "application/json",
378
- "X-EventCatalog-Analytics-Key": analytics.writeKey
379
- },
380
- body: JSON.stringify({
381
- trackingId: analytics.trackingId,
382
- event: "catalog.resource_inventory_reported",
383
- timestamp: (/* @__PURE__ */ new Date()).toISOString(),
384
- counts: toCloudResourceCounts(resourceCounts)
385
- })
386
- });
442
+ try {
443
+ await fetch(endpoint, {
444
+ method: "POST",
445
+ headers: {
446
+ "Content-Type": "application/json",
447
+ "X-EventCatalog-Analytics-Key": analytics.writeKey
448
+ },
449
+ body: JSON.stringify({
450
+ trackingId: analytics.trackingId,
451
+ event: "catalog.resource_inventory_reported",
452
+ timestamp: (/* @__PURE__ */ new Date()).toISOString(),
453
+ counts: toCloudResourceCounts(resourceCounts)
454
+ }),
455
+ signal: AbortSignal.timeout(TELEMETRY_REQUEST_TIMEOUT_MS)
456
+ });
457
+ } catch {
458
+ }
387
459
  };
388
460
  var main = async (projectDir, { command = "build", license } = {}) => {
389
461
  try {
390
462
  await verifyRequiredFieldsAreInCatalogConfigFile(projectDir);
391
463
  const configFile = await getEventCatalogConfigFile(projectDir);
464
+ if (isTelemetryDisabled(configFile, process.env)) {
465
+ if (getEnabledCloudAnalytics(configFile)) {
466
+ const resourceCounts2 = await countResources(projectDir);
467
+ await reportCloudResourceInventory(configFile, resourceCounts2);
468
+ }
469
+ return;
470
+ }
392
471
  const { cId, tsd, organizationName, generators = [] } = configFile;
393
472
  const generatorNames = generators.length > 0 ? generators.map((generator) => generator[0]) : ["none"];
394
473
  const features = await getFeatures(configFile);
395
474
  const resourceCounts = await countResources(projectDir);
396
475
  const contentHash = await hashCatalogContent(projectDir);
397
476
  await reportCloudResourceInventory(configFile, resourceCounts);
398
- await raiseEvent({
399
- command,
400
- org: organizationName,
401
- cId,
402
- // Trial start date (unix ms) from eventcatalog.config.js
403
- tsd,
404
- // Commercial license or trial, and when each expires (unix ms)
405
- ...getLicenseAnalytics(license, tsd),
406
- // CI redeploys and human-run builds are different signals; tag rather than suppress
407
- ci: process.env.CI ? "true" : "false",
408
- contentHash,
409
- generators: generatorNames.toString(),
410
- features: Object.keys(features).map((feature) => `${feature}:${features[feature]}`).join(","),
411
- directorySources: serializeDirectorySources(configFile),
412
- resources: serializeCounts(resourceCounts)
413
- });
477
+ await raiseEvent(
478
+ {
479
+ command,
480
+ org: organizationName,
481
+ cId,
482
+ // Trial start date (unix ms) from eventcatalog.config.js
483
+ tsd,
484
+ // Commercial license or trial, and when each expires (unix ms)
485
+ ...getLicenseAnalytics(license, tsd),
486
+ // CI redeploys and human-run builds are different signals; tag rather than suppress
487
+ ci: process.env.CI ? "true" : "false",
488
+ contentHash,
489
+ generators: generatorNames.toString(),
490
+ features: Object.keys(features).map((feature) => `${feature}:${features[feature]}`).join(","),
491
+ directorySources: serializeDirectorySources(configFile),
492
+ resources: serializeCounts(resourceCounts),
493
+ studio: serializeStudioUsage(projectDir, configFile)
494
+ },
495
+ configFile
496
+ );
414
497
  } catch (error) {
415
498
  }
416
499
  };
@@ -3,10 +3,10 @@ import { L as LicenseStatus } from '../license-C1y-56bb.cjs';
3
3
  /**
4
4
  *
5
5
  * @param {string} projectDir
6
- * @param {{ command?: 'build' | 'dev', license?: import('../utils/license-status').LicenseStatus }} [options]
6
+ * @param {{ command?: 'build' | 'dev' | 'start', license?: import('../utils/license-status').LicenseStatus }} [options]
7
7
  */
8
8
  declare function main(projectDir: string, { command, license }?: {
9
- command?: "build" | "dev";
9
+ command?: "build" | "dev" | "start";
10
10
  license?: LicenseStatus;
11
11
  }): Promise<void>;
12
12
 
@@ -3,10 +3,10 @@ import { L as LicenseStatus } from '../license-C1y-56bb.js';
3
3
  /**
4
4
  *
5
5
  * @param {string} projectDir
6
- * @param {{ command?: 'build' | 'dev', license?: import('../utils/license-status').LicenseStatus }} [options]
6
+ * @param {{ command?: 'build' | 'dev' | 'start', license?: import('../utils/license-status').LicenseStatus }} [options]
7
7
  */
8
8
  declare function main(projectDir: string, { command, license }?: {
9
- command?: "build" | "dev";
9
+ command?: "build" | "dev" | "start";
10
10
  license?: LicenseStatus;
11
11
  }): Promise<void>;
12
12
 
@@ -1,11 +1,13 @@
1
1
  import {
2
2
  log_build_default
3
- } from "../chunk-6OC46WQJ.js";
4
- import "../chunk-TQLRG35T.js";
3
+ } from "../chunk-55QETQZ3.js";
4
+ import "../chunk-AD7CL772.js";
5
5
  import "../chunk-ZAZHAVKB.js";
6
- import "../chunk-NDJOAITI.js";
7
- import "../chunk-GYIVJXOJ.js";
8
- import "../chunk-RFIXKATC.js";
6
+ import "../chunk-CA6WCQ2T.js";
7
+ import "../chunk-T3OROMAU.js";
8
+ import "../chunk-CPW6G62V.js";
9
+ import "../chunk-NA7OTBWW.js";
10
+ import "../chunk-4G7FSRPN.js";
9
11
  export {
10
12
  log_build_default as default
11
13
  };
@@ -0,0 +1,90 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+
30
+ // src/analytics/studio-usage.js
31
+ var studio_usage_exports = {};
32
+ __export(studio_usage_exports, {
33
+ getStorageType: () => getStorageType,
34
+ getStudioMode: () => getStudioMode,
35
+ serializeStudioUsage: () => serializeStudioUsage
36
+ });
37
+ module.exports = __toCommonJS(studio_usage_exports);
38
+ var import_node_fs = __toESM(require("fs"), 1);
39
+ var import_node_path = __toESM(require("path"), 1);
40
+ var DAY_IN_MS = 24 * 60 * 60 * 1e3;
41
+ var DEFAULT_DATABASE_PATH = ".eventcatalog/eventcatalog.db";
42
+ var getStudioMode = (configFile) => {
43
+ const enabled = configFile.studio?.enabled;
44
+ if (enabled === false) return "off";
45
+ return configFile.output === "server" && enabled === true ? "server" : "dev";
46
+ };
47
+ var getStorageType = (configFile) => configFile.storage?.type || "memory";
48
+ var loadSqlite = () => {
49
+ const emitWarning = process.emitWarning;
50
+ process.emitWarning = function(warning, ...args) {
51
+ const type = typeof args[0] === "object" ? args[0]?.type : args[0];
52
+ const message = typeof warning === "string" ? warning : warning?.message;
53
+ if (type === "ExperimentalWarning" && message?.startsWith("SQLite")) return;
54
+ return emitWarning.call(this, warning, ...args);
55
+ };
56
+ try {
57
+ return process.getBuiltinModule?.("node:sqlite");
58
+ } catch {
59
+ return void 0;
60
+ } finally {
61
+ process.emitWarning = emitWarning;
62
+ }
63
+ };
64
+ var UNKNOWN = "canvases:unknown";
65
+ var serializeStudioUsage = (projectDirectory, configFile, now = Date.now()) => {
66
+ if (getStudioMode(configFile) === "off" || getStorageType(configFile) !== "sqlite") return UNKNOWN;
67
+ const file = import_node_path.default.resolve(projectDirectory, configFile.storage.path ?? DEFAULT_DATABASE_PATH);
68
+ if (!import_node_fs.default.existsSync(file)) return "canvases:0,changed7d:0,changed30d:0,deleted:0";
69
+ let database;
70
+ try {
71
+ const sqlite = loadSqlite();
72
+ if (!sqlite?.DatabaseSync) return UNKNOWN;
73
+ database = new sqlite.DatabaseSync(file, { readOnly: true });
74
+ const canvases = database.prepare(
75
+ "SELECT COUNT(*) AS total, SUM(updated_at >= ?) AS changed7d, SUM(updated_at >= ?) AS changed30d FROM studio_canvases"
76
+ ).get(now - 7 * DAY_IN_MS, now - 30 * DAY_IN_MS);
77
+ const { deleted } = database.prepare("SELECT COUNT(*) AS deleted FROM studio_deleted_canvases").get();
78
+ return `canvases:${canvases.total},changed7d:${canvases.changed7d ?? 0},changed30d:${canvases.changed30d ?? 0},deleted:${deleted}`;
79
+ } catch {
80
+ return UNKNOWN;
81
+ } finally {
82
+ database?.close();
83
+ }
84
+ };
85
+ // Annotate the CommonJS export names for ESM import in node:
86
+ 0 && (module.exports = {
87
+ getStorageType,
88
+ getStudioMode,
89
+ serializeStudioUsage
90
+ });
@@ -0,0 +1,5 @@
1
+ declare function getStudioMode(configFile: any): "off" | "server" | "dev";
2
+ declare function getStorageType(configFile: any): any;
3
+ declare function serializeStudioUsage(projectDirectory: any, configFile: any, now?: number): string;
4
+
5
+ export { getStorageType, getStudioMode, serializeStudioUsage };
@@ -0,0 +1,5 @@
1
+ declare function getStudioMode(configFile: any): "off" | "server" | "dev";
2
+ declare function getStorageType(configFile: any): any;
3
+ declare function serializeStudioUsage(projectDirectory: any, configFile: any, now?: number): string;
4
+
5
+ export { getStorageType, getStudioMode, serializeStudioUsage };
@@ -0,0 +1,10 @@
1
+ import {
2
+ getStorageType,
3
+ getStudioMode,
4
+ serializeStudioUsage
5
+ } from "../chunk-CA6WCQ2T.js";
6
+ export {
7
+ getStorageType,
8
+ getStudioMode,
9
+ serializeStudioUsage
10
+ };
@@ -0,0 +1,42 @@
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/analytics/telemetry.ts
21
+ var telemetry_exports = {};
22
+ __export(telemetry_exports, {
23
+ TELEMETRY_REQUEST_TIMEOUT_MS: () => TELEMETRY_REQUEST_TIMEOUT_MS,
24
+ isTelemetryDisabled: () => isTelemetryDisabled
25
+ });
26
+ module.exports = __toCommonJS(telemetry_exports);
27
+ var TELEMETRY_REQUEST_TIMEOUT_MS = 2e3;
28
+ var isOptOutEnvValue = (value) => {
29
+ if (typeof value !== "string") return false;
30
+ const normalized = value.trim().toLowerCase();
31
+ return normalized === "1" || normalized === "true";
32
+ };
33
+ var isTelemetryDisabled = (config, env) => {
34
+ if (isOptOutEnvValue(env.EVENTCATALOG_TELEMETRY_DISABLED)) return true;
35
+ if (isOptOutEnvValue(env.DO_NOT_TRACK)) return true;
36
+ return config?.telemetry === false;
37
+ };
38
+ // Annotate the CommonJS export names for ESM import in node:
39
+ 0 && (module.exports = {
40
+ TELEMETRY_REQUEST_TIMEOUT_MS,
41
+ isTelemetryDisabled
42
+ });
@@ -0,0 +1,20 @@
1
+ /** How long a telemetry request may take before it is aborted. */
2
+ declare const TELEMETRY_REQUEST_TIMEOUT_MS = 2000;
3
+ type TelemetryConfig = {
4
+ telemetry?: boolean;
5
+ };
6
+ type TelemetryEnv = {
7
+ EVENTCATALOG_TELEMETRY_DISABLED?: string;
8
+ DO_NOT_TRACK?: string;
9
+ };
10
+ /**
11
+ * Anonymous telemetry is on unless the catalog opts out.
12
+ * Opt out with EVENTCATALOG_TELEMETRY_DISABLED or DO_NOT_TRACK set to "1" or "true"
13
+ * (any case), or with telemetry: false in eventcatalog.config.js.
14
+ *
15
+ * packages/create-eventcatalog/templates/telemetry.ts copies the env rules and
16
+ * TELEMETRY_REQUEST_TIMEOUT_MS. Keep that copy in sync.
17
+ */
18
+ declare const isTelemetryDisabled: (config: TelemetryConfig | null | undefined, env: TelemetryEnv) => boolean;
19
+
20
+ export { TELEMETRY_REQUEST_TIMEOUT_MS, isTelemetryDisabled };
@@ -0,0 +1,20 @@
1
+ /** How long a telemetry request may take before it is aborted. */
2
+ declare const TELEMETRY_REQUEST_TIMEOUT_MS = 2000;
3
+ type TelemetryConfig = {
4
+ telemetry?: boolean;
5
+ };
6
+ type TelemetryEnv = {
7
+ EVENTCATALOG_TELEMETRY_DISABLED?: string;
8
+ DO_NOT_TRACK?: string;
9
+ };
10
+ /**
11
+ * Anonymous telemetry is on unless the catalog opts out.
12
+ * Opt out with EVENTCATALOG_TELEMETRY_DISABLED or DO_NOT_TRACK set to "1" or "true"
13
+ * (any case), or with telemetry: false in eventcatalog.config.js.
14
+ *
15
+ * packages/create-eventcatalog/templates/telemetry.ts copies the env rules and
16
+ * TELEMETRY_REQUEST_TIMEOUT_MS. Keep that copy in sync.
17
+ */
18
+ declare const isTelemetryDisabled: (config: TelemetryConfig | null | undefined, env: TelemetryEnv) => boolean;
19
+
20
+ export { TELEMETRY_REQUEST_TIMEOUT_MS, isTelemetryDisabled };
@@ -0,0 +1,8 @@
1
+ import {
2
+ TELEMETRY_REQUEST_TIMEOUT_MS,
3
+ isTelemetryDisabled
4
+ } from "../chunk-CPW6G62V.js";
5
+ export {
6
+ TELEMETRY_REQUEST_TIMEOUT_MS,
7
+ isTelemetryDisabled
8
+ };
@@ -36,7 +36,7 @@ __export(catalog_runtime_exports, {
36
36
  });
37
37
  module.exports = __toCommonJS(catalog_runtime_exports);
38
38
 
39
- // ../../node_modules/.pnpm/tsup@8.5.0_jiti@2.7.0_postcss@8.5.15_tsx@4.21.0_typescript@5.9.3_yaml@2.9.0/node_modules/tsup/assets/cjs_shims.js
39
+ // ../../node_modules/.pnpm/tsup@8.5.0_jiti@2.7.0_postcss@8.5.29_tsx@4.23.15_typescript@5.9.3_yaml@2.9.1/node_modules/tsup/assets/cjs_shims.js
40
40
  var getImportMetaUrl = () => typeof document === "undefined" ? new URL(`file:${__filename}`).href : document.currentScript && document.currentScript.src || new URL("main.js", document.baseURI).href;
41
41
  var importMetaUrl = /* @__PURE__ */ getImportMetaUrl();
42
42