@lark-apaas/devtool-kits 1.2.17-alpha.19 → 1.2.17-alpha.21
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/README.md +43 -0
- package/dist/index.cjs +114 -12
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +37 -1
- package/dist/index.d.ts +37 -1
- package/dist/index.js +108 -11
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.cts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { IncomingMessage, ServerResponse } from 'node:http';
|
|
2
2
|
import { Router, RequestHandler, Application } from 'express';
|
|
3
|
+
import { ServerResponse as ServerResponse$1, IncomingMessage as IncomingMessage$1 } from 'http';
|
|
3
4
|
|
|
4
5
|
/**
|
|
5
6
|
* 标准化基础路径,确保以 '/' 开头且不包含 trailing slash
|
|
@@ -196,6 +197,41 @@ interface DevLogsMiddlewareOptions {
|
|
|
196
197
|
*/
|
|
197
198
|
declare function createCollectLogsMiddleware(options?: DevLogsMiddlewareOptions): RouteMiddleware;
|
|
198
199
|
|
|
200
|
+
/**
|
|
201
|
+
* Express/Connect 兼容层
|
|
202
|
+
* 让 middleware 同时支持 Express 和 Vite/Connect
|
|
203
|
+
*/
|
|
204
|
+
|
|
205
|
+
type AnyResponse = ServerResponse$1 & {
|
|
206
|
+
status?: (code: number) => AnyResponse;
|
|
207
|
+
json?: (data: unknown) => void;
|
|
208
|
+
send?: (data: unknown) => void;
|
|
209
|
+
};
|
|
210
|
+
type AnyRequest = IncomingMessage$1 & {
|
|
211
|
+
query?: Record<string, string>;
|
|
212
|
+
params?: Record<string, string>;
|
|
213
|
+
};
|
|
214
|
+
/**
|
|
215
|
+
* 发送 JSON 响应,兼容 Express 和 Connect
|
|
216
|
+
*/
|
|
217
|
+
declare function sendJson(res: AnyResponse, data: unknown, statusCode?: number): void;
|
|
218
|
+
/**
|
|
219
|
+
* 发送错误响应
|
|
220
|
+
*/
|
|
221
|
+
declare function sendError(res: AnyResponse, message: string, error?: unknown, statusCode?: number): void;
|
|
222
|
+
/**
|
|
223
|
+
* 发送成功响应
|
|
224
|
+
*/
|
|
225
|
+
declare function sendSuccess(res: AnyResponse, data?: Record<string, unknown>): void;
|
|
226
|
+
/**
|
|
227
|
+
* 获取 query 参数,兼容 Express 和 Connect
|
|
228
|
+
*/
|
|
229
|
+
declare function getQuery(req: AnyRequest): Record<string, string>;
|
|
230
|
+
/**
|
|
231
|
+
* 获取单个 query 参数
|
|
232
|
+
*/
|
|
233
|
+
declare function getQueryParam(req: AnyRequest, key: string): string | undefined;
|
|
234
|
+
|
|
199
235
|
/**
|
|
200
236
|
* Creates api-routes middleware for listing application API routes
|
|
201
237
|
* Used by the API Debug Panel in the platform
|
|
@@ -243,4 +279,4 @@ declare function createApiRoutesMiddleware(): RouteMiddleware;
|
|
|
243
279
|
*/
|
|
244
280
|
declare function registerMiddlewares(server: ExpressApp | ViteMiddleware, middlewares: Middleware[], options?: Partial<MiddlewareContext>): Promise<void>;
|
|
245
281
|
|
|
246
|
-
export { type GlobalMiddleware, type Middleware, type MiddlewareContext, type Options, type RouteInfo, type RouteMiddleware, createApiRoutesMiddleware, createCollectLogsMiddleware, createDevLogsMiddleware, createOpenapiMiddleware, handleDevProxyError, normalizeBasePath, parseAndGenerateNestResourceTemplate, postprocessDrizzleSchema, registerMiddlewares };
|
|
282
|
+
export { type GlobalMiddleware, type Middleware, type MiddlewareContext, type Options, type RouteInfo, type RouteMiddleware, createApiRoutesMiddleware, createCollectLogsMiddleware, createDevLogsMiddleware, createOpenapiMiddleware, getQuery, getQueryParam, handleDevProxyError, normalizeBasePath, parseAndGenerateNestResourceTemplate, postprocessDrizzleSchema, registerMiddlewares, sendError, sendJson, sendSuccess };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { IncomingMessage, ServerResponse } from 'node:http';
|
|
2
2
|
import { Router, RequestHandler, Application } from 'express';
|
|
3
|
+
import { ServerResponse as ServerResponse$1, IncomingMessage as IncomingMessage$1 } from 'http';
|
|
3
4
|
|
|
4
5
|
/**
|
|
5
6
|
* 标准化基础路径,确保以 '/' 开头且不包含 trailing slash
|
|
@@ -196,6 +197,41 @@ interface DevLogsMiddlewareOptions {
|
|
|
196
197
|
*/
|
|
197
198
|
declare function createCollectLogsMiddleware(options?: DevLogsMiddlewareOptions): RouteMiddleware;
|
|
198
199
|
|
|
200
|
+
/**
|
|
201
|
+
* Express/Connect 兼容层
|
|
202
|
+
* 让 middleware 同时支持 Express 和 Vite/Connect
|
|
203
|
+
*/
|
|
204
|
+
|
|
205
|
+
type AnyResponse = ServerResponse$1 & {
|
|
206
|
+
status?: (code: number) => AnyResponse;
|
|
207
|
+
json?: (data: unknown) => void;
|
|
208
|
+
send?: (data: unknown) => void;
|
|
209
|
+
};
|
|
210
|
+
type AnyRequest = IncomingMessage$1 & {
|
|
211
|
+
query?: Record<string, string>;
|
|
212
|
+
params?: Record<string, string>;
|
|
213
|
+
};
|
|
214
|
+
/**
|
|
215
|
+
* 发送 JSON 响应,兼容 Express 和 Connect
|
|
216
|
+
*/
|
|
217
|
+
declare function sendJson(res: AnyResponse, data: unknown, statusCode?: number): void;
|
|
218
|
+
/**
|
|
219
|
+
* 发送错误响应
|
|
220
|
+
*/
|
|
221
|
+
declare function sendError(res: AnyResponse, message: string, error?: unknown, statusCode?: number): void;
|
|
222
|
+
/**
|
|
223
|
+
* 发送成功响应
|
|
224
|
+
*/
|
|
225
|
+
declare function sendSuccess(res: AnyResponse, data?: Record<string, unknown>): void;
|
|
226
|
+
/**
|
|
227
|
+
* 获取 query 参数,兼容 Express 和 Connect
|
|
228
|
+
*/
|
|
229
|
+
declare function getQuery(req: AnyRequest): Record<string, string>;
|
|
230
|
+
/**
|
|
231
|
+
* 获取单个 query 参数
|
|
232
|
+
*/
|
|
233
|
+
declare function getQueryParam(req: AnyRequest, key: string): string | undefined;
|
|
234
|
+
|
|
199
235
|
/**
|
|
200
236
|
* Creates api-routes middleware for listing application API routes
|
|
201
237
|
* Used by the API Debug Panel in the platform
|
|
@@ -243,4 +279,4 @@ declare function createApiRoutesMiddleware(): RouteMiddleware;
|
|
|
243
279
|
*/
|
|
244
280
|
declare function registerMiddlewares(server: ExpressApp | ViteMiddleware, middlewares: Middleware[], options?: Partial<MiddlewareContext>): Promise<void>;
|
|
245
281
|
|
|
246
|
-
export { type GlobalMiddleware, type Middleware, type MiddlewareContext, type Options, type RouteInfo, type RouteMiddleware, createApiRoutesMiddleware, createCollectLogsMiddleware, createDevLogsMiddleware, createOpenapiMiddleware, handleDevProxyError, normalizeBasePath, parseAndGenerateNestResourceTemplate, postprocessDrizzleSchema, registerMiddlewares };
|
|
282
|
+
export { type GlobalMiddleware, type Middleware, type MiddlewareContext, type Options, type RouteInfo, type RouteMiddleware, createApiRoutesMiddleware, createCollectLogsMiddleware, createDevLogsMiddleware, createOpenapiMiddleware, getQuery, getQueryParam, handleDevProxyError, normalizeBasePath, parseAndGenerateNestResourceTemplate, postprocessDrizzleSchema, registerMiddlewares, sendError, sendJson, sendSuccess };
|
package/dist/index.js
CHANGED
|
@@ -3313,7 +3313,8 @@ async function fetchRoutesFromBackend(basePath) {
|
|
|
3313
3313
|
}
|
|
3314
3314
|
const data = await response.json();
|
|
3315
3315
|
const routeConfig = data["\u8DEF\u7531\u914D\u7F6E"];
|
|
3316
|
-
if (!routeConfig || !routeConfig.routes) {
|
|
3316
|
+
if (!routeConfig || !routeConfig.routes || !Array.isArray(routeConfig.routes)) {
|
|
3317
|
+
console.warn("[api-list] Invalid routes data:", routeConfig);
|
|
3317
3318
|
return [];
|
|
3318
3319
|
}
|
|
3319
3320
|
const debugRoutes = routeConfig.routes;
|
|
@@ -3360,15 +3361,6 @@ __name(createApiListHandler, "createApiListHandler");
|
|
|
3360
3361
|
function createDevLogRouter(options = {}) {
|
|
3361
3362
|
const logDir = resolveLogDir(options.logDir);
|
|
3362
3363
|
const router = express2.Router();
|
|
3363
|
-
router.use((_req, res, next) => {
|
|
3364
|
-
res.header("Access-Control-Allow-Origin", "*");
|
|
3365
|
-
res.header("Access-Control-Allow-Methods", "GET, POST, OPTIONS");
|
|
3366
|
-
res.header("Access-Control-Allow-Headers", "Content-Type, Accept");
|
|
3367
|
-
next();
|
|
3368
|
-
});
|
|
3369
|
-
router.options("*", (_req, res) => {
|
|
3370
|
-
res.status(204).end();
|
|
3371
|
-
});
|
|
3372
3364
|
router.get("/app/trace/:traceId", createGetTraceEntriesHandler(logDir));
|
|
3373
3365
|
router.get("/trace/recent", createGetRecentTracesHandler(logDir));
|
|
3374
3366
|
router.get("/files/:fileName", createGetLogFileHandler(logDir));
|
|
@@ -3569,6 +3561,64 @@ function createCollectLogsMiddleware(options = {}) {
|
|
|
3569
3561
|
}
|
|
3570
3562
|
__name(createCollectLogsMiddleware, "createCollectLogsMiddleware");
|
|
3571
3563
|
|
|
3564
|
+
// src/middlewares/compat.ts
|
|
3565
|
+
function sendJson(res, data, statusCode = 200) {
|
|
3566
|
+
const statusFn = res.status;
|
|
3567
|
+
const jsonFn = res.json;
|
|
3568
|
+
if (typeof statusFn === "function" && typeof jsonFn === "function") {
|
|
3569
|
+
statusFn.call(res, statusCode);
|
|
3570
|
+
jsonFn.call(res, data);
|
|
3571
|
+
} else {
|
|
3572
|
+
res.statusCode = statusCode;
|
|
3573
|
+
res.setHeader("Content-Type", "application/json");
|
|
3574
|
+
res.end(JSON.stringify(data));
|
|
3575
|
+
}
|
|
3576
|
+
}
|
|
3577
|
+
__name(sendJson, "sendJson");
|
|
3578
|
+
function sendError(res, message, error, statusCode = 500) {
|
|
3579
|
+
const errorData = {
|
|
3580
|
+
message,
|
|
3581
|
+
...error ? {
|
|
3582
|
+
error: serializeError3(error)
|
|
3583
|
+
} : {}
|
|
3584
|
+
};
|
|
3585
|
+
sendJson(res, errorData, statusCode);
|
|
3586
|
+
}
|
|
3587
|
+
__name(sendError, "sendError");
|
|
3588
|
+
function sendSuccess(res, data) {
|
|
3589
|
+
sendJson(res, {
|
|
3590
|
+
success: true,
|
|
3591
|
+
...data
|
|
3592
|
+
}, 200);
|
|
3593
|
+
}
|
|
3594
|
+
__name(sendSuccess, "sendSuccess");
|
|
3595
|
+
function getQuery(req) {
|
|
3596
|
+
if (req.query) {
|
|
3597
|
+
return req.query;
|
|
3598
|
+
}
|
|
3599
|
+
const url = new URL(req.url || "", `http://${req.headers.host}`);
|
|
3600
|
+
return Object.fromEntries(url.searchParams.entries());
|
|
3601
|
+
}
|
|
3602
|
+
__name(getQuery, "getQuery");
|
|
3603
|
+
function getQueryParam(req, key) {
|
|
3604
|
+
const query = getQuery(req);
|
|
3605
|
+
return query[key];
|
|
3606
|
+
}
|
|
3607
|
+
__name(getQueryParam, "getQueryParam");
|
|
3608
|
+
function serializeError3(error) {
|
|
3609
|
+
if (error instanceof Error) {
|
|
3610
|
+
return {
|
|
3611
|
+
name: error.name,
|
|
3612
|
+
message: error.message,
|
|
3613
|
+
stack: error.stack
|
|
3614
|
+
};
|
|
3615
|
+
}
|
|
3616
|
+
return {
|
|
3617
|
+
message: String(error)
|
|
3618
|
+
};
|
|
3619
|
+
}
|
|
3620
|
+
__name(serializeError3, "serializeError");
|
|
3621
|
+
|
|
3572
3622
|
// src/middlewares/api-routes/router.ts
|
|
3573
3623
|
import express4 from "express";
|
|
3574
3624
|
function extractModuleFromPath2(path7) {
|
|
@@ -3711,6 +3761,41 @@ function createApiRoutesMiddleware() {
|
|
|
3711
3761
|
__name(createApiRoutesMiddleware, "createApiRoutesMiddleware");
|
|
3712
3762
|
|
|
3713
3763
|
// src/middlewares/index.ts
|
|
3764
|
+
function enhanceForCompat(req, res) {
|
|
3765
|
+
if (!res.status) {
|
|
3766
|
+
res.status = function(code) {
|
|
3767
|
+
res.statusCode = code;
|
|
3768
|
+
return res;
|
|
3769
|
+
};
|
|
3770
|
+
}
|
|
3771
|
+
if (!res.json) {
|
|
3772
|
+
res.json = function(data) {
|
|
3773
|
+
res.setHeader("Content-Type", "application/json");
|
|
3774
|
+
res.end(JSON.stringify(data));
|
|
3775
|
+
return res;
|
|
3776
|
+
};
|
|
3777
|
+
}
|
|
3778
|
+
if (!res.send) {
|
|
3779
|
+
res.send = function(data) {
|
|
3780
|
+
if (typeof data === "object" && data !== null) {
|
|
3781
|
+
res.setHeader("Content-Type", "application/json");
|
|
3782
|
+
res.end(JSON.stringify(data));
|
|
3783
|
+
} else {
|
|
3784
|
+
res.end(String(data));
|
|
3785
|
+
}
|
|
3786
|
+
return res;
|
|
3787
|
+
};
|
|
3788
|
+
}
|
|
3789
|
+
if (!req.query) {
|
|
3790
|
+
const url = new URL(req.url || "", `http://${req.headers.host || "localhost"}`);
|
|
3791
|
+
req.query = Object.fromEntries(url.searchParams.entries());
|
|
3792
|
+
}
|
|
3793
|
+
}
|
|
3794
|
+
__name(enhanceForCompat, "enhanceForCompat");
|
|
3795
|
+
function isConnectServer(server) {
|
|
3796
|
+
return typeof server === "function" && !("set" in server) && !("engine" in server);
|
|
3797
|
+
}
|
|
3798
|
+
__name(isConnectServer, "isConnectServer");
|
|
3714
3799
|
function isRouteMiddleware(middleware) {
|
|
3715
3800
|
return "createRouter" in middleware && middleware.createRouter !== void 0;
|
|
3716
3801
|
}
|
|
@@ -3763,6 +3848,13 @@ async function registerMiddlewares(server, middlewares, options) {
|
|
|
3763
3848
|
rootDir: process.cwd(),
|
|
3764
3849
|
...options
|
|
3765
3850
|
};
|
|
3851
|
+
if (isConnectServer(server)) {
|
|
3852
|
+
server.use((req, res, next) => {
|
|
3853
|
+
enhanceForCompat(req, res);
|
|
3854
|
+
next();
|
|
3855
|
+
});
|
|
3856
|
+
console.log("[Middleware] Registered Express compatibility layer for Connect/Vite");
|
|
3857
|
+
}
|
|
3766
3858
|
const allMiddlewares = [
|
|
3767
3859
|
...middlewares
|
|
3768
3860
|
];
|
|
@@ -3794,10 +3886,15 @@ export {
|
|
|
3794
3886
|
createCollectLogsMiddleware,
|
|
3795
3887
|
createDevLogsMiddleware,
|
|
3796
3888
|
createOpenapiMiddleware,
|
|
3889
|
+
getQuery,
|
|
3890
|
+
getQueryParam,
|
|
3797
3891
|
handleDevProxyError,
|
|
3798
3892
|
normalizeBasePath,
|
|
3799
3893
|
parseAndGenerateNestResourceTemplate,
|
|
3800
3894
|
postprocessDrizzleSchema,
|
|
3801
|
-
registerMiddlewares
|
|
3895
|
+
registerMiddlewares,
|
|
3896
|
+
sendError,
|
|
3897
|
+
sendJson,
|
|
3898
|
+
sendSuccess
|
|
3802
3899
|
};
|
|
3803
3900
|
//# sourceMappingURL=index.js.map
|