@eventcatalog/core 5.0.0-beta.3 → 5.0.0-beta.31
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.
- package/LICENSE +234 -134
- package/README.md +5 -5
- package/dist/analytics/analytics.cjs +18 -3
- package/dist/analytics/analytics.d.cts +1 -1
- package/dist/analytics/analytics.d.ts +1 -1
- package/dist/analytics/analytics.js +3 -2
- package/dist/analytics/log-build.cjs +160 -77
- package/dist/analytics/log-build.d.cts +2 -2
- package/dist/analytics/log-build.d.ts +2 -2
- package/dist/analytics/log-build.js +7 -5
- package/dist/analytics/studio-usage.cjs +90 -0
- package/dist/analytics/studio-usage.d.cts +5 -0
- package/dist/analytics/studio-usage.d.ts +5 -0
- package/dist/analytics/studio-usage.js +10 -0
- package/dist/analytics/telemetry.cjs +42 -0
- package/dist/analytics/telemetry.d.cts +20 -0
- package/dist/analytics/telemetry.d.ts +20 -0
- package/dist/analytics/telemetry.js +8 -0
- package/dist/catalog-runtime.cjs +1 -1
- package/dist/{chunk-BH2F5WPN.js → chunk-2UCCTEIH.js} +1 -1
- package/dist/{chunk-RFIXKATC.js → chunk-4G7FSRPN.js} +35 -42
- package/dist/{chunk-TQLRG35T.js → chunk-AD7CL772.js} +78 -45
- package/dist/{chunk-NDJOAITI.js → chunk-BNSLGNQI.js} +9 -3
- package/dist/chunk-CA6WCQ2T.js +54 -0
- package/dist/chunk-CPW6G62V.js +17 -0
- package/dist/{chunk-MDWB5HLO.js → chunk-NKNOXQ62.js} +1 -1
- package/dist/{chunk-423S2KHN.js → chunk-OUEGYMBA.js} +4 -2
- package/dist/{chunk-3PKS2IIP.js → chunk-OX6TSVHY.js} +1 -1
- package/dist/{chunk-36RYTYT5.js → chunk-PD7KTSYN.js} +1 -1
- package/dist/chunk-S5GWAUG5.js +29 -0
- package/dist/{chunk-GYIVJXOJ.js → chunk-WADZVNCA.js} +1 -1
- package/dist/{chunk-6OC46WQJ.js → chunk-XRFL642Z.js} +66 -35
- package/dist/constants.cjs +1 -1
- package/dist/constants.js +1 -1
- package/dist/eventcatalog-config-file-utils.cjs +34 -41
- package/dist/eventcatalog-config-file-utils.d.cts +56 -58
- package/dist/eventcatalog-config-file-utils.d.ts +56 -58
- package/dist/eventcatalog-config-file-utils.js +1 -1
- package/dist/eventcatalog.cjs +531 -356
- package/dist/eventcatalog.config.d.cts +59 -1
- package/dist/eventcatalog.config.d.ts +59 -1
- package/dist/eventcatalog.js +63 -25
- package/dist/features.cjs +34 -41
- package/dist/features.js +2 -2
- package/dist/federation/federate.cjs +37 -44
- package/dist/federation/federate.js +2 -2
- package/dist/generate.cjs +37 -42
- package/dist/generate.js +4 -4
- package/dist/resolve-catalog-dependencies.cjs +34 -41
- package/dist/resolve-catalog-dependencies.js +2 -2
- package/dist/runtime-dependencies/@eventcatalog__visualiser__studio-fonts.css.mjs +3 -0
- package/dist/runtime-dependencies/@eventcatalog__visualiser__studio.css.mjs +3 -0
- package/dist/runtime-dependencies/@eventcatalog__visualiser__studio.mjs +3 -0
- package/dist/runtime-dependencies/@hocuspocus__provider.mjs +3 -0
- package/dist/runtime-dependencies/@hocuspocus__server.mjs +3 -0
- package/dist/runtime-dependencies/@mcp-b__webmcp-local-relay.mjs +3 -0
- package/dist/runtime-dependencies/@mcp-b__webmcp-polyfill.mjs +3 -0
- package/dist/runtime-dependencies/htmlparser2.mjs +3 -0
- package/dist/runtime-dependencies/manifest.json +13 -1
- package/dist/runtime-dependencies/react-hotkeys-hook.mjs +3 -0
- package/dist/runtime-dependencies/react-syntax-highlighter__dist__cjs__create-element.js.mjs +3 -0
- package/dist/runtime-dependencies/y-protocols.mjs +3 -0
- package/dist/runtime-dependencies/y-protocols__awareness.mjs +3 -0
- package/dist/runtime-dependencies/yjs.mjs +3 -0
- package/dist/utils/child-process-signals.cjs +53 -0
- package/dist/utils/child-process-signals.d.cts +19 -0
- package/dist/utils/child-process-signals.d.ts +19 -0
- package/dist/utils/child-process-signals.js +6 -0
- package/dist/utils/cli-logger.cjs +1 -1
- package/dist/utils/cli-logger.js +2 -2
- package/dist/utils/license-status.cjs +78 -45
- package/dist/utils/license-status.d.cts +15 -5
- package/dist/utils/license-status.d.ts +15 -5
- package/dist/utils/license-status.js +1 -1
- package/eventcatalog/astro.config.mjs +23 -1
- package/eventcatalog/integrations/config-loader.mjs +56 -58
- package/eventcatalog/integrations/skip-startup-reload.mjs +31 -0
- package/eventcatalog/integrations/stable-dependency-order.mjs +29 -0
- package/eventcatalog/integrations/storage.mjs +20 -0
- package/eventcatalog/integrations/studio-server.mjs +32 -0
- package/eventcatalog/src/components/CatalogGraph/CatalogForceGraph.tsx +39 -0
- package/eventcatalog/src/components/ChatPanel/ChatPanel.tsx +2 -0
- package/eventcatalog/src/components/Header.astro +3 -3
- package/eventcatalog/src/components/Homepage/CatalogDashboard.astro +342 -0
- package/eventcatalog/src/components/MDX/NodeGraph/AstroNodeGraph.tsx +60 -4
- package/eventcatalog/src/components/MDX/NodeGraph/NodeGraph.astro +5 -1
- package/eventcatalog/src/components/NavigationProgress.astro +7 -0
- package/eventcatalog/src/components/SchemaExplorer/ApiContentViewer.tsx +2 -0
- package/eventcatalog/src/components/SchemaExplorer/ExamplesViewer.tsx +2 -0
- package/eventcatalog/src/components/SchemaExplorer/SchemaCodeModal.tsx +2 -0
- package/eventcatalog/src/components/SchemaExplorer/SchemaContentViewer.tsx +2 -0
- package/eventcatalog/src/components/Search/SearchDataLoader.astro +16 -28
- package/eventcatalog/src/components/Search/SearchModal.tsx +2 -10
- package/eventcatalog/src/components/Search/search-utils.ts +26 -0
- package/eventcatalog/src/components/Seo.astro +5 -1
- package/eventcatalog/src/components/Settings/AssistantSettingsForm.tsx +53 -48
- package/eventcatalog/src/components/Settings/GeneralSettingsForm.tsx +183 -178
- package/eventcatalog/src/components/Settings/LicenseSettings.tsx +140 -31
- package/eventcatalog/src/components/Settings/LlmAccessSettingsForm.tsx +40 -35
- package/eventcatalog/src/components/Settings/LogoUpload.tsx +1 -1
- package/eventcatalog/src/components/Settings/McpSettingsForm.tsx +9 -8
- package/eventcatalog/src/components/Settings/Row.tsx +7 -4
- package/eventcatalog/src/components/Settings/SettingsShared.tsx +3 -3
- package/eventcatalog/src/components/SideNav/NestedSideBar/index.tsx +53 -83
- package/eventcatalog/src/components/SideNav/NestedSideBar/storage.ts +2 -0
- package/eventcatalog/src/components/SideNav/NestedSideBar/utils.ts +131 -0
- package/eventcatalog/src/components/SideNav/SideNav.astro +9 -1
- package/eventcatalog/src/components/TrialBadge.astro +20 -9
- package/eventcatalog/src/content.config.ts +19 -2
- package/eventcatalog/src/features/auth/error.astro +4 -2
- package/eventcatalog/src/features/auth/login.astro +2 -1
- package/eventcatalog/src/features/auth/middleware/middleware-auth.ts +10 -0
- package/eventcatalog/src/features/auth/unauthorized.astro +1 -1
- package/eventcatalog/src/features/fields/pages/fields.astro +1 -1
- package/eventcatalog/src/features/integrations/eventcatalog-features.ts +34 -1
- package/eventcatalog/src/features/mcp/apps/architecture-diagram/node-chat.tsx +6 -45
- package/eventcatalog/src/features/mcp/apps/canvas/shared.ts +47 -0
- package/eventcatalog/src/features/mcp/apps/canvas/styles.css +24 -0
- package/eventcatalog/src/features/mcp/apps/canvas/view.tsx +278 -0
- package/eventcatalog/src/features/mcp/apps/generated/canvas.html +272 -0
- package/eventcatalog/src/features/mcp/apps/generated/viewer.html +65 -65
- package/eventcatalog/src/features/mcp/apps/shared/app-view.tsx +2 -1
- package/eventcatalog/src/features/mcp/mcp-apps.ts +6 -3
- package/eventcatalog/src/features/mcp/mcp-server.ts +36 -5
- package/eventcatalog/src/features/server/start.ts +25 -0
- package/eventcatalog/src/features/storage/database.ts +88 -0
- package/eventcatalog/src/features/storage/migrations.ts +85 -0
- package/eventcatalog/src/features/storage/sql/database.sql +5 -0
- package/eventcatalog/src/features/storage/sql/migrations/0001-studio-canvases.sql +12 -0
- package/eventcatalog/src/features/storage/sql/migrations.sql +15 -0
- package/eventcatalog/src/features/storage/sql.ts +28 -0
- package/eventcatalog/src/features/studio/agent-choreography.ts +384 -0
- package/eventcatalog/src/features/studio/agents.ts +28 -0
- package/eventcatalog/src/features/studio/api/canvases-api.ts +219 -0
- package/eventcatalog/src/features/studio/api/canvases.ts +25 -0
- package/eventcatalog/src/features/studio/api/client.ts +40 -0
- package/eventcatalog/src/features/studio/canvas-actions.ts +540 -0
- package/eventcatalog/src/features/studio/canvas-preview.ts +52 -0
- package/eventcatalog/src/features/studio/catalog-resources.ts +155 -0
- package/eventcatalog/src/features/studio/catalog.ts +173 -0
- package/eventcatalog/src/features/studio/components/CanvasHeader.tsx +518 -0
- package/eventcatalog/src/features/studio/components/CanvasStatusMenu.tsx +118 -0
- package/eventcatalog/src/features/studio/components/ConnectAgentDialog.tsx +434 -0
- package/eventcatalog/src/features/studio/components/ConnectionsChooser.tsx +143 -0
- package/eventcatalog/src/features/studio/components/DeleteCanvasDialog.tsx +65 -0
- package/eventcatalog/src/features/studio/components/Dialog.tsx +60 -0
- package/eventcatalog/src/features/studio/components/JoinForm.tsx +109 -0
- package/eventcatalog/src/features/studio/components/LeftPanel.tsx +206 -0
- package/eventcatalog/src/features/studio/components/NodeDetails.tsx +183 -0
- package/eventcatalog/src/features/studio/components/OpenInStudioDialog.tsx +79 -0
- package/eventcatalog/src/features/studio/components/Presence.tsx +293 -0
- package/eventcatalog/src/features/studio/components/ShareDialog.tsx +396 -0
- package/eventcatalog/src/features/studio/components/ShortcutsDialog.tsx +41 -0
- package/eventcatalog/src/features/studio/components/StudioDesigner.tsx +2091 -0
- package/eventcatalog/src/features/studio/components/StudioNotice.astro +24 -0
- package/eventcatalog/src/features/studio/document-name.ts +7 -0
- package/eventcatalog/src/features/studio/from-visualiser.ts +138 -0
- package/eventcatalog/src/features/studio/hooks/presence-sender.ts +63 -0
- package/eventcatalog/src/features/studio/hooks/presence-store.ts +119 -0
- package/eventcatalog/src/features/studio/hooks/use-canvas-webmcp.ts +353 -0
- package/eventcatalog/src/features/studio/hooks/use-comments.ts +54 -0
- package/eventcatalog/src/features/studio/hooks/use-follow-camera.ts +109 -0
- package/eventcatalog/src/features/studio/hooks/use-studio-flow.ts +782 -0
- package/eventcatalog/src/features/studio/identity.ts +59 -0
- package/eventcatalog/src/features/studio/limits.ts +2 -0
- package/eventcatalog/src/features/studio/pages/[id].astro +69 -0
- package/eventcatalog/src/features/studio/pages/index.astro +784 -0
- package/eventcatalog/src/features/studio/pages/webmcp-relay.ts +27 -0
- package/eventcatalog/src/features/studio/server/canvas-mcp.ts +495 -0
- package/eventcatalog/src/features/studio/server/runtime.ts +498 -0
- package/eventcatalog/src/features/studio/server/sign-in.ts +18 -0
- package/eventcatalog/src/features/studio/server/sql/storage.sql +18 -0
- package/eventcatalog/src/features/studio/server/storage.ts +90 -0
- package/eventcatalog/src/features/studio/server/tool-icons.ts +30 -0
- package/eventcatalog/src/features/studio/tool-sync.ts +75 -0
- package/eventcatalog/src/layouts/BaseLayout.astro +4 -4
- package/eventcatalog/src/layouts/SettingsLayout.astro +2 -2
- package/eventcatalog/src/layouts/VerticalSideBarLayout.astro +13 -5
- package/eventcatalog/src/pages/_index.astro +5 -342
- package/eventcatalog/src/pages/architecture/[type]/[id]/[version]/_index.data.spec.ts +2 -3
- package/eventcatalog/src/pages/architecture/[type]/[id]/[version]/_index.data.ts +0 -7
- package/eventcatalog/src/pages/architecture/[type]/[id]/[version]/index.astro +3 -1
- package/eventcatalog/src/pages/diagrams/[id]/[version]/_index.data.ts +0 -7
- package/eventcatalog/src/pages/diagrams/[id]/[version]/embed.astro +1 -0
- package/eventcatalog/src/pages/diagrams/[id]/[version]/index.astro +1 -0
- package/eventcatalog/src/pages/directory/[type]/_index.data.ts +5 -7
- package/eventcatalog/src/pages/directory/[type]/index.astro +3 -1
- package/eventcatalog/src/pages/discover/[type]/_index.data.ts +5 -7
- package/eventcatalog/src/pages/discover/[type]/index.astro +3 -1
- package/eventcatalog/src/pages/docs/[type]/[id]/[version]/[docType]/[docId]/[docVersion]/_index.data.ts +0 -7
- package/eventcatalog/src/pages/docs/[type]/[id]/[version]/[docType]/[docId]/[docVersion]/index.astro +1 -0
- package/eventcatalog/src/pages/docs/[type]/[id]/[version]/[docType]/[docId]/_index.data.ts +0 -7
- package/eventcatalog/src/pages/docs/[type]/[id]/[version]/[docType]/[docId]/index.astro +1 -0
- package/eventcatalog/src/pages/docs/[type]/[id]/[version]/_index.data.ts +0 -7
- package/eventcatalog/src/pages/docs/[type]/[id]/[version]/asyncapi/[filename].astro +3 -1
- package/eventcatalog/src/pages/docs/[type]/[id]/[version]/asyncapi/_[filename].data.ts +0 -7
- package/eventcatalog/src/pages/docs/[type]/[id]/[version]/changelog/_index.data.ts +0 -7
- package/eventcatalog/src/pages/docs/[type]/[id]/[version]/changelog/index.astro +1 -0
- package/eventcatalog/src/pages/docs/[type]/[id]/[version]/examples/[...filename].astro +1 -0
- package/eventcatalog/src/pages/docs/[type]/[id]/[version]/examples/_[...filename].data.ts +0 -4
- package/eventcatalog/src/pages/docs/[type]/[id]/[version]/field-lineage/_index.data.ts +0 -7
- package/eventcatalog/src/pages/docs/[type]/[id]/[version]/field-lineage/index.astro +1 -0
- package/eventcatalog/src/pages/docs/[type]/[id]/[version]/graphql/[filename].astro +3 -1
- package/eventcatalog/src/pages/docs/[type]/[id]/[version]/graphql/_[filename].data.ts +0 -7
- package/eventcatalog/src/pages/docs/[type]/[id]/[version]/index.astro +1 -0
- package/eventcatalog/src/pages/docs/[type]/[id]/[version]/resources/_index.data.spec.ts +2 -3
- package/eventcatalog/src/pages/docs/[type]/[id]/[version]/resources/_index.data.ts +0 -7
- package/eventcatalog/src/pages/docs/[type]/[id]/[version]/resources/index.astro +1 -0
- package/eventcatalog/src/pages/docs/[type]/[id]/[version]/spec/[filename].astro +1 -0
- package/eventcatalog/src/pages/docs/[type]/[id]/[version]/spec/_[filename].data.ts +0 -7
- package/eventcatalog/src/pages/docs/[type]/[id]/_index.data.ts +0 -7
- package/eventcatalog/src/pages/docs/[type]/[id]/index.astro +2 -1
- package/eventcatalog/src/pages/docs/[type]/[id]/language/[dictionaryId]/_index.data.ts +0 -7
- package/eventcatalog/src/pages/docs/[type]/[id]/language/[dictionaryId]/index.astro +1 -0
- package/eventcatalog/src/pages/docs/[type]/[id]/language/_index.data.ts +0 -7
- package/eventcatalog/src/pages/docs/[type]/[id]/language/index.astro +1 -0
- package/eventcatalog/src/pages/docs/custom/[...path]/_index.data.ts +0 -7
- package/eventcatalog/src/pages/docs/custom/[...path]/index.astro +1 -0
- package/eventcatalog/src/pages/docs/services/[id]/[docType]/[docId]/index.astro +1 -1
- package/eventcatalog/src/pages/docs/services/[id]/[version]/resources/index.astro +1 -0
- package/eventcatalog/src/pages/docs/services/[id]/asyncapi/[filename].astro +1 -1
- package/eventcatalog/src/pages/docs/services/[id]/changelog/index.astro +1 -1
- package/eventcatalog/src/pages/docs/services/[id]/graphql/[filename].astro +1 -1
- package/eventcatalog/src/pages/docs/services/[id]/spec/[filename].astro +1 -1
- package/eventcatalog/src/pages/docs/teams/[id]/_index.data.ts +0 -7
- package/eventcatalog/src/pages/docs/teams/[id]/index.astro +1 -0
- package/eventcatalog/src/pages/docs/users/[id]/_index.data.ts +0 -7
- package/eventcatalog/src/pages/docs/users/[id]/index.astro +1 -0
- package/eventcatalog/src/pages/index.astro +4 -2
- package/eventcatalog/src/pages/schemas/[type]/[id]/[version]/_index.data.ts +0 -7
- package/eventcatalog/src/pages/schemas/[type]/[id]/[version]/index.astro +1 -0
- package/eventcatalog/src/pages/schemas/explorer/_index.data.ts +0 -7
- package/eventcatalog/src/pages/schemas/explorer/index.astro +4 -2
- package/eventcatalog/src/pages/settings/license.astro +9 -1
- package/eventcatalog/src/pages/triggers/[type]/[id]/[version]/_index.data.ts +0 -7
- package/eventcatalog/src/pages/triggers/[type]/[id]/[version]/index.astro +1 -0
- package/eventcatalog/src/pages/visualiser/[type]/[id]/[version]/_index.data.ts +0 -7
- package/eventcatalog/src/pages/visualiser/[type]/[id]/[version]/data/_index.data.ts +0 -7
- package/eventcatalog/src/pages/visualiser/[type]/[id]/[version]/data/index.astro +1 -0
- package/eventcatalog/src/pages/visualiser/[type]/[id]/[version]/entity-map/_index.data.ts +0 -7
- package/eventcatalog/src/pages/visualiser/[type]/[id]/[version]/entity-map/index.astro +1 -0
- package/eventcatalog/src/pages/visualiser/[type]/[id]/[version]/index.astro +1 -0
- package/eventcatalog/src/pages/visualiser/[type]/[id]/_index.data.ts +38 -0
- package/eventcatalog/src/pages/visualiser/[type]/[id]/index.astro +18 -41
- package/eventcatalog/src/pages/visualiser/designs/[id]/_index.data.ts +0 -7
- package/eventcatalog/src/pages/visualiser/designs/[id]/index.astro +2 -1
- package/eventcatalog/src/pages/visualiser/domains/[id]/[version]/entity-map/_index.data.ts +0 -7
- package/eventcatalog/src/pages/visualiser/domains/[id]/[version]/entity-map/index.astro +1 -0
- package/eventcatalog/src/pages/visualiser/domains/[id]/[version]/index.astro +1 -0
- package/eventcatalog/src/pages/visualiser/domains/[id]/[version]/systems-context/_index.data.ts +0 -7
- package/eventcatalog/src/pages/visualiser/domains/[id]/[version]/systems-context/index.astro +1 -0
- package/eventcatalog/src/pages/visualiser/systems/[id]/[version]/context/_index.data.ts +0 -7
- package/eventcatalog/src/pages/visualiser/systems/[id]/[version]/context/index.astro +1 -0
- package/eventcatalog/src/pages/visualiser/systems/[id]/[version]/index.astro +1 -0
- package/eventcatalog/src/types/react-syntax-highlighter.d.ts +10 -0
- package/eventcatalog/src/utils/collections/util.ts +8 -4
- package/eventcatalog/src/utils/feature.ts +8 -0
- package/eventcatalog/src/utils/git.ts +22 -5
- package/eventcatalog/src/utils/homepage-dashboard.ts +143 -0
- package/eventcatalog/src/utils/license.ts +1 -1
- package/eventcatalog/src/utils/link-validation.ts +25 -19
- package/eventcatalog/src/utils/node-graphs/domain-entity-map.ts +3 -1
- package/eventcatalog/src/utils/node-graphs/domain-levels-node-graph.ts +3 -3
- package/eventcatalog/src/utils/node-graphs/export-mermaid.ts +0 -2
- package/eventcatalog/src/utils/node-graphs/field-node-graph.ts +4 -2
- package/eventcatalog/src/utils/node-graphs/layout-node-graph.ts +20 -1
- package/eventcatalog/src/utils/node-graphs/node-resource.ts +67 -0
- package/eventcatalog/src/utils/node-graphs/systems-node-graph.ts +1 -1
- package/eventcatalog/src/utils/page-loaders/hybrid-page.ts +4 -15
- package/eventcatalog/src/utils/page-title.ts +15 -0
- package/eventcatalog/src/utils/syntax-highlighter-renderer.ts +64 -0
- package/eventcatalog/src/utils/trial.ts +14 -1
- package/package.json +19 -13
- package/dist/runtime-dependencies/shelljs.mjs +0 -3
- package/eventcatalog/public/studio-bg.png +0 -0
- package/eventcatalog/src/components/Studio/StudioPageModal.tsx +0 -150
- package/eventcatalog/src/pages/studio.astro +0 -316
|
@@ -197,6 +197,38 @@ type McpConfig = {
|
|
|
197
197
|
enabled?: boolean;
|
|
198
198
|
auth?: McpAuthConfig;
|
|
199
199
|
};
|
|
200
|
+
/**
|
|
201
|
+
* The state EventCatalog keeps for features that need it (today, Studio's canvases). Features always work on a copy
|
|
202
|
+
* held in memory by the server, so storage doesn't slow them down: it's read when the server starts and written a
|
|
203
|
+
* moment after something changes (and as the server stops).
|
|
204
|
+
*/
|
|
205
|
+
type StorageConfig =
|
|
206
|
+
/** Kept only while the server runs: lost when it restarts or redeploys (the default) */
|
|
207
|
+
{
|
|
208
|
+
type: 'memory';
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* One SQLite database file for the whole catalog, brought up to date (migrated) as `eventcatalog dev` and
|
|
212
|
+
* `eventcatalog start` start. Uses Node.js's built-in SQLite, so needs Node.js 22.13 or later.
|
|
213
|
+
*/
|
|
214
|
+
| {
|
|
215
|
+
type: 'sqlite';
|
|
216
|
+
/**
|
|
217
|
+
* The database file, relative to the catalog. In a container, put it on a volume (e.g. `/data/eventcatalog.db`)
|
|
218
|
+
* so it survives redeploys.
|
|
219
|
+
* @default '.eventcatalog/eventcatalog.db'
|
|
220
|
+
*/
|
|
221
|
+
path?: string;
|
|
222
|
+
};
|
|
223
|
+
type StudioConfig = {
|
|
224
|
+
/**
|
|
225
|
+
* Turns Studio on in production (`output: 'server'`, served with `eventcatalog start`). It's on in the dev server
|
|
226
|
+
* unless this is `false`, which turns it off everywhere. Experimental. With authentication on, only signed-in people
|
|
227
|
+
* can open canvases, and they're shown by the name and picture they signed in with.
|
|
228
|
+
* @default false
|
|
229
|
+
*/
|
|
230
|
+
enabled?: boolean;
|
|
231
|
+
};
|
|
200
232
|
type GA4Config = {
|
|
201
233
|
measurementId: string;
|
|
202
234
|
};
|
|
@@ -257,6 +289,17 @@ interface Config {
|
|
|
257
289
|
};
|
|
258
290
|
security?: {
|
|
259
291
|
checkOrigin?: boolean;
|
|
292
|
+
/**
|
|
293
|
+
* Hosts to trust in a proxy's X-Forwarded-Host and X-Forwarded-Proto headers (server output), e.g. when deployed
|
|
294
|
+
* behind Fly.io, Railway or a load balancer that serves HTTPS. Without it, form posts (like starting a canvas in
|
|
295
|
+
* Studio) fail the origin check. Passed to Astro's `security.allowedDomains`.
|
|
296
|
+
* @example [{ hostname: 'catalog.example.com', protocol: 'https' }]
|
|
297
|
+
*/
|
|
298
|
+
allowedDomains?: {
|
|
299
|
+
hostname?: string;
|
|
300
|
+
protocol?: string;
|
|
301
|
+
port?: string;
|
|
302
|
+
}[];
|
|
260
303
|
};
|
|
261
304
|
/**
|
|
262
305
|
* Theme for the catalog UI.
|
|
@@ -270,6 +313,13 @@ interface Config {
|
|
|
270
313
|
theme?: CatalogTheme;
|
|
271
314
|
auth?: AuthConfig;
|
|
272
315
|
mcp?: McpConfig;
|
|
316
|
+
/** EventCatalog Studio: collaborative canvases (experimental) */
|
|
317
|
+
studio?: StudioConfig;
|
|
318
|
+
/**
|
|
319
|
+
* Where EventCatalog keeps state between restarts (e.g. Studio's canvases), for every feature that has some.
|
|
320
|
+
* @default { type: 'memory' }
|
|
321
|
+
*/
|
|
322
|
+
storage?: StorageConfig;
|
|
273
323
|
rss?: {
|
|
274
324
|
enabled?: boolean;
|
|
275
325
|
limit?: number;
|
|
@@ -410,6 +460,14 @@ interface Config {
|
|
|
410
460
|
queries?: {
|
|
411
461
|
tableConfiguration?: TableConfiguration;
|
|
412
462
|
};
|
|
463
|
+
/**
|
|
464
|
+
* Anonymous telemetry for `eventcatalog dev` and `eventcatalog build`.
|
|
465
|
+
* On by default. Set to false to opt out.
|
|
466
|
+
* `EVENTCATALOG_TELEMETRY_DISABLED` or `DO_NOT_TRACK` set to `1` or `true` also opts out.
|
|
467
|
+
* `cloud.analytics` stays its own opt-in for EventCatalog Cloud.
|
|
468
|
+
* @default true
|
|
469
|
+
*/
|
|
470
|
+
telemetry?: boolean;
|
|
413
471
|
cloud?: EventCatalogCloudConfig;
|
|
414
472
|
integrations?: IntegrationsConfig;
|
|
415
473
|
scalarConfiguration?: ScalarConfiguration;
|
|
@@ -418,4 +476,4 @@ interface Config {
|
|
|
418
476
|
federation?: FederationConfig;
|
|
419
477
|
}
|
|
420
478
|
|
|
421
|
-
export type { Config, FederationRuleId, FederationRuleLevel, FederationRulesConfig, FederationSourceConfig };
|
|
479
|
+
export type { Config, FederationRuleId, FederationRuleLevel, FederationRulesConfig, FederationSourceConfig, StorageConfig };
|
|
@@ -197,6 +197,38 @@ type McpConfig = {
|
|
|
197
197
|
enabled?: boolean;
|
|
198
198
|
auth?: McpAuthConfig;
|
|
199
199
|
};
|
|
200
|
+
/**
|
|
201
|
+
* The state EventCatalog keeps for features that need it (today, Studio's canvases). Features always work on a copy
|
|
202
|
+
* held in memory by the server, so storage doesn't slow them down: it's read when the server starts and written a
|
|
203
|
+
* moment after something changes (and as the server stops).
|
|
204
|
+
*/
|
|
205
|
+
type StorageConfig =
|
|
206
|
+
/** Kept only while the server runs: lost when it restarts or redeploys (the default) */
|
|
207
|
+
{
|
|
208
|
+
type: 'memory';
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* One SQLite database file for the whole catalog, brought up to date (migrated) as `eventcatalog dev` and
|
|
212
|
+
* `eventcatalog start` start. Uses Node.js's built-in SQLite, so needs Node.js 22.13 or later.
|
|
213
|
+
*/
|
|
214
|
+
| {
|
|
215
|
+
type: 'sqlite';
|
|
216
|
+
/**
|
|
217
|
+
* The database file, relative to the catalog. In a container, put it on a volume (e.g. `/data/eventcatalog.db`)
|
|
218
|
+
* so it survives redeploys.
|
|
219
|
+
* @default '.eventcatalog/eventcatalog.db'
|
|
220
|
+
*/
|
|
221
|
+
path?: string;
|
|
222
|
+
};
|
|
223
|
+
type StudioConfig = {
|
|
224
|
+
/**
|
|
225
|
+
* Turns Studio on in production (`output: 'server'`, served with `eventcatalog start`). It's on in the dev server
|
|
226
|
+
* unless this is `false`, which turns it off everywhere. Experimental. With authentication on, only signed-in people
|
|
227
|
+
* can open canvases, and they're shown by the name and picture they signed in with.
|
|
228
|
+
* @default false
|
|
229
|
+
*/
|
|
230
|
+
enabled?: boolean;
|
|
231
|
+
};
|
|
200
232
|
type GA4Config = {
|
|
201
233
|
measurementId: string;
|
|
202
234
|
};
|
|
@@ -257,6 +289,17 @@ interface Config {
|
|
|
257
289
|
};
|
|
258
290
|
security?: {
|
|
259
291
|
checkOrigin?: boolean;
|
|
292
|
+
/**
|
|
293
|
+
* Hosts to trust in a proxy's X-Forwarded-Host and X-Forwarded-Proto headers (server output), e.g. when deployed
|
|
294
|
+
* behind Fly.io, Railway or a load balancer that serves HTTPS. Without it, form posts (like starting a canvas in
|
|
295
|
+
* Studio) fail the origin check. Passed to Astro's `security.allowedDomains`.
|
|
296
|
+
* @example [{ hostname: 'catalog.example.com', protocol: 'https' }]
|
|
297
|
+
*/
|
|
298
|
+
allowedDomains?: {
|
|
299
|
+
hostname?: string;
|
|
300
|
+
protocol?: string;
|
|
301
|
+
port?: string;
|
|
302
|
+
}[];
|
|
260
303
|
};
|
|
261
304
|
/**
|
|
262
305
|
* Theme for the catalog UI.
|
|
@@ -270,6 +313,13 @@ interface Config {
|
|
|
270
313
|
theme?: CatalogTheme;
|
|
271
314
|
auth?: AuthConfig;
|
|
272
315
|
mcp?: McpConfig;
|
|
316
|
+
/** EventCatalog Studio: collaborative canvases (experimental) */
|
|
317
|
+
studio?: StudioConfig;
|
|
318
|
+
/**
|
|
319
|
+
* Where EventCatalog keeps state between restarts (e.g. Studio's canvases), for every feature that has some.
|
|
320
|
+
* @default { type: 'memory' }
|
|
321
|
+
*/
|
|
322
|
+
storage?: StorageConfig;
|
|
273
323
|
rss?: {
|
|
274
324
|
enabled?: boolean;
|
|
275
325
|
limit?: number;
|
|
@@ -410,6 +460,14 @@ interface Config {
|
|
|
410
460
|
queries?: {
|
|
411
461
|
tableConfiguration?: TableConfiguration;
|
|
412
462
|
};
|
|
463
|
+
/**
|
|
464
|
+
* Anonymous telemetry for `eventcatalog dev` and `eventcatalog build`.
|
|
465
|
+
* On by default. Set to false to opt out.
|
|
466
|
+
* `EVENTCATALOG_TELEMETRY_DISABLED` or `DO_NOT_TRACK` set to `1` or `true` also opts out.
|
|
467
|
+
* `cloud.analytics` stays its own opt-in for EventCatalog Cloud.
|
|
468
|
+
* @default true
|
|
469
|
+
*/
|
|
470
|
+
telemetry?: boolean;
|
|
413
471
|
cloud?: EventCatalogCloudConfig;
|
|
414
472
|
integrations?: IntegrationsConfig;
|
|
415
473
|
scalarConfiguration?: ScalarConfiguration;
|
|
@@ -418,4 +476,4 @@ interface Config {
|
|
|
418
476
|
federation?: FederationConfig;
|
|
419
477
|
}
|
|
420
478
|
|
|
421
|
-
export type { Config, FederationRuleId, FederationRuleLevel, FederationRulesConfig, FederationSourceConfig };
|
|
479
|
+
export type { Config, FederationRuleId, FederationRuleLevel, FederationRulesConfig, FederationSourceConfig, StorageConfig };
|
package/dist/eventcatalog.js
CHANGED
|
@@ -1,20 +1,24 @@
|
|
|
1
|
+
import {
|
|
2
|
+
runMigrations
|
|
3
|
+
} from "./chunk-XUAF2H54.js";
|
|
4
|
+
import "./chunk-CA4U2JP7.js";
|
|
5
|
+
import {
|
|
6
|
+
stopChildWithParent
|
|
7
|
+
} from "./chunk-S5GWAUG5.js";
|
|
1
8
|
import {
|
|
2
9
|
log_build_default
|
|
3
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-XRFL642Z.js";
|
|
4
11
|
import {
|
|
5
12
|
getLicenseStatus,
|
|
6
13
|
printLicenseStatus
|
|
7
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-AD7CL772.js";
|
|
8
15
|
import "./chunk-ZAZHAVKB.js";
|
|
9
|
-
import
|
|
10
|
-
runMigrations
|
|
11
|
-
} from "./chunk-XUAF2H54.js";
|
|
12
|
-
import "./chunk-CA4U2JP7.js";
|
|
16
|
+
import "./chunk-CA6WCQ2T.js";
|
|
13
17
|
import {
|
|
14
18
|
FederationConflictError,
|
|
15
19
|
FederationDiagnosticError,
|
|
16
20
|
federateCatalog
|
|
17
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-OX6TSVHY.js";
|
|
18
22
|
import "./chunk-WRNH5C3U.js";
|
|
19
23
|
import "./chunk-5EPNFDT5.js";
|
|
20
24
|
import "./chunk-6K7XZAYI.js";
|
|
@@ -30,16 +34,16 @@ import {
|
|
|
30
34
|
isAuthEnabled,
|
|
31
35
|
isIndexedSearchEnabled,
|
|
32
36
|
isOutputServer
|
|
33
|
-
} from "./chunk-
|
|
37
|
+
} from "./chunk-NKNOXQ62.js";
|
|
34
38
|
import {
|
|
35
39
|
generate
|
|
36
|
-
} from "./chunk-
|
|
40
|
+
} from "./chunk-OUEGYMBA.js";
|
|
37
41
|
import {
|
|
38
42
|
logger
|
|
39
|
-
} from "./chunk-
|
|
43
|
+
} from "./chunk-2UCCTEIH.js";
|
|
40
44
|
import {
|
|
41
45
|
resolve_catalog_dependencies_default
|
|
42
|
-
} from "./chunk-
|
|
46
|
+
} from "./chunk-PD7KTSYN.js";
|
|
43
47
|
import {
|
|
44
48
|
buildSearchIndex
|
|
45
49
|
} from "./chunk-DJCOJ77J.js";
|
|
@@ -50,7 +54,8 @@ import {
|
|
|
50
54
|
import {
|
|
51
55
|
watch
|
|
52
56
|
} from "./chunk-U63GDPPY.js";
|
|
53
|
-
import "./chunk-
|
|
57
|
+
import "./chunk-BNSLGNQI.js";
|
|
58
|
+
import "./chunk-CPW6G62V.js";
|
|
54
59
|
import {
|
|
55
60
|
getAstroConfigPath
|
|
56
61
|
} from "./chunk-VIJJ7JKH.js";
|
|
@@ -66,11 +71,11 @@ import {
|
|
|
66
71
|
} from "./chunk-LFQJXLHG.js";
|
|
67
72
|
import {
|
|
68
73
|
VERSION
|
|
69
|
-
} from "./chunk-
|
|
74
|
+
} from "./chunk-WADZVNCA.js";
|
|
70
75
|
import {
|
|
71
76
|
getEventCatalogConfigFile,
|
|
72
77
|
verifyRequiredFieldsAreInCatalogConfigFile
|
|
73
|
-
} from "./chunk-
|
|
78
|
+
} from "./chunk-4G7FSRPN.js";
|
|
74
79
|
|
|
75
80
|
// src/eventcatalog.ts
|
|
76
81
|
import { Command } from "commander";
|
|
@@ -79,7 +84,7 @@ import { join } from "path";
|
|
|
79
84
|
import http from "http";
|
|
80
85
|
import fs3 from "fs";
|
|
81
86
|
import path2 from "path";
|
|
82
|
-
import { fileURLToPath } from "url";
|
|
87
|
+
import { fileURLToPath, pathToFileURL } from "url";
|
|
83
88
|
import { createRequire } from "module";
|
|
84
89
|
import boxen from "boxen";
|
|
85
90
|
import updateNotifier from "update-notifier";
|
|
@@ -637,6 +642,7 @@ async function buildFieldsIndex(catalogDir, outputDir) {
|
|
|
637
642
|
// src/eventcatalog.ts
|
|
638
643
|
var currentDir = path2.dirname(fileURLToPath(import.meta.url));
|
|
639
644
|
var astroCli = path2.join(path2.dirname(createRequire(import.meta.url).resolve("astro/package.json")), "bin/astro.mjs");
|
|
645
|
+
var ASTRO_IN_FOREGROUND = { ASTRO_DEV_BACKGROUND: "1", ASTRO_PREVIEW_BACKGROUND: "1" };
|
|
640
646
|
var program = new Command().version(VERSION);
|
|
641
647
|
var dir = path2.resolve(process.env.PROJECT_DIR || process.cwd());
|
|
642
648
|
var eventCatalogDir = path2.resolve(join(currentDir, "../eventcatalog/"));
|
|
@@ -668,7 +674,7 @@ var resolveDevPort = async ({ projectDir }) => {
|
|
|
668
674
|
};
|
|
669
675
|
var startDevPrewarm = ({
|
|
670
676
|
port = 3e3,
|
|
671
|
-
paths = ["/
|
|
677
|
+
paths = ["/"],
|
|
672
678
|
retries = 80,
|
|
673
679
|
intervalMs = 250,
|
|
674
680
|
initialDelayMs = 500
|
|
@@ -677,10 +683,13 @@ var startDevPrewarm = ({
|
|
|
677
683
|
const hit = (requestPath) => new Promise((resolve) => {
|
|
678
684
|
const req = http.get(
|
|
679
685
|
{
|
|
680
|
-
|
|
686
|
+
// Not 127.0.0.1: the dev server can listen on IPv6 only ([::1]), which refused
|
|
687
|
+
// every prewarm request
|
|
688
|
+
hostname: "localhost",
|
|
681
689
|
port,
|
|
682
690
|
path: requestPath,
|
|
683
|
-
|
|
691
|
+
// A refused connection fails at once; once connected, let the first render finish
|
|
692
|
+
timeout: 3e4
|
|
684
693
|
},
|
|
685
694
|
(res) => {
|
|
686
695
|
res.resume();
|
|
@@ -778,10 +787,14 @@ var runCommandWithFilteredOutput = async ({
|
|
|
778
787
|
cwd,
|
|
779
788
|
env: {
|
|
780
789
|
...process.env,
|
|
790
|
+
// Astro sends usage data (commands, config, machine details) to Astro by default: turn it off
|
|
791
|
+
// for everyone using EventCatalog
|
|
792
|
+
ASTRO_TELEMETRY_DISABLED: "1",
|
|
781
793
|
...env
|
|
782
794
|
},
|
|
783
795
|
stdio: ["inherit", "pipe", "pipe"]
|
|
784
796
|
});
|
|
797
|
+
const signals = stopChildWithParent(child);
|
|
785
798
|
let stdoutBuffer = "";
|
|
786
799
|
let stderrBuffer = "";
|
|
787
800
|
const flush = (buffer, writer, isFinal = false) => {
|
|
@@ -809,11 +822,13 @@ var runCommandWithFilteredOutput = async ({
|
|
|
809
822
|
stderrBuffer = flush(stderrBuffer, process.stderr);
|
|
810
823
|
});
|
|
811
824
|
child.on("error", (error) => {
|
|
825
|
+
signals.childClosed();
|
|
812
826
|
reject(error);
|
|
813
827
|
});
|
|
814
828
|
child.on("close", (code) => {
|
|
815
829
|
stdoutBuffer = flush(stdoutBuffer, process.stdout, true);
|
|
816
830
|
stderrBuffer = flush(stderrBuffer, process.stderr, true);
|
|
831
|
+
if (signals.childClosed()) return;
|
|
817
832
|
if (code === 0) {
|
|
818
833
|
resolve();
|
|
819
834
|
return;
|
|
@@ -939,7 +954,9 @@ program.command("dev").description("Run development server of EventCatalog").opt
|
|
|
939
954
|
});
|
|
940
955
|
startDevPrewarm({
|
|
941
956
|
port: prewarmPort,
|
|
942
|
-
|
|
957
|
+
// Renders the homepage before anyone opens it. Requests stop at the first response,
|
|
958
|
+
// so a probe path like /ping first would leave the homepage cold.
|
|
959
|
+
paths: ["/"]
|
|
943
960
|
});
|
|
944
961
|
}
|
|
945
962
|
await runCommandWithFilteredOutput({
|
|
@@ -951,7 +968,8 @@ program.command("dev").description("Run development server of EventCatalog").opt
|
|
|
951
968
|
CATALOG_DIR: core,
|
|
952
969
|
EVENTCATALOG_DEV_MODE: "true",
|
|
953
970
|
IGNORE_BUILD_ARTIFACTS: "true",
|
|
954
|
-
NODE_NO_WARNINGS: "1"
|
|
971
|
+
NODE_NO_WARNINGS: "1",
|
|
972
|
+
...ASTRO_IN_FOREGROUND
|
|
955
973
|
},
|
|
956
974
|
shouldFilterLine: createAstroDevLineFilter(),
|
|
957
975
|
transformLine: replaceAstroReadyVersionLine
|
|
@@ -1023,20 +1041,39 @@ var previewCatalog = async ({ command }) => {
|
|
|
1023
1041
|
cwd: dir,
|
|
1024
1042
|
env: {
|
|
1025
1043
|
PROJECT_DIR: dir,
|
|
1026
|
-
CATALOG_DIR: core
|
|
1044
|
+
CATALOG_DIR: core,
|
|
1045
|
+
...ASTRO_IN_FOREGROUND
|
|
1027
1046
|
},
|
|
1028
1047
|
shouldFilterLine: createAstroLineFilter()
|
|
1029
1048
|
});
|
|
1030
1049
|
};
|
|
1050
|
+
var SERVER_BOOTSTRAP = `
|
|
1051
|
+
const entry = await import(process.argv[1]);
|
|
1052
|
+
const { server } = entry.startServer();
|
|
1053
|
+
globalThis[Symbol.for('eventcatalog.http-server')] = server.server;
|
|
1054
|
+
const start = process.env.EVENTCATALOG_START_PATH;
|
|
1055
|
+
if (start) {
|
|
1056
|
+
server.server.once('listening', () => {
|
|
1057
|
+
// Where the server listens (HOST can be one address only); loopback when it listens on every address
|
|
1058
|
+
const { address, port } = server.server.address();
|
|
1059
|
+
const host = ['0.0.0.0', '::'].includes(address) ? '127.0.0.1' : address.includes(':') ? '[' + address + ']' : address;
|
|
1060
|
+
fetch('http://' + host + ':' + port + start).catch((error) => console.error('[eventcatalog] Could not start the server:', error.message));
|
|
1061
|
+
});
|
|
1062
|
+
}
|
|
1063
|
+
`;
|
|
1031
1064
|
var startServerCatalog = async () => {
|
|
1032
1065
|
const serverEntryPath = path2.join(dir, "dist", "server", "entry.mjs");
|
|
1066
|
+
const config = await getEventCatalogConfigFile(dir);
|
|
1067
|
+
const base = (config?.base || "/").replace(/\/$/, "");
|
|
1033
1068
|
await runCommandWithFilteredOutput({
|
|
1034
1069
|
command: process.execPath,
|
|
1035
|
-
args: [serverEntryPath],
|
|
1070
|
+
args: ["--input-type=module", "-e", SERVER_BOOTSTRAP, pathToFileURL(serverEntryPath).href],
|
|
1036
1071
|
cwd: dir,
|
|
1037
1072
|
env: {
|
|
1038
1073
|
PROJECT_DIR: dir,
|
|
1039
|
-
CATALOG_DIR: core
|
|
1074
|
+
CATALOG_DIR: core,
|
|
1075
|
+
ASTRO_NODE_AUTOSTART: "disabled",
|
|
1076
|
+
EVENTCATALOG_START_PATH: `${base}/_eventcatalog/start`
|
|
1040
1077
|
},
|
|
1041
1078
|
shouldFilterLine: createAstroLineFilter()
|
|
1042
1079
|
});
|
|
@@ -1057,7 +1094,8 @@ program.command("start").description("Serves the contents of your eventcatalog b
|
|
|
1057
1094
|
}
|
|
1058
1095
|
const isServerOutput = await isOutputServer();
|
|
1059
1096
|
if (isServerOutput) {
|
|
1060
|
-
await getLicenseStatus(dir);
|
|
1097
|
+
const license = await getLicenseStatus(dir);
|
|
1098
|
+
void log_build_default(dir, { command: "start", license });
|
|
1061
1099
|
await startServerCatalog();
|
|
1062
1100
|
} else {
|
|
1063
1101
|
await previewCatalog({ command });
|
|
@@ -1204,7 +1242,7 @@ program.addHelpText(
|
|
|
1204
1242
|
Example: npx eventcatalog dev --debug -- --env=production --port=3000
|
|
1205
1243
|
`
|
|
1206
1244
|
);
|
|
1207
|
-
program.parseAsync().then(() => process.exit(
|
|
1245
|
+
program.parseAsync().then(() => process.exit()).catch((err) => {
|
|
1208
1246
|
if (!(err instanceof FederationConflictError) && !(err instanceof FederationDiagnosticError)) console.error(err);
|
|
1209
1247
|
process.exit(1);
|
|
1210
1248
|
});
|
package/dist/features.cjs
CHANGED
|
@@ -48,65 +48,58 @@ var import_promises = require("fs/promises");
|
|
|
48
48
|
var import_node_fs = require("fs");
|
|
49
49
|
var import_node_path = __toESM(require("path"), 1);
|
|
50
50
|
var import_node_url = require("url");
|
|
51
|
-
var
|
|
51
|
+
var import_node_module = require("module");
|
|
52
52
|
async function cleanup(projectDirectory) {
|
|
53
53
|
const filePath = import_node_path.default.join(projectDirectory, "eventcatalog.config.mjs");
|
|
54
54
|
if ((0, import_node_fs.existsSync)(filePath)) {
|
|
55
55
|
await (0, import_promises.rm)(filePath);
|
|
56
56
|
}
|
|
57
57
|
}
|
|
58
|
-
var
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
const
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
}
|
|
58
|
+
var hidesConfigModuleTypeWarning = false;
|
|
59
|
+
var loads = 0;
|
|
60
|
+
var hideConfigModuleTypeWarning = () => {
|
|
61
|
+
if (hidesConfigModuleTypeWarning) return;
|
|
62
|
+
hidesConfigModuleTypeWarning = true;
|
|
63
|
+
const emitWarning = process.emitWarning;
|
|
64
|
+
process.emitWarning = function(warning, ...args) {
|
|
65
|
+
const code = typeof args[0] === "object" ? args[0]?.code : args[1];
|
|
66
|
+
const message = typeof warning === "string" ? warning : warning?.message;
|
|
67
|
+
if (code === "MODULE_TYPELESS_PACKAGE_JSON" && message?.includes("eventcatalog.config.js")) return;
|
|
68
|
+
return emitWarning.call(this, warning, ...args);
|
|
69
|
+
};
|
|
71
70
|
};
|
|
72
|
-
var
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
71
|
+
var AS_MODULE_QUERY = "eventcatalog-config-as-module";
|
|
72
|
+
var loadsMarkedConfigsAsModules = false;
|
|
73
|
+
var loadMarkedConfigsAsModules = () => {
|
|
74
|
+
if (loadsMarkedConfigsAsModules) return;
|
|
75
|
+
loadsMarkedConfigsAsModules = true;
|
|
76
|
+
const hook = `export async function load(url, context, nextLoad) {
|
|
77
|
+
return nextLoad(url, url.includes('${AS_MODULE_QUERY}=') ? { ...context, format: 'module' } : context);
|
|
78
|
+
}`;
|
|
79
|
+
(0, import_node_module.register)(`data:text/javascript,${encodeURIComponent(hook)}`);
|
|
78
80
|
};
|
|
79
|
-
var
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
return
|
|
81
|
+
var isCommonJSPackage = async (projectDirectory) => {
|
|
82
|
+
try {
|
|
83
|
+
const packageJson = JSON.parse(await (0, import_promises.readFile)(import_node_path.default.join(projectDirectory, "package.json"), "utf-8"));
|
|
84
|
+
return packageJson?.type === "commonjs";
|
|
85
|
+
} catch {
|
|
86
|
+
return false;
|
|
83
87
|
}
|
|
84
|
-
const tempDir = await (0, import_promises.mkdtemp)(import_node_path.default.join((0, import_node_os.tmpdir)(), "eventcatalog-config-"));
|
|
85
|
-
await linkNodeModulesIntoTempDirectory({ projectDirectory, tempDir });
|
|
86
|
-
return tempDir;
|
|
87
88
|
};
|
|
88
89
|
var getEventCatalogConfigFile = async (projectDirectory) => {
|
|
89
|
-
let tempDir;
|
|
90
90
|
try {
|
|
91
|
-
|
|
92
|
-
const
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
configFilePath = import_node_path.default.join(tempDir, "eventcatalog.config.mjs");
|
|
97
|
-
await (0, import_promises.copyFile)(import_node_path.default.join(projectDirectory, "eventcatalog.config.js"), configFilePath);
|
|
98
|
-
}
|
|
99
|
-
const configFileURL = `${(0, import_node_url.pathToFileURL)(configFilePath).href}?t=${Date.now()}`;
|
|
91
|
+
hideConfigModuleTypeWarning();
|
|
92
|
+
const asModule = await isCommonJSPackage(projectDirectory);
|
|
93
|
+
if (asModule) loadMarkedConfigsAsModules();
|
|
94
|
+
const configFileURL = (0, import_node_url.pathToFileURL)(import_node_path.default.join(projectDirectory, "eventcatalog.config.js")).href;
|
|
95
|
+
const query = `${asModule ? AS_MODULE_QUERY : "loaded"}=${Date.now()}-${loads++}`;
|
|
100
96
|
const config = await import(
|
|
101
97
|
/* @vite-ignore */
|
|
102
|
-
configFileURL
|
|
98
|
+
`${configFileURL}?${query}`
|
|
103
99
|
);
|
|
104
100
|
return config.default;
|
|
105
101
|
} finally {
|
|
106
102
|
await cleanup(projectDirectory);
|
|
107
|
-
if (tempDir) {
|
|
108
|
-
await (0, import_promises.rm)(tempDir, { recursive: true, force: true });
|
|
109
|
-
}
|
|
110
103
|
}
|
|
111
104
|
};
|
|
112
105
|
|
package/dist/features.js
CHANGED
|
@@ -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
|
|
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
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
const
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
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
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
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
|
-
|
|
95
|
-
const
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
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
|
|
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(
|
|
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,7 +2,7 @@ import {
|
|
|
2
2
|
FederationConflictError,
|
|
3
3
|
FederationDiagnosticError,
|
|
4
4
|
federateCatalog
|
|
5
|
-
} from "../chunk-
|
|
5
|
+
} from "../chunk-OX6TSVHY.js";
|
|
6
6
|
import "../chunk-WRNH5C3U.js";
|
|
7
7
|
import "../chunk-5EPNFDT5.js";
|
|
8
8
|
import "../chunk-6K7XZAYI.js";
|
|
@@ -10,7 +10,7 @@ import "../chunk-352FGP6W.js";
|
|
|
10
10
|
import "../chunk-R7Z5ALYI.js";
|
|
11
11
|
import "../chunk-JJPB6EOZ.js";
|
|
12
12
|
import "../chunk-SDZQJTJW.js";
|
|
13
|
-
import "../chunk-
|
|
13
|
+
import "../chunk-4G7FSRPN.js";
|
|
14
14
|
export {
|
|
15
15
|
FederationConflictError,
|
|
16
16
|
FederationDiagnosticError,
|