@lark-apaas/devtool-kits 1.0.6-alpha.4 → 1.0.6
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/error.html +2 -2
- package/dist/index.cjs +76 -118
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -32
- package/dist/index.d.ts +1 -32
- package/dist/index.js +76 -117
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/error.html
CHANGED
|
@@ -160,13 +160,13 @@
|
|
|
160
160
|
// 探测服务是否恢复
|
|
161
161
|
async function probeService() {
|
|
162
162
|
try {
|
|
163
|
-
console.log('[Probe] 探测服务状态: /dev/health
|
|
163
|
+
console.log('[Probe] 探测服务状态: /dev/logs/health');
|
|
164
164
|
|
|
165
165
|
// 使用 AbortController 实现超时控制
|
|
166
166
|
const controller = new AbortController();
|
|
167
167
|
const timeoutId = setTimeout(() => controller.abort(), PROBE_TIMEOUT);
|
|
168
168
|
|
|
169
|
-
const response = await fetch(`${clientBasePath}/dev/health
|
|
169
|
+
const response = await fetch(`${clientBasePath}/dev/logs/health`, {
|
|
170
170
|
method: 'GET',
|
|
171
171
|
cache: 'no-cache',
|
|
172
172
|
redirect: 'manual', // 不自动跟随重定向
|
package/dist/index.cjs
CHANGED
|
@@ -28093,7 +28093,6 @@ var index_exports = {};
|
|
|
28093
28093
|
__export(index_exports, {
|
|
28094
28094
|
createCollectLogsMiddleware: () => createCollectLogsMiddleware,
|
|
28095
28095
|
createDevLogsMiddleware: () => createDevLogsMiddleware,
|
|
28096
|
-
createHealthCheckMiddleware: () => createHealthCheckMiddleware,
|
|
28097
28096
|
createOpenapiMiddleware: () => createOpenapiMiddleware,
|
|
28098
28097
|
handleDevProxyError: () => handleDevProxyError,
|
|
28099
28098
|
normalizeBasePath: () => normalizeBasePath,
|
|
@@ -28658,99 +28657,8 @@ __name(sendSimpleRedirect, "sendSimpleRedirect");
|
|
|
28658
28657
|
// src/middlewares/index.ts
|
|
28659
28658
|
var import_node_path8 = __toESM(require("path"), 1);
|
|
28660
28659
|
|
|
28661
|
-
// src/middlewares/health-check/router.ts
|
|
28662
|
-
var import_express = __toESM(require_express2(), 1);
|
|
28663
|
-
var import_node_http2 = __toESM(require("http"), 1);
|
|
28664
|
-
function checkServiceHealth(host, port, timeout) {
|
|
28665
|
-
return new Promise((resolve) => {
|
|
28666
|
-
const startTime = Date.now();
|
|
28667
|
-
const req = import_node_http2.default.request({
|
|
28668
|
-
hostname: host,
|
|
28669
|
-
port,
|
|
28670
|
-
path: "/",
|
|
28671
|
-
method: "HEAD",
|
|
28672
|
-
timeout
|
|
28673
|
-
}, (_res) => {
|
|
28674
|
-
const responseTime = Date.now() - startTime;
|
|
28675
|
-
resolve({
|
|
28676
|
-
available: true,
|
|
28677
|
-
responseTime
|
|
28678
|
-
});
|
|
28679
|
-
});
|
|
28680
|
-
req.on("timeout", () => {
|
|
28681
|
-
req.destroy();
|
|
28682
|
-
resolve({
|
|
28683
|
-
available: false,
|
|
28684
|
-
error: "Request timeout"
|
|
28685
|
-
});
|
|
28686
|
-
});
|
|
28687
|
-
req.on("error", (err) => {
|
|
28688
|
-
resolve({
|
|
28689
|
-
available: false,
|
|
28690
|
-
error: err.message
|
|
28691
|
-
});
|
|
28692
|
-
});
|
|
28693
|
-
req.end();
|
|
28694
|
-
});
|
|
28695
|
-
}
|
|
28696
|
-
__name(checkServiceHealth, "checkServiceHealth");
|
|
28697
|
-
function createHealthCheckRouter(options = {}) {
|
|
28698
|
-
const { targetPort = Number(process.env.SERVER_PORT) || 3e3, targetHost = "localhost", timeout = 2e3 } = options;
|
|
28699
|
-
const router = import_express.default.Router();
|
|
28700
|
-
router.get("/check", async (_req, res) => {
|
|
28701
|
-
try {
|
|
28702
|
-
const result = await checkServiceHealth(targetHost, targetPort, timeout);
|
|
28703
|
-
if (result.available) {
|
|
28704
|
-
res.status(200).json({
|
|
28705
|
-
status: "healthy",
|
|
28706
|
-
service: `${targetHost}:${targetPort}`,
|
|
28707
|
-
responseTime: result.responseTime,
|
|
28708
|
-
timestamp: (/* @__PURE__ */ new Date()).toISOString()
|
|
28709
|
-
});
|
|
28710
|
-
} else {
|
|
28711
|
-
res.status(503).json({
|
|
28712
|
-
status: "unhealthy",
|
|
28713
|
-
service: `${targetHost}:${targetPort}`,
|
|
28714
|
-
error: result.error,
|
|
28715
|
-
timestamp: (/* @__PURE__ */ new Date()).toISOString()
|
|
28716
|
-
});
|
|
28717
|
-
}
|
|
28718
|
-
} catch (error) {
|
|
28719
|
-
res.status(500).json({
|
|
28720
|
-
status: "error",
|
|
28721
|
-
service: `${targetHost}:${targetPort}`,
|
|
28722
|
-
error: error instanceof Error ? error.message : "Unknown error",
|
|
28723
|
-
timestamp: (/* @__PURE__ */ new Date()).toISOString()
|
|
28724
|
-
});
|
|
28725
|
-
}
|
|
28726
|
-
});
|
|
28727
|
-
return router;
|
|
28728
|
-
}
|
|
28729
|
-
__name(createHealthCheckRouter, "createHealthCheckRouter");
|
|
28730
|
-
|
|
28731
|
-
// src/middlewares/health-check/index.ts
|
|
28732
|
-
var HEALTH_CHECK_ROUTES = [
|
|
28733
|
-
{
|
|
28734
|
-
method: "GET",
|
|
28735
|
-
path: "/check",
|
|
28736
|
-
description: "Check if target service is healthy and available"
|
|
28737
|
-
}
|
|
28738
|
-
];
|
|
28739
|
-
function createHealthCheckMiddleware(options = {}) {
|
|
28740
|
-
return {
|
|
28741
|
-
name: "health-check",
|
|
28742
|
-
mountPath: "/dev/health",
|
|
28743
|
-
routes: HEALTH_CHECK_ROUTES,
|
|
28744
|
-
enabled: /* @__PURE__ */ __name((context) => context.isDev, "enabled"),
|
|
28745
|
-
createRouter: /* @__PURE__ */ __name((_context) => {
|
|
28746
|
-
return createHealthCheckRouter(options);
|
|
28747
|
-
}, "createRouter")
|
|
28748
|
-
};
|
|
28749
|
-
}
|
|
28750
|
-
__name(createHealthCheckMiddleware, "createHealthCheckMiddleware");
|
|
28751
|
-
|
|
28752
28660
|
// src/middlewares/openapi/router.ts
|
|
28753
|
-
var
|
|
28661
|
+
var import_express = __toESM(require_express2(), 1);
|
|
28754
28662
|
|
|
28755
28663
|
// src/middlewares/openapi/controller.ts
|
|
28756
28664
|
var import_promises = __toESM(require("fs/promises"), 1);
|
|
@@ -28997,7 +28905,7 @@ __name(createOpenapiHandler, "createOpenapiHandler");
|
|
|
28997
28905
|
// src/middlewares/openapi/router.ts
|
|
28998
28906
|
function createOpenapiRouter(options, context) {
|
|
28999
28907
|
const { openapiFilePath, enableEnhancement, serverDir } = options;
|
|
29000
|
-
const router =
|
|
28908
|
+
const router = import_express.default.Router();
|
|
29001
28909
|
const handler = createOpenapiHandler(openapiFilePath, enableEnhancement, serverDir);
|
|
29002
28910
|
router.get("/openapi.json", (req, res) => handler(req, res, context));
|
|
29003
28911
|
return router;
|
|
@@ -29031,7 +28939,7 @@ function createOpenapiMiddleware(options) {
|
|
|
29031
28939
|
__name(createOpenapiMiddleware, "createOpenapiMiddleware");
|
|
29032
28940
|
|
|
29033
28941
|
// src/middlewares/dev-logs/router.ts
|
|
29034
|
-
var
|
|
28942
|
+
var import_express2 = __toESM(require_express2(), 1);
|
|
29035
28943
|
|
|
29036
28944
|
// src/middlewares/dev-logs/utils.ts
|
|
29037
28945
|
var import_node_fs5 = require("fs");
|
|
@@ -29473,13 +29381,81 @@ function createGetLogFileHandler(logDir) {
|
|
|
29473
29381
|
}
|
|
29474
29382
|
__name(createGetLogFileHandler, "createGetLogFileHandler");
|
|
29475
29383
|
|
|
29384
|
+
// src/middlewares/dev-logs/health.controller.ts
|
|
29385
|
+
var import_node_http2 = __toESM(require("http"), 1);
|
|
29386
|
+
function checkServiceHealth(host, port, timeout) {
|
|
29387
|
+
return new Promise((resolve) => {
|
|
29388
|
+
const startTime = Date.now();
|
|
29389
|
+
const req = import_node_http2.default.request({
|
|
29390
|
+
hostname: host,
|
|
29391
|
+
port,
|
|
29392
|
+
path: "/",
|
|
29393
|
+
method: "HEAD",
|
|
29394
|
+
timeout
|
|
29395
|
+
}, (_res) => {
|
|
29396
|
+
const responseTime = Date.now() - startTime;
|
|
29397
|
+
resolve({
|
|
29398
|
+
available: true,
|
|
29399
|
+
responseTime
|
|
29400
|
+
});
|
|
29401
|
+
});
|
|
29402
|
+
req.on("timeout", () => {
|
|
29403
|
+
req.destroy();
|
|
29404
|
+
resolve({
|
|
29405
|
+
available: false,
|
|
29406
|
+
error: "Request timeout"
|
|
29407
|
+
});
|
|
29408
|
+
});
|
|
29409
|
+
req.on("error", (err) => {
|
|
29410
|
+
resolve({
|
|
29411
|
+
available: false,
|
|
29412
|
+
error: err.message
|
|
29413
|
+
});
|
|
29414
|
+
});
|
|
29415
|
+
req.end();
|
|
29416
|
+
});
|
|
29417
|
+
}
|
|
29418
|
+
__name(checkServiceHealth, "checkServiceHealth");
|
|
29419
|
+
function createHealthCheckHandler(options = {}) {
|
|
29420
|
+
const { targetPort = Number(process.env.SERVER_PORT) || 3e3, targetHost = "localhost", timeout = 2e3 } = options;
|
|
29421
|
+
return async (_req, res) => {
|
|
29422
|
+
try {
|
|
29423
|
+
const result = await checkServiceHealth(targetHost, targetPort, timeout);
|
|
29424
|
+
if (result.available) {
|
|
29425
|
+
res.status(200).json({
|
|
29426
|
+
status: "healthy",
|
|
29427
|
+
service: `${targetHost}:${targetPort}`,
|
|
29428
|
+
responseTime: result.responseTime,
|
|
29429
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString()
|
|
29430
|
+
});
|
|
29431
|
+
} else {
|
|
29432
|
+
res.status(503).json({
|
|
29433
|
+
status: "unhealthy",
|
|
29434
|
+
service: `${targetHost}:${targetPort}`,
|
|
29435
|
+
error: result.error,
|
|
29436
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString()
|
|
29437
|
+
});
|
|
29438
|
+
}
|
|
29439
|
+
} catch (error) {
|
|
29440
|
+
res.status(500).json({
|
|
29441
|
+
status: "error",
|
|
29442
|
+
service: `${targetHost}:${targetPort}`,
|
|
29443
|
+
error: error instanceof Error ? error.message : "Unknown error",
|
|
29444
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString()
|
|
29445
|
+
});
|
|
29446
|
+
}
|
|
29447
|
+
};
|
|
29448
|
+
}
|
|
29449
|
+
__name(createHealthCheckHandler, "createHealthCheckHandler");
|
|
29450
|
+
|
|
29476
29451
|
// src/middlewares/dev-logs/router.ts
|
|
29477
29452
|
function createDevLogRouter(options = {}) {
|
|
29478
29453
|
const logDir = resolveLogDir(options.logDir);
|
|
29479
|
-
const router =
|
|
29454
|
+
const router = import_express2.default.Router();
|
|
29480
29455
|
router.get("/app/trace/:traceId", createGetTraceEntriesHandler(logDir));
|
|
29481
29456
|
router.get("/trace/recent", createGetRecentTracesHandler(logDir));
|
|
29482
29457
|
router.get("/files/:fileName", createGetLogFileHandler(logDir));
|
|
29458
|
+
router.get("/health", createHealthCheckHandler());
|
|
29483
29459
|
return router;
|
|
29484
29460
|
}
|
|
29485
29461
|
__name(createDevLogRouter, "createDevLogRouter");
|
|
@@ -29519,7 +29495,7 @@ function createDevLogsMiddleware(options = {}) {
|
|
|
29519
29495
|
__name(createDevLogsMiddleware, "createDevLogsMiddleware");
|
|
29520
29496
|
|
|
29521
29497
|
// src/middlewares/collect-logs/router.ts
|
|
29522
|
-
var
|
|
29498
|
+
var import_express3 = __toESM(require_express2(), 1);
|
|
29523
29499
|
|
|
29524
29500
|
// src/middlewares/collect-logs/controller.ts
|
|
29525
29501
|
var import_path = require("path");
|
|
@@ -29618,9 +29594,9 @@ __name(handleError2, "handleError");
|
|
|
29618
29594
|
// src/middlewares/collect-logs/router.ts
|
|
29619
29595
|
function createDevLogRouter2(options = {}) {
|
|
29620
29596
|
const logDir = resolveLogDir2(options.logDir);
|
|
29621
|
-
const router =
|
|
29622
|
-
router.post("/collect",
|
|
29623
|
-
router.post("/collect-batch",
|
|
29597
|
+
const router = import_express3.default.Router();
|
|
29598
|
+
router.post("/collect", import_express3.default.json(), collectLogsHandler(logDir, options.fileName || "client.log"));
|
|
29599
|
+
router.post("/collect-batch", import_express3.default.json(), collectLogsBatchHandler(logDir, options.fileName || "client.log"));
|
|
29624
29600
|
return router;
|
|
29625
29601
|
}
|
|
29626
29602
|
__name(createDevLogRouter2, "createDevLogRouter");
|
|
@@ -29703,27 +29679,10 @@ async function registerMiddlewares(server, middlewares, options) {
|
|
|
29703
29679
|
rootDir: process.cwd(),
|
|
29704
29680
|
...options
|
|
29705
29681
|
};
|
|
29706
|
-
const defaultMiddlewares = [
|
|
29707
|
-
createHealthCheckMiddleware()
|
|
29708
|
-
];
|
|
29709
29682
|
const allMiddlewares = [
|
|
29710
|
-
...defaultMiddlewares,
|
|
29711
29683
|
...middlewares
|
|
29712
29684
|
];
|
|
29713
|
-
allMiddlewares.forEach((m, i) => {
|
|
29714
|
-
console.log(`[Middleware] [${i}] ${m.name} (mountPath: ${m.mountPath || "N/A"})`);
|
|
29715
|
-
});
|
|
29716
|
-
const seen = /* @__PURE__ */ new Set();
|
|
29717
|
-
const uniqueMiddlewares = [];
|
|
29718
29685
|
for (const middleware of allMiddlewares) {
|
|
29719
|
-
if (!seen.has(middleware.name)) {
|
|
29720
|
-
seen.add(middleware.name);
|
|
29721
|
-
uniqueMiddlewares.push(middleware);
|
|
29722
|
-
} else {
|
|
29723
|
-
console.log(`[Middleware] Skipping duplicate: ${middleware.name}`);
|
|
29724
|
-
}
|
|
29725
|
-
}
|
|
29726
|
-
for (const middleware of uniqueMiddlewares) {
|
|
29727
29686
|
if (middleware.enabled && !middleware.enabled(context)) {
|
|
29728
29687
|
continue;
|
|
29729
29688
|
}
|
|
@@ -29750,7 +29709,6 @@ __name(registerMiddlewares, "registerMiddlewares");
|
|
|
29750
29709
|
0 && (module.exports = {
|
|
29751
29710
|
createCollectLogsMiddleware,
|
|
29752
29711
|
createDevLogsMiddleware,
|
|
29753
|
-
createHealthCheckMiddleware,
|
|
29754
29712
|
createOpenapiMiddleware,
|
|
29755
29713
|
handleDevProxyError,
|
|
29756
29714
|
normalizeBasePath,
|