@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.
- package/LICENSE +227 -128
- 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 +70 -34
- package/dist/analytics/log-build.js +5 -4
- 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/{chunk-3VBB2ZMP.js → chunk-4CFZUHGG.js} +9 -3
- package/dist/{chunk-PIYJM642.js → chunk-AWOO63ME.js} +70 -44
- package/dist/chunk-CPW6G62V.js +17 -0
- package/dist/{chunk-MDWB5HLO.js → chunk-ENAG6UH7.js} +5 -0
- package/dist/{chunk-FARBIZ7Y.js → chunk-EUNQJO3J.js} +1 -1
- package/dist/{chunk-S7ODHVII.js → chunk-GAHKCOQM.js} +1 -1
- package/dist/{chunk-BOKAG5XC.js → chunk-JQMYHZWI.js} +58 -35
- package/dist/{chunk-SJJKWZYZ.js → chunk-TZVDMWQX.js} +1 -1
- package/dist/constants.cjs +1 -1
- package/dist/constants.js +1 -1
- package/dist/eventcatalog.cjs +207 -123
- package/dist/eventcatalog.config.d.cts +55 -0
- package/dist/eventcatalog.config.d.ts +55 -0
- package/dist/eventcatalog.js +39 -19
- package/dist/features.cjs +8 -2
- package/dist/features.d.cts +3 -1
- package/dist/features.d.ts +3 -1
- package/dist/features.js +5 -3
- package/dist/federation/federate.js +4 -4
- package/dist/generate.cjs +1 -1
- package/dist/generate.js +3 -3
- package/dist/utils/cli-logger.cjs +1 -1
- package/dist/utils/cli-logger.js +2 -2
- package/dist/utils/license-status.cjs +70 -44
- package/dist/utils/license-status.d.cts +14 -5
- package/dist/utils/license-status.d.ts +14 -5
- package/dist/utils/license-status.js +1 -1
- package/eventcatalog/integrations/studio-server.mjs +15 -3
- package/eventcatalog/src/components/Header.astro +3 -3
- package/eventcatalog/src/features/integrations/eventcatalog-features.ts +10 -2
- package/eventcatalog/src/features/mcp/apps/canvas/shared.ts +9 -1
- package/eventcatalog/src/features/mcp/apps/canvas/view.tsx +9 -2
- package/eventcatalog/src/features/mcp/apps/generated/canvas.html +70 -69
- package/eventcatalog/src/features/mcp/apps/generated/viewer.html +69 -69
- package/eventcatalog/src/features/mcp/mcp-server.ts +5 -3
- package/eventcatalog/src/features/studio/agent-choreography.ts +8 -5
- package/eventcatalog/src/features/studio/canvas-actions.ts +148 -21
- package/eventcatalog/src/features/studio/canvas-doc.ts +138 -9
- package/eventcatalog/src/features/studio/canvas-preview.ts +53 -0
- package/eventcatalog/src/features/studio/catalog-resources.ts +5 -2
- package/eventcatalog/src/features/studio/clipboard.ts +97 -0
- package/eventcatalog/src/features/studio/components/CanvasControls.tsx +4 -3
- package/eventcatalog/src/features/studio/components/CanvasHeader.tsx +39 -22
- package/eventcatalog/src/features/studio/components/CanvasStatusMenu.tsx +117 -0
- package/eventcatalog/src/features/studio/components/Comments.tsx +345 -30
- package/eventcatalog/src/features/studio/components/ConnectAgentDialog.tsx +140 -76
- package/eventcatalog/src/features/studio/components/ConnectionsChooser.tsx +144 -0
- package/eventcatalog/src/features/studio/components/ContainerChooser.tsx +1 -1
- package/eventcatalog/src/features/studio/components/DragGhost.tsx +115 -0
- package/eventcatalog/src/features/studio/components/JoinForm.tsx +0 -24
- package/eventcatalog/src/features/studio/components/LeftPanel.tsx +131 -35
- package/eventcatalog/src/features/studio/components/Picture.tsx +21 -0
- package/eventcatalog/src/features/studio/components/Presence.tsx +2 -0
- package/eventcatalog/src/features/studio/components/PropertiesPanel.tsx +187 -50
- package/eventcatalog/src/features/studio/components/ShareDialog.tsx +260 -0
- package/eventcatalog/src/features/studio/components/StudioDesigner.tsx +442 -40
- package/eventcatalog/src/features/studio/components/canvas-nodes.tsx +198 -22
- package/eventcatalog/src/features/studio/components/icons.ts +6 -1
- package/eventcatalog/src/features/studio/components/status.ts +30 -1
- package/eventcatalog/src/features/studio/edges.ts +2 -0
- package/eventcatalog/src/features/studio/grouping.ts +95 -2
- package/eventcatalog/src/features/studio/hooks/presence-store.ts +5 -1
- package/eventcatalog/src/features/studio/hooks/use-canvas-webmcp.ts +13 -3
- package/eventcatalog/src/features/studio/hooks/use-comments.ts +8 -1
- package/eventcatalog/src/features/studio/hooks/use-follow-camera.ts +7 -2
- package/eventcatalog/src/features/studio/hooks/use-studio-flow.ts +174 -27
- package/eventcatalog/src/features/studio/identity.ts +35 -0
- package/eventcatalog/src/features/studio/layout.ts +7 -4
- package/eventcatalog/src/features/studio/levels.ts +138 -72
- package/eventcatalog/src/features/studio/node-types.ts +35 -3
- package/eventcatalog/src/features/studio/pages/[id].astro +7 -2
- package/eventcatalog/src/features/studio/pages/index.astro +555 -2
- package/eventcatalog/src/features/studio/pages/new.astro +24 -0
- package/eventcatalog/src/features/studio/pages/wake.ts +15 -0
- package/eventcatalog/src/features/studio/server/canvas-mcp.ts +48 -13
- package/eventcatalog/src/features/studio/server/runtime.ts +193 -14
- package/eventcatalog/src/features/studio/server/sign-in.ts +18 -0
- package/eventcatalog/src/features/studio/server/storage.ts +110 -0
- package/eventcatalog/src/features/studio/studio.css +184 -0
- package/eventcatalog/src/layouts/VerticalSideBarLayout.astro +1 -1
- package/eventcatalog/src/utils/feature.ts +7 -3
- package/eventcatalog/src/utils/node-graphs/export-mermaid.ts +0 -2
- package/package.json +3 -3
- 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 };
|
|
@@ -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-
|
|
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
|
|
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
|
|
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
|
|
156
|
+
return message({
|
|
157
|
+
title: "EventCatalog license",
|
|
137
158
|
color: "yellow",
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
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
|
|
164
|
+
return message({
|
|
165
|
+
title: "EventCatalog license",
|
|
147
166
|
color: "green",
|
|
148
|
-
|
|
149
|
-
Valid until
|
|
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
|
|
173
|
+
const trialRow = getTrialRow(tsd, now);
|
|
174
|
+
const trialRows = trialRow ? [trialRow] : [];
|
|
154
175
|
if (license.state === "none") {
|
|
155
|
-
|
|
156
|
-
|
|
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
|
-
|
|
161
|
-
|
|
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 ?
|
|
166
|
-
|
|
167
|
-
|
|
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
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
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
|
-
|
|
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
|
|
185
|
-
if (!
|
|
210
|
+
const status = getLicenseStatusMessage(license, tsd);
|
|
211
|
+
if (!status) return;
|
|
186
212
|
console.log(
|
|
187
|
-
boxen(
|
|
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:
|
|
192
|
-
title:
|
|
193
|
-
titleAlignment: "
|
|
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,14 +1,18 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
3
|
-
} from "./chunk-
|
|
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
|
-
|
|
11
|
-
|
|
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
|
|
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
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
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
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
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
|
};
|
package/dist/constants.cjs
CHANGED