@hangox/mg-cli 1.1.2 → 1.1.4
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 -42
- 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 -7
- 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/index.js
CHANGED
|
@@ -45,6 +45,7 @@ var MessageType = /* @__PURE__ */ ((MessageType2) => {
|
|
|
45
45
|
MessageType2["OPEN_PAGE"] = "open_page";
|
|
46
46
|
MessageType2["NAVIGATE_TO_NODE"] = "navigate_to_node";
|
|
47
47
|
MessageType2["GET_SERVER_STATUS"] = "get_server_status";
|
|
48
|
+
MessageType2["TRACK_ANALYTICS"] = "track_analytics";
|
|
48
49
|
MessageType2["RESPONSE"] = "response";
|
|
49
50
|
MessageType2["ERROR"] = "error";
|
|
50
51
|
return MessageType2;
|
|
@@ -302,9 +303,6 @@ function parseMgpLink(link) {
|
|
|
302
303
|
}
|
|
303
304
|
if (encodedPageId) {
|
|
304
305
|
const pageId = decodeURIComponent(encodedPageId);
|
|
305
|
-
if (!/^\d+:\d+$/.test(pageId)) {
|
|
306
|
-
return null;
|
|
307
|
-
}
|
|
308
306
|
return {
|
|
309
307
|
pageUrl,
|
|
310
308
|
pageId
|
|
@@ -665,8 +663,8 @@ var ConnectionManager = class {
|
|
|
665
663
|
allConnections = /* @__PURE__ */ new Map();
|
|
666
664
|
/** 心跳检查定时器 */
|
|
667
665
|
heartbeatTimer = null;
|
|
668
|
-
constructor(
|
|
669
|
-
this.logger =
|
|
666
|
+
constructor(logger2) {
|
|
667
|
+
this.logger = logger2;
|
|
670
668
|
}
|
|
671
669
|
/**
|
|
672
670
|
* 启动心跳检查
|
|
@@ -893,9 +891,9 @@ var RequestHandler = class {
|
|
|
893
891
|
connectionManager;
|
|
894
892
|
/** 待处理的请求 */
|
|
895
893
|
pendingRequests = /* @__PURE__ */ new Map();
|
|
896
|
-
constructor(connectionManager,
|
|
894
|
+
constructor(connectionManager, logger2) {
|
|
897
895
|
this.connectionManager = connectionManager;
|
|
898
|
-
this.logger =
|
|
896
|
+
this.logger = logger2;
|
|
899
897
|
}
|
|
900
898
|
/**
|
|
901
899
|
* 处理 Consumer 请求
|
|
@@ -1080,6 +1078,60 @@ function isVersionMatch(version1, version2) {
|
|
|
1080
1078
|
return version1 === version2;
|
|
1081
1079
|
}
|
|
1082
1080
|
|
|
1081
|
+
// src/server/analytics.ts
|
|
1082
|
+
import { PostHog } from "posthog-node";
|
|
1083
|
+
var POSTHOG_API_KEY = "phc_cSZZIxZOPhWOlsw92Wz8tmKQ5z8eQYsI3m9aM2Ujia9";
|
|
1084
|
+
var POSTHOG_HOST = "https://us.i.posthog.com";
|
|
1085
|
+
var posthogClient = null;
|
|
1086
|
+
var logger = null;
|
|
1087
|
+
function isTelemetryDisabled() {
|
|
1088
|
+
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";
|
|
1089
|
+
}
|
|
1090
|
+
function initServerAnalytics(serverLogger) {
|
|
1091
|
+
logger = serverLogger;
|
|
1092
|
+
if (isTelemetryDisabled()) {
|
|
1093
|
+
logger.info("\u9065\u6D4B\u5DF2\u7981\u7528 (MG_TELEMETRY_DISABLED \u6216 DO_NOT_TRACK)");
|
|
1094
|
+
return;
|
|
1095
|
+
}
|
|
1096
|
+
if (!posthogClient) {
|
|
1097
|
+
posthogClient = new PostHog(POSTHOG_API_KEY, {
|
|
1098
|
+
host: POSTHOG_HOST,
|
|
1099
|
+
// Server 端使用批量模式,减少网络请求
|
|
1100
|
+
flushAt: 10,
|
|
1101
|
+
flushInterval: 3e4
|
|
1102
|
+
// 30 秒
|
|
1103
|
+
});
|
|
1104
|
+
logger.info("PostHog Analytics \u5DF2\u521D\u59CB\u5316");
|
|
1105
|
+
}
|
|
1106
|
+
}
|
|
1107
|
+
function trackEvent(eventData) {
|
|
1108
|
+
if (!posthogClient) {
|
|
1109
|
+
return;
|
|
1110
|
+
}
|
|
1111
|
+
try {
|
|
1112
|
+
posthogClient.capture({
|
|
1113
|
+
distinctId: eventData.distinctId,
|
|
1114
|
+
event: eventData.event,
|
|
1115
|
+
properties: eventData.properties
|
|
1116
|
+
});
|
|
1117
|
+
logger?.info(`\u7EDF\u8BA1\u4E8B\u4EF6\u5DF2\u8BB0\u5F55: ${eventData.event}`, eventData.properties);
|
|
1118
|
+
} catch (error) {
|
|
1119
|
+
logger?.error("\u7EDF\u8BA1\u4E8B\u4EF6\u8BB0\u5F55\u5931\u8D25:", error);
|
|
1120
|
+
}
|
|
1121
|
+
}
|
|
1122
|
+
async function shutdownServerAnalytics() {
|
|
1123
|
+
if (posthogClient) {
|
|
1124
|
+
try {
|
|
1125
|
+
logger?.info("\u6B63\u5728\u53D1\u9001\u5269\u4F59\u7EDF\u8BA1\u4E8B\u4EF6...");
|
|
1126
|
+
await posthogClient.shutdown();
|
|
1127
|
+
logger?.info("PostHog Analytics \u5DF2\u5173\u95ED");
|
|
1128
|
+
} catch (error) {
|
|
1129
|
+
logger?.error("\u5173\u95ED PostHog \u5931\u8D25:", error);
|
|
1130
|
+
}
|
|
1131
|
+
posthogClient = null;
|
|
1132
|
+
}
|
|
1133
|
+
}
|
|
1134
|
+
|
|
1083
1135
|
// src/server/websocket-server.ts
|
|
1084
1136
|
var MGServer = class {
|
|
1085
1137
|
wss = null;
|
|
@@ -1111,6 +1163,7 @@ var MGServer = class {
|
|
|
1111
1163
|
this.startedAt = /* @__PURE__ */ new Date();
|
|
1112
1164
|
this.logger.info(`Server \u542F\u52A8\u6210\u529F\uFF0C\u76D1\u542C\u7AEF\u53E3: ${port}`);
|
|
1113
1165
|
this.connectionManager.startHeartbeatCheck(HEARTBEAT_INTERVAL);
|
|
1166
|
+
initServerAnalytics(this.logger);
|
|
1114
1167
|
resolve2(port);
|
|
1115
1168
|
});
|
|
1116
1169
|
this.wss.on("error", (error) => {
|
|
@@ -1170,6 +1223,10 @@ var MGServer = class {
|
|
|
1170
1223
|
this.handleRegister(ws, message);
|
|
1171
1224
|
return;
|
|
1172
1225
|
}
|
|
1226
|
+
if (message.type === "track_analytics" /* TRACK_ANALYTICS */) {
|
|
1227
|
+
this.handleTrackAnalytics(message);
|
|
1228
|
+
return;
|
|
1229
|
+
}
|
|
1173
1230
|
const managedWs = ws;
|
|
1174
1231
|
if (!managedWs.connectionId) {
|
|
1175
1232
|
this.logger.warn("\u672A\u6CE8\u518C\u7684\u8FDE\u63A5\u53D1\u9001\u6D88\u606F\uFF0C\u5FFD\u7565");
|
|
@@ -1247,6 +1304,9 @@ var MGServer = class {
|
|
|
1247
1304
|
case "navigate_to_node" /* NAVIGATE_TO_NODE */:
|
|
1248
1305
|
this.handleNavigateToNode(ws, message);
|
|
1249
1306
|
break;
|
|
1307
|
+
case "track_analytics" /* TRACK_ANALYTICS */:
|
|
1308
|
+
this.handleTrackAnalytics(message);
|
|
1309
|
+
break;
|
|
1250
1310
|
case "response" /* RESPONSE */:
|
|
1251
1311
|
case "error" /* ERROR */:
|
|
1252
1312
|
this.requestHandler.handleResponse(message);
|
|
@@ -1392,6 +1452,15 @@ var MGServer = class {
|
|
|
1392
1452
|
}
|
|
1393
1453
|
});
|
|
1394
1454
|
}
|
|
1455
|
+
/**
|
|
1456
|
+
* 处理统计事件
|
|
1457
|
+
*/
|
|
1458
|
+
handleTrackAnalytics(message) {
|
|
1459
|
+
const eventData = message.data;
|
|
1460
|
+
if (eventData) {
|
|
1461
|
+
trackEvent(eventData);
|
|
1462
|
+
}
|
|
1463
|
+
}
|
|
1395
1464
|
/**
|
|
1396
1465
|
* 处理节点导航请求
|
|
1397
1466
|
*/
|
|
@@ -1465,6 +1534,7 @@ var MGServer = class {
|
|
|
1465
1534
|
return;
|
|
1466
1535
|
}
|
|
1467
1536
|
this.logger.info("\u6B63\u5728\u505C\u6B62 Server...");
|
|
1537
|
+
await shutdownServerAnalytics();
|
|
1468
1538
|
this.requestHandler.cleanupAll();
|
|
1469
1539
|
this.connectionManager.closeAll();
|
|
1470
1540
|
return new Promise((resolve2) => {
|