@hangox/mg-cli 1.1.2 → 1.1.3
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/dist/cli.js +119 -39
- package/dist/cli.js.map +1 -1
- package/dist/daemon-runner.js +79 -7
- package/dist/daemon-runner.js.map +1 -1
- package/dist/{index-CM3G8ywC.d.ts → index-DorC5U6y.d.ts} +5 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.js +77 -4
- package/dist/index.js.map +1 -1
- package/dist/server.d.ts +1 -1
- package/dist/server.js +76 -4
- package/dist/server.js.map +1 -1
- package/package.json +1 -1
package/dist/daemon-runner.js
CHANGED
|
@@ -267,8 +267,8 @@ var ConnectionManager = class {
|
|
|
267
267
|
allConnections = /* @__PURE__ */ new Map();
|
|
268
268
|
/** 心跳检查定时器 */
|
|
269
269
|
heartbeatTimer = null;
|
|
270
|
-
constructor(
|
|
271
|
-
this.logger =
|
|
270
|
+
constructor(logger2) {
|
|
271
|
+
this.logger = logger2;
|
|
272
272
|
}
|
|
273
273
|
/**
|
|
274
274
|
* 启动心跳检查
|
|
@@ -495,9 +495,9 @@ var RequestHandler = class {
|
|
|
495
495
|
connectionManager;
|
|
496
496
|
/** 待处理的请求 */
|
|
497
497
|
pendingRequests = /* @__PURE__ */ new Map();
|
|
498
|
-
constructor(connectionManager,
|
|
498
|
+
constructor(connectionManager, logger2) {
|
|
499
499
|
this.connectionManager = connectionManager;
|
|
500
|
-
this.logger =
|
|
500
|
+
this.logger = logger2;
|
|
501
501
|
}
|
|
502
502
|
/**
|
|
503
503
|
* 处理 Consumer 请求
|
|
@@ -675,6 +675,60 @@ function getVersion() {
|
|
|
675
675
|
}
|
|
676
676
|
}
|
|
677
677
|
|
|
678
|
+
// src/server/analytics.ts
|
|
679
|
+
import { PostHog } from "posthog-node";
|
|
680
|
+
var POSTHOG_API_KEY = "phc_cSZZIxZOPhWOlsw92Wz8tmKQ5z8eQYsI3m9aM2Ujia9";
|
|
681
|
+
var POSTHOG_HOST = "https://us.i.posthog.com";
|
|
682
|
+
var posthogClient = null;
|
|
683
|
+
var logger = null;
|
|
684
|
+
function isTelemetryDisabled() {
|
|
685
|
+
return process.env.MG_TELEMETRY_DISABLED === "1" || process.env.MG_TELEMETRY_DISABLED === "true" || process.env.DO_NOT_TRACK === "1" || process.env.DO_NOT_TRACK === "true";
|
|
686
|
+
}
|
|
687
|
+
function initServerAnalytics(serverLogger) {
|
|
688
|
+
logger = serverLogger;
|
|
689
|
+
if (isTelemetryDisabled()) {
|
|
690
|
+
logger.info("\u9065\u6D4B\u5DF2\u7981\u7528 (MG_TELEMETRY_DISABLED \u6216 DO_NOT_TRACK)");
|
|
691
|
+
return;
|
|
692
|
+
}
|
|
693
|
+
if (!posthogClient) {
|
|
694
|
+
posthogClient = new PostHog(POSTHOG_API_KEY, {
|
|
695
|
+
host: POSTHOG_HOST,
|
|
696
|
+
// Server 端使用批量模式,减少网络请求
|
|
697
|
+
flushAt: 10,
|
|
698
|
+
flushInterval: 3e4
|
|
699
|
+
// 30 秒
|
|
700
|
+
});
|
|
701
|
+
logger.info("PostHog Analytics \u5DF2\u521D\u59CB\u5316");
|
|
702
|
+
}
|
|
703
|
+
}
|
|
704
|
+
function trackEvent(eventData) {
|
|
705
|
+
if (!posthogClient) {
|
|
706
|
+
return;
|
|
707
|
+
}
|
|
708
|
+
try {
|
|
709
|
+
posthogClient.capture({
|
|
710
|
+
distinctId: eventData.distinctId,
|
|
711
|
+
event: eventData.event,
|
|
712
|
+
properties: eventData.properties
|
|
713
|
+
});
|
|
714
|
+
logger?.info(`\u7EDF\u8BA1\u4E8B\u4EF6\u5DF2\u8BB0\u5F55: ${eventData.event}`, eventData.properties);
|
|
715
|
+
} catch (error) {
|
|
716
|
+
logger?.error("\u7EDF\u8BA1\u4E8B\u4EF6\u8BB0\u5F55\u5931\u8D25:", error);
|
|
717
|
+
}
|
|
718
|
+
}
|
|
719
|
+
async function shutdownServerAnalytics() {
|
|
720
|
+
if (posthogClient) {
|
|
721
|
+
try {
|
|
722
|
+
logger?.info("\u6B63\u5728\u53D1\u9001\u5269\u4F59\u7EDF\u8BA1\u4E8B\u4EF6...");
|
|
723
|
+
await posthogClient.shutdown();
|
|
724
|
+
logger?.info("PostHog Analytics \u5DF2\u5173\u95ED");
|
|
725
|
+
} catch (error) {
|
|
726
|
+
logger?.error("\u5173\u95ED PostHog \u5931\u8D25:", error);
|
|
727
|
+
}
|
|
728
|
+
posthogClient = null;
|
|
729
|
+
}
|
|
730
|
+
}
|
|
731
|
+
|
|
678
732
|
// src/server/websocket-server.ts
|
|
679
733
|
var MGServer = class {
|
|
680
734
|
wss = null;
|
|
@@ -706,6 +760,7 @@ var MGServer = class {
|
|
|
706
760
|
this.startedAt = /* @__PURE__ */ new Date();
|
|
707
761
|
this.logger.info(`Server \u542F\u52A8\u6210\u529F\uFF0C\u76D1\u542C\u7AEF\u53E3: ${port2}`);
|
|
708
762
|
this.connectionManager.startHeartbeatCheck(HEARTBEAT_INTERVAL);
|
|
763
|
+
initServerAnalytics(this.logger);
|
|
709
764
|
resolve2(port2);
|
|
710
765
|
});
|
|
711
766
|
this.wss.on("error", (error) => {
|
|
@@ -765,6 +820,10 @@ var MGServer = class {
|
|
|
765
820
|
this.handleRegister(ws, message);
|
|
766
821
|
return;
|
|
767
822
|
}
|
|
823
|
+
if (message.type === "track_analytics" /* TRACK_ANALYTICS */) {
|
|
824
|
+
this.handleTrackAnalytics(message);
|
|
825
|
+
return;
|
|
826
|
+
}
|
|
768
827
|
const managedWs = ws;
|
|
769
828
|
if (!managedWs.connectionId) {
|
|
770
829
|
this.logger.warn("\u672A\u6CE8\u518C\u7684\u8FDE\u63A5\u53D1\u9001\u6D88\u606F\uFF0C\u5FFD\u7565");
|
|
@@ -842,6 +901,9 @@ var MGServer = class {
|
|
|
842
901
|
case "navigate_to_node" /* NAVIGATE_TO_NODE */:
|
|
843
902
|
this.handleNavigateToNode(ws, message);
|
|
844
903
|
break;
|
|
904
|
+
case "track_analytics" /* TRACK_ANALYTICS */:
|
|
905
|
+
this.handleTrackAnalytics(message);
|
|
906
|
+
break;
|
|
845
907
|
case "response" /* RESPONSE */:
|
|
846
908
|
case "error" /* ERROR */:
|
|
847
909
|
this.requestHandler.handleResponse(message);
|
|
@@ -987,6 +1049,15 @@ var MGServer = class {
|
|
|
987
1049
|
}
|
|
988
1050
|
});
|
|
989
1051
|
}
|
|
1052
|
+
/**
|
|
1053
|
+
* 处理统计事件
|
|
1054
|
+
*/
|
|
1055
|
+
handleTrackAnalytics(message) {
|
|
1056
|
+
const eventData = message.data;
|
|
1057
|
+
if (eventData) {
|
|
1058
|
+
trackEvent(eventData);
|
|
1059
|
+
}
|
|
1060
|
+
}
|
|
990
1061
|
/**
|
|
991
1062
|
* 处理节点导航请求
|
|
992
1063
|
*/
|
|
@@ -1060,6 +1131,7 @@ var MGServer = class {
|
|
|
1060
1131
|
return;
|
|
1061
1132
|
}
|
|
1062
1133
|
this.logger.info("\u6B63\u5728\u505C\u6B62 Server...");
|
|
1134
|
+
await shutdownServerAnalytics();
|
|
1063
1135
|
this.requestHandler.cleanupAll();
|
|
1064
1136
|
this.connectionManager.closeAll();
|
|
1065
1137
|
return new Promise((resolve2) => {
|
|
@@ -1120,14 +1192,14 @@ async function startServerForeground(port2) {
|
|
|
1120
1192
|
);
|
|
1121
1193
|
}
|
|
1122
1194
|
ensureConfigDir();
|
|
1123
|
-
const
|
|
1195
|
+
const logger2 = createLogger({
|
|
1124
1196
|
console: true,
|
|
1125
1197
|
file: true,
|
|
1126
1198
|
minLevel: "INFO" /* INFO */
|
|
1127
1199
|
});
|
|
1128
1200
|
const server = createServer({
|
|
1129
1201
|
port: port2 || DEFAULT_PORT,
|
|
1130
|
-
logger
|
|
1202
|
+
logger: logger2
|
|
1131
1203
|
});
|
|
1132
1204
|
const cleanup = async () => {
|
|
1133
1205
|
console.log("\n\u6B63\u5728\u505C\u6B62 Server...");
|
|
@@ -1153,7 +1225,7 @@ MG Server \u542F\u52A8\u6210\u529F`);
|
|
|
1153
1225
|
console.log(`
|
|
1154
1226
|
\u6309 Ctrl+C \u505C\u6B62...`);
|
|
1155
1227
|
} catch (error) {
|
|
1156
|
-
|
|
1228
|
+
logger2.error("Server \u542F\u52A8\u5931\u8D25:", error);
|
|
1157
1229
|
throw error;
|
|
1158
1230
|
}
|
|
1159
1231
|
}
|