@eventcatalog/core 5.0.0-beta.7 → 5.0.0-beta.9

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 (95) hide show
  1. package/LICENSE +227 -128
  2. package/dist/analytics/analytics.cjs +18 -3
  3. package/dist/analytics/analytics.d.cts +1 -1
  4. package/dist/analytics/analytics.d.ts +1 -1
  5. package/dist/analytics/analytics.js +3 -2
  6. package/dist/analytics/log-build.cjs +70 -34
  7. package/dist/analytics/log-build.js +5 -4
  8. package/dist/analytics/telemetry.cjs +42 -0
  9. package/dist/analytics/telemetry.d.cts +20 -0
  10. package/dist/analytics/telemetry.d.ts +20 -0
  11. package/dist/analytics/telemetry.js +8 -0
  12. package/dist/{chunk-3VBB2ZMP.js → chunk-4CFZUHGG.js} +9 -3
  13. package/dist/{chunk-PIYJM642.js → chunk-AWOO63ME.js} +70 -44
  14. package/dist/chunk-CPW6G62V.js +17 -0
  15. package/dist/{chunk-MDWB5HLO.js → chunk-ENAG6UH7.js} +5 -0
  16. package/dist/{chunk-FARBIZ7Y.js → chunk-EUNQJO3J.js} +1 -1
  17. package/dist/{chunk-S7ODHVII.js → chunk-GAHKCOQM.js} +1 -1
  18. package/dist/{chunk-BOKAG5XC.js → chunk-JQMYHZWI.js} +58 -35
  19. package/dist/{chunk-SJJKWZYZ.js → chunk-TZVDMWQX.js} +1 -1
  20. package/dist/constants.cjs +1 -1
  21. package/dist/constants.js +1 -1
  22. package/dist/eventcatalog.cjs +207 -123
  23. package/dist/eventcatalog.config.d.cts +55 -0
  24. package/dist/eventcatalog.config.d.ts +55 -0
  25. package/dist/eventcatalog.js +39 -19
  26. package/dist/features.cjs +8 -2
  27. package/dist/features.d.cts +3 -1
  28. package/dist/features.d.ts +3 -1
  29. package/dist/features.js +5 -3
  30. package/dist/federation/federate.js +4 -4
  31. package/dist/generate.cjs +1 -1
  32. package/dist/generate.js +3 -3
  33. package/dist/utils/cli-logger.cjs +1 -1
  34. package/dist/utils/cli-logger.js +2 -2
  35. package/dist/utils/license-status.cjs +70 -44
  36. package/dist/utils/license-status.d.cts +14 -5
  37. package/dist/utils/license-status.d.ts +14 -5
  38. package/dist/utils/license-status.js +1 -1
  39. package/eventcatalog/integrations/studio-server.mjs +15 -3
  40. package/eventcatalog/src/components/Header.astro +3 -3
  41. package/eventcatalog/src/features/integrations/eventcatalog-features.ts +10 -2
  42. package/eventcatalog/src/features/mcp/apps/canvas/shared.ts +9 -1
  43. package/eventcatalog/src/features/mcp/apps/canvas/view.tsx +9 -2
  44. package/eventcatalog/src/features/mcp/apps/generated/canvas.html +70 -69
  45. package/eventcatalog/src/features/mcp/apps/generated/viewer.html +69 -69
  46. package/eventcatalog/src/features/mcp/mcp-server.ts +5 -3
  47. package/eventcatalog/src/features/studio/agent-choreography.ts +8 -5
  48. package/eventcatalog/src/features/studio/canvas-actions.ts +148 -21
  49. package/eventcatalog/src/features/studio/canvas-doc.ts +138 -9
  50. package/eventcatalog/src/features/studio/canvas-preview.ts +53 -0
  51. package/eventcatalog/src/features/studio/catalog-resources.ts +5 -2
  52. package/eventcatalog/src/features/studio/clipboard.ts +97 -0
  53. package/eventcatalog/src/features/studio/components/CanvasControls.tsx +4 -3
  54. package/eventcatalog/src/features/studio/components/CanvasHeader.tsx +39 -22
  55. package/eventcatalog/src/features/studio/components/CanvasStatusMenu.tsx +117 -0
  56. package/eventcatalog/src/features/studio/components/Comments.tsx +345 -30
  57. package/eventcatalog/src/features/studio/components/ConnectAgentDialog.tsx +140 -76
  58. package/eventcatalog/src/features/studio/components/ConnectionsChooser.tsx +144 -0
  59. package/eventcatalog/src/features/studio/components/ContainerChooser.tsx +1 -1
  60. package/eventcatalog/src/features/studio/components/DragGhost.tsx +115 -0
  61. package/eventcatalog/src/features/studio/components/JoinForm.tsx +0 -24
  62. package/eventcatalog/src/features/studio/components/LeftPanel.tsx +131 -35
  63. package/eventcatalog/src/features/studio/components/Picture.tsx +21 -0
  64. package/eventcatalog/src/features/studio/components/Presence.tsx +2 -0
  65. package/eventcatalog/src/features/studio/components/PropertiesPanel.tsx +187 -50
  66. package/eventcatalog/src/features/studio/components/ShareDialog.tsx +260 -0
  67. package/eventcatalog/src/features/studio/components/StudioDesigner.tsx +442 -40
  68. package/eventcatalog/src/features/studio/components/canvas-nodes.tsx +198 -22
  69. package/eventcatalog/src/features/studio/components/icons.ts +6 -1
  70. package/eventcatalog/src/features/studio/components/status.ts +30 -1
  71. package/eventcatalog/src/features/studio/edges.ts +2 -0
  72. package/eventcatalog/src/features/studio/grouping.ts +95 -2
  73. package/eventcatalog/src/features/studio/hooks/presence-store.ts +5 -1
  74. package/eventcatalog/src/features/studio/hooks/use-canvas-webmcp.ts +13 -3
  75. package/eventcatalog/src/features/studio/hooks/use-comments.ts +8 -1
  76. package/eventcatalog/src/features/studio/hooks/use-follow-camera.ts +7 -2
  77. package/eventcatalog/src/features/studio/hooks/use-studio-flow.ts +174 -27
  78. package/eventcatalog/src/features/studio/identity.ts +35 -0
  79. package/eventcatalog/src/features/studio/layout.ts +7 -4
  80. package/eventcatalog/src/features/studio/levels.ts +138 -72
  81. package/eventcatalog/src/features/studio/node-types.ts +35 -3
  82. package/eventcatalog/src/features/studio/pages/[id].astro +7 -2
  83. package/eventcatalog/src/features/studio/pages/index.astro +555 -2
  84. package/eventcatalog/src/features/studio/pages/new.astro +24 -0
  85. package/eventcatalog/src/features/studio/pages/wake.ts +15 -0
  86. package/eventcatalog/src/features/studio/server/canvas-mcp.ts +48 -13
  87. package/eventcatalog/src/features/studio/server/runtime.ts +193 -14
  88. package/eventcatalog/src/features/studio/server/sign-in.ts +18 -0
  89. package/eventcatalog/src/features/studio/server/storage.ts +110 -0
  90. package/eventcatalog/src/features/studio/studio.css +184 -0
  91. package/eventcatalog/src/layouts/VerticalSideBarLayout.astro +1 -1
  92. package/eventcatalog/src/utils/feature.ts +7 -3
  93. package/eventcatalog/src/utils/node-graphs/export-mermaid.ts +0 -2
  94. package/package.json +3 -3
  95. package/dist/{chunk-AYNZXUB5.js → chunk-ZEY2XUJN.js} +7 -7
@@ -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
+ };
@@ -1,10 +1,15 @@
1
+ import {
2
+ TELEMETRY_REQUEST_TIMEOUT_MS,
3
+ isTelemetryDisabled
4
+ } from "./chunk-CPW6G62V.js";
1
5
  import {
2
6
  VERSION
3
- } from "./chunk-FARBIZ7Y.js";
7
+ } from "./chunk-EUNQJO3J.js";
4
8
 
5
9
  // src/analytics/analytics.js
6
10
  import os from "os";
7
- async function raiseEvent(eventData) {
11
+ async function raiseEvent(eventData, config) {
12
+ if (isTelemetryDisabled(config, process.env)) return;
8
13
  if (typeof eventData?.command !== "string" || typeof eventData?.cId !== "string") return;
9
14
  const url = "https://queue.simpleanalyticscdn.com/events";
10
15
  const userAgent = `@eventcatalog/eventcatalog@${VERSION} (${os.platform()}; ${os.arch()}; Node/${process.version})`;
@@ -26,7 +31,8 @@ async function raiseEvent(eventData) {
26
31
  const response = await fetch(url, {
27
32
  method: "POST",
28
33
  headers,
29
- body: JSON.stringify(payload)
34
+ body: JSON.stringify(payload),
35
+ signal: AbortSignal.timeout(TELEMETRY_REQUEST_TIMEOUT_MS)
30
36
  });
31
37
  if (!response.ok) {
32
38
  throw new Error(`Failed to raise analytics event: ${response.status}`);
@@ -1,5 +1,6 @@
1
1
  // src/utils/license-status.ts
2
2
  import boxen from "boxen";
3
+ import pc from "picocolors";
3
4
  import { isEventCatalogScaleEnabled, isEventCatalogStarterEnabled } from "@eventcatalog/license";
4
5
 
5
6
  // eventcatalog/src/utils/trial.ts
@@ -122,75 +123,100 @@ var getLicenseAnalytics = (license = { state: "none" }, tsd) => ({
122
123
  });
123
124
  var formatDate = (date) => date.toLocaleDateString(void 0, { dateStyle: "medium" });
124
125
  var formatDays = (days) => `${days} ${days === 1 ? "day" : "days"}`;
125
- var getTrialLine = (tsd, now) => {
126
+ var PLAIN = { bold: (text) => text, dim: (text) => text, link: (text) => text };
127
+ var COLOURS = { bold: pc.bold, dim: pc.dim, link: (text) => pc.cyan(text) };
128
+ var render = ({ headline, rows, links }, colours) => {
129
+ const width = Math.max(0, ...[...rows, ...links].map(([label]) => label.length));
130
+ const row = ([label, value]) => `${colours.dim(label.padEnd(width))} ${value}`;
131
+ return [
132
+ colours.bold(headline),
133
+ ...rows.length ? ["", ...rows.map(row)] : [],
134
+ ...links.length ? ["", ...links.map(([label, url]) => row([label, colours.link(url)]))] : []
135
+ ].join("\n");
136
+ };
137
+ var message = (content) => ({
138
+ ...content,
139
+ text: render(content, PLAIN)
140
+ });
141
+ var getTrialRow = (tsd, now) => {
126
142
  const trial = getTrialStatus(tsd, now);
127
143
  if (!trial) return;
128
- return trial.ended ? `Your ${TRIAL_LENGTH_DAYS}-day EventCatalog trial ended on ${formatDate(trial.endsAt)}.` : `${formatDays(trial.daysLeft)} left of your ${TRIAL_LENGTH_DAYS}-day EventCatalog trial (ends ${formatDate(trial.endsAt)}).`;
144
+ return [
145
+ "Trial",
146
+ trial.ended ? `Ended ${formatDate(trial.endsAt)}` : `${formatDays(trial.daysLeft)} left of ${TRIAL_LENGTH_DAYS} (ends ${formatDate(trial.endsAt)})`
147
+ ];
129
148
  };
130
149
  var getLicenseStatusMessage = (license, tsd, now = Date.now()) => {
150
+ const licensing = ["Licensing", LICENSE_FAQ_URL];
151
+ const renew = ["Renew", LICENSE_RENEW_URL];
152
+ const licensedTo = "org" in license && license.org ? [["Licensed to", license.org]] : [];
131
153
  if (license.state === "licensed") {
132
154
  const daysLeft = Math.max(0, Math.ceil((license.expiresAt.getTime() - now) / DAY_IN_MS2));
133
- const licensedTo = license.org ? `Licensed to ${license.org}` : "Licensed";
134
155
  if (daysLeft < LICENSE_REMINDER_DAYS) {
135
- return {
136
- title: "EventCatalog Commercial License",
156
+ return message({
157
+ title: "EventCatalog license",
137
158
  color: "yellow",
138
- text: [
139
- licensedTo,
140
- `Your license expires in ${formatDays(daysLeft)}, on ${formatDate(license.expiresAt)}.`,
141
- `Renew it to keep using EventCatalog commercially: ${LICENSE_RENEW_URL}`
142
- ].join("\n")
143
- };
159
+ headline: `Your commercial license expires in ${formatDays(daysLeft)}`,
160
+ rows: [...licensedTo, ["Expires", formatDate(license.expiresAt)]],
161
+ links: [renew]
162
+ });
144
163
  }
145
- return {
146
- title: "EventCatalog Commercial License",
164
+ return message({
165
+ title: "EventCatalog license",
147
166
  color: "green",
148
- text: `${licensedTo}
149
- Valid until ${formatDate(license.expiresAt)} (${formatDays(daysLeft)} left)`
150
- };
167
+ headline: "Commercial license active",
168
+ rows: [...licensedTo, ["Valid until", `${formatDate(license.expiresAt)} (${formatDays(daysLeft)} left)`]],
169
+ links: []
170
+ });
151
171
  }
152
172
  if (license.state === "plan") return;
153
- const trialLine = getTrialLine(tsd, now);
173
+ const trialRow = getTrialRow(tsd, now);
174
+ const trialRows = trialRow ? [trialRow] : [];
154
175
  if (license.state === "none") {
155
- if (!trialLine) return;
156
- const ended = getTrialStatus(tsd, now)?.ended;
157
- return {
176
+ const trial = getTrialStatus(tsd, now);
177
+ if (!trial || !trialRow) return;
178
+ return message({
158
179
  title: "EventCatalog trial",
159
- color: ended ? "yellow" : "green",
160
- text: `${trialLine}
161
- Learn about licensing: ${LICENSE_FAQ_URL}`
162
- };
180
+ color: trial.ended ? "yellow" : "green",
181
+ headline: trial.ended ? "Your EventCatalog trial has ended" : `You're on the ${TRIAL_LENGTH_DAYS}-day EventCatalog trial`,
182
+ rows: trialRows,
183
+ links: trial.ended ? [["Get a license", LICENSE_RENEW_URL], licensing] : [licensing]
184
+ });
163
185
  }
164
186
  if (license.state === "expired") {
165
- const expiredOn = license.expiresAt ? `expired on ${formatDate(license.expiresAt)} (${formatDays(Math.floor((now - license.expiresAt.getTime()) / DAY_IN_MS2))} ago)` : "has expired";
166
- return {
167
- title: "EventCatalog License Expired",
187
+ const expiredOn = license.expiresAt ? [
188
+ [
189
+ "Expired",
190
+ `${formatDate(license.expiresAt)} (${formatDays(Math.floor((now - license.expiresAt.getTime()) / DAY_IN_MS2))} ago)`
191
+ ]
192
+ ] : [];
193
+ return message({
194
+ title: "EventCatalog license",
168
195
  color: "yellow",
169
- text: [
170
- `Your EventCatalog commercial license${license.org ? ` for ${license.org}` : ""} ${expiredOn}.`,
171
- `Renew it to keep using EventCatalog commercially: ${LICENSE_RENEW_URL}`,
172
- trialLine,
173
- `Learn about licensing: ${LICENSE_FAQ_URL}`
174
- ].filter(Boolean).join("\n")
175
- };
196
+ headline: "Your commercial license has expired",
197
+ rows: [...licensedTo, ...expiredOn, ...trialRows],
198
+ links: [renew, licensing]
199
+ });
176
200
  }
177
- return {
201
+ return message({
178
202
  title: "EventCatalog license",
179
203
  color: "yellow",
180
- text: [`Your license.jwt could not be verified: ${license.reason}.`, trialLine, `Learn about licensing: ${LICENSE_FAQ_URL}`].filter(Boolean).join("\n")
181
- };
204
+ headline: "Your license.jwt couldn't be verified",
205
+ rows: [["Reason", license.reason.charAt(0).toUpperCase() + license.reason.slice(1)], ...trialRows],
206
+ links: [licensing]
207
+ });
182
208
  };
183
209
  var printLicenseStatus = (license, tsd) => {
184
- const message = getLicenseStatusMessage(license, tsd);
185
- if (!message) return;
210
+ const status = getLicenseStatusMessage(license, tsd);
211
+ if (!status) return;
186
212
  console.log(
187
- boxen(message.text, {
188
- padding: 1,
213
+ boxen(render(status, COLOURS), {
214
+ padding: { top: 1, bottom: 1, left: 2, right: 2 },
189
215
  margin: 1,
190
216
  borderStyle: "round",
191
- borderColor: message.color,
192
- title: message.title,
193
- titleAlignment: "center"
217
+ borderColor: status.color,
218
+ title: status.title,
219
+ titleAlignment: "left"
194
220
  })
195
221
  );
196
222
  };
@@ -0,0 +1,17 @@
1
+ // src/analytics/telemetry.ts
2
+ var TELEMETRY_REQUEST_TIMEOUT_MS = 2e3;
3
+ var isOptOutEnvValue = (value) => {
4
+ if (typeof value !== "string") return false;
5
+ const normalized = value.trim().toLowerCase();
6
+ return normalized === "1" || normalized === "true";
7
+ };
8
+ var isTelemetryDisabled = (config, env) => {
9
+ if (isOptOutEnvValue(env.EVENTCATALOG_TELEMETRY_DISABLED)) return true;
10
+ if (isOptOutEnvValue(env.DO_NOT_TRACK)) return true;
11
+ return config?.telemetry === false;
12
+ };
13
+
14
+ export {
15
+ TELEMETRY_REQUEST_TIMEOUT_MS,
16
+ isTelemetryDisabled
17
+ };
@@ -13,6 +13,10 @@ var isOutputServer = async () => {
13
13
  const config = await getEventCatalogConfigFile(process.env.PROJECT_DIR || "");
14
14
  return config?.output === "server";
15
15
  };
16
+ var isStudioEnabled = async () => {
17
+ const config = await getEventCatalogConfigFile(process.env.PROJECT_DIR || "");
18
+ return config?.output === "server" && config?.studio?.enabled === true;
19
+ };
16
20
  var isIndexedSearchEnabled = async () => {
17
21
  const config = await getEventCatalogConfigFile(process.env.PROJECT_DIR || "");
18
22
  return config?.search?.type === "indexed";
@@ -26,6 +30,7 @@ var isAuthEnabled = async () => {
26
30
  export {
27
31
  getProjectOutDir,
28
32
  isOutputServer,
33
+ isStudioEnabled,
29
34
  isIndexedSearchEnabled,
30
35
  isAuthEnabled
31
36
  };
@@ -1,5 +1,5 @@
1
1
  // package.json
2
- var version = "5.0.0-beta.7";
2
+ var version = "5.0.0-beta.9";
3
3
 
4
4
  // src/constants.ts
5
5
  var VERSION = version;
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  VERSION
3
- } from "./chunk-FARBIZ7Y.js";
3
+ } from "./chunk-EUNQJO3J.js";
4
4
 
5
5
  // src/utils/cli-logger.ts
6
6
  import pc from "picocolors";
@@ -1,14 +1,18 @@
1
1
  import {
2
- getLicenseAnalytics
3
- } from "./chunk-PIYJM642.js";
2
+ raiseEvent
3
+ } from "./chunk-4CFZUHGG.js";
4
4
  import {
5
5
  countResources,
6
6
  hashCatalogContent,
7
7
  serializeCounts
8
8
  } from "./chunk-ZAZHAVKB.js";
9
9
  import {
10
- raiseEvent
11
- } from "./chunk-3VBB2ZMP.js";
10
+ TELEMETRY_REQUEST_TIMEOUT_MS,
11
+ isTelemetryDisabled
12
+ } from "./chunk-CPW6G62V.js";
13
+ import {
14
+ getLicenseAnalytics
15
+ } from "./chunk-AWOO63ME.js";
12
16
  import {
13
17
  getEventCatalogConfigFile,
14
18
  verifyRequiredFieldsAreInCatalogConfigFile
@@ -69,50 +73,69 @@ var toCloudResourceCounts = (counts) => ({
69
73
  customPages: counts.customPages || 0,
70
74
  customApis: counts.customApis || 0
71
75
  });
72
- var reportCloudResourceInventory = async (configFile, resourceCounts) => {
76
+ var getEnabledCloudAnalytics = (configFile) => {
73
77
  const analytics = configFile.cloud?.analytics;
74
- if (!analytics?.enabled || !analytics.trackingId || !analytics.writeKey) return;
78
+ if (!analytics?.enabled || !analytics.trackingId || !analytics.writeKey) return null;
79
+ return analytics;
80
+ };
81
+ var reportCloudResourceInventory = async (configFile, resourceCounts) => {
82
+ const analytics = getEnabledCloudAnalytics(configFile);
83
+ if (!analytics) return;
75
84
  const endpoint = analytics.endpoint || CLOUD_ANALYTICS_ENDPOINT;
76
- await fetch(endpoint, {
77
- method: "POST",
78
- headers: {
79
- "Content-Type": "application/json",
80
- "X-EventCatalog-Analytics-Key": analytics.writeKey
81
- },
82
- body: JSON.stringify({
83
- trackingId: analytics.trackingId,
84
- event: "catalog.resource_inventory_reported",
85
- timestamp: (/* @__PURE__ */ new Date()).toISOString(),
86
- counts: toCloudResourceCounts(resourceCounts)
87
- })
88
- });
85
+ try {
86
+ await fetch(endpoint, {
87
+ method: "POST",
88
+ headers: {
89
+ "Content-Type": "application/json",
90
+ "X-EventCatalog-Analytics-Key": analytics.writeKey
91
+ },
92
+ body: JSON.stringify({
93
+ trackingId: analytics.trackingId,
94
+ event: "catalog.resource_inventory_reported",
95
+ timestamp: (/* @__PURE__ */ new Date()).toISOString(),
96
+ counts: toCloudResourceCounts(resourceCounts)
97
+ }),
98
+ signal: AbortSignal.timeout(TELEMETRY_REQUEST_TIMEOUT_MS)
99
+ });
100
+ } catch {
101
+ }
89
102
  };
90
103
  var main = async (projectDir, { command = "build", license } = {}) => {
91
104
  try {
92
105
  await verifyRequiredFieldsAreInCatalogConfigFile(projectDir);
93
106
  const configFile = await getEventCatalogConfigFile(projectDir);
107
+ if (isTelemetryDisabled(configFile, process.env)) {
108
+ if (getEnabledCloudAnalytics(configFile)) {
109
+ const resourceCounts2 = await countResources(projectDir);
110
+ await reportCloudResourceInventory(configFile, resourceCounts2);
111
+ }
112
+ return;
113
+ }
94
114
  const { cId, tsd, organizationName, generators = [] } = configFile;
95
115
  const generatorNames = generators.length > 0 ? generators.map((generator) => generator[0]) : ["none"];
96
116
  const features = await getFeatures(configFile);
97
117
  const resourceCounts = await countResources(projectDir);
98
118
  const contentHash = await hashCatalogContent(projectDir);
99
119
  await reportCloudResourceInventory(configFile, resourceCounts);
100
- await raiseEvent({
101
- command,
102
- org: organizationName,
103
- cId,
104
- // Trial start date (unix ms) from eventcatalog.config.js
105
- tsd,
106
- // Commercial license or trial, and when each expires (unix ms)
107
- ...getLicenseAnalytics(license, tsd),
108
- // CI redeploys and human-run builds are different signals; tag rather than suppress
109
- ci: process.env.CI ? "true" : "false",
110
- contentHash,
111
- generators: generatorNames.toString(),
112
- features: Object.keys(features).map((feature) => `${feature}:${features[feature]}`).join(","),
113
- directorySources: serializeDirectorySources(configFile),
114
- resources: serializeCounts(resourceCounts)
115
- });
120
+ await raiseEvent(
121
+ {
122
+ command,
123
+ org: organizationName,
124
+ cId,
125
+ // Trial start date (unix ms) from eventcatalog.config.js
126
+ tsd,
127
+ // Commercial license or trial, and when each expires (unix ms)
128
+ ...getLicenseAnalytics(license, tsd),
129
+ // CI redeploys and human-run builds are different signals; tag rather than suppress
130
+ ci: process.env.CI ? "true" : "false",
131
+ contentHash,
132
+ generators: generatorNames.toString(),
133
+ features: Object.keys(features).map((feature) => `${feature}:${features[feature]}`).join(","),
134
+ directorySources: serializeDirectorySources(configFile),
135
+ resources: serializeCounts(resourceCounts)
136
+ },
137
+ configFile
138
+ );
116
139
  } catch (error) {
117
140
  }
118
141
  };
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  logger
3
- } from "./chunk-S7ODHVII.js";
3
+ } from "./chunk-GAHKCOQM.js";
4
4
  import {
5
5
  cleanup,
6
6
  getEventCatalogConfigFile
@@ -25,7 +25,7 @@ __export(constants_exports, {
25
25
  module.exports = __toCommonJS(constants_exports);
26
26
 
27
27
  // package.json
28
- var version = "5.0.0-beta.7";
28
+ var version = "5.0.0-beta.9";
29
29
 
30
30
  // src/constants.ts
31
31
  var VERSION = version;
package/dist/constants.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  VERSION
3
- } from "./chunk-FARBIZ7Y.js";
3
+ } from "./chunk-EUNQJO3J.js";
4
4
  export {
5
5
  VERSION
6
6
  };